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/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgWyAnZGlyZWN0ZmInLCAnd2F5bGFuZCcsICd4MTEnIF0sICdjYWlybycsICcnLCBkKX0iCisKKyMgcHl0aG9uMy1weWNhaXJvIGlzIGNoZWNrZWQgb24gY29uZmlndXJhdGlvbiAtPiBERVBFTkRTCisjIHdlIGRvbid0IGxpbmsgYWdhaW5zdCBweXRob24zLXB5Y2Fpcm8gLT4gUkRFUEVORFMKK1BBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyBweXRob24zLXB5Y2Fpcm8sIHB5dGhvbjMtcHljYWlybyIKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc2V0dXB0b29scyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzYuMi43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM2LjIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdiY2E5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzYuMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotREVQRU5EUyArPSAicHl0aG9uMyIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24zLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrICs9ICJuYXRpdmVzZGstcHl0aG9uMyIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKLX0KLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKLSAgcHl0aG9uMy1kaXN0dXRpbHMgXAotICBweXRob24zLWNvbXByZXNzaW9uIFwKLSIKLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uMy1jdHlwZXMgXAotICBweXRob24zLWRpc3R1dGlscyBcCi0gIHB5dGhvbjMtZW1haWwgXAotICBweXRob24zLWltcG9ydGxpYiBcCi0gIHB5dGhvbjMtbnVtYmVycyBcCi0gIHB5dGhvbjMtY29tcHJlc3Npb24gXAotICBweXRob24zLXNoZWxsIFwKLSAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgcHl0aG9uMy10ZXh0dXRpbHMgXAotICBweXRob24zLXBrZ3V0aWwgXAotICBweXRob24zLXRocmVhZGluZyBcCi0gIHB5dGhvbjMtbWlzYyBcCi0gIHB5dGhvbjMtdW5pdHRlc3QgXAotICBweXRob24zLXhtbCBcCi0iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzkuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM5LjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGMxZWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM5LjAuMC5iYgpAQCAtMCwwICsxLDYgQEAKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG12ICR7RH0ke2JpbmRpcn0vZWFzeV9pbnN0YWxsICR7RH0ke2JpbmRpcn0vZWFzeTNfaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGE0N2I3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc2l4LmluYwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1pbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Nzk1MzEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMS4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tc2l4LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbW1hcF8wLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIKaW5kZXggOWY4YTI2ZC4uZTg3YjhkZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbW1hcF8wLjkuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtbWFwXzAuOS4wLmJiCkBAIC0xLDUgKzEsMiBAQAotcmVxdWlyZSBweXRob24tc21tYXAuaW5jCi0KIGluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29kZWNzIHB5dGhvbjMtbW1hcCBweXRob24zLWxhbmciCityZXF1aXJlIHB5dGhvbi1zbW1hcC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoCmluZGV4IDExOGQ3NWQuLjdjZDdlM2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjI0YzAyOWFiY2M3M2M3MjQwMjBjY2VhOWEyYjRiNWI1YzAwZjJhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWNkZTNlYTE3MDk5OWE5ZWY3MzRlOGFmNGQ3YzI1YmU1YmE4MTY5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxNTo0Mjo0NiArMDMwMAogU3ViamVjdDogW1BBVENIXSBjcm9zcy1jb21waWxlIHN1cHBvcnQKQEAgLTgsNjAgKzgsNjMgQEAKIAogLUtoZW0KIAorUmViYXNlZCBvbiAzLjUuNAorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbQ29uZmlndXJhdGlvbiBTcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4KIC0tLQogIE1ha2VmaWxlLnByZS5pbiB8IDE0ICsrKysrKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotaW5kZXggYTg4YjdkNS4uN2NiOGJiMyAxMDA2NDQKK2luZGV4IDE0NGMxZjg2MjkuLmYyNTJhYzI0MTcgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5wcmUuaW4KICsrKyBiL01ha2VmaWxlLnByZS5pbgotQEAgLTIyMSw2ICsyMjEsNyBAQCBMSUJPQkpTPQlATElCT0JKU0AKLSAKK0BAIC0yMjMsNiArMjIzLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACisKICBQWVRIT049CQlweXRob24kKEVYRSkKICBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKICtIT1NUUFlUSE9OPSAgICAkKEJVSUxEUFlUSE9OKQotIAotIFBZVEhPTl9GT1JfR0VOPUBQWVRIT05fRk9SX0dFTkAKKworIFBZVEhPTl9GT1JfUkVHRU49QFBZVEhPTl9GT1JfUkVHRU5ACiAgUFlUSE9OX0ZPUl9CVUlMRD1AUFlUSE9OX0ZPUl9CVUlMREAKLUBAIC0yODAsNiArMjgxLDcgQEAgTElCRkZJX0lOQ0xVREVESVI9CUBMSUJGRklfSU5DTFVERURJUkAKK0BAIC0yNzcsNiArMjc4LDcgQEAgTElCRkZJX0lOQ0xVREVESVI9CUBMSUJGRklfSU5DTFVERURJUkAKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgUGFyc2VyCiAgUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCiArSE9TVFBHRU49CSQoUEdFTikkKEVYRSkKLSAKKwogIFBTUkNTPQkJXAogIAkJUGFyc2VyL2FjY2VsZXIuYyBcCi1AQCAtNTEwLDcgKzUxMiw3IEBAIGJ1aWxkX2FsbF9nZW5lcmF0ZV9wcm9maWxlOgotIAorQEAgLTQ3OCw3ICs0ODAsNyBAQCBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKKwogIHJ1bl9wcm9maWxlX3Rhc2s6CiAgCTogIyBGSVhNRTogY2FuJ3QgcnVuIGZvciBhIGNyb3NzIGJ1aWxkCiAtCSQoTExWTV9QUk9GX0ZJTEUpICQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKSB8fCB0cnVlCiArCSQoTExWTV9QUk9GX0ZJTEUpICQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoUFJPRklMRV9UQVNLKSB8fCB0cnVlCi0gCisKICBidWlsZF9hbGxfbWVyZ2VfcHJvZmlsZToKICAJJChMTFZNX1BST0ZfTUVSR0VSKQotQEAgLTc4Nyw3ICs3ODksNyBAQCAkKElPX09CSlMpOiAkKElPX0gpCi0gCi0gJChHUkFNTUFSX0gpOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQorQEAgLTc3Miw3ICs3NzQsNyBAQCByZWdlbi1ncmFtbWFyOiAkKFBHRU4pCisgCSMgUmVnZW5lcmF0ZSBJbmNsdWRlL2dyYW1pbml0LmggYW5kIFB5dGhvbi9ncmFtaW5pdC5jCisgCSMgZnJvbSBHcmFtbWFyL0dyYW1tYXIgdXNpbmcgcGdlbgogIAlAJChNS0RJUl9QKSBJbmNsdWRlCi0tCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCi0rCSQoSE9TVFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotICQoR1JBTU1BUl9DKTogQEdFTkVSQVRFRF9DT01NRU5UQCAkKEdSQU1NQVJfSCkKLSAJdG91Y2ggJChHUkFNTUFSX0MpCi0gCi1AQCAtOTc2LDcgKzk3OCw3IEBAICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQorLQkkKFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAorKwkkKEhPU1RQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKKyAJCSQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggXAorIAkJJChzcmNkaXIpL1B5dGhvbi9ncmFtaW5pdC5jCisKK0BAIC05NzgsNyArOTgwLDcgQEAgJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgUHJvZ3JhbXMvcHl0aG9uLm86ICQoUFlUSE9OX0hFQURFUlMpCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIAorCiAgVEVTVE9QVFM9CSQoRVhUUkFURVNUT1BUUykKIC1URVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQogK1RFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoVEVTVFBZVEhPTk9QVFMpCiAgVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKICBURVNUVElNRU9VVD0JMzYwMAotIAotQEAgLTE0NjgsNyArMTQ3MCw3IEBAIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmU6CSQoTERMSUJSQVJZKQorCitAQCAtMTQ3MCw3ICsxNDcyLDcgQEAgZnJhbWV3b3JraW5zdGFsbHN0cnVjdHVyZToJJChMRExJQlJBUlkpCiAgCQlmaTsgXAogIAlkb25lCiAgCSQoTE4pIC1mc24gaW5jbHVkZS9weXRob24kKExEVkVSU0lPTikgJChERVNURElSKSQocHJlZml4KS9IZWFkZXJzCkBAIC03MCwyNCArNzMsMjQgQEAKICAJJChMTikgLWZzbiAkKFZFUlNJT04pICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL1ZlcnNpb25zL0N1cnJlbnQKICAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50LyQoUFlUSE9ORlJBTUVXT1JLKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS8kKFBZVEhPTkZSQU1FV09SSykKICAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50L0hlYWRlcnMgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvSGVhZGVycwotQEAgLTE1MzQsNyArMTUzNiw3IEBAIGNvbmZpZy5zdGF0dXM6CSQoc3JjZGlyKS9jb25maWd1cmUKLSAKK0BAIC0xNTQzLDcgKzE1NDUsNyBAQCBQeXRob24vZHRvYS5vOiBQeXRob24vZHRvYS5jCisKICAjIFJ1biByZWluZGVudCBvbiB0aGUgbGlicmFyeQogIHJlaW5kZW50OgogLQkuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IC1yICQoc3JjZGlyKS9MaWIKICsJJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCi0gCisKICAjIFJlcnVuIGNvbmZpZ3VyZSB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgYXMgaXQgd2FzIHJ1biBsYXN0IHRpbWUsCiAgIyBwcm92aWRlZCB0aGUgY29uZmlnLnN0YXR1cyBzY3JpcHQgZXhpc3RzCi1AQCAtMTY3NCw3ICsxNjc2LDcgQEAgZnVubnk6Ci0gCitAQCAtMTY3OCw3ICsxNjgwLDcgQEAgZnVubnk6CisKICAjIFBlcmZvcm0gc29tZSB2ZXJpZmljYXRpb24gY2hlY2tzIG9uIGFueSBtb2RpZmllZCBmaWxlcy4KLSBwYXRjaGNoZWNrOiBhbGwKKyBwYXRjaGNoZWNrOiBAREVGX01BS0VfUlVMRUAKIC0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQotKwkkKFJVTlNIQVJFRCkgLi8kKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKLSAKKysJJChSVU5TSEFSRUQpICQoSE9TVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQorCiAgIyBEZXBlbmRlbmNpZXMKLSAKLS0tIAorCistLQogMi4xMS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2gKaW5kZXggNzg5OTI5Yi4uZjk5NzFjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2gKQEAgLTgsOSArOCwxMSBAQAogIE1ha2VmaWxlLnByZS5pbiB8ICAgIDYgKysrLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAotLS0tIGEvTWFrZWZpbGUucHJlLmluCi0rKysgYi9NYWtlZmlsZS5wcmUuaW4KLUBAIC0xMzA2LDggKzEzMDYsOCBAQCB0b3VjaDoKK0luZGV4OiBQeXRob24tMy41LjMvTWFrZWZpbGUucHJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS4zLm9yaWcvTWFrZWZpbGUucHJlLmluCisrKysgUHl0aG9uLTMuNS4zL01ha2VmaWxlLnByZS5pbgorQEAgLTE1NzQsOCArMTU3NCw4IEBAIHRvdWNoOgogICMgU2FuaXRhdGlvbiB0YXJnZXRzIC0tIGNsZWFuIGxlYXZlcyBsaWJyYXJpZXMsIGV4ZWN1dGFibGVzIGFuZCB0YWdzCiAgIyBmaWxlcywgd2hpY2ggY2xvYmJlciByZW1vdmVzIGFzIHdlbGwKICBweWNyZW1vdmFsOgpAQCAtMjEsNyArMjMsNyBAQAogIAogIHJtdGVzdHR1cmRzOgogIAktcm0gLWYgKkJBRCAqR09PRCAqU0tJUFBFRAotQEAgLTEzMjEsOSArMTMyMSw5IEBAIGRvY2NsZWFuOgorQEAgLTE1ODksOSArMTU4OSw5IEBAIGRvY2NsZWFuOgogIAktcm0gLXJmIERvYy90b29scy9zcGhpbnggRG9jL3Rvb2xzL3B5Z21lbnRzIERvYy90b29scy9kb2N1dGlscwogIAogIGNsZWFuOiBweWNyZW1vdmFsCkBAIC0zMiw1ICszNCw1IEBACiArCWZpbmQgLiAhIC1wYXRoICcuL2lwa2ctaW5zdGFsbC8qJyAtbmFtZSAnKi5zW29sXScgLWV4ZWMgcm0gLWYge30gJzsnCiArCWZpbmQgLiAhIC1wYXRoICcuL2lwa2ctaW5zdGFsbC8qJyAtbmFtZSAnKi5zby5bMC05XSouWzAtOV0qJyAtZXhlYyBybSAtZiB7fSAnOycKICAJZmluZCBidWlsZCAtbmFtZSAnZmZpY29uZmlnLmgnIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCi0gCWZpbmQgYnVpbGQgLW5hbWUgJ2ZmaWNvbmZpZy5weScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKLSAJLXJtIC1mIExpYi9saWIydG8zLypHcmFtbWFyKi5waWNrbGUKKyAJZmluZCBidWlsZCAtbmFtZSAnKi5weScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKKyAJZmluZCBidWlsZCAtbmFtZSAnKi5weVtjb10nIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMTdjNmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSA2MmRjZjM0OTg3YjY4MGU5NTg3M2ViOTQ3YjNmNGQ4MDIxOTljNjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1DNT04MXVrYXN6PTIwTGFuZ2E/PSA8bHVrYXN6QGxhbmdhLnBsPgotRGF0ZTogRnJpLCAxMCBGZWIgMjAxNyAwMDoxNDo1NSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggIzI5NTE5OiB3ZWFrcmVmIHNwZXdpbmcgZXhjZXB0aW9ucyBkdXJpbmcgaW50ZXJwCi0gZmluYWxpemF0aW9uCi0KLWNvbW1pdCA5Y2Q3ZTE3NjQwYTQ5NjM1ZDFjMWY4YzI5ODk1NzhhOGZjMmMxZGU2Ci1mcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEx1a2FzeiBMYW5nYSA8bHVrYXN6QGxhbmdhLnBsPgotLS0tCi0gTGliL3dlYWtyZWYucHkgfCA0ICsrLS0KLSBNaXNjL05FV1MgICAgICB8IDMgKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9MaWIvd2Vha3JlZi5weSBiL0xpYi93ZWFrcmVmLnB5Ci1pbmRleCBhYWViZDBjLi43ODdlMzNhIDEwMDY0NAotLS0tIGEvTGliL3dlYWtyZWYucHkKLSsrKyBiL0xpYi93ZWFrcmVmLnB5Ci1AQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFdlYWtWYWx1ZURpY3Rpb25hcnkoY29sbGVjdGlvbnMuTXV0YWJsZU1hcHBpbmcpOgotICAgICAgICAgc2VsZiwgKmFyZ3MgPSBhcmdzCi0gICAgICAgICBpZiBsZW4oYXJncykgPiAxOgotICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXhwZWN0ZWQgYXQgbW9zdCAxIGFyZ3VtZW50cywgZ290ICVkJyAlIGxlbihhcmdzKSkKLS0gICAgICAgIGRlZiByZW1vdmUod3IsIHNlbGZyZWY9cmVmKHNlbGYpKToKLSsgICAgICAgIGRlZiByZW1vdmUod3IsIHNlbGZyZWY9cmVmKHNlbGYpLCBfYXRvbWljX3JlbW92YWw9X3JlbW92ZV9kZWFkX3dlYWtyZWYpOgotICAgICAgICAgICAgIHNlbGYgPSBzZWxmcmVmKCkKLSAgICAgICAgICAgICBpZiBzZWxmIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pdGVyYXRpbmc6Ci1AQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIFdlYWtWYWx1ZURpY3Rpb25hcnkoY29sbGVjdGlvbnMuTXV0YWJsZU1hcHBpbmcpOgotICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgIyBBdG9taWMgcmVtb3ZhbCBpcyBuZWNlc3Nhcnkgc2luY2UgdGhpcyBmdW5jdGlvbgotICAgICAgICAgICAgICAgICAgICAgIyBjYW4gYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IHRoZSBHQwotLSAgICAgICAgICAgICAgICAgICAgX3JlbW92ZV9kZWFkX3dlYWtyZWYoZCwgd3Iua2V5KQotKyAgICAgICAgICAgICAgICAgICAgX2F0b21pY19yZW1vdmFsKGQsIHdyLmtleSkKLSAgICAgICAgIHNlbGYuX3JlbW92ZSA9IHJlbW92ZQotICAgICAgICAgIyBBIGxpc3Qgb2Yga2V5cyB0byBiZSByZW1vdmVkCi0gICAgICAgICBzZWxmLl9wZW5kaW5nX3JlbW92YWxzID0gW10KLWRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKLWluZGV4IDQxY2ZkYmEuLjZkODlmNTIgMTAwNjQ0Ci0tLS0gYS9NaXNjL05FV1MKLSsrKyBiL01pc2MvTkVXUwotQEAgLTU3MTksNiArNTcxOSw5IEBAIENvcmUgYW5kIEJ1aWx0aW5zCi0gTGlicmFyeQotIC0tLS0tLS0KLSAKLSstIElzc3VlICMyOTUxOTogRml4IHdlYWtyZWYgc3Bld2luZyBleGNlcHRpb25zIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93bgotKyAgd2hlbiB1c2VkIHdpdGggYSByYXJlIGNvbWJpbmF0aW9uIG9mIG11bHRpcHJvY2Vzc2luZyBhbmQgY3VzdG9tIGNvZGVjcy4KLSsKLSAtIElzc3VlICMyMDE1NDogRGVhZGxvY2sgaW4gYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZGV4YWN0bHkoKS4KLSAKLSAtIElzc3VlICMxNjExMzogUmVtb3ZlIHNoYTMgbW9kdWxlIGFnYWluLgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCmluZGV4IDMzNDczMjEuLmEzY2M0OGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCkBAIC03LDEzICs3LDE2IEBACiBBbHNvIHNpbXBseSBkaXNhYmxlIHRoZSB0ayBtb2R1bGUgc2luY2UgaXRzIG5vdCBpbiBERVBFTkRTLgogU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgogCi1JbmRleDogUHl0aG9uLTIuNy4yL3NldHVwLnB5CitJbmRleDogUHl0aG9uLTMuNS4zL3NldHVwLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvc2V0dXAucHkJMjAxMi0wNC0wNSAyMzoxODozOC41MDAxMzY2NDcgKzAzMDAKLSsrKyBQeXRob24tMi43LjIvc2V0dXAucHkJMjAxMi0wNC0wNSAyMzoxOTozNS44ODgxMzQ5NjkgKzAzMDAKLUBAIC0xNjM0LDggKzE2MzQsMTAgQEAKKy0tLSBQeXRob24tMy41LjMub3JpZy9zZXR1cC5weQorKysrIFB5dGhvbi0zLjUuMy9zZXR1cC5weQorQEAgLTE1NTgsMTAgKzE1NTgsMTIgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgc2VsZi5leHRlbnNpb25zLmV4dGVuZChleHRzKQorIAogICAgICAgICAgIyBDYWxsIHRoZSBtZXRob2QgZm9yIGRldGVjdGluZyB3aGV0aGVyIF90a2ludGVyIGNhbiBiZSBjb21waWxlZAotICAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCistICAgICAgICBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKKysgICAgICAgICMgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCiAgCiAtICAgICAgICBpZiAnX3RraW50ZXInIG5vdCBpbiBbZS5uYW1lIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc106CiAtICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKQEAgLTIyLDE4ICsyNSw1IEBACiArICAgICAgICAjaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgogKyAgICAgICAgIyAgICBtaXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQogIAotICAgICAgICAgcmV0dXJuIG1pc3NpbmcKLSAKLWRpZmYgLS1naXQgUHl0aG9uLTMuNS4xLm9yaWcvc2V0dXAucHkgUHl0aG9uLTMuNS4xL3NldHVwLnB5Ci1pbmRleCBiNDYzM2I5Li5kNzU4OGMwIDEwMDY0NAotLS0tIFB5dGhvbi0zLjUuMS5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTMuNS4xL3NldHVwLnB5Ci1AQCAtMTUzNiw3ICsxNTM2LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgc2VsZi5leHRlbnNpb25zLmV4dGVuZChleHRzKQotIAotICAgICAgICAgIyBDYWxsIHRoZSBtZXRob2QgZm9yIGRldGVjdGluZyB3aGV0aGVyIF90a2ludGVyIGNhbiBiZSBjb21waWxlZAotLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0rICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotIAotICAgICAgICAgIyB0a2ludGVyIG1vZHVsZSB3aWxsIG5vdCBiZSBhdmFsYWlibGUgYXMgeW9jdG8KLSAgICAgICAgICMgZG9lc24ndCBoYXZlIHRrIGludGVncmF0ZWQgKHlldCkKKyAjIyAgICAgICAgICMgVW5jb21tZW50IHRoZXNlIGxpbmVzIGlmIHlvdSB3YW50IHRvIHBsYXkgd2l0aCB4eG1vZHVsZS5jCisgIyMgICAgICAgICBleHQgPSBFeHRlbnNpb24oJ3h4JywgWyd4eG1vZHVsZS5jJ10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2NyZWF0ZV9tYW5pZmVzdDMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2NyZWF0ZV9tYW5pZmVzdDMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY5NDRmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvY3JlYXRlX21hbmlmZXN0My5weQpAQCAtMCwwICsxLDM1NCBAQAorIyBUaGlzIHNjcmlwdCBpcyB1c2VkIGFzIGEgYml0YmFrZSB0YXNrIHRvIGNyZWF0ZSBhIG5ldyBweXRob24gbWFuaWZlc3QKKyMgJCBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKKyMKKyMgT3VyIGdvYWwgaXMgdG8ga2VlcCBweXRob24tY29yZSBhcyBzbWFsbCBhcyBwb3NpYmxlIGFuZCBhZGQgb3RoZXIgcHl0aG9uCisjIHBhY2thZ2VzIG9ubHkgd2hlbiB0aGUgdXNlciBuZWVkcyB0aGVtLCBoZW5jZSB3aHkgd2Ugc3BsaXQgdXBzdHJlYW0gcHl0aG9uCisjIGludG8gc2V2ZXJhbCBwYWNrYWdlcy4KKyMKKyMgSW4gYSB2ZXJ5IHNpbXBsaXN0aWMgd2F5IHdoYXQgdGhpcyBkb2VzIGlzOiAKKyMgTGF1bmNoIHB5dGhvbiBhbmQgc2VlIHNwZWNpZmljYWxseSB3aGF0IGlzIHJlcXVpcmVkIGZvciBpdCB0byBydW4gYXQgYSBtaW5pbXVtCisjCisjIEdvIHRocm91Z2ggdGhlIHB5dGhvbi1tYW5pZmVzdCBmaWxlIGFuZCBsYXVuY2ggYSBzZXBhcmF0ZSB0YXNrIGZvciBldmVyeSBzaW5nbGUKKyMgb25lIG9mIHRoZSBmaWxlcyBvbiBlYWNoIHBhY2thZ2UsIHRoaXMgdGFzayB3aWxsIGNoZWNrIHdoYXQgd2FzIHJlcXVpcmVkIGZvciB0aGF0CisjIHNwZWNpZmljIG1vZHVsZSB0byBydW4sIHRoZXNlIG1vZHVsZXMgd2lsbCBiZSBjYWxsZWQgZGVwZW5kZW5jaWVzLgorIyBUaGUgb3V0cHV0IG9mIHN1Y2ggdGFzayB3aWxsIGJlIGEgbGlzdCBvZiB0aGUgbW9kdWxlcyBvciBkZXBlbmRlbmNpZXMgdGhhdCB3ZXJlCisjIGZvdW5kIGZvciB0aGF0IGZpbGUuCisjCisjIFN1Y2ggb3V0cHV0IHdpbGwgYmUgcGFyc2VkIGJ5IHRoaXMgc2NyaXB0LCB3ZSB3aWxsIGxvb2sgZm9yIGVhY2ggZGVwZW5kZW5jeSBvbiB0aGUKKyMgbWFuaWZlc3QgYW5kIGlmIHdlIGZpbmQgdGhhdCBhbm90aGVyIHBhY2thZ2UgYWxyZWFkeSBpbmNsdWRlcyBpdCwgdGhlbiB3ZSB3aWxsIGFkZAorIyB0aGF0IHBhY2thZ2UgYXMgYW4gUkRFUEVORFMgdG8gdGhlIHBhY2thZ2Ugd2UgYXJlIGN1cnJlbnRseSBjaGVja2luZzsgaW4gY2FzZSB3ZSBkb250CisjIGZpbmQgdGhlIGN1cnJlbnQgZGVwZW5kZW5jeSBvbiBhbnkgb3RoZXIgcGFja2FnZSB3ZSB3aWxsIGFkZCBpdCB0byB0aGUgY3VycmVudCBwYWNrYWdlCisjIGFzIHBhcnQgb2YgRklMRVMuCisjCisjCisjIFRoaXMgd2F5IHdlIHdpbGwgY3JlYXRlIGEgbmV3IG1hbmlmZXN0IGZyb20gdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgd2FzIGJ1aWx0IGR1cmluZworIyB0aGlzIHByb2Nlc3MsIG9udCB0aGlzIG5ldyBtYW5pZmVzdCBlYWNoIHBhY2thZ2Ugd2lsbCBjb250YWluIHNwZWNpZmljYWxseSBvbmx5CisjIHdoYXQgaXQgbmVlZHMgdG8gcnVuLgorIworIyBUaGVyZSBhcmUgc29tZSBjYXZlYXRzIHdoaWNoIHdlIHRyeSB0byBkZWFsIHdpdGgsIHN1Y2ggYXMgcmVwZWF0ZWQgZmlsZXMgb24gZGlmZmVyZW50CisjIHBhY2thZ2VzLCBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgZm9sZGVycywgd2lsZGNhcmRzLCBhbmQgc3BlY2lhbCBwYWNrYWdlcy4KKyMgSXRzIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGlzIG1ldGhvZCBvbmx5IHdvcmtzIGZvciBweXRob24gZmlsZXMsIGFuZCBzaGFyZWQKKyMgbGlicmFyaWVzLiBTdGF0aWMgbGlicmFyaWVzLCBoZWFkZXIgZmlsZXMgYW5kIGJpbmFyaWVzIG5lZWQgdG8gYmUgZGVhbHQgd2l0aCBtYW51YWxseS4KKyMKKyMgVGhpcyBzY3JpcHQgZGlmZmVycyBmcm9tIGl0cyBweXRob24yIHZlcnNpb24gbW9zdGx5IG9uIGhvdyBzaGFyZWQgbGlicmFyaWVzIGFyZSBoYW5kbGVkCisjIFRoZSBtYW5pZmVzdCBmaWxlIGZvciBweXRob24zIGhhcyBhbiBleHRyYSBmaWVsZCB3aGljaCBjb250YWlucyB0aGUgY2FjaGVkIGZpbGVzIGZvcgorIyBlYWNoIHBhY2thZ2UuCisjIFRoYSBtZXRob2QgdG8gaGFuZGxlIGNhY2hlZCBmaWxlcyBkb2VzIG5vdCB3b3JrIHdoZW4gYSBtb2R1bGUgaW5jbHVkZXMgYSBmb2xkZXIgd2hpY2gKKyMgaXRzZWxmIGNvbnRhaW5zIHRoZSBweWNhY2hlIGZvbGRlciwgZ2xhZGx5IHRoaXMgaXMgYWxtb3N0IG5ldmVyIHRoZSBjYXNlLgorIworIyBBdXRob3I6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gImFlaHMyOSIgPGFlaHMyOUBnbWFpbC5jb20+CisKKworaW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKKworIyBIYWNrIHRvIGdldCBuYXRpdmUgcHl0aG9uIHNlYXJjaCBwYXRoIChmb3IgZm9sZGVycyksIG5vdCBmb25kIG9mIGl0IGJ1dCBpdCB3b3JrcyBmb3Igbm93CitwaXZvdD0ncmVjaXBlLXN5c3Jvb3QtbmF0aXZlJworZm9yIHAgaW4gc3lzLnBhdGg6CisgIGlmIHBpdm90IGluIHA6CisgICAgbmF0aXZlbGliZm9sZGVyPXBbOnAuZmluZChwaXZvdCkrbGVuKHBpdm90KV0KKworIyBFbXB0eSBkaWN0IHRvIGhvbGQgdGhlIHdob2xlIG1hbmlmZXN0CituZXdfbWFuaWZlc3QgPSB7fQorCisjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcywgZm9sZGVycyBhbmQgd2lsZGNhcmRzCithbGxmaWxlcz1bXQorcmVwZWF0ZWQ9W10KK3dpbGRjYXJkcz1bXQorCitoYXNmb2xkZXJzPVtdCithbGxmb2xkZXJzPVtdCisKK2RlZiBpc0ZvbGRlcih2YWx1ZSk6CisgIGlmIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliJykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliNjQnKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWIzMicpKToKKyAgICByZXR1cm4gVHJ1ZQorICBlbHNlOgorICAgIHJldHVybiBGYWxzZQorCitkZWYgaXNDYWNoZWQoaXRlbSk6CisgIGlmICdfX3B5Y2FjaGVfXycgaW4gaXRlbToKKyAgICByZXR1cm4gVHJ1ZQorICBlbHNlOgorICAgIHJldHVybiBGYWxzZQorCisjIFJlYWQgZXhpc3RpbmcgSlNPTiBtYW5pZmVzdAord2l0aCBvcGVuKCdweXRob24zLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdDoKKyAgb2xkX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdCkKKworCisjIEZpcnN0IHBhc3MgdG8gZ2V0IGNvcmUtcGFja2FnZSBmdW5jdGlvbmFsaXR5LCBiZWNhdXNlIHdlIGJhc2UgZXZlcnl0aGluZyBvbiB0aGUgZmFjdCB0aGF0IGNvcmUgaXMgYWN0dWFsbHkgd29ya2luZworIyBOb3QgZXhhY3RseSB0aGUgc2FtZSBzbyBpdCBzaG91bGQgbm90IGJlIGEgZnVuY3Rpb24KK3ByaW50ICgnR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIHBhY2thZ2U6IGNvcmUnKQorCisjIFNwZWNpYWwgY2FsbCB0byBjaGVjayBmb3IgY29yZSBwYWNrYWdlCitvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMzLnB5JywgJ3B5dGhvbi1jb3JlLXBhY2thZ2UnXSkuZGVjb2RlKCd1dGY4JykKK2ZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6CisgICAgaWYgaXNDYWNoZWQoaXRlbSk6CisgICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXToKKyAgICAgICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjaworICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMgZm9yIG90aGVyIHBhY2thZ2VzCisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCisgICAgZWxzZToKKyAgICAgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCisKK2ZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAjIFBhc3MgaXQgZGlyZWN0bHkKKyAgICBpZiBpc0NhY2hlZCh2YWx1ZSk6CisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ10uYXBwZW5kKHZhbHVlKQorICAgIGVsc2U6CisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICBjb250aW51ZQorICAjIElnbm9yZSBiaW5hcmllcywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBhc3N1bWUgaXQgd2FzIGFkZGVkIGNvcnJlY3RseSAobWFudWFsbHkpCisgIGlmICcke2JpbmRpcn0nIGluIHZhbHVlOgorICAgICMgUGFzcyBpdCBkaXJlY3RseQorICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICBjb250aW51ZQorICAjIElnbm9yZSBlbXB0eSB2YWx1ZXMKKyAgaWYgdmFsdWUgPT0gJyc6CisgICAgY29udGludWUKKyAgaWYgJyR7aW5jbHVkZWRpcn0nIGluIHZhbHVlOgorICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICBjb250aW51ZQorICAjIEdldCBtb2R1bGUgbmFtZSAsIHNob3VsZG50IGJlIGFmZmVjdGVkIGJ5IGxpYmRpci9iaW5kaXIKKyAgdmFsdWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5ub3JtcGF0aCh2YWx1ZSkpKVswXQorCisgICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCisgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYworICBwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBtb2R1bGU6ICVzJyAlIHZhbHVlKQorICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMzLnB5JywgJyVzJyAlIHZhbHVlXSkuZGVjb2RlKCd1dGY4JykKKyAgcHJpbnQgKCdUaGUgZm9sbG93aW5nIGRlcGVuZGVuY2llcyB3ZXJlIGZvdW5kIGZvciBtb2R1bGUgJXM6XG4nICUgdmFsdWUpCisgIHByaW50IChvdXRwdXQpCisgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6CisgICAgaWYgaXNDYWNoZWQoaXRlbSk6CisgICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXToKKyAgICAgICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjaworICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMgZm9yIG90aGVyIHBhY2thZ2VzCisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCisgICAgZWxzZToKKyAgICAgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCisKKworIyBXZSBjaGVjayB3aGljaCBwYWNrYWdlcyBpbmNsdWRlIGZvbGRlcnMKK2ZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAgICAgICAgIHByaW50ICgnJXMgaXMgYSBmb2xkZXInICUgdmFsdWUpCisgICAgICAgICAgICBpZiBrZXkgbm90IGluIGhhc2ZvbGRlcnM6CisgICAgICAgICAgICAgICAgaGFzZm9sZGVycy5hcHBlbmQoa2V5KQorICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGFsbGZvbGRlcnM6CisgICAgICAgICAgICAgICAgYWxsZm9sZGVycy5hcHBlbmQodmFsdWUpCisKK2ZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgICMgVXNlIGFuIGVtcHR5IGRpY3QgYXMgZGF0YSBzdHJ1Y3R1cmUgdG8gaG9sZCBkYXRhIGZvciBlYWNoIHBhY2thZ2UgYW5kIGZpbGwgaXQgdXAKKyAgICBuZXdfbWFuaWZlc3Rba2V5XT17fQorICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddPVtdCisgICAgCisgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ109W10KKyAgICAjIEFsbCBwYWNrYWdlcyBzaG91bGQgZGVwZW5kIG9uIGNvcmUKKyAgICBpZiBrZXkgIT0gJ2NvcmUnOgorICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKCdjb3JlJykKKyAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXT1bXQorICAgIGVsc2U6CisgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ109b2xkX21hbmlmZXN0W2tleV1bJ2NhY2hlZCddCisgICAgbmV3X21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXT1vbGRfbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddCisKKyAgICAjIEhhbmRsZSBzcGVjaWFsIGNhc2VzLCB3ZSBhc3N1bWUgdGhhdCB3aGVuIHRoZXkgd2VyZSBtYW51YWxseSBhZGRlZCAKKyAgICAjIHRvIHRoZSBtYW5pZmVzdCB3ZSBrbmV3IHdoYXQgd2Ugd2VyZSBkb2luZy4KKyAgICBwcmludCgnXG4nKQorICAgIHByaW50KCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpCisgICAgcHJpbnQgKCdIYW5kbGluZyBwYWNrYWdlICVzJyAlIGtleSkKKyAgICBwcmludCgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQorICAgIHNwZWNpYWxfcGFja2FnZXM9WydtaXNjJywgJ21vZHVsZXMnLCAnZGV2J10KKyAgICBpZiBrZXkgaW4gc3BlY2lhbF9wYWNrYWdlcyBvciAnc3RhdGljZGV2JyBpbiBrZXk6CisgICAgICAgIHByaW50KCdQYXNzaW5nICVzIHBhY2thZ2UgZGlyZWN0bHknICUga2V5KQorICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XT1vbGRfbWFuaWZlc3Rba2V5XQorICAgICAgICBjb250aW51ZQorCisgICAgZm9yIHZhbHVlIGluIG9sZF9tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAjIFdlIGFscmVhZHkgaGFuZGxlZCBjb3JlIG9uIHRoZSBmaXJzdCBwYXNzCisgICAgICAgIGlmIGtleSA9PSAnY29yZSc6CisgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIElnbm9yZSBmb2xkZXJzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGRpZmZpY3VsdCB0byBoYW5kbGUgbXVsdGlsaWIKKyAgICAgICAgaWYgaXNGb2xkZXIodmFsdWUpOgorICAgICAgICAgICAgIyBQYXNzIGZvbGRlcnMgZGlyZWN0bHkKKyAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgIyBJZ25vcmUgYmluYXJpZXMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZQorICAgICAgICBpZiAnJHtiaW5kaXJ9JyBpbiB2YWx1ZToKKyAgICAgICAgICAgICMgUGFzcyBpdCBkaXJlY3RseSB0byB0aGUgbmV3IG1hbmlmZXN0IGRhdGEgc3RydWN0dXJlCisgICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBJZ25vcmUgZW1wdHkgdmFsdWVzCisgICAgICAgIGlmIHZhbHVlID09ICcnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgJyR7aW5jbHVkZWRpcn0nIGluIHZhbHVlOgorICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCisgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGNvbWVzIGZyb20gYW5vdGhlciAoZS5nLiBzcWxpdGUzLmR1bXApCisgICAgICAgIHBhdGgsdmFsdWUgPSBvcy5wYXRoLnNwbGl0KHZhbHVlKQorICAgICAgICBwYXRoID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQorICAgICAgICB2YWx1ZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh2YWx1ZSkpWzBdCisKKyAgICAgICAgIyBJZiB0aGlzIGNvbmRpdGlvbiBpcyBtZXQsIGl0IG1lYW5zIHdlIG5lZWQgdG8gaW1wb3J0IGl0IGZyb20gYW5vdGhlciBtb2R1bGUKKyAgICAgICAgIyBvciBpdHMgdGhlIGZvbGRlciBpdHNlbGYgKGUuZy4gdW5pdHRlc3QpCisgICAgICAgIGlmIHBhdGggPT0ga2V5OgorICAgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgdmFsdWUgPSBwYXRoICsgJy4nICsgdmFsdWUKKyAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgdmFsdWUgPSBwYXRoCisKKyAgICAgICAgIyBMYXVuY2ggc2VwYXJhdGUgdGFzayBmb3IgZWFjaCBtb2R1bGUgZm9yIGRldGVybWluaXN0aWMgYmVoYXZpb3IKKyAgICAgICAgIyBFYWNoIG1vZHVsZSB3aWxsIG9ubHkgaW1wb3J0IHdoYXQgaXMgbmVjZXNzYXJ5IGZvciBpdCB0byB3b3JrIGluIHNwZWNpZmljCisgICAgICAgIHByaW50ICgnXG5HZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKKyAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICclcycgJSB2YWx1ZV0pLmRlY29kZSgndXRmOCcpCisgICAgICAgICMgV2UgY2FuIHByaW50IGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCisgICAgICAgIHByaW50ICgnVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgd2VyZSBmb3VuZCBmb3IgbW9kdWxlICVzOlxuJyAlIHZhbHVlKQorICAgICAgICBwcmludCAob3V0cHV0KQorICAgICAgICAjIE91dHB1dCB3aWxsIGhhdmUgYWxsIGRlcGVuZGVuY2llcworCisgICAgICAgIHJlcG9ydEZJTEVTID0gW10KKyAgICAgICAgcmVwb3J0UkRFUFMgPSBbXQorCisgICAgICAgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorCisgICAgICAgICAgICAjIFdhcm5pbmc6IFRoaXMgZmlyc3QgcGFydCBpcyB1Z2x5CisgICAgICAgICAgICAjIE9uZSBvZiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2FzIGZvdW5kLCBjb3VsZCBiZSBpbnNpZGUgb2Ygb25lIG9mIHRoZSBmb2xkZXJzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcGFja2FnZQorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgaGFwcGVucyBzbyB3ZSBjYW4gYWRkIHRoZSBwYWNrYWdlIGNvbnRhaW5pbmcgdGhlIGZvbGRlciBhcyBhbiByZGVwZW5kZW5jeQorICAgICAgICAgICAgIyBlLmcuIEZvbGRlciBlbmNvZGluZ3MgY29udGFpbmVkIGluIGNvZGVjcworICAgICAgICAgICAgIyBUaGlzIHdvdWxkIGJlIHNvbHZlZCBpZiBubyBwYWNrYWdlcyBpbmNsdWRlZCBhbnkgZm9sZGVycworCisgICAgICAgICAgICAjIFRoaXMgY2FuIGJlIGRvbmUgaW4gdHdvIHdheXM6CisgICAgICAgICAgICAjIDEgLSBXZSBhc3N1bWUgdGhhdCBpZiB3ZSB0YWtlIG91dCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0aCB3ZSB3b3VsZCBnZXQKKyAgICAgICAgICAgICMgICB0aGUgZm9sZGVyIHN0cmluZywgdGhlbiB3ZSB3b3VsZCBjaGVjayBpZiBmb2xkZXIgc3RyaW5nIGlzIGluIHRoZSBsaXN0IG9mIGZvbGRlcnMKKyAgICAgICAgICAgICMgICBUaGlzIHdvdWxkIG5vdCB3b3JrIGlmIGEgcGFja2FnZSBjb250YWlucyBhIGZvbGRlciB3aGljaCBjb250YWlucyBhbm90aGVyIGZvbGRlcgorICAgICAgICAgICAgIyAgIGUuZy4gcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWUgIGZvbGRlcl9zdHJpbmc9IHBhdGgvZm9sZGVyMS9mb2xkZXIyCisgICAgICAgICAgICAjICAgZm9sZGVyX3N0cmluZyB3b3VsZCBub3QgbWF0Y2ggYW55IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIDIgLSBXZSBkbyBpdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCwgY2hlY2tpbmcgaWYgdGhlIGZvbGRlciBpcyBjb250YWluZWQgaW4gdGhlIHBhdGgKKyAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgorICAgICAgICAgICAgIyAgIGlzIGZvbGRlcl9zdHJpbmcgaW5zaWRlIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lPywgCisgICAgICAgICAgICAjICAgWWVzLCBpdCB3b3JrcywgYnV0IHdlIHdhc3RlIGEgY291cGxlIG9mIG1pbGxpc2Vjb25kcy4KKworICAgICAgICAgICAgaW5Gb2xkZXJzPUZhbHNlCisgICAgICAgICAgICBmb3IgZm9sZGVyIGluIGFsbGZvbGRlcnM6CisgICAgICAgICAgICAgICAgaWYgZm9sZGVyIGluIGl0ZW06CisgICAgICAgICAgICAgICAgICAgIGluRm9sZGVycyA9IFRydWUgIyBEaWQgd2UgZmluZCBhIGZvbGRlcj8KKyAgICAgICAgICAgICAgICAgICAgZm9sZGVyRm91bmQgPSBGYWxzZSAjIFNlY29uZCBmbGFnIHRvIGJyZWFrIGlubmVyIGZvcgorICAgICAgICAgICAgICAgICAgICAjIExvb3Agb25seSB0aHJvdWdoIHBhY2thZ2VzIHdoaWNoIGNvbnRhaW4gZm9sZGVycworICAgICAgICAgICAgICAgICAgICBmb3Iga2V5Zm9sZGVyIGluIGhhc2ZvbGRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGVyRm91bmQgPT0gRmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCgnQ2hlY2tpbmcgZm9sZGVyICVzIG9uIHBhY2thZ2UgJXMnICUgKGl0ZW0sa2V5Zm9sZGVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZV9mb2xkZXIgaW4gb2xkX21hbmlmZXN0W2tleWZvbGRlcl1bJ2ZpbGVzJ10gb3IgZmlsZV9mb2xkZXIgaW4gb2xkX21hbmlmZXN0W2tleWZvbGRlcl1bJ2NhY2hlZCddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX2ZvbGRlcj09Zm9sZGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCclcyBmb2xkZXIgZm91bmQgaW4gJXMnICUgKGZvbGRlciwga2V5Zm9sZGVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5Zm9sZGVyIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXSBhbmQga2V5Zm9sZGVyICE9IGtleToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQoa2V5Zm9sZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICMgQSBmb2xkZXIgd2FzIGZvdW5kIHNvIHdlJ3JlIGRvbmUgd2l0aCB0aGlzIGl0ZW0sIHdlIGNhbiBnbyBvbgorICAgICAgICAgICAgaWYgaW5Gb2xkZXJzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKworICAgICAgICAgICAgIyBXZSBtaWdodCBhbHJlYWR5IGhhdmUgaXQgb24gdGhlIGRpY3Rpb25hcnkgc2luY2UgaXQgY291bGQgZGVwZW5kIG9uIGEgKHByZXZpb3VzbHkgY2hlY2tlZCkgbW9kdWxlCisgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXSBhbmQgaXRlbSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddOgorICAgICAgICAgICAgICAgICMgSGFuZGxlIGNvcmUgYXMgYSBzcGVjaWFsIHBhY2thZ2UsIHdlIGFscmVhZHkgZGlkIGl0IHNvIHdlIHBhc3MgaXQgdG8gTkVXIGRhdGEgc3RydWN0dXJlIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgaWYga2V5PT0nY29yZSc6CisgICAgICAgICAgICAgICAgICBwcmludCgnQWRkaW5nICVzIHRvICVzIEZJTEVTJyAlIChpdGVtLCBrZXkpKQorICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgorICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgorICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCisKKyAgICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIHJlcGVhdGVkIGZpbGVzCisgICAgICAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBhbGxmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICBhbGxmaWxlcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQuYXBwZW5kKGl0ZW0pCisKKyAgICAgICAgICAgICAgICBlbHNlOgorCisKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGlzIGRlcGVuZGVuY3kgaXMgYWxyZWFkeSBjb250YWluZWQgb24gYW5vdGhlciBwYWNrYWdlLCBzbyB3ZSBhZGQgaXQKKyAgICAgICAgICAgICAgICAgICAgIyBhcyBhbiBSREVQRU5EUywgb3IgaWYgaXRzIG5vdCwgaXQgbWVhbnMgaXQgc2hvdWxkIGJlIGNvbnRhaW5lZCBvbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAjIHBhY2thZ2UsIHNvIHdlIHNob3VsZCBhZGQgaXQgdG8gRklMRVMKKyAgICAgICAgICAgICAgICAgICAgZm9yIG5ld2tleSBpbiBvbGRfbWFuaWZlc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoJ0NoZWNraW5nICVzICcgJSBpdGVtICsgJyBpbiAlcycgJSBuZXdrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydmaWxlcyddIG9yIGl0ZW0gaW4gb2xkX21hbmlmZXN0W25ld2tleV1bJ2NhY2hlZCddOiAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIHdlcmUgbmVzdGluZywgd2UgbmVlZCB0byBjaGVjayBpdHMgbm90IHRoZSBzYW1lIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXdrZXkhPWtleSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdrZXkgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaXQgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0UkRFUFMuYXBwZW5kKCdBZGRpbmcgJXMgdG8gJXMgUkRFUEVORFMsIGJlY2F1c2UgaXQgY29udGFpbnMgJXNcbicgJSAobmV3a2V5LCBrZXksIGl0ZW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKG5ld2tleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgIyBBIG1vZHVsZSBzaG91bGRuJ3QgY29udGFpbiBpdHNlbGYgKCR7bGliZGlyfS9weXRob24zL3NxbGl0ZTMgc2hvdWxkbnQgYmUgb24gc3FsaXRlMyBmaWxlcykKKyAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKGl0ZW0pICE9IGtleToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydEZJTEVTLmFwcGVuZCgoJ0FkZGluZyAlcyB0byAlcyBGSUxFU1xuJyAlIChpdGVtLCBrZXkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2luY2UgaXQgd2FzbnQgZm91bmQgb24gYW5vdGhlciBwYWNrYWdlLCBpdHMgbm90IGFuIFJERVAsIHNvIGFkZCBpdCB0byBGSUxFUyBmb3IgdGhpcyBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc0NhY2hlZChpdGVtKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLmVuZHN3aXRoKCcqJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQorCisgICAgICAgIHByaW50KCdcbicpCisgICAgICAgIHByaW50KCcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMnKQorICAgICAgICBwcmludCgnU3VtbWFyeSBmb3IgbW9kdWxlICVzJyAlIHZhbHVlKQorICAgICAgICBwcmludCgnRklMRVMgZm91bmQgZm9yIG1vZHVsZSAlczonICUgdmFsdWUpCisgICAgICAgIHByaW50KCcnLmpvaW4ocmVwb3J0RklMRVMpKQorICAgICAgICBwcmludCgnUkRFUEVORFMgZm91bmQgZm9yIG1vZHVsZSAlczonICUgdmFsdWUpCisgICAgICAgIHByaW50KCcnLmpvaW4ocmVwb3J0UkRFUFMpKQorICAgICAgICBwcmludCgnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjJykKKworcHJpbnQgKCdUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSByZXBlYXRlZCAoY29udGFpbmVkIGluIG1vcmUgdGhhbiBvbmUgcGFja2FnZSksIHBsZWFzZSBjaGVjayB3aGljaCBwYWNrYWdlIHNob3VsZCBnZXQgaXQ6JykKK3ByaW50IChyZXBlYXRlZCkKK3ByaW50KCdUaGUgZm9sbG93aW5nIGZpbGVzIGNvbnRhaW4gd2lsZGNhcmRzLCBwbGVhc2UgY2hlY2sgdGhleSBhcmUgbmVjZXNzYXJ5JykKK3ByaW50KHdpbGRjYXJkcykKK3ByaW50KCdUaGUgZm9sbG93aW5nIGZpbGVzIGNvbnRhaW4gZm9sZGVycywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludChoYXNmb2xkZXJzKQorCisjIFNvcnQgaXQganVzdCBzbyBpdCBsb29rcyBuaWNlcgorZm9yIGtleSBpbiBuZXdfbWFuaWZlc3Q6CisgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uc29ydCgpCisgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddLnNvcnQoKQorICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLnNvcnQoKQorCisjIENyZWF0ZSB0aGUgbWFuaWZlc3QgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgYnVpbHQKK3dpdGggb3BlbigncHl0aG9uMy1tYW5pZmVzdC5qc29uLm5ldycsJ3cnKSBhcyBvdXRmaWxlOgorICAgIGpzb24uZHVtcChuZXdfbWFuaWZlc3Qsb3V0ZmlsZSxzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpCisgICAgb3V0ZmlsZS53cml0ZSgnXG4nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9nZXRfbW9kdWxlX2RlcHMzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9nZXRfbW9kdWxlX2RlcHMzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMTJiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2dldF9tb2R1bGVfZGVwczMucHkKQEAgLTAsMCArMSwxNDYgQEAKKyMgVGhpcyBzY3JpcHQgaXMgbGF1bmNoZWQgb24gc2VwYXJhdGUgdGFzayBmb3IgZWFjaCBweXRob24gbW9kdWxlCisjIEl0IGNoZWNrcyBmb3IgZGVwZW5kZW5jaWVzIGZvciB0aGF0IHNwZWNpZmljIG1vZHVsZSBhbmQgcHJpbnRzIAorIyB0aGVtIG91dCwgdGhlIG91dHB1dCBvZiB0aGlzIGV4ZWN1dGlvbiB3aWxsIGhhdmUgYWxsIGRlcGVuZGVuY2llcworIyBmb3IgYSBzcGVjaWZpYyBtb2R1bGUsIHdoaWNoIHdpbGwgYmUgcGFyc2VkIGFuIGRlYWx0IG9uIGNyZWF0ZV9tYW5pZmVzdC5weQorIworIyBBdXRob3I6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gImFlaHMyOSIgPGFlaHMyOUBnbWFpbC5jb20+CisKKyMgV2UgY2FuIGdldCBhIGxvZyBwZXIgbW9kdWxlLCBmb3IgYWxsIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB3ZXJlIGZvdW5kLCBidXQgaXRzIG1lc3N5LgorZGVidWc9RmFsc2UKKworaW1wb3J0IHN5cworCisjIFdlIGNhbiBnZXQgYSBsaXN0IG9mIHRoZSBtb2R1bGVzIHdoaWNoIGFyZSBjdXJyZW50bHkgcmVxdWlyZWQgdG8gcnVuIHB5dGhvbgorIyBzbyB3ZSBydW4gcHl0aG9uLWNvcmUgYW5kIGdldCBpdHMgbW9kdWxlcywgd2UgdGhlbiBpbXBvcnQgd2hhdCB3ZSBuZWVkCisjIGFuZCBjaGVjayB3aGF0IG1vZHVsZXMgYXJlIGN1cnJlbnRseSBydW5uaW5nLCBpZiB3ZSBzdWJzdHJhY3QgdGhlbSBmcm9tIHRoZQorIyBtb2R1bGVzIHdlIGhhZCBpbml0aWFsbHksIHdlIGdldCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlIHdlIGltcG9ydGVkLgorCisjIFdlIHVzZSBpbXBvcnRsaWIgdG8gYWNoaWV2ZSB0aGlzLCBzbyB3ZSBhbHNvIG5lZWQgdG8ga25vdyB3aGF0IG1vZHVsZXMgaW1wb3J0bGliIG5lZWRzCitpbXBvcnQgaW1wb3J0bGliCisKK2NvcmVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCisKK2RlZiBmaXhfcGF0aChkZXBfcGF0aCk6CisgICAgaW1wb3J0IG9zCisgICAgIyBXZSBET05UIHdhbnQgdGhlIHBhdGggb24gb3VyIEhPU1Qgc3lzdGVtCisgICAgcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKKyAgICBkZXBfcGF0aD1kZXBfcGF0aFtkZXBfcGF0aC5maW5kKHBpdm90KStsZW4ocGl2b3QpOl0KKworICAgIGlmICcvdXNyL2JpbicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9iaW4nJyR7YmluZGlyfScpCisKKyAgICAjIEhhbmRsZSBtdWx0aWxpYiwgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PworICAgIGlmICcvdXNyL2xpYjMyJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYjMyJywnJHtsaWJkaXJ9JykKKyAgICBpZiAnL3Vzci9saWI2NCcgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWI2NCcsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvbGliJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYicsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvaW5jbHVkZScgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9pbmNsdWRlJywnJHtpbmNsdWRlZGlyfScpCisgICAgaWYgJ19faW5pdF9fLicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gIG9zLnBhdGguc3BsaXQoZGVwX3BhdGgpWzBdCisgICAgcmV0dXJuIGRlcF9wYXRoCisKKworIyBNb2R1bGUgdG8gaW1wb3J0IHdhcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQKK2N1cnJlbnRfbW9kdWxlID0gIHN0cihzeXMuYXJndlsxXSkucnN0cmlwKCkKK2lmKGRlYnVnPT1UcnVlKToKKyAgICBsb2cgPSBvcGVuKCdsb2dfJXMnICUgY3VycmVudF9tb2R1bGUsJ3cnKQorICAgIGxvZy53cml0ZSgnTW9kdWxlICVzIGdlbmVyYXRlZCB0aGUgZm9sbG93aW5nIGRlcGVuZGVuY2llczpcbicgJSBjdXJyZW50X21vZHVsZSkKK3RyeTogCisgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJyVzJyAlIGN1cnJlbnRfbW9kdWxlKQorZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgbG9nLndyaXRlKCdNb2R1bGUgd2FzIG5vdCBmb3VuZCcpCisgICAgcGFzcworCisKKyMgR2V0IGN1cnJlbnQgbW9kdWxlIGRlcGVuZGVuY2llcywgZGlmIHdpbGwgY29udGFpbiBhIGxpc3Qgb2Ygc3BlY2lmaWMgZGVwcyBmb3IgdGhpcyBtb2R1bGUKK21vZHVsZV9kZXBzPXNldChzeXMubW9kdWxlcykKKworIyBXZSBoYW5kbGUgdGhlIGNvcmUgcGFja2FnZSAoMXN0IHBhc3Mgb24gY3JlYXRlX21hbmlmZXN0LnB5KSBhcyBhIHNwZWNpYWwgY2FzZQoraWYgY3VycmVudF9tb2R1bGUgPT0gJ3B5dGhvbi1jb3JlLXBhY2thZ2UnOgorICAgIGRpZiA9IGNvcmVfZGVwcworZWxzZToKKyAgICAjIFdlIGtub3cgdGhpcyBpcyBub3QgdGhlIGNvcmUgcGFja2FnZSwgc28gdGhlcmUgbXVzdCBiZSBhIGRpZmZlcmVuY2UuCisgICAgZGlmID0gbW9kdWxlX2RlcHMtY29yZV9kZXBzCisKKworIyBDaGVjayB3aGVyZSBlYWNoIGRlcGVuZGVuY3kgY2FtZSBmcm9tCitmb3IgaXRlbSBpbiBkaWY6CisgICAgZGVwX3BhdGg9JycKKyAgICB0cnk6CisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0NhbGxpbmc6IHN5cy5tb2R1bGVzWycgKyAnJXMnICUgaXRlbSArICddLl9fZmlsZV9fXG4nKQorICAgICAgICBkZXBfcGF0aCA9IHN5cy5tb2R1bGVzWyclcycgJSBpdGVtXS5fX2ZpbGVfXworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgorICAgICAgICAjIERlYWxzIHdpdGggdGhyZWFkIChidWlsdGluIG1vZHVsZSkgbm90IGhhdmluZyBfX2ZpbGVfXyBhdHRyaWJ1dGUKKyAgICAgICAgaWYgZGVidWc9PVRydWU6CisgICAgICAgICAgICBsb2cud3JpdGUoaXRlbSArICcgJykKKyAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpCisgICAgICAgICAgICBsb2cud3JpdGUoJ1xuJykKKyAgICAgICAgcGFzcworICAgIGV4Y2VwdCBOYW1lRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIE5hbWVFcnJvcjogbmFtZSAnZGVwX3BhdGgnIGlzIG5vdCBkZWZpbmVkCisgICAgICAgICMgYmVjYXVzZSBtb2R1bGUgaXMgbm90IGZvdW5kICh3YXNuJ3QgY29tcGlsZWQ/KSwgZS5nLiBiZGRzbQorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0rJyAnKSAKKyAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBwYXNzCisKKyAgICAjIFNpdGUtY3VzdG9taXplIGlzIGEgc3BlY2lhbCBjYXNlIHNpbmNlIHdlIChPcGVuRW1iZWRkZWQpIHB1dCBpdCB0aGVyZSBtYW51YWxseQorICAgIGlmICdzaXRlY3VzdG9taXplJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSAnJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weScKKyAgICAgICAgIyBQcmludHMgb3V0IHJlc3VsdCwgd2hpY2ggaXMgd2hhdCB3aWxsIGJlIHVzZWQgYnkgY3JlYXRlX21hbmlmZXN0CisgICAgICAgIHByaW50IChkZXBfcGF0aCkKKyAgICAgICAgY29udGludWUKKworICAgIGRlcF9wYXRoID0gZml4X3BhdGgoZGVwX3BhdGgpCisKKyAgICBpbXBvcnQgc3lzY29uZmlnCisgICAgc29hYmk9c3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTT0FCSScpCisgICAgIyBDaGVjayBpZiBpdHMgYSBzaGFyZWQgbGlicmFyeSBhbmQgZGVjb25zdHJ1Y3QgaXQKKyAgICBpZiBzb2FiaSBpbiBkZXBfcGF0aDoKKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZSgnU2hhcmVkIGxpYnJhcnkgZm91bmQgaW4gJXMnICUgZGVwX3BhdGgpCisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZShzb2FiaSwnKicpCisgICAgICAgIHByaW50IChkZXBfcGF0aCkKKyAgICAgICAgY29udGludWUKKworICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgIGxvZy53cml0ZShkZXBfcGF0aCsnXG4nKQorICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAorICAgIHByaW50IChkZXBfcGF0aCkKKworCisgICAgaW1wb3J0IGltcAorICAgIGNweXRob25fdGFnID0gaW1wLmdldF90YWcoKSAKKyAgICBjYWNoZWQ9JycKKyAgICAjIFRoZXJlcyBubyBuYWl2ZSB3YXkgdG8gZmluZCAqLnB5YyBmaWxlcyBvbiBweXRob24zCisgICAgdHJ5OgorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKCdDYWxsaW5nOiBzeXMubW9kdWxlc1snICsgJyVzJyAlIGl0ZW0gKyAnXS5fX2NhY2hlZF9fXG4nKQorICAgICAgICBjYWNoZWQgPSBzeXMubW9kdWxlc1snJXMnICUgaXRlbV0uX19jYWNoZWRfXworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgorICAgICAgICAjIERlYWxzIHdpdGggdGhyZWFkIChidWlsdGluIG1vZHVsZSkgbm90IGhhdmluZyBfX2NhY2hlZF9fIGF0dHJpYnV0ZQorICAgICAgICBpZiBkZWJ1Zz09VHJ1ZToKKyAgICAgICAgICAgIGxvZy53cml0ZShpdGVtICsgJyAnKQorICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkKKyAgICAgICAgICAgIGxvZy53cml0ZSgnXG4nKQorICAgICAgICBwYXNzCisgICAgZXhjZXB0IE5hbWVFcnJvciBhcyBlOgorICAgICAgICAjIERlYWxzIHdpdGggTmFtZUVycm9yOiBuYW1lICdjYWNoZWQnIGlzIG5vdCBkZWZpbmVkCisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoaXRlbSsnICcpIAorICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHBhc3MKKyAgICBpZiBjYWNoZWQgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoY2FjaGVkKQorICAgICAgICBjYWNoZWQgPSBmaXhfcGF0aChjYWNoZWQpCisgICAgICAgIGNhY2hlZCA9IGNhY2hlZC5yZXBsYWNlKGNweXRob25fdGFnLCcqJykKKyAgICAgICAgcHJpbnQgKGNhY2hlZCkKKworaWYgZGVidWc9PVRydWU6CisgICAgbG9nLmNsb3NlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaAppbmRleCAwOGM0NDAzLi5jYzM1ZGMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tMy4zLW11bHRpbGliLnBhdGNoCkBAIC0yNSwxMCArMjUsMTAgQEAKICBzZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKystLS0tLQogIDEyIGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRob25ydW4uaCBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKLWluZGV4IDljMmU4MTMuLjJmNzljYjYgMTAwNjQ0Ci0tLS0gYS9JbmNsdWRlL3B5dGhvbnJ1bi5oCi0rKysgYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCitJbmRleDogUHl0aG9uLTMuNS40L0luY2x1ZGUvcHl0aG9ucnVuLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKysgUHl0aG9uLTMuNS40L0luY2x1ZGUvcHl0aG9ucnVuLmgKIEBAIC0yMyw2ICsyMyw5IEBAIHR5cGVkZWYgc3RydWN0IHsKICB9IFB5Q29tcGlsZXJGbGFnczsKICAjZW5kaWYKQEAgLTM5LDEwICszOSwxMCBAQAogICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICBQeUFQSV9GVU5DKGludCkgUHlSdW5fU2ltcGxlU3RyaW5nRmxhZ3MoY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7CiAgUHlBUElfRlVOQyhpbnQpIFB5UnVuX0FueUZpbGVGbGFncyhGSUxFICosIGNvbnN0IGNoYXIgKiwgUHlDb21waWxlckZsYWdzICopOwotZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLWluZGV4IDY3ZGIwMDcuLmI0NmI0NWIgMTAwNjQ0Ci0tLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQotKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKK0luZGV4OiBQeXRob24tMy41LjQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogQEAgLTE5LDYgKzE5LDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKICBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQogIEhBU19VU0VSX1NJVEUgPSBUcnVlCkBAIC01MiwyMCArNTIsMjIgQEAKICBXSU5ET1dTX1NDSEVNRSA9IHsKICAgICAgJ3B1cmVsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAogICAgICAncGxhdGxpYic6ICckYmFzZS9MaWIvc2l0ZS1wYWNrYWdlcycsCi1AQCAtMzAsNyArMzIsNyBAQCBXSU5ET1dTX1NDSEVNRSA9IHsKK0BAIC0yOSw4ICszMSw4IEBAIFdJTkRPV1NfU0NIRU1FID0geworIAogIElOU1RBTExfU0NIRU1FUyA9IHsKICAgICAgJ3VuaXhfcHJlZml4JzogewotICAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAorLSAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAogLSAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKysgICAgICAgICdwdXJlbGliJzogJyRwbGF0YmFzZS8nK2xpYm5hbWUrJy9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKICsgICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS8nK2xpYm5hbWUrJy9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgICdoZWFkZXJzJzogJyRiYXNlL2luY2x1ZGUvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQkYWJpZmxhZ3MvJGRpc3RfbmFtZScsCiAgICAgICAgICAnc2NyaXB0cyc6ICckYmFzZS9iaW4nLAogICAgICAgICAgJ2RhdGEnICAgOiAnJGJhc2UnLAotZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQotaW5kZXggM2NhMDhjOS4uNjUyODczMCAxMDA3NTUKLS0tLSBhL0xpYi9weWRvYy5weQotKysrIGIvTGliL3B5ZG9jLnB5Ci1AQCAtMzg0LDcgKzM4NCw3IEBAIGNsYXNzIERvYzoKK0luZGV4OiBQeXRob24tMy41LjQvTGliL3B5ZG9jLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL3B5ZG9jLnB5CisrKysgUHl0aG9uLTMuNS40L0xpYi9weWRvYy5weQorQEAgLTM4OSw3ICszODksNyBAQCBjbGFzcyBEb2M6CiAgICAgIGRvY21vZHVsZSA9IGRvY2NsYXNzID0gZG9jcm91dGluZSA9IGRvY290aGVyID0gZG9jcHJvcGVydHkgPSBkb2NkYXRhID0gZmFpbAogIAogICAgICBkZWYgZ2V0ZG9jbG9jKHNlbGYsIG9iamVjdCwKQEAgLTc0LDEwICs3NiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24lZC4lZCIgJSAgc3lzLnZlcnNpb25faW5mb1s6Ml0pKToKICAgICAgICAgICIiIlJldHVybiB0aGUgbG9jYXRpb24gb2YgbW9kdWxlIGRvY3Mgb3IgTm9uZSIiIgogIAotZGlmZiAtLWdpdCBhL0xpYi9zaXRlLnB5IGIvTGliL3NpdGUucHkKLWluZGV4IDNmNzhlZjUuLjUxMTkzMWUgMTAwNjQ0Ci0tLS0gYS9MaWIvc2l0ZS5weQotKysrIGIvTGliL3NpdGUucHkKK0luZGV4OiBQeXRob24tMy41LjQvTGliL3NpdGUucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9MaWIvc2l0ZS5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvc2l0ZS5weQogQEAgLTMwMywxMiArMzAzLDEyIEBAIGRlZiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXM9Tm9uZSk6CiAgICAgICAgICBzZWVuLmFkZChwcmVmaXgpCiAgCkBAIC05MywyMCArOTUsMjEgQEAKICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAjIGZvciBmcmFtZXdvcmsgYnVpbGRzICpvbmx5KiB3ZSBhZGQgdGhlIHN0YW5kYXJkIEFwcGxlCiAgICAgICAgICAgICAgIyBsb2NhdGlvbnMuCi1kaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKLWluZGV4IDljMzRiZTAuLjNkMTE4MWEgMTAwNjQ0Ci0tLS0gYS9MaWIvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvc3lzY29uZmlnLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9zeXNjb25maWcucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9MaWIvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTMuNS40L0xpYi9zeXNjb25maWcucHkKIEBAIC0yMCwxMCArMjAsMTAgQEAgX19hbGxfXyA9IFsKICAKICBfSU5TVEFMTF9TQ0hFTUVTID0gewogICAgICAncG9zaXhfcHJlZml4JzogewogLSAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogLSAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKKy0gICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAorLSAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiArICAgICAgICAncGxhdHN0ZGxpYic6ICd7cGxhdGJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLS0gICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKKysgICAgICAgICdwdXJlbGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogKyAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAnaW5jbHVkZSc6CiAgICAgICAgICAgICAgJ3tpbnN0YWxsZWRfYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKQEAgLTExNywxMCArMTIwLDExIEBACiAgICAgICdwb3NpeF9ob21lJzogewogLSAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L2xpYi9weXRob24nLAogLSAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAorLSAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAorLSAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAogKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbicsCiArICAgICAgICAncGxhdHN0ZGxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9uJywKLSAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKLS0gICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKysgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS8nK3N5cy5saWIrJy9weXRob24nLAogKyAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbicsCiAgICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKICAgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKQEAgLTEzMSwxOCArMTM1LDE5IEBACiAgICAgICdwb3NpeF91c2VyJzogewogLSAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogLSAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKKy0gICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICsgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotLSAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAorKyAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiArICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAogICAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCi1kaWZmIC0tZ2l0IGEvTGliL3RyYWNlLnB5IGIvTGliL3RyYWNlLnB5Ci1pbmRleCBmMTA4MjY2Li43ZmQ4M2YyIDEwMDc1NQotLS0tIGEvTGliL3RyYWNlLnB5Ci0rKysgYi9MaWIvdHJhY2UucHkKK0luZGV4OiBQeXRob24tMy41LjQvTGliL3RyYWNlLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL3RyYWNlLnB5CisrKysgUHl0aG9uLTMuNS40L0xpYi90cmFjZS5weQogQEAgLTc0OSwxMCArNzQ5LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6CiAgICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKICAKQEAgLTE1NiwxMSArMTYxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCi1pbmRleCAxMDlmNDAyLi42MWE0MWUyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUucHJlLmluCi0rKysgYi9NYWtlZmlsZS5wcmUuaW4KLUBAIC0xMDYsNiArMTA2LDggQEAgUFlfQ09SRV9DRkxBR1M9CSQoUFlfQ0ZMQUdTKSAkKFBZX0NGTEFHU19OT0RJU1QpICQoUFlfQ1BQRkxBR1MpICQoQ0ZMQUdTRk9SU0hBUkUKK0luZGV4OiBQeXRob24tMy41LjQvTWFrZWZpbGUucHJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTWFrZWZpbGUucHJlLmluCisrKysgUHl0aG9uLTMuNS40L01ha2VmaWxlLnByZS5pbgorQEAgLTEwOSw2ICsxMDksOCBAQCBDRkxBR1NfQUxJQVNJTkc9QENGTEFHU19BTElBU0lOR0AKICAKICAjIE1hY2hpbmUtZGVwZW5kZW50IHN1YmRpcmVjdG9yaWVzCiAgTUFDSERFUD0JQE1BQ0hERVBACkBAIC0xNjksNyArMTc0LDcgQEAKICAKICAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKICBNVUxUSUFSQ0g9CUBNVUxUSUFSQ0hACi1AQCAtMTI1LDcgKzEyNyw3IEBAIExJQkRJUj0JCUBsaWJkaXJACitAQCAtMTI4LDcgKzEzMCw3IEBAIExJQkRJUj0JCUBsaWJkaXJACiAgTUFORElSPQkJQG1hbmRpckAKICBJTkNMVURFRElSPQlAaW5jbHVkZWRpckAKICBDT05GSU5DTFVERURJUj0JJChleGVjX3ByZWZpeCkvaW5jbHVkZQpAQCAtMTc4LDcgKzE4Myw3IEBACiAgQUJJRkxBR1M9CUBBQklGTEFHU0AKICAKICAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCi1AQCAtNzU1LDYgKzc1Nyw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMgTWFrZWZpbGUKK0BAIC03MzEsNiArNzMzLDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAogIAkJLURFWEVDX1BSRUZJWD0nIiQoZXhlY19wcmVmaXgpIicgXAogIAkJLURWRVJTSU9OPSciJChWRVJTSU9OKSInIFwKICAJCS1EVlBBVEg9JyIkKFZQQVRIKSInIFwKQEAgLTE4Niw4ICsxOTEsOCBAQAogIAkJLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jCiAgCiAgUHJvZ3JhbXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Qcm9ncmFtcy9weXRob24uYwotQEAgLTgzNSw3ICs4MzgsNyBAQCAkKE9QQ09ERV9IKTogJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSF9TQ1JJUFQpCi0gUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoR1JBTU1BUl9IKSAkKEFTVF9IKQorQEAgLTgxMyw3ICs4MTYsNyBAQCByZWdlbi1vcGNvZGU6CisgUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggJChzcmNkaXIpL0luY2x1ZGUvUHl0aG9uLWFzdC5oCiAgCiAgUHl0aG9uL2dldHBsYXRmb3JtLm86ICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwogLQkJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLURQTEFURk9STT0nIiQoTUFDSERFUCkiJyAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKQEAgLTE5NSwxMCArMjAwLDEwIEBACiAgCiAgUHl0aG9uL2ltcG9ydGRsLm86ICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwogIAkJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLUkkKERMSU5DTERJUikgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi1kaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRwYXRoLmMgYi9Nb2R1bGVzL2dldHBhdGguYwotaW5kZXggMThkZWI2MC4uYTAxYzNmOCAxMDA2NDQKLS0tLSBhL01vZHVsZXMvZ2V0cGF0aC5jCi0rKysgYi9Nb2R1bGVzL2dldHBhdGguYworSW5kZXg6IFB5dGhvbi0zLjUuNC9Nb2R1bGVzL2dldHBhdGguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCisrKysgUHl0aG9uLTMuNS40L01vZHVsZXMvZ2V0cGF0aC5jCiBAQCAtMTA1LDYgKzEwNSwxMyBAQAogICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKICAjZW5kaWYKQEAgLTIzMCwxMCArMjM1LDEwIEBACiAgCiAgICAgIGlmICghX3B5dGhvbnBhdGggfHwgIV9wcmVmaXggfHwgIV9leGVjX3ByZWZpeCB8fCAhbGliX3B5dGhvbikgewogICAgICAgICAgUHlfRmF0YWxFcnJvcigKLWRpZmYgLS1naXQgYS9QeXRob24vZ2V0cGxhdGZvcm0uYyBiL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi1pbmRleCA2ODk5MTQwLi42NmE0OWM2IDEwMDY0NAotLS0tIGEvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSsrKyBiL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCitJbmRleDogUHl0aG9uLTMuNS40L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvUHl0aG9uL2dldHBsYXRmb3JtLmMKKysrKyBQeXRob24tMy41LjQvUHl0aG9uL2dldHBsYXRmb3JtLmMKIEBAIC0xMCwzICsxMCwyMyBAQCBQeV9HZXRQbGF0Zm9ybSh2b2lkKQogIHsKICAJcmV0dXJuIFBMQVRGT1JNOwpAQCAtMjU4LDExICsyNjMsMTEgQEAKICt7CiArCXJldHVybiBMSUI7CiArfQotZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotaW5kZXggOGQ3ZTA1YS4uZDlkZWUwZiAxMDA2NDQKLS0tLSBhL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCi1AQCAtMTc5MCw2ICsxNzkwLDEwIEBAIF9QeVN5c19Jbml0KHZvaWQpCitJbmRleDogUHl0aG9uLTMuNS40L1B5dGhvbi9zeXNtb2R1bGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYworKysrIFB5dGhvbi0zLjUuNC9QeXRob24vc3lzbW9kdWxlLmMKK0BAIC0xODI3LDYgKzE4MjcsMTAgQEAgX1B5U3lzX0luaXQodm9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeV9HZXRDb3B5cmlnaHQoKSkpOwogICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwbGF0Zm9ybSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0UGxhdGZvcm0oKSkpOwpAQCAtMjczLDExICsyNzgsMTEgQEAKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygiZXhlY3V0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKCksIC0xKSk7Ci1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3MDczMjRkLi5lOGQ1OWEzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC04ODMsNiArODgzLDQxIEBAIFBMQVRESVI9cGxhdC0kTUFDSERFUAorSW5kZXg6IFB5dGhvbi0zLjUuNC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9jb25maWd1cmUuYWMKKysrKyBQeXRob24tMy41LjQvY29uZmlndXJlLmFjCitAQCAtODg1LDYgKzg4NSw0MSBAQCBQTEFURElSPXBsYXQtJE1BQ0hERVAKICBBQ19TVUJTVChQTEFURElSKQogIEFDX1NVQlNUKFBMQVRGT1JNX1RSSVBMRVQpCiAgCkBAIC0zMTksMTEgKzMyNCwxMSBAQAogIAogIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA2ZDI2ZGViLi43YjE0MjE1IDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtNDk1LDcgKzQ5NSw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKK0luZGV4OiBQeXRob24tMy41LjQvc2V0dXAucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9zZXR1cC5weQorKysrIFB5dGhvbi0zLjUuNC9zZXR1cC5weQorQEAgLTQ5NCw3ICs0OTQsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CiAgICAgICAgICAjIGRpcmVjdG9yaWVzIChpLmUuICcuJyBhbmQgJ0luY2x1ZGUnKSBtdXN0IGJlIGZpcnN0LiAgU2VlIGlzc3VlCiAgICAgICAgICAjIDEwNTIwLgogICAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKQEAgLTMzMiw3ICszMzcsNyBAQAogICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCiAgICAgICAgICAjIG9ubHkgY2hhbmdlIHRoaXMgZm9yIGNyb3NzIGJ1aWxkcyBmb3IgMy4zLCBpc3N1ZXMgb24gTWFnZWlhCiAgICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6Ci1AQCAtNTUzLDggKzU1Myw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKK0BAIC01NTIsOCArNTUyLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgIyBiZSBhc3N1bWVkIHRoYXQgbm8gYWRkaXRpb25hbCAtSSwtTCBkaXJlY3RpdmVzIGFyZSBuZWVkZWQuCiAgICAgICAgICBpZiBub3QgY3Jvc3NfY29tcGlsaW5nOgogICAgICAgICAgICAgIGxpYl9kaXJzID0gc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMgKyBbCkBAIC0zNDIsNyArMzQ3LDcgQEAKICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMgKyBbJy91c3IvaW5jbHVkZSddCiAgICAgICAgICBlbHNlOgotQEAgLTc0NiwxMSArNzQ1LDExIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKK0BAIC03NDUsMTEgKzc0NCwxMSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CiAgICAgICAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeToKICAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoY3Vyc2VzX2xpYnJhcnkpCiAgICAgICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzICsKQEAgLTM1Niw2ICszNjEsMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXJlYWRsaW5lX2V4dHJhX2xpbmtfYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1yZWFkbGluZV9saWJzKSApCiAgICAgICAgICBlbHNlOgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDkxZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KQEAgLTAsMCArMSwxMTQ5IEBACit7CisgICAgIjJ0bzMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS8ydG8zLSoiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliMnRvMyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiCisgICAgfSwKKyAgICAiYXN5bmNpbyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2lvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmN1cnJlbnQiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uY3VycmVudC9mdXR1cmVzIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibXVsdGlwcm9jZXNzaW5nIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInBpY2tsZSIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAidGhyZWFkaW5nIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBBc3luY2hyb25vdXMgSS8iCisgICAgfSwKKyAgICAiYXVkaW8iOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jaHVuay4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbmRoZHIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3VuYXUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2F2ZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY2h1bmsucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYXVkaW9vcC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL29zc2F1ZGlvZGV2Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc25kaGRyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N1bmF1LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dhdmUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXVkaW8gSGFuZGxpbmciCisgICAgfSwKKyAgICAiY29kZWNzIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18veGRybGliLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbXVsdGlieXRlY29kZWMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS94ZHJsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29kZWMiCisgICAgfSwKKyAgICAiY29tcGlsZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbXBpbGVhbGwuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlfY29tcGlsZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29tcGlsZWFsbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9weV9jb21waWxlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiYXN5bmNpbyIsCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibXVsdGlwcm9jZXNzaW5nIiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYnl0ZWNvZGUgY29tcGlsYXRpb24gc3VwcG9ydCIKKyAgICB9LAorICAgICJjb21wcmVzc2lvbiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb21wcmVzc2lvbi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9iejIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ3ppcC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9sem1hLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RhcmZpbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vemlwZmlsZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2NvbXByZXNzaW9uLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2J6Mi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nemlwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19iejIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbHptYS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3psaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9sem1hLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RhcmZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvemlwZmlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY29yZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19fZnV0dXJlX18uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2Jvb3Rsb2NhbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbGxlY3Rpb25zX2FiYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fbWFya3VwYmFzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc2l0ZWJ1aWx0aW5zLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19zeXNjb25maWdkYXRhLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL193ZWFrcmVmc2V0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FiYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hcmdwYXJzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hc3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmlzZWN0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvZGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29kZWNzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvZGVvcC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb25maWdwYXJzZXIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29udGV4dGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvcHlyZWcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY3N2LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Rpcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9lbnVtLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Z1bmN0b29scy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nZW5lcmljcGF0aC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nZXRvcHQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0dGV4dC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9oZWFwcS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW5zcGVjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pby4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9rZXl3b3JkLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2xpbmVjYWNoZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9sb2NhbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3Bjb2RlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL29wZXJhdG9yLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL29wdHBhcnNlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL29zLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BsYXRmb3JtLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Bvc2l4cGF0aC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yZXBybGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JsY29tcGxldGVyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NlbGVjdG9ycy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaWduYWwuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2l0ZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zcmVfY29tcGlsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zcmVfY29uc3RhbnRzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NyZV9wYXJzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdGF0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cmluZ3ByZXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RydWN0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N1YnByb2Nlc3MuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3ltYm9sLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N5c2NvbmZpZy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZXh0d3JhcC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90aHJlYWRpbmcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdG9rZW4uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdG9rZW5pemUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHJhY2ViYWNrLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R5cGVzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dhcm5pbmdzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dlYWtyZWYuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29sbGVjdGlvbnMvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29sbGVjdGlvbnMvX19weWNhY2hlX18vYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18vYWxpYXNlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18vbGF0aW5fMS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18vdXRmXzguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19fcHljYWNoZV9fIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19fcHljYWNoZV9fL21hY2hpbmVyeS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX19weWNhY2hlX18vdXRpbC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24qWyEtY29uZmlnXSIsCisgICAgICAgICAgICAiJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnKi5oIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fY29sbGVjdGlvbnNfYWJjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc2l0ZWJ1aWx0aW5zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2xsZWN0aW9ucyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9Vc2VyRGljdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9Vc2VyTGlzdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9Vc2VyU3RyaW5nLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fZnV0dXJlX18ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2FiY29sbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fYm9vdGxvY2FsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fY29sbGVjdGlvbnNfYWJjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19tYXJrdXBiYXNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zaXRlYnVpbHRpbnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3N5c2NvbmZpZ2RhdGEucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3dlYWtyZWZzZXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYWJjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FyZ3BhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FzdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iaXNlY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29kZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2RlY3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29kZW9wLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWdwYXJzZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29udGV4dGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvcHlyZWcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY3N2LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Rpcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL2FsaWFzZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL2xhdGluXzEucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL3V0Zl84LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VudW0ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZnVuY3Rvb2xzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2dlbmVyaWNwYXRoLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2dldG9wdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXR0ZXh0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2hlYXBxLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19ib290c3RyYXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvbWFjaGluZXJ5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi91dGlsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2luc3BlY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUva2V5d29yZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fc3RydWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vYmluYXNjaWkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy90aW1lLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18veHJlYWRsaW5lcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19iaXNlY3QuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3N2Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2hlYXBxLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX29wY29kZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19wb3NpeHN1YnByb2Nlc3MuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3RydWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYXJyYXkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9iaW5hc2NpaS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL21hdGguKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9wYXJzZXIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9yZWFkbGluZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3NlbGVjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3RpbWUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC91bmljb2RlZGF0YS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3hyZWFkbGluZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saW5lY2FjaGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbG9jYWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L25ldy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcGNvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvb3BlcmF0b3IucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvb3B0cGFyc2UucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvb3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGxhdGZvcm0ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcG9zaXhwYXRoLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JlcHJsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcmxjb21wbGV0ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2VsZWN0b3JzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NpZ25hbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaXRlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9jb21waWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9jb25zdGFudHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3JlX3BhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N0YXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3RyaW5ncHJlcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJ1Y3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3VicHJvY2Vzcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zeW1ib2wucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3lzY29uZmlnLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RleHR3cmFwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RocmVhZGluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90b2tlbi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90b2tlbml6ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90cmFjZWJhY2sucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvd2FybmluZ3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvd2Vha3JlZi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogW10sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIgorICAgIH0sCisgICAgImNyeXB0IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY3J5cHQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaGFzaGxpYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY3J5cHQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaGFzaGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3J5cHQuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9faGFzaGxpYi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zaGEyNTYuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc2hhNTEyLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY3R5cGVzIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2N0eXBlcyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3R5cGVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0Liouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQyB0eXBlcyBzdXBwb3J0IgorICAgIH0sCisgICAgImN1cnNlcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jdXJzZXMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N1cnNlcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdXJzZXNfcGFuZWwuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjdXJzZXMgc3VwcG9ydCIKKyAgICB9LAorICAgICJkYXRldGltZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19zdHJwdGltZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jYWxlbmRhci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kYXRldGltZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3N0cnB0aW1lLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NhbGVuZGFyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RhdGV0aW1lLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19kYXRldGltZS4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiCisgICAgfSwKKyAgICAiZGIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZGJtIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19kYm0uKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiCisgICAgfSwKKyAgICAiZGVidWdnZXIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9iZGIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGRiLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iZGIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGRiLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAicHByaW50IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGVidWdnZXIiCisgICAgfSwKKyAgICAiZGV2IjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLmEiLAorICAgICAgICAgICAgIiR7YmFzZV9saWJkaXJ9LyoubyIsCisgICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dGhvbiotY29uZmlnIiwKKyAgICAgICAgICAgICIke2RhdGFkaXJ9L2FjbG9jYWwiLAorICAgICAgICAgICAgIiR7ZGF0YWRpcn0vcGtnY29uZmlnIiwKKyAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vKi5hIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vKi5sYSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyoubyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L2xpYioke1NPTElCU0RFVn0iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9wa2djb25maWciLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcqL01ha2VmaWxlL19fcHljYWNoZV9fIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRldmVsb3BtZW50IHBhY2thZ2UiCisgICAgfSwKKyAgICAiZGlmZmxpYiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RpZmZsaWIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RpZmZsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiCisgICAgfSwKKyAgICAiZGlzdHV0aWxzIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Rpc3R1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIgorICAgIH0sCisgICAgImRpc3R1dGlscy1zdGF0aWNkZXYiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvX19weWNhY2hlX18vbGliKi5hIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvbGliKi5hIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiZGlzdHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiCisgICAgfSwKKyAgICAiZG9jdGVzdCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RvY3Rlc3QuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RvY3Rlc3QucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkZWJ1Z2dlciIsCisgICAgICAgICAgICAiZGlmZmxpYiIsCisgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAicHByaW50IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ1bml0dGVzdCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzIgorICAgIH0sCisgICAgImVtYWlsIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1hcGxpYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW1haWwiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1hcGxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGVtYWlsIHN1cHBvcnQiCisgICAgfSwKKyAgICAiZmNudGwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvZmNudGwuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbidzIGZjbnRsIGludGVyZmFjZSIKKyAgICB9LAorICAgICJnZGJtIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19nZGJtLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gR05VIGRhdGFiYXNlIHN1cHBvcnQiCisgICAgfSwKKyAgICAiaHRtbCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Zvcm1hdHRlci4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZm9ybWF0dGVyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2h0bWwiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAiaWRsZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiaW5kaXJ9L2lkbGUqIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2lkbGVsaWIiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCIKKyAgICB9LAorICAgICJpbWFnZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbG9yc3lzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ltZ2hkci4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29sb3JzeXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1naGRyLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGdyYXBoaWNhbCBpbWFnZSBoYW5kbGluZyIKKyAgICB9LAorICAgICJpbyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19weWlvLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2lwYWRkcmVzcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waXBlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zb2NrZXQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3NsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RlbXBmaWxlLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fcHlpby5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pcGFkZHJlc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NvY2tldC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zc2wuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90ZXJtaW9zLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc29ja2V0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NzbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZW1wZmlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIEkvTyIKKyAgICB9LAorICAgICJqc29uIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2pzb24iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2pzb24uKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBKU09OIHN1cHBvcnQiCisgICAgfSwKKyAgICAibG9nZ2luZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9sb2dnaW5nIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAic3RyaW5nb2xkIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG9nZ2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgIm1haWxib3giOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9tYWlsYm94LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9tYWlsYm94LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiCisgICAgfSwKKyAgICAibWF0aCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JhbmRvbS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3JhbmRvbS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2NtYXRoLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcmFuZG9tLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYXRoIHN1cHBvcnQiCisgICAgfSwKKyAgICAibWltZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3F1b3ByaS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy91dS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcXVvcHJpLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3V1LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIKKyAgICB9LAorICAgICJtbWFwIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL21tYXAuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtZW1vcnktbWFwcGVkIGZpbGUgc3VwcG9ydCIKKyAgICB9LAorICAgICJtb2R1bGVzIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFtdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiMnRvMyIsCisgICAgICAgICAgICAiYXN5bmNpbyIsCisgICAgICAgICAgICAiYXVkaW8iLAorICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29tcGlsZSIsCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJjdHlwZXMiLAorICAgICAgICAgICAgImN1cnNlcyIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImRiIiwKKyAgICAgICAgICAgICJkZWJ1Z2dlciIsCisgICAgICAgICAgICAiZGlmZmxpYiIsCisgICAgICAgICAgICAiZGlzdHV0aWxzIiwKKyAgICAgICAgICAgICJkb2N0ZXN0IiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImh0bWwiLAorICAgICAgICAgICAgImlkbGUiLAorICAgICAgICAgICAgImltYWdlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAianNvbiIsCisgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibWFpbGJveCIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibW1hcCIsCisgICAgICAgICAgICAibXVsdGlwcm9jZXNzaW5nIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgIm5ldHNlcnZlciIsCisgICAgICAgICAgICAibnVtYmVycyIsCisgICAgICAgICAgICAicGlja2xlIiwKKyAgICAgICAgICAgICJwa2d1dGlsIiwKKyAgICAgICAgICAgICJwbGlzdGxpYiIsCisgICAgICAgICAgICAicHByaW50IiwKKyAgICAgICAgICAgICJwcm9maWxlIiwKKyAgICAgICAgICAgICJweWRvYyIsCisgICAgICAgICAgICAicmVzb3VyY2UiLAorICAgICAgICAgICAgInJ1bnB5IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic210cGQiLAorICAgICAgICAgICAgInNxbGl0ZTMiLAorICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAic3lzbG9nIiwKKyAgICAgICAgICAgICJ0ZXJtaW5hbCIsCisgICAgICAgICAgICAidGhyZWFkaW5nIiwKKyAgICAgICAgICAgICJ0a2ludGVyIiwKKyAgICAgICAgICAgICJ0eXBpbmciLAorICAgICAgICAgICAgInVuaXR0ZXN0IiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iLAorICAgICAgICAgICAgInhtbCIsCisgICAgICAgICAgICAieG1scnBjIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJBbGwgUHl0aG9uIG1vZHVsZXMiCisgICAgfSwKKyAgICAibXVsdGlwcm9jZXNzaW5nIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19tdWx0aXByb2Nlc3NpbmcuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9tdWx0aXByb2Nlc3NpbmciCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbXVsdGlwcm9jZXNzaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAibmV0Y2xpZW50IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmFzZTY0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Z0cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9obWFjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL21pbWV0eXBlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9ubnRwbGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BvcGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwbGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RlbG5ldGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy91dWlkLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iYXNlNjQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZnRwbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2htYWMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaHR0cCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9odHRwL19fcHljYWNoZV9fIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L21pbWV0eXBlcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9ubnRwbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BvcGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbXRwbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RlbG5ldGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91cmxsaWIiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdXJsbGliL19fcHljYWNoZV9fIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3V1aWQucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImN0eXBlcyIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImVtYWlsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgY2xpZW50cyIKKyAgICB9LAorICAgICJuZXRzZXJ2ZXIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jZ2kuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc29ja2V0c2VydmVyLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jZ2kucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc29ja2V0c2VydmVyLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImh0bWwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiCisgICAgfSwKKyAgICAibnVtYmVycyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19weWRlY2ltYWwuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGVjaW1hbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mcmFjdGlvbnMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbnVtYmVycy4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3B5ZGVjaW1hbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kZWNpbWFsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ZyYWN0aW9ucy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGVjaW1hbC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L251bWJlcnMucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbnVtYmVyIEFQSXMiCisgICAgfSwKKyAgICAicGlja2xlIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbXBhdF9waWNrbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlja2xlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpY2tsZXRvb2xzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NoZWx2ZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2NvbXBhdF9waWNrbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3BpY2tsZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BpY2tsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9waWNrbGV0b29scy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGVsdmUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2VyaWFsaXNhdGlvbi9wZXJzaXN0ZW5jZSBzdXBwb3J0IgorICAgIH0sCisgICAgInBrZ3V0aWwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wa2d1dGlsLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wa2d1dGlsLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIKKyAgICB9LAorICAgICJwbGlzdGxpYiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BsaXN0bGliLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wbGlzdGxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJ4bWwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiCisgICAgfSwKKyAgICAicHByaW50IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHByaW50LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wcHJpbnQucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiCisgICAgfSwKKyAgICAicHJvZmlsZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NQcm9maWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Byb2ZpbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHN0YXRzLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jUHJvZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbHNwcm9mLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHJvZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wc3RhdHMucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAicHlkb2MiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9weWRvYy4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9weWRvYyoiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHlkb2MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHlkb2NfZGF0YSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAicGtndXRpbCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIKKyAgICB9LAorICAgICJyZXNvdXJjZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9yZXNvdXJjZS4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHJlc291cmNlIGNvbnRyb2wgaW50ZXJmYWNlIgorICAgIH0sCisgICAgInJ1bnB5IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcnVucHkuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3J1bnB5LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAicGtndXRpbCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlciBmb3IgbG9jYXRpbmcvZXhlY3V0aW5nIHNjcmlwdHMgaW4gbW9kdWxlIG5hbWVzcGFjZSIKKyAgICB9LAorICAgICJzaGVsbCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NtZC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mbm1hdGNoLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dsb2IuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2hsZXguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2h1dGlsLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jbWQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZm5tYXRjaC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nbG9iLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NobGV4LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NodXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIKKyAgICB9LAorICAgICJzbXRwZCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FzeW5jaGF0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FzeW5jb3JlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NtdHBkLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiaW5kaXJ9L3NtdHBkLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FzeW5jaGF0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FzeW5jb3JlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NtdHBkLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIKKyAgICB9LAorICAgICJzcWxpdGUzIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL19fcHljYWNoZV9fL2RiYXBpMi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL19fcHljYWNoZV9fL2R1bXAuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zcWxpdGUzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9kYmFwaTIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9kdW1wLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQiCisgICAgfSwKKyAgICAic3FsaXRlMy10ZXN0cyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL3Rlc3QiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJ0ZXN0cyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNxbGl0ZTMgZGF0YWJhc2Ugc3VwcG9ydCB0ZXN0cyIKKyAgICB9LAorICAgICJzdHJpbmdvbGQiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmcuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZy5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzdHJpbmcgQVBJcyBbZGVwcmVjYXRlZF0iCisgICAgfSwKKyAgICAic3lzbG9nIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3N5c2xvZy4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN5c2xvZyBpbnRlcmZhY2UiCisgICAgfSwKKyAgICAidGVybWluYWwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wdHkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHR5LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wdHkucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHR5LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXJtaW5hbCBjb250cm9sbGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgInRlc3RzIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Rlc3QiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVzdHMiCisgICAgfSwKKyAgICAidGhyZWFkaW5nIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2R1bW15X3RocmVhZC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fdGhyZWFkaW5nX2xvY2FsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2R1bW15X3RocmVhZGluZy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9xdWV1ZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2R1bW15X3RocmVhZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fdGhyZWFkaW5nX2xvY2FsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2R1bW15X3RocmVhZGluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9xdWV1ZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIKKyAgICB9LAorICAgICJ0a2ludGVyIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RraW50ZXIiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gVGNsL1RrIGJpbmRpbmdzIgorICAgIH0sCisgICAgInR5cGluZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R5cGluZy4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHlwaW5nLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHR5cGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgInVuaXR0ZXN0IjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3VuaXR0ZXN0IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3VuaXR0ZXN0LyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdC9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiCisgICAgfSwKKyAgICAidW5peGFkbWluIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0cGFzcy4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2V0cGFzcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9ncnAuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9uaXMuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gVW5peCBhZG1pbmlzdHJhdGlvbiBzdXBwb3J0IgorICAgIH0sCisgICAgInhtbCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9weWV4cGF0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveG1sIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIFhNTCBzdXBwb3J0IgorICAgIH0sCisgICAgInhtbHJwYyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveG1scnBjL19fcHljYWNoZV9fIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAieG1sIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gWE1MLVJQQyBzdXBwb3J0IgorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtc2V0dXAucHktbm8taG9zdC1oZWFkZXJzLWxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtc2V0dXAucHktbm8taG9zdC1oZWFkZXJzLWxpYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYzhiOGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA0MzIzOGUxYWMxM2UzMjk4NGQwMTVjOTJhNTg0MWYzZGUxZmUxZDE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTggTm92IDIwMTQgMDA6MDc6MDcgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gc2V0dXAucHk6IG5vIGhvc3QgaGVhZGVycyBsaWJzCi0KLVdoZW4gd2UgYXJlIGNyb3NzLWNvbXBpbGluZywgc2V0dXAucHkgc2hvdWxkIG5ldmVyIGxvb2sgaW4gL3Vzcgotb3IgL3Vzci9sb2NhbCB0byBmaW5kIGhlYWRlcnMgb3IgbGlicmFyaWVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0Nyb3NzIGNvbXBpbGUgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzZXR1cC5weSB8IDMgLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCBmMDIwYjI4Li5lODMzOWNkIDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtNDQ0LDEwICs0NDQsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBpZiBub3QgY3Jvc3NfY29tcGlsaW5nOgotICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgb3MucGF0aC5qb2luKCcvdXNyL2xvY2FsJywgc3lzLmxpYikpCi0gICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLCAnL3Vzci9sb2NhbC9pbmNsdWRlJykKLS0gICAgICAgICMgb25seSBjaGFuZ2UgdGhpcyBmb3IgY3Jvc3MgYnVpbGRzIGZvciAzLjMsIGlzc3VlcyBvbiBNYWdlaWEKLS0gICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKLSAgICAgICAgICAgICBzZWxmLmFkZF9nY2NfcGF0aHMoKQotLSAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKLSAgICAgICAgICAgICBzZWxmLmFkZF9tdWx0aWFyY2hfcGF0aHMoKQotIAotICAgICAgICAgIyBBZGQgcGF0aHMgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgTERGTEFHUyBhbmQKLS0tIAotMi4wLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaAppbmRleCA3NDQ5MGQ5Li5hNGY4YmQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaApAQCAtMTAsMTEgKzEwLDExIEBACiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5ODliYWY5Li4yODkwYzk2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02Nyw3ICs2Nyw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCitJbmRleDogUHl0aG9uLTMuNS40L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIFB5dGhvbi0zLjUuNC9jb25maWd1cmUuYWMKK0BAIC03Myw3ICs3Myw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKICAJZmkKICAgICAgICAgIEFDX01TR19SRVNVTFQoJGludGVycCkKQEAgLTIzLDYgKzIzLDMgQEAKICAgICAgZmkKICBlbGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbWF5YmU7IHRoZW4KICAgICAgQUNfTVNHX0VSUk9SKFtDcm9zcyBjb21waWxpbmcgcmVxdWlyZWQgLS1ob3N0PUhPU1QtVFVQTEUgYW5kIC0tYnVpbGQ9QVJDSF0pCi0tLSAKLTIuMC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcmVnZW4tYWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9yZWdlbi1hbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZiOWQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcmVnZW4tYWxsLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK3B5dGhvbjMtbmF0aXZlOiBydW4gcmVnZW4taW1wb3J0bGliIHRhcmdldCBjb3JyZWN0bHkKKworcmVnZW4taW1wb3J0bGliIGRlcGVuZHMgb24gb3RoZXIgcmVnZW4tIHRhcmdldHMsIHNvIHdlIG11c3QgYmUgc3VyZSB0bworcnVuIGl0IGFmdGVyIChtb3N0IG9mKSB0aGUgb3RoZXJzLiAgSW4gcmVhbGl0eSwgd2UgZG8gbm90IG5lZWQgdG8gcnVuIGl0CithdCBhbGwgc2luY2UgIm1ha2UiIHdpbGwgaW52b2tlIGl0LCBpZiBuZWNlc3NhcnkuICBXZSBkbyBub3Qgd2FudCB0bworcmVseSBvbiB0aGF0LCB0aG91Z2guCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKworCistLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrKyBiL01ha2VmaWxlLnByZS5pbgorQEAgLTcwOSw3ICs3MDksOCBAQCByZWdlbi1pbXBvcnRsaWI6IFByb2dyYW1zL19mcmVlemVfaW1wb3J0CisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICMgUmVnZW5lcmF0ZSBhbGwgZ2VuZXJhdGVkIGZpbGVzCisgCistcmVnZW4tYWxsOiByZWdlbi1vcGNvZGUgcmVnZW4tb3Bjb2RlLXRhcmdldHMgcmVnZW4tdHlwZXNsb3RzIHJlZ2VuLWdyYW1tYXIgcmVnZW4tYXN0IHJlZ2VuLWltcG9ydGxpYgorK3JlZ2VuLWFsbDogcmVnZW4tb3Bjb2RlIHJlZ2VuLW9wY29kZS10YXJnZXRzIHJlZ2VuLXR5cGVzbG90cyByZWdlbi1ncmFtbWFyIHJlZ2VuLWFzdAorKwkkKE1BS0UpIHJlZ2VuLWltcG9ydGxpYgorIAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFNwZWNpYWwgcnVsZXMgZm9yIG9iamVjdCBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3NldHVwLnB5LWZpbmQtbGlicmFyaWVzLWluLXN0YWdpbmctZGlycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI2YmQzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3NldHVwLnB5LWZpbmQtbGlicmFyaWVzLWluLXN0YWdpbmctZGlycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVBhdGNoIHNldHVwLnB5IHNvIHRoYXQgdGhlIGRldGVjdF9tb2R1bGVzKCkgZnVuY3Rpb24gbG9va3MgZm9yIHJlcXVpcmVkCi1saWJyYXJpZXMgYW5kIGhlYWRlcnMgaW4gU1RBR0lOR19MSUJESVIgLyBTVEFHSU5HX0lOQ0RJUi4KLQotV2l0aG91dCB0aGlzIHBhdGNoLCBzZXZlcmFsIGV4dGVuc2lvbiBtb2R1bGVzIGFyZSBub3QgYnVpbHQsIGV2ZW4gdGhvdWdoCi10aGVpciBkZXBlbmRlbmNpZXMgYXJlIHByZXNlbnQgaW4gdGhlIGNvbXBpbGVyJ3Mgc2VhcmNoIHBhdGhzLgotVGhlIHJlc3VsdCBpcyB0aGUgZm9sbG93aW5nIHdhcm5pbmcsIGFuZCB1bHRpbWF0ZWx5IGluY29tcGxldGUgcGFja2FnZXM6Ci0KLXwgVGhlIG5lY2Vzc2FyeSBiaXRzIHRvIGJ1aWxkIHRoZXNlIG9wdGlvbmFsIG1vZHVsZXMgd2VyZSBub3QgZm91bmQ6Ci18IF9iejIgICAgICAgICAgICAgICAgICBfY3Vyc2VzX3BhbmVsICAgICAgICAgX2RibQotfCBfZ2RibSAgICAgICAgICAgICAgICAgX2x6bWEgICAgICAgICAgICAgICAgIF9zcWxpdGUzCi18IG5pcyAgICAgICAgICAgICAgICAgICByZWFkbGluZSAgICAgICAgICAgICAgemxpYgotfCBUbyBmaW5kIHRoZSBuZWNlc3NhcnkgYml0cywgbG9vayBpbiBzZXR1cC5weSBpbiBkZXRlY3RfbW9kdWxlcygpIGZvciB0aGUgbW9kdWxlJ3MgbmFtZS4KLQotVXBzdHJlYW0tU3RhdHVzOiAgSW5hcHByb3ByaWF0ZSBbQ3Jvc3MgY29tcGlsZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogRG9taW5pYyBTYWNyw6kgPGRvbWluaWMuc2FjcmVAZ214LmRlPgotCi1JbmRleDogUHl0aG9uLTMuNC4zL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNC4zLm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMy40LjMvc2V0dXAucHkKLUBAIC01MjEsNiArNTIxLDggQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzWzpdCi0gICAgICAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlyc1s6XQotKyAgICAgICAgICAgIGxpYl9kaXJzLmFwcGVuZChvcy5lbnZpcm9uLmdldCgnU1RBR0lOR19MSUJESVInKSkKLSsgICAgICAgICAgICBpbmNfZGlycy5hcHBlbmQob3MuZW52aXJvbi5nZXQoJ1NUQUdJTkdfSU5DRElSJykpCi0gICAgICAgICBleHRzID0gW10KLSAgICAgICAgIG1pc3NpbmcgPSBbXQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaAppbmRleCBkZTA3NjQzLi5jODlkOWEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaApAQCAtMTcsMTIgKzE3LDEyIEBACiAgTGliL3N5c2NvbmZpZy5weSAgICAgICAgICAgfCAgICA1ICsrKystCiAgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1pbmRleCBhNTQ1YWI5Li43NDMxN2QxIDEwMDY0NAotLS0tIGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLSsrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1AQCAtNTU0LDcgKzU1NCwxMCBAQCBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKLSAgICAgICAgIF9jb25maWdfdmFyc1snZXhlY19wcmVmaXgnXSA9IEVYRUNfUFJFRklYCitJbmRleDogUHl0aG9uLTMuNS4zL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS4zLm9yaWcvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKysrKyBQeXRob24tMy41LjMvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKK0BAIC00OTgsNyArNDk4LDEwIEBAIGRlZiBnZXRfY29uZmlnX3ZhcnMoKmFyZ3MpOgorICAgICAgICAgICAgIF9jb25maWdfdmFyc1snU08nXSA9IFNPCiAgCiAgICAgICAgICAjIEFsd2F5cyBjb252ZXJ0IHNyY2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCiAtICAgICAgICBzcmNkaXIgPSBfY29uZmlnX3ZhcnMuZ2V0KCdzcmNkaXInLCBwcm9qZWN0X2Jhc2UpCkBAIC0zMywxMSArMzMsMTEgQEAKICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKICAgICAgICAgICAgICBpZiBweXRob25fYnVpbGQ6CiAgICAgICAgICAgICAgICAgICMgSWYgc3JjZGlyIGlzIGEgcmVsYXRpdmUgcGF0aCAodHlwaWNhbGx5ICcuJyBvciAnLi4nKQotZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5Ci1pbmRleCA3Mjg3ZjExLi5jYzkyOTk4IDEwMDY0NAotLS0tIGEvTGliL3N5c2NvbmZpZy5weQotKysrIGIvTGliL3N5c2NvbmZpZy5weQotQEAgLTU2Miw3ICs1NjIsMTAgQEAgZGVmIGdldF9jb25maWdfdmFycygqYXJncyk6CitJbmRleDogUHl0aG9uLTMuNS4zL0xpYi9zeXNjb25maWcucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjMub3JpZy9MaWIvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTMuNS4zL0xpYi9zeXNjb25maWcucHkKK0BAIC01NDQsNyArNTQ0LDEwIEBAIGRlZiBnZXRfY29uZmlnX3ZhcnMoKmFyZ3MpOgogICAgICAgICAgX0NPTkZJR19WQVJTWyd1c2VyYmFzZSddID0gX2dldHVzZXJiYXNlKCkKICAKICAgICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKQEAgLTQ5LDYgKzQ5LDMgQEAKICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKICAgICAgICAgICAgICBpZiBfUFlUSE9OX0JVSUxEOgogICAgICAgICAgICAgICAgICAjIElmIHNyY2RpciBpcyBhIHJlbGF0aXZlIHBhdGggKHR5cGljYWxseSAnLicgb3IgJy4uJykKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjQwZThhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAzICswLDAgQEAKLUZyb20gMDM1YmE1ZGEzZTUzZTQ1YzcxMmIzOWZlMWY2ZmI3NDNlNjk3YzAzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZpY3RvciBTdGlubmVyIDx2aWN0b3Iuc3Rpbm5lckBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDkgSmFuIDIwMTcgMTE6MTg6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gSXNzdWUgIzI5MTU3OiBQcmVmZXIgZ2V0cmFuZG9tKCkgb3ZlciBnZXRlbnRyb3B5KCkKLQotQ29weSBhbmQgdGhlbiBhZGFwdCBQeXRob24vcmFuZG9tLmMgZnJvbSBkZWZhdWx0IGJyYW5jaC4gRGlmZmVyZW5jZSBiZXR3ZWVuIDMuNQotYW5kIGRlZmF1bHQgYnJhbmNoZXM6Ci0KLSogUHl0aG9uIDMuNSBvbmx5IHVzZXMgZ2V0cmFuZG9tKCkgaW4gbm9uLWJsb2NraW5nIG1vZGU6IGZsYWdzPUdSTkRfTk9OQkxPQ0sKLSogSWYgZ2V0cmFuZG9tKCkgZmFpbHMgd2l0aCBFQUdBSU46IHB5X2dldHJhbmRvbSgpIGltbWVkaWF0ZWx5IGZhaWxzIGFuZAotICByZW1lbWJlcnMgdGhhdCBnZXRyYW5kb20oKSBkb2Vzbid0IHdvcmsuCi0qIFB5dGhvbiAzLjUgaGFzIG5vIF9QeU9TX1VSYW5kb21Ob25ibG9jaygpIGZ1bmN0aW9uOiBfUHlPU19VUmFuZG9tKCkKLSAgd29ya3MgaW4gbm9uLWJsb2NraW5nIG1vZGUgb24gUHl0aG9uIDMuNQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzAzNWJhNWRhM2U1M2U0NWM3MTJiMzlmZTFmNmZiNzQzZTY5N2MwMzJdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgotCi0tLS0KLSBQeXRob24vcmFuZG9tLmMgfCA0OTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjk0IGluc2VydGlvbnMoKyksIDIwMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwotaW5kZXggZDIwMzkzOS4uMzFmNjFkMCAxMDA2NDQKLS0tLSBhL1B5dGhvbi9yYW5kb20uYwotKysrIGIvUHl0aG9uL3JhbmRvbS5jCi1AQCAtMSw2ICsxLDkgQEAKLSAjaW5jbHVkZSAiUHl0aG9uLmgiCi0gI2lmZGVmIE1TX1dJTkRPV1MKLSAjICBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0rLyogQWxsIHNhbXBsZSBNU0ROIHdpbmNyeXB0IHByb2dyYW1zIGluY2x1ZGUgdGhlIGhlYWRlciBiZWxvdy4gSXQgaXMgYXQgbGVhc3QKLSsgKiByZXF1aXJlZCB3aXRoIE1pbiBHVy4gKi8KLSsjICBpbmNsdWRlIDx3aW5jcnlwdC5oPgotICNlbHNlCi0gIyAgaW5jbHVkZSA8ZmNudGwuaD4KLSAjICBpZmRlZiBIQVZFX1NZU19TVEFUX0gKLUBAIC0zNywxMCArNDAsOSBAQCB3aW4zMl91cmFuZG9tX2luaXQoaW50IHJhaXNlKQotICAgICByZXR1cm4gMDsKLSAKLSBlcnJvcjoKLS0gICAgaWYgKHJhaXNlKQotKyAgICBpZiAocmFpc2UpIHsKLSAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotLSAgICBlbHNlCi0tICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBXaW5kb3dzIHJhbmRvbSBBUEkgKENyeXB0b0dlbikiKTsKLSsgICAgfQotICAgICByZXR1cm4gLTE7Ci0gfQotIAotQEAgLTUzLDggKzU1LDkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotIAotICAgICBpZiAoaENyeXB0UHJvdiA9PSAwKQotICAgICB7Ci0tICAgICAgICBpZiAod2luMzJfdXJhbmRvbV9pbml0KHJhaXNlKSA9PSAtMSkKLSsgICAgICAgIGlmICh3aW4zMl91cmFuZG9tX2luaXQocmFpc2UpID09IC0xKSB7Ci0gICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIHdoaWxlIChzaXplID4gMCkKLUBAIC02MywxMSArNjYsOSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gICAgICAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKGhDcnlwdFByb3YsIChEV09SRCljaHVuaywgYnVmZmVyKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICAvKiBDcnlwdEdlblJhbmRvbSgpIGZhaWxlZCAqLwotLSAgICAgICAgICAgIGlmIChyYWlzZSkKLSsgICAgICAgICAgICBpZiAocmFpc2UpIHsKLSAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZWQgdGhlIHJhbmRvbWl6ZWQgaGFzaCAiCi0tICAgICAgICAgICAgICAgICAgICAgICAgInNlY3JldCB1c2luZyBDcnlwdG9HZW4pIik7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJ1ZmZlciArPSBjaHVuazsKLUBAIC03Niw1OCArNzcsMjMgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogSXNzdWUgIzI1MDAzOiBEb24ndCB1c2UgZ2V0ZW50cm9weSgpIG9uIFNvbGFyaXMgKGF2YWlsYWJsZSBzaW5jZQotLSAqIFNvbGFyaXMgMTEuMyksIGl0IGlzIGJsb2NraW5nIHdoZXJlYXMgb3MudXJhbmRvbSgpIHNob3VsZCBub3QgYmxvY2suICovCi0tI2VsaWYgZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpICYmICFkZWZpbmVkKHN1bikKLS0jZGVmaW5lIFBZX0dFVEVOVFJPUFkgMQotLQotLS8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBnZXRlbnRyb3B5KCkuCi0tICAgUmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuCi0tCi0tICAgSWYgZmF0YWwgaXMgbm9uemVybywgY2FsbCBQeV9GYXRhbEVycm9yKCkgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbgotLSAgIG9uIGVycm9yLiAqLwotLXN0YXRpYyBpbnQKLS1weV9nZXRlbnRyb3B5KHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmF0YWwpCi0tewotLSAgICB3aGlsZSAoc2l6ZSA+IDApIHsKLS0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlfTUlOKHNpemUsIDI1Nik7Ci0tICAgICAgICBpbnQgcmVzOwotLQotLSAgICAgICAgaWYgKCFmYXRhbCkgewotLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLS0gICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLS0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotLQotLSAgICAgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0gICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwotLSAgICAgICAgICAgIGlmIChyZXMgPCAwKQotLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRlbnRyb3B5KCkgZmFpbGVkIik7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBidWZmZXIgKz0gbGVuOwotLSAgICAgICAgc2l6ZSAtPSBsZW47Ci0tICAgIH0KLS0gICAgcmV0dXJuIDA7Ci0tfQotLQotLSNlbHNlCi0rI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KLSAKLSAjaWYgZGVmaW5lZChIQVZFX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChIQVZFX0dFVFJBTkRPTV9TWVNDQUxMKQotICNkZWZpbmUgUFlfR0VUUkFORE9NIDEKLSAKLS0vKiBDYWxsIGdldHJhbmRvbSgpCi0rLyogQ2FsbCBnZXRyYW5kb20oKSB0byBnZXQgcmFuZG9tIGJ5dGVzOgotKwotICAgIC0gUmV0dXJuIDEgb24gc3VjY2VzcwotLSAgIC0gUmV0dXJuIDAgaWYgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IKLS0gICAgIEVQRVJNKSBvciBpZiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbGVkIHdpdGggRUFHQUlOIChzeXN0ZW0gdXJhbmRvbQotLSAgICAgbm90IGluaXRpYWxpemVkIHlldCkgYW5kIHJhaXNlPTAuCi0rICAgLSBSZXR1cm4gMCBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0pLAotKyAgICAgb3IgaWYgZ2V0cmFuZG9tKEdSTkRfTk9OQkxPQ0spIGZhaWxlZCB3aXRoIEVBR0FJTiAoc3lzdGVtIHVyYW5kb20gbm90Ci0rICAgICBpbml0aWFsaXplZCB5ZXQpLgotICAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcjoKLS0gICAgIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVJTlRSIGFuZCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlZCBhbgotLSAgICAgZXhjZXB0aW9uLCBvciBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudCBlcnJvci4gKi8KLSsgICAgIGlmIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVJTlRSLCByYWlzZSBpcyBub24temVybyBhbmQgdGhlIFB5dGhvbiBzaWduYWwKLSsgICAgIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgb3IgaWYgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQKLSsgICAgIGVycm9yLgotKwotKyAgIGdldHJhbmRvbSgpIGlzIHJldHJpZWQgaWYgaXQgZmFpbGVkIHdpdGggRUlOVFI6IGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLiAqLwotIHN0YXRpYyBpbnQKLSBweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSB7Ci1AQCAtMTQyLDE2ICsxMDgsMTkgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gICAgICAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2ODM5LiBUbyBhdm9pZCB0aGlzLCB1c2UgdGhlCi0gICAgICAqIEdSTkRfTk9OQkxPQ0sgZmxhZy4gKi8KLSAgICAgY29uc3QgaW50IGZsYWdzID0gR1JORF9OT05CTE9DSzsKLSsgICAgY2hhciAqZGVzdDsKLSAgICAgbG9uZyBuOwotIAotICAgICBpZiAoIWdldHJhbmRvbV93b3JrcykgewotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLSsgICAgZGVzdCA9IGJ1ZmZlcjsKLSAgICAgd2hpbGUgKDAgPCBzaXplKSB7Ci0gI2lmZGVmIHN1bgotICAgICAgICAgLyogSXNzdWUgIzI2NzM1OiBPbiBTb2xhcmlzLCBnZXRyYW5kb20oKSBpcyBsaW1pdGVkIHRvIHJldHVybmluZyB1cAotLSAgICAgICAgICAgdG8gMTAyNCBieXRlcyAqLwotKyAgICAgICAgICAgdG8gMTAyNCBieXRlcy4gQ2FsbCBpdCBtdWx0aXBsZSB0aW1lcyBpZiBtb3JlIGJ5dGVzIGFyZQotKyAgICAgICAgICAgcmVxdWVzdGVkLiAqLwotICAgICAgICAgbiA9IFB5X01JTihzaXplLCAxMDI0KTsKLSAjZWxzZQotICAgICAgICAgbiA9IFB5X01JTihzaXplLCBMT05HX01BWCk7Ci1AQCAtMTYxLDM0ICsxMzAsMzUgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gI2lmZGVmIEhBVkVfR0VUUkFORE9NCi0gICAgICAgICBpZiAocmFpc2UpIHsKLSAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0tICAgICAgICAgICAgbiA9IGdldHJhbmRvbShidWZmZXIsIG4sIGZsYWdzKTsKLSsgICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGRlc3QsIG4sIGZsYWdzKTsKLSAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgfQotICAgICAgICAgZWxzZSB7Ci0tICAgICAgICAgICAgbiA9IGdldHJhbmRvbShidWZmZXIsIG4sIGZsYWdzKTsKLSsgICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGRlc3QsIG4sIGZsYWdzKTsKLSAgICAgICAgIH0KLSAjZWxzZQotICAgICAgICAgLyogT24gTGludXgsIHVzZSB0aGUgc3lzY2FsbCgpIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIEdOVSBsaWJjIGRvZXNuJ3QKLS0gICAgICAgICAqIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKLS0gICAgICAgICAqIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE3MjUyICovCi0rICAgICAgICAgICBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0rICAgICAgICAgICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLwotICAgICAgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOwotKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKLSAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgfQotICAgICAgICAgZWxzZSB7Ci0tICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgYnVmZmVyLCBuLCBmbGFncyk7Ci0rICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgZGVzdCwgbiwgZmxhZ3MpOwotICAgICAgICAgfQotICNlbmRpZgotIAotICAgICAgICAgaWYgKG4gPCAwKSB7Ci0tICAgICAgICAgICAgLyogRU5PU1lTOiBnZXRyYW5kb20oKSBzeXNjYWxsIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCAoYnV0Ci0tICAgICAgICAgICAgICogbWF5YmUgc3VwcG9ydGVkIGJ5IHRoZSBob3N0IHdoaWNoIGJ1aWx0IFB5dGhvbikuIEVQRVJNOgotLSAgICAgICAgICAgICAqIGdldHJhbmRvbSgpIHN5c2NhbGwgYmxvY2tlZCBieSBTRUNDT01QIG9yIHNvbWV0aGluZyBlbHNlLiAqLwotKyAgICAgICAgICAgIC8qIEVOT1NZUzogdGhlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUga2VybmVsLgotKyAgICAgICAgICAgICAgIEVQRVJNOiB0aGUgc3lzY2FsbCBpcyBibG9ja2VkIGJ5IGEgc2VjdXJpdHkgcG9saWN5IChleDogU0VDQ09NUCkKLSsgICAgICAgICAgICAgICBvciBzb21ldGhpbmcgZWxzZS4gKi8KLSAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTIHx8IGVycm5vID09IEVQRVJNKSB7Ci0gICAgICAgICAgICAgICAgIGdldHJhbmRvbV93b3JrcyA9IDA7Ci0gICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgIH0KLSsKLSAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7Ci0gICAgICAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpYXplZCB5ZXQuIEluIHRoaXMgY2FzZSwgZmFsbCBiYWNrIG9uCi1AQCAtMjAyLDE2OSArMTcyLDIyNSBAQCBweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0tICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyYWlzZSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldHJhbmRvbSgpIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIik7Ci0rICAgICAgICAgICAgICAgIGlmIChyYWlzZSkgewotKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgICB9Ci0gCi0tICAgICAgICAgICAgICAgIC8qIHJldHJ5IGdldHJhbmRvbSgpICovCi0rICAgICAgICAgICAgICAgIC8qIHJldHJ5IGdldHJhbmRvbSgpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLwotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgZWxzZSB7Ci0tICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldHJhbmRvbSgpIGZhaWxlZCIpOwotLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICBidWZmZXIgKz0gbjsKLSsgICAgICAgIGRlc3QgKz0gbjsKLSAgICAgICAgIHNpemUgLT0gbjsKLSAgICAgfQotICAgICByZXR1cm4gMTsKLSB9Ci0tI2VuZGlmCi0gCi0tc3RhdGljIHN0cnVjdCB7Ci0tICAgIGludCBmZDsKLS0gICAgZGV2X3Qgc3RfZGV2OwotLSAgICBpbm9fdCBzdF9pbm87Ci0tfSB1cmFuZG9tX2NhY2hlID0geyAtMSB9OwotKyNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKQotKyNkZWZpbmUgUFlfR0VURU5UUk9QWSAxCi0gCi0rLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKToKLSAKLS0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQotLSAgIC9kZXYvdXJhbmRvbSBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlLgotKyAgIC0gUmV0dXJuIDEgb24gc3VjY2VzcwotKyAgIC0gUmV0dXJuIDAgaWYgZ2V0ZW50cm9weSgpIHN5c2NhbGwgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yCi0rICAgICBFUEVSTSkuCi0rICAgLSBSYWlzZSBhbiBleGNlcHRpb24gKGlmIHJhaXNlIGlzIG5vbi16ZXJvKSBhbmQgcmV0dXJuIC0xIG9uIGVycm9yOgotKyAgICAgaWYgZ2V0ZW50cm9weSgpIGZhaWxlZCB3aXRoIEVJTlRSLCByYWlzZSBpcyBub24temVybyBhbmQgdGhlIFB5dGhvbiBzaWduYWwKLSsgICAgIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgb3IgaWYgZ2V0ZW50cm9weSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50Ci0rICAgICBlcnJvci4KLSAKLS0gICBDYWxsIFB5X0ZhdGFsRXJyb3IoKSBvbiBlcnJvci4gKi8KLS1zdGF0aWMgdm9pZAotLWRldl91cmFuZG9tX25vcmFpc2UodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0rICAgZ2V0ZW50cm9weSgpIGlzIHJldHJpZWQgaWYgaXQgZmFpbGVkIHdpdGggRUlOVFI6IGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLiAqLwotK3N0YXRpYyBpbnQKLStweV9nZXRlbnRyb3B5KGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gewotLSAgICBpbnQgZmQ7Ci0tICAgIFB5X3NzaXplX3QgbjsKLSsgICAgLyogSXMgZ2V0ZW50cm9weSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/IFNldCB0byAwIGlmCi0rICAgICAgIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uICovCi0rICAgIHN0YXRpYyBpbnQgZ2V0ZW50cm9weV93b3JrcyA9IDE7Ci0gCi0tICAgIGFzc2VydCAoMCA8IHNpemUpOwotLQotLSNpZmRlZiBQWV9HRVRSQU5ET00KLS0gICAgaWYgKHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDApID09IDEpIHsKLS0gICAgICAgIHJldHVybjsKLSsgICAgaWYgKCFnZXRlbnRyb3B5X3dvcmtzKSB7Ci0rICAgICAgICByZXR1cm4gMDsKLSAgICAgfQotLSAgICAvKiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0sCi0tICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwotLSNlbmRpZgotIAotLSAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLS0gICAgaWYgKGZkIDwgMCkgewotLSAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIG9wZW4gL2Rldi91cmFuZG9tIik7Ci0tICAgIH0KLSsgICAgd2hpbGUgKHNpemUgPiAwKSB7Ci0rICAgICAgICAvKiBnZXRlbnRyb3B5KCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAgdG8gMjU2IGJ5dGVzLiBDYWxsIGl0Ci0rICAgICAgICAgICBtdWx0aXBsZSB0aW1lcyBpZiBtb3JlIGJ5dGVzIGFyZSByZXF1ZXN0ZWQuICovCi0rICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X01JTihzaXplLCAyNTYpOwotKyAgICAgICAgaW50IHJlczsKLSAKLS0gICAgd2hpbGUgKDAgPCBzaXplKQotLSAgICB7Ci0tICAgICAgICBkbyB7Ci0tICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLS0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLSsgICAgICAgIGlmIChyYWlzZSkgewotKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSsgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLSsgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotKyAgICAgICAgfQotKyAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7Ci0rICAgICAgICB9Ci0gCi0tICAgICAgICBpZiAobiA8PSAwKSB7Ci0tICAgICAgICAgICAgLyogcmVhZCgpIGZhaWxlZCBvciByZXR1cm5lZCAwIGJ5dGVzICovCi0tICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJlYWQgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iKTsKLS0gICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICAgICAgLyogRU5PU1lTOiB0aGUgc3lzY2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4KLSsgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCi0rICAgICAgICAgICAgICAgb3Igc29tZXRoaW5nIGVsc2UuICovCi0rICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFUEVSTSkgewotKyAgICAgICAgICAgICAgICBnZXRlbnRyb3B5X3dvcmtzID0gMDsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotKyAgICAgICAgICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRlbnRyb3B5KCkgaWYgaXQgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCi0rICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0tICAgICAgICBidWZmZXIgKz0gbjsKLS0gICAgICAgIHNpemUgLT0gbjsKLSsKLSsgICAgICAgIGJ1ZmZlciArPSBsZW47Ci0rICAgICAgICBzaXplIC09IGxlbjsKLSAgICAgfQotLSAgICBjbG9zZShmZCk7Ci0rICAgIHJldHVybiAxOwotIH0KLSsjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpICYmICFkZWZpbmVkKHN1bikgKi8KLSAKLS0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQotLSAgIC9kZXYvdXJhbmRvbSBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlLgotIAotLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwotK3N0YXRpYyBzdHJ1Y3QgewotKyAgICBpbnQgZmQ7Ci0rICAgIGRldl90IHN0X2RldjsKLSsgICAgaW5vX3Qgc3RfaW5vOwotK30gdXJhbmRvbV9jYWNoZSA9IHsgLTEgfTsKLSsKLSsvKiBSZWFkIHJhbmRvbSBieXRlcyBmcm9tIHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlOgotKwotKyAgIC0gUmV0dXJuIDAgb24gc3VjY2VzcwotKyAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcgotKwotKyAgIFBvc3NpYmxlIGNhdXNlcyBvZiBlcnJvcnM6Ci0rCi0rICAgLSBvcGVuKCkgZmFpbGVkIHdpdGggRU5PRU5ULCBFTlhJTywgRU5PREVWLCBFQUNDRVM6IHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlCi0rICAgICB3YXMgbm90IGZvdW5kLiBGb3IgZXhhbXBsZSwgaXQgd2FzIHJlbW92ZWQgbWFudWFsbHkgb3Igbm90IGV4cG9zZWQgaW4gYQotKyAgICAgY2hyb290IG9yIGNvbnRhaW5lci4KLSsgICAtIG9wZW4oKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudCBlcnJvcgotKyAgIC0gZnN0YXQoKSBmYWlsZWQKLSsgICAtIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMAotKwotKyAgIHJlYWQoKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KLSsKLSsgICBUaGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBkZXZpY2UgaXMga2VwdCBvcGVuIGJldHdlZW4gY2FsbHMgdG8gYXZvaWQgdXNpbmcKLSsgICBtYW55IGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBydW4gaW4gcGFyYWxsZWwgZnJvbSBtdWx0aXBsZSB0aHJlYWRzOgotKyAgIHNlZSB0aGUgaXNzdWUgIzE4NzU2LgotKwotKyAgIHN0X2RldiBhbmQgc3RfaW5vIGZpZWxkcyBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yIChmcm9tIGZzdGF0KCkpIGFyZSBjYWNoZWQgdG8KLSsgICBjaGVjayBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyByZXBsYWNlZCBieSBhIGRpZmZlcmVudCBmaWxlICh3aGljaCBpcwotKyAgIGxpa2VseSBhIGJ1ZyBpbiB0aGUgYXBwbGljYXRpb24pOiBzZWUgdGhlIGlzc3VlICMyMTIwNy4KLSsKLSsgICBJZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyBjbG9zZWQgb3IgcmVwbGFjZWQsIG9wZW4gYSBuZXcgZmlsZSBkZXNjcmlwdG9yCi0rICAgYnV0IGRvbid0IGNsb3NlIHRoZSBvbGQgZmlsZSBkZXNjcmlwdG9yOiBpdCBwcm9iYWJseSBwb2ludHMgdG8gc29tZXRoaW5nCi0rICAgaW1wb3J0YW50IGZvciBzb21lIHRoaXJkLXBhcnR5IGNvZGUuICovCi0gc3RhdGljIGludAotLWRldl91cmFuZG9tX3B5dGhvbihjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKLStkZXZfdXJhbmRvbShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotIHsKLSAgICAgaW50IGZkOwotICAgICBQeV9zc2l6ZV90IG47Ci0tICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7Ci0tI2lmZGVmIFBZX0dFVFJBTkRPTQotLSAgICBpbnQgcmVzOwotLSNlbmRpZgotLQotLSAgICBpZiAoc2l6ZSA8PSAwKQotLSAgICAgICAgcmV0dXJuIDA7Ci0gCi0tI2lmZGVmIFBZX0dFVFJBTkRPTQotLSAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKLS0gICAgaWYgKHJlcyA8IDApIHsKLS0gICAgICAgIHJldHVybiAtMTsKLS0gICAgfQotLSAgICBpZiAocmVzID09IDEpIHsKLS0gICAgICAgIHJldHVybiAwOwotLSAgICB9Ci0tICAgIC8qIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTSwKLS0gICAgICAgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCi0tI2VuZGlmCi0rICAgIGlmIChyYWlzZSkgewotKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdDsKLSAKLS0gICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgewotLSAgICAgICAgLyogRG9lcyB0aGUgZmQgcG9pbnQgdG8gdGhlIHNhbWUgdGhpbmcgYXMgYmVmb3JlPyAoaXNzdWUgIzIxMjA3KSAqLwotLSAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKLS0gICAgICAgICAgICB8fCBzdC5zdF9kZXYgIT0gdXJhbmRvbV9jYWNoZS5zdF9kZXYKLS0gICAgICAgICAgICB8fCBzdC5zdF9pbm8gIT0gdXJhbmRvbV9jYWNoZS5zdF9pbm8pIHsKLS0gICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKLS0gICAgICAgICAgICAgICBzaW5jZSBpdCBwcm9iYWJseSBwb2ludHMgdG8gc29tZXRoaW5nIGltcG9ydGFudCBmb3Igc29tZQotLSAgICAgICAgICAgICAgIHRoaXJkLXBhcnR5IGNvZGUpLiAqLwotLSAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKLS0gICAgICAgIH0KLS0gICAgfQotLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQotLSAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwotLSAgICBlbHNlIHsKLS0gICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLS0gICAgICAgIGlmIChmZCA8IDApIHsKLS0gICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOWElPIHx8Ci0tICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCi0tICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvdXJhbmRvbSAob3IgZXF1aXZhbGVudCkgbm90IGZvdW5kIik7Ci0tICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLwotLSAgICAgICAgICAgIHJldHVybiAtMTsKLS0gICAgICAgIH0KLSAgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLS0gICAgICAgICAgICAvKiB1cmFuZG9tX2ZkIHdhcyBpbml0aWFsaXplZCBieSBhbm90aGVyIHRocmVhZCB3aGlsZSB3ZSB3ZXJlCi0tICAgICAgICAgICAgICAgbm90IGhvbGRpbmcgdGhlIEdJTCwga2VlcCBpdC4gKi8KLS0gICAgICAgICAgICBjbG9zZShmZCk7Ci0tICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwotKyAgICAgICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLSsgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQotKyAgICAgICAgICAgICAgICB8fCBzdC5zdF9kZXYgIT0gdXJhbmRvbV9jYWNoZS5zdF9kZXYKLSsgICAgICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7Ci0rICAgICAgICAgICAgICAgIC8qIFNvbWV0aGluZyBjaGFuZ2VkOiBmb3JnZXQgdGhlIGNhY2hlZCBmZCAoYnV0IGRvbid0IGNsb3NlIGl0LAotKyAgICAgICAgICAgICAgICAgICBzaW5jZSBpdCBwcm9iYWJseSBwb2ludHMgdG8gc29tZXRoaW5nIGltcG9ydGFudCBmb3Igc29tZQotKyAgICAgICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KLSsgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSsgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCi0rICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwotICAgICAgICAgZWxzZSB7Ci0tICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgewotLSAgICAgICAgICAgICAgICBjbG9zZShmZCk7Ci0rICAgICAgICAgICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOwotKyAgICAgICAgICAgIGlmIChmZCA8IDApIHsKLSsgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAotKyAgICAgICAgICAgICAgICAgICAgZXJybm8gPT0gRU5PREVWIHx8IGVycm5vID09IEVBQ0NFUykgewotKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvdXJhbmRvbSAob3IgZXF1aXZhbGVudCkgbm90IGZvdW5kIik7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLwotICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLSsgICAgICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQotKyAgICAgICAgICAgICAgICAgICBub3QgaG9sZGluZyB0aGUgR0lMLCBrZWVwIGl0LiAqLwotKyAgICAgICAgICAgICAgICBjbG9zZShmZCk7Ci0rICAgICAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSBmZDsKLS0gICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9kZXYgPSBzdC5zdF9kZXY7Ci0tICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfaW5vID0gc3Quc3RfaW5vOwotKyAgICAgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3QpKSB7Ci0rICAgICAgICAgICAgICAgICAgICBjbG9zZShmZCk7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7Ci0rICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2RldiA9IHN0LnN0X2RldjsKLSsgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfaW5vID0gc3Quc3RfaW5vOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotLSAgICB9Ci0gCi0tICAgIGRvIHsKLS0gICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotLSAgICAgICAgaWYgKG4gPT0gLTEpIHsKLS0gICAgICAgICAgICByZXR1cm4gLTE7Ci0tICAgICAgICB9Ci0tICAgICAgICBpZiAobiA9PSAwKSB7Ci0tICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLS0gICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAotLSAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0rICAgICAgICBkbyB7Ci0rICAgICAgICAgICAgbiA9IF9QeV9yZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0rICAgICAgICAgICAgaWYgKG4gPT0gLTEpCi0rICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgICAgICBpZiAobiA9PSAwKSB7Ci0rICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgYnVmZmVyICs9IG47Ci0rICAgICAgICAgICAgc2l6ZSAtPSBuOwotKyAgICAgICAgfSB3aGlsZSAoMCA8IHNpemUpOwotKyAgICB9Ci0rICAgIGVsc2UgewotKyAgICAgICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0rICAgICAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotIAotLSAgICAgICAgYnVmZmVyICs9IG47Ci0tICAgICAgICBzaXplIC09IG47Ci0tICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKLSsgICAgICAgIHdoaWxlICgwIDwgc2l6ZSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBkbyB7Ci0rICAgICAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0rICAgICAgICAgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOwotIAotKyAgICAgICAgICAgIGlmIChuIDw9IDApIHsKLSsgICAgICAgICAgICAgICAgLyogc3RvcCBvbiBlcnJvciBvciBpZiByZWFkKHNpemUpIHJldHVybmVkIDAgKi8KLSsgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOwotKyAgICAgICAgICAgIHNpemUgLT0gbjsKLSsgICAgICAgIH0KLSsgICAgICAgIGNsb3NlKGZkKTsKLSsgICAgfQotICAgICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMzc2LDggKzQwMiw4IEBAIGRldl91cmFuZG9tX2Nsb3NlKHZvaWQpCi0gICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7Ci0gICAgIH0KLSB9Ci0rI2VuZGlmIC8qICFNU19XSU5ET1dTICovCi0gCi0tI2VuZGlmCi0gCi0gLyogRmlsbCBidWZmZXIgd2l0aCBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBhIGxpbmVhciBjb25ncnVlbnQKLSAgICBnZW5lcmF0b3IgKExDRyk6Ci1AQCAtNDAwLDMxICs0MjYsMTAwIEBAIGxjZ191cmFuZG9tKHVuc2lnbmVkIGludCB4MCwgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKLSAgICAgfQotIH0KLSAKLS0vKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQotLSAgIG51bWJlciBnZW5lcmF0b3IgKFJORykuIEl0IGlzIHN1aXRhYmxlIGZvciBtb3N0IGNyeXB0b2dyYXBoaWMgcHVycG9zZXMKLS0gICBleGNlcHQgbG9uZyBsaXZpbmcgcHJpdmF0ZSBrZXlzIGZvciBhc3ltbWV0cmljIGVuY3J5cHRpb24uCi0rLyogUmVhZCByYW5kb20gYnl0ZXM6Ci0gCi0tICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCi0taW50Ci0tX1B5T1NfVVJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKLSsgICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MKLSsgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3IKLSsKLSsgICBVc2VkIHNvdXJjZXMgb2YgZW50cm9weSBvcmRlcmVkIGJ5IHByZWZlcmVuY2UsIHByZWZlcnJlZCBzb3VyY2UgZmlyc3Q6Ci0rCi0rICAgLSBDcnlwdEdlblJhbmRvbSgpIG9uIFdpbmRvd3MKLSsgICAtIGdldHJhbmRvbSgpIGZ1bmN0aW9uIChleDogTGludXggYW5kIFNvbGFyaXMpOiBjYWxsIHB5X2dldHJhbmRvbSgpCi0rICAgLSBnZXRlbnRyb3B5KCkgZnVuY3Rpb24gKGV4OiBPcGVuQlNEKTogY2FsbCBweV9nZXRlbnRyb3B5KCkKLSsgICAtIC9kZXYvdXJhbmRvbSBkZXZpY2UKLSsKLSsgICBSZWFkIGZyb20gdGhlIC9kZXYvdXJhbmRvbSBkZXZpY2UgaWYgZ2V0cmFuZG9tKCkgb3IgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uCi0rICAgaXMgbm90IGF2YWlsYWJsZSBvciBkb2VzIG5vdCB3b3JrLgotKwotKyAgIFByZWZlciBnZXRyYW5kb20oKSBvdmVyIGdldGVudHJvcHkoKSBiZWNhdXNlIGdldHJhbmRvbSgpIHN1cHBvcnRzIGJsb2NraW5nCi0rICAgYW5kIG5vbi1ibG9ja2luZyBtb2RlIGFuZCBQeXRob24gcmVxdWlyZXMgbm9uLWJsb2NraW5nIFJORyBhdCBzdGFydHVwIHRvCi0rICAgaW5pdGlhbGl6ZSBpdHMgaGFzaCBzZWNyZXQ6IHNlZSB0aGUgUEVQIDUyNC4KLSsKLSsgICBQcmVmZXIgZ2V0cmFuZG9tKCkgYW5kIGdldGVudHJvcHkoKSBvdmVyIHJlYWRpbmcgZGlyZWN0bHkgL2Rldi91cmFuZG9tCi0rICAgYmVjYXVzZSB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QgbmVlZCBmaWxlIGRlc2NyaXB0b3JzIGFuZCBzbyBhdm9pZCBFTkZJTEUgb3IKLSsgICBFTUZJTEUgZXJyb3JzICh0b28gbWFueSBvcGVuIGZpbGVzKTogc2VlIHRoZSBpc3N1ZSAjMTg3NTYuCi0rCi0rICAgT25seSB1c2UgUk5HIHJ1bm5pbmcgaW4gdGhlIGtlcm5lbC4gVGhleSBhcmUgbW9yZSBzZWN1cmUgYmVjYXVzZSBpdCBpcwotKyAgIGhhcmRlciB0byBnZXQgdGhlIGludGVybmFsIHN0YXRlIG9mIGEgUk5HIHJ1bm5pbmcgaW4gdGhlIGtlcm5lbCBsYW5kIHRoYW4gYQotKyAgIFJORyBydW5uaW5nIGluIHRoZSB1c2VyIGxhbmQuIFRoZSBrZXJuZWwgaGFzIGEgZGlyZWN0IGFjY2VzcyB0byB0aGUgaGFyZHdhcmUKLSsgICBhbmQgaGFzIGFjY2VzcyB0byBoYXJkd2FyZSBSTkcsIHRoZXkgYXJlIHVzZWQgYXMgZW50cm9weSBzb3VyY2VzLgotKwotKyAgIE5vdGU6IHRoZSBPcGVuU1NMIFJBTkRfcHNldWRvX2J5dGVzKCkgZnVuY3Rpb24gZG9lcyBub3QgYXV0b21hdGljYWxseSByZXNlZWQKLSsgICBpdHMgUk5HIG9uIGZvcmsoKSwgdHdvIGNoaWxkIHByb2Nlc3NlcyAod2l0aCB0aGUgc2FtZSBwaWQpIGdlbmVyYXRlIHRoZSBzYW1lCi0rICAgcmFuZG9tIG51bWJlcnM6IHNlZSBpc3N1ZSAjMTg3NDcuIEtlcm5lbCBSTkdzIGRvbid0IGhhdmUgdGhpcyBpc3N1ZSwKLSsgICB0aGV5IGhhdmUgYWNjZXNzIHRvIGdvb2QgcXVhbGl0eSBlbnRyb3B5IHNvdXJjZXMuCi0rCi0rICAgSWYgcmFpc2UgaXMgemVybzoKLSsKLSsgICAtIERvbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvcgotKyAgIC0gRG9uJ3QgY2FsbCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIChkb24ndCBjYWxsIFB5RXJyX0NoZWNrU2lnbmFscygpKSBpZgotKyAgICAgYSBmdW5jdGlvbiBmYWlscyB3aXRoIEVJTlRSOiByZXRyeSBkaXJlY3RseSB0aGUgaW50ZXJydXB0ZWQgZnVuY3Rpb24KLSsgICAtIERvbid0IHJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIGZ1bmN0aW9ucy4KLSsqLwotK3N0YXRpYyBpbnQKLStweXVyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSB7Ci0rI2lmIGRlZmluZWQoUFlfR0VUUkFORE9NKSB8fCBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0rICAgIGludCByZXM7Ci0rI2VuZGlmCi0rCi0gICAgIGlmIChzaXplIDwgMCkgewotLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0tICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0rICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0rICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLS0gICAgaWYgKHNpemUgPT0gMCkKLSsKLSsgICAgaWYgKHNpemUgPT0gMCkgewotICAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSAKLSAjaWZkZWYgTVNfV0lORE9XUwotLSAgICByZXR1cm4gd2luMzJfdXJhbmRvbSgodW5zaWduZWQgY2hhciAqKWJ1ZmZlciwgc2l6ZSwgMSk7Ci0tI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotLSAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIDApOwotKyAgICByZXR1cm4gd2luMzJfdXJhbmRvbSgodW5zaWduZWQgY2hhciAqKWJ1ZmZlciwgc2l6ZSwgcmFpc2UpOwotKyNlbHNlCi0rCi0rI2lmIGRlZmluZWQoUFlfR0VUUkFORE9NKSB8fCBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0rI2lmZGVmIFBZX0dFVFJBTkRPTQotKyAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCByYWlzZSk7Ci0gI2Vsc2UKLS0gICAgcmV0dXJuIGRldl91cmFuZG9tX3B5dGhvbigoY2hhciopYnVmZmVyLCBzaXplKTsKLSsgICAgcmVzID0gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIHJhaXNlKTsKLSsjZW5kaWYKLSsgICAgaWYgKHJlcyA8IDApIHsKLSsgICAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKyAgICBpZiAocmVzID09IDEpIHsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIC8qIGdldHJhbmRvbSgpIG9yIGdldGVudHJvcHkoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlOiBmYWlsZWQgd2l0aAotKyAgICAgICBFTk9TWVMsIEVQRVJNIG9yIEVBR0FJTi4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbSAvZGV2L3VyYW5kb20uICovCi0rI2VuZGlmCi0rCi0rICAgIHJldHVybiBkZXZfdXJhbmRvbShidWZmZXIsIHNpemUsIHJhaXNlKTsKLSAjZW5kaWYKLSB9Ci0gCi0rLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSByYW5kb20KLSsgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCi0rICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgotKwotKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwotK2ludAotK19QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0rewotKyAgICByZXR1cm4gcHl1cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSk7Ci0rfQotKwotIHZvaWQKLSBfUHlSYW5kb21fSW5pdCh2b2lkKQotIHsKLUBAIC00NjMsMTMgKzU1OCwxNCBAQCBfUHlSYW5kb21fSW5pdCh2b2lkKQotICAgICAgICAgfQotICAgICB9Ci0gICAgIGVsc2UgewotLSNpZmRlZiBNU19XSU5ET1dTCi0tICAgICAgICAodm9pZCl3aW4zMl91cmFuZG9tKHNlY3JldCwgc2VjcmV0X3NpemUsIDApOwotLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLS0gICAgICAgICh2b2lkKXB5X2dldGVudHJvcHkoc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMSk7Ci0tI2Vsc2UKLS0gICAgICAgIGRldl91cmFuZG9tX25vcmFpc2Uoc2VjcmV0LCBzZWNyZXRfc2l6ZSk7Ci0tI2VuZGlmCi0rICAgICAgICBpbnQgcmVzOwotKwotKyAgICAgICAgLyogX1B5UmFuZG9tX0luaXQoKSBpcyBjYWxsZWQgdmVyeSBlYXJseSBpbiB0aGUgUHl0aG9uIGluaXRpYWxpemF0aW9uCi0rICAgICAgICAgICBhbmQgc28gZXhjZXB0aW9ucyBjYW5ub3QgYmUgdXNlZCAodXNlIHJhaXNlPTApLiAqLwotKyAgICAgICAgcmVzID0gcHl1cmFuZG9tKHNlY3JldCwgc2VjcmV0X3NpemUsIDApOwotKyAgICAgICAgaWYgKHJlcyA8IDApIHsKLSsgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsZWQgdG8gZ2V0IHJhbmRvbSBudW1iZXJzIHRvIGluaXRpYWxpemUgUHl0aG9uIik7Ci0rICAgICAgICB9Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNDgxLDggKzU3Nyw2IEBAIF9QeVJhbmRvbV9GaW5pKHZvaWQpCi0gICAgICAgICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDcnlwdFByb3YsIDApOwotICAgICAgICAgaENyeXB0UHJvdiA9IDA7Ci0gICAgIH0KLS0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0tICAgIC8qIG5vdGhpbmcgdG8gY2xlYW4gKi8KLSAjZWxzZQotICAgICBkZXZfdXJhbmRvbV9jbG9zZSgpOwotICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzZGYxMmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSBsaWJmZmkgYnppcDIgZGIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHoiCi1QUiA9ICIke0lOQ19QUn0uMCIKLVBZVEhPTl9NQUpNSU4gPSAiMy41IgotUFlUSE9OX0JJTkFCST0gIiR7UFlUSE9OX01BSk1JTn1tIgotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi1maWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi1maWxlOi8vMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAotZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAotZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCi1maWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCi1maWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKLWZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCi1maWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKLWZpbGU6Ly90d2Vhay1NVUxUSUFSQ0gtZm9yLXBvd2VycGMtbGludXgtZ251c3BlLnBhdGNoIFwKLWZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggXAotJHtESVNUUk9fU1JDX1VSSX0gXAotIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uY3Vyc2Vzdy1pbmNsdWRlLXBhdGgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1zZXR1cC5weS1uby1ob3N0LWhlYWRlcnMtbGlicy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NldHVwLnB5LWZpbmQtbGlicmFyaWVzLWluLXN0YWdpbmctZGlycy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmFjLWZpeC1MSUJQTC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlzc3VlLTIxMjcyLVVzZS1fc3lzY29uZmlnZGF0YS5weS10by1pbml0aWFsaXplLWRpc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTdkMWY4YmZiYWJmNGYyNTAwMjczZmIwNzA2ZTZmMjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWVmZTJhZDY1NzU4NTU0MjNhYjYzMGY1YjUxYThlZjZlNTU1NmY3NzQ1ODRjMDZiZWFiNDkyNmY5MzBkZGJiMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjY4MGVkOTlhYTYwZDM1MGM2NWE2NTkxNDQ5NDIwN2UiCi0KLSMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCi0KLUNPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X2hhdmVfY2hmbGFncz1ubyBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sY2hmbGFncz1ubyBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcyBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBcCi0iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKLVNES19DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKLUVYVFJBX09FTUFLRSArPSAiQ1JPU1NfQ09NUElMRT15ZXMiCi1FWFRSQV9PRUNPTkYgKz0gIkNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gLS13aXRob3V0LWVuc3VyZXBpcCIKLQotZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKLWV4cG9ydCBfUFlUSE9OX1BST0pFQ1RfQkFTRSA9ICIke0J9IgotZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9TUkMgPSAiJHtTfSIKLWV4cG9ydCBDQ1NIQVJFRCA9ICItZlBJQyIKLQotIyBGaXggY3Jvc3MgY29tcGlsYXRpb24gb2YgZGlmZmVyZW50IG1vZHVsZXMKLWV4cG9ydCBDUk9TU1BZVEhPTlBBVEggPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvOiR7Qn0vYnVpbGQvbGliLmxpbnV4LSR7VEFSR0VUX0FSQ0h9LSR7UFlUSE9OX01BSk1JTn06JHtTfS9MaWI6JHtTfS9MaWIvcGxhdC1saW51eCIKLQotIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMwotUFlUSE9OTFNCT1BUUyA9ICIiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0Jcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCi0JYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycwotICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4KgotICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLSAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCi0gICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5Ci0gICAgICAgIGNkIC0KLQotCi0JIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAotCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQotCi0JaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZwotCWZpCi0Jc2VkIC1pIC1lICdzLF5DT05GSUdVUkVfTERGTEFHUz0uKixDT05GSUdVUkVfTERGTEFHUz0tTC4gLUwke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAotCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCU1ha2VmaWxlCi0JIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAotCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290Ci0KLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJT1BUPSIke0NGTEFHU30iIGxpYnB5dGhvbjMuc28KLQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlMSUI9JHtiYXNlbGlifSBcCi0JCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotCQlPUFQ9IiR7Q0ZMQUdTfSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAotCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKLQotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcKLQotCSMgcmVydW4gdGhlIGJ1aWxkIG9uY2UgYWdhaW4gd2l0aCBvcmlnaW5hbCBtYWtlZmlsZSB0aGlzIHRpbWUKLQkjIHJ1biBpbnN0YWxsIGluIGEgc2VwYXJhdGUgc3RlcCB0byBhdm9pZCBjb21waWxlL2luc3RhbGwgcmFjZQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlMSUI9JHtiYXNlbGlifSBcCi0JCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQotCQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlMSUI9JHtiYXNlbGlifSBcCi0JCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCi0KLQkjIGF2b2lkIGNvbmZsaWN0IHdpdGggMnRvMyBmcm9tIFB5dGhvbiAyCi0Jcm0gLWYgJHtEfS8ke2JpbmRpcn0vMnRvMwotCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQotCi0JaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXB5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0JIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQotCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLX0KLQotcmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKLQotIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKLVJQUk9WSURFU18ke1BOfS1tb2R1bGVzID0gIiR7UE59IgotUlJFQ09NTUVORFNfJHtQTn0tY29yZSA9ICIke1BOfS1yZWFkbGluZSIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdF9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW9wZW5zc2wiCi0KLUZJTEVTXyR7UE59LTJ0bzMgKz0gIiR7YmluZGlyfS8ydG8zLSR7UFlUSE9OX01BSk1JTn0iCi1GSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgotRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXB5dmVudiIKLUZJTEVTXyR7UE59LXB5dmVudiArPSAiJHtiaW5kaXJ9L3B5dmVudi0ke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weXZlbnYiCi0KLSMgcGFja2FnZSBsaWJweXRob24zCi1QQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKLUZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLUZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fQklOQUJJfS9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCi1JTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCi0KLSMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiJHtQTn0tY29yZSAke1BOfS1lbWFpbCAke1BOfS1jb2RlY3MgJHtQTn0tdGV4dHV0aWxzICR7UE59LWFyZ3BhcnNlIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCi0KLSMgY2F0Y2ggbWFucGFnZQotUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKLUZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODkzYjg0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuNS5iYgpAQCAtMCwwICsxLDMyMyBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCisKK0RFUEVORFMgPSAicHl0aG9uMy1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCBzcWxpdGUzIHpsaWIgdmlydHVhbC9saWJpbnRsIHh6IgorCitQUiA9ICIke0lOQ19QUn0uMCIKK1BZVEhPTl9NQUpNSU4gPSAiMy41IgorUFlUSE9OX0JJTkFCST0gIiR7UFlUSE9OX01BSk1JTn1tIgorRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCitmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCitmaWxlOi8vMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAorZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAorZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCitmaWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCitmaWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKK2ZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCitmaWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKK2ZpbGU6Ly90d2Vhay1NVUxUSUFSQ0gtZm9yLXBvd2VycGMtbGludXgtZ251c3BlLnBhdGNoIFwKK2ZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggXAorJHtESVNUUk9fU1JDX1VSSX0gXAorIgorCitTUkNfVVJJICs9ICJcCisgICAgICAgICAgICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uY3Vyc2Vzdy1pbmNsdWRlLXBhdGgucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMzc2M2VkZjk4MjRkNWQzYTE1ZjVmNjQ2MDgzYjZlMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjNkMmMzYjA0MDJkNjE5MWI5MDczMWUwZjczNWM2NDgzMGU3NTIyMzQ4YWViN2VkMzgyYTgzMTY1ZDQ1MDA5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNmVjNTE1YjIyNjE4ZjU1ZmEwNzI3NmI4OTdiYWNlYSIKKworIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKKworQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfaGF2ZV9jaGZsYWdzPW5vIFwKKyAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xjaGZsYWdzPW5vIFwKKyAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKKyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgorU0RLX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgorRVhUUkFfT0VNQUtFICs9ICJDUk9TU19DT01QSUxFPXllcyIKK0VYVFJBX09FQ09ORiArPSAiQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyAtLXdpdGhvdXQtZW5zdXJlcGlwIgorCitleHBvcnQgQ1JPU1NfQ09NUElMRSA9ICIke1RBUkdFVF9QUkVGSVh9IgorZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9CQVNFID0gIiR7Qn0iCitleHBvcnQgX1BZVEhPTl9QUk9KRUNUX1NSQyA9ICIke1N9IgorZXhwb3J0IENDU0hBUkVEID0gIi1mUElDIgorCisjIEZpeCBjcm9zcyBjb21waWxhdGlvbiBvZiBkaWZmZXJlbnQgbW9kdWxlcworZXhwb3J0IENST1NTUFlUSE9OUEFUSCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC86JHtCfS9idWlsZC9saWIubGludXgtJHtUQVJHRVRfQVJDSH0tJHtQWVRIT05fTUFKTUlOfToke1N9L0xpYjoke1N9L0xpYi9wbGF0LWxpbnV4IgorCisjIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCitQWVRIT05MU0JPUFRTID0gIiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLCxyZWFkbGluZSIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKKwlhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCisgICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgqCisgICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorICAgICAgICAgICAgICAgICR7U30vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2RsZmNuLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2Nkcm9tLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L25ldGluZXQvaW4uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vc3lzL3R5cGVzLmgKKyAgICAgICAgc2VkIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIC1pICoucHkKKyAgICAgICAgY2QgLQorCisKKwkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICisJc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCisKKwlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCisJZmkKKwlzZWQgLWkgLWUgJ3MsXkNPTkZJR1VSRV9MREZMQUdTPS4qLENPTkZJR1VSRV9MREZMQUdTPS1MLiAtTCR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAorCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCisJCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJTWFrZWZpbGUKKwkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCisJIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290CisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKKwkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIgbGlicHl0aG9uMy5zbworCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCU9QVD0iJHtDRkxBR1N9IgorfQorCitkb19pbnN0YWxsKCkgeworCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCisJIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQorCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZworCisJIyByZXJ1biB0aGUgYnVpbGQgb25jZSBhZ2FpbiB3aXRoIG9yaWdpbmFsIG1ha2VmaWxlIHRoaXMgdGltZQorCSMgcnVuIGluc3RhbGwgaW4gYSBzZXBhcmF0ZSBzdGVwIHRvIGF2b2lkIGNvbXBpbGUvaW5zdGFsbCByYWNlCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9CisJCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKKworCSMgYXZvaWQgY29uZmxpY3Qgd2l0aCAydG8zIGZyb20gUHl0aG9uIDIKKwlybSAtZiAke0R9LyR7YmluZGlyfS8ydG8zCisKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCisKKwlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQorCWZpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKwkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQorCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCisJIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQorCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorCQktZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJCS1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCQktZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCQktZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkgXAorCQkke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZworCisJIyBSZWNvbXBpbGUgX3N5c2NvbmZpZ2RhdGEgYWZ0ZXIgbW9kaWZ5aW5nIGl0CisJY2QgJHtQS0dEfQorCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCisJICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCcuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5JykiCisJJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKKwkgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJy4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHknLCBvcHRpbWl6ZT0xKSIKKwkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorCSAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weScsIG9wdGltaXplPTIpIgorCWNkIC0KK30KKworIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKK1JQUk9WSURFU18ke1BOfS1tb2R1bGVzID0gIiR7UE59IgorUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uMy1tb2R1bGVzIgorUlJFQ09NTUVORFNfJHtQTn0tY3J5cHQgPSAib3BlbnNzbCIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstb3BlbnNzbCIKKworRklMRVNfJHtQTn0tMnRvMyArPSAiJHtiaW5kaXJ9LzJ0bzMtJHtQWVRIT05fTUFKTUlOfSIKK0ZJTEVTXyR7UE59LXB5ZG9jICs9ICIke2JpbmRpcn0vcHlkb2Mke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weWRvYzMiCitGSUxFU18ke1BOfS1pZGxlICs9ICIke2JpbmRpcn0vaWRsZTMgJHtiaW5kaXJ9L2lkbGUke1BZVEhPTl9NQUpNSU59IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl2ZW52IgorRklMRVNfJHtQTn0tcHl2ZW52ICs9ICIke2JpbmRpcn0vcHl2ZW52LSR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5dmVudiIKKworIyBwYWNrYWdlIGxpYnB5dGhvbjMKK1BBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgorRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgorRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9CSU5BQkl9L2xpYnB5dGhvbiR7UFlUSE9OX0JJTkFCSX0uYSIKK0lOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKKworIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQorUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCitSREVQRU5EU18ke1BOfS1taXNjICs9ICIke1BOfS1jb3JlICR7UE59LWVtYWlsICR7UE59LWNvZGVjcyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LW1vZHVsZXMiCisKKyMgV2Ugd2FudCBieXRlY29kZSBwcmVjb21waWxlZCAucHkgZmlsZXMgKC5weWMncykgYnkgZGVmYXVsdAorIyBidXQgdGhlIHVzZXIgbWF5IHNldCBpdCBvbiB0aGVpciBvd24gY29uZgorSU5DTFVERV9QWUNTID89ICIxIgorCitweXRob24oKXsKKyAgICBpbXBvcnQganNvbgorCisgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1RISVNESVInKSwgJ3B5dGhvbjMnLCAncHl0aG9uMy1tYW5pZmVzdC5qc29uJykKKyAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCisgICAgIyB0aGF0IGRlcGVuZGVuY3kuCisgICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBweXRob25fbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0X2ZpbGUpCisKKyAgICBpbmNsdWRlX3B5Y3MgPSBkLmdldFZhcignSU5DTFVERV9QWUNTJykKKworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKworICAgIG5ld3BhY2thZ2VzPVtdCisgICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6CisgICAgICAgIHB5cGFja2FnZT0gcG4gKyAnLScgKyBrZXkKKworICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKKyAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCisgICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQorCisgICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKKyAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQorICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCisKKyAgICAJIyBBZGQgY2FjaGVkIGZpbGVzCisgICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6CisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2NhY2hlZCddOgorICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCisKKyAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcnKQorICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJylbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQorCisgICAgIyBXZSBuZWVkIHRvIGVuc3VyZSBzdGF0aWNkZXYgcGFja2FnZXMgbWF0Y2ggZm9yIGZpbGVzIGZpcnN0IHNvIHdlIHNvcnQgaW4gcmV2ZXJzZQorICAgIG5ld3BhY2thZ2VzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKKyAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKKyAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCit9CisKKyMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorU1JDX1VSSSArPSAiZmlsZTovL2NyZWF0ZV9tYW5pZmVzdDMucHkgZmlsZTovL2dldF9tb2R1bGVfZGVwczMucHkgZmlsZTovL3B5dGhvbjMtbWFuaWZlc3QuanNvbiIKKworZG9fY3JlYXRlX21hbmlmZXN0KCkgeworICAgICMgVGhpcyB0YXNrIHNob3VsZCBiZSBydW4gd2l0aCBldmVyeSBuZXcgcmVsZWFzZSBvZiBQeXRob24uCisgICAgIyBXZSBtdXN0IGVuc3VyZSB0aGF0IFBBQ0tBR0VDT05GSUcgZW5hYmxlcyBldmVyeXRoaW5nIHdoZW4gY3JlYXRpbmcKKyAgICAjIGEgbmV3IG1hbmlmZXN0LCB0aGlzIGlzIHRvIGJhc2Ugb3VyIG5ldyBtYW5pZmVzdCBvbiBhIGNvbXBsZXRlCisgICAgIyBuYXRpdmUgcHl0aG9uIGJ1aWxkLCBjb250YWluaW5nIGFsbCBkZXBlbmRlbmNpZXMsIG90aGVyd2lzZSB0aGUgdGFzaworICAgICMgd29udCBiZSBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGZpbGVzLgorICAgICMgZS5nLiBCZXJrZWxleURCIGlzIGFuIG9wdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY3kgc28gaXQgbWF5IG9yIG1heSBub3QKKyAgICAjIGJlIHByZXNlbnQsIHdlIG11c3QgZW5zdXJlIGl0IGlzLgorCisgICAgY2QgJHtXT1JLRElSfQorICAgICMgVGhpcyBuZWVkcyB0byBiZSBleGVjdXRlZCBieSBweXRob24tbmF0aXZlIGFuZCBOT1QgYnkgSE9TVCdzIHB5dGhvbgorICAgIG5hdGl2ZXB5dGhvbjMgY3JlYXRlX21hbmlmZXN0My5weQorICAgIGNwIHB5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgorfQorCisjIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAorYWRkdGFzayBkb19jcmVhdGVfbWFuaWZlc3QKKworIyBNYWtlIHN1cmUgd2UgaGF2ZSBuYXRpdmUgcHl0aG9uIHJlYWR5IHdoZW4gd2UgY3JlYXRlIGEgbmV3IG1hbmlmZXN0Citkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjM6ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCIKK2RvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uMzpkb19wYXRjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTRjMDI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotcmVxdWlyZSBweXRob24uaW5jCi1ERVBFTkRTID0gInB5dGhvbi1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCByZWFkbGluZSBzcWxpdGUzIHpsaWIiCi1QUiA9ICIke0lOQ19QUn0iCi0KLURJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKLURJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCi1TUkNfVVJJICs9ICJcCi0gIGZpbGU6Ly8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaCBcCi0gIGZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotICBmaWxlOi8vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaCBcCi0gICR7RElTVFJPX1NSQ19VUkl9IFwKLSAgZmlsZTovL211bHRpbGliLnBhdGNoIFwKLSAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gIGZpbGU6Ly9zZXR1cF9weV9za2lwX2Nyb3NzX2ltcG9ydF9jaGVjay5wYXRjaCBcCi0gIGZpbGU6Ly9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggXAotICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAotICBmaWxlOi8vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoIFwKLSAgZmlsZTovL3NldHVwdHdlYWtzLnBhdGNoIFwKLSAgZmlsZTovL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2ggXAotICBmaWxlOi8vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2ggXAotICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLSAgZmlsZTovL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaCBcCi0gIGZpbGU6Ly9weXRob24tMi43LjMtcmVtb3ZlLWJzZGItcnBhdGgucGF0Y2ggXAotICBmaWxlOi8vZml4LW1ha2VmaWxlLWZvci1wdGVzdC5wYXRjaCBcCi0gIGZpbGU6Ly9ydW4tcHRlc3QgXAotICBmaWxlOi8vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBcCi0gIGZpbGU6Ly91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaCBcCi0gIGZpbGU6Ly9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIFwKLSAgZmlsZTovL0Rvbi10LXVzZS1nZXRlbnRyb3B5LW9uLUxpbnV4LnBhdGNoIFwKLSAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAotICBmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24tZGlyIHB5dGhvbm5hdGl2ZQotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBhY19jdl9maWxlX19kZXZfcHRjPW5vIgotCi1QQUNLQUdFQ09ORklHID8/PSAiYmRiIgotUEFDS0FHRUNPTkZJR1tiZGJdID0gIiwsZGIiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0Jcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCi0gICAgICAgIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19jb21waWxlKCkgewotICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKLSAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eDIKLSAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotICAgICAgICAgICAgICAgICR7U30vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2RsZmNuLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2Nkcm9tLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L25ldGluZXQvaW4uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vc3lzL3R5cGVzLmgKLSAgICAgICAgc2VkIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIC1pICoucHkKLSAgICAgICAgY2QgLQotCi0JIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAotCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQotCi0JaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZwotCWZpCi0Jc2VkIC1pIC1lICdzI15MREZMQUdTPS4qI0xERkxBR1M9JHtMREZMQUdTfSAtTC4gLUwke1NUQUdJTkdfTElCRElSfSNnJyBcCi0JCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAotCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCU1ha2VmaWxlCi0JIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAotCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290Ci0KLQlleHBvcnQgQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIKLQlleHBvcnQgUFlUSE9OQlVJTERESVI9IiR7Qn0iCi0KLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJT1BUPSIke0NGTEFHU30iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKLQkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCi0KLQlleHBvcnQgQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIKLQlleHBvcnQgUFlUSE9OQlVJTERESVI9IiR7Qn0iCi0KLQkjIEFmdGVyIHN3aXp6bGluZyB0aGUgbWFrZWZpbGUsIHdlIG5lZWQgdG8gcnVuIHRoZSBidWlsZCBhZ2Fpbi4KLQkjIGluc3RhbGwgY2FuIHJhY2Ugd2l0aCB0aGUgYnVpbGQgc28gd2UgaGF2ZSB0byBydW4gdGhpcyBmaXJzdCwgdGhlbiBpbnN0YWxsCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQotCQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAotCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKLQotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9NQUpNSU59L3B5Y29uZmlnLmgKLQotICAgIGlmIFsgLXogIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdiZGInLCBkKX0iIF07IHRoZW4KLSAgICAgICAgcm0gLXJmICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYnNkZGIKLSAgICBmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uMi43IFBZVEhPTkhPTUU9JyR7cHJlZml4fScgVEVSTUlORk9fRElSUz0nJHtzeXNjb25mZGlyfS90ZXJtaW5mbzovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8nCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJNYWtlZmlsZSIKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicHlfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1weV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCSMgY29weSBiYWNrIHRoZSBvbGQgTWFrZWZpbGUgdG8gZml4IHRhcmdldCBwYWNrYWdlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCi0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQotCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLSAgICBweXRob24gLW0gcHlfY29tcGlsZSAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci19Ci0KLXJlcXVpcmUgcHl0aG9uLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCi1SUFJPVklERVNfJHtQTn0tY29yZSA9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmUgPSAiJHtQTn0tcmVhZGxpbmUiCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24tbW9kdWxlcyIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCi0KLSMgcGFja2FnZSBsaWJweXRob24yCi1QQUNLQUdFUyA9KyAibGliJHtCUE59MiIKLUZJTEVTX2xpYiR7QlBOfTIgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLQotIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQotUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKLQotIyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyIKLSNpbmhlcml0IHB0ZXN0IGFmdGVyICJyZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYyIgc28gUEFDS0FHRVMgZG9lc24ndCBnZXQgb3ZlcndyaXR0ZW4KLWluaGVyaXQgcHRlc3QKLQotIyBUaGlzIG11c3QgY29tZSBhZnRlciBpbmhlcml0IHB0ZXN0IGZvciB0aGUgb3ZlcnJpZGUgdG8gdGFrZSBlZmZlY3QKLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSBzOkxJQkRJUi9weXRob24vcHRlc3Q6JHtQVEVTVF9QQVRIfTpnIFwKLQkgLWUgczpMSUJESVI6JHtsaWJkaXJ9OmcgXAotCSAtaSAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKLQotCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzCi0Jc2VkIC1pIFwKLQkJLWUgJ3M6LS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKLQkgICAgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSR7RH0vJHtQVEVTVF9QQVRIfS9NYWtlZmlsZQotfQotCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLSMgTmFzdHkgYnV0IGlmIGJkYiBpc24ndCBlbmFibGVkIHRoZSBwYWNrYWdlIHdvbid0IGJlIGdlbmVyYXRlZAotUkRFUEVORFNfJHtQTn0tbW9kdWxlc19yZW1vdmUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgJycsICcke1BOfS1ic2RkYicsIGQpfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTA5OTI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNC5iYgpAQCAtMCwwICsxLDI4MSBAQAorcmVxdWlyZSBweXRob24uaW5jCisKK0RFUEVORFMgPSAicHl0aG9uLW5hdGl2ZSBsaWJmZmkgYnppcDIgZ2RibSBvcGVuc3NsIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiIKKworUFIgPSAiJHtJTkNfUFJ9IgorCitESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCitESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgorU1JDX1VSSSArPSAiXAorICBmaWxlOi8vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2ggXAorICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKKyAgZmlsZTovLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2ggXAorICAke0RJU1RST19TUkNfVVJJfSBcCisgIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCisgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAorICBmaWxlOi8vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2ggXAorICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKKyAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgZmlsZTovL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaCBcCisgIGZpbGU6Ly9zZXR1cHR3ZWFrcy5wYXRjaCBcCisgIGZpbGU6Ly9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoIFwKKyAgZmlsZTovL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoIFwKKyAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCisgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggXAorICBmaWxlOi8vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIFwKKyAgZmlsZTovL2ZpeC1tYWtlZmlsZS1mb3ItcHRlc3QucGF0Y2ggXAorICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgZmlsZTovL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggXAorICBmaWxlOi8vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggXAorICBmaWxlOi8vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCisgIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKKyAgZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uLWRpciBweXRob25uYXRpdmUKKworQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX19kZXZfcHRteD15ZXMgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiIKK1BBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLGRiIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZworICAgICAgICBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCisgICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgyCisgICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKKyAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCisgICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5CisgICAgICAgIGNkIC0KKworCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKKwlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKKworCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KKwkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKKwlmaQorCXNlZCAtaSAtZSAncyNeTERGTEFHUz0uKiNMREZMQUdTPSR7TERGTEFHU30gLUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0jZycgXAorCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKKwkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAorCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQlNYWtlZmlsZQorCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKKwkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAorCisJZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCisJZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgorCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCU9QVD0iJHtDRkxBR1N9IgorfQorCitkb19pbnN0YWxsKCkgeworCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCisJIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQorCisJZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCisJZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgorCisJIyBBZnRlciBzd2l6emxpbmcgdGhlIG1ha2VmaWxlLCB3ZSBuZWVkIHRvIHJ1biB0aGUgYnVpbGQgYWdhaW4uCisJIyBpbnN0YWxsIGNhbiByYWNlIHdpdGggdGhlIGJ1aWxkIHNvIHdlIGhhdmUgdG8gcnVuIHRoaXMgZmlyc3QsIHRoZW4gaW5zdGFsbAorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKKwkJQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKKwkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KKwkKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCisJCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKKworCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisKKwlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQorCWZpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCisKKyAgICBpZiBbIC16ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgZCl9IiBdOyB0aGVuCisgICAgICAgIHJtIC1yZiAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2JzZGRiCisgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbjIuNyBQWVRIT05IT01FPScke3ByZWZpeH0nIFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKwkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQorCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKworCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkJLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCQktZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCQktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkJLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQorCShjZCAke1BLR0R9OyBweXRob24gLW0gcHlfY29tcGlsZSAuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5KQorfQorCisKKyMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCitSUFJPVklERVNfJHtQTn0tY29yZSA9ICIke1BOfSIKK1JSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbi1tb2R1bGVzIgorUlJFQ09NTUVORFNfJHtQTn0tY3J5cHQgPSAib3BlbnNzbCIKKworIyBwYWNrYWdlIGxpYnB5dGhvbjIKK1BBQ0tBR0VTID0rICJsaWIke0JQTn0yIgorRklMRVNfbGliJHtCUE59MiA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgorCisjIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCitQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCitSREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgorCisjIHB0ZXN0CitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICIke1BOfS1tb2R1bGVzICR7UE59LXRlc3RzIgorI2luaGVyaXQgcHRlc3QgYWZ0ZXIgInJlcXVpcmUgcHl0aG9uLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jIiBzbyBQQUNLQUdFUyBkb2Vzbid0IGdldCBvdmVyd3JpdHRlbgoraW5oZXJpdCBwdGVzdAorCisjIFRoaXMgbXVzdCBjb21lIGFmdGVyIGluaGVyaXQgcHRlc3QgZm9yIHRoZSBvdmVycmlkZSB0byB0YWtlIGVmZmVjdAorZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9CisJc2VkIC1lIHM6TElCRElSL3B5dGhvbi9wdGVzdDoke1BURVNUX1BBVEh9OmcgXAorCSAtZSBzOkxJQkRJUjoke2xpYmRpcn06ZyBcCisJIC1pICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorCisJI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMKKwlzZWQgLWkgXAorCQktZSAnczotLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorCSAgICAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJJHtEfS8ke1BURVNUX1BBVEh9L01ha2VmaWxlCit9CisKKyMgY2F0Y2ggbWFucGFnZQorUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKK0ZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKKworIyBOYXN0eSBidXQgaWYgYmRiIGlzbid0IGVuYWJsZWQgdGhlIHBhY2thZ2Ugd29uJ3QgYmUgZ2VuZXJhdGVkCitSREVQRU5EU18ke1BOfS1tb2R1bGVzX3JlbW92ZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiZGInLCAnJywgJyR7UE59LWJzZGRiJywgZCl9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1tb2R1bGVzIgorCisjIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKKyMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKKworSU5DTFVERV9QWUNTID89ICIxIgorCitweXRob24oKXsKKyAgICBpbXBvcnQganNvbgorCisgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1RISVNESVInKSwgJ3B5dGhvbicsICdweXRob24yLW1hbmlmZXN0Lmpzb24nKQorICAgICMgVGhpcyBweXRob24gY2hhbmdlcyB0aGUgZGF0YXN0b3JlIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBhIGZpbGUsIHNvIG1hcmsKKyAgICAjIHRoYXQgZGVwZW5kZW5jeS4KKyAgICBiYi5wYXJzZS5tYXJrX2RlcGVuZGVuY3koZCwgZmlsZW5hbWUpCisKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIG1hbmlmZXN0X2ZpbGU6CisgICAgICAgIHB5dGhvbl9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3RfZmlsZSkKKworICAgIGluY2x1ZGVfcHljcyA9IGQuZ2V0VmFyKCdJTkNMVURFX1BZQ1MnKQorCisgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCisgICAgcG4gPSBkLmdldFZhcignUE4nKQorCisgICAgbmV3cGFja2FnZXM9W10KKworICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2U9IHBuICsgJy0nICsga2V5CisKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBwYWNrYWdlczoKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBwcmVwZW5kLCBvdGhlcndpc2UgcHl0aG9uLW1pc2MgZ2V0cyBldmVyeXRoaW5nCisgICAgICAgICAgICAjIHNvIHdlIHVzZSBhIG5ldyB2YXJpYWJsZQorICAgICAgICAgICAgbmV3cGFja2FnZXMuYXBwZW5kKHB5cGFja2FnZSkKKworICAgICAgICAjICJCdWlsZCIgcHl0aG9uJ3MgbWFuaWZlc3QgRklMRVMsIFJERVBFTkRTIGFuZCBTVU1NQVJZCisgICAgICAgIGQuc2V0VmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnJykKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorICAgICAgICAgICAgaWYgaW5jbHVkZV9weWNzID09ICcxJzoKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZS5lbmRzd2l0aCgnLnB5Jyk6CisgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSArICdjJykKKworICAgICAgICBkLnNldFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJycpCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKKyAgICAgICAgICAgICMgTWFrZSBpdCB3b3JrIHdpdGggb3Igd2l0aG91dCAkUE4KKyAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6CisgICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nKVsxXQorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCisgICAgICAgIGQuc2V0VmFyKCdTVU1NQVJZXycgKyBweXBhY2thZ2UsIHB5dGhvbl9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10pCisKKyAgICAjIFdlIG5lZWQgdG8gZW5zdXJlIHN0YXRpY2RldiBwYWNrYWdlcyBtYXRjaCBmb3IgZmlsZXMgZmlyc3Qgc28gd2Ugc29ydCBpbiByZXZlcnNlCisgICAgbmV3cGFja2FnZXMuc29ydChyZXZlcnNlPVRydWUpCisgICAgIyBQcmVwZW5kaW5nIHNvIHRvIGF2b2lkIHB5dGhvbi1taXNjIGdldHRpbmcgZXZlcnl0aGluZworICAgIHBhY2thZ2VzID0gbmV3cGFja2FnZXMgKyBwYWNrYWdlcworICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcycsICcxJykKK30KKworIyBGaWxlcyBuZWVkZWQgdG8gY3JlYXRlIGEgbmV3IG1hbmlmZXN0CitTUkNfVVJJICs9ICJmaWxlOi8vY3JlYXRlX21hbmlmZXN0Mi5weSBmaWxlOi8vZ2V0X21vZHVsZV9kZXBzMi5weSBmaWxlOi8vcHl0aG9uMi1tYW5pZmVzdC5qc29uIgorCitkb19jcmVhdGVfbWFuaWZlc3QoKSB7CisgICAgIyBUaGlzIHRhc2sgc2hvdWxkIGJlIHJ1biB3aXRoIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIFB5dGhvbi4KKyAgICAjIFdlIG11c3QgZW5zdXJlIHRoYXQgUEFDS0FHRUNPTkZJRyBlbmFibGVzIGV2ZXJ5dGhpbmcgd2hlbiBjcmVhdGluZworICAgICMgYSBuZXcgbWFuaWZlc3QsIHRoaXMgaXMgdG8gYmFzZSBvdXIgbmV3IG1hbmlmZXN0IG9uIGEgY29tcGxldGUKKyAgICAjIG5hdGl2ZSBweXRob24gYnVpbGQsIGNvbnRhaW5pbmcgYWxsIGRlcGVuZGVuY2llcywgb3RoZXJ3aXNlIHRoZSB0YXNrCisgICAgIyB3b250IGJlIGFibGUgdG8gZmluZCB0aGUgcmVxdWlyZWQgZmlsZXMuCisgICAgIyBlLmcuIEJlcmtlbGV5REIgaXMgYW4gb3B0aW9uYWwgYnVpbGQgZGVwZW5kZW5jeSBzbyBpdCBtYXkgb3IgbWF5IG5vdAorICAgICMgYmUgcHJlc2VudCwgd2UgbXVzdCBlbnN1cmUgaXQgaXMuCisKKyAgICBjZCAke1dPUktESVJ9CisgICAgIyBUaGlzIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGJ5IHB5dGhvbi1uYXRpdmUgYW5kIE5PVCBieSBIT1NUJ3MgcHl0aG9uCisgICAgbmF0aXZlcHl0aG9uIGNyZWF0ZV9tYW5pZmVzdDIucHkKKyAgICBjcCBweXRob24yLW1hbmlmZXN0Lmpzb24ubmV3ICR7VEhJU0RJUn0vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgorfQorCisjIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAorYWRkdGFzayBkb19jcmVhdGVfbWFuaWZlc3QKKworIyBNYWtlIHN1cmUgd2UgaGF2ZSBuYXRpdmUgcHl0aG9uIHJlYWR5IHdoZW4gd2UgY3JlYXRlIGEgbmV3IG1hbmlmZXN0Citkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjpkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IgorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob246ZG9fcGF0Y2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9uYXRpdmVzZGstcWVtdS1oZWxwZXJfMS4wLmJiCmluZGV4IDk0M2NhNWYuLmNkYzJmNTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9uYXRpdmVzZGstcWVtdS1oZWxwZXJfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9uYXRpdmVzZGstcWVtdS1oZWxwZXJfMS4wLmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJRZW11IGhlbHBlciBzY3JpcHRzIgogTElDRU5TRSA9ICJHUEx2MiIKLVJERVBFTkRTXyR7UE59ID0gIm5hdGl2ZXNkay1xZW11IG5hdGl2ZXNkay1weXRob24zLXN1YnByb2Nlc3MgXAotICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtc2hlbGwgbmF0aXZlc2RrLXB5dGhvbjMtZmNudGwgXAorUkRFUEVORFNfJHtQTn0gPSAibmF0aXZlc2RrLXFlbXUgXAorICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtc2hlbGwgbmF0aXZlc2RrLXB5dGhvbjMtZmNudGwgbmF0aXZlc2RrLXB5dGhvbjMtbG9nZ2luZyBcCiAgICAgICAgICAgICAgICAgIgogCiBQUiA9ICJyOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwppbmRleCAyYTFkMTRiLi5kYzczZGY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgLS10YXJnZXQtbGlzdD0ke0BnZXRfcWVtdV90YXJnZXRfbGlzdChkKX0gXAogICAgIC0tZXh0cmEtY2ZsYWdzPScke0NGTEFHU30nIFwKICAgICAiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1weXRob249JHtVU1JCSU5QQVRIfS9weXRob24yLjciCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1weXRob249cHl0aG9uMi43IgogCiBFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgTEQ9JyR7TER9JyBBUj0nJHtBUn0nIE9CSkNPUFk9JyR7T0JKQ09QWX0nIExERkxBR1M9JyR7TERGTEFHU30nIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLVByb3ZpZGUtc3VwcG9ydC1mb3ItdGhlLUNVU0UtVFBNLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRkYzZmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLVByb3ZpZGUtc3VwcG9ydC1mb3ItdGhlLUNVU0UtVFBNLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcwICswLDAgQEAKLUZyb20gODczN2VlZjE4ZjM5ZWQwODdmZDkxMWQwYTA4ODZlODE3NGQwNDY4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZTogU2F0LCAzMSBEZWMgMjAxNiAxMToyMzozMiAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvNF0gUHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgQ1VTRSBUUE0KLQotUmF0aGVyIHRoYW4gaW50ZWdyYXRpbmcgVFBNIGZ1bmN0aW9uYWxpdHkgaW50byBRRU1VIGRpcmVjdGx5Ci11c2luZyB0aGUgVFBNIGVtdWxhdGlvbiBvZiBsaWJ0cG1zLCB3ZSBub3cgaW50ZWdyYXRlIGFuIGV4dGVybmFsCi1lbXVsYXRlZCBUUE0gZGV2aWNlLiBUaGlzIGRldmljZSBpcyBleHBlY3RlZCB0byBpbXBsZW1lbnQgYSBMaW51eAotQ1VTRSBpbnRlcmZhY2UgKENVU0UgPSBjaGFyYWN0ZXIgZGV2aWNlIGluIHVzZXJzcGFjZSkuCi0KLVFFTVUgdGFsa3MgdG8gdGhlIENVU0UgVFBNIHVzaW5nIG11Y2ggZnVuY3Rpb25hbGl0eSBvZiB0aGUKLXBhc3N0aHJvdWdoIGRyaXZlci4gRm9yIGV4YW1wbGUsIHRoZSBUUE0gY29tbWFuZHMgYW5kIHJlc3BvbnNlcwotYXJlIHNlbnQgdG8gdGhlIENVU0UgVFBNIHVzaW5nIHRoZSByZWFkKCkvd3JpdGUoKSBpbnRlcmZhY2UuCi1Ib3dldmVyLCBzb21lIG91dC1vZi1iYW5kIGNvbnRyb2wgbmVlZHMgdG8gYmUgZG9uZSB1c2luZyB0aGUgQ1VTRQotVFBNJ3MgaW9jdGxzLiBUaGUgQ1VTRSBUUE0gY3VycmVudGx5IGRlZmluZXMgYW5kIGltcGxlbWVudHMgMTUKLWRpZmZlcmVudCBpb2N0bHMgZm9yIGNvbnRyb2xsaW5nIGNlcnRhaW4gbGlmZS1jeWNsZSBhc3BlY3RzIG9mCi10aGUgZW11bGF0ZWQgVFBNLiBUaGUgaW9jdGxzIGNhbiBiZSByZWdhcmRlZCBhcyBhIHJlcGxhY2VtZW50IGZvcgotZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIHRvIGEgVFBNIGVtdWxhdG9yIGlmIHRoZSBUUE0gd2VyZSB0byBiZQotZGlyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIFFFTVUuCi0KLU9uZSBvZiB0aGUgaW9jdGxzIGFsbG93cyB0byBnZXQgYSBiaXRtYXNrIG9mIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMuCi1FYWNoIHJldHVybmVkIGJpdCBpbmRpY2F0ZXMgd2hpY2ggY2FwYWJpbGl0aWVzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZC4KLUFuIGluY2x1ZGUgZmlsZSBkZWZpbmluZyB0aGUgdmFyaW91cyBpb2N0bHMgaXMgYWRkZWQgdG8gUUVNVS4KLQotVGhlIENVU0UgVFBNIGFuZCBhc3NvY2lhdGVkIHRvb2xzIGNhbiBiZSBmb3VuZCBoZXJlOgotCi1odHRwczovL2dpdGh1Yi5jb20vc3RlZmFuYmVyZ2VyL3N3dHBtCi0KLShwbGVhc2UgdXNlIHRoZSBsYXRlc3QgdmVyc2lvbikKLQotVG8gdXNlIHRoZSBleHRlcm5hbCBDVVNFIFRQTSwgdGhlIENVU0UgVFBNIHNob3VsZCBiZSBzdGFydGVkIGFzIGZvbGxvd3M6Ci0KLS91c3IvYmluL3N3dHBtX2lvY3RsIC1zIC9kZXYvdnRwbS10ZXN0Ci0KLS91c3IvYmluL3N3dHBtX2N1c2UgLW4gdnRwbS10ZXN0Ci0KLVFFTVUgY2FuIHRoZW4gYmUgc3RhcnRlZCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6Ci0KLXFlbXUtc3lzdGVtLXg4Nl82NCBcCi0JWy4uLl0gXAotICAgICAgICAtdHBtZGV2IGN1c2UtdHBtLGlkPXRwbTAsY2FuY2VsLXBhdGg9L2Rldi9udWxsLHBhdGg9L2Rldi92dHBtLXRlc3QgXAotICAgICAgICAtZGV2aWNlIHRwbS10aXMsaWQ9dHBtMCx0cG1kZXY9dHBtMCBcCi0JWy4uLl0KLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+Ci1DYzogRXJpYyBCbGFrZSA8ZWJsYWtlQHJlZGhhdC5jb20+Ci0KLUNvbmZsaWN0czoKLQlkb2NzL3FtcC1jb21tYW5kcy50eHQKLQotUGF0Y2ggY2hlcnJ5LXBpY2tlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGVmYW5iZXJnZXIvcWVtdS10cG0sIGJyYW5jaCB2Mi44LjArdHBtLAotY29tbWl0IDI3ZDZjZDg1NmQ1YTE0MDYxOTU1ZGY3YTkzZWU0OTA2OTdhN2ExNzQuIEFwcGxpZWQgY2xlYW5seSBleGNlcHQgZm9yCi1kb2NzL3FtcC1jb21tYW5kcy50eHQgd2hpY2ggZGlkIG5vdCBleGlzdCB5ZXQgaW4gcWVtdSAyLjcuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9saXN0cy5ub25nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTYtMDYvbXNnMDAyNTIuaHRtbF0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLS0tLQotIGhtcC5jICAgICAgICAgICAgICAgICAgICB8ICAgNiArKwotIGh3L3RwbS90cG1faW50LmggICAgICAgICB8ICAgMSArCi0gaHcvdHBtL3RwbV9pb2N0bC5oICAgICAgIHwgMjE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgfCAyNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBxYXBpLXNjaGVtYS5qc29uICAgICAgICAgfCAgMTggKysrLQotIHFlbXUtb3B0aW9ucy5oeCAgICAgICAgICB8ICAyMSArKystCi0gdHBtLmMgICAgICAgICAgICAgICAgICAgIHwgIDExICstCi0gNyBmaWxlcyBjaGFuZ2VkLCA1MjkgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L3RwbS90cG1faW9jdGwuaAotCi1kaWZmIC0tZ2l0IGEvaG1wLmMgYi9obXAuYwotaW5kZXggY2MyMDU2ZTllMi4uMjc3YjQ1ZWY1YSAxMDA2NDQKLS0tLSBhL2htcC5jCi0rKysgYi9obXAuYwotQEAgLTg4Myw2ICs4ODMsMTIgQEAgdm9pZCBobXBfaW5mb190cG0oTW9uaXRvciAqbW9uLCBjb25zdCBRRGljdCAqcWRpY3QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBvLT5oYXNfY2FuY2VsX3BhdGggPyAiLGNhbmNlbC1wYXRoPSIgOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG8tPmhhc19jYW5jZWxfcGF0aCA/IHRwby0+Y2FuY2VsX3BhdGggOiAiIik7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIFRQTV9UWVBFX09QVElPTlNfS0lORF9DVVNFX1RQTToKLSsgICAgICAgICAgICB0cG8gPSB0aS0+b3B0aW9ucy0+dS5wYXNzdGhyb3VnaC5kYXRhOwotKyAgICAgICAgICAgIG1vbml0b3JfcHJpbnRmKG1vbiwgIiVzJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwby0+aGFzX3BhdGggPyAiLHBhdGg9IiA6ICIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwby0+aGFzX3BhdGggPyB0cG8tPnBhdGggOiAiIik7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlIFRQTV9UWVBFX09QVElPTlNfS0lORF9fTUFYOgotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1faW50LmggYi9ody90cG0vdHBtX2ludC5oCi1pbmRleCBmMmYyODViM2NjLi42YjJjOWM5NTNhIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV9pbnQuaAotKysrIGIvaHcvdHBtL3RwbV9pbnQuaAotQEAgLTYxLDYgKzYxLDcgQEAgc3RydWN0IHRwbV9yZXNwX2hkciB7Ci0gI2RlZmluZSBUUE1fVEFHX1JTUF9BVVRIMV9DT01NQU5EIDB4YzUKLSAjZGVmaW5lIFRQTV9UQUdfUlNQX0FVVEgyX0NPTU1BTkQgMHhjNgotIAotKyNkZWZpbmUgVFBNX1NVQ0NFU1MgICAgICAgICAgICAgICAwCi0gI2RlZmluZSBUUE1fRkFJTCAgICAgICAgICAgICAgICAgIDkKLSAKLSAjZGVmaW5lIFRQTV9PUkRfQ29udGludWVTZWxmVGVzdCAgMHg1MwotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1faW9jdGwuaCBiL2h3L3RwbS90cG1faW9jdGwuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmEzNDFlMTU3NDEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2h3L3RwbS90cG1faW9jdGwuaAotQEAgLTAsMCArMSwyMTUgQEAKLSsvKgotKyAqIHRwbV9pb2N0bC5oCi0rICoKLSsgKiAoYykgQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAyMDE0LCAyMDE1LgotKyAqCi0rICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgMy1jbGF1c2UgQlNEIGxpY2Vuc2UKLSsgKi8KLSsjaWZuZGVmIF9UUE1fSU9DVExfSF8KLSsjZGVmaW5lIF9UUE1fSU9DVExfSF8KLSsKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2luY2x1ZGUgPHN5cy91aW8uaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKwotKy8qCi0rICogRXZlcnkgcmVzcG9uc2UgZnJvbSBhIGNvbW1hbmQgaW52b2x2aW5nIGEgVFBNIGNvbW1hbmQgZXhlY3V0aW9uIG11c3QgaG9sZAotKyAqIHRoZSBwdG1fcmVzIGFzIHRoZSBmaXJzdCBlbGVtZW50LgotKyAqIHB0bV9yZXMgY29ycmVzcG9uZHMgdG8gdGhlIGVycm9yIGNvZGUgb2YgYSBjb21tYW5kIGV4ZWN1dGVkIGJ5IHRoZSBUUE0uCi0rICovCi0rCi0rdHlwZWRlZiB1aW50MzJfdCBwdG1fcmVzOwotKwotKy8qIFBUTV9HRVRfVFBNRVNUQUJMSVNIRUQ6IGdldCB0aGUgZXN0YWJsaXNobWVudCBiaXQgKi8KLStzdHJ1Y3QgcHRtX2VzdCB7Ci0rICAgIHVuaW9uIHsKLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYml0OyAvKiBUUE0gZXN0YWJsaXNoZWQgYml0ICovCi0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKy8qIFBUTV9SRVNFVF9UUE1FU1RBQkxJU0hFRDogcmVzZXQgZXN0YWJsaXNobWVudCBiaXQgKi8KLStzdHJ1Y3QgcHRtX3Jlc2V0X2VzdCB7Ci0rICAgIHVuaW9uIHsKLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgdWludDhfdCBsb2M7IC8qIGxvY2FsaXR5IHRvIHVzZSAqLwotKyAgICAgICAgfSByZXE7IC8qIHJlcXVlc3QgKi8KLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKiBQVE1fSU5JVCAqLwotK3N0cnVjdCBwdG1faW5pdCB7Ci0rICAgIHVuaW9uIHsKLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgdWludDMyX3QgaW5pdF9mbGFnczsgLyogc2VlIGRlZmluaXRpb25zIGJlbG93ICovCi0rICAgICAgICB9IHJlcTsgLyogcmVxdWVzdCAqLwotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKy8qIGFib3ZlIGluaXRfZmxhZ3MgKi8KLSsjZGVmaW5lIFBUTV9JTklUX0ZMQUdfREVMRVRFX1ZPTEFUSUxFICgxIDw8IDApCi0rICAgIC8qIGRlbGV0ZSB2b2xhdGlsZSBzdGF0ZSBmaWxlIGFmdGVyIHJlYWRpbmcgaXQgKi8KLSsKLSsvKiBQVE1fU0VUX0xPQ0FMSVRZICovCi0rc3RydWN0IHB0bV9sb2MgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQ4X3QgbG9jOyAvKiBsb2NhbGl0eSB0byBzZXQgKi8KLSsgICAgICAgIH0gcmVxOyAvKiByZXF1ZXN0ICovCi0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyogUFRNX0hBU0hfREFUQTogaGFzaCBnaXZlbiBkYXRhICovCi0rc3RydWN0IHB0bV9oZGF0YSB7Ci0rICAgIHVuaW9uIHsKLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoOwotKyAgICAgICAgICAgIHVpbnQ4X3QgZGF0YVs0MDk2XTsKLSsgICAgICAgIH0gcmVxOyAvKiByZXF1ZXN0ICovCi0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyoKLSsgKiBzaXplIG9mIHRoZSBUUE0gc3RhdGUgYmxvYiB0byB0cmFuc2ZlcjsgeDg2XzY0IGNhbiBoYW5kbGUgOGssCi0rICogcHBjNjRsZSBvbmx5IH43azsga2VlcCB0aGUgcmVzcG9uc2UgYmVsb3cgYSA0ayBwYWdlIHNpemUKLSsgKi8KLSsjZGVmaW5lIFBUTV9TVEFURV9CTE9CX1NJWkUgKDMgKiAxMDI0KQotKwotKy8qCi0rICogVGhlIGZvbGxvd2luZyBpcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgdG8gZ2V0IHN0YXRlIGJsb2JzIGZyb20gdGhlIFRQTS4KLSsgKiBJZiB0aGUgc2l6ZSBvZiB0aGUgc3RhdGUgYmxvYiBleGNlZWRzIHRoZSBQVE1fU1RBVEVfQkxPQl9TSVpFLCBtdWx0aXBsZSByZWFkcwotKyAqIHdpdGggdGhpcyBpb2N0bCBhbmQgd2l0aCBhZGp1c3RlZCBvZmZzZXQgYXJlIG5lY2Vzc2FyeS4gQWxsIGJ5dGVzCi0rICogbXVzdCBiZSB0cmFuc2ZlcnJlZCBhbmQgdGhlIHRyYW5zZmVyIGlzIGRvbmUgb25jZSB0aGUgbGFzdCBieXRlIGhhcyBiZWVuCi0rICogcmV0dXJuZWQuCi0rICogSXQgaXMgcG9zc2libGUgdG8gdXNlIHRoZSByZWFkKCkgaW50ZXJmYWNlIGZvciByZWFkaW5nIHRoZSBkYXRhOyBob3dldmVyLAotKyAqIHRoZSBmaXJzdCBieXRlcyBvZiB0aGUgc3RhdGUgYmxvYiB3aWxsIGJlIHBhcnQgb2YgdGhlIHJlc3BvbnNlIHRvIHRoZSBpb2N0bCgpOwotKyAqIGEgc3Vic2VxdWVudCByZWFkKCkgaXMgb25seSBuZWNlc3NhcnkgaWYgdGhlIHRvdGFsIGxlbmd0aCAodG90bGVuZ3RoKSBleGNlZWRzCi0rICogdGhlIG51bWJlciBvZiByZWNlaXZlZCBieXRlcy4gc2VlaygpIGlzIG5vdCBzdXBwb3J0ZWQuCi0rICovCi0rc3RydWN0IHB0bV9nZXRzdGF0ZSB7Ci0rICAgIHVuaW9uIHsKLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgdWludDMyX3Qgc3RhdGVfZmxhZ3M7IC8qIG1heSBiZTogUFRNX1NUQVRFX0ZMQUdfREVDUllQVEVEICovCi0rICAgICAgICAgICAgdWludDMyX3QgdHlwZTsgICAgICAgIC8qIHdoaWNoIGJsb2IgdG8gcHVsbCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IG9mZnNldDsgICAgICAvKiBvZmZzZXQgZnJvbSB3aGVyZSB0byByZWFkICovCi0rICAgICAgICB9IHJlcTsgLyogcmVxdWVzdCAqLwotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICAgICAgdWludDMyX3Qgc3RhdGVfZmxhZ3M7IC8qIG1heSBiZTogUFRNX1NUQVRFX0ZMQUdfRU5DUllQVEVEICovCi0rICAgICAgICAgICAgdWludDMyX3QgdG90bGVuZ3RoOyAgIC8qIHRvdGFsIGxlbmd0aCB0aGF0IHdpbGwgYmUgdHJhbnNmZXJyZWQgKi8KLSsgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGg7ICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIGluIGZvbGxvd2luZyBidWZmZXIgKi8KLSsgICAgICAgICAgICB1aW50OF90ICBkYXRhW1BUTV9TVEFURV9CTE9CX1NJWkVdOwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKiBUUE0gc3RhdGUgYmxvYiB0eXBlcyAqLwotKyNkZWZpbmUgUFRNX0JMT0JfVFlQRV9QRVJNQU5FTlQgIDEKLSsjZGVmaW5lIFBUTV9CTE9CX1RZUEVfVk9MQVRJTEUgICAyCi0rI2RlZmluZSBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSAgMwotKwotKy8qIHN0YXRlX2ZsYWdzIGFib3ZlIDogKi8KLSsjZGVmaW5lIFBUTV9TVEFURV9GTEFHX0RFQ1JZUFRFRCAgICAgMSAvKiBvbiBpbnB1dDogIGdldCBkZWNyeXB0ZWQgc3RhdGUgKi8KLSsjZGVmaW5lIFBUTV9TVEFURV9GTEFHX0VOQ1JZUFRFRCAgICAgMiAvKiBvbiBvdXRwdXQ6IHN0YXRlIGlzIGVuY3J5cHRlZCAqLwotKwotKy8qCi0rICogVGhlIGZvbGxvd2luZyBpcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgdG8gc2V0IHN0YXRlIGJsb2JzIGluIHRoZSBUUE0uCi0rICogSWYgdGhlIHNpemUgb2YgdGhlIHN0YXRlIGJsb2IgZXhjZWVkcyB0aGUgUFRNX1NUQVRFX0JMT0JfU0laRSwgbXVsdGlwbGUKLSsgKiAnd3JpdGVzJyB1c2luZyB0aGlzIGlvY3RsIGFyZSBuZWNlc3NhcnkuIFRoZSBsYXN0IHBhY2tldCBpcyBpbmRpY2F0ZWQKLSsgKiBieSB0aGUgbGVuZ3RoIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgUFRNX1NUQVRFX0JMT0JfU0laRS4KLSsgKiBUaGUgdmVyeSBmaXJzdCBwYWNrZXQgbWF5IGhhdmUgYSBsZW5ndGggaW5kaWNhdG9yIG9mICcwJyBlbmFibGluZwotKyAqIGEgd3JpdGUoKSB3aXRoIGFsbCB0aGUgYnl0ZXMgZnJvbSBhIGJ1ZmZlci4gSWYgdGhlIHdyaXRlKCkgaW50ZXJmYWNlCi0rICogaXMgdXNlZCwgYSBmaW5hbCBpb2N0bCB3aXRoIGEgbm9uLWZ1bGwgYnVmZmVyIG11c3QgYmUgbWFkZSB0byBpbmRpY2F0ZQotKyAqIHRoYXQgYWxsIGRhdGEgd2VyZSB0cmFuc2ZlcnJlZCAoYSB3cml0ZSB3aXRoIDAgYnl0ZXMgd291bGQgbm90IHdvcmspLgotKyAqLwotK3N0cnVjdCBwdG1fc2V0c3RhdGUgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IHN0YXRlX2ZsYWdzOyAvKiBtYXkgYmUgUFRNX1NUQVRFX0ZMQUdfRU5DUllQVEVEICovCi0rICAgICAgICAgICAgdWludDMyX3QgdHlwZTsgICAgICAgIC8qIHdoaWNoIGJsb2IgdG8gc2V0ICovCi0rICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoOyAgICAgIC8qIGxlbmd0aCBvZiB0aGUgZGF0YTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIDAgb24gdGhlIGZpcnN0IHBhY2tldCB0bwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciB1c2luZyB3cml0ZSgpICovCi0rICAgICAgICAgICAgdWludDhfdCBkYXRhW1BUTV9TVEFURV9CTE9CX1NJWkVdOwotKyAgICAgICAgfSByZXE7IC8qIHJlcXVlc3QgKi8KLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKgotKyAqIFBUTV9HRVRfQ09ORklHOiBEYXRhIHN0cnVjdHVyZSB0byBnZXQgcnVudGltZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCi0rICogc3VjaCBhcyB3aGljaCBrZXlzIGFyZSBhcHBsaWVkLgotKyAqLwotK3N0cnVjdCBwdG1fZ2V0Y29uZmlnIHsKLSsgICAgdW5pb24gewotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICAgICAgdWludDMyX3QgZmxhZ3M7Ci0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKyNkZWZpbmUgUFRNX0NPTkZJR19GTEFHX0ZJTEVfS0VZICAgICAgICAweDEKLSsjZGVmaW5lIFBUTV9DT05GSUdfRkxBR19NSUdSQVRJT05fS0VZICAgMHgyCi0rCi0rCi0rdHlwZWRlZiB1aW50NjRfdCBwdG1fY2FwOwotK3R5cGVkZWYgc3RydWN0IHB0bV9lc3QgcHRtX2VzdDsKLSt0eXBlZGVmIHN0cnVjdCBwdG1fcmVzZXRfZXN0IHB0bV9yZXNldF9lc3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX2xvYyBwdG1fbG9jOwotK3R5cGVkZWYgc3RydWN0IHB0bV9oZGF0YSBwdG1faGRhdGE7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX2luaXQgcHRtX2luaXQ7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX2dldHN0YXRlIHB0bV9nZXRzdGF0ZTsKLSt0eXBlZGVmIHN0cnVjdCBwdG1fc2V0c3RhdGUgcHRtX3NldHN0YXRlOwotK3R5cGVkZWYgc3RydWN0IHB0bV9nZXRjb25maWcgcHRtX2dldGNvbmZpZzsKLSsKLSsvKiBjYXBhYmlsaXR5IGZsYWdzIHJldHVybmVkIGJ5IFBUTV9HRVRfQ0FQQUJJTElUWSAqLwotKyNkZWZpbmUgUFRNX0NBUF9JTklUICAgICAgICAgICAgICAgKDEpCi0rI2RlZmluZSBQVE1fQ0FQX1NIVVRET1dOICAgICAgICAgICAoMTw8MSkKLSsjZGVmaW5lIFBUTV9DQVBfR0VUX1RQTUVTVEFCTElTSEVEICgxPDwyKQotKyNkZWZpbmUgUFRNX0NBUF9TRVRfTE9DQUxJVFkgICAgICAgKDE8PDMpCi0rI2RlZmluZSBQVE1fQ0FQX0hBU0hJTkcgICAgICAgICAgICAoMTw8NCkKLSsjZGVmaW5lIFBUTV9DQVBfQ0FOQ0VMX1RQTV9DTUQgICAgICgxPDw1KQotKyNkZWZpbmUgUFRNX0NBUF9TVE9SRV9WT0xBVElMRSAgICAgKDE8PDYpCi0rI2RlZmluZSBQVE1fQ0FQX1JFU0VUX1RQTUVTVEFCTElTSEVEICgxPDw3KQotKyNkZWZpbmUgUFRNX0NBUF9HRVRfU1RBVEVCTE9CICAgICAgKDE8PDgpCi0rI2RlZmluZSBQVE1fQ0FQX1NFVF9TVEFURUJMT0IgICAgICAoMTw8OSkKLSsjZGVmaW5lIFBUTV9DQVBfU1RPUCAgICAgICAgICAgICAgICgxPDwxMCkKLSsjZGVmaW5lIFBUTV9DQVBfR0VUX0NPTkZJRyAgICAgICAgICgxPDwxMSkKLSsKLStlbnVtIHsKLSsgICAgUFRNX0dFVF9DQVBBQklMSVRZICAgICA9IF9JT1IoJ1AnLCAwLCBwdG1fY2FwKSwKLSsgICAgUFRNX0lOSVQgICAgICAgICAgICAgICA9IF9JT1dSKCdQJywgMSwgcHRtX2luaXQpLAotKyAgICBQVE1fU0hVVERPV04gICAgICAgICAgID0gX0lPUignUCcsIDIsIHB0bV9yZXMpLAotKyAgICBQVE1fR0VUX1RQTUVTVEFCTElTSEVEID0gX0lPUignUCcsIDMsIHB0bV9lc3QpLAotKyAgICBQVE1fU0VUX0xPQ0FMSVRZICAgICAgID0gX0lPV1IoJ1AnLCA0LCBwdG1fbG9jKSwKLSsgICAgUFRNX0hBU0hfU1RBUlQgICAgICAgICA9IF9JT1IoJ1AnLCA1LCBwdG1fcmVzKSwKLSsgICAgUFRNX0hBU0hfREFUQSAgICAgICAgICA9IF9JT1dSKCdQJywgNiwgcHRtX2hkYXRhKSwKLSsgICAgUFRNX0hBU0hfRU5EICAgICAgICAgICA9IF9JT1IoJ1AnLCA3LCBwdG1fcmVzKSwKLSsgICAgUFRNX0NBTkNFTF9UUE1fQ01EICAgICA9IF9JT1IoJ1AnLCA4LCBwdG1fcmVzKSwKLSsgICAgUFRNX1NUT1JFX1ZPTEFUSUxFICAgICA9IF9JT1IoJ1AnLCA5LCBwdG1fcmVzKSwKLSsgICAgUFRNX1JFU0VUX1RQTUVTVEFCTElTSEVEID0gX0lPV1IoJ1AnLCAxMCwgcHRtX3Jlc2V0X2VzdCksCi0rICAgIFBUTV9HRVRfU1RBVEVCTE9CICAgICAgPSBfSU9XUignUCcsIDExLCBwdG1fZ2V0c3RhdGUpLAotKyAgICBQVE1fU0VUX1NUQVRFQkxPQiAgICAgID0gX0lPV1IoJ1AnLCAxMiwgcHRtX3NldHN0YXRlKSwKLSsgICAgUFRNX1NUT1AgICAgICAgICAgICAgICA9IF9JT1IoJ1AnLCAxMywgcHRtX3JlcyksCi0rICAgIFBUTV9HRVRfQ09ORklHICAgICAgICAgPSBfSU9SKCdQJywgMTQsIHB0bV9nZXRjb25maWcpLAotK307Ci0rCi0rI2VuZGlmIC8qIF9UUE1fSU9DVExfSCAqLwotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggZTg4YzBkMjBiYy4uMDUwZjJiYTg1MCAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlICJzeXNlbXUvdHBtX2JhY2tlbmRfaW50LmgiCi0gI2luY2x1ZGUgInRwbV90aXMuaCIKLSAjaW5jbHVkZSAidHBtX3V0aWwuaCIKLSsjaW5jbHVkZSAidHBtX2lvY3RsLmgiCi0gCi0gI2RlZmluZSBERUJVR19UUE0gMAotIAotQEAgLTQ1LDYgKzQ2LDcgQEAKLSAjZGVmaW5lIFRZUEVfVFBNX1BBU1NUSFJPVUdIICJ0cG0tcGFzc3Rocm91Z2giCi0gI2RlZmluZSBUUE1fUEFTU1RIUk9VR0gob2JqKSBcCi0gICAgIE9CSkVDVF9DSEVDSyhUUE1QYXNzdGhydVN0YXRlLCAob2JqKSwgVFlQRV9UUE1fUEFTU1RIUk9VR0gpCi0rI2RlZmluZSBUWVBFX1RQTV9DVVNFICJ0cG0tY3VzZSIKLSAKLSBzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRwbV9wYXNzdGhyb3VnaF9kcml2ZXI7Ci0gCi1AQCAtNzEsMTIgKzczLDE4IEBAIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIHsKLSAgICAgYm9vbCBoYWRfc3RhcnR1cF9lcnJvcjsKLSAKLSAgICAgVFBNVmVyc2lvbiB0cG1fdmVyc2lvbjsKLSsgICAgcHRtX2NhcCBjdXNlX2NhcDsgLyogY2FwYWJpbGl0aWVzIG9mIHRoZSBDVVNFIFRQTSAqLwotKyAgICB1aW50OF90IGN1cl9sb2N0eV9udW1iZXI7IC8qIGxhc3Qgc2V0IGxvY2FsaXR5ICovCi0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci0gCi0gI2RlZmluZSBUUE1fUEFTU1RIUk9VR0hfREVGQVVMVF9ERVZJQ0UgIi9kZXYvdHBtMCIKLSAKLSsjZGVmaW5lIFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkgKHRwbV9wdC0+Y3VzZV9jYXAgIT0gMCkKLSsKLSsjZGVmaW5lIFRQTV9DVVNFX0lNUExFTUVOVFNfQUxMKFMsIGNhcCkgKCgoUyktPmN1c2VfY2FwICYgKGNhcCkpID09IChjYXApKQotKwotIC8qIGZ1bmN0aW9ucyAqLwotIAotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kKFRQTUJhY2tlbmQgKnRiKTsKLUBAIC0xNDgsNyArMTU2LDI4IEBAIHN0YXRpYyBib29sIHRwbV9wYXNzdGhyb3VnaF9pc19zZWxmdGVzdChjb25zdCB1aW50OF90ICppbiwgdWludDMyX3QgaW5fbGVuKQotICAgICByZXR1cm4gZmFsc2U7Ci0gfQotIAotK3N0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3NldF9sb2NhbGl0eShUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgbG9jdHlfbnVtYmVyKQotK3sKLSsgICAgcHRtX2xvYyBsb2M7Ci0rCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICBpZiAodHBtX3B0LT5jdXJfbG9jdHlfbnVtYmVyICE9IGxvY3R5X251bWJlcikgewotKyAgICAgICAgICAgIGxvYy51LnJlcS5sb2MgPSBsb2N0eV9udW1iZXI7Ci0rICAgICAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fU0VUX0xPQ0FMSVRZLCAmbG9jKSA8IDApIHsKLSsgICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogY291bGQgbm90IHNldCBsb2NhbGl0eSBvbiAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ1VTRSBUUE06ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgdHBtX3B0LT5jdXJfbG9jdHlfbnVtYmVyID0gbG9jdHlfbnVtYmVyOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiAwOwotK30KLSsKLSBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF91bml4X3R4X2J1ZnMoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxvY2FsaXR5X251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW4sIHVpbnQzMl90IGluX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0LCB1aW50MzJfdCBvdXRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpzZWxmdGVzdF9kb25lKQotQEAgLTE1Nyw2ICsxODYsMTEgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfdW5peF90eF9idWZzKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSAgICAgYm9vbCBpc19zZWxmdGVzdDsKLSAgICAgY29uc3Qgc3RydWN0IHRwbV9yZXNwX2hkciAqaGRyOwotIAotKyAgICByZXQgPSB0cG1fcGFzc3Rocm91Z2hfc2V0X2xvY2FsaXR5KHRwbV9wdCwgbG9jYWxpdHlfbnVtYmVyKTsKLSsgICAgaWYgKHJldCA8IDApIHsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSAgICAgdHBtX3B0LT50cG1fb3BfY2FuY2VsZWQgPSBmYWxzZTsKLSAgICAgdHBtX3B0LT50cG1fZXhlY3V0aW5nID0gdHJ1ZTsKLSAgICAgKnNlbGZ0ZXN0X2RvbmUgPSBmYWxzZTsKLUBAIC0yMDcsMTAgKzI0MSwxMiBAQCBlcnJfZXhpdDoKLSB9Ci0gCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfdW5peF90cmFuc2ZlcihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxvY2FsaXR5X251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQTUxvY2FsaXR5ICpsb2N0eV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqc2VsZnRlc3RfZG9uZSkKLSB7Ci0gICAgIHJldHVybiB0cG1fcGFzc3Rocm91Z2hfdW5peF90eF9idWZzKHRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxpdHlfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2N0eV9kYXRhLT53X2J1ZmZlci5idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY3R5X2RhdGEtPndfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2N0eV9kYXRhLT5yX2J1ZmZlci5idWZmZXIsCi1AQCAtMjMxLDYgKzI2Nyw3IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF93b3JrZXJfdGhyZWFkKGdwb2ludGVyIGRhdGEsCi0gICAgIHN3aXRjaCAoY21kKSB7Ci0gICAgIGNhc2UgVFBNX0JBQ0tFTkRfQ01EX1BST0NFU1NfQ01EOgotICAgICAgICAgdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHJhbnNmZXIodHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyX3Bhcm1zLT50cG1fc3RhdGUtPmxvY3R5X251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocl9wYXJtcy0+dHBtX3N0YXRlLT5sb2N0eV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlbGZ0ZXN0X2RvbmUpOwotIAotQEAgLTI0Nyw2ICsyODQsOTMgQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX3dvcmtlcl90aHJlYWQoZ3BvaW50ZXIgZGF0YSwKLSB9Ci0gCi0gLyoKLSsgKiBHcmFjZWZ1bGx5IHNodXQgZG93biB0aGUgZXh0ZXJuYWwgQ1VTRSBUUE0KLSsgKi8KLStzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfc2h1dGRvd24oVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotK3sKLSsgICAgcHRtX3JlcyByZXM7Ci0rCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICBpZiAoaW9jdGwodHBtX3B0LT50cG1fZmQsIFBUTV9TSFVURE9XTiwgJnJlcykgPCAwKSB7Ci0rICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogQ291bGQgbm90IGNsZWFubHkgc2h1dCBkb3duICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBDVVNFIFRQTTogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgfQotKyAgICB9Ci0rfQotKwotKy8qCi0rICogUHJvYmUgZm9yIHRoZSBDVVNFIFRQTSBieSBzZW5kaW5nIGFuIGlvY3RsKCkgcmVxdWVzdGluZyBpdHMKLSsgKiBjYXBhYmlsaXR5IGZsYWdzLgotKyAqLwotK3N0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfcHJvYmUoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotK3sKLSsgICAgaW50IHJjID0gMDsKLSsKLSsgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fR0VUX0NBUEFCSUxJVFksICZ0cG1fcHQtPmN1c2VfY2FwKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiRXJyb3I6IENVU0UgVFBNIHdhcyByZXF1ZXN0ZWQsIGJ1dCBwcm9iaW5nIGZhaWxlZCIpOwotKyAgICAgICAgcmMgPSAtMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gcmM7Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY2hlY2tfY2FwcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rewotKyAgICBpbnQgcmMgPSAwOwotKyAgICBwdG1fY2FwIGNhcHMgPSAwOwotKyAgICBjb25zdCBjaGFyICp0cG0gPSBOVUxMOwotKwotKyAgICAvKiBjaGVjayBmb3IgbWluLiByZXF1aXJlZCBjYXBhYmlsaXRpZXMgKi8KLSsgICAgc3dpdGNoICh0cG1fcHQtPnRwbV92ZXJzaW9uKSB7Ci0rICAgIGNhc2UgVFBNX1ZFUlNJT05fMV8yOgotKyAgICAgICAgY2FwcyA9IFBUTV9DQVBfSU5JVCB8IFBUTV9DQVBfU0hVVERPV04gfCBQVE1fQ0FQX0dFVF9UUE1FU1RBQkxJU0hFRCB8Ci0rICAgICAgICAgICAgICAgUFRNX0NBUF9TRVRfTE9DQUxJVFk7Ci0rICAgICAgICB0cG0gPSAiMS4yIjsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFRQTV9WRVJTSU9OXzJfMDoKLSsgICAgICAgIGNhcHMgPSBQVE1fQ0FQX0lOSVQgfCBQVE1fQ0FQX1NIVVRET1dOIHwgUFRNX0NBUF9HRVRfVFBNRVNUQUJMSVNIRUQgfAotKyAgICAgICAgICAgICAgIFBUTV9DQVBfU0VUX0xPQ0FMSVRZIHwgUFRNX0NBUF9SRVNFVF9UUE1FU1RBQkxJU0hFRDsKLSsgICAgICAgIHRwbSA9ICIyIjsKLSsgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFRQTV9WRVJTSU9OX1VOU1BFQzoKLSsgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6ICVzOiBUUE0gdmVyc2lvbiBoYXMgbm90IGJlZW4gc2V0IiwKLSsgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7Ci0rICAgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCFUUE1fQ1VTRV9JTVBMRU1FTlRTX0FMTCh0cG1fcHQsIGNhcHMpKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9jdXNlOiBUUE0gZG9lcyBub3QgaW1wbGVtZW50IG1pbmltdW0gc2V0IG9mIHJlcXVpcmVkICIKLSsgICAgICAgICAgICAgICAgICAgICAiY2FwYWJpbGl0aWVzIGZvciBUUE0gJXMgKDB4JXgpIiwgdHBtLCAoaW50KWNhcHMpOwotKyAgICAgICAgcmMgPSAtMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gcmM7Ci0rfQotKwotKy8qCi0rICogSW5pdGlhbGl6ZSB0aGUgZXh0ZXJuYWwgQ1VTRSBUUE0KLSsgKi8KLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotK3sKLSsgICAgaW50IHJjID0gMDsKLSsgICAgcHRtX2luaXQgaW5pdCA9IHsKLSsgICAgICAgIC51LnJlcS5pbml0X2ZsYWdzID0gUFRNX0lOSVRfRkxBR19ERUxFVEVfVk9MQVRJTEUsCi0rICAgIH07Ci0rCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICBpZiAoaW9jdGwodHBtX3B0LT50cG1fZmQsIFBUTV9JTklULCAmaW5pdCkgPCAwKSB7Ci0rICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogRGV0ZWN0ZWQgQ1VTRSBUUE0gYnV0IGNvdWxkIG5vdCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kIElOSVQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICByYyA9IC0xOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIHJldHVybiByYzsKLSt9Ci0rCi0rLyoKLSAgKiBTdGFydCB0aGUgVFBNICh0aHJlYWQpLiBJZiBpdCBoYWQgYmVlbiBzdGFydGVkIGJlZm9yZSwgdGhlbiB0ZXJtaW5hdGUKLSAgKiBhbmQgc3RhcnQgaXQgYWdhaW4uCi0gICovCi1AQCAtMjYxLDYgKzM4NSw4IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3N0YXJ0dXBfdHBtKFRQTUJhY2tlbmQgKnRiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9wYXNzdGhyb3VnaF93b3JrZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fcHQtPnRwbV90aHJlYWRfcGFyYW1zKTsKLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQpOwotKwotICAgICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMjkxLDE0ICs0MTcsNDMgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaW5pdChUUE1CYWNrZW5kICp0YiwgVFBNU3RhdGUgKnMsCi0gCi0gc3RhdGljIGJvb2wgdHBtX3Bhc3N0aHJvdWdoX2dldF90cG1fZXN0YWJsaXNoZWRfZmxhZyhUUE1CYWNrZW5kICp0YikKLSB7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rICAgIHB0bV9lc3QgZXN0OwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fR0VUX1RQTUVTVEFCTElTSEVELCAmZXN0KSA8IDApIHsKLSsgICAgICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9jdXNlOiBDb3VsZCBub3QgZ2V0IHRoZSBUUE0gZXN0YWJsaXNoZWQgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZyBmcm9tIHRoZSBDVVNFIFRQTTogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldHVybiAoZXN0LnUucmVzcC5iaXQgIT0gMCk7Ci0rICAgIH0KLSAgICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLSBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9yZXNldF90cG1fZXN0YWJsaXNoZWRfZmxhZyhUUE1CYWNrZW5kICp0YiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxvY3R5KQotIHsKLSsgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSsgICAgaW50IHJjID0gMDsKLSsgICAgcHRtX3Jlc2V0X2VzdCBwdG1yZXNldF9lc3Q7Ci0rCi0gICAgIC8qIG9ubHkgYSBUUE0gMi4wIHdpbGwgc3VwcG9ydCB0aGlzICovCi0tICAgIHJldHVybiAwOwotKyAgICBpZiAodHBtX3B0LT50cG1fdmVyc2lvbiA9PSBUUE1fVkVSU0lPTl8yXzApIHsKLSsgICAgICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICAgICAgcHRtcmVzZXRfZXN0LnUucmVxLmxvYyA9IHRwbV9wdC0+Y3VyX2xvY3R5X251bWJlcjsKLSsKLSsgICAgICAgICAgICBpZiAoaW9jdGwodHBtX3B0LT50cG1fZmQsIFBUTV9SRVNFVF9UUE1FU1RBQkxJU0hFRCwKLSsgICAgICAgICAgICAgICAgICAgICAgJnB0bXJlc2V0X2VzdCkgPCAwKSB7Ci0rICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IENvdWxkIG5vdCByZXNldCB0aGUgZXN0YWJsaXNobWVudCBiaXQgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICAgICAgcmMgPSAtMTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgICAgcmV0dXJuIHJjOwotIH0KLSAKLSBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfZ2V0X3N0YXJ0dXBfZXJyb3IoVFBNQmFja2VuZCAqdGIpCi1AQCAtMzI5LDcgKzQ4NCw4IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9kZWxpdmVyX3JlcXVlc3QoVFBNQmFja2VuZCAqdGIpCi0gc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2NhbmNlbF9jbWQoVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotLSAgICBpbnQgbjsKLSsgICAgcHRtX3JlcyByZXM7Ci0rICAgIHN0YXRpYyBib29sIGVycm9yX3ByaW50ZWQ7Ci0gCi0gICAgIC8qCi0gICAgICAqIEFzIG9mIExpbnV4IDMuNyB0aGUgdHBtX3RpcyBkcml2ZXIgZG9lcyBub3QgcHJvcGVybHkgY2FuY2VsCi1AQCAtMzM4LDE3ICs0OTQsMzQgQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2NhbmNlbF9jbWQoVFBNQmFja2VuZCAqdGIpCi0gICAgICAqIGNvbW1hbmQsIGUuZy4sIGEgY29tbWFuZCBleGVjdXRlZCBvbiB0aGUgaG9zdC4KLSAgICAgICovCi0gICAgIGlmICh0cG1fcHQtPnRwbV9leGVjdXRpbmcpIHsKLS0gICAgICAgIGlmICh0cG1fcHQtPmNhbmNlbF9mZCA+PSAwKSB7Ci0tICAgICAgICAgICAgbiA9IHdyaXRlKHRwbV9wdC0+Y2FuY2VsX2ZkLCAiLSIsIDEpOwotLSAgICAgICAgICAgIGlmIChuICE9IDEpIHsKLS0gICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJDYW5jZWxpbmcgVFBNIGNvbW1hbmQgZmFpbGVkOiAlcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotLSAgICAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgICAgIHRwbV9wdC0+dHBtX29wX2NhbmNlbGVkID0gdHJ1ZTsKLSsgICAgICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICAgICAgaWYgKFRQTV9DVVNFX0lNUExFTUVOVFNfQUxMKHRwbV9wdCwgUFRNX0NBUF9DQU5DRUxfVFBNX0NNRCkpIHsKLSsgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fQ0FOQ0VMX1RQTV9DTUQsICZyZXMpIDwgMCkgewotKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogQ291bGQgbm90IGNhbmNlbCBjb21tYW5kIG9uICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ1VTRSBUUE06ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyAhPSBUUE1fU1VDQ0VTUykgewotKyAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnJvcl9wcmludGVkKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJUUE0gZXJyb3IgY29kZSBmcm9tIGNvbW1hbmQgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuY2VsbGF0aW9uIG9mIENVU0UgVFBNOiAweCV4IiwgcmVzKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9wcmludGVkID0gdHJ1ZTsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIHRwbV9wdC0+dHBtX29wX2NhbmNlbGVkID0gdHJ1ZTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJDYW5ub3QgY2FuY2VsIFRQTSBjb21tYW5kIGR1ZSB0byBtaXNzaW5nICIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIlRQTSBzeXNmcyBjYW5jZWwgZW50cnkiKTsKLSsgICAgICAgICAgICBpZiAodHBtX3B0LT5jYW5jZWxfZmQgPj0gMCkgewotKyAgICAgICAgICAgICAgICBpZiAod3JpdGUodHBtX3B0LT5jYW5jZWxfZmQsICItIiwgMSkgIT0gMSkgewotKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJDYW5jZWxpbmcgVFBNIGNvbW1hbmQgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIHRwbV9wdC0+dHBtX29wX2NhbmNlbGVkID0gdHJ1ZTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2Fubm90IGNhbmNlbCBUUE0gY29tbWFuZCBkdWUgdG8gbWlzc2luZyAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVFBNIHN5c2ZzIGNhbmNlbCBlbnRyeSIpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfQotIH0KLUBAIC0zNzgsNiArNTUxLDExIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX29wZW5fc3lzZnNfY2FuY2VsKFRQTUJhY2tlbmQgKnRiKQotICAgICBjaGFyICpkZXY7Ci0gICAgIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICAvKiBub3QgbmVlZGVkLCBidXQgc28gd2UgaGF2ZSBhIGZkICovCi0rICAgICAgICByZXR1cm4gcWVtdV9vcGVuKCIvZGV2L251bGwiLCBPX1dST05MWSk7Ci0rICAgIH0KLSsKLSAgICAgaWYgKHRiLT5jYW5jZWxfcGF0aCkgewotICAgICAgICAgZmQgPSBxZW11X29wZW4odGItPmNhbmNlbF9wYXRoLCBPX1dST05MWSk7Ci0gICAgICAgICBpZiAoZmQgPCAwKSB7Ci1AQCAtNDEyLDEyICs1OTAsMjIgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSB7Ci0gICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0gICAgIGNvbnN0IGNoYXIgKnZhbHVlOwotKyAgICBib29sIGhhdmVfY3VzZSA9IGZhbHNlOwotKwotKyAgICB2YWx1ZSA9IHFlbXVfb3B0X2dldChvcHRzLCAidHlwZSIpOwotKyAgICBpZiAodmFsdWUgIT0gTlVMTCAmJiAhc3RyY21wKCJjdXNlLXRwbSIsIHZhbHVlKSkgewotKyAgICAgICAgaGF2ZV9jdXNlID0gdHJ1ZTsKLSsgICAgfQotIAotICAgICB2YWx1ZSA9IHFlbXVfb3B0X2dldChvcHRzLCAiY2FuY2VsLXBhdGgiKTsKLSAgICAgdGItPmNhbmNlbF9wYXRoID0gZ19zdHJkdXAodmFsdWUpOwotIAotICAgICB2YWx1ZSA9IHFlbXVfb3B0X2dldChvcHRzLCAicGF0aCIpOwotICAgICBpZiAoIXZhbHVlKSB7Ci0rICAgICAgICBpZiAoaGF2ZV9jdXNlKSB7Ci0rICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJNaXNzaW5nIHBhdGggdG8gYWNjZXNzIENVU0UgVFBNIik7Ci0rICAgICAgICAgICAgZ290byBlcnJfZnJlZV9wYXJhbWV0ZXJzOwotKyAgICAgICAgfQotICAgICAgICAgdmFsdWUgPSBUUE1fUEFTU1RIUk9VR0hfREVGQVVMVF9ERVZJQ0U7Ci0gICAgIH0KLSAKLUBAIC00MzIsMTUgKzYyMCwzNiBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9oYW5kbGVfZGV2aWNlX29wdHMoUWVtdU9wdHMgKm9wdHMsIFRQTUJhY2tlbmQgKnRiKQotICAgICAgICAgZ290byBlcnJfZnJlZV9wYXJhbWV0ZXJzOwotICAgICB9Ci0gCi0rICAgIHRwbV9wdC0+Y3VyX2xvY3R5X251bWJlciA9IH4wOwotKwotKyAgICBpZiAoaGF2ZV9jdXNlKSB7Ci0rICAgICAgICBpZiAodHBtX3Bhc3N0aHJvdWdoX2N1c2VfcHJvYmUodHBtX3B0KSkgewotKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX3RwbWRldjsKLSsgICAgICAgIH0KLSsgICAgICAgIC8qIGluaXQgVFBNIGZvciBwcm9iaW5nICovCi0rICAgICAgICBpZiAodHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQpKSB7Ci0rICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0gICAgIGlmICh0cG1fdXRpbF90ZXN0X3RwbWRldih0cG1fcHQtPnRwbV9mZCwgJnRwbV9wdC0+dHBtX3ZlcnNpb24pKSB7Ci0gICAgICAgICBlcnJvcl9yZXBvcnQoIiclcycgaXMgbm90IGEgVFBNIGRldmljZS4iLAotICAgICAgICAgICAgICAgICAgICAgIHRwbV9wdC0+dHBtX2Rldik7Ci0gICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0gICAgIH0KLSAKLSsgICAgaWYgKGhhdmVfY3VzZSkgewotKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2NoZWNrX2NhcHModHBtX3B0KSkgewotKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX3RwbWRldjsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKwotICAgICByZXR1cm4gMDsKLSAKLSAgZXJyX2Nsb3NlX3RwbWRldjoKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX3NodXRkb3duKHRwbV9wdCk7Ci0rCi0gICAgIHFlbXVfY2xvc2UodHBtX3B0LT50cG1fZmQpOwotICAgICB0cG1fcHQtPnRwbV9mZCA9IC0xOwotIAotQEAgLTQ5MSw2ICs3MDAsOCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVzdHJveShUUE1CYWNrZW5kICp0YikKLSAKLSAgICAgdHBtX2JhY2tlbmRfdGhyZWFkX2VuZCgmdHBtX3B0LT50YnQpOwotIAotKyAgICB0cG1fcGFzc3Rocm91Z2hfc2h1dGRvd24odHBtX3B0KTsKLSsKLSAgICAgcWVtdV9jbG9zZSh0cG1fcHQtPnRwbV9mZCk7Ci0gICAgIHFlbXVfY2xvc2UodHBtX3B0LT5jYW5jZWxfZmQpOwotIAotQEAgLTU2NCwzICs3NzUsNDQgQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX3JlZ2lzdGVyKHZvaWQpCi0gfQotIAotIHR5cGVfaW5pdCh0cG1fcGFzc3Rocm91Z2hfcmVnaXN0ZXIpCi0rCi0rLyogQ1VTRSBUUE0gKi8KLStzdGF0aWMgY29uc3QgY2hhciAqdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY3JlYXRlX2Rlc2Modm9pZCkKLSt7Ci0rICAgIHJldHVybiAiQ1VTRSBUUE0gYmFja2VuZCBkcml2ZXIiOwotK30KLSsKLStzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRwbV9jdXNlX2RyaXZlciA9IHsKLSsgICAgLnR5cGUgICAgICAgICAgICAgICAgICAgICA9IFRQTV9UWVBFX0NVU0VfVFBNLAotKyAgICAub3B0cyAgICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2NtZGxpbmVfb3B0cywKLSsgICAgLmRlc2MgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjLAotKyAgICAuY3JlYXRlICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2NyZWF0ZSwKLSsgICAgLmRlc3Ryb3kgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9kZXN0cm95LAotKyAgICAuaW5pdCAgICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2luaXQsCi0rICAgIC5zdGFydHVwX3RwbSAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfc3RhcnR1cF90cG0sCi0rICAgIC5yZWFsbG9jX2J1ZmZlciAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfcmVhbGxvY19idWZmZXIsCi0rICAgIC5yZXNldCAgICAgICAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfcmVzZXQsCi0rICAgIC5oYWRfc3RhcnR1cF9lcnJvciAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfZ2V0X3N0YXJ0dXBfZXJyb3IsCi0rICAgIC5kZWxpdmVyX3JlcXVlc3QgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0LAotKyAgICAuY2FuY2VsX2NtZCAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2NhbmNlbF9jbWQsCi0rICAgIC5nZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcgPSB0cG1fcGFzc3Rocm91Z2hfZ2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnLAotKyAgICAucmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcgPSB0cG1fcGFzc3Rocm91Z2hfcmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcsCi0rICAgIC5nZXRfdHBtX3ZlcnNpb24gICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfZ2V0X3RwbV92ZXJzaW9uLAotK307Ci0rCi0rc3RhdGljIGNvbnN0IFR5cGVJbmZvIHRwbV9jdXNlX2luZm8gPSB7Ci0rICAgIC5uYW1lID0gVFlQRV9UUE1fQ1VTRSwKLSsgICAgLnBhcmVudCA9IFRZUEVfVFBNX0JBQ0tFTkQsCi0rICAgIC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAuY2xhc3NfaW5pdCA9IHRwbV9wYXNzdGhyb3VnaF9jbGFzc19pbml0LAotKyAgICAuaW5zdGFuY2VfaW5pdCA9IHRwbV9wYXNzdGhyb3VnaF9pbnN0X2luaXQsCi0rICAgIC5pbnN0YW5jZV9maW5hbGl6ZSA9IHRwbV9wYXNzdGhyb3VnaF9pbnN0X2ZpbmFsaXplLAotK307Ci0rCi0rc3RhdGljIHZvaWQgdHBtX2N1c2VfcmVnaXN0ZXIodm9pZCkKLSt7Ci0rICAgIHR5cGVfcmVnaXN0ZXJfc3RhdGljKCZ0cG1fY3VzZV9pbmZvKTsKLSsgICAgdHBtX3JlZ2lzdGVyX2RyaXZlcigmdHBtX2N1c2VfZHJpdmVyKTsKLSt9Ci0rCi0rdHlwZV9pbml0KHRwbV9jdXNlX3JlZ2lzdGVyKQotZGlmZiAtLWdpdCBhL3FhcGktc2NoZW1hLmpzb24gYi9xYXBpLXNjaGVtYS5qc29uCi1pbmRleCA1NjU4NzIzYjM3Li41MzEyMGQwZjYzIDEwMDY0NAotLS0tIGEvcWFwaS1zY2hlbWEuanNvbgotKysrIGIvcWFwaS1zY2hlbWEuanNvbgotQEAgLTM1MjIsMTAgKzM1MjIsMTIgQEAKLSAjIEFuIGVudW1lcmF0aW9uIG9mIFRQTSB0eXBlcwotICMKLSAjIEBwYXNzdGhyb3VnaDogVFBNIHBhc3N0aHJvdWdoIHR5cGUKLSsjIEBjdXNlLXRwbTogQ1VTRSBUUE0gdHlwZQotKyMgICAgICAgICAgICBTaW5jZTogMi42Ci0gIwotICMgU2luY2U6IDEuNQotICMjCi0teyAnZW51bSc6ICdUcG1UeXBlJywgJ2RhdGEnOiBbICdwYXNzdGhyb3VnaCcgXSB9Ci0reyAnZW51bSc6ICdUcG1UeXBlJywgJ2RhdGEnOiBbICdwYXNzdGhyb3VnaCcsICdjdXNlLXRwbScgXSB9Ci0gCi0gIyMKLSAjIEBxdWVyeS10cG0tdHlwZXM6Ci1AQCAtMzU1NCw2ICszNTU2LDE3IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJypjYW5jZWwtcGF0aCcgOiAnc3RyJ30gfQotIAotICMjCi0rIyBAVFBNQ3VzZU9wdGlvbnM6Ci0rIwotKyMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIENVU0UgVFBNIHR5cGUKLSsjCi0rIyBAcGF0aDogc3RyaW5nIGRlc2NyaWJpbmcgdGhlIHBhdGggdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSBUUE0gZGV2aWNlCi0rIwotKyMgU2luY2U6IDIuNgotKyMjCi0reyAnc3RydWN0JzogJ1RQTUN1c2VPcHRpb25zJywgJ2RhdGEnOiB7ICdwYXRoJyA6ICdzdHInfX0KLSsKLSsjIwotICMgQFRwbVR5cGVPcHRpb25zOgotICMKLSAjIEEgdW5pb24gcmVmZXJlbmNpbmcgZGlmZmVyZW50IFRQTSBiYWNrZW5kIHR5cGVzJyBjb25maWd1cmF0aW9uIG9wdGlvbnMKLUBAIC0zNTYzLDcgKzM1NzYsOCBAQAotICMgU2luY2U6IDEuNQotICMjCi0geyAndW5pb24nOiAnVHBtVHlwZU9wdGlvbnMnLAotLSAgICdkYXRhJzogeyAncGFzc3Rocm91Z2gnIDogJ1RQTVBhc3N0aHJvdWdoT3B0aW9ucycgfSB9Ci0rICAgJ2RhdGEnOiB7ICdwYXNzdGhyb3VnaCcgOiAnVFBNUGFzc3Rocm91Z2hPcHRpb25zJywKLSsgICAgICAgICAgICAgJ2N1c2UtdHBtJyA6ICdUUE1DdXNlT3B0aW9ucycgfSB9Ci0gCi0gIyMKLSAjIEBUcG1JbmZvOgotZGlmZiAtLWdpdCBhL3FlbXUtb3B0aW9ucy5oeCBiL3FlbXUtb3B0aW9ucy5oeAotaW5kZXggYTcxYWFmOGVhOC4uZTBmMWQ4ZTY3NiAxMDA2NDQKLS0tLSBhL3FlbXUtb3B0aW9ucy5oeAotKysrIGIvcWVtdS1vcHRpb25zLmh4Ci1AQCAtMjc2Myw3ICsyNzYzLDEwIEBAIERFRigidHBtZGV2IiwgSEFTX0FSRywgUUVNVV9PUFRJT05fdHBtZGV2LCBcCi0gICAgICItdHBtZGV2IHBhc3N0aHJvdWdoLGlkPWlkWyxwYXRoPXBhdGhdWyxjYW5jZWwtcGF0aD1wYXRoXVxuIgotICAgICAiICAgICAgICAgICAgICAgIHVzZSBwYXRoIHRvIHByb3ZpZGUgcGF0aCB0byBhIGNoYXJhY3RlciBkZXZpY2U7IGRlZmF1bHQgaXMgL2Rldi90cG0wXG4iCi0gICAgICIgICAgICAgICAgICAgICAgdXNlIGNhbmNlbC1wYXRoIHRvIHByb3ZpZGUgcGF0aCB0byBUUE0ncyBjYW5jZWwgc3lzZnMgZW50cnk7IGlmXG4iCi0tICAgICIgICAgICAgICAgICAgICAgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgc2VhcmNoZWQgZm9yIGluIC9zeXMvY2xhc3MvbWlzYy90cG0/L2RldmljZVxuIiwKLSsgICAgIiAgICAgICAgICAgICAgICBub3QgcHJvdmlkZWQgaXQgd2lsbCBiZSBzZWFyY2hlZCBmb3IgaW4gL3N5cy9jbGFzcy9taXNjL3RwbT8vZGV2aWNlXG4iCi0rICAgICItdHBtZGV2IGN1c2UtdHBtLGlkPWlkLHBhdGg9cGF0aFxuIgotKyAgICAiICAgICAgICAgICAgICAgIHVzZSBwYXRoIHRvIHByb3ZpZGUgcGF0aCB0byBhIGNoYXJhY3RlciBkZXZpY2UgdG8gdGFsayB0byB0aGVcbiIKLSsgICAgIiAgICAgICAgICAgICAgICBUUE0gZW11bGF0b3IgcHJvdmlkaW5nIGEgQ1VTRSBpbnRlcmZhY2VcbiIsCi0gICAgIFFFTVVfQVJDSF9BTEwpCi0gU1RFWEkKLSAKLUBAIC0yNzcyLDggKzI3NzUsOCBAQCBUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgVFBNIGRldmljZSBvcHRpb24gaXM6Ci0gCi0gQGl0ZW0gLXRwbWRldiBAdmFye2JhY2tlbmR9ICxpZD1AdmFye2lkfSBbLEB2YXJ7b3B0aW9uc31dCi0gQGZpbmRleCAtdHBtZGV2Ci0tQmFja2VuZCB0eXBlIG11c3QgYmU6Ci0tQG9wdGlvbntwYXNzdGhyb3VnaH0uCi0rQmFja2VuZCB0eXBlIG11c3QgYmUgZWl0aGVyIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotK0BvcHRpb257cGFzc3Rocm91Z2h9LCBAb3B0aW9ue2N1c2UtdHBtfS4KLSAKLSBUaGUgc3BlY2lmaWMgYmFja2VuZCB0eXBlIHdpbGwgZGV0ZXJtaW5lIHRoZSBhcHBsaWNhYmxlIG9wdGlvbnMuCi0gVGhlIEBjb2Rley10cG1kZXZ9IG9wdGlvbiBjcmVhdGVzIHRoZSBUUE0gYmFja2VuZCBhbmQgcmVxdWlyZXMgYQotQEAgLTI4MjMsNiArMjgyNiwxOCBAQCBUbyBjcmVhdGUgYSBwYXNzdGhyb3VnaCBUUE0gdXNlIHRoZSBmb2xsb3dpbmcgdHdvIG9wdGlvbnM6Ci0gTm90ZSB0aGF0IHRoZSBAY29kZXstdHBtZGV2fSBpZCBpcyBAY29kZXt0cG0wfSBhbmQgaXMgcmVmZXJlbmNlZCBieQotIEBjb2Rle3RwbWRldj10cG0wfSBpbiB0aGUgZGV2aWNlIG9wdGlvbi4KLSAKLStAaXRlbSAtdHBtZGV2IGN1c2UtdHBtLCBpZD1AdmFye2lkfSwgcGF0aD1AdmFye3BhdGh9Ci0rCi0rKExpbnV4LWhvc3Qgb25seSkgRW5hYmxlIGFjY2VzcyB0byBhIFRQTSBlbXVsYXRvciB3aXRoIGEgQ1VTRSBpbnRlcmZhY2UuCi0rCi0rQG9wdGlvbntwYXRofSBzcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIENVU0UgVFBNIGNoYXJhY3RlciBkZXZpY2UuCi0rCi0rVG8gY3JlYXRlIGEgYmFja2VuZCBkZXZpY2UgYWNjZXNzaW5nIHRoZSBDVVNFIFRQTSBlbXVsYXRvciB1c2luZyAvZGV2L3Z0cG0KLSt1c2UgdGhlIGZvbGxvd2luZyB0d28gb3B0aW9uczoKLStAZXhhbXBsZQotKy10cG1kZXYgY3VzZS10cG0saWQ9dHBtMCxwYXRoPS9kZXYvdnRwbSAtZGV2aWNlIHRwbS10aXMsdHBtZGV2PXRwbTAKLStAZW5kIGV4YW1wbGUKLSsKLSBAZW5kIHRhYmxlCi0gCi0gRVRFWEkKLWRpZmYgLS1naXQgYS90cG0uYyBiL3RwbS5jCi1pbmRleCA5YTdjNzExNGQzLi41ZWMyMzczMjg2IDEwMDY0NAotLS0tIGEvdHBtLmMKLSsrKyBiL3RwbS5jCi1AQCAtMjUsNyArMjUsNyBAQCBzdGF0aWMgUUxJU1RfSEVBRCgsIFRQTUJhY2tlbmQpIHRwbV9iYWNrZW5kcyA9Ci0gCi0gCi0gI2RlZmluZSBUUE1fTUFYX01PREVMUyAgICAgIDEKLS0jZGVmaW5lIFRQTV9NQVhfRFJJVkVSUyAgICAgMQotKyNkZWZpbmUgVFBNX01BWF9EUklWRVJTICAgICAyCi0gCi0gc3RhdGljIFRQTURyaXZlck9wcyBjb25zdCAqYmVfZHJpdmVyc1tUUE1fTUFYX0RSSVZFUlNdID0gewotICAgICBOVUxMLAotQEAgLTI3Miw2ICsyNzIsMTUgQEAgc3RhdGljIFRQTUluZm8gKnFtcF9xdWVyeV90cG1faW5zdChUUE1CYWNrZW5kICpkcnYpCi0gICAgICAgICAgICAgdHBvLT5oYXNfY2FuY2VsX3BhdGggPSB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgVFBNX1RZUEVfQ1VTRV9UUE06Ci0rICAgICAgICByZXMtPm9wdGlvbnMtPnR5cGUgPSBUUE1fVFlQRV9PUFRJT05TX0tJTkRfQ1VTRV9UUE07Ci0rICAgICAgICB0cG8gPSBnX25ldzAoVFBNUGFzc3Rocm91Z2hPcHRpb25zLCAxKTsKLSsgICAgICAgIHJlcy0+b3B0aW9ucy0+dS5wYXNzdGhyb3VnaC5kYXRhID0gdHBvOwotKyAgICAgICAgaWYgKGRydi0+cGF0aCkgewotKyAgICAgICAgICAgIHRwby0+cGF0aCA9IGdfc3RyZHVwKGRydi0+cGF0aCk7Ci0rICAgICAgICAgICAgdHBvLT5oYXNfcGF0aCA9IHRydWU7Ci0rICAgICAgICB9Ci0rICAgICAgICBicmVhazsKLSAgICAgY2FzZSBUUE1fVFlQRV9fTUFYOgotICAgICAgICAgYnJlYWs7Ci0gICAgIH0KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtYXJtLXRyYW5zbGF0ZS1hNjQtdHJlYXQtRElTQVNfVVBEQVRFLWFzLXZhcmlhbnQtb2YtRC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtYXJtLXRyYW5zbGF0ZS1hNjQtdHJlYXQtRElTQVNfVVBEQVRFLWFzLXZhcmlhbnQtb2YtRC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTBjYWU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1hcm0tdHJhbnNsYXRlLWE2NC10cmVhdC1ESVNBU19VUERBVEUtYXMtdmFyaWFudC1vZi1ELnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gYTc1YTUyZDYyNDE4ZGFmZTQ2MmJlNGZlMzA0ODU1MDFkMTAxMGJiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogRnJpLCAyMyBNYXIgMjAxOCAxODoyNjo0NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBhcm0vdHJhbnNsYXRlLWE2NDogdHJlYXQgRElTQVNfVVBEQVRFIGFzIHZhcmlhbnQgb2YKKyBESVNBU19FWElUCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0luIE9FIHByb2plY3QgNC4xNSBsaW51eCBrZXJuZWwgYm9vdCBoYW5nIHdhcyBvYnNlcnZlZCB1bmRlcgorc2luZ2xlIGNwdSBhYXJjaDY0IHFlbXUuIEtlcm5lbCBjb2RlIHdhcyBpbiBhIGxvb3Agd2FpdGluZyBmb3IKK3Z0aW1lciBhcnJpdmFsLCBzcGlubmluZyBpbiBUQyBnZW5lcmF0ZWQgYmxvY2tzLCB3aGlsZSBpbnRlcnJ1cHQKK3dhcyBwZW5kaW5nIHVucHJvY2Vzc2VkLiBUaGlzIGhhcHBlbmVkIGJlY2F1c2Ugd2hlbiBxZW11IHRyaWVkIHRvCitoYW5kbGUgdnRpbWVyIGludGVycnVwdCB0YXJnZXQgaGFkIGludGVycnVwdHMgZGlzYWJsZWQsIGFzCityZXN1bHQgZmxhZyBpbmRpY2F0aW5nIFRDRyBleGl0LCBjcHUtPmljb3VudF9kZWNyLnUxNi5oaWdoLAord2FzIGNsZWFyZWQgYnV0IGFybV9jcHVfZXhlY19pbnRlcnJ1cHQgZnVuY3Rpb24gZGlkIG5vdCBjYWxsCithcm1fY3B1X2RvX2ludGVycnVwdCB0byBwcm9jZXNzIGludGVycnVwdC4gTGF0ZXIgd2hlbiB0YXJnZXQKK3JlZW5hYmxlZCBpbnRlcnJ1cHRzLCBpdCBoYXBwZW5lZCB3aXRob3V0IGV4aXQgaW50byBtYWluIGxvb3AsIHNvCitmb2xsb3dpbmcgY29kZSB0aGF0IHdhaXRlZCBmb3IgcmVzdWx0IG9mIGludGVycnVwdCBleGVjdXRpb24KK3J1biBpbiBpbmZpbml0ZSBsb29wLgorCitUbyBzb2x2ZSB0aGUgcHJvYmxlbSBpbnN0cnVjdGlvbnMgdGhhdCBvcGVyYXRlIG9uIENQVSBzeXMgc3RhdGUKKyhpLmUgZW5hYmxlL2Rpc2FibGUgaW50ZXJydXB0KSwgYW5kIG1hcmtlZCBhcyBESVNBU19VUERBVEUsCitzaG91bGQgYmUgY29uc2lkZXJlZCBhcyBESVNBU19FWElUIHZhcmlhbnQsIGFuZCBzaG91bGQgYmUKK2ZvcmNlZCB0byBleGl0IGJhY2sgdG8gbWFpbiBsb29wIHNvIHFlbXUgd2lsbCBoYXZlIGEgY2hhbmNlCitwcm9jZXNzaW5nIHBlbmRpbmcgQ1BVIHN0YXRlIHVwZGF0ZXMsIGluY2x1ZGluZyBwZW5kaW5nCitpbnRlcnJ1cHRzLgorCitUaGlzIGNoYW5nZSBicmluZ3MgY29uc2lzdGVuY3kgd2l0aCBob3cgRElTQVNfVVBEQVRFIGlzIHRyZWF0ZWQKK2luIGFhcmNoMzIgY2FzZS4KKworQ0M6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KK0NDOiBBbGV4IEJlbm7DqWUgPGFsZXguYmVubmVlQGxpbmFyby5vcmc+CitDQzogcWVtdS1zdGFibGVAbm9uZ251Lm9yZworU3VnZ2VzdGVkLWJ5OiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK1Jldmlld2VkLWJ5OiBSaWNoYXJkIEhlbmRlcnNvbiA8cmljaGFyZC5oZW5kZXJzb25AbGluYXJvLm9yZz4KK01lc3NhZ2UtaWQ6IDE1MjE1MjYzNjgtMTk5Ni0xLWdpdC1zZW5kLWVtYWlsLWthbWVuc2t5QGNpc2NvLmNvbQorU2lnbmVkLW9mZi1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorLS0tCisgdGFyZ2V0L2FybS90cmFuc2xhdGUtYTY0LmMgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYyBiL3RhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jCitpbmRleCAzMWZmMDQ3Li4zMjc1MTNlIDEwMDY0NAorLS0tIGEvdGFyZ2V0L2FybS90cmFuc2xhdGUtYTY0LmMKKysrKyBiL3RhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jCitAQCAtMTMzNzgsMTIgKzEzMzc4LDEyIEBAIHN0YXRpYyB2b2lkIGFhcmNoNjRfdHJfdGJfc3RvcChEaXNhc0NvbnRleHRCYXNlICpkY2Jhc2UsIENQVVN0YXRlICpjcHUpCisgICAgICAgICBjYXNlIERJU0FTX1VQREFURToKKyAgICAgICAgICAgICBnZW5fYTY0X3NldF9wY19pbShkYy0+cGMpOworICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworLSAgICAgICAgY2FzZSBESVNBU19KVU1QOgorLSAgICAgICAgICAgIHRjZ19nZW5fbG9va3VwX2FuZF9nb3RvX3B0cigpOworLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBESVNBU19FWElUOgorICAgICAgICAgICAgIHRjZ19nZW5fZXhpdF90YigwKTsKKyAgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgRElTQVNfSlVNUDoKKysgICAgICAgICAgICB0Y2dfZ2VuX2xvb2t1cF9hbmRfZ290b19wdHIoKTsKKysgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgRElTQVNfTk9SRVRVUk46CisgICAgICAgICBjYXNlIERJU0FTX1NXSToKKyAgICAgICAgICAgICBicmVhazsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1JbnRyb2R1Y2UtY29uZGl0aW9uLXRvLW5vdGlmeS13YWl0ZXJzLW9mLWNvbXBsZXRlZC1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1JbnRyb2R1Y2UtY29uZGl0aW9uLXRvLW5vdGlmeS13YWl0ZXJzLW9mLWNvbXBsZXRlZC1jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODhjOThlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLUZyb20gYjVmZmQzYWE0ZTliZDRlZGIwOWNjODRjNDZmNzhkYTcyNjk3YTk0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZTogU2F0LCAzMSBEZWMgMjAxNiAxMToyMzozMiAtMDUwMAotU3ViamVjdDogW1BBVENIIDIvNF0gSW50cm9kdWNlIGNvbmRpdGlvbiB0byBub3RpZnkgd2FpdGVycyBvZiBjb21wbGV0ZWQKLSBjb21tYW5kCi0KLUludHJvZHVjZSBhIGxvY2sgYW5kIGEgY29uZGl0aW9uIHRvIG5vdGlmeSBhbnlvbmUgd2FpdGluZyBmb3IgdGhlIGNvbXBsZXRpb24KLW9mIHRoZSBleGVjdXRpb24gb2YgYSBUUE0gY29tbWFuZCBieSB0aGUgYmFja2VuZCAodGhyZWFkKS4gVGhlIGJhY2tlbmQKLXVzZXMgdGhlIGNvbmRpdGlvbiB0byBzaWduYWwgYW55b25lIHdhaXRpbmcgZm9yIGNvbW1hbmQgY29tcGxldGlvbi4KLVdlIG5lZWQgdG8gcGxhY2UgdGhlIGNvbmRpdGlvbiBpbiB0d28gbG9jYXRpb25zOiBvbmUgaXMgaW52b2tlZCBieSB0aGUKLWJhY2tlbmQgdGhyZWFkLCB0aGUgb3RoZXIgYnkgdGhlIGJvdHRvbSBoYWxmIHRocmVhZC4KLVdlIHdpbGwgdXNlIHRoZSBzaWduYWxsaW5nIHRvIHdhaXQgZm9yIGNvbW1hbmQgY29tcGxldGlvbiBiZWZvcmUgVk0KLXN1c3BlbmQuCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBody90cG0vdHBtX2ludC5oIHwgIDMgKysrCi0gaHcvdHBtL3RwbV90aXMuYyB8IDE0ICsrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX2ludC5oIGIvaHcvdHBtL3RwbV9pbnQuaAotaW5kZXggNmIyYzljOTUzYS4uNzBiZTFhZDhkOSAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1faW50LmgKLSsrKyBiL2h3L3RwbS90cG1faW50LmgKLUBAIC0zMCw2ICszMCw5IEBAIHN0cnVjdCBUUE1TdGF0ZSB7Ci0gICAgIGNoYXIgKmJhY2tlbmQ7Ci0gICAgIFRQTUJhY2tlbmQgKmJlX2RyaXZlcjsKLSAgICAgVFBNVmVyc2lvbiBiZV90cG1fdmVyc2lvbjsKLSsKLSsgICAgUWVtdU11dGV4IHN0YXRlX2xvY2s7Ci0rICAgIFFlbXVDb25kIGNtZF9jb21wbGV0ZTsKLSB9OwotIAotICNkZWZpbmUgVFBNKG9iaikgT0JKRUNUX0NIRUNLKFRQTVN0YXRlLCAob2JqKSwgVFlQRV9UUE1fVElTKQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdGlzLmMgYi9ody90cG0vdHBtX3Rpcy5jCi1pbmRleCAzODFlNzI2NmVhLi4xNGQ5ZTgzZWEyIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV90aXMuYwotKysrIGIvaHcvdHBtL3RwbV90aXMuYwotQEAgLTM2OCw2ICszNjgsOCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfYmgodm9pZCAqb3BhcXVlKQotICAgICBUUE1USVNFbXVTdGF0ZSAqdGlzID0gJnMtPnMudGlzOwotICAgICB1aW50OF90IGxvY3R5ID0gcy0+bG9jdHlfbnVtYmVyOwotIAotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKwotICAgICB0cG1fdGlzX3N0c19zZXQoJnRpcy0+bG9jW2xvY3R5XSwKLSAgICAgICAgICAgICAgICAgICAgIFRQTV9USVNfU1RTX1ZBTElEIHwgVFBNX1RJU19TVFNfREFUQV9BVkFJTEFCTEUpOwotICAgICB0aXMtPmxvY1tsb2N0eV0uc3RhdGUgPSBUUE1fVElTX1NUQVRFX0NPTVBMRVRJT047Ci1AQCAtMzg0LDYgKzM4NiwxMCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfYmgodm9pZCAqb3BhcXVlKQotICAgICB0cG1fdGlzX3JhaXNlX2lycShzLCBsb2N0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgVFBNX1RJU19JTlRfREFUQV9BVkFJTEFCTEUgfCBUUE1fVElTX0lOVF9TVFNfVkFMSUQpOwotICNlbmRpZgotKwotKyAgICAvKiBub3RpZnkgb2YgY29tcGxldGVkIGNvbW1hbmQgKi8KLSsgICAgcWVtdV9jb25kX3NpZ25hbCgmcy0+Y21kX2NvbXBsZXRlKTsKLSsgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOwotIH0KLSAKLSAvKgotQEAgLTQwMyw2ICs0MDksMTEgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2NiKFRQTVN0YXRlICpzLCB1aW50OF90IGxvY3R5LAotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7Ci0rICAgIC8qIG5vdGlmeSBvZiBjb21wbGV0ZWQgY29tbWFuZCAqLwotKyAgICBxZW11X2NvbmRfc2lnbmFsKCZzLT5jbWRfY29tcGxldGUpOwotKyAgICBxZW11X211dGV4X3VubG9jaygmcy0+c3RhdGVfbG9jayk7Ci0rCi0gICAgIHFlbXVfYmhfc2NoZWR1bGUodGlzLT5iaCk7Ci0gfQotIAotQEAgLTEwNzIsNiArMTA4Myw5IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfaW5pdGZuKE9iamVjdCAqb2JqKQotICAgICBtZW1vcnlfcmVnaW9uX2luaXRfaW8oJnMtPm1taW8sIE9CSkVDVChzKSwgJnRwbV90aXNfbWVtb3J5X29wcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsICJ0cG0tdGlzLW1taW8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNX1RJU19OVU1fTE9DQUxJVElFUyA8PCBUUE1fVElTX0xPQ0FMSVRZX1NISUZUKTsKLSsKLSsgICAgcWVtdV9tdXRleF9pbml0KCZzLT5zdGF0ZV9sb2NrKTsKLSsgICAgcWVtdV9jb25kX2luaXQoJnMtPmNtZF9jb21wbGV0ZSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRwbV90aXNfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqa2xhc3MsIHZvaWQgKmRhdGEpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtSW50cm9kdWNlLWNvbmRpdGlvbi1pbi1UUE0tYmFja2VuZC1mb3Itbm90aWZpY2F0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNThmMDE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtSW50cm9kdWNlLWNvbmRpdGlvbi1pbi1UUE0tYmFja2VuZC1mb3Itbm90aWZpY2F0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotRnJvbSA3MzJhOGUwNDY5NDhmZDYyYjMyY2QxZGQ3NmE2Nzk4ZWIxY2FmNGQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+Ci1EYXRlOiBTYXQsIDMxIERlYyAyMDE2IDExOjIzOjMyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBJbnRyb2R1Y2UgY29uZGl0aW9uIGluIFRQTSBiYWNrZW5kIGZvciBub3RpZmljYXRpb24KLQotVFBNIGJhY2tlbmRzIHdpbGwgc3VzcGVuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBmcm9udGVuZHMuIEFsc28KLWhlcmUgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHdhaXQgZm9yIHRoZSBUUE0gY29tbWFuZCB0byBoYXZlIGJlZW4KLWNvbXBsZXRlbHkgcHJvY2Vzc2VkLgotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0wNi9tc2cwMDI1Mi5odG1sXQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jIHwgMjAgKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1pbmRleCAwNTBmMmJhODUwLi40NDczOWViYWQyIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi0rKysgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLUBAIC03NSw2ICs3NSwxMCBAQCBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSB7Ci0gICAgIFRQTVZlcnNpb24gdHBtX3ZlcnNpb247Ci0gICAgIHB0bV9jYXAgY3VzZV9jYXA7IC8qIGNhcGFiaWxpdGllcyBvZiB0aGUgQ1VTRSBUUE0gKi8KLSAgICAgdWludDhfdCBjdXJfbG9jdHlfbnVtYmVyOyAvKiBsYXN0IHNldCBsb2NhbGl0eSAqLwotKwotKyAgICBRZW11TXV0ZXggc3RhdGVfbG9jazsKLSsgICAgUWVtdUNvbmQgY21kX2NvbXBsZXRlOyAgLyogc2luZ25hbGVkIG9uY2UgdHBtX2J1c3kgaXMgZmFsc2UgKi8KLSsgICAgYm9vbCB0cG1fYnVzeTsKLSB9OwotIAotIHR5cGVkZWYgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgVFBNUGFzc3RocnVTdGF0ZTsKLUBAIC0yNzQsNiArMjc4LDExIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF93b3JrZXJfdGhyZWFkKGdwb2ludGVyIGRhdGEsCi0gICAgICAgICB0aHJfcGFybXMtPnJlY3ZfZGF0YV9jYWxsYmFjayh0aHJfcGFybXMtPnRwbV9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocl9wYXJtcy0+dHBtX3N0YXRlLT5sb2N0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmdGVzdF9kb25lKTsKLSsgICAgICAgIC8qIHJlc3VsdCBkZWxpdmVyZWQgKi8KLSsgICAgICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgICAgIHRwbV9wdC0+dHBtX2J1c3kgPSBmYWxzZTsKLSsgICAgICAgIHFlbXVfY29uZF9zaWduYWwoJnRwbV9wdC0+Y21kX2NvbXBsZXRlKTsKLSsgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVFBNX0JBQ0tFTkRfQ01EX0lOSVQ6Ci0gICAgIGNhc2UgVFBNX0JBQ0tFTkRfQ01EX0VORDoKLUBAIC00MDEsNiArNDEwLDcgQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0KFRQTUJhY2tlbmQgKnRiKQotICAgICB0cG1fYmFja2VuZF90aHJlYWRfZW5kKCZ0cG1fcHQtPnRidCk7Ci0gCi0gICAgIHRwbV9wdC0+aGFkX3N0YXJ0dXBfZXJyb3IgPSBmYWxzZTsKLSsgICAgdHBtX3B0LT50cG1fYnVzeSA9IGZhbHNlOwotIH0KLSAKLSBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9pbml0KFRQTUJhY2tlbmQgKnRiLCBUUE1TdGF0ZSAqcywKLUBAIC00NzgsNiArNDg4LDExIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9kZWxpdmVyX3JlcXVlc3QoVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotIAotKyAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIFJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCi0rICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgdHBtX3B0LT50cG1fYnVzeSA9IHRydWU7Ci0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKwotICAgICB0cG1fYmFja2VuZF90aHJlYWRfZGVsaXZlcl9yZXF1ZXN0KCZ0cG1fcHQtPnRidCk7Ci0gfQotIAotQEAgLTc0Niw2ICs3NjEsMTEgQEAgc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyID0gewotIAotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2luaXQoT2JqZWN0ICpvYmopCi0gewotKyAgICBUUE1CYWNrZW5kICp0YiA9IFRQTV9CQUNLRU5EKG9iaik7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rCi0rICAgIHFlbXVfbXV0ZXhfaW5pdCgmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgcWVtdV9jb25kX2luaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2luc3RfZmluYWxpemUoT2JqZWN0ICpvYmopCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy12Mi45LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFkYmFmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy12Mi45LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzE5ICswLDAgQEAKLUZyb20gNWU5ZGQ5MDYzZjUxNDQ0N2VhNGY1NDA0Njc5M2Y0ZjAxYzI5N2VkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZTogU2F0LCAzMSBEZWMgMjAxNiAxMToyMzozMiAtMDUwMAotU3ViamVjdDogW1BBVENIIDQvNF0gQWRkIHN1cHBvcnQgZm9yIFZNIHN1c3BlbmQvcmVzdW1lIGZvciBUUE0gVElTCi0KLUV4dGVuZCB0aGUgVFBNIFRJUyBjb2RlIHRvIHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUuIEluIGNhc2UgYSBjb21tYW5kCi1pcyBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIGV4dGVybmFsIFRQTSB3aGVuIHN1c3BlbmRpbmcsIHdhaXQgZm9yIHRoZSBjb21tYW5kCi10byBjb21wbGV0ZSB0byBjYXRjaCB0aGUgcmVzdWx0LiBJbiBjYXNlIHRoZSBib3R0b20gaGFsZiBkaWQgbm90IHJ1biwKLXJ1biB0aGUgb25lIGZ1bmN0aW9uIHRoZSBib3R0b20gaGFsZiBpcyBzdXBwb3NlZCB0byBydW4uIFRoaXMgdGhlbgotbWFrZXMgdGhlIHJlc3VtZSBvcGVyYXRpb24gd29yay4KLQotVGhlIHBhc3N0aHJvdWdoIGJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRpb24KLWFuZCBpcyB0aGVyZWZvcmUgYmxvY2tlZCBmcm9tIHN1c3BlbmQvcmVzdW1lIGFuZCBtaWdyYXRpb24uCi0KLVRoZSBDVVNFIFRQTSdzIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgYXJlIHRlc3RlZCBhbmQgaWYgc3VmZmljaWVudAotY2FwYWJpbGl0aWVzIGFyZSBpbXBsZW1lbnRlZCwgc3VzcGVuZC9yZXN1bWUsIHNuYXBzaG90dGluZyBhbmQKLW1pZ3JhdGlvbiBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBDVVNFIFRQTS4KLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9saXN0cy5ub25nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTYtMDYvbXNnMDAyNTIuaHRtbF0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLS0tLQotIGh3L3RwbS90cG1fcGFzc3Rocm91Z2guYyAgICAgfCAxMzAgKysrKysrKysrKysrKysrKysrKysrKystLQotIGh3L3RwbS90cG1fdGlzLmMgICAgICAgICAgICAgfCAxMzcgKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBody90cG0vdHBtX3Rpcy5oICAgICAgICAgICAgIHwgICAyICsKLSBody90cG0vdHBtX3V0aWwuYyAgICAgICAgICAgIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBody90cG0vdHBtX3V0aWwuaCAgICAgICAgICAgIHwgICA3ICsrCi0gaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaCB8ICAxMiArKysKLSA2IGZpbGVzIGNoYW5nZWQsIDUwMyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1pbmRleCA0NDczOWViYWQyLi5iYzgwNzJkMGJjIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi0rKysgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLUBAIC0zNCw2ICszNCw4IEBACi0gI2luY2x1ZGUgInRwbV90aXMuaCIKLSAjaW5jbHVkZSAidHBtX3V0aWwuaCIKLSAjaW5jbHVkZSAidHBtX2lvY3RsLmgiCi0rI2luY2x1ZGUgIm1pZ3JhdGlvbi9taWdyYXRpb24uaCIKLSsjaW5jbHVkZSAicWFwaS9lcnJvci5oIgotIAotICNkZWZpbmUgREVCVUdfVFBNIDAKLSAKLUBAIC00OSw2ICs1MSw3IEBACi0gI2RlZmluZSBUWVBFX1RQTV9DVVNFICJ0cG0tY3VzZSIKLSAKLSBzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRwbV9wYXNzdGhyb3VnaF9kcml2ZXI7Ci0rc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3RwbV9jdXNlOwotIAotIC8qIGRhdGEgc3RydWN0dXJlcyAqLwotIHR5cGVkZWYgc3RydWN0IFRQTVBhc3N0aHJ1VGhyZWFkUGFyYW1zIHsKLUBAIC03OSw2ICs4MiwxMCBAQCBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSB7Ci0gICAgIFFlbXVNdXRleCBzdGF0ZV9sb2NrOwotICAgICBRZW11Q29uZCBjbWRfY29tcGxldGU7ICAvKiBzaW5nbmFsZWQgb25jZSB0cG1fYnVzeSBpcyBmYWxzZSAqLwotICAgICBib29sIHRwbV9idXN5OwotKwotKyAgICBFcnJvciAqbWlncmF0aW9uX2Jsb2NrZXI7Ci0rCi0rICAgIFRQTUJsb2JCdWZmZXJzIHRwbV9ibG9iczsKLSB9OwotIAotIHR5cGVkZWYgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgVFBNUGFzc3RocnVTdGF0ZTsKLUBAIC0zMDYsNiArMzEzLDEwIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9zaHV0ZG93bihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSsgICAgaWYgKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpIHsKLSsgICAgICAgIG1pZ3JhdGVfZGVsX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgICAgICBlcnJvcl9mcmVlKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOwotKyAgICB9Ci0gfQotIAotIC8qCi1AQCAtMzYwLDEyICszNzEsMTQgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9jaGVja19jYXBzKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSAvKgotICAqIEluaXRpYWxpemUgdGhlIGV4dGVybmFsIENVU0UgVFBNCi0gICovCi0tc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3Jlc3VtZSkKLSB7Ci0gICAgIGludCByYyA9IDA7Ci0tICAgIHB0bV9pbml0IGluaXQgPSB7Ci0tICAgICAgICAudS5yZXEuaW5pdF9mbGFncyA9IFBUTV9JTklUX0ZMQUdfREVMRVRFX1ZPTEFUSUxFLAotLSAgICB9OwotKyAgICBwdG1faW5pdCBpbml0OwotKyAgICBpZiAoaXNfcmVzdW1lKSB7Ci0rICAgICAgICBpbml0LnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRTsKLSsgICAgfQotIAotICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotICAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fSU5JVCwgJmluaXQpIDwgMCkgewotQEAgLTM5NCw3ICs0MDcsNyBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zdGFydHVwX3RwbShUUE1CYWNrZW5kICp0YikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX3B0LT50cG1fdGhyZWFkX3BhcmFtcyk7Ci0gCi0tICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KTsKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIGZhbHNlKTsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTQ2Niw2ICs0NzksMzIgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfcmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIsCi0gICAgIHJldHVybiByYzsKLSB9Ci0gCi0rc3RhdGljIGludCB0cG1fY3VzZV9nZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKLSt7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rCi0rICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKLSsKLSsgICAgcmV0dXJuIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9jdXNlX3NldF9zdGF0ZV9ibG9icyhUUE1CYWNrZW5kICp0YiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQotK3sKLSsgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSsKLSsgICAgYXNzZXJ0KFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpOwotKwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYnModHBtX3B0LT50cG1fZmQsIHRwbV9ibG9icykpIHsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgdHJ1ZSk7Ci0rfQotKwotIHN0YXRpYyBib29sIHRwbV9wYXNzdGhyb3VnaF9nZXRfc3RhcnR1cF9lcnJvcihUUE1CYWNrZW5kICp0YikKLSB7Ci0gICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci1AQCAtNDg4LDcgKzUyNyw3IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9kZWxpdmVyX3JlcXVlc3QoVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotIAotLSAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIFJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCi0rICAgIC8qIFRQTSBjb25zaWRlcmVkIGJ1c3kgb25jZSBUUE0gcmVxdWVzdCBzY2hlZHVsZWQgZm9yIHByb2Nlc3NpbmcgKi8KLSAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotICAgICB0cG1fcHQtPnRwbV9idXN5ID0gdHJ1ZTsKLSAgICAgcWVtdV9tdXRleF91bmxvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci1AQCAtNjAxLDYgKzY0MCwyNSBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9vcGVuX3N5c2ZzX2NhbmNlbChUUE1CYWNrZW5kICp0YikKLSAgICAgcmV0dXJuIGZkOwotIH0KLSAKLStzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfYmxvY2tfbWlncmF0aW9uKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIHB0bV9jYXAgY2FwczsKLSsKLSsgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSsgICAgICAgIGNhcHMgPSBQVE1fQ0FQX0dFVF9TVEFURUJMT0IgfCBQVE1fQ0FQX1NFVF9TVEFURUJMT0IgfAotKyAgICAgICAgICAgICAgIFBUTV9DQVBfU1RPUDsKLSsgICAgICAgIGlmICghVFBNX0NVU0VfSU1QTEVNRU5UU19BTEwodHBtX3B0LCBjYXBzKSkgewotKyAgICAgICAgICAgIGVycm9yX3NldGcoJnRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBDVVNFIFRQTSBsYWNrcyBuZWNlc3NhcnkgY2FwYWJpbGl0aWVzIik7Ci0rICAgICAgICAgICAgbWlncmF0ZV9hZGRfYmxvY2tlcih0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKLSsgICAgICAgIH0KLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGVycm9yX3NldGcoJnRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIsCi0rICAgICAgICAgICAgICAgICAgICJNaWdyYXRpb24gZGlzYWJsZWQ6IFBhc3N0aHJvdWdoIFRQTSBkb2VzIG5vdCBzdXBwb3J0IG1pZ3JhdGlvbiIpOwotKyAgICAgICAgbWlncmF0ZV9hZGRfYmxvY2tlcih0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9oYW5kbGVfZGV2aWNlX29wdHMoUWVtdU9wdHMgKm9wdHMsIFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLUBAIC02NDIsNyArNzAwLDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0gICAgICAgICB9Ci0gICAgICAgICAvKiBpbml0IFRQTSBmb3IgcHJvYmluZyAqLwotLSAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KSkgewotKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSkpIHsKLSAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0gICAgICAgICB9Ci0gICAgIH0KLUBAIC02NTksNiArNzE3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICB0cG1fcGFzc3Rocm91Z2hfYmxvY2tfbWlncmF0aW9uKHRwbV9wdCk7Ci0gCi0gICAgIHJldHVybiAwOwotIAotQEAgLTc2NiwxMCArODI1LDEzIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2luaXQoT2JqZWN0ICpvYmopCi0gCi0gICAgIHFlbXVfbXV0ZXhfaW5pdCgmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgcWVtdV9jb25kX2luaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlKTsKLSsKLSsgICAgdm1zdGF0ZV9yZWdpc3RlcihOVUxMLCAtMSwgJnZtc3RhdGVfdHBtX2N1c2UsIG9iaik7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2ZpbmFsaXplKE9iamVjdCAqb2JqKQotIHsKLSsgICAgdm1zdGF0ZV91bnJlZ2lzdGVyKE5VTEwsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqa2xhc3MsIHZvaWQgKmRhdGEpCi1AQCAtODAyLDYgKzg2NCw2MCBAQCBzdGF0aWMgY29uc3QgY2hhciAqdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY3JlYXRlX2Rlc2Modm9pZCkKLSAgICAgcmV0dXJuICJDVVNFIFRQTSBiYWNrZW5kIGRyaXZlciI7Ci0gfQotIAotK3N0YXRpYyB2b2lkIHRwbV9jdXNlX3ByZV9zYXZlKHZvaWQgKm9wYXF1ZSkKLSt7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IG9wYXF1ZTsKLSsgICAgVFBNQmFja2VuZCAqdGIgPSAmdHBtX3B0LT5wYXJlbnQ7Ci0rCi0rICAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgICAvKiB3YWl0IGZvciBUUE0gdG8gZmluaXNoIHByb2Nlc3NpbmcgKi8KLSsgICAgIGlmICh0cG1fcHQtPnRwbV9idXN5KSB7Ci0rICAgICAgICBxZW11X2NvbmRfd2FpdCgmdHBtX3B0LT5jbWRfY29tcGxldGUsICZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKyAgICAgfQotKyAgICAgcWVtdV9tdXRleF91bmxvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rCi0rICAgIC8qIGdldCB0aGUgZGVjcnlwdGVkIHN0YXRlIGJsb2JzIGZyb20gdGhlIFRQTSAqLwotKyAgICB0cG1fY3VzZV9nZXRfc3RhdGVfYmxvYnModGIsIFRSVUUsICZ0cG1fcHQtPnRwbV9ibG9icyk7Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX2N1c2VfcG9zdF9sb2FkKHZvaWQgKm9wYXF1ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyc2lvbl9pZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKLSt7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IG9wYXF1ZTsKLSsgICAgVFBNQmFja2VuZCAqdGIgPSAmdHBtX3B0LT5wYXJlbnQ7Ci0rCi0rICAgIHJldHVybiB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnModGIsICZ0cG1fcHQtPnRwbV9ibG9icyk7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZSA9IHsKLSsgICAgLm5hbWUgPSAiY3VzZS10cG0iLAotKyAgICAudmVyc2lvbl9pZCA9IDEsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCi0rICAgIC5wcmVfc2F2ZSAgPSB0cG1fY3VzZV9wcmVfc2F2ZSwKLSsgICAgLnBvc3RfbG9hZCA9IHRwbV9jdXNlX3Bvc3RfbG9hZCwKLSsgICAgLmZpZWxkcyA9IChWTVN0YXRlRmllbGRbXSkgewotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMucGVybWFuZW50LnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMucGVybWFuZW50LmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNUGFzc3RocnVTdGF0ZSwgMSwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplKSwKLSsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy52b2xhdGlsX2ZsYWdzLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy52b2xhdGlsLnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy52b2xhdGlsLnNpemUpLAotKwotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZV9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMuc2F2ZXN0YXRlLnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMuc2F2ZXN0YXRlLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNUGFzc3RocnVTdGF0ZSwgMSwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplKSwKLSsgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQotKyAgICB9Ci0rfTsKLSsKLSBzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRwbV9jdXNlX2RyaXZlciA9IHsKLSAgICAgLnR5cGUgICAgICAgICAgICAgICAgICAgICA9IFRQTV9UWVBFX0NVU0VfVFBNLAotICAgICAub3B0cyAgICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2NtZGxpbmVfb3B0cywKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5jIGIvaHcvdHBtL3RwbV90aXMuYwotaW5kZXggMTRkOWU4M2VhMi4uOWI2NjBjZjczNyAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fdGlzLmMKLSsrKyBiL2h3L3RwbS90cG1fdGlzLmMKLUBAIC0zNjgsNiArMzY4LDggQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKLSAgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSAgICAgdWludDhfdCBsb2N0eSA9IHMtPmxvY3R5X251bWJlcjsKLSAKLSsgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSBmYWxzZTsKLSsKLSAgICAgcWVtdV9tdXRleF9sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSAKLSAgICAgdHBtX3Rpc19zdHNfc2V0KCZ0aXMtPmxvY1tsb2N0eV0sCi1AQCAtNDE1LDYgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9jYihUUE1TdGF0ZSAqcywgdWludDhfdCBsb2N0eSwKLSAgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOwotIAotICAgICBxZW11X2JoX3NjaGVkdWxlKHRpcy0+YmgpOwotKwotKyAgICB0aXMtPmJoX3NjaGVkdWxlZCA9IHRydWU7Ci0gfQotIAotIC8qCi1AQCAtMTAzMCw5ICsxMDM0LDE0MCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3Jlc2V0KERldmljZVN0YXRlICpkZXYpCi0gICAgIHRwbV90aXNfZG9fc3RhcnR1cF90cG0ocyk7Ci0gfQotIAotKwotKy8qIHBlcnNpc3RlbnQgc3RhdGUgaGFuZGxpbmcgKi8KLSsKLStzdGF0aWMgdm9pZCB0cG1fdGlzX3ByZV9zYXZlKHZvaWQgKm9wYXF1ZSkKLSt7Ci0rICAgIFRQTVN0YXRlICpzID0gb3BhcXVlOwotKyAgICBUUE1USVNFbXVTdGF0ZSAqdGlzID0gJnMtPnMudGlzOwotKyAgICB1aW50OF90IGxvY3R5ID0gdGlzLT5hY3RpdmVfbG9jdHk7Ci0rCi0rICAgIERQUklOVEYoInRwbV90aXM6IHN1c3BlbmQ6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAotKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOwotKyNpZmRlZiBERUJVR19USVMKLSsgICAgdHBtX3Rpc19kdW1wX3N0YXRlKG9wYXF1ZSwgMCk7Ci0rI2VuZGlmCi0rCi0rICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7Ci0rCi0rICAgIC8qIHdhaXQgZm9yIG91dHN0YW5kaW5nIHJlcXVlc3QgdG8gY29tcGxldGUgKi8KLSsgICAgaWYgKFRQTV9USVNfSVNfVkFMSURfTE9DVFkobG9jdHkpICYmCi0rICAgICAgICB0aXMtPmxvY1tsb2N0eV0uc3RhdGUgPT0gVFBNX1RJU19TVEFURV9FWEVDVVRJT04pIHsKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBJZiB3ZSBnZXQgaGVyZSB3aGVuIHRoZSBiaCBpcyBzY2hlZHVsZWQgYnV0IGRpZCBub3QgcnVuLAotKyAgICAgICAgICogd2Ugd29uJ3QgZ2V0IG5vdGlmaWVkLi4uCi0rICAgICAgICAgKi8KLSsgICAgICAgIGlmICghdGlzLT5iaF9zY2hlZHVsZWQpIHsKLSsgICAgICAgICAgICAvKiBiYWNrZW5kIHRocmVhZCB0byBub3RpZnkgdXMgKi8KLSsgICAgICAgICAgICBxZW11X2NvbmRfd2FpdCgmcy0+Y21kX2NvbXBsZXRlLCAmcy0+c3RhdGVfbG9jayk7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAodGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7Ci0rICAgICAgICAgICAgLyogYm90dG9tIGhhbGYgZGlkIG5vdCBydW4gLSBydW4gaXRzIGZ1bmN0aW9uICovCi0rICAgICAgICAgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgICAgIHRwbV90aXNfcmVjZWl2ZV9iaChvcGFxdWUpOwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiBjb3B5IGN1cnJlbnQgYWN0aXZlIHJlYWQgb3Igd3JpdGUgYnVmZmVyIGludG8gdGhlIGJ1ZmZlcgotKyAgICAgICB3cml0dGVuIHRvIGRpc2sgKi8KLSsgICAgaWYgKFRQTV9USVNfSVNfVkFMSURfTE9DVFkobG9jdHkpKSB7Ci0rICAgICAgICBzd2l0Y2ggKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSkgewotKyAgICAgICAgY2FzZSBUUE1fVElTX1NUQVRFX1JFQ0VQVElPTjoKLSsgICAgICAgICAgICBtZW1jcHkodGlzLT5idWYsCi0rICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLndfYnVmZmVyLnNpemUpKTsKLSsgICAgICAgICAgICB0aXMtPm9mZnNldCA9IHRpcy0+bG9jW2xvY3R5XS53X29mZnNldDsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBUUE1fVElTX1NUQVRFX0NPTVBMRVRJT046Ci0rICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5yX2J1ZmZlci5zaXplKSk7Ci0rICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQ7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgLyogbGVhayBub3RoaW5nICovCi0rICAgICAgICAgICAgbWVtc2V0KHRpcy0+YnVmLCAweDAsIHNpemVvZih0aXMtPmJ1ZikpOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgIH0KLSt9Ci0rCi0rc3RhdGljIGludCB0cG1fdGlzX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyc2lvbl9pZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKLSt7Ci0rICAgIFRQTVN0YXRlICpzID0gb3BhcXVlOwotKyAgICBUUE1USVNFbXVTdGF0ZSAqdGlzID0gJnMtPnMudGlzOwotKwotKyAgICB1aW50OF90IGxvY3R5ID0gdGlzLT5hY3RpdmVfbG9jdHk7Ci0rCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgewotKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046Ci0rICAgICAgICAgICAgbWVtY3B5KHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgIHRpcy0+YnVmLAotKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7Ci0rICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLndfb2Zmc2V0ID0gdGlzLT5vZmZzZXQ7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5yX29mZnNldCA9IHRpcy0+b2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgRFBSSU5URigidHBtX3RpczogcmVzdW1lIDogbG9jdHkgPSAlZCA6IHJfb2Zmc2V0ID0gJWQsIHdfb2Zmc2V0ID0gJWRcbiIsCi0rICAgICAgICAgICAgbG9jdHksIHRpcy0+bG9jWzBdLnJfb2Zmc2V0LCB0aXMtPmxvY1swXS53X29mZnNldCk7Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfbG9jdHkgPSB7Ci0rICAgIC5uYW1lID0gImxvYyIsCi0rICAgIC52ZXJzaW9uX2lkID0gMSwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDAsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWRfb2xkID0gMCwKLSsgICAgLmZpZWxkcyAgICAgID0gKFZNU3RhdGVGaWVsZFtdKSB7Ci0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzdGF0ZSwgVFBNTG9jYWxpdHkpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaW50ZSwgVFBNTG9jYWxpdHkpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaW50cywgVFBNTG9jYWxpdHkpLAotKyAgICAgICAgVk1TVEFURV9VSU5UOChhY2Nlc3MsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHN0cywgVFBNTG9jYWxpdHkpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaWZhY2VfaWQsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKSwKLSsgICAgfQotK307Ci0rCi0gc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3RwbV90aXMgPSB7Ci0gICAgIC5uYW1lID0gInRwbSIsCi0tICAgIC51bm1pZ3JhdGFibGUgPSAxLAotKyAgICAudmVyc2lvbl9pZCA9IDEsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCi0rICAgIC5wcmVfc2F2ZSAgPSB0cG1fdGlzX3ByZV9zYXZlLAotKyAgICAucG9zdF9sb2FkID0gdHBtX3Rpc19wb3N0X2xvYWQsCi0rICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHMudGlzLm9mZnNldCwgVFBNU3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9CVUZGRVIocy50aXMuYnVmLCBUUE1TdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQ4KHMudGlzLmFjdGl2ZV9sb2N0eSwgVFBNU3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hYm9ydGluZ19sb2N0eSwgVFBNU3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5uZXh0X2xvY3R5LCBUUE1TdGF0ZSksCi0rCi0rICAgICAgICBWTVNUQVRFX1NUUlVDVF9BUlJBWShzLnRpcy5sb2MsIFRQTVN0YXRlLCBUUE1fVElTX05VTV9MT0NBTElUSUVTLCAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1zdGF0ZV9sb2N0eSwgVFBNTG9jYWxpdHkpLAotKwotKyAgICAgICAgVk1TVEFURV9FTkRfT0ZfTElTVCgpCi0rICAgIH0KLSB9OwotIAotIHN0YXRpYyBQcm9wZXJ0eSB0cG1fdGlzX3Byb3BlcnRpZXNbXSA9IHsKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5oIGIvaHcvdHBtL3RwbV90aXMuaAotaW5kZXggYTFkZjQxZmEyMS4uYjdmYzBlYTFhOSAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fdGlzLmgKLSsrKyBiL2h3L3RwbS90cG1fdGlzLmgKLUBAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYgc3RydWN0IFRQTUxvY2FsaXR5IHsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1USVNFbXVTdGF0ZSB7Ci0gICAgIFFFTVVCSCAqYmg7Ci0rICAgIGJvb2wgYmhfc2NoZWR1bGVkOyAvKiBiaCBzY2hlZHVsZWQgYnV0IGRpZCBub3QgcnVuIHlldCAqLwotKwotICAgICB1aW50MzJfdCBvZmZzZXQ7Ci0gICAgIHVpbnQ4X3QgYnVmW1RQTV9USVNfQlVGRkVSX01BWF07Ci0gCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV91dGlsLmMgYi9ody90cG0vdHBtX3V0aWwuYwotaW5kZXggN2IzNTQyOTcyNS4uYjZmZjc0ZDk0NiAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fdXRpbC5jCi0rKysgYi9ody90cG0vdHBtX3V0aWwuYwotQEAgLTIyLDYgKzIyLDE3IEBACi0gI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKLSAjaW5jbHVkZSAidHBtX3V0aWwuaCIKLSAjaW5jbHVkZSAidHBtX2ludC5oIgotKyNpbmNsdWRlICJ0cG1faW9jdGwuaCIKLSsjaW5jbHVkZSAicWVtdS9lcnJvci1yZXBvcnQuaCIKLSsKLSsjZGVmaW5lIERFQlVHX1RQTSAwCi0rCi0rI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBkbyB7IFwKLSsgICAgaWYgKERFQlVHX1RQTSkgeyBcCi0rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgZm10LCAjIyBfX1ZBX0FSR1NfXyk7IFwKLSsgICAgfSBcCi0rfSB3aGlsZSAoMCkKLSsKLSAKLSAvKgotICAqIEEgYmFzaWMgdGVzdCBvZiBhIFRQTSBkZXZpY2UuIFdlIGV4cGVjdCBhIHdlbGwgZm9ybWF0dGVkIHJlc3BvbnNlIGhlYWRlcgotQEAgLTEyNSwzICsxMzYsMjE1IEBAIGludCB0cG1fdXRpbF90ZXN0X3RwbWRldihpbnQgdHBtX2ZkLCBUUE1WZXJzaW9uICp0cG1fdmVyc2lvbikKLSAKLSAgICAgcmV0dXJuIDE7Ci0gfQotKwotK3N0YXRpYyB2b2lkIHRwbV9zaXplZF9idWZmZXJfcmVzZXQoVFBNU2l6ZWRCdWZmZXIgKnRzYikKLSt7Ci0rICAgIGdfZnJlZSh0c2ItPmJ1ZmZlcik7Ci0rICAgIHRzYi0+YnVmZmVyID0gTlVMTDsKLSsgICAgdHNiLT5zaXplID0gMDsKLSt9Ci0rCi0rLyoKLSsgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIGZyb20gdGhlIFRQTSBpbnRvIGEgcHJvdmlkZWQgYnVmZmVyLgotKyAqCi0rICogQGZkOiBmaWxlIGRlc2NyaXB0b3IgdG8gdGFsayB0byB0aGUgQ1VTRSBUUE0KLSsgKiBAdHlwZTogdGhlIHR5cGUgb2YgYmxvYiB0byB0cmFuc2ZlcgotKyAqIEBkZWNyeXB0ZWRfYmxvYjogd2hldGhlciB3ZSByZXF1ZXN0IHRvIHJlY2VpdmUgZGVjcnlwdGVkIGJsb2JzCi0rICogQHRzYjogdGhlIFRQTVNpemVCdWZmZXIgdG8gZmlsbCB3aXRoIHRoZSBibG9iCi0rICogQGZsYWdzOiB0aGUgZmxhZ3MgdG8gcmV0dXJuIHRvIHRoZSBjYWxsZXIKLSsgKi8KLStzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IoaW50IGZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpmbGFncykKLSt7Ci0rICAgIHB0bV9nZXRzdGF0ZSBwZ3M7Ci0rICAgIHVpbnQxNl90IG9mZnNldCA9IDA7Ci0rICAgIHB0bV9yZXMgcmVzOwotKyAgICBzc2l6ZV90IG47Ci0rICAgIHNpemVfdCB0b19yZWFkOwotKwotKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KHRzYik7Ci0rCi0rICAgIHBncy51LnJlcS5zdGF0ZV9mbGFncyA9IChkZWNyeXB0ZWRfYmxvYikgPyBQVE1fU1RBVEVfRkxBR19ERUNSWVBURUQgOiAwOwotKyAgICBwZ3MudS5yZXEudHlwZSA9IHR5cGU7Ci0rICAgIHBncy51LnJlcS5vZmZzZXQgPSBvZmZzZXQ7Ci0rCi0rICAgIGlmIChpb2N0bChmZCwgUFRNX0dFVF9TVEFURUJMT0IsICZwZ3MpIDwgMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJDVVNFIFRQTSBQVE1fR0VUX1NUQVRFQkxPQiBpb2N0bCBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgfQotKyAgICByZXMgPSBwZ3MudS5yZXNwLnRwbV9yZXN1bHQ7Ci0rICAgIGlmIChyZXMgIT0gMCAmJiAocmVzICYgMHg4MDApID09IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiR2V0dGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQgd2l0aCBhIFRQTSAiCi0rICAgICAgICAgICAgICAgICAgICAgImVycm9yIDB4JXgiLCB0eXBlLCByZXMpOwotKyAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgfQotKwotKyAgICAqZmxhZ3MgPSBwZ3MudS5yZXNwLnN0YXRlX2ZsYWdzOwotKwotKyAgICB0c2ItPmJ1ZmZlciA9IGdfbWFsbG9jKHBncy51LnJlc3AudG90bGVuZ3RoKTsKLSsgICAgbWVtY3B5KHRzYi0+YnVmZmVyLCBwZ3MudS5yZXNwLmRhdGEsIHBncy51LnJlc3AubGVuZ3RoKTsKLSsgICAgdHNiLT5zaXplID0gcGdzLnUucmVzcC5sZW5ndGg7Ci0rCi0rICAgIC8qIGlmIHRoZXJlIGFyZSBieXRlcyBsZWZ0IHRvIGdldCB1c2UgcmVhZCgpIGludGVyZmFjZSAqLwotKyAgICB3aGlsZSAodHNiLT5zaXplIDwgcGdzLnUucmVzcC50b3RsZW5ndGgpIHsKLSsgICAgICAgIHRvX3JlYWQgPSBwZ3MudS5yZXNwLnRvdGxlbmd0aCAtIHRzYi0+c2l6ZTsKLSsgICAgICAgIGlmICh1bmxpa2VseSh0b19yZWFkID4gU1NJWkVfTUFYKSkgewotKyAgICAgICAgICAgIHRvX3JlYWQgPSBTU0laRV9NQVg7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBuID0gcmVhZChmZCwgJnRzYi0+YnVmZmVyW3RzYi0+c2l6ZV0sIHRvX3JlYWQpOwotKyAgICAgICAgaWYgKG4gIT0gdG9fcmVhZCkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ291bGQgbm90IHJlYWQgc3RhdGVibG9iICh0eXBlICVkKSA6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICAgICAgfQotKyAgICAgICAgdHNiLT5zaXplICs9IHRvX3JlYWQ7Ci0rICAgIH0KLSsKLSsgICAgRFBSSU5URigidHBtX3V0aWw6IGdvdCBzdGF0ZSBibG9iIHR5cGUgJWQsICVkIGJ5dGVzLCBmbGFncyAweCUwOHgsICIKLSsgICAgICAgICAgICAiZGVjcnlwdGVkPSVkXG4iLCB0eXBlLCB0c2ItPnNpemUsICpmbGFncywgZGVjcnlwdGVkX2Jsb2IpOwotKwotKyAgICByZXR1cm4gMDsKLSsKLStlcnJfZXhpdDoKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKLSt7Ci0rICAgIGlmICh0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9QRVJNQU5FTlQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnRfZmxhZ3MpIHx8Ci0rICAgICAgIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1ZPTEFUSUxFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWxfZmxhZ3MpIHx8Ci0rICAgICAgIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIDA7Ci0rCi0rIGVycl9leGl0OgotKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnZvbGF0aWwpOwotKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnBlcm1hbmVudCk7Ci0rICAgIHRwbV9zaXplZF9idWZmZXJfcmVzZXQoJnRwbV9ibG9icy0+c2F2ZXN0YXRlKTsKLSsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGludCBmZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aCkKLSt7Ci0rICAgIHB0bV9zZXRzdGF0ZSBwc3M7Ci0rCi0rICAgIHBzcy51LnJlcS5zdGF0ZV9mbGFncyA9IGZsYWdzOwotKyAgICBwc3MudS5yZXEudHlwZSA9IHR5cGU7Ci0rICAgIHBzcy51LnJlcS5sZW5ndGggPSBsZW5ndGg7Ci0rCi0rICAgIGlmIChpb2N0bChmZCwgUFRNX1NFVF9TVEFURUJMT0IsICZwc3MpIDwgMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJDVVNFIFRQTSBQVE1fU0VUX1NUQVRFQkxPQiBpb2N0bCBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgICAgaWYgKHBzcy51LnJlc3AudHBtX3Jlc3VsdCAhPSAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIlNldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgotKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcHNzLnUucmVzcC50cG1fcmVzdWx0KTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLSsKLSsvKgotKyAqIFRyYW5zZmVyIGEgVFBNIHN0YXRlIGJsb2IgdG8gdGhlIENVU0UgVFBNLgotKyAqCi0rICogQGZkOiBmaWxlIGRlc2NyaXB0b3IgdG8gdGFsayB0byB0aGUgQ1VTRSBUUE0KLSsgKiBAdHlwZTogdGhlIHR5cGUgb2YgVFBNIHN0YXRlIGJsb2IgdG8gdHJhbnNmZXIKLSsgKiBAdHNiOiBUUE1TaXplQnVmZmVyIGNvbnRhaW5pbmcgdGhlIFRQTSBzdGF0ZSBibG9iCi0rICogQGZsYWdzOiBGbGFncyBkZXNjcmliaW5nIHRoZSAoZW5jcnlwdGlvbikgc3RhdGUgb2YgdGhlIFRQTSBzdGF0ZSBibG9iCi0rICovCi0rc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKGludCBmZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNU2l6ZWRCdWZmZXIgKnRzYiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpCi0rewotKyAgICB1aW50MzJfdCBvZmZzZXQgPSAwOwotKyAgICBzc2l6ZV90IG47Ci0rICAgIHNpemVfdCB0b193cml0ZTsKLSsKLSsgICAgLyogaW5pdGlhdGUgdGhlIHRyYW5zZmVyIHRvIHRoZSBDVVNFIFRQTSAqLwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIC8qIHVzZSB0aGUgd3JpdGUoKSBpbnRlcmZhY2UgZm9yIHRyYW5zZmVycmluZyB0aGUgc3RhdGUgYmxvYiAqLwotKyAgICB3aGlsZSAob2Zmc2V0IDwgdHNiLT5zaXplKSB7Ci0rICAgICAgICB0b193cml0ZSA9IHRzYi0+c2l6ZSAtIG9mZnNldDsKLSsgICAgICAgIGlmICh1bmxpa2VseSh0b193cml0ZSA+IFNTSVpFX01BWCkpIHsKLSsgICAgICAgICAgICB0b193cml0ZSA9IFNTSVpFX01BWDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIG4gPSB3cml0ZShmZCwgJnRzYi0+YnVmZmVyW29mZnNldF0sIHRvX3dyaXRlKTsKLSsgICAgICAgIGlmIChuICE9IHRvX3dyaXRlKSB7Ci0rICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJXcml0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgICAgICB9Ci0rICAgICAgICBvZmZzZXQgKz0gdG9fd3JpdGU7Ci0rICAgIH0KLSsKLSsgICAgLyogaW5pZGljYXRlIHRoYXQgdGhlIHRyYW5zZmVyIGlzIGZpbmlzaGVkICovCi0rICAgIGlmICh0cG1fdXRpbF9jdXNlX2RvX3NldF9zdGF0ZWJsb2JfaW9jdGwoZmQsIGZsYWdzLCB0eXBlLCAwKSkgewotKyAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgfQotKwotKyAgICBEUFJJTlRGKCJ0cG1fdXRpbDogc2V0IHRoZSBzdGF0ZSBibG9iIHR5cGUgJWQsICVkIGJ5dGVzLCBmbGFncyAweCUwOHhcbiIsCi0rICAgICAgICAgICAgdHlwZSwgdHNiLT5zaXplLCBmbGFncyk7Ci0rCi0rICAgIHJldHVybiAwOwotKwotK2Vycl9leGl0OgotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0raW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBwdG1fcmVzIHJlczsKLSsKLSsgICAgaWYgKGlvY3RsKHRwbV9mZCwgUFRNX1NUT1AsICZyZXMpIDwgMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fcGFzc3Rocm91Z2g6IENvdWxkIG5vdCBzdG9wICIKLSsgICAgICAgICAgICAgICAgICAgICAidGhlIENVU0UgVFBNOiAlcyAoJWkpIiwKLSsgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIGlmICh0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9QRVJNQU5FTlQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLT5wZXJtYW5lbnRfZmxhZ3MpIHx8Ci0rICAgICAgICB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+dm9sYXRpbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAotKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfU0FWRVNUQVRFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+c2F2ZXN0YXRlX2ZsYWdzKSkgewotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5oIGIvaHcvdHBtL3RwbV91dGlsLmgKLWluZGV4IGRmNzYyNDVlNmUuLmMyNDA3MWQ4MTIgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3V0aWwuaAotKysrIGIvaHcvdHBtL3RwbV91dGlsLmgKLUBAIC0yNiw0ICsyNiwxMSBAQAotIAotIGludCB0cG1fdXRpbF90ZXN0X3RwbWRldihpbnQgdHBtX2ZkLCBUUE1WZXJzaW9uICp0cG1fdmVyc2lvbik7Ci0gCi0raW50IHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKTsKLSsKLStpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7Ci0rCi0gI2VuZGlmIC8qIFRQTV9UUE1fVVRJTF9IICovCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaCBiL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmgKLWluZGV4IGI1OGY1MmQzOWYuLjM0MDM4MjFiOWQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCi0rKysgYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCi1AQCAtNjIsNiArNjIsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgVFBNU2l6ZWRCdWZmZXIgewotICAgICB1aW50OF90ICAqYnVmZmVyOwotIH0gVFBNU2l6ZWRCdWZmZXI7Ci0gCi0rLyogYmxvYnMgZnJvbSB0aGUgVFBNOyBwYXJ0IG9mIFZNIHN0YXRlIHdoZW4gbWlncmF0aW5nICovCi0rdHlwZWRlZiBzdHJ1Y3QgVFBNQmxvYkJ1ZmZlcnMgewotKyAgICB1aW50MzJfdCBwZXJtYW5lbnRfZmxhZ3M7Ci0rICAgIFRQTVNpemVkQnVmZmVyIHBlcm1hbmVudDsKLSsKLSsgICAgdWludDMyX3Qgdm9sYXRpbF9mbGFnczsKLSsgICAgVFBNU2l6ZWRCdWZmZXIgdm9sYXRpbDsKLSsKLSsgICAgdWludDMyX3Qgc2F2ZXN0YXRlX2ZsYWdzOwotKyAgICBUUE1TaXplZEJ1ZmZlciBzYXZlc3RhdGU7Ci0rfSBUUE1CbG9iQnVmZmVyczsKLSsKLSBzdHJ1Y3QgVFBNRHJpdmVyT3BzIHsKLSAgICAgZW51bSBUcG1UeXBlIHR5cGU7Ci0gICAgIGNvbnN0IFFlbXVPcHREZXNjICpvcHRzOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UwYjFlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwNCArMCwwIEBACi1Gcm9tIDNkOTBjNjI1NDg2MzY5M2E2YjEzZDkxOGQyYjg2ODJlMDhiYmM2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMjggQXVnIDIwMTcgMTQ6Mjk6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdmdhOiBzdG9wIHBhc3NpbmcgcG9pbnRlcnMgdG8gdmdhX2RyYXdfbGluZSogZnVuY3Rpb25zCi0KLUluc3RlYWQgcGFzcyBhcm91bmQgdGhlIGFkZHJlc3MgKGFrYSBvZmZzZXQgaW50byB2Z2EgbWVtb3J5KS4KLUFkZCB2Z2FfcmVhZF8qIGhlbHBlciBmdW5jdGlvbnMgd2hpY2ggYXBwbHkgdmJlX3NpemVfbWFzayB0bwotdGhlIGFkZHJlc3MsIHRvIG1ha2Ugc3VyZSB0aGUgYWRkcmVzcyBzdGF5cyB3aXRoaW4gdGhlIHZhbGlkCi1yYW5nZSwgc2ltaWxhciB0byB0aGUgY2lycnVzIGJsaXR0ZXIgZml4ZXMgKGNvbW1pdHMgZmZhZjg1Nzc3OAotYW5kIDAyNmFlZmZjYjQpLgotCi1JbXBhY3Q6ICBEb1MgZm9yIHByaXZpbGVnZWQgZ3Vlc3QgdXNlcnMuICBxZW11IGNyYXNoZXMgd2l0aAotYSBzZWdmYXVsdCwgd2hlbiBoaXR0aW5nIHRoZSBndWFyZCBwYWdlIGFmdGVyIHZnYSBtZW1vcnkKLWFsbG9jYXRpb24sIHdoaWxlIHJlYWRpbmcgdmdhIG1lbW9yeSBmb3IgZGlzcGxheSB1cGRhdGVzLgotCi1GaXhlczogQ1ZFLTIwMTctMTM2NzIKLUNjOiBQIEogUCA8cHBhbmRpdEByZWRoYXQuY29tPgotUmVwb3J0ZWQtYnk6IERhdmlkIEJ1Y2hhbmFuIDxkQHZpZGJ1Y2hhbmFuLmNvLnVrPgotU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1NZXNzYWdlLWlkOiAyMDE3MDgyODEyMjkwNi4xODk5My0xLWtyYXhlbEByZWRoYXQuY29tCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPTNkOTBjNjI1NDg2MzY5M2E2YjEzZDkxOGQyYjg2ODJlMDhiYmM2ODFdCi0KLUNWRTogQ1ZFLTIwMTctMTM2NzIKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gaHcvZGlzcGxheS92Z2EtaGVscGVycy5oIHwgMjAyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gaHcvZGlzcGxheS92Z2EuYyAgICAgICAgIHwgICA1ICstCi0gaHcvZGlzcGxheS92Z2FfaW50LmggICAgIHwgICAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaCBiL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaAotaW5kZXggOTRmNmRlMi4uNWE3NTJiMyAxMDA2NDQKLS0tLSBhL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaAotKysrIGIvaHcvZGlzcGxheS92Z2EtaGVscGVycy5oCi1AQCAtOTUsMjAgKzk1LDQ2IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dseXBoOSh1aW50OF90ICpkLCBpbnQgbGluZXNpemUsCi0gICAgIH0gd2hpbGUgKC0taCk7Ci0gfQotIAotK3N0YXRpYyBpbmxpbmUgdWludDhfdCB2Z2FfcmVhZF9ieXRlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQzMl90IGFkZHIpCi0rewotKyAgICByZXR1cm4gdmdhLT52cmFtX3B0clthZGRyICYgdmdhLT52YmVfc2l6ZV9tYXNrXTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB1aW50MTZfdCB2Z2FfcmVhZF93b3JkX2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQzMl90IGFkZHIpCi0rewotKyAgICB1aW50MzJfdCBvZmZzZXQgPSBhZGRyICYgdmdhLT52YmVfc2l6ZV9tYXNrICYgfjE7Ci0rICAgIHVpbnQxNl90ICpwdHIgPSAodWludDE2X3QgKikodmdhLT52cmFtX3B0ciArIG9mZnNldCk7Ci0rICAgIHJldHVybiBsZHV3X2xlX3AocHRyKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB1aW50MTZfdCB2Z2FfcmVhZF93b3JkX2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQzMl90IGFkZHIpCi0rewotKyAgICB1aW50MzJfdCBvZmZzZXQgPSBhZGRyICYgdmdhLT52YmVfc2l6ZV9tYXNrICYgfjE7Ci0rICAgIHVpbnQxNl90ICpwdHIgPSAodWludDE2X3QgKikodmdhLT52cmFtX3B0ciArIG9mZnNldCk7Ci0rICAgIHJldHVybiBsZHV3X2JlX3AocHRyKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB1aW50MzJfdCB2Z2FfcmVhZF9kd29yZF9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gYWRkciAmIHZnYS0+dmJlX3NpemVfbWFzayAmIH4zOwotKyAgICB1aW50MzJfdCAqcHRyID0gKHVpbnQzMl90ICopKHZnYS0+dnJhbV9wdHIgKyBvZmZzZXQpOwotKyAgICByZXR1cm4gbGRsX2xlX3AocHRyKTsKLSt9Ci0rCi0gLyoKLSAgKiA0IGNvbG9yIG1vZGUKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgKnBhbGV0dGUsIGRhdGEsIHY7Ci0gICAgIGludCB4OwotIAotLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKLS0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSsgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOwotKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07Ci0rICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKLSAgICAgICAgIHYgPSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAwKV07Ci0gICAgICAgICB2IHw9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDIpXSA8PCAyOwotQEAgLTEyNCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlWyh2ID4+IDQpICYgMHhmXTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVs3XSA9IHBhbGV0dGVbKHYgPj4gMCkgJiAweGZdOwotICAgICAgICAgZCArPSAzMjsKLS0gICAgICAgIHMgKz0gNDsKLSsgICAgICAgIGFkZHIgKz0gNDsKLSAgICAgfQotIH0KLSAKLUBAIC0xMzQsMTcgKzE2MCwxNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gLyoKLSAgKiA0IGNvbG9yIG1vZGUsIGR1cDIgaG9yaXpvbnRhbAotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyZDIoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIHVpbnQzMl90IHBsYW5lX21hc2ssICpwYWxldHRlLCBkYXRhLCB2OwotICAgICBpbnQgeDsKLSAKLS0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7Ci0tICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07Ci0rICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKLSsgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOwotKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7Ci0gICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7Ci0gICAgICAgICB2ID0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMCldOwotICAgICAgICAgdiB8PSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAyKV0gPDwgMjsKLUBAIC0xNjAsMjQgKzE4NiwyNCBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMmQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAgICAgICAgIFBVVF9QSVhFTDIoZCwgNiwgcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl0pOwotICAgICAgICAgUFVUX1BJWEVMMihkLCA3LCBwYWxldHRlWyh2ID4+IDApICYgMHhmXSk7Ci0gICAgICAgICBkICs9IDY0OwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICB9Ci0gfQotIAotIC8qCi0gICogMTYgY29sb3IgbW9kZQotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0KFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTQoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCBkYXRhLCB2LCAqcGFsZXR0ZTsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0rICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotICAgICB3aWR0aCA+Pj0gMzsKLSAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewotLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKLSsgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOwotICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOwotICAgICAgICAgdiA9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDApXTsKLSAgICAgICAgIHYgfD0gZXhwYW5kNFtHRVRfUExBTkUoZGF0YSwgMSldIDw8IDE7Ci1AQCAtMTkyLDI0ICsyMTgsMjQgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTQoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlWyh2ID4+IDApICYgMHhmXTsKLSAgICAgICAgIGQgKz0gMzI7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgIH0KLSB9Ci0gCi0gLyoKLSAgKiAxNiBjb2xvciBtb2RlLCBkdXAyIGhvcml6b250YWwKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCBkYXRhLCB2LCAqcGFsZXR0ZTsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0rICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotICAgICB3aWR0aCA+Pj0gMzsKLSAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewotLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKLSsgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOwotICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOwotICAgICAgICAgdiA9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDApXTsKLSAgICAgICAgIHYgfD0gZXhwYW5kNFtHRVRfUExBTkUoZGF0YSwgMSldIDw8IDE7Ci1AQCAtMjI0LDcgKzI1MCw3IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotICAgICAgICAgUFVUX1BJWEVMMihkLCA2LCBwYWxldHRlWyh2ID4+IDQpICYgMHhmXSk7Ci0gICAgICAgICBQVVRfUElYRUwyKGQsIDcsIHBhbGV0dGVbKHYgPj4gMCkgJiAweGZdKTsKLSAgICAgICAgIGQgKz0gNjQ7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMjMzLDIxICsyNTksMjEgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gICoKLSAgKiBYWFg6IGFkZCBwbGFuZV9tYXNrIHN1cHBvcnQgKG5ldmVyIHVzZWQgaW4gc3RhbmRhcmQgVkdBIG1vZGVzKQotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4ZDIoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIHVpbnQzMl90ICpwYWxldHRlOwotICAgICBpbnQgeDsKLSAKLS0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7Ci0rICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgIFBVVF9QSVhFTDIoZCwgMCwgcGFsZXR0ZVtzWzBdXSk7Ci0tICAgICAgICBQVVRfUElYRUwyKGQsIDEsIHBhbGV0dGVbc1sxXV0pOwotLSAgICAgICAgUFVUX1BJWEVMMihkLCAyLCBwYWxldHRlW3NbMl1dKTsKLS0gICAgICAgIFBVVF9QSVhFTDIoZCwgMywgcGFsZXR0ZVtzWzNdXSk7Ci0rICAgICAgICBQVVRfUElYRUwyKGQsIDAsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKV0pOwotKyAgICAgICAgUFVUX1BJWEVMMihkLCAxLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSldKTsKLSsgICAgICAgIFBVVF9QSVhFTDIoZCwgMiwgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpXSk7Ci0rICAgICAgICBQVVRfUElYRUwyKGQsIDMsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAzKV0pOwotICAgICAgICAgZCArPSAzMjsKLS0gICAgICAgIHMgKz0gNDsKLSsgICAgICAgIGFkZHIgKz0gNDsKLSAgICAgfQotIH0KLSAKLUBAIC0yNTYsNjMgKzI4Miw2MyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAgKgotICAqIFhYWDogYWRkIHBsYW5lX21hc2sgc3VwcG9ydCAobmV2ZXIgdXNlZCBpbiBzdGFuZGFyZCBWR0EgbW9kZXMpCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTgoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOChWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIHVpbnQzMl90ICpwYWxldHRlOwotICAgICBpbnQgeDsKLSAKLS0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7Ci0rICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHBhbGV0dGVbc1swXV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbMV0gPSBwYWxldHRlW3NbMV1dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzJdID0gcGFsZXR0ZVtzWzJdXTsKLS0gICAgICAgICgodWludDMyX3QgKilkKVszXSA9IHBhbGV0dGVbc1szXV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbNF0gPSBwYWxldHRlW3NbNF1dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzVdID0gcGFsZXR0ZVtzWzVdXTsKLS0gICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbc1s2XV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlW3NbN11dOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVsxXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbMl0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMildOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzNdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDMpXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVs0XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA0KV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbNV0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNSldOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDYpXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVs3XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA3KV07Ci0gICAgICAgICBkICs9IDMyOwotLSAgICAgICAgcyArPSA4OwotKyAgICAgICAgYWRkciArPSA4OwotICAgICB9Ci0gfQotIAotIC8qCi0gICogMTUgYml0IGNvbG9yCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICBpbnQgdzsKLSAgICAgdWludDMyX3QgdiwgciwgZywgYjsKLSAKLSAgICAgdyA9IHdpZHRoOwotICAgICBkbyB7Ci0tICAgICAgICB2ID0gbGR1d19sZV9wKCh2b2lkICopcyk7Ci0rICAgICAgICB2ID0gdmdhX3JlYWRfd29yZF9sZSh2Z2EsIGFkZHIpOwotICAgICAgICAgciA9ICh2ID4+IDcpICYgMHhmODsKLSAgICAgICAgIGcgPSAodiA+PiAyKSAmIDB4Zjg7Ci0gICAgICAgICBiID0gKHYgPDwgMykgJiAweGY4OwotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7Ci0tICAgICAgICBzICs9IDI7Ci0rICAgICAgICBhZGRyICs9IDI7Ci0gICAgICAgICBkICs9IDQ7Ci0gICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKLSB9Ci0gCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICBpbnQgdzsKLSAgICAgdWludDMyX3QgdiwgciwgZywgYjsKLSAKLSAgICAgdyA9IHdpZHRoOwotICAgICBkbyB7Ci0tICAgICAgICB2ID0gbGR1d19iZV9wKCh2b2lkICopcyk7Ci0rICAgICAgICB2ID0gdmdhX3JlYWRfd29yZF9iZSh2Z2EsIGFkZHIpOwotICAgICAgICAgciA9ICh2ID4+IDcpICYgMHhmODsKLSAgICAgICAgIGcgPSAodiA+PiAyKSAmIDB4Zjg7Ci0gICAgICAgICBiID0gKHYgPDwgMykgJiAweGY4OwotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7Ci0tICAgICAgICBzICs9IDI7Ci0rICAgICAgICBhZGRyICs9IDI7Ci0gICAgICAgICBkICs9IDQ7Ci0gICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKLSB9Ci1AQCAtMzIwLDM4ICszNDYsMzggQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAvKgotICAqIDE2IGJpdCBjb2xvcgotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgdiA9IGxkdXdfbGVfcCgodm9pZCAqKXMpOwotKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIHIgPSAodiA+PiA4KSAmIDB4Zjg7Ci0gICAgICAgICBnID0gKHYgPj4gMykgJiAweGZjOwotICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAyOwotKyAgICAgICAgYWRkciArPSAyOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgdiA9IGxkdXdfYmVfcCgodm9pZCAqKXMpOwotKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfYmUodmdhLCBhZGRyKTsKLSAgICAgICAgIHIgPSAodiA+PiA4KSAmIDB4Zjg7Ci0gICAgICAgICBnID0gKHYgPj4gMykgJiAweGZjOwotICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAyOwotKyAgICAgICAgYWRkciArPSAyOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotQEAgLTM1OSwzNiArMzg1LDM2IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gLyoKLSAgKiAyNCBiaXQgY29sb3IKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIGIgPSBzWzBdOwotLSAgICAgICAgZyA9IHNbMV07Ci0tICAgICAgICByID0gc1syXTsKLSsgICAgICAgIGIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApOwotKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7Ci0rICAgICAgICByID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAzOwotKyAgICAgICAgYWRkciArPSAzOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgciA9IHNbMF07Ci0tICAgICAgICBnID0gc1sxXTsKLS0gICAgICAgIGIgPSBzWzJdOwotKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCk7Ci0rICAgICAgICBnID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKTsKLSsgICAgICAgIGIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpOwotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7Ci0tICAgICAgICBzICs9IDM7Ci0rICAgICAgICBhZGRyICs9IDM7Ci0gICAgICAgICBkICs9IDQ7Ci0gICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKLSB9Ci1AQCAtMzk2LDQ0ICs0MjIsMzYgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAvKgotICAqIDMyIGJpdCBjb2xvcgotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUzMl9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLS0jaWZuZGVmIEhPU1RfV09SRFNfQklHRU5ESUFOCi0tICAgIG1lbWNweShkLCBzLCB3aWR0aCAqIDQpOwotLSNlbHNlCi0gICAgIGludCB3OwotICAgICB1aW50MzJfdCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIGIgPSBzWzBdOwotLSAgICAgICAgZyA9IHNbMV07Ci0tICAgICAgICByID0gc1syXTsKLSsgICAgICAgIGIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApOwotKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7Ci0rICAgICAgICByID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0tI2VuZGlmCi0gfQotIAotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUzMl9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLS0jaWZkZWYgSE9TVF9XT1JEU19CSUdFTkRJQU4KLS0gICAgbWVtY3B5KGQsIHMsIHdpZHRoICogNCk7Ci0tI2Vsc2UKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgciA9IHNbMV07Ci0tICAgICAgICBnID0gc1syXTsKLS0gICAgICAgIGIgPSBzWzNdOwotKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7Ci0rICAgICAgICBnID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKLSsgICAgICAgIGIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDMpOwotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgICAgICBkICs9IDQ7Ci0gICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKLS0jZW5kaWYKLSB9Ci1kaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EuYyBiL2h3L2Rpc3BsYXkvdmdhLmMKLWluZGV4IGFkN2E0NjUuLjZmYzhjODcgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZnYS5jCi0rKysgYi9ody9kaXNwbGF5L3ZnYS5jCi1AQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCB2Z2FfbWVtX3dyaXRlYihWR0FDb21tb25TdGF0ZSAqcywgaHdhZGRyIGFkZHIsIHVpbnQzMl90IHZhbCkKLSB9Ci0gCi0gdHlwZWRlZiB2b2lkIHZnYV9kcmF3X2xpbmVfZnVuYyhWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3JjYWRkciwgaW50IHdpZHRoKTsKLSAKLSAjaW5jbHVkZSAidmdhLWhlbHBlcnMuaCIKLSAKLUBAIC0xNjY2LDcgKzE2NjYsNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19ncmFwaGljKFZHQUNvbW1vblN0YXRlICpzLCBpbnQgZnVsbF91cGRhdGUpCi0gICAgICAgICAgICAgaWYgKHlfc3RhcnQgPCAwKQotICAgICAgICAgICAgICAgICB5X3N0YXJ0ID0geTsKLSAgICAgICAgICAgICBpZiAoIShpc19idWZmZXJfc2hhcmVkKHN1cmZhY2UpKSkgewotLSAgICAgICAgICAgICAgICB2Z2FfZHJhd19saW5lKHMsIGQsIHMtPnZyYW1fcHRyICsgYWRkciwgd2lkdGgpOwotKyAgICAgICAgICAgICAgICB2Z2FfZHJhd19saW5lKHMsIGQsIGFkZHIsIHdpZHRoKTsKLSAgICAgICAgICAgICAgICAgaWYgKHMtPmN1cnNvcl9kcmF3X2xpbmUpCi0gICAgICAgICAgICAgICAgICAgICBzLT5jdXJzb3JfZHJhd19saW5lKHMsIGQsIHkpOwotICAgICAgICAgICAgIH0KLUBAIC0yMTcwLDYgKzIxNzAsNyBAQCB2b2lkIHZnYV9jb21tb25faW5pdChWR0FDb21tb25TdGF0ZSAqcywgT2JqZWN0ICpvYmosIGJvb2wgZ2xvYmFsX3Ztc3RhdGUpCi0gICAgIGlmICghcy0+dmJlX3NpemUpIHsKLSAgICAgICAgIHMtPnZiZV9zaXplID0gcy0+dnJhbV9zaXplOwotICAgICB9Ci0rICAgIHMtPnZiZV9zaXplX21hc2sgPSBzLT52YmVfc2l6ZSAtIDE7Ci0gCi0gICAgIHMtPmlzX3ZiZV92bXN0YXRlID0gMTsKLSAgICAgbWVtb3J5X3JlZ2lvbl9pbml0X3JhbV9ub21pZ3JhdGUoJnMtPnZyYW0sIG9iaiwgInZnYS52cmFtIiwgcy0+dnJhbV9zaXplLAotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmdhX2ludC5oIGIvaHcvZGlzcGxheS92Z2FfaW50LmgKLWluZGV4IGRkNmM5NTguLmFkMzRhMWYgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZnYV9pbnQuaAotKysrIGIvaHcvZGlzcGxheS92Z2FfaW50LmgKLUBAIC05NCw2ICs5NCw3IEBAIHR5cGVkZWYgc3RydWN0IFZHQUNvbW1vblN0YXRlIHsKLSAgICAgdWludDMyX3QgdnJhbV9zaXplOwotICAgICB1aW50MzJfdCB2cmFtX3NpemVfbWI7IC8qIHByb3BlcnR5ICovCi0gICAgIHVpbnQzMl90IHZiZV9zaXplOwotKyAgICB1aW50MzJfdCB2YmVfc2l6ZV9tYXNrOwotICAgICB1aW50MzJfdCBsYXRjaDsKLSAgICAgYm9vbCBoYXNfY2hhaW40X2FsaWFzOwotICAgICBNZW1vcnlSZWdpb24gY2hhaW40X2FsaWFzOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjczLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDA2OTVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjczLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBlNjUyOTQxNTdkNGI2OTM5M2IzZjgxOWM5OWY0ZjY0NzQ1MmI0OGUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDE0OjMzOjA3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZnYTogZml4IGRpc3BsYXkgdXBkYXRlIHJlZ2lvbiBjYWxjdWxhdGlvbiAoc3BsaXQgc2NyZWVuKQotCi12Z2EgZGlzcGxheSB1cGRhdGUgbWlzLWNhbGN1bGF0ZWQgdGhlIHJlZ2lvbiBmb3IgdGhlIGRpcnR5IGJpdG1hcAotc25hcHNob3QgaW4gY2FzZSBzcGxpdCBzY3JlZW4gbW9kZSBpcyB1c2VkLiAgVGhpcyBjYW4gdHJpZ2dlciBhbgotYXNzZXJ0IGluIGNwdV9waHlzaWNhbF9tZW1vcnlfc25hcHNob3RfZ2V0X2RpcnR5KCkuCi0KLUltcGFjdDogIERvUyBmb3IgcHJpdmlsZWdlZCBndWVzdCB1c2Vycy4KLQotRml4ZXM6IENWRS0yMDE3LTEzNjczCi1GaXhlczogZmVjNWU4YzkyYmVjYWQyMjNkZjlkOTcyNzcwNTIyZjY0YWFmZGI3MgotQ2M6IFAgSiBQIDxwcGFuZGl0QHJlZGhhdC5jb20+Ci1SZXBvcnRlZC1ieTogRGF2aWQgQnVjaGFuYW4gPGRAdmlkYnVjaGFuYW4uY28udWs+Ci1TaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KLU1lc3NhZ2UtaWQ6IDIwMTcwODI4MTIzMzA3LjE1MzkyLTEta3JheGVsQHJlZGhhdC5jb20KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9ZTY1Mjk0MTU3ZDRiNjkzOTNiM2Y4MTljOTlmNGY2NDc0NTJiNDhlM10KLQotQ1ZFOiBDVkUtMjAxNy0xMzY3MwotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBody9kaXNwbGF5L3ZnYS5jIHwgMTAgKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYS5jIGIvaHcvZGlzcGxheS92Z2EuYwotaW5kZXggMzQzMzEwMi4uYWQ3YTQ2NSAxMDA2NDQKLS0tLSBhL2h3L2Rpc3BsYXkvdmdhLmMKLSsrKyBiL2h3L2Rpc3BsYXkvdmdhLmMKLUBAIC0xNjI4LDkgKzE2MjgsMTUgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfZ3JhcGhpYyhWR0FDb21tb25TdGF0ZSAqcywgaW50IGZ1bGxfdXBkYXRlKQotICAgICB5MSA9IDA7Ci0gCi0gICAgIGlmICghZnVsbF91cGRhdGUpIHsKLSsgICAgICAgIHJhbV9hZGRyX3QgcmVnaW9uX3N0YXJ0ID0gYWRkcjE7Ci0rICAgICAgICByYW1fYWRkcl90IHJlZ2lvbl9lbmQgPSBhZGRyMSArIGxpbmVfb2Zmc2V0ICogaGVpZ2h0OwotICAgICAgICAgdmdhX3N5bmNfZGlydHlfYml0bWFwKHMpOwotLSAgICAgICAgc25hcCA9IG1lbW9yeV9yZWdpb25fc25hcHNob3RfYW5kX2NsZWFyX2RpcnR5KCZzLT52cmFtLCBhZGRyMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX29mZnNldCAqIGhlaWdodCwKLSsgICAgICAgIGlmIChzLT5saW5lX2NvbXBhcmUgPCBoZWlnaHQpIHsKLSsgICAgICAgICAgICAvKiBzcGxpdCBzY3JlZW4gbW9kZSAqLwotKyAgICAgICAgICAgIHJlZ2lvbl9zdGFydCA9IDA7Ci0rICAgICAgICB9Ci0rICAgICAgICBzbmFwID0gbWVtb3J5X3JlZ2lvbl9zbmFwc2hvdF9hbmRfY2xlYXJfZGlydHkoJnMtPnZyYW0sIHJlZ2lvbl9zdGFydCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb25fZW5kIC0gcmVnaW9uX3N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJUlRZX01FTU9SWV9WR0EpOwotICAgICB9Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM3MTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MmY3M2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM3MTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1Gcm9tIDEyMDFkMzA4NTE5ZjFlOTE1ODY2ZDc1ODNkNTEzNmQwM2NjMWQzODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTYW11ZWwgVGhpYmF1bHQgPHNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmc+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjM1OjUzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNsaXJwOiBmaXggY2xlYXJpbmcgaWZxX3NvIGZyb20gcGVuZGluZyBwYWNrZXRzCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZSBpZl9mYXN0cSBhbmQgaWZfYmF0Y2hxIGNvbnRhaW4gbm90IG9ubHkgcGFja2V0cywgYnV0IHF1ZXVlcyBvZiBwYWNrZXRzCi1mb3IgdGhlIHNhbWUgc29ja2V0LiBXaGVuIHNvZnJlZSBmcmVlcyBhIHNvY2tldCwgaXQgdGh1cyBoYXMgdG8gY2xlYXIgaWZxX3NvCi1mcm9tIGFsbCB0aGUgcGFja2V0cyBmcm9tIHRoZSBxdWV1ZXMsIG5vdCBvbmx5IHRoZSBmaXJzdC4KLQotU2lnbmVkLW9mZi1ieTogU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgotUmV2aWV3ZWQtYnk6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOpIDxmNGJ1Z0BhbXNhdC5vcmc+Ci1DYzogcWVtdS1zdGFibGVAbm9uZ251Lm9yZwotU2lnbmVkLW9mZi1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD0xMjAxZDMwODUxOWYxZTkxNTg2NmQ3NTgzZDUxMzZkMDNjYzFkMzg0XQotCi1DVkU6IENWRS0yMDE3LTEzNzExCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNsaXJwL3NvY2tldC5jIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2xpcnAvc29ja2V0LmMgYi9zbGlycC9zb2NrZXQuYwotaW5kZXggZWNlYzAyOS4uY2I3YjViNiAxMDA2NDQKLS0tLSBhL3NsaXJwL3NvY2tldC5jCi0rKysgYi9zbGlycC9zb2NrZXQuYwotQEAgLTYwLDI5ICs2MCwzNiBAQCBzb2NyZWF0ZShTbGlycCAqc2xpcnApCi0gfQotIAotIC8qCi0rICogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gc28gZnJvbSB0aGUgZ2l2ZW4gbWVzc2FnZSBxdWV1ZS4KLSsgKi8KLStzdGF0aWMgdm9pZAotK3NvcWZyZWUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBxdWVoZWFkICpxaCkKLSt7Ci0rICAgIHN0cnVjdCBtYnVmICppZnE7Ci0rCi0rICAgIGZvciAoaWZxID0gKHN0cnVjdCBtYnVmICopIHFoLT5xaF9saW5rOwotKyAgICAgICAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZxICE9IHFoOwotKyAgICAgICAgICAgICBpZnEgPSBpZnEtPmlmcV9uZXh0KSB7Ci0rICAgICAgICBpZiAoaWZxLT5pZnFfc28gPT0gc28pIHsKLSsgICAgICAgICAgICBzdHJ1Y3QgbWJ1ZiAqaWZtOwotKyAgICAgICAgICAgIGlmcS0+aWZxX3NvID0gTlVMTDsKLSsgICAgICAgICAgICBmb3IgKGlmbSA9IGlmcS0+aWZzX25leHQ7IGlmbSAhPSBpZnE7IGlmbSA9IGlmbS0+aWZzX25leHQpIHsKLSsgICAgICAgICAgICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgfQotK30KLSsKLSsvKgotICAqIHJlbXF1ZSBhbmQgZnJlZSBhIHNvY2tldCwgY2xvYmJlciBjYWNoZQotICAqLwotIHZvaWQKLSBzb2ZyZWUoc3RydWN0IHNvY2tldCAqc28pCi0gewotICAgU2xpcnAgKnNsaXJwID0gc28tPnNsaXJwOwotLSAgc3RydWN0IG1idWYgKmlmbTsKLSAKLS0gIGZvciAoaWZtID0gKHN0cnVjdCBtYnVmICopIHNsaXJwLT5pZl9mYXN0cS5xaF9saW5rOwotLSAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZtICE9ICZzbGlycC0+aWZfZmFzdHE7Ci0tICAgICAgIGlmbSA9IGlmbS0+aWZxX25leHQpIHsKLS0gICAgaWYgKGlmbS0+aWZxX3NvID09IHNvKSB7Ci0tICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOwotLSAgICB9Ci0tICB9Ci0tCi0tICBmb3IgKGlmbSA9IChzdHJ1Y3QgbWJ1ZiAqKSBzbGlycC0+aWZfYmF0Y2hxLnFoX2xpbms7Ci0tICAgICAgIChzdHJ1Y3QgcXVlaGVhZCAqKSBpZm0gIT0gJnNsaXJwLT5pZl9iYXRjaHE7Ci0tICAgICAgIGlmbSA9IGlmbS0+aWZxX25leHQpIHsKLS0gICAgaWYgKGlmbS0+aWZxX3NvID09IHNvKSB7Ci0tICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOwotLSAgICB9Ci0tICB9Ci0rICBzb3FmcmVlKHNvLCAmc2xpcnAtPmlmX2Zhc3RxKTsKLSsgIHNvcWZyZWUoc28sICZzbGlycC0+aWZfYmF0Y2hxKTsKLSAKLSAgIGlmIChzby0+c29fZW11PT1FTVVfUlNIICYmIHNvLT5leHRyYSkgewotIAlzb2ZyZWUoc28tPmV4dHJhKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xNDE2Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY5YWQ4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xNDE2Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gZWQ0Zjg2ZThiNmVmZjhlNjAwYzY5YWRlZTY4YzdjZDM0ZGQyY2NjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotRGF0ZTogVGh1LCA3IFNlcCAyMDE3IDEyOjAyOjU2ICswNTMwCi1TdWJqZWN0OiBbUEFUQ0hdIG11bHRpYm9vdDogdmFsaWRhdGUgbXVsdGlib290IGhlYWRlciBhZGRyZXNzIHZhbHVlcwotCi1XaGlsZSBsb2FkaW5nIGtlcm5lbCB2aWEgbXVsdGlib290LXYxIGltYWdlLCAoZmxhZ3MgJiAweDAwMDEwMDAwKQotaW5kaWNhdGVzIHRoYXQgbXVsdGlib290IGhlYWRlciBjb250YWlucyB2YWxpZCBhZGRyZXNzZXMgdG8gbG9hZAotdGhlIGtlcm5lbCBpbWFnZS4gVGhlc2UgYWRkcmVzc2VzIGFyZSB1c2VkIHRvIGNvbXB1dGUga2VybmVsCi1zaXplIGFuZCBrZXJuZWwgdGV4dCBvZmZzZXQgaW4gdGhlIE9TIGltYWdlLiBWYWxpZGF0ZSB0aGVzZQotYWRkcmVzcyB2YWx1ZXMgdG8gYXZvaWQgYW4gT09CIGFjY2VzcyBpc3N1ZS4KLQotVGhpcyBpcyBDVkUtMjAxNy0xNDE2Ny4KLQotUmVwb3J0ZWQtYnk6IFRob21hcyBHYXJuaWVyIDx0aGdhcm5pZUBnb29nbGUuY29tPgotU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+Ci1NZXNzYWdlLUlkOiA8MjAxNzA5MDcwNjMyNTYuNzQxOC0xLXBwYW5kaXRAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPWVkNGY4NmU4YjZlZmY4ZTYwMGM2OWFkZWU2OGM3Y2QzNGRkMmNjY2JdCi0KLUNWRTogQ1ZFLTIwMTctMTQxNjcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gaHcvaTM4Ni9tdWx0aWJvb3QuYyB8IDE5ICsrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaHcvaTM4Ni9tdWx0aWJvb3QuYyBiL2h3L2kzODYvbXVsdGlib290LmMKLWluZGV4IDYwMDFmNGMuLmM3YjcwYzkgMTAwNjQ0Ci0tLS0gYS9ody9pMzg2L211bHRpYm9vdC5jCi0rKysgYi9ody9pMzg2L211bHRpYm9vdC5jCi1AQCAtMjIxLDE1ICsyMjEsMzQgQEAgaW50IGxvYWRfbXVsdGlib290KEZXQ2ZnU3RhdGUgKmZ3X2NmZywKLSAgICAgICAgIHVpbnQzMl90IG1oX2hlYWRlcl9hZGRyID0gbGRsX3AoaGVhZGVyK2krMTIpOwotICAgICAgICAgdWludDMyX3QgbWhfbG9hZF9lbmRfYWRkciA9IGxkbF9wKGhlYWRlcitpKzIwKTsKLSAgICAgICAgIHVpbnQzMl90IG1oX2Jzc19lbmRfYWRkciA9IGxkbF9wKGhlYWRlcitpKzI0KTsKLSsKLSAgICAgICAgIG1oX2xvYWRfYWRkciA9IGxkbF9wKGhlYWRlcitpKzE2KTsKLSsgICAgICAgIGlmIChtaF9oZWFkZXJfYWRkciA8IG1oX2xvYWRfYWRkcikgewotKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9sb2FkX2FkZHIgYWRkcmVzc1xuIik7Ci0rICAgICAgICAgICAgZXhpdCgxKTsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIHVpbnQzMl90IG1iX2tlcm5lbF90ZXh0X29mZnNldCA9IGkgLSAobWhfaGVhZGVyX2FkZHIgLSBtaF9sb2FkX2FkZHIpOwotICAgICAgICAgdWludDMyX3QgbWJfbG9hZF9zaXplID0gMDsKLSAgICAgICAgIG1oX2VudHJ5X2FkZHIgPSBsZGxfcChoZWFkZXIraSsyOCk7Ci0gCi0gICAgICAgICBpZiAobWhfbG9hZF9lbmRfYWRkcikgewotKyAgICAgICAgICAgIGlmIChtaF9ic3NfZW5kX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKLSsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2Jzc19lbmRfYWRkciBhZGRyZXNzXG4iKTsKLSsgICAgICAgICAgICAgICAgZXhpdCgxKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgbWJfa2VybmVsX3NpemUgPSBtaF9ic3NfZW5kX2FkZHIgLSBtaF9sb2FkX2FkZHI7Ci0rCi0rICAgICAgICAgICAgaWYgKG1oX2xvYWRfZW5kX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKLSsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2xvYWRfZW5kX2FkZHIgYWRkcmVzc1xuIik7Ci0rICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1iX2xvYWRfc2l6ZSA9IG1oX2xvYWRfZW5kX2FkZHIgLSBtaF9sb2FkX2FkZHI7Ci0gICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGlmIChrZXJuZWxfZmlsZV9zaXplIDwgbWJfa2VybmVsX3RleHRfb2Zmc2V0KSB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBrZXJuZWxfZmlsZV9zaXplXG4iKTsKLSsgICAgICAgICAgICAgICAgZXhpdCgxKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgbWJfa2VybmVsX3NpemUgPSBrZXJuZWxfZmlsZV9zaXplIC0gbWJfa2VybmVsX3RleHRfb2Zmc2V0OwotICAgICAgICAgICAgIG1iX2xvYWRfc2l6ZSA9IG1iX2tlcm5lbF9zaXplOwotICAgICAgICAgfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCmluZGV4IDliYmJjNmYuLmQ2YTM1MjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCkBAIC0yOCwxMiArMjgsMTIgQEAKICBody9pbnRjL2FwaWMuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2h3L2ludGMvYXBpYy5jIGIvaHcvaW50Yy9hcGljLmMKLWluZGV4IDQ1ODg3ZDk5Li5jNWFlNDA4NyAxMDA2NDQKLS0tLSBhL2h3L2ludGMvYXBpYy5jCi0rKysgYi9ody9pbnRjL2FwaWMuYwotQEAgLTU4Nyw3ICs1ODcsNyBAQCBpbnQgYXBpY19hY2NlcHRfcGljX2ludHIoRGV2aWNlU3RhdGUgKmRldikKLSAgICAgQVBJQ0NvbW1vblN0YXRlICpzID0gQVBJQ19DT01NT04oZGV2KTsKK0luZGV4OiBxZW11LTIuMTEuMS9ody9pbnRjL2FwaWMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHFlbXUtMi4xMS4xLm9yaWcvaHcvaW50Yy9hcGljLmMKKysrKyBxZW11LTIuMTEuMS9ody9pbnRjL2FwaWMuYworQEAgLTU5MSw3ICs1OTEsNyBAQCBpbnQgYXBpY19hY2NlcHRfcGljX2ludHIoRGV2aWNlU3RhdGUgKmRlCisgICAgIEFQSUNDb21tb25TdGF0ZSAqcyA9IEFQSUMoZGV2KTsKICAgICAgdWludDMyX3QgbHZ0MDsKICAKIC0gICAgaWYgKCFzKQpAQCAtNDEsNiArNDEsMyBAQAogICAgICAgICAgcmV0dXJuIC0xOwogIAogICAgICBsdnQwID0gcy0+bHZ0W0FQSUNfTFZUX0xJTlQwXTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNmJmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoCkBAIC0wLDAgKzEsMjQyIEBACitGcm9tIDNiYjMxMDBjMjJlYjMwMTQ2YTY5NjU2NDgwYmRmZmVlZjg2NjM1NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHhpbGlueC5jb20+CitEYXRlOiBUaHUsIDIxIERlYyAyMDE3IDExOjM1OjE2IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNoYXJkZXY6IGNvbm5lY3Qgc29ja2V0IHRvIGEgc3Bhd25lZCBjb21tYW5kCisKK1RoZSBjb21tYW5kIGlzIHN0YXJ0ZWQgaW4gYSBzaGVsbCAoc2ggLWMpIHdpdGggc3RkaW4gY29ubmVjdCB0byBRRU1VCit2aWEgYSBVbml4IGRvbWFpbiBzdHJlYW0gc29ja2V0LiBRRU1VIHRoZW4gZXhjaGFuZ2VzIGRhdGEgdmlhIGl0cyBvd24KK2VuZCBvZiB0aGUgc29ja2V0LCBqdXN0IGxpa2UgaXQgbm9ybWFsbHkgZG9lcy4KKworIi1jaGFyZGV2IHNvY2tldCIgc3VwcG9ydHMgc29tZSB3YXlzIG9mIGNvbm5lY3RpbmcgdmlhIHByb3RvY29scyBsaWtlCit0ZWxuZXQsIGJ1dCB0aGF0IGlzIG9ubHkgYSBzdWJzZXQgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgc3VwcG9ydGVkIGJ5Cit0b29scyBzb2NhdC4gVG8gdXNlIHNvY2F0IGluc3RlYWQsIGZvciBleGFtcGxlIHRvIGNvbm5lY3QgdmlhIGEgc29ja3MKK3Byb3h5LCB1c2U6CisKKyAgLWNoYXJkZXYgJ3NvY2tldCxpZD1zb2NhdCxjbWQ9ZXhlYyBzb2NhdCBGRDowIFNPQ0tTNEE6c29ja3MtcHJveHkubG9jYWxkb21haW46ZXhhbXBsZS5jb206OTk5OSwsc29ja3N1c2VyPW5vYm9keScgXAorICAtZGV2aWNlIHVzYi1zZXJpYWwsY2hhcmRldj1zb2NhdAorCitCZXdhcmUgdGhhdCBjb21tYXMgaW4gdGhlIGNvbW1hbmQgbXVzdCBiZSBlc2NhcGVkIGFzIGRvdWJsZSBjb21tYXMuCisKK09yIGludGVyYWN0aXZlbHkgaW4gdGhlIGNvbnNvbGU6CisgICAocWVtdSkgY2hhcmRldi1hZGQgc29ja2V0LGlkPWNhdCxjbWQ9Y2F0CisgICAocWVtdSkgZGV2aWNlX2FkZCB1c2Itc2VyaWFsLGNoYXJkZXY9Y2F0CisgICBeYWMKKyAgICMgY2F0ID4vZGV2L3R0eVVTQjAKKyAgIGhlbGxvCisgICBoZWxsbworCitBbm90aGVyIHVzYWdlIGlzIHN0YXJ0aW5nIHN3dHBtIGZyb20gaW5zaWRlIFFFTVUuIHN3dHBtIHdpbGwKK2F1dG9tYXRpY2FsbHkgc2h1dCBkb3duIG9uY2UgaXQgbG9vc2VzIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwYXJlbnQKK1FFTVUsIHNvIHRoZXJlIGlzIG5vIHJpc2sgb2YgbGluZ2VyaW5nIHByb2Nlc3NlczoKKworICAtY2hhcmRldiAnc29ja2V0LGlkPWNocnRwbTAsY21kPWV4ZWMgc3d0cG0gc29ja2V0IC0tdGVybWluYXRlIC0tY3RybCB0eXBlPXVuaXhpbywsY2xpZW50ZmQ9MCAtLXRwbXN0YXRlIGRpcj0uLi4gLS1sb2cgZmlsZT1zd3RwbS5sb2cnIFwKKyAgLXRwbWRldiBlbXVsYXRvcixpZD10cG0wLGNoYXJkZXY9Y2hydHBtMCBcCisgIC1kZXZpY2UgdHBtLXRpcyx0cG1kZXY9dHBtMAorCitUaGUgcGF0Y2ggd2FzIGRpc2N1c3NlZCB1cHN0cmVhbSwgYnV0IFFFTVUgZGV2ZWxvcGVycyBiZWxpZXZlIHRoYXQgdGhlCitjb2RlIGNhbGxpbmcgUUVNVSBzaG91bGQgYmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGFkZGl0aW9uYWwKK3Byb2Nlc3Nlcy4gSW4gT0UtY29yZSwgdGhhdCB3b3VsZCBpbXBseSBlbmhhbmNpbmcgcnVucWVtdSBhbmQKK29lcWEuIFRoaXMgcGF0Y2ggaXMgYSBzaW1wbGVyIHNvbHV0aW9uLgorCitCZWNhdXNlIGl0IGlzIG5vdCBnb2luZyB1cHN0cmVhbSwgdGhlIHBhdGNoIHdhcyB3cml0dGVuIHNvIHRoYXQgaXQgaXMKK2FzIHNpbXBsZSBhcyBwb3NzaWJsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgorLS0tCisgY2hhcmRldi9jaGFyLXNvY2tldC5jIHwgODYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCisgY2hhcmRldi9jaGFyLmMgICAgICAgIHwgIDMgKysKKyBxYXBpL2NoYXIuanNvbiAgICAgICAgfCAgNSArKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFyZGV2L2NoYXItc29ja2V0LmMgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKK2luZGV4IDUzZWRhOGVmMDAuLmY1NjYxMDdjMzUgMTAwNjQ0CistLS0gYS9jaGFyZGV2L2NoYXItc29ja2V0LmMKKysrKyBiL2NoYXJkZXYvY2hhci1zb2NrZXQuYworQEAgLTg1Miw2ICs4NTIsNjggQEAgc3RhdGljIGdib29sZWFuIHNvY2tldF9yZWNvbm5lY3RfdGltZW91dChncG9pbnRlciBvcGFxdWUpCisgICAgIHJldHVybiBmYWxzZTsKKyB9CisgCisrI2lmbmRlZiBfV0lOMzIKKytzdGF0aWMgdm9pZCBjaGFyZGV2X29wZW5fc29ja2V0X2NtZChDaGFyZGV2ICpjaHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY21kLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkKKyt7CisrICAgIGludCBmZHNbMl0gPSB7IC0xLCAtMSB9OworKyAgICBRSU9DaGFubmVsU29ja2V0ICpzaW9jID0gTlVMTDsKKysgICAgcGlkX3QgcGlkID0gLTE7CisrICAgIGNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsgIi9iaW4vc2giLCAiLWMiLCBjbWQsIE5VTEwgfTsKKysKKysgICAgLyoKKysgICAgICogV2UgbmVlZCBhIFVuaXggZG9tYWluIHNvY2tldCBmb3IgY29tbWFuZHMgbGlrZSBzd3RwbSBhbmQgYSBzaW5nbGUKKysgICAgICogY29ubmVjdGlvbiwgdGhlcmVmb3JlIHdlIGNhbm5vdCB1c2UgcWlvX2NoYW5uZWxfY29tbWFuZF9uZXdfc3Bhd24oKQorKyAgICAgKiB3aXRob3V0IHBhdGNoaW5nIGl0IGZpcnN0LiBEdXBsaWNhdGluZyB0aGUgZnVuY3Rpb25hbGl0eSBpcyBlYXNpZXIuCisrICAgICAqLworKyAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTXxTT0NLX0NMT0VYRUMsIDAsIGZkcykpIHsKKysgICAgICAgIGVycm9yX3NldGdfZXJybm8oZXJycCwgZXJybm8sICJFcnJvciBjcmVhdGluZyBzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNfFNPQ0tfQ0xPRVhFQykiKTsKKysgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIH0KKysKKysgICAgcGlkID0gcWVtdV9mb3JrKGVycnApOworKyAgICBpZiAocGlkIDwgMCkgeworKyAgICAgICAgZ290byBlcnJvcjsKKysgICAgfQorKworKyAgICBpZiAoIXBpZCkgeworKyAgICAgICAgLyogY2hpbGQgKi8KKysgICAgICAgIGR1cDIoZmRzWzFdLCBTVERJTl9GSUxFTk8pOworKyAgICAgICAgZXhlY3YoYXJndlswXSwgKGNoYXIgKiBjb25zdCAqKWFyZ3YpOworKyAgICAgICAgX2V4aXQoMSk7CisrICAgIH0KKysKKysgICAgLyoKKysgICAgICogSGFuZCBvdmVyIG91ciBlbmQgb2YgdGhlIHNvY2tldCBwYWlyIHRvIHRoZSBxaW8gY2hhbm5lbC4KKysgICAgICoKKysgICAgICogV2UgZG9uJ3QgcmVhcCB0aGUgY2hpbGQgYmVjYXVzZSBpdCBpcyBleHBlY3RlZCB0byBrZWVwCisrICAgICAqIHJ1bm5pbmcuIFdlIGFsc28gZG9uJ3Qgc3VwcG9ydCB0aGUgInJlY29ubmVjdCIgb3B0aW9uIGZvciB0aGUKKysgICAgICogc2FtZSByZWFzb24uCisrICAgICAqLworKyAgICBzaW9jID0gcWlvX2NoYW5uZWxfc29ja2V0X25ld19mZChmZHNbMF0sIGVycnApOworKyAgICBpZiAoIXNpb2MpIHsKKysgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIH0KKysgICAgZmRzWzBdID0gLTE7CisrCisrICAgIGdfZnJlZShjaHItPmZpbGVuYW1lKTsKKysgICAgY2hyLT5maWxlbmFtZSA9IGdfc3RyZHVwX3ByaW50ZigiY21kOiVzIiwgY21kKTsKKysgICAgdGNwX2Nocl9uZXdfY2xpZW50KGNociwgc2lvYyk7CisrCisrIGVycm9yOgorKyAgICBpZiAoZmRzWzBdID49IDApIHsKKysgICAgICAgIGNsb3NlKGZkc1swXSk7CisrICAgIH0KKysgICAgaWYgKGZkc1sxXSA+PSAwKSB7CisrICAgICAgICBjbG9zZShmZHNbMV0pOworKyAgICB9CisrICAgIGlmIChzaW9jKSB7CisrICAgICAgICBvYmplY3RfdW5yZWYoT0JKRUNUKHNpb2MpKTsKKysgICAgfQorK30KKysjZW5kaWYKKysKKyBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqYmVfb3BlbmVkLAorQEAgLTg1OSw2ICs5MjEsOSBAQAorIHsKKyAgICAgU29ja2V0Q2hhcmRldiAqcyA9IFNPQ0tFVF9DSEFSREVWKGNocik7CisgICAgIENoYXJkZXZTb2NrZXQgKnNvY2sgPSBiYWNrZW5kLT51LnNvY2tldC5kYXRhOworKyNpZm5kZWYgX1dJTjMyCisrICAgIGNvbnN0IGNoYXIgKmNtZCAgICAgPSBzb2NrLT5jbWQ7CisrI2VuZGlmCisgICAgIGJvb2wgZG9fbm9kZWxheSAgICAgPSBzb2NrLT5oYXNfbm9kZWxheSA/IHNvY2stPm5vZGVsYXkgOiBmYWxzZTsKKyAgICAgYm9vbCBpc19saXN0ZW4gICAgICA9IHNvY2stPmhhc19zZXJ2ZXIgID8gc29jay0+c2VydmVyICA6IHRydWU7CisgICAgIGJvb2wgaXNfdGVsbmV0ICAgICAgPSBzb2NrLT5oYXNfdGVsbmV0ICA/IHNvY2stPnRlbG5ldCAgOiBmYWxzZTsKK0BAIC05MjUsNyArOTkwLDE0IEBACisgICAgIH0gZWxzZSBpZiAocmVjb25uZWN0ID4gMCkgeworICAgICAgICAgcy0+cmVjb25uZWN0X3RpbWUgPSByZWNvbm5lY3Q7CisgICAgIH0KKy0KKysjaWZuZGVmIF9XSU4zMgorKyAgICBpZiAoY21kKSB7CisrICAgICAgICBjaGFyZGV2X29wZW5fc29ja2V0X2NtZChjaHIsIGNtZCwgZXJycCk7CisrCisrICAgICAgICAvKiBldmVyeXRoaW5nIHJlYWR5IChvciBmYWlsZWQgcGVybWFuZW50bHkpIGJlZm9yZSB3ZSByZXR1cm4gKi8KKysgICAgICAgICpiZV9vcGVuZWQgPSB0cnVlOworKyAgICB9IGVsc2UKKysjZW5kaWYKKyAgICAgaWYgKHMtPnJlY29ubmVjdF90aW1lKSB7CisgICAgICAgICBzaW9jID0gcWlvX2NoYW5uZWxfc29ja2V0X25ldygpOworICAgICAgICAgdGNwX2Nocl9zZXRfY2xpZW50X2lvY19uYW1lKGNociwgc2lvYyk7CitAQCAtOTg1LDEwICsxMDU3LDI2IEBACisgICAgIGNvbnN0IGNoYXIgKmhvc3QgPSBxZW11X29wdF9nZXQob3B0cywgImhvc3QiKTsKKyAgICAgY29uc3QgY2hhciAqcG9ydCA9IHFlbXVfb3B0X2dldChvcHRzLCAicG9ydCIpOworICAgICBjb25zdCBjaGFyICp0bHNfY3JlZHMgPSBxZW11X29wdF9nZXQob3B0cywgInRscy1jcmVkcyIpOworKyNpZm5kZWYgX1dJTjMyCisrICAgIGNvbnN0IGNoYXIgKmNtZCA9IHFlbXVfb3B0X2dldChvcHRzLCAiY21kIik7CisrI2VuZGlmCisgICAgIFNvY2tldEFkZHJlc3NMZWdhY3kgKmFkZHI7CisgICAgIENoYXJkZXZTb2NrZXQgKnNvY2s7CisgCisgICAgIGJhY2tlbmQtPnR5cGUgPSBDSEFSREVWX0JBQ0tFTkRfS0lORF9TT0NLRVQ7CisrI2lmbmRlZiBfV0lOMzIKKysgICAgaWYgKGNtZCkgeworKyAgICAgICAgLyoKKysgICAgICAgICAqIEhlcmUgd2UgaGF2ZSB0byBlbnN1cmUgdGhhdCBubyBvcHRpb25zIGFyZSBzZXQgd2hpY2ggYXJlIGluY29tcGF0aWJsZSB3aXRoCisrICAgICAgICAgKiBzcGF3bmluZyBhIGNvbW1hbmQsIG90aGVyd2lzZSB1bm1vZGlmaWVkIGNvZGUgdGhhdCBkb2Vzbid0IGtub3cgYWJvdXQKKysgICAgICAgICAqIGNvbW1hbmQgc3Bhd25pbmcgKGxpa2Ugc29ja2V0X3JlY29ubmVjdF90aW1lb3V0KCkpIG1pZ2h0IGdldCBjYWxsZWQuCisrICAgICAgICAgKi8KKysgICAgICAgIGlmIChwYXRoIHx8IGlzX2xpc3RlbiB8fCBpc190ZWxuZXQgfHwgaXNfdG4zMjcwIHx8IHJlY29ubmVjdCB8fCBob3N0IHx8IHBvcnQgfHwgdGxzX2NyZWRzKSB7CisrICAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiY2hhcmRldjogc29ja2V0OiBjbWQgZG9lcyBub3Qgc3VwcG9ydCBhbnkgYWRkaXRpb25hbCBvcHRpb25zIik7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICB9IGVsc2UKKysjZW5kaWYKKyAgICAgaWYgKCFwYXRoKSB7CisgICAgICAgICBpZiAoIWhvc3QpIHsKKyAgICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJjaGFyZGV2OiBzb2NrZXQ6IG5vIGhvc3QgZ2l2ZW4iKTsKK0BAIC0xMDIxLDEzICsxMTA5LDI0IEBACisgICAgIHNvY2stPmhhc19yZWNvbm5lY3QgPSB0cnVlOworICAgICBzb2NrLT5yZWNvbm5lY3QgPSByZWNvbm5lY3Q7CisgICAgIHNvY2stPnRsc19jcmVkcyA9IGdfc3RyZHVwKHRsc19jcmVkcyk7CisrI2lmbmRlZiBfV0lOMzIKKysgICAgc29jay0+Y21kID0gZ19zdHJkdXAoY21kKTsKKysjZW5kaWYKKyAKKyAgICAgYWRkciA9IGdfbmV3MChTb2NrZXRBZGRyZXNzTGVnYWN5LCAxKTsKKysjaWZuZGVmIF9XSU4zMgorKyAgICBpZiAocGF0aCB8fCBjbWQpIHsKKysjZWxzZQorICAgICBpZiAocGF0aCkgeworKyNlbmRpZgorICAgICAgICAgVW5peFNvY2tldEFkZHJlc3MgKnFfdW5peDsKKyAgICAgICAgIGFkZHItPnR5cGUgPSBTT0NLRVRfQUREUkVTU19MRUdBQ1lfS0lORF9VTklYOworICAgICAgICAgcV91bml4ID0gYWRkci0+dS5xX3VuaXguZGF0YSA9IGdfbmV3MChVbml4U29ja2V0QWRkcmVzcywgMSk7CisrI2lmbmRlZiBfV0lOMzIKKysgICAgICAgIHFfdW5peC0+cGF0aCA9IGNtZCA/IGdfc3RyZHVwX3ByaW50ZigiY21kOiVzIiwgY21kKSA6IGdfc3RyZHVwKHBhdGgpOworKyNlbHNlCisgICAgICAgICBxX3VuaXgtPnBhdGggPSBnX3N0cmR1cChwYXRoKTsKKysjZW5kaWYKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGFkZHItPnR5cGUgPSBTT0NLRVRfQUREUkVTU19MRUdBQ1lfS0lORF9JTkVUOworICAgICAgICAgYWRkci0+dS5pbmV0LmRhdGEgPSBnX25ldyhJbmV0U29ja2V0QWRkcmVzcywgMSk7CitkaWZmIC0tZ2l0IGEvY2hhcmRldi9jaGFyLmMgYi9jaGFyZGV2L2NoYXIuYworaW5kZXggMmFlNGY0NjVlYy4uNWQ1MmNkNWRlNSAxMDA2NDQKKy0tLSBhL2NoYXJkZXYvY2hhci5jCisrKysgYi9jaGFyZGV2L2NoYXIuYworQEAgLTc5Miw2ICs3OTIsOSBAQCBRZW11T3B0c0xpc3QgcWVtdV9jaGFyZGV2X29wdHMgPSB7CisgICAgICAgICB9LHsKKyAgICAgICAgICAgICAubmFtZSA9ICJwYXRoIiwKKyAgICAgICAgICAgICAudHlwZSA9IFFFTVVfT1BUX1NUUklORywKKysgICAgICAgIH0seworKyAgICAgICAgICAgIC5uYW1lID0gImNtZCIsCisrICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCisgICAgICAgICB9LHsKKyAgICAgICAgICAgICAubmFtZSA9ICJob3N0IiwKKyAgICAgICAgICAgICAudHlwZSA9IFFFTVVfT1BUX1NUUklORywKK2RpZmYgLS1naXQgYS9xYXBpL2NoYXIuanNvbiBiL3FhcGkvY2hhci5qc29uCitpbmRleCBhZTE5ZGNkMWVkLi42ZGUwZjI5YmNkIDEwMDY0NAorLS0tIGEvcWFwaS9jaGFyLmpzb24KKysrKyBiL3FhcGkvY2hhci5qc29uCitAQCAtMjQxLDYgKzI0MSwxMCBAQAorICMKKyAjIEBhZGRyOiBzb2NrZXQgYWRkcmVzcyB0byBsaXN0ZW4gb24gKHNlcnZlcj10cnVlKQorICMgICAgICAgIG9yIGNvbm5lY3QgdG8gKHNlcnZlcj1mYWxzZSkKKysjIEBjbWQ6IGNvbW1hbmQgdG8gcnVuIHZpYSAic2ggLWMiIHdpdGggc3RkaW4gYXMgb25lIGVuZCBvZgorKyMgICAgICAgYSBBRl9VTklYIFNPQ0tfRFNUUkVBTSBzb2NrZXQgcGFpci4gVGhlIG90aGVyIGVuZAorKyMgICAgICAgaXMgdXNlZCBieSB0aGUgY2hhcmRldi4gRWl0aGVyIGFuIGFkZHIgb3IgYSBjbWQgY2FuCisrIyAgICAgICBiZSBzcGVjaWZpZWQsIGJ1dCBub3QgYm90aC4KKyAjIEB0bHMtY3JlZHM6IHRoZSBJRCBvZiB0aGUgVExTIGNyZWRlbnRpYWxzIG9iamVjdCAoc2luY2UgMi42KQorICMgQHNlcnZlcjogY3JlYXRlIHNlcnZlciBzb2NrZXQgKGRlZmF1bHQ6IHRydWUpCisgIyBAd2FpdDogd2FpdCBmb3IgaW5jb21pbmcgY29ubmVjdGlvbiBvbiBzZXJ2ZXIKK0BAIC0yNTgsNiArMjYyLDcgQEAKKyAjIFNpbmNlOiAxLjQKKyAjIworIHsgJ3N0cnVjdCc6ICdDaGFyZGV2U29ja2V0JywgJ2RhdGEnOiB7ICdhZGRyJyAgICAgICA6ICdTb2NrZXRBZGRyZXNzTGVnYWN5JywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJypjbWQnICAgICAgIDogJ3N0cicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqdGxzLWNyZWRzJyAgOiAnc3RyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJypzZXJ2ZXInICAgIDogJ2Jvb2wnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKndhaXQnICAgICAgOiAnYm9vbCcsCistLSAKKzIuMTQuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hlY2stUFMyUXVldWUtcG9pbnRlcnMtaW4tcG9zdF9sb2FkLXJvdXRpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9jaGVjay1QUzJRdWV1ZS1wb2ludGVycy1pbi1wb3N0X2xvYWQtcm91dGluZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGQ3ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hlY2stUFMyUXVldWUtcG9pbnRlcnMtaW4tcG9zdF9sb2FkLXJvdXRpbmUucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSBlZTlhMTdkMGUxMjE0Mzk3MWE5Njc2MjI3Y2NlOTUzYzBkYmU1MmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitEYXRlOiBUaHUsIDE2IE5vdiAyMDE3IDEzOjIxOjU1ICswNTMwCitTdWJqZWN0OiBbUEFUQ0hdIHBzMjogY2hlY2sgUFMyUXVldWUgcG9pbnRlcnMgaW4gcG9zdF9sb2FkIHJvdXRpbmUKKworRHVyaW5nIFFlbXUgZ3Vlc3QgbWlncmF0aW9uLCBhIGRlc3RpbmF0aW9uIHByb2Nlc3MgaW52b2tlcyBwczIKK3Bvc3RfbG9hZCBmdW5jdGlvbi4gSW4gdGhhdCwgaWYgJ3JwdHInIGFuZCAnY291bnQnIHZhbHVlcyB3ZXJlCitpbnZhbGlkLCBpdCBjb3VsZCBsZWFkIHRvIE9PQiBhY2Nlc3Mgb3IgaW5maW5pdGUgbG9vcCBpc3N1ZS4KK0FkZCBjaGVjayB0byBhdm9pZCBpdC4KKworUmVwb3J0ZWQtYnk6IEN5cmlsbGUgQ2hhdHJhcyA8Y3lyaWxsZS5jaGF0cmFzQG9yYW5nZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK01lc3NhZ2UtaWQ6IDIwMTcxMTE2MDc1MTU1LjIyMzc4LTEtcHBhbmRpdEByZWRoYXQuY29tCitTaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KKworQ1ZFOiBDVkUtMjAxNy0xNjg0NQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvaW5wdXQvcHMyLmMgfCAyMSArKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L2lucHV0L3BzMi5jIGIvaHcvaW5wdXQvcHMyLmMKK2luZGV4IGYzODhhMjMuLmRlMTcxYTIgMTAwNjQ0CistLS0gYS9ody9pbnB1dC9wczIuYworKysrIGIvaHcvaW5wdXQvcHMyLmMKK0BAIC0xMjI1LDI0ICsxMjI1LDIxIEBAIHN0YXRpYyB2b2lkIHBzMl9jb21tb25fcmVzZXQoUFMyU3RhdGUgKnMpCisgc3RhdGljIHZvaWQgcHMyX2NvbW1vbl9wb3N0X2xvYWQoUFMyU3RhdGUgKnMpCisgeworICAgICBQUzJRdWV1ZSAqcSA9ICZzLT5xdWV1ZTsKKy0gICAgaW50IHNpemU7CistICAgIGludCBpOworLSAgICBpbnQgdG1wX2RhdGFbUFMyX1FVRVVFX1NJWkVdOworKyAgICB1aW50OF90IGksIHNpemU7CisrICAgIHVpbnQ4X3QgdG1wX2RhdGFbUFMyX1FVRVVFX1NJWkVdOworIAorICAgICAvKiBzZXQgdGhlIHVzZWZ1bCBkYXRhIGJ1ZmZlciBxdWV1ZSBzaXplLCA8IFBTMl9RVUVVRV9TSVpFICovCistICAgIHNpemUgPSBxLT5jb3VudCA+IFBTMl9RVUVVRV9TSVpFID8gMCA6IHEtPmNvdW50OworKyAgICBzaXplID0gKHEtPmNvdW50IDwgMCB8fCBxLT5jb3VudCA+IFBTMl9RVUVVRV9TSVpFKSA/IDAgOiBxLT5jb3VudDsKKyAKKyAgICAgLyogbW92ZSB0aGUgcXVldWUgZWxlbWVudHMgdG8gdGhlIHN0YXJ0IG9mIGRhdGEgYXJyYXkgKi8KKy0gICAgaWYgKHNpemUgPiAwKSB7CistICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CistICAgICAgICAgICAgLyogbW92ZSB0aGUgcXVldWUgZWxlbWVudHMgdG8gdGhlIHRlbXBvcmFyeSBidWZmZXIgKi8KKy0gICAgICAgICAgICB0bXBfZGF0YVtpXSA9IHEtPmRhdGFbcS0+cnB0cl07CistICAgICAgICAgICAgaWYgKCsrcS0+cnB0ciA9PSAyNTYpIHsKKy0gICAgICAgICAgICAgICAgcS0+cnB0ciA9IDA7CistICAgICAgICAgICAgfQorKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisrICAgICAgICBpZiAocS0+cnB0ciA8IDAgfHwgcS0+cnB0ciA+PSBzaXplb2YocS0+ZGF0YSkpIHsKKysgICAgICAgICAgICBxLT5ycHRyID0gMDsKKyAgICAgICAgIH0KKy0gICAgICAgIG1lbWNweShxLT5kYXRhLCB0bXBfZGF0YSwgc2l6ZSk7CisrICAgICAgICB0bXBfZGF0YVtpXSA9IHEtPmRhdGFbcS0+cnB0cisrXTsKKyAgICAgfQorKyAgICBtZW1jcHkocS0+ZGF0YSwgdG1wX2RhdGEsIHNpemUpOworKworICAgICAvKiByZXNldCBycHRyL3dwdHIvY291bnQgKi8KKyAgICAgcS0+cnB0ciA9IDA7CisgICAgIHEtPndwdHIgPSBzaXplOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9kaXNhYmxlLWdyYWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaAppbmRleCAxMjM4MzNmLi43NzExNzg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9kaXNhYmxlLWdyYWJzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2Rpc2FibGUtZ3JhYnMucGF0Y2gKQEAgLTI0LDExICsyNCwxMSBAQAogIHVpL3NkbC5jIHwgMTIgKysrKysrKysrKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS91aS9zZGwuYyBiL3VpL3NkbC5jCi1pbmRleCAzOWE0MmQ2Li45YjhhYmU1IDEwMDY0NAotLS0tIGEvdWkvc2RsLmMKLSsrKyBiL3VpL3NkbC5jCi1AQCAtNTksNiArNTksMTAgQEAgc3RhdGljIFNETF9DdXJzb3IgKmd1ZXN0X3Nwcml0ZSA9IE5VTEw7CitJbmRleDogcWVtdS0yLjExLjEvdWkvc2RsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxZW11LTIuMTEuMS5vcmlnL3VpL3NkbC5jCisrKysgcWVtdS0yLjExLjEvdWkvc2RsLmMKK0BAIC02Myw2ICs2MywxMCBAQCBzdGF0aWMgU0RMX1BpeGVsRm9ybWF0IGhvc3RfZm9ybWF0OwogIHN0YXRpYyBpbnQgc2NhbGluZ19hY3RpdmUgPSAwOwogIHN0YXRpYyBOb3RpZmllciBtb3VzZV9tb2RlX25vdGlmaWVyOwogIHN0YXRpYyBpbnQgaWRsZV9jb3VudGVyOwpAQCAtMzcsMTAgKzM3LDEwIEBACiArI2VuZGlmCiArc3RhdGljIGRvaW5nX2dyYWJzID0gVHJ1ZTsKICAKLSBzdGF0aWMgdm9pZCBzZGxfdXBkYXRlKERpc3BsYXlDaGFuZ2VMaXN0ZW5lciAqZGNsLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpCi1AQCAtMzg0LDE0ICszODgsMTYgQEAgc3RhdGljIHZvaWQgc2RsX2dyYWJfc3RhcnQodm9pZCkKLSAgICAgICAgICAgICB9CisgI2RlZmluZSBTRExfUkVGUkVTSF9JTlRFUlZBTF9CVVNZIDEwCisgI2RlZmluZSBTRExfTUFYX0lETEVfQ09VTlQgKDIgKiBHVUlfUkVGUkVTSF9JTlRFUlZBTF9ERUZBVUxUIFwKK0BAIC00MzEsMTQgKzQzNSwxNiBAQCBzdGF0aWMgdm9pZCBzZGxfZ3JhYl9zdGFydCh2b2lkKQorICAgICAgICAgfQogICAgICB9IGVsc2UKICAgICAgICAgIHNkbF9oaWRlX2N1cnNvcigpOwogLSAgICBTRExfV01fR3JhYklucHV0KFNETF9HUkFCX09OKTsKQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgZ3VpX2dyYWIgPSAwOwogICAgICBzZGxfc2hvd19jdXJzb3IoKTsKICAgICAgc2RsX3VwZGF0ZV9jYXB0aW9uKCk7Ci1AQCAtOTA5LDYgKzkxNSw4IEBAIHZvaWQgc2RsX2Rpc3BsYXlfaW5pdChEaXNwbGF5U3RhdGUgKmRzLCBpbnQgZnVsbF9zY3JlZW4sIGludCBub19mcmFtZSkKK0BAIC05ODYsNiArOTkyLDggQEAgdm9pZCBzZGxfZGlzcGxheV9pbml0KERpc3BsYXlTdGF0ZSAqZHMsCiAgICAgICAqIFRoaXMgcmVxdWlyZXMgU0RMID49IDEuMi4xNC4gKi8KICAgICAgc2V0ZW52KCJTRExfRElTQUJMRV9MT0NLX0tFWVMiLCAiMSIsIDEpOwogIApAQCAtNjcsNiArNjcsMyBAQAogICAgICBmbGFncyA9IFNETF9JTklUX1ZJREVPIHwgU0RMX0lOSVRfTk9QQVJBQ0hVVEU7CiAgICAgIGlmIChTRExfSW5pdCAoZmxhZ3MpKSB7CiAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBpbml0aWFsaXplIFNETCglcykgLSBleGl0aW5nXG4iLAotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2V4Y2x1ZGUtc29tZS1hcm0tRUFCSS1vYnNvbGV0ZS1zeXNjYWxscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2V4Y2x1ZGUtc29tZS1hcm0tRUFCSS1vYnNvbGV0ZS1zeXNjYWxscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU5M2NmOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1bUEFUQ0hdIGV4Y2x1ZGUgc29tZSBhcm0gRUFCSSBvYnNvbGV0ZSBzeXNjYWxscwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotc29tZSBzeXNjYWxscyBhcmUgb2Jzb2xldGUgYW5kIG5vIGxvbmdlciBhdmFpbGFibGUgZm9yIEVBQkksIGV4Y2x1ZGUgdGhlbSB0bwotZml4IHRoZSBiZWxvdyBlcnJvcjoKLQlJbiBmaWxlIGluY2x1ZGVkIGZyb20gcWVtdS1zZWNjb21wLmM6MTY6MDoKLQlxZW11LXNlY2NvbXAuYzoyODo3OiBlcnJvcjogJ19fTlJfc2VsZWN0JyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQotCSAgICAgIHsgU0NNUF9TWVMoc2VsZWN0KSwgMjUyIH0sCi0JICAgICAgICBeCi0JcWVtdS1zZWNjb21wLmM6MzY6NzogZXJyb3I6ICdfX05SX21tYXAnIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pCi0JICAgICAgeyBTQ01QX1NZUyhtbWFwKSwgMjQ3IH0sCi0JICAgICAgICBeCi0JcWVtdS1zZWNjb21wLmM6NTc6NzogZXJyb3I6ICdfX05SX2dldHJsaW1pdCcgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbikKLQkgICAgICB7IFNDTVBfU1lTKGdldHJsaW1pdCksIDI0NSB9LAotCSAgICAgICAgXgotCXFlbXUtc2VjY29tcC5jOjk2Ojc6IGVycm9yOiAnX19OUl90aW1lJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQotCSAgICAgIHsgU0NNUF9TWVModGltZSksIDI0NSB9LAotCSAgICAgICAgXgotCXFlbXUtc2VjY29tcC5jOjE4NTo3OiBlcnJvcjogJ19fTlJfYWxhcm0nIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pCi0JICAgICAgeyBTQ01QX1NZUyhhbGFybSksIDI0MSB9LAotCi1wbGVhc2UgcmVmZXIgc291cmNlIGZpbGVzOgotCWFyY2gvYXJtL2luY2x1ZGUvdWFwaS9hc20vdW5pc3RkLmgKLW9yIGtlcm5lbCBoZWFkZXI6Ci0JL3Vzci9pbmNsdWRlL2FzbS91bmlzdGQuaAotCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBxZW11LXNlY2NvbXAuYyB8IDEzICsrKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcWVtdS1zZWNjb21wLmMgYi9xZW11LXNlY2NvbXAuYwotaW5kZXggZGY3NWQ5Yy4uMGU1NzdmOCAxMDA2NDQKLS0tLSBhL3FlbXUtc2VjY29tcC5jCi0rKysgYi9xZW11LXNlY2NvbXAuYwotQEAgLTM1LDE1ICszNSwyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IFFlbXVTZWNjb21wU3lzY2FsbCBzZWNjb21wX3doaXRlbGlzdFtdID0gewotICAgICB7IFNDTVBfU1lTKHRpbWVyX3NldHRpbWUpLCAyNTUgfSwKLSAgICAgeyBTQ01QX1NZUyh0aW1lcl9nZXR0aW1lKSwgMjU0IH0sCi0gICAgIHsgU0NNUF9TWVMoZnV0ZXgpLCAyNTMgfSwKLSsjaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKQotICAgICB7IFNDTVBfU1lTKHNlbGVjdCksIDI1MiB9LAotKyAgICB7IFNDTVBfU1lTKHRpbWUpLCAyNDUgfSwKLSsgICAgeyBTQ01QX1NZUyhhbGFybSksIDI0MSB9LAotKyAgICB7IFNDTVBfU1lTKGdldHJsaW1pdCksIDI0NSB9LAotKyAgICB7IFNDTVBfU1lTKG1tYXApLCAyNDcgfSwKLSsgICAgeyBTQ01QX1NZUyhzb2NrZXRjYWxsKSwgMjUwIH0sCi0rICAgIHsgU0NNUF9TWVMoaXBjKSwgMjQ1IH0sCi0rI2VuZGlmCi0gICAgIHsgU0NNUF9TWVMocmVjdmZyb20pLCAyNTEgfSwKLSAgICAgeyBTQ01QX1NZUyhzZW5kdG8pLCAyNTAgfSwKLS0gICAgeyBTQ01QX1NZUyhzb2NrZXRjYWxsKSwgMjUwIH0sCi0gICAgIHsgU0NNUF9TWVMocmVhZCksIDI0OSB9LAotICAgICB7IFNDTVBfU1lTKGlvX3N1Ym1pdCksIDI0OSB9LAotICAgICB7IFNDTVBfU1lTKGJyayksIDI0OCB9LAotICAgICB7IFNDTVBfU1lTKGNsb25lKSwgMjQ3IH0sCi0tICAgIHsgU0NNUF9TWVMobW1hcCksIDI0NyB9LAotICAgICB7IFNDTVBfU1lTKG1wcm90ZWN0KSwgMjQ2IH0sCi0gICAgIHsgU0NNUF9TWVMoZXhlY3ZlKSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMob3BlbiksIDI0NSB9LAotQEAgLTU4LDcgKzY0LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBRZW11U2VjY29tcFN5c2NhbGwgc2VjY29tcF93aGl0ZWxpc3RbXSA9IHsKLSAgICAgeyBTQ01QX1NZUyhiaW5kKSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMobGlzdGVuKSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMoc2VtZ2V0KSwgMjQ1IH0sCi0tICAgIHsgU0NNUF9TWVMoaXBjKSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMoZ2V0dGltZW9mZGF5KSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMocmVhZGxpbmspLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhhY2Nlc3MpLCAyNDUgfSwKLUBAIC0xMDQsNyArMTA5LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBRZW11U2VjY29tcFN5c2NhbGwgc2VjY29tcF93aGl0ZWxpc3RbXSA9IHsKLSAgICAgeyBTQ01QX1NZUyh0aW1lcyksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKGV4aXQpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhjbG9ja19nZXR0aW1lKSwgMjQ1IH0sCi0tICAgIHsgU0NNUF9TWVModGltZSksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKHJlc3RhcnRfc3lzY2FsbCksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKHB3cml0ZTY0KSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMobmFub3NsZWVwKSwgMjQ1IH0sCi1AQCAtMTk0LDcgKzE5OCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWVtdVNlY2NvbXBTeXNjYWxsIHNlY2NvbXBfd2hpdGVsaXN0W10gPSB7Ci0gICAgIHsgU0NNUF9TWVMobHN0YXQ2NCksIDI0MSB9LAotICAgICB7IFNDTVBfU1lTKHNlbmRmaWxlNjQpLCAyNDEgfSwKLSAgICAgeyBTQ01QX1NZUyh1Z2V0cmxpbWl0KSwgMjQxIH0sCi0tICAgIHsgU0NNUF9TWVMoYWxhcm0pLCAyNDEgfSwKLSAgICAgeyBTQ01QX1NZUyhydF9zaWdzdXNwZW5kKSwgMjQxIH0sCi0gICAgIHsgU0NNUF9TWVMocnRfc2lncXVldWVpbmZvKSwgMjQxIH0sCi0gICAgIHsgU0NNUF9TWVMocnRfdGdzaWdxdWV1ZWluZm8pLCAyNDEgfSwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZ2xpYmMtMi4yNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2dsaWJjLTIuMjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2OTA4YmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZ2xpYmMtMi4yNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLUZyb206IENocmlzdG9waGVyIENvdmluZ3RvbgotRGF0ZTogV2VkLCAyOCBEZWMgMjAxNiAxNTowNDozMyAtMDUwMAotU3ViamVjdDogW1FlbXUtZGV2ZWxdIFtQQVRDSCB2M10gYnVpbGQ6IGluY2x1ZGUgc3lzL3N5c21hY3Jvcy5oIGZvciBtYWpvcigpIGFuZCBtaW5vcigpYQotCi1UaGUgZGVmaW5pdGlvbiBvZiB0aGUgbWFqb3IoKSBhbmQgbWlub3IoKSBtYWNyb3MgYXJlIG1vdmluZyB3aXRoaW4gZ2xpYmMgdG8KLTxzeXMvc3lzbWFjcm9zLmg+LiBJbmNsdWRlIHRoaXMgaGVhZGVyIHdoZW4gaXQgaXMgYXZhaWxhYmxlIHRvIGF2b2lkIHRoZQotZm9sbG93aW5nIHNvcnRzIG9mIGJ1aWxkLXN0b3BwaW5nIG1lc3NhZ2VzOgotCi1xZ2EvY29tbWFuZHMtcG9zaXguYzogSW4gZnVuY3Rpb24g4oCYZGV2X21ham9yX21pbm9y4oCZOgotcWdhL2NvbW1hbmRzLXBvc2l4LmM6NjU2OjEzOiBlcnJvcjogSW4gdGhlIEdOVSBDIExpYnJhcnksICJtYWpvciIgaXMgZGVmaW5lZAotIGJ5IDxzeXMvc3lzbWFjcm9zLmg+LiBGb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LCBpdCBpcwotIGN1cnJlbnRseSBkZWZpbmVkIGJ5IDxzeXMvdHlwZXMuaD4gYXMgd2VsbCwgYnV0IHdlIHBsYW4gdG8KLSByZW1vdmUgdGhpcyBzb29uLiBUbyB1c2UgIm1ham9yIiwgaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotIGRpcmVjdGx5LiBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gdXNlIGEgc3lzdGVtLWRlZmluZWQgbWFjcm8KLSAibWFqb3IiLCB5b3Ugc2hvdWxkIHVuZGVmaW5lIGl0IGFmdGVyIGluY2x1ZGluZyA8c3lzL3R5cGVzLmg+LiBbLVdlcnJvcl0KLSAgICAgICAgICpkZXZtYWpvciA9IG1ham9yKHN0LnN0X3JkZXYpOwotICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLXFnYS9jb21tYW5kcy1wb3NpeC5jOjY1NzoxMzogZXJyb3I6IEluIHRoZSBHTlUgQyBMaWJyYXJ5LCAibWlub3IiIGlzIGRlZmluZWQKLSBieSA8c3lzL3N5c21hY3Jvcy5oPi4gRm9yIGhpc3RvcmljYWwgY29tcGF0aWJpbGl0eSwgaXQgaXMKLSBjdXJyZW50bHkgZGVmaW5lZCBieSA8c3lzL3R5cGVzLmg+IGFzIHdlbGwsIGJ1dCB3ZSBwbGFuIHRvCi0gcmVtb3ZlIHRoaXMgc29vbi4gVG8gdXNlICJtaW5vciIsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSBkaXJlY3RseS4gSWYgeW91IGRpZCBub3QgaW50ZW5kIHRvIHVzZSBhIHN5c3RlbS1kZWZpbmVkIG1hY3JvCi0gIm1pbm9yIiwgeW91IHNob3VsZCB1bmRlZmluZSBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4gWy1XZXJyb3JdCi0gICAgICAgICAqZGV2bWlub3IgPSBtaW5vcihzdC5zdF9yZGV2KTsKLSAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1UaGUgYWRkaXRpb25hbCBpbmNsdWRlIGFsbG93cyB0aGUgYnVpbGQgdG8gY29tcGxldGUgb24gRmVkb3JhIDI2IChSYXdoaWRlKQotd2l0aCBnbGliYyB2ZXJzaW9uIDIuMjQuOTAuCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIENvdmluZ3RvbiA8YWRkcmVzc0BoaWRkZW4+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTEyL21zZzAzNTQ4Lmh0bWwKLQotZGlmZiAtdU5yIHFlbXUtMi44LjAub3JpZy9jb25maWd1cmUgcWVtdS0yLjguMC9jb25maWd1cmUKLS0tLSBxZW11LTIuOC4wLm9yaWcvY29uZmlndXJlICAyMDE3LTAyLTIxIDE5OjA1OjEzLjE4MDA5NDcwOCArMDEwMAotKysrIHFlbXUtMi44LjAvY29uZmlndXJlICAgICAgIDIwMTctMDItMjEgMTk6MDg6NTMuMTE0MDg3MDg0ICswMTAwCi1AQCAtNDcyNyw2ICs0NzI3LDIwIEBACi0gdGhlbgotIGZpCi0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBjaGVjayBmb3Igc3lzbWFjcm9zLmgKLSsKLStoYXZlX3N5c21hY3Jvcz1ubwotK2NhdCA+ICRUTVBDIDw8IEVPRgotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0raW50IG1haW4odm9pZCkgewotKyAgICByZXR1cm4gbWFrZWRldigwLCAwKTsKLSt9Ci0rRU9GCi0raWYgY29tcGlsZV9wcm9nICIiICIiIDsgdGhlbgotKyAgICBoYXZlX3N5c21hY3Jvcz15ZXMKLStmaQotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICMgRW5kIG9mIENDIGNoZWNrcwotICMgQWZ0ZXIgaGVyZSwgbm8gbW9yZSAkY2Mgb3IgJGxkIHJ1bnMKLSAKLWRpZmYgLXVOciBxZW11LTIuOC4wLm9yaWcvY29uZmlndXJlIHFlbXUtMi44LjAvY29uZmlndXJlCi0tLS0gcWVtdS0yLjguMC5vcmlnL2NvbmZpZ3VyZSAgMjAxNy0wMi0yMSAxOTowNToxMy4xODAwOTQ3MDggKzAxMDAKLSsrKyBxZW11LTIuOC4wL2NvbmZpZ3VyZSAgICAgICAyMDE3LTAyLTIxIDE5OjA4OjUzLjExNDA4NzA4NCArMDEwMAotQEAgLTU2OTUsNiArNTcwOSwxMCBAQAotICAgZWNobyAiQ09ORklHX0FGX1ZTT0NLPXkiID4+ICRjb25maWdfaG9zdF9tYWsKLSBmaQotIAotK2lmIHRlc3QgIiRoYXZlX3N5c21hY3JvcyIgPSAieWVzIiA7IHRoZW4KLSsgIGVjaG8gIkNPTkZJR19TWVNNQUNST1M9eSIgPj4gJGNvbmZpZ19ob3N0X21hawotK2ZpCi0rCi0gIyBIb2xkIHR3byB0eXBlcyBvZiBmbGFnOgotICMgICBDT05GSUdfVEhSRUFEX1NFVE5BTUVfQllUSFJFQUQgIC0gd2UndmUgZ290IGEgd2F5IG9mIHNldHRpbmcgdGhlIG5hbWUgb24KLSAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgdGhyZWFkIHdlIGhhdmUgYSBoYW5kbGUgdG8KLWRpZmYgLXVOciBxZW11LTIuOC4wLm9yaWcvaW5jbHVkZS9zeXNlbXUvb3MtcG9zaXguaCBxZW11LTIuOC4wL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmgKLS0tLSBxZW11LTIuOC4wLm9yaWcvaW5jbHVkZS9zeXNlbXUvb3MtcG9zaXguaAkyMDE2LTEyLTIwIDIxOjE2OjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIHFlbXUtMi44LjAvaW5jbHVkZS9zeXNlbXUvb3MtcG9zaXguaAkyMDE3LTAyLTIxIDE5OjA3OjE4LjAwOTA5MDM4MSArMDEwMAotQEAgLTM0LDYgKzM0LDEwIEBACi0gI2luY2x1ZGUgPG5ldGRiLmg+Ci0gI2luY2x1ZGUgPHN5cy91bi5oPgotIAotKyNpZmRlZiBDT05GSUdfU1lTTUFDUk9TCi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSB2b2lkIG9zX3NldF9saW5lX2J1ZmZlcmluZyh2b2lkKTsKLSB2b2lkIG9zX3NldF9wcm9jX25hbWUoY29uc3QgY2hhciAqcyk7Ci0gdm9pZCBvc19zZXR1cF9zaWduYWxfaGFuZGxpbmcodm9pZCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJjNTIyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2xpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDRmYTRhYWU0MTc2ZWY2ZDhmNGQ0YjgzMjNkMDYxZTI0MzM5MThhMjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHhpbGlueC5jb20+CitEYXRlOiBXZWQsIDE3IEphbiAyMDE4IDEwOjUxOjQ5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpbnV4LXVzZXI6IEZpeCB3ZWJraXRndGsgaGFuZ3Mgb24gMzItYml0IHg4NiB0YXJnZXQKKworU2luY2UgY29tbWl0ICJsaW51eC11c2VyOiBUaWR5IGFuZCBlbmZvcmNlIHJlc2VydmVkX3ZhIGluaXRpYWxpemF0aW9uIgorKDE4ZTgwYzU1YmI2ZWMxN2MwNWVjMGJhNzE3ZWM4MzkzM2MyYmZjMDcpIHRoZSBZb2N0byB3ZWJraXRndGsgYnVpbGQKK2hhbmdzIHdoZW4gY3Jvc3MgY29tcGlsaW5nIGZvciAzMi1iaXQgeDg2IG9uIGEgNjQtYml0IHg4NiBtYWNoaW5lIHVzaW5nCittdXNsLgorCitUbyBmaXggdGhlIGlzc3VlIHJlZHVjZSB0aGUgTUFYX1JFU0VSVkVEX1ZBIG1hY3JvIHRvIGJlIGEgY2xvc2VyIG1hdGNoCit0byB3aGF0IGl0IHdhcyBiZWZvcmUgdGhlIHByb2JsZW1hdGljIGNvbW1pdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxOC0wMS9tc2cwNDE4NS5odG1sCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHhpbGlueC5jb20+CistLS0KKyBsaW51eC11c2VyL21haW4uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvbWFpbi5jIGIvbGludXgtdXNlci9tYWluLmMKK2luZGV4IDQ1MGViM2NlNjUuLmM3Y2MwYTE4NGUgMTAwNjQ0CistLS0gYS9saW51eC11c2VyL21haW4uYworKysrIGIvbGludXgtdXNlci9tYWluLmMKK0BAIC03Nyw3ICs3Nyw3IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAoVEFSR0VUX0xPTkdfQklUUyA9PSAzMiB8fCBkZWZpbmVkKFRBUkdFVF9BQkkzMikpCisgLyogVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHBsYWNlcyB3aGVyZSB3ZSBhc3NpZ24gcmVzZXJ2ZWRfdmEgdG8gYSB2YXJpYWJsZQorICAgIG9mIHR5cGUgYWJpX3Vsb25nIGFuZCBleHBlY3QgaXQgdG8gZml0LiAgQXZvaWQgdGhlIGxhc3QgcGFnZS4gICovCistIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEgICgweGZmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQorKyMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMHg3ZmZmZmZmZnVsICYgVEFSR0VUX1BBR0VfTUFTSykKKyAjICBlbHNlCisgIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEgICgxdWwgPDwgVEFSR0VUX1ZJUlRfQUREUl9TUEFDRV9CSVRTKQorICMgIGVuZGlmCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3BwY19sb2NraW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjcyMjQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3BwY19sb2NraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLUkndmUgdHJhY2tlZCBkb3duIHdoYXQgSSB0aGluayBpcyBhIHByb2JsZW0gY2F1c2luZyBxZW11LXN5c3RlbS1wcGMKLXRvIGhhbmcgd2hpbHN0IGJvb3RpbmcgaW1hZ2VzLgotCi1JIGJlbGlldmUgdGhlIGRlY3JlbWVudGVyIHRpbWVyIHN0b3BzIHJlY2VpdmluZyBpbnRlcnJ1cHRzIHNvCi10YXNrcyBpbiBvdXIgaW1hZ2VzIGhhbmcgaW5kZWZpbml0ZWx5IGFzIHRoZSB0aW1lciBzdG9wcGVkLiAKLQotSXQgY2FuIGJlIHN1bW1lZCB1cCB3aXRoIHRoaXMgbGluZSBvZiBkZWJ1ZzoKLQotcHBjX3NldF9pcnE6IDB4NTViNGUwZDU2MmYwIG5fSVJRIDggbGV2ZWwgMSA9PiBwZW5kaW5nIDAwMDAwMTAwcmVxIDAwMDAwMDA0Ci0KLUl0IHNob3VsZCBub3JtYWxseSByZWFkOgotCi1wcGNfc2V0X2lycTogMHg1NWI0ZTBkNTYyZjAgbl9JUlEgOCBsZXZlbCAxID0+IHBlbmRpbmcgMDAwMDAxMDByZXEgMDAwMDAwMDIKLQotVGhlIHF1ZXN0aW9uIGlzIHdoeSBDUFVfSU5URVJSVVBUX0VYSVRUQiBlbmRzIHVwIGJlaW5nIHNldCB3aGVuIHRoZQotbGluZXMgYWJvdmUgdGhpcyBsb2cgbWVzc2FnZSBjbGVhcmx5IHNldHMgQ1BVX0lOVEVSUlVQVF9IQVJEICh2aWEgCi1jcHVfaW50ZXJydXB0KCkgKS4KLQotSSBub3RlIGluIGNwdS5oOgotCi0gICAgLyogdXBkYXRlcyBwcm90ZWN0ZWQgYnkgQlFMICovCi0gICAgdWludDMyX3QgaW50ZXJydXB0X3JlcXVlc3Q7Ci0KLShmb3Igc3RydWN0IENQVVN0YXRlKQotCi1UaGUgcHBjIGNvZGUgZG9lcyAiY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCIiBpbiA1Ci1wbGFjZXMsIDMgaW4gZXhjcF9oZWxwZXIuYyBhbmQgMiBpbiBoZWxwZXJfcmVncy5oLiBJbiBhbGwgY2FzZXMsICAKLWdfYXNzZXJ0KHFlbXVfbXV0ZXhfaW90aHJlYWRfbG9ja2VkKCkpOyBmYWlscy4gSWYgSSBkbyBzb21ldGhpbmcgbGlrZToKLQotaWYgKCFxZW11X211dGV4X2lvdGhyZWFkX2xvY2tlZCgpKSB7Ci0gICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0gICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOwotICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7Ci19IGVsc2UgewotICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLX0KLQotaW4gdGhlc2UgY2FsbCBzaXRlcyB0aGVuIEkgY2FuIG5vIGxvbmdlciBsb2NrIHFlbXUgdXAgd2l0aCBteSB0ZXN0Ci1jYXNlLgotCi1JIHN1c3BlY3QgdGhlIF9IQVJEIHNldHRpbmcgZ2V0cyBvdmVyd3JpdHRlbiB3aGljaCBzdG9wcyB0aGUgCi1kZWNyZW1lbnRlciBpbnRlcnJ1cHRzIGJlaW5nIGRlbGl2ZXJlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW0lzc3VlIGRpc2N1c3NlZCBvbiBxZW11IG1haWxpbmcgbGlzdCAyMDE3LzExLzIwXQotUlAgMjAxNy8xMS8yMAotCi1JbmRleDogcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9leGNwX2hlbHBlci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcWVtdS0yLjEwLjEub3JpZy90YXJnZXQvcHBjL2V4Y3BfaGVscGVyLmMKLSsrKyBxZW11LTIuMTAuMS90YXJnZXQvcHBjL2V4Y3BfaGVscGVyLmMKLUBAIC0yMDcsNyArMjA3LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHBvd2VycGNfZXhjcChQb3dlclBDQwotICAgICAgICAgICAgICAgICAgICAgICAgICJFbnRlcmluZyBjaGVja3N0b3Agc3RhdGVcbiIpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBjcy0+aGFsdGVkID0gMTsKLS0gICAgICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7Ci0rICAgICAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgICAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZiAoZW52LT5tc3JfbWFzayAmIE1TUl9IVkIpIHsKLSAgICAgICAgICAgICAvKiBJU0Egc3BlY2lmaWVzIEhWLCBidXQgY2FuIGJlIGRlbGl2ZXJlZCB0byBndWVzdCB3aXRoIEhWIGNsZWFyCi1AQCAtOTQwLDcgKzk0Miw5IEBAIHZvaWQgaGVscGVyX3N0b3JlX21zcihDUFVQUENTdGF0ZSAqZW52LAotIAotICAgICBpZiAoZXhjcCAhPSAwKSB7Ci0gICAgICAgICBDUFVTdGF0ZSAqY3MgPSBDUFUocHBjX2Vudl9nZXRfY3B1KGVudikpOwotLSAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICAgICAgcmFpc2VfZXhjZXB0aW9uKGVudiwgZXhjcCk7Ci0gICAgIH0KLSB9Ci1AQCAtOTk1LDcgKzk5OSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkb19yZmkoQ1BVUFBDU3RhdGUgKmUKLSAgICAgLyogTm8gbmVlZCB0byByYWlzZSBhbiBleGNlcHRpb24gaGVyZSwKLSAgICAgICogYXMgcmZpIGlzIGFsd2F5cyB0aGUgbGFzdCBpbnNuIG9mIGEgVEIKLSAgICAgICovCi0tICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKLSsgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSsgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKLSAKLSAgICAgLyogUmVzZXQgdGhlIHJlc2VydmF0aW9uICovCi0gICAgIGVudi0+cmVzZXJ2ZV9hZGRyID0gLTE7Ci1JbmRleDogcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9oZWxwZXJfcmVncy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcWVtdS0yLjEwLjEub3JpZy90YXJnZXQvcHBjL2hlbHBlcl9yZWdzLmgKLSsrKyBxZW11LTIuMTAuMS90YXJnZXQvcHBjL2hlbHBlcl9yZWdzLmgKLUBAIC0xMTQsMTEgKzExNCwxNSBAQCBzdGF0aWMgaW5saW5lIGludCBocmVnX3N0b3JlX21zcihDUFVQUENTCi0gICAgIH0KLSAgICAgaWYgKCgodmFsdWUgPj4gTVNSX0lSKSAmIDEpICE9IG1zcl9pciB8fAotICAgICAgICAgKCh2YWx1ZSA+PiBNU1JfRFIpICYgMSkgIT0gbXNyX2RyKSB7Ci0tICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7Ci0rICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKLSsgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSsgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7Ci0gICAgIH0KLSAgICAgaWYgKChlbnYtPm1tdV9tb2RlbCAmIFBPV0VSUENfTU1VX0JPT0tFKSAmJgotICAgICAgICAgKCh2YWx1ZSA+PiBNU1JfR1MpICYgMSkgIT0gbXNyX2dzKSB7Ci0tICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7Ci0rICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKLSsgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSsgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7Ci0gICAgIH0KLSAgICAgaWYgKHVubGlrZWx5KChlbnYtPmZsYWdzICYgUE9XRVJQQ19GTEFHX1RHUFIpICYmCi0gICAgICAgICAgICAgICAgICAoKHZhbHVlIF4gZW52LT5tc3IpICYgKDEgPDwgTVNSX1RHUFIpKSkpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRmNmMyMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1yZXF1aXJlIHFlbXUuaW5jCi0KLWluaGVyaXQgcHRlc3QKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBtYWtlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NDFjMjhkMmNmODZlMTVhMzdmYTQ3ZTE1YTcyZmJhYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjtlbmRsaW5lPTI0O21kNT1jMDRkZWY3YWUzODg1MGU3ZDNlZjU0ODU4ODE1OTkxMyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd2lraS5xZW11LXByb2plY3Qub3JnL2Rvd25sb2FkLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcG93ZXJwY19yb20uYmluIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ3JhYnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXhjbHVkZS1zb21lLWFybS1FQUJJLW9ic29sZXRlLXN5c2NhbGxzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3dhY29tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1wdGVzdC1pbi1tYWtlZmlsZS12MTAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3FlbXUtZW5sYXJnZS1lbnYtZW50cnktc2l6ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uby12YWxncmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXRobGltaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2xpYmMtMi4yNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVByb3ZpZGUtc3VwcG9ydC1mb3ItdGhlLUNVU0UtVFBNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy12Mi45LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzExLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNjczLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNjcyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTY3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BwY19sb2NraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21lbWZkLnBhdGNoIFwKLSAgICAgICAgICAgIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCtcLi4qKVwudGFyIgotCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAotICAgICAgICAgICAgZmlsZTovL2ZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jcHVzLmMtcWVtdV9jcHVfa2lja190aHJlYWRfZGVidWdnaW5nLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImNhNzM0NDFkZTczYTliNTJjNmM0OWM5NzE5MGQyMTg1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlOWYzOWUxMzA2ZTZkY2M1OTU0OTRlOTFjMTQ2NGQ0YjAzZjU1ZGRkMjA1MzE4M2UwZTFiNjlmN2Y3NzZkNDgiCi0KLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KLSAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQltYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci0JZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQotCi0JY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjExLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjExLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI4MmM1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTEuMS5iYgpAQCAtMCwwICsxLDU5IEBACityZXF1aXJlIHFlbXUuaW5jCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBtYWtlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NDFjMjhkMmNmODZlMTVhMzdmYTQ3ZTE1YTcyZmJhYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjtlbmRsaW5lPTI0O21kNT1jMDRkZWY3YWUzODg1MGU3ZDNlZjU0ODU4ODE1OTkxMyIKKworU1JDX1VSSSA9ICJodHRwOi8vd2lraS5xZW11LXByb2plY3Qub3JnL2Rvd25sb2FkLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcG93ZXJwY19yb20uYmluIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ3JhYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd2Fjb20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWRkLXB0ZXN0LWluLW1ha2VmaWxlLXYxMC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcWVtdS1lbmxhcmdlLWVudi1lbnRyeS1zaXplLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vLXZhbGdyaW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhdGhsaW1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9xZW11LTIuNS4wLWNmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tZW1mZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2hlY2stUFMyUXVldWUtcG9pbnRlcnMtaW4tcG9zdF9sb2FkLXJvdXRpbmUucGF0Y2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJxZW11LSg/UDxwdmVyPlxkK1wuLiopXC50YXIiCisKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgICBmaWxlOi8vZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NwdXMuYy1xZW11X2NwdV9raWNrX3RocmVhZF9kZWJ1Z2dpbmcucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjFjZjg2MmI2MDA3ZWJhNGFjOTgyNDc3NzZhZjJlMjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDlkZjIyMTNjZWVkMzJlOTFkYWI3YmM5ZGQxOWMxYWY4M2Y5MWJhNzJjN2FlZWY3NjA1ZGZhYWY4MTczMmNjYiIKKworQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huNjQgPSAibnVsbCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBQcmV2ZW50IFFBIHdhcm5pbmdzIGFib3V0IGluc3RhbGxlZCAke2xvY2Fsc3RhdGVkaXJ9L3J1bgorICAgIGlmIFsgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIF07IHRoZW4gcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuOyBmaQorICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9wb3dlcnBjX3JvbS5iaW4gJHtEfSR7ZGF0YWRpcn0vcWVtdQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXJMICR7Qn0vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KKwlmaW5kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIC10eXBlIGYgLW5hbWUgIiouW1NzaGNvZF0iIHwgeGFyZ3MgLWkgcm0gLXJmIHt9CisKKwljcCAke1N9L3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwkjIERvbid0IGNoZWNrIHRoZSBmaWxlIGdlbnJlYXRlZCBieSBjb25maWd1cmUKKwlzZWQgLWkgLWUgJy93aWxkY2FyZCBjb25maWctaG9zdC5tYWsvZCcgXAorCSAgICAgICAtZSAnJCB7L2VuZGlmL2R9JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0L2FjbG9jYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0L2FjbG9jYWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZjQ0MjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC9hY2xvY2FsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1BZGQgdGhlIGFjbG9jYWwubTQgYXMgYWNpbmNsdWRlLm00Ci0KLUluZGV4OiBxdWlsdC0wLjQ3L2FjaW5jbHVkZS5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIHF1aWx0LTAuNDcvYWNpbmNsdWRlLm00CTIwMDYtMTAtMTAgMTc6MDU6NTYuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDExOSBAQAotK2RubCBBbGxvdyBjb25maWd1cmUgdG8gc3BlY2lmeSBhIHNwZWNpZmljIGJpbmFyeQotK2RubCAxOiBFbnZpcm9ubWVudCB2YXJpYWJsZQotK2RubCAyOiBiaW5hcnkgbmFtZQotK2RubCAzOiBvcHRpb25hbCBsaXN0IG9mIGFsdGVybmF0aXZlIGJpbmFyeSBuYW1lcwotK2RubCA0OiBvcHRpb25hbCBsaXN0IG9mIGFkZGl0aW9uYWwgc2VhcmNoIGRpcmVjdG9yaWVzCi0rQUNfREVGVU4oW1FVSUxUX0NPTVBBVF9QUk9HX1BBVEhdLFsKLSsgIG00X2RlZmluZShbaW50ZXJuYWxfJDJfY21kXSxbZXN5c2NtZChscyBjb21wYXQvJDIuaW4gMj4vZGV2L251bGwpXSkKLSsKLSsgIEFDX0FSR19XSVRIKCQyLCBBQ19IRUxQX1NUUklORygKLSsgICAgWy0td2l0aC0kMl0sIFtuYW1lIG9mIHRoZSAkMiBleGVjdXRhYmxlIHRvIHVzZV0KLSsgICAgICAgICAgICAgICAgIG00X2lmKGludGVybmFsXyQyX2NtZCxbXSxbXSxbICh1c2UgLS13aXRob3V0LSQyCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB0byB1c2UgYW4gaW50ZXJuYWwgbWVjaGFuaXNtKV0pKSwKLSsgIFsKLSsgICAgaWYgdGVzdCB4IiR3aXRodmFsIiA9IHhub25lOyB0aGVuCi0rICAgICAgQUNfTVNHX0VSUk9SKFtJbnZhbGlkIGNvbmZpZ3VyZSBhcmd1bWVudC4gIHVzZSAtLXdpdGhvdXQtJDJdKQotKyAgICBmaQotKyAgICBpZiB0ZXN0IHgiJHdpdGh2YWwiICE9IHhubzsgdGhlbgotKyAgICAgIEFDX01TR19DSEVDS0lORyhmb3IgJDIpCi0rICAgICAgJDE9IiR3aXRodmFsIgotKyAgICAgIGlmIHRlc3QgLWUgIiQkMSI7IHRoZW4KLSsJaWYgdGVzdCAhIC1mICIkJDEiIC1hICEgLWggIiQkMSIgfHwgdGVzdCAhIC14ICIkJDEiOyB0aGVuCi0rCSAgQUNfTVNHX0VSUk9SKFskJDEgaXMgbm90IGFuIGV4ZWN1dGFibGUgZmlsZV0pCi0rCWZpCi0rICAgICAgZmkKLSsgICAgICBBQ19NU0dfUkVTVUxUKFskJDFdKQotKyAgICAgIGlmIHRlc3QgISAtZSAiJCQxIjsgdGhlbgotKyAgICAgICAgQUNfTVNHX1dBUk4oWyQkMSBkb2VzIG5vdCBleGlzdF0pCi0rICAgICAgZmkKLSsgICAgICBDT01QQVRfU1lNTElOS1M9IiRDT01QQVRfU1lNTElOS1MgJDIiCi0rICAgIGZpCi0rICBdLFsKLSsgICAgbTRfaWYoWyQzXSxbXSxbCi0rICAgICAgQUNfUEFUSF9QUk9HKCQxLCQyLCwkUEFUSDokNCkKLSsgICAgXSxbCi0rICAgICAgQUNfUEFUSF9QUk9HUygkMSwkMywsJFBBVEg6JDQpCi0rICAgICAgaWYgdGVzdCAtbiAiJCQxIiAtYSAiYGV4cHIgIiQkMSIgOiAnLiovXChbW14vXV0qXCkkJ2AiICE9ICIkMiI7IHRoZW4KLSsJQ09NUEFUX1NZTUxJTktTPSIkQ09NUEFUX1NZTUxJTktTICQyIgotKyAgICAgIGZpCi0rICAgIF0pCi0rICAgIG00X2lmKFskNF0sW10sW10sWwotKyAgICAgIGlmIHRlc3QgLW4gIiQkMSI7IHRoZW4KLSsJYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotKyAgICAgICAgZm9yIGRpciBpbiAiJDQiOyBkbwotKyAgICAgICAgICBpZiB0ZXN0ICJgZGlybmFtZSAkJDFgIiA9ICIkZGlyIjsgdGhlbgotKyAgICAgICAgICAgIENPTVBBVF9TWU1MSU5LUz0iJENPTVBBVF9TWU1MSU5LUyAkMiIKLSsJICAgIGJyZWFrCi0rCSAgZmkKLSsgICAgICAgIGRvbmUKLSsJSUZTPSIkYXNfc2F2ZV9JRlMiCi0rICAgICAgZmkKLSsgICAgXSkKLSsgIF0pCi0rICBpZiB0ZXN0IC16ICIkJDEiOyB0aGVuCi0rICAgIG00X2lmKGludGVybmFsXyQyX2NtZCxbXSxbCi0rICAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2Ugc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgJDIgd2l0aCB0aGUgb3B0aW9uICctLXdpdGgtJDInXSkKLSsgICAgXSxbCi0rICAgICAgQUNfTVNHX1dBUk4oW1VzaW5nIGludGVybmFsICQyIG1lY2hhbmlzbS4gIFVzZSBvcHRpb24gJy0td2l0aC0kMicgdG8gb3ZlcnJpZGVdKQotKyAgICAgIENPTVBBVF9QUk9HUkFNUz0iJENPTVBBVF9QUk9HUkFNUyAkMiIKLSsgICAgICAkMT0kMgotKyAgICAgIElOVEVSTkFMXyQxPTEKLSsgICAgXSkKLSsgIGZpCi0rICBBQ19TVUJTVCgkMSkKLStdKQotKwotK2RubCBBbGxvdyBjb25maWd1cmUgdG8gc3BlY2lmeSBhIHNwZWNpZmljIGJpbmFyeQotK2RubCBUaGlzIHZhcmlhbnQgaXMgZm9yIG9wdGlvbmFsIGJpbmFyaWVzLgotK2RubCAxOiBFbnZpcm9ubWVudCB2YXJpYWJsZQotK2RubCAyOiBiaW5hcnkgbmFtZQotK2RubCAzOiBvcHRpb25hbCBsaXN0IG9mIGFsdGVybmF0aXZlIGJpbmFyeSBuYW1lcwotK2RubCA0OiBvcHRpb25hbCBsaXN0IG9mIGFkZGl0aW9uYWwgc2VhcmNoIGRpcmVjdG9yaWVzCi0rQUNfREVGVU4oW1FVSUxUX0NPTVBBVF9QUk9HX1BBVEhfT1BUXSxbCi0rICBBQ19BUkdfV0lUSCgkMiwgQUNfSEVMUF9TVFJJTkcoCi0rICAgIFstLXdpdGgtJDJdLCBbbmFtZSBvZiB0aGUgJDIgZXhlY3V0YWJsZSB0byB1c2VdKSwKLSsgIFsKLSsgICAgaWYgdGVzdCB4IiR3aXRodmFsIiAhPSB4bm87IHRoZW4KLSsgICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yICQyKQotKyAgICAgICQxPSIkd2l0aHZhbCIKLSsgICAgICBpZiB0ZXN0IC1lICIkJDEiOyB0aGVuCi0rCWlmIHRlc3QgISAtZiAiJCQxIiAtYSAhIC1oICIkJDEiIHx8IHRlc3QgISAteCAiJCQxIjsgdGhlbgotKwkgIEFDX01TR19FUlJPUihbJCQxIGlzIG5vdCBhbiBleGVjdXRhYmxlIGZpbGVdKQotKwlmaQotKyAgICAgIGZpCi0rICAgICAgQUNfTVNHX1JFU1VMVChbJCQxXSkKLSsgICAgICBpZiB0ZXN0ICEgLWUgIiQkMSI7IHRoZW4KLSsgICAgICAgIEFDX01TR19XQVJOKFskJDEgZG9lcyBub3QgZXhpc3RdKQotKyAgICAgIGZpCi0rICAgICAgQ09NUEFUX1NZTUxJTktTPSIkQ09NUEFUX1NZTUxJTktTICQyIgotKyAgICBmaQotKyAgXSxbCi0rICAgIG00X2lmKFskM10sW10sWwotKyAgICAgIEFDX1BBVEhfUFJPRygkMSwkMiwsJFBBVEg6JDQpCi0rICAgIF0sWwotKyAgICAgIEFDX1BBVEhfUFJPR1MoJDEsJDMsLCRQQVRIOiQ0KQotKyAgICAgIGlmIHRlc3QgLW4gIiQkMSIgLWEgImBleHByICIkJDEiIDogJy4qL1woW1teL11dKlwpJCdgIiAhPSAiJDIiOyB0aGVuCi0rCUNPTVBBVF9TWU1MSU5LUz0iJENPTVBBVF9TWU1MSU5LUyAkMiIKLSsgICAgICBmaQotKyAgICBdKQotKyAgICBtNF9pZihbJDRdLFtdLFtdLFsKLSsgICAgICBpZiB0ZXN0IC1uICIkJDEiOyB0aGVuCi0rCWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSsgICAgICAgIGZvciBkaXIgaW4gIiQ0IjsgZG8KLSsgICAgICAgICAgaWYgdGVzdCAiYGRpcm5hbWUgJCQxYCIgPSAiJGRpciI7IHRoZW4KLSsgICAgICAgICAgICBDT01QQVRfU1lNTElOS1M9IiRDT01QQVRfU1lNTElOS1MgJDIiCi0rCSAgICBicmVhawotKwkgIGZpCi0rICAgICAgICBkb25lCi0rCUlGUz0iJGFzX3NhdmVfSUZTIgotKyAgICAgIGZpCi0rICAgIF0pCi0rICAgIGlmIHRlc3QgLXogIiQkMSI7IHRoZW4KLSsgICAgICBBQ19NU0dfV0FSTihbJDIgbm90IGZvdW5kLCBzb21lIG9wdGlvbmFsIGZ1bmN0aW9uYWxpdGllcyB3aWxsIGJlIG1pc3NpbmddKQotKyAgICBmaQotKyAgXSkKLSsgIGlmIHRlc3QgLXogIiQkMSI7IHRoZW4KLSsgICAgJDE9JDIKLSsgIGZpCi0rICBBQ19TVUJTVCgkMSkKLStdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdF8wLjY1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdF8wLjY1LmJiCmluZGV4IDEyODU5ZjAuLjViZjgxOGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHRfMC42NS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0XzAuNjUuYmIKQEAgLTEsNiArMSw4IEBACiByZXF1aXJlIHF1aWx0LmluYwogaW5oZXJpdCBnZXR0ZXh0CisKK1NSQ19VUkkgKz0gImZpbGU6Ly9nbnVfcGF0Y2hfdGVzdF9maXhfdGFyZ2V0LnBhdGNoIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKwogUkRFUEVORFNfJHtQTn0gKz0gInBhdGNoIGRpZmZzdGF0IGJ6aXAyIHV0aWwtbGludXgiCi1TUkNfVVJJICs9ICJmaWxlOi8vYWNsb2NhbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZ251X3BhdGNoX3Rlc3RfZml4X3RhcmdldC5wYXRjaCBcCi0gICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtQWRkLVBZVEhPTl9BQkktd2hlbi1zZWFyY2hpbmctZm9yLXB5dGhvbi1saWJyYXJpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUFkZC1QWVRIT05fQUJJLXdoZW4tc2VhcmNoaW5nLWZvci1weXRob24tbGlicmFyaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODA5MzMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtQWRkLVBZVEhPTl9BQkktd2hlbi1zZWFyY2hpbmctZm9yLXB5dGhvbi1saWJyYXJpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDM2Y2YwZmYyNmVjZTUzZTUyOWU4YjRmMmQyZjA5YWNkODc5NGIwNTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjQgTWFyIDIwMTcgMTU6MzU6NDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIFBZVEhPTl9BQkkgd2hlbiBzZWFyY2hpbmcgZm9yIHB5dGhvbiBsaWJyYXJpZXMuCi0KLUl0IGhhcyBhIHZhbHVlIG9mICdtJyB3aGVuIHVzaW5nIFB5dGhvbjMsIGFuZCBzbyB3aXRob3V0IGl0Ci1jb25maWd1cmUgd2lsbCBub3QgZmluZCB0aGUgbGlicmFyaWVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOWM1ODQ2N2MxLi5hNTA2ZWM4MTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY0Miw3ICs2NDIsNyBAQCBBU19JRihbdGVzdCAiJGVuYWJsZV9weXRob24iID0geWVzXSxbCi0gICAgICAgXSkKLSAgICAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgotICAgICBzYXZlX0xJQlM9IiRMSUJTIgotLSAgICBBQ19TRUFSQ0hfTElCUyhbUHlfTWFpbl0sW3B5dGhvbiR7UFlUSE9OX1ZFUlNJT059IHB5dGhvbl0sWwotKyAgICBBQ19TRUFSQ0hfTElCUyhbUHlfTWFpbl0sW3B5dGhvbiR7UFlUSE9OX1ZFUlNJT059JHtQWVRIT05fQUJJfSBweXRob25dLFsKLSAgICAgICBXSVRIX1BZVEhPTl9MSUI9IiRhY19yZXMiCi0gICAgIF0sW0FDX01TR19FUlJPUihbbWlzc2luZyBweXRob24gbGlicmFyeV0pCi0gICAgIF0pCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKaW5kZXggMWY2MWFjYS4uNTYwNGNiOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAotRnJvbSBkODI2OTFiOGQ1ODIwMWRkMDNlMzA1ODVkYWFjZDhmZmQxNTU2YWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjODJjMTlkYzU4Mzg0M2IxYTk3NWYyZTNmMmUxNTE2NTZhNmYzNzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDI3IEZlYiAyMDE3IDA5OjQzOjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBoYXJkY29kZSAibGliL3JwbSIgYXMgdGhlIGluc3RhbGxhdGlvbiBwYXRoIGZvcgorU3ViamVjdDogW1BBVENIIDA2LzE0XSBEbyBub3QgaGFyZGNvZGUgImxpYi9ycG0iIGFzIHRoZSBpbnN0YWxsYXRpb24gcGF0aCBmb3IKICBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYW5kIG1hY3Jvcy4KIAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yNjNdCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzI2M10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCiAtLS0KQEAgLTE0LDEwICsxNCwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0ZjNiZTg3NzAuLjkyZmZkM2Q2OCAxMDA2NDQKK2luZGV4IDcxNTVkOWYwMC4uMjFiOTVhZTVmIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC04NzUsNyArODc1LDcgQEAgZWxzZQorQEAgLTEwNDcsNyArMTA0Nyw3IEBAIGVsc2UKICAgICAgdXNycHJlZml4PSRwcmVmaXgKICBmaQogIApAQCAtMjcsMTAgKzI3LDEwIEBACiAgCiAgQUNfU1VCU1QoT0JKRFVNUCkKIGRpZmYgLS1naXQgYS9tYWNyb3MuaW4gYi9tYWNyb3MuaW4KLWluZGV4IGM2ZDVhNmIwMy4uODRhZTI1Mjc1IDEwMDY0NAoraW5kZXggZDA4NjI0ODU2Li42OGE5NzJmMWUgMTAwNjQ0CiAtLS0gYS9tYWNyb3MuaW4KICsrKyBiL21hY3Jvcy5pbgotQEAgLTg3Nyw3ICs4NzcsNyBAQCBwYWNrYWdlIG9yIHdoZW4gZGVidWdnaW5nIHRoaXMgcGFja2FnZS5cCitAQCAtOTU0LDcgKzk1NCw3IEBAIHBhY2thZ2Ugb3Igd2hlbiBkZWJ1Z2dpbmcgdGhpcyBwYWNrYWdlLlwKICAlX3NoYXJlZHN0YXRlZGlyCSV7X3ByZWZpeH0vY29tCiAgJV9sb2NhbHN0YXRlZGlyCQkle19wcmVmaXh9L3ZhcgogICVfbGliCQkJbGliCkBAIC00MCw3ICs0MCw3IEBACiAgJV9pbmZvZGlyCQkle19kYXRhZGlyfS9pbmZvCiAgJV9tYW5kaXIJCSV7X2RhdGFkaXJ9L21hbgogZGlmZiAtLWdpdCBhL3JwbS5hbSBiL3JwbS5hbQotaW5kZXggMWY0M2FkOGEwLi42ODU0ZmY2YmEgMTAwNjQ0CitpbmRleCA1MTIyNTg5MmQuLmUwYzgzNGQzNyAxMDA2NDQKIC0tLSBhL3JwbS5hbQogKysrIGIvcnBtLmFtCiBAQCAtMSwxMCArMSwxMCBAQApAQCAtNTUsNyArNTUsNyBAQAogK3JwbWNvbmZpZ2RpciA9ICQobGliZGlyKS9ycG0KICAKICAjIExpYnRvb2wgdmVyc2lvbiAoY3VycmVudC1yZXZpc2lvbi1hZ2UpIGZvciBhbGwgb3VyIGxpYnJhcmllcwotIHJwbV92ZXJzaW9uX2luZm8gPSA3OjA6MAorIHJwbV92ZXJzaW9uX2luZm8gPSA4OjE6MAogLS0gCi0yLjExLjAKKzIuMTUuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2gKaW5kZXggYTM4Njc1Zi4uYmYyNGQ0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaApAQCAtNiw2ICs2LDkgQEAKIAogV2UgYWRkIGxvdHMgb2YgbmF0aXZlIHN0dWZmIGludG8gaXQgYW5kIHNjcmlwdGxldHMgcmVseSBvbiB0aGF0LgogCitBbHNvIG5lZWQgdG8gcmVtb3ZlIHRoZSB4eCB0ZXN0IGxhdGVyIGluIHRoZSBmdW5jdGlvbiBzaW5jZSB0aGUKK3ZhbHVlIGNvdWxkIG5vdyBiZSB1c2VkIHVuLWluaXRpYWxpc2VkLgorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQpAQCAtMjUsNiArMjgsMTMgQEAKICAJZnJlZShpcGF0aCk7CiAgICAgIH0KICAKLS0tIAotMi4xMS4wCi0KK0BAIC0yMDYsOSArMjA2LDcgQEAgc3RhdGljIHZvaWQgZG9TY3JpcHRFeGVjKEFSR1ZfY29uc3RfdCBhcgorIAkvKiBYWFggRG9uJ3QgbXRyYWNlIGludG8gY2hpbGRyZW4uICovCisgCXVuc2V0ZW52KCJNQUxMT0NfQ0hFQ0tfIik7CisgCistCWlmICh4eCA9PSAwKSB7CisgCSAgICB4eCA9IGV4ZWN2KGFyZ3ZbMF0sIGFyZ3YpOworLQl9CisgICAgIH0KKyAgICAgX2V4aXQoMTI3KTsgLyogZXhpdCAxMjcgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBiYXNoKDEpICovCisgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GYWN0b3Itb3V0LWFuZC11bmlmeS1zZXR0aW5nLUNMT0VYRUMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZhY3Rvci1vdXQtYW5kLXVuaWZ5LXNldHRpbmctQ0xPRVhFQy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjQ0MGM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GYWN0b3Itb3V0LWFuZC11bmlmeS1zZXR0aW5nLUNMT0VYRUMucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK0Zyb20gOWMzZTVkZTMyNDA1NTRjOGVhMWIyOWQ1MmVlYWRlZTQ4NDBmZWZhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI5IE1heSAyMDE4IDE3OjM3OjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBGYWN0b3Igb3V0IGFuZCB1bmlmeSBzZXR0aW5nIENMT0VYRUMKKworQ29tbWl0IDdhN2MzMWY1ICgiU2V0IEZEX0NMT0VYRUMgb24gb3BlbmVkIGZpbGVzIGJlZm9yZSBleGVjIGZyb20KK2x1YSBzY3JpcHQgaXMgY2FsbGVkIikgY29waWVkIHRoZSBjb2RlIHRoYXQgc2V0cyBDTE9FWEVDIGZsYWcgb24gYWxsCitwb3NzaWJsZSBmaWxlIGRlc2NyaXB0b3JzIGZyb20gbGliL3JwbXNjcmlwdC5jIHRvIGx1YWV4dC9scG9zaXguYywKK2Vzc2VudGlhbGx5IGNyZWF0aW5nIHR3byBjb3BpZXMgb2YgdGhlIHNhbWUgY29kZSAobW9kdWxvIGNvbW1lbnRzCithbmQgdGhlIHVudXNlZCBhc3NpZ25tZW50KS4KKworVGhpcyBjb21taXQgbW92ZXMgdGhlIGZ1bmN0aW9uYWxpdHkgaW50byBpdHMgb3duIGZ1bmN0aW9uLCB3aXRob3V0CithbnkgY29kZSBtb2RpZmljYXRpb25zLCB1c2luZyB0aGUgdmVyc2lvbiBmcm9tIGx1YWV4dC9scG9zaXguYy4KKworU2lnbmVkLW9mZi1ieTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC80NDRdCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KKy0tLQorIGxpYi9ycG1zY3JpcHQuYyAgICAgICAgfCAxOCArKy0tLS0tLS0tLS0tLS0tLS0KKyBsdWFleHQvbHBvc2l4LmMgICAgICAgIHwgMTMgKystLS0tLS0tLS0tLQorIHJwbWlvL3JwbWlvLmMgICAgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCisgcnBtaW8vcnBtaW9faW50ZXJuYWwuaCB8ICA2ICsrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvcnBtc2NyaXB0LmMgYi9saWIvcnBtc2NyaXB0LmMKK2luZGV4IDc0NzM4NWE1Yi4uYjRjY2QzMjQ2IDEwMDY0NAorLS0tIGEvbGliL3JwbXNjcmlwdC5jCisrKysgYi9saWIvcnBtc2NyaXB0LmMKK0BAIC0zLDcgKzMsNiBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CisgCisgI2luY2x1ZGUgPHJwbS9ycG1maWxldXRpbC5oPgorICNpbmNsdWRlIDxycG0vcnBtbWFjcm8uaD4KK0BAIC0xNCw2ICsxMyw3IEBACisgCisgI2luY2x1ZGUgInJwbWlvL3JwbWx1YS5oIgorICNpbmNsdWRlICJsaWIvcnBtc2NyaXB0LmgiCisrI2luY2x1ZGUgInJwbWlvL3JwbWlvX2ludGVybmFsLmgiCisgCisgI2luY2x1ZGUgImxpYi9ycG1wbHVnaW5zLmgiICAgICAvKiBycG0gcGx1Z2lucyBob29rcyAqLworIAorQEAgLTE3MCwyNiArMTcwLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgU0NSSVBUX1BBVEggPSAiUEFUSD0vc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbjovdXNyCisgc3RhdGljIHZvaWQgZG9TY3JpcHRFeGVjKEFSR1ZfY29uc3RfdCBhcmd2LCBBUkdWX2NvbnN0X3QgcHJlZml4ZXMsCisgCQkJRkRfdCBzY3JpcHRGZCwgRkRfdCBvdXQpCisgeworLSAgICBpbnQgZmxhZzsKKy0gICAgaW50IGZkbm87CisgICAgIGludCB4eDsKKy0gICAgaW50IG9wZW5fbWF4OworIAorICAgICAvKiBTSUdQSVBFIGlzIGlnbm9yZWQgaW4gcnBtLCByZXNldCB0byBkZWZhdWx0IGZvciB0aGUgc2NyaXB0bGV0ICovCisgICAgICh2b2lkKSBzaWduYWwoU0lHUElQRSwgU0lHX0RGTCk7CisgCistICAgIC8qIFhYWCBGb3JjZSBGRF9DTE9FWEVDIG9uIGFsbCBpbmhlcml0ZWQgZmRubydzLiAqLworLSAgICBvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKKy0gICAgaWYgKG9wZW5fbWF4ID09IC0xKSB7CistCW9wZW5fbWF4ID0gMTAyNDsKKy0gICAgfQorLSAgICBmb3IgKGZkbm8gPSAzOyBmZG5vIDwgb3Blbl9tYXg7IGZkbm8rKykgeworLQlmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7CistCWlmIChmbGFnID09IC0xIHx8IChmbGFnICYgRkRfQ0xPRVhFQykpCistCSAgICBjb250aW51ZTsKKy0JeHggPSBmY250bChmZG5vLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKKy0JLyogWFhYIFcyRE8/IGRlYnVnIG1zZyBmb3IgaW5oZWlyaXRlZCBmZG5vIHcvbyBGRF9DTE9FWEVDICovCistICAgIH0KKysgICAgcnBtU2V0Q2xvc2VPbkV4ZWMoKTsKKyAKKyAgICAgaWYgKHNjcmlwdEZkICE9IE5VTEwpIHsKKyAJaW50IHNmZG5vID0gRmlsZW5vKHNjcmlwdEZkKTsKK2RpZmYgLS1naXQgYS9sdWFleHQvbHBvc2l4LmMgYi9sdWFleHQvbHBvc2l4LmMKK2luZGV4IDBhN2MyNmM3MS4uNWQ3YWQzYzg3IDEwMDY0NAorLS0tIGEvbHVhZXh0L2xwb3NpeC5jCisrKysgYi9sdWFleHQvbHBvc2l4LmMKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDx1dGltZS5oPgorICNpbmNsdWRlIDxycG0vcnBtdXRpbC5oPgorKyNpbmNsdWRlICJycG1pby9ycG1pb19pbnRlcm5hbC5oIgorIAorICNkZWZpbmUgTVlOQU1FCQkicG9zaXgiCisgI2RlZmluZSBNWVZFUlNJT04JTVlOQU1FICIgbGlicmFyeSBmb3IgIiBMVUFfVkVSU0lPTiAiIC8gTm92IDIwMDMiCitAQCAtMzM1LDIxICszMzYsMTEgQEAgc3RhdGljIGludCBQZXhlYyhsdWFfU3RhdGUgKkwpCQkJLyoqIGV4ZWMocGF0aCxbYXJnc10pICovCisgCWNvbnN0IGNoYXIgKnBhdGggPSBsdWFMX2NoZWNrc3RyaW5nKEwsIDEpOworIAlpbnQgaSxuPWx1YV9nZXR0b3AoTCk7CisgCWNoYXIgKiphcmd2OworLQlpbnQgZmxhZywgZmRubywgb3Blbl9tYXg7CisgCisgCWlmICghaGF2ZV9mb3JrZWQpCisgCSAgICByZXR1cm4gbHVhTF9lcnJvcihMLCAiZXhlYyBub3QgcGVybWl0dGVkIGluIHRoaXMgY29udGV4dCIpOworIAorLQlvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKKy0JaWYgKG9wZW5fbWF4ID09IC0xKSB7CistCSAgICBvcGVuX21heCA9IDEwMjQ7CistCX0KKy0JZm9yIChmZG5vID0gMzsgZmRubyA8IG9wZW5fbWF4OyBmZG5vKyspIHsKKy0JICAgIGZsYWcgPSBmY250bChmZG5vLCBGX0dFVEZEKTsKKy0JICAgIGlmIChmbGFnID09IC0xIHx8IChmbGFnICYgRkRfQ0xPRVhFQykpCistCQljb250aW51ZTsKKy0JICAgIGZjbnRsKGZkbm8sIEZfU0VURkQsIEZEX0NMT0VYRUMpOworLQl9CisrCXJwbVNldENsb3NlT25FeGVjKCk7CisgCisgCWFyZ3YgPSBtYWxsb2MoKG4rMSkqc2l6ZW9mKGNoYXIqKSk7CisgCWlmIChhcmd2PT1OVUxMKSByZXR1cm4gbHVhTF9lcnJvcihMLCJub3QgZW5vdWdoIG1lbW9yeSIpOworZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvLmMgYi9ycG1pby9ycG1pby5jCitpbmRleCBjN2NiYzMyYWEuLmVhMTExZDJlYyAxMDA2NDQKKy0tLSBhL3JwbWlvL3JwbWlvLmMKKysrKyBiL3JwbWlvL3JwbWlvLmMKK0BAIC0xNzU5LDMgKzE3NTksMTkgQEAgRElHRVNUX0NUWCBmZER1cERpZ2VzdChGRF90IGZkLCBpbnQgaWQpCisgCisgICAgIHJldHVybiBjdHg7CisgfQorKworK3ZvaWQgcnBtU2V0Q2xvc2VPbkV4ZWModm9pZCkKKyt7CisrCWludCBmbGFnLCBmZG5vLCBvcGVuX21heDsKKysKKysJb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CisrCWlmIChvcGVuX21heCA9PSAtMSkgeworKwkJb3Blbl9tYXggPSAxMDI0OworKwl9CisrCWZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7CisrCQlmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7CisrCQlpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorKwkJCWNvbnRpbnVlOworKwkJZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CisrCX0KKyt9CitkaWZmIC0tZ2l0IGEvcnBtaW8vcnBtaW9faW50ZXJuYWwuaCBiL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKK2luZGV4IGZiZWQxODNiMC4uMzcwY2JkYzc1IDEwMDY0NAorLS0tIGEvcnBtaW8vcnBtaW9faW50ZXJuYWwuaAorKysrIGIvcnBtaW8vcnBtaW9faW50ZXJuYWwuaAorQEAgLTQxLDYgKzQxLDEyIEBAIERJR0VTVF9DVFggZmREdXBEaWdlc3QoRkRfdCBmZCwgaW50IGlkKTsKKyBpbnQgcnBtaW9TbHVycChjb25zdCBjaGFyICogZm4sCisgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKiogYnAsIHNzaXplX3QgKiBibGVucCk7CisgCisrLyoqCisrICogU2V0IGNsb3NlLW9uLWV4ZWMgZmxhZyBmb3IgYWxsIG9wZW5lZCBmaWxlIGRlc2NyaXB0b3JzLCBleGNlcHQKKysgKiBzdGRpbi9zdGRvdXQvc3RkZXJyLgorKyAqLworK3ZvaWQgcnBtU2V0Q2xvc2VPbkV4ZWModm9pZCk7CisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgfQorICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2gKaW5kZXggZWRmOWVjMC4uMGIxZDYyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoCkBAIC0xLDI0ICsxLDIxIEBACi1Gcm9tIDIxMWMyZDExMjAwZTY2NTcxMzJjNTJlN2FjNjhmOGMxMTgyMzEyNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQwNzZkZTAzMGRlYjljYWZkOWIyZTgyYmU1ZDUwNmNlYmRlZmFkMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMjcgRmViIDIwMTcgMTQ6NDM6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggbXVzbCBDIGxpYnJhcnkuCitTdWJqZWN0OiBbUEFUQ0ggMS85XSBGaXggYnVpbGQgd2l0aCBtdXNsIEMgbGlicmFyeS4KIAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtwcm9ibGVtIGFscmVhZHkgc29sdmVkIGluIG1hc3RlciBicmFuY2hdCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCi0gY29uZmlndXJlLmFjICAgICAgICB8IDMgKystCi0gbWlzYy9NYWtlZmlsZS5hbSAgICB8IDMgKy0tCi0gbWlzYy9ycG14cHJvZ25hbWUuYyB8IDMgKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmFjICAgICAgIHwgMyArKy0KKyBycG1pby9kaWdlc3RfbnNzLmMgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5MmZmZDNkNjguLjljNTg0NjdjMSAxMDA2NDQKK2luZGV4IGMwNGEyZThkMS4uYzlkOWFjMTZkIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMjksNiArMjI5LDcgQEAgQUNfU0VBUkNIX0xJQlMoZGxvcGVuLCBbZGxdKQorQEAgLTI1NSw2ICsyNTUsNyBAQCBBQ19TRUFSQ0hfTElCUyhkbG9wZW4sIFtkbF0pCiAgIyBDaGVjayBmb3IgbGliZWxmIGxpYnJhcnkuIFByZWZlciBleHRlcm5hbCwgb3RoZXJ3aXNlIG5vbmUuCiAgV0lUSF9MSUJFTEZfTElCPQogIEFDX0NIRUNLX0hFQURFUihbbGliZWxmLmhdKQpAQCAtMjYsNyArMjMsNyBAQAogIEFDX0NIRUNLX0hFQURFUlMoW2dlbGYuaF0sIFsKICAJQUNfQ0hFQ0tfTElCKGVsZiwgZ2VsZl9nZXR2ZXJuYXV4LCBbCiAgCSAgICBBQ19ERUZJTkUoSEFWRV9MSUJFTEYsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgJ2VsZicgbGlicmFyeSAoLWxlbGYpLl0pCi1AQCAtMjM3LDcgKzIzOCw3IEBAIEFDX0NIRUNLX0hFQURFUlMoW2dlbGYuaF0sIFsKK0BAIC0yNjMsNyArMjY0LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbZ2VsZi5oXSwgWwogIAldKQogIF0pCiAgQUNfU1VCU1QoV0lUSF9MSUJFTEZfTElCKQpAQCAtMzUsNDAgKzMyLDE3IEBACiAgCiAgQUNfQ0hFQ0tfSEVBREVSUyhbZHdhcmYuaF0sIFsKICAgIFdJVEhfTElCRFdBUkY9eWVzCi1kaWZmIC0tZ2l0IGEvbWlzYy9NYWtlZmlsZS5hbSBiL21pc2MvTWFrZWZpbGUuYW0KLWluZGV4IDhiZjAwOTNkOS4uYjlkYjNkMzFhIDEwMDY0NAotLS0tIGEvbWlzYy9NYWtlZmlsZS5hbQotKysrIGIvbWlzYy9NYWtlZmlsZS5hbQotQEAgLTUsMTAgKzUsOSBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbWlzYworZGlmZiAtLWdpdCBhL3JwbWlvL2RpZ2VzdF9uc3MuYyBiL3JwbWlvL2RpZ2VzdF9uc3MuYworaW5kZXggOTkyZDlhY2Y2Li5lMTE5MjBlM2UgMTAwNjQ0CistLS0gYS9ycG1pby9kaWdlc3RfbnNzLmMKKysrKyBiL3JwbWlvL2RpZ2VzdF9uc3MuYworQEAgLTEsNSArMSw2IEBACisgI2luY2x1ZGUgInN5c3RlbS5oIgogIAotIEVYVFJBX0RJU1QgPSBcCi0gCWZubWF0Y2guYwlmbm1hdGNoLmggXAotLQlycG14cHJvZ25hbWUuYwlycG14cHJvZ25hbWUuaCBcCi0gCXN0cGNweS5jCXN0cG5jcHkuYwotIAotIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYm1pc2MubGEKLSAKLS1saWJtaXNjX2xhX1NPVVJDRVMgPSBmdHMuYyBmdHMuaAotK2xpYm1pc2NfbGFfU09VUkNFUyA9IGZ0cy5jIGZ0cy5oIHJwbXhwcm9nbmFtZS5jIHJwbXhwcm9nbmFtZS5oCi0gbGlibWlzY19sYV9MSUJBREQgPSBATFRMSUJPQkpTQAotZGlmZiAtLWdpdCBhL21pc2MvcnBteHByb2duYW1lLmMgYi9taXNjL3JwbXhwcm9nbmFtZS5jCi1pbmRleCBmODk2MDA2MTMuLmU5NDYyNWVhOCAxMDA2NDQKLS0tLSBhL21pc2MvcnBteHByb2duYW1lLmMKLSsrKyBiL21pc2MvcnBteHByb2duYW1lLmMKLUBAIC0xMyw3ICsxMyw3IEBAIGNoYXIgKl9ycG14Z2V0cHJvZ25hbWUodm9pZCkKLSB7Ci0gICBjb25zdCBjaGFyICplbXB0eSA9ICIiOwotIAotLSAgaWYgKF9ycG14cHJvZ25hbSAhPSBOVUxMKSAvKiBuZXZlciByZXR1cm4gTlVMTCBzdHJpbmcgKi8KLSsgIGlmIChfcnBteHByb2duYW1lICE9IE5VTEwpIC8qIG5ldmVyIHJldHVybiBOVUxMIHN0cmluZyAqLwotICAgICByZXR1cm4gX3JwbXhwcm9nbmFtZTsKLSAgIGVsc2UKLSAgICAgcmV0dXJuIGVtcHR5OwotQEAgLTMwLDQgKzMwLDMgQEAgdm9pZCBfcnBteHNldHByb2duYW1lKGNvbnN0IGNoYXIgKnBuKQotICAgfQotIH0KLSAKLS0jZW5kaWYgLyogX1JQTVhQUk9HTkFNRV9IICovCisrI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlIDxwdGhyZWFkLmg+CisgI2luY2x1ZGUgPG5zcy5oPgorICNpbmNsdWRlIDxzZWNoYXNoLmg+CiAtLSAKLTIuMTEuMAorMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtV2hlbi1uaWNlLXZhbHVlLWNhbm5vdC1iZS1yZXNldC1pc3N1ZS1hLW5vdGljZS1pbnN0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtV2hlbi1uaWNlLXZhbHVlLWNhbm5vdC1iZS1yZXNldC1pc3N1ZS1hLW5vdGljZS1pbnN0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY0OGNhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVdoZW4tbmljZS12YWx1ZS1jYW5ub3QtYmUtcmVzZXQtaXNzdWUtYS1ub3RpY2UtaW5zdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGQ0MmVjZTZmYTE1Yjk4ZDdmOTIyMWI5MGI4NWI3ODYzMWRmMmMwYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTQgRmViIDIwMTcgMTM6NTE6MTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gV2hlbiBuaWNlIHZhbHVlIGNhbm5vdCBiZSByZXNldCwgaXNzdWUgYSBub3RpY2UgaW5zdGVhZCBvZiBhCi0gd2FybmluZwotCi1PdGhlcndpc2UgYnVpbGQgbG9ncyBvbiB0aGUgYXV0b2J1aWxkZXIgZ2V0IHZlcnkgY2x1dHRlciwgYXMgaXQKLWRvZXNuJ3QgYWxsb3cgdGhlIG5pY2UgdmFsdWUgdG8gYmUgcmVzZXQgZm9yIHNvbWUgcmVhc29uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBsaWIvcnBtc2NyaXB0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvcnBtc2NyaXB0LmMgYi9saWIvcnBtc2NyaXB0LmMKLWluZGV4IDVlMWU5OTkwNi4uMzk3NWFlYWQ4IDEwMDY0NAotLS0tIGEvbGliL3JwbXNjcmlwdC5jCi0rKysgYi9saWIvcnBtc2NyaXB0LmMKLUBAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIHJwbVJDIHJ1bkV4dFNjcmlwdChycG1QbHVnaW5zIHBsdWdpbnMsIEFSR1ZfY29uc3RfdCBwcmVmaXhlcywKLSAgICAgICAgIGludCByZXQ7Ci0gICAgICAgICByZXQgPSBzZXRwcmlvcml0eShQUklPX1BST0NFU1MsIDAsIDApOwotICAgICAgICAgaWYgKHJldCA9PSAtMSkgewotLSAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfV0FSTklORywgXygiVW5hYmxlIHRvIHJlc2V0IG5pY2UgdmFsdWU6ICVzIiksCi0rICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19OT1RJQ0UsIF8oIlVuYWJsZSB0byByZXNldCBuaWNlIHZhbHVlOiAlc1xuIiksCi0gICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgICB9Ci0gCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1kYnVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzcxZDliCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGRmYjQyMmM3NDRmZGMxODM4YWZjNDBiOGUxZjE2MWJiNDYwOTNkOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDggQXByIDIwMTggMTI6MDY6NDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhZGQgb3B0aW9uIGZvciBkYnVzCisKK0FkZCBvcHRpb24gZm9yIGRidXMgc28gdGhhdCB1c2VycyBjb3VsZCBjaG9vc2UgdG8gYnVpbGQgd2l0aCBkYnVzCitvciB3aXRoIG5vIGRidXMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMSArKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDRkYjE1Yzc5MDkuLjQ5M2YzOTNkMzEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTk3NiwxMiArOTc2LDE1IEBAIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX3BsdWdpbnMiID0geWVzXSxbCisgXSkKKyBBTV9DT05ESVRJT05BTChFTkFCTEVfUExVR0lOUyxbdGVzdCAiJGVuYWJsZV9wbHVnaW5zIiA9IHllc10pCisgCistd2l0aF9kYnVzPW5vCistQVNfSUYoW3Rlc3QgIiRlbmFibGVfcGx1Z2lucyIgIT0gbm9dLFsKKytBQ19BUkdfV0lUSChbZGJ1c10sIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWRidXNdLCBbYnVpbGQgd2l0aCBkYnVzIHN1cHBvcnRdKV0sCisrICAgICAgICAgICAgW10sCisrICAgICAgICAgICAgW3dpdGhfZGJ1cz15ZXNdKQorKworK0FTX0lGKFt0ZXN0ICIkd2l0aF9kYnVzIiAhPSBub10sWworICAgUEtHX0NIRUNLX01PRFVMRVMoW0RCVVNdLAorICAgICBbZGJ1cy0xID49IDEuM10sCistICAgIFtBQ19ERUZJTkUoREJVUywgMSwgW0J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0P10pIHdpdGhfZGJ1cz15ZXNdLAorLSAgICBbd2l0aF9kYnVzPW5vXSkKKysgICAgW0FDX0RFRklORShEQlVTLCAxLCBbQnVpbGQgd2l0aCBkYnVzIHN1cHBvcnQ/XSldLAorKyAgICBbQUNfTVNHX0VSUk9SKFtkYnVzIG5vdCBwcmVzZW50ICgtLXdpdGhvdXQtZGJ1cyB0byBkaXNhYmxlKV0pXSkKKyAgIEFDX1NVQlNUKERCVVNfQ0ZMQUdTKQorICAgQUNfU1VCU1QoREJVU19MSUJTKQorIF0pCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAyLU9wdGltaXplLXJwbVNldENsb3NlT25FeGVjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1PcHRpbWl6ZS1ycG1TZXRDbG9zZU9uRXhlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjdmOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1PcHRpbWl6ZS1ycG1TZXRDbG9zZU9uRXhlYy5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSA1ZTZmMDVjZDhkYWQ2YzFlZTZiZDFlNmU0M2YxNzY5NzZjOWMzNDE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjkgTWF5IDIwMTggMTc6NTI6NTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIE9wdGltaXplIHJwbVNldENsb3NlT25FeGVjCisKK0luIGNhc2UgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlcyBsaW1pdCBpcyBzZXQgdG9vIGhpZ2gsIGJvdGgKK2x1YWV4dC9QZXhlYygpIGFuZCBsaWIvZG9TY3JpcHRFeGVjKCkgc3BlbmQgd2F5IHRvbyBtdWNoIHRpbWUKK3RyeWluZyB0byBzZXQgRkRfQ0xPRVhFQyBmbGFnIGZvciBhbGwgdGhvc2UgZmlsZSBkZXNjcmlwdG9ycywKK3Jlc3VsdGluZyBpbiBzZXZlcmUgaW5jcmVhc2Ugb2YgdGltZSBpdCB0YWtlcyB0byBleGVjdXRlIHNheQorcnBtIG9yIGRuZi4KKworVGhpcyBiZWNvbWVzIGluY3JlYXNpbmdseSBub3RpY2VhYmxlIHdoZW4gcnVubmluZyB3aXRoIGUuZy4gdW5kZXIKK0RvY2tlciwgdGhlIHJlYXNvbiBiZWluZzoKKworPiAkIGRvY2tlciBydW4gZmVkb3JhIHVsaW1pdCAtbgorPiAxMDQ4NTc2CisKK09uZSBvYnZpb3VzIGZpeCBpcyB0byB1c2UgcHJvY2ZzIHRvIGdldCB0aGUgYWN0dWFsIGxpc3Qgb2Ygb3BlbmVkIGZkcworYW5kIGl0ZXJhdGUgb3ZlciBpdC4gTXkgcXVpY2stbi1kaXJ0eSBiZW5jaG1hcmsgc2hvd3MgdGhlIC9wcm9jIGFwcHJvYWNoCitpcyBhYm91dCAxMHggZmFzdGVyIHRoYW4gaXRlcmF0aW5nIHRocm91Z2ggYSBsaXN0IG9mIGp1c3QgMTAyNCBmZHMsCitzbyBpdCdzIGFuIGltcHJvdmVtZW50IGV2ZW4gZm9yIGRlZmF1bHQgdWxpbWl0IHZhbHVlcy4KKworTm90ZSB0aGF0IHRoZSBvbGQgbWV0aG9kIGlzIHN0aWxsIHVzZWQgaW4gY2FzZSAvcHJvYyBpcyBub3QgYXZhaWxhYmxlLgorCitXaGlsZSBhdCBpdCwKKworIDEuIGZpeCB0aGUgZnVuY3Rpb24gYnkgbWFraW5nIHN1cmUgd2UgbW9kaWZ5IChyYXRoZXIgdGhhbiBzZXQpCisgICAgdGhlIGV4aXN0aW5nIGZsYWdzLiBBcyB0aGUgb25seSBrbm93biBmbGFnIGlzIEZEX0NMT0VYRUMsCisgICAgdGhpcyBjaGFuZ2UgaXMgY3VycmVudGx5IHB1cmVseSBhZXN0aGV0aWNhbCwgYnV0IGluIGNhc2UKKyAgICBvdGhlciBmbGFncyB3aWxsIGFwcGVhciBpdCB3aWxsIGJlY29tZSBhIHJlYWwgYnVnIGZpeC4KKworIDIuIGdldCByaWQgb2YgbWFnaWMgbnVtYmVyIDM7IHVzZSBTVERFUlJfRklMRU5PCisKK1NpZ25lZC1vZmYtYnk6IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CisKK0ZpeGVzICM0NDQKKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzQ0NF0KK1NpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgorLS0tCisgcnBtaW8vcnBtaW8uYyB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvLmMgYi9ycG1pby9ycG1pby5jCitpbmRleCBlYTExMWQyZWMuLjU1MzUxYzIyMSAxMDA2NDQKKy0tLSBhL3JwbWlvL3JwbWlvLmMKKysrKyBiL3JwbWlvL3JwbWlvLmMKK0BAIC0xNzYwLDE4ICsxNzYwLDQzIEBAIERJR0VTVF9DVFggZmREdXBEaWdlc3QoRkRfdCBmZCwgaW50IGlkKQorICAgICByZXR1cm4gY3R4OworIH0KKyAKKytzdGF0aWMgdm9pZCBzZXRfY2xvZXhlYyhpbnQgZmQpCisreworKwlpbnQgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGRCk7CisrCisrCWlmIChmbGFncyA9PSAtMSB8fCAoZmxhZ3MgJiBGRF9DTE9FWEVDKSkKKysJCXJldHVybjsKKysKKysJZmNudGwoZmQsIEZfU0VURkQsIGZsYWdzIHwgRkRfQ0xPRVhFQyk7CisrfQorKworIHZvaWQgcnBtU2V0Q2xvc2VPbkV4ZWModm9pZCkKKyB7CistCWludCBmbGFnLCBmZG5vLCBvcGVuX21heDsKKysJY29uc3QgaW50IG1pbl9mZCA9IFNUREVSUl9GSUxFTk87IC8qIGRvbid0IHRvdWNoIHN0ZGluL291dC9lcnIgKi8KKysJaW50IGZkOworKworKwlESVIgKmRpciA9IG9wZW5kaXIoIi9wcm9jL3NlbGYvZmQiKTsKKysJaWYgKGRpciA9PSBOVUxMKSB7IC8qIC9wcm9jIG5vdCBhdmFpbGFibGUgKi8KKysJCS8qIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgZmRzLCBtaWdodCBiZSBzbG93ICovCisrCQlpbnQgb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CisrCQlpZiAob3Blbl9tYXggPT0gLTEpCisrCQkJb3Blbl9tYXggPSAxMDI0OworIAorLQlvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKKy0JaWYgKG9wZW5fbWF4ID09IC0xKSB7CistCQlvcGVuX21heCA9IDEwMjQ7CisrCQlmb3IgKGZkID0gbWluX2ZkICsgMTsgZmQgPCBvcGVuX21heDsgZmQrKykKKysJCQlzZXRfY2xvZXhlYyhmZCk7CisrCisrCQlyZXR1cm47CisgCX0KKy0JZm9yIChmZG5vID0gMzsgZmRubyA8IG9wZW5fbWF4OyBmZG5vKyspIHsKKy0JCWZsYWcgPSBmY250bChmZG5vLCBGX0dFVEZEKTsKKy0JCWlmIChmbGFnID09IC0xIHx8IChmbGFnICYgRkRfQ0xPRVhFQykpCistCQkJY29udGludWU7CistCQlmY250bChmZG5vLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKKysKKysJLyogaXRlcmF0ZSBvdmVyIGZkcyBvYnRhaW5lZCBmcm9tIC9wcm9jICovCisrCXN0cnVjdCBkaXJlbnQgKmVudHJ5OworKwl3aGlsZSAoKGVudHJ5ID0gcmVhZGRpcihkaXIpKSAhPSBOVUxMKSB7CisrCQlmZCA9IGF0b2koZW50cnktPmRfbmFtZSk7CisrCQlpZiAoZmQgPiBtaW5fZmQpCisrCQkJc2V0X2Nsb2V4ZWMoZmQpOworIAl9CisrCisrCWNsb3NlZGlyKGRpcik7CisrCisrCXJldHVybjsKKyB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbVNldENsb3NlT25FeGVjLXVzZS1nZXRybGltaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbVNldENsb3NlT25FeGVjLXVzZS1nZXRybGltaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg5YjQxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDMtcnBtU2V0Q2xvc2VPbkV4ZWMtdXNlLWdldHJsaW1pdC5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDMwN2UyOGI0Y2IwOGIwNWJjMDQ0NDgyMDU4ZWVlYmM5ZjU5YmI5YTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOSBNYXkgMjAxOCAxODowOToyNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvM10gcnBtU2V0Q2xvc2VPbkV4ZWM6IHVzZSBnZXRybGltaXQoKQorCitJbiBjYXNlIC9wcm9jIGlzIG5vdCBhdmFpbGFibGUgdG8gZ2V0IHRoZSBhY3R1YWwgbGlzdCBvZiBvcGVuZWQgZmRzLAord2UgZmFsbCBiYWNrIHRvIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBsaXN0IG9mIGFsbCBwb3NzaWJsZSBmZHMuCisKK0l0IGlzIHBvc3NpYmxlIHRoYXQgZHVyaW5nIHRoZSBjb3Vyc2Ugb2YgdGhlIHByb2dyYW0gZXhlY3V0aW9uIHRoZSBsaW1pdAorb24gbnVtYmVyIG9mIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBtaWdodCBiZSBsb3dlcmVkLCBzbyB1c2luZyB0aGUKK2N1cnJlbnQgbGltaXQsIGFzIHJldHVybmVkIGJ5IHN5c2NvbmYoX1NDX09QRU5fTUFYKSwgbWlnaHQgb21pdCBzb21lCitmZHMuIFRoZXJlZm9yZSwgaXQgaXMgYmV0dGVyIHRvIHVzZSBybGltX21heCBmcm9tIHRoZSBzdHJ1Y3R1cmUKK2ZpbGxlZCBpbiBieSBnZXJ0bGltaXQoUkxJTUlUX05PRklMRSkgdG8gbWFrZSBzdXJlIHdlJ3JlIGNoZWNraW5nCithbGwgZmRzLgorCitUaGlzIHNsb3dzIGRvd24gdGhlIGZ1bmN0aW9uLCBidXQgb25seSBpbiB0aGUgY2FzZSAvcHJvYyBpcyBub3QKK2F2YWlsYWJsZSwgd2hpY2ggc2hvdWxkIGJlIHJhcmUgaW4gcHJhY3RpY2UuCisKK1NpZ25lZC1vZmYtYnk6IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvNDQ0XQorU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CistLS0KKyBycG1pby9ycG1pby5jIHwgMTAgKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvLmMgYi9ycG1pby9ycG1pby5jCitpbmRleCA1NTM1MWMyMjEuLmUwNTFjOTg2MyAxMDA2NDQKKy0tLSBhL3JwbWlvL3JwbWlvLmMKKysrKyBiL3JwbWlvL3JwbWlvLmMKK0BAIC0xMCw2ICsxMCw3IEBACisgI2luY2x1ZGUgPHN5cy9wZXJzb25hbGl0eS5oPgorICNlbmRpZgorICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAKKyAjaW5jbHVkZSA8cnBtL3JwbWxvZy5oPgorICNpbmNsdWRlIDxycG0vcnBtbWFjcm8uaD4KK0BAIC0xNzc4LDcgKzE3NzksMTQgQEAgdm9pZCBycG1TZXRDbG9zZU9uRXhlYyh2b2lkKQorIAlESVIgKmRpciA9IG9wZW5kaXIoIi9wcm9jL3NlbGYvZmQiKTsKKyAJaWYgKGRpciA9PSBOVUxMKSB7IC8qIC9wcm9jIG5vdCBhdmFpbGFibGUgKi8KKyAJCS8qIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgZmRzLCBtaWdodCBiZSBzbG93ICovCistCQlpbnQgb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CisrCQlzdHJ1Y3QgcmxpbWl0IHJsOworKwkJaW50IG9wZW5fbWF4OworKworKwkJaWYgKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpID09IDAgJiYgcmwucmxpbV9tYXggIT0gUkxJTV9JTkZJTklUWSkKKysJCQlvcGVuX21heCA9IHJsLnJsaW1fbWF4OworKwkJZWxzZQorKwkJCW9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKworIAkJaWYgKG9wZW5fbWF4ID09IC0xKQorIAkJCW9wZW5fbWF4ID0gMTAyNDsKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaAppbmRleCA2NGE1NjUxLi44OTg5ZGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlYzMwNTc5NWEzMDJkMjI2MzQzZTY5MDMxZmYyMDI0ZGZjZGU2OWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4Y2U5ZmJhYjI5OTA2MDliZGFjZTQ1N2UxNDYxNjAzMzRlOTMxYzg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDggSnVuIDIwMTcgMTc6MDg6MDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIGJ1aWxkL3BhY2suYzogcmVtb3ZlIHN0YXRpYyBsb2NhbCB2YXJpYWJsZXMgZnJvbQorU3ViamVjdDogW1BBVENIIDE0LzE1XSBidWlsZC9wYWNrLmM6IHJlbW92ZSBzdGF0aWMgbG9jYWwgdmFyaWFibGVzIGZyb20KICBidWlsZEhvc3QoKSBhbmQgZ2V0QnVpbGRUaW1lKCkKIAogVGhlaXIgdXNlIGlzIGNhdXNpbmcgZGlmZmljdWx0IHRvIGRpYWdub3plIGRhdGEgcmFjZXMgd2hlbiBidWlsZGluZyBtdWx0aXBsZQpAQCAtMTEsOCArMTEsOCBAQAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMjZdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAotCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgYnVpbGQvYnVpbGQuYyAgICAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogIGJ1aWxkL3BhY2suYyAgICAgICAgICAgICAgfCA4NCArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjAsNyArMjAsNyBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9idWlsZC9idWlsZC5jIGIvYnVpbGQvYnVpbGQuYwotaW5kZXggNWY5OWM4ZGI3Li4wOWExMzExYzUgMTAwNjQ0CitpbmRleCA4MTE1MmU1M2UuLjYwMDFmOWU1MiAxMDA2NDQKIC0tLSBhL2J1aWxkL2J1aWxkLmMKICsrKyBiL2J1aWxkL2J1aWxkLmMKIEBAIC02LDYgKzYsOCBAQApAQCAtODMsNyArODMsNyBAQAogIC8qKgogICAqLwogIHN0YXRpYyBycG1SQyBkb1JtU291cmNlKHJwbVNwZWMgc3BlYykKLUBAIC0yMDMsNiArMjQ5LDkgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCitAQCAtMjAxLDYgKzI0Nyw5IEBAIHN0YXRpYyBycG1SQyBidWlsZFNwZWMoQlRBX3QgYnVpbGRBcmdzLCBycG1TcGVjIHNwZWMsIGludCB3aGF0KQogICAgICBycG1SQyByYyA9IFJQTVJDX09LOwogICAgICBpbnQgdGVzdCA9ICh3aGF0ICYgUlBNQlVJTERfTk9CVUlMRCk7CiAgICAgIGNoYXIgKmNvb2tpZSA9IGJ1aWxkQXJncy0+Y29va2llID8geHN0cmR1cChidWlsZEFyZ3MtPmNvb2tpZSkgOiBOVUxMOwpAQCAtOTMsNyArOTMsNyBAQAogIAogICAgICBpZiAocnBtRXhwYW5kTnVtZXJpYygiJXs/c291cmNlX2RhdGVfZXBvY2hfZnJvbV9jaGFuZ2Vsb2d9IikgJiYKICAJZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpID09IE5VTEwpIHsKLUBAIC0yNzEsMTEgKzMyMCwxMSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKK0BAIC0yNjksMTEgKzMxOCwxMSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKICAJCWdvdG8gZXhpdDsKICAKICAJaWYgKCgod2hhdCAmIFJQTUJVSUxEX1BBQ0tBR0VTT1VSQ0UpICYmICF0ZXN0KSAmJgpAQCAtMTA3LDcgKzEwNyw3IEBACiAgCQlnb3RvIGV4aXQ7CiAgCQogIAlpZiAoKHdoYXQgJiBSUE1CVUlMRF9DTEVBTikgJiYKLUBAIC0yOTUsNiArMzQ0LDcgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCitAQCAtMjkzLDYgKzM0Miw3IEBAIHN0YXRpYyBycG1SQyBidWlsZFNwZWMoQlRBX3QgYnVpbGRBcmdzLCBycG1TcGVjIHNwZWMsIGludCB3aGF0KQogIAkodm9pZCkgdW5saW5rKHNwZWMtPnNwZWNGaWxlKTsKICAKICBleGl0OgpAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgIHNwZWMtPnJvb3REaXIgPSBOVUxMOwogICAgICBpZiAocmMgIT0gUlBNUkNfT0sgJiYgcnBtbG9nR2V0TnJlY3MoKSA+IDApIHsKIGRpZmYgLS1naXQgYS9idWlsZC9wYWNrLmMgYi9idWlsZC9wYWNrLmMKLWluZGV4IGVkNWI5YWI0ZS4uNjI0MjcwNjVhIDEwMDY0NAoraW5kZXggZGYxNTg3NmZmLi4xN2E0YjA5MDUgMTAwNjQ0CiAtLS0gYS9idWlsZC9wYWNrLmMKICsrKyBiL2J1aWxkL3BhY2suYwogQEAgLTYsOCArNiw2IEBACkBAIC0xMjgsNyArMTI4LDcgQEAKICAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KICAKICAjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgkJCS8qIFJQTVNJR1RBRyosIHJwbVJlYWRQYWNrYWdlRmlsZSAqLwotQEAgLTE1MSw1NyArMTQ5LDYgQEAgZXhpdDoKK0BAIC0xNTIsNTcgKzE1MCw2IEBAIGV4aXQ6CiAgICAgIHJldHVybiByYzsKICB9CiAgCkBAIC0xODYsOSArMTg2LDkgQEAKICBzdGF0aWMgcnBtUkMgcHJvY2Vzc1NjcmlwdEZpbGVzKHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2cpCiAgewogICAgICBzdHJ1Y3QgVHJpZ2dlckZpbGVFbnRyeSAqcDsKLUBAIC0zMDgsNyArMjU1LDggQEAgc3RhdGljIGludCBoYXZlUmljaERlcChQYWNrYWdlIHBrZykKLSB9Ci0gCitAQCAtNDc2LDcgKzQyMyw4IEBAIGV4aXQ6CisgICogb3JkZXIgdG8gaG93IHRoZSBSUE0gZm9ybWF0IGlzIGxhaWQgb24gZGlzay4KKyAgKi8KICBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAogLQkJICAgICAgY29uc3QgY2hhciAqZmlsZU5hbWUsIGNoYXIgKipjb29raWUpCiArCQkgICAgICBjb25zdCBjaGFyICpmaWxlTmFtZSwgY2hhciAqKmNvb2tpZSwKQEAgLTE5Niw3ICsxOTYsNyBAQAogIHsKICAgICAgRkRfdCBmZCA9IE5VTEw7CiAgICAgIGNoYXIgKiBycG1pb19mbGFncyA9IE5VTEw7Ci1AQCAtMzk3LDcgKzM0NSw3IEBAIHN0YXRpYyBycG1SQyB3cml0ZVJQTShQYWNrYWdlIHBrZywgdW5zaWduZWQgY2hhciAqKiBwa2dpZHAsCitAQCAtNTAwLDcgKzQ0OCw3IEBAIHN0YXRpYyBycG1SQyB3cml0ZVJQTShQYWNrYWdlIHBrZywgdW5zaWduZWQgY2hhciAqKiBwa2dpZHAsCiAgCiAgICAgIC8qIENyZWF0ZSBhbmQgYWRkIHRoZSBjb29raWUgKi8KICAgICAgaWYgKGNvb2tpZSkgewpAQCAtMjA0LDggKzIwNCw4IEBACiArCXJhc3ByaW50Zihjb29raWUsICIlcyAlZCIsIGJ1aWxkSG9zdCwgYnVpbGRUaW1lKTsKICAJaGVhZGVyUHV0U3RyaW5nKHBrZy0+aGVhZGVyLCBSUE1UQUdfQ09PS0lFLCAqY29va2llKTsKICAgICAgfQotICAgICAKLUBAIC01NDYsNyArNDk0LDcgQEAgc3RhdGljIHJwbVJDIGNoZWNrUGFja2FnZXMoY2hhciAqcGtnY2hlY2spCisgCitAQCAtNjQxLDcgKzU4OSw3IEBAIHN0YXRpYyBycG1SQyBjaGVja1BhY2thZ2VzKGNoYXIgKnBrZ2NoZWNrKQogICAgICByZXR1cm4gUlBNUkNfT0s7CiAgfQogIApAQCAtMjE0LDcgKzIxNCw3IEBACiAgewogIAljb25zdCBjaGFyICplcnJvclN0cmluZzsKICAJcnBtUkMgcmMgPSBSUE1SQ19PSzsKLUBAIC01NjUsOCArNTEzLDggQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKK0BAIC02NjAsOCArNjA4LDggQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKICAJaGVhZGVyQ29weVRhZ3Moc3BlYy0+cGFja2FnZXMtPmhlYWRlciwgcGtnLT5oZWFkZXIsIGNvcHlUYWdzKTsKICAJCiAgCWhlYWRlclB1dFN0cmluZyhwa2ctPmhlYWRlciwgUlBNVEFHX1JQTVZFUlNJT04sIFZFUlNJT04pOwpAQCAtMjI1LDcgKzIyNSw3IEBACiAgCiAgCWlmIChzcGVjLT5zb3VyY2VQa2dJZCAhPSBOVUxMKSB7CiAgCSAgICBoZWFkZXJQdXRCaW4ocGtnLT5oZWFkZXIsIFJQTVRBR19TT1VSQ0VQS0dJRCwgc3BlYy0+c291cmNlUGtnSWQsMTYpOwotQEAgLTYwNCw3ICs1NTIsNyBAQCBzdGF0aWMgcnBtUkMgcGFja2FnZUJpbmFyeShycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaAorQEAgLTY5OSw3ICs2NDcsNyBAQCBzdGF0aWMgcnBtUkMgcGFja2FnZUJpbmFyeShycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaAogIAkgICAgZnJlZShiaW5ScG0pOwogIAl9CiAgCkBAIC0yMzQsNyArMjM0LDcgQEAKICAJaWYgKHJjID09IFJQTVJDX09LKSB7CiAgCSAgICAvKiBEbyBjaGVjayBlYWNoIHdyaXR0ZW4gcGFja2FnZSBpZiBlbmFibGVkICovCiAgCSAgICBjaGFyICpwa2djaGVjayA9IHJwbUV4cGFuZCgiJXs/X2J1aWxkX3BrZ2NoZWNrfSAiLCAqZmlsZW5hbWUsIE5VTEwpOwotQEAgLTYyNCw3ICs1NzIsNyBAQCBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhCitAQCAtNzE5LDcgKzY2Nyw3IEBAIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEKICAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqbmV4dDsKICB9OwogIApAQCAtMjQzLDcgKzI0Myw3IEBACiAgewogICAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrcyA9IE5VTEw7CiAgICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2sgPSBOVUxMOwotQEAgLTYzNiw3ICs1ODQsNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYworQEAgLTczMSw3ICs2NzksNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYwogICAgICAgICAgaWYgKHBrZyA9PSBzcGVjLT5wYWNrYWdlcykgewogICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBwYWNrYWdlIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBhaGVhZCBvZiBvdGhlcnMsIGFzIHRoZXkgY29weQogICAgICAgICAgICAgIC8vIGNoYW5nZWxvZyBkYXRhIGZyb20gaXQsIGFuZCBzbyBvdGhlcndpc2UgZGF0YSByYWNlcyB3b3VsZCBoYXBwZW4KQEAgLTI1Miw3ICsyNTIsNyBAQAogICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJGaW5pc2hlZCBiaW5hcnkgcGFja2FnZSBqb2IsIHJlc3VsdCAlZCwgZmlsZW5hbWUgJXNcbiIpLCB0YXNrLT5yZXN1bHQsIHRhc2stPmZpbGVuYW1lKTsKICAgICAgICAgICAgICB0YXNrcyA9IHRhc2s7CiAgICAgICAgICB9Ci1AQCAtNjUzLDcgKzYwMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiBydW5CaW5hcnlQYWNrYWdlVGFza3MocnBtU3BlYyBzcGVjLCBjb25zdCBjCitAQCAtNzQ4LDcgKzY5Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiBydW5CaW5hcnlQYWNrYWdlVGFza3MocnBtU3BlYyBzcGVjLCBjb25zdCBjCiAgICAgICAgICBpZiAodGFzayAhPSB0YXNrcykKICAgICAgICAgICNwcmFnbWEgb21wIHRhc2sKICAgICAgICAgIHsKQEAgLTI2MSw3ICsyNjEsNyBAQAogICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJGaW5pc2hlZCBiaW5hcnkgcGFja2FnZSBqb2IsIHJlc3VsdCAlZCwgZmlsZW5hbWUgJXNcbiIpLCB0YXNrLT5yZXN1bHQsIHRhc2stPmZpbGVuYW1lKTsKICAgICAgICAgIH0KICAgICAgfQotQEAgLTY3MSwxMSArNjE5LDExIEBAIHN0YXRpYyB2b2lkIGZyZWVCaW5hcnlQYWNrYWdlVGFza3Moc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogdGFza3MpCitAQCAtNzY2LDExICs3MTQsMTEgQEAgc3RhdGljIHZvaWQgZnJlZUJpbmFyeVBhY2thZ2VUYXNrcyhzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiB0YXNrcykKICAgICAgfQogIH0KICAKQEAgLTI3NSw3ICsyNzUsNyBAQAogIAogICAgICBmb3IgKHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2sgPSB0YXNrczsgdGFzayAhPSBOVUxMOyB0YXNrID0gdGFzay0+bmV4dCkgewogICAgICAgICAgaWYgKHRhc2stPnJlc3VsdCA9PSBSUE1SQ19PSykgewotQEAgLTcwMiwyMiArNjUwLDIyIEBAIHJwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorQEAgLTc5Nyw3ICs3NDUsNyBAQCBycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKICAgICAgcmV0dXJuIFJQTVJDX09LOwogIH0KICAKQEAgLTI4NCw2ICsyODQsNyBAQAogIHsKICAgICAgUGFja2FnZSBzb3VyY2VQa2cgPSBzcGVjLT5zb3VyY2VQYWNrYWdlOwogICAgICBycG1SQyByYzsKK0BAIC04MDUsOCArNzUzLDggQEAgcnBtUkMgcGFja2FnZVNvdXJjZXMocnBtU3BlYyBzcGVjLCBjaGFyICoqY29va2llKQogIAogICAgICAvKiBBZGQgc29tZSBjcnVmdCAqLwogICAgICBoZWFkZXJQdXRTdHJpbmcoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19SUE1WRVJTSU9OLCBWRVJTSU9OKTsKQEAgLTI5MSw5ICsyOTIsMTAgQEAKIC0gICAgaGVhZGVyUHV0VWludDMyKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfQlVJTERUSU1FLCBnZXRCdWlsZFRpbWUoKSwgMSk7CiArICAgIGhlYWRlclB1dFN0cmluZyhzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxESE9TVCwgYnVpbGRIb3N0KTsKICsgICAgaGVhZGVyUHV0VWludDMyKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfQlVJTERUSU1FLCAmYnVpbGRUaW1lLCAxKTsKKyAgICAgaGVhZGVyUHV0VWludDMyKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfU09VUkNFUEFDS0FHRSwgJm9uZSwgMSk7CiAgCiAgICAgIC8qIFhYWCB0aGlzIHNob3VsZCBiZSAlX3NycG1kaXIgKi8KLSAgICAgewljaGFyICpmbiA9IHJwbUdldFBhdGgoIiV7X3NyY3JwbWRpcn0vIiwgc3BlYy0+c291cmNlUnBtTmFtZSxOVUxMKTsKK0BAIC04MTQsNyArNzYyLDcgQEAgcnBtUkMgcGFja2FnZVNvdXJjZXMocnBtU3BlYyBzcGVjLCBjaGFyICoqY29va2llKQogIAljaGFyICpwa2djaGVjayA9IHJwbUV4cGFuZCgiJXs/X2J1aWxkX3BrZ2NoZWNrX3NycG19ICIsIGZuLCBOVUxMKTsKICAKICAJc3BlYy0+c291cmNlUGtnSWQgPSBOVUxMOwpAQCAtMzAzLDEwICszMDUsMTAgQEAKICAJLyogRG8gY2hlY2sgU1JQTSBwYWNrYWdlIGlmIGVuYWJsZWQgKi8KICAJaWYgKHJjID09IFJQTVJDX09LICYmIHBrZ2NoZWNrWzBdICE9ICcgJykgewogZGlmZiAtLWdpdCBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmggYi9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oCi1pbmRleCA4MzUxYTZhMzQuLjc5NzMzN2NhNyAxMDA2NDQKK2luZGV4IDQzOWI3ZDNiNS4uMDdlODMzOGFkIDEwMDY0NAogLS0tIGEvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAogKysrIGIvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAotQEAgLTQwOCwxOSArNDA4LDIzIEBAIHJwbVJDIHByb2Nlc3NTb3VyY2VGaWxlcyhycG1TcGVjIHNwZWMsIHJwbUJ1aWxkUGtnRmxhZ3MgcGtnRmxhZ3MpOworQEAgLTQyNywxOSArNDI3LDIzIEBAIHJwbVJDIHByb2Nlc3NTb3VyY2VGaWxlcyhycG1TcGVjIHNwZWMsIHJwbUJ1aWxkUGtnRmxhZ3MgcGtnRmxhZ3MpOwogICAqIEBwYXJhbSBzcGVjCQlzcGVjIGZpbGUgY29udHJvbCBzdHJ1Y3R1cmUKICAgKiBAcGFyYW0gY29va2llCWJ1aWxkIGlkZW50aWZpZXIgImNvb2tpZSIgb3IgTlVMTAogICAqIEBwYXJhbSBjaGVhdGluZwl3YXMgYnVpbGQgc2hvcnRjaXJjdWl0ZWQ/CkBAIC0zMzMsNSArMzM1LDUgQEAKICBSUE1fR05VQ19JTlRFUk5BTAogIGludCBhZGRMYW5nVGFnKHJwbVNwZWMgc3BlYywgSGVhZGVyIGgsIHJwbVRhZ1ZhbCB0YWcsCiAtLSAKLTIuMTEuMAorMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaAppbmRleCBjOTEwYTQ3Li40YWM1YzM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMS1Eby1ub3QtcmVxdWlyZS10aGF0LUVMRi1iaW5hcmllcy1hcmUtZXhlY3V0YWJsZS10by1iLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBkNjVkNmU4NzYwYWZiZDdmNzBiMjJhMWYzMjk3YTAzN2JjNDc1ZmVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MTQxZDUwZDdiM2QzYzIwOWEyMmM1M2RlZWRiNGNlZWYwMTQ0MDFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+CiBEYXRlOiBNb24sIDE1IE1heSAyMDE3IDEwOjIxOjA4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTNdIERvIG5vdCByZXF1aXJlIHRoYXQgRUxGIGJpbmFyaWVzIGFyZSBleGVjdXRhYmxlIHRvIGJlCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIERvIG5vdCByZXF1aXJlIHRoYXQgRUxGIGJpbmFyaWVzIGFyZSBleGVjdXRhYmxlIHRvIGJlCiAgaWRlbnRpZmlhYmxlCiAKIFRoZXJlIGlzIG5vdGhpbmcgdGhhdCByZXF1aXJlcywgZS5nLiwgYSBEU08gdG8gYmUgZXhlY3V0YWJsZSwgYnV0IGl0CkBAIC0xNCwxOSArMTQsMjAgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KKwogLS0tCiAgZmlsZWF0dHJzL2VsZi5hdHRyIHwgMSAtCiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2ZpbGVhdHRycy9lbGYuYXR0ciBiL2ZpbGVhdHRycy9lbGYuYXR0cgotaW5kZXggNTk1YjMzZTA5Li5iYWM1MjY0OWQgMTAwNjQ0CitpbmRleCA1ODA1ZGQwZWUuLjM1MTZmMzA5ZCAxMDA2NDQKIC0tLSBhL2ZpbGVhdHRycy9lbGYuYXR0cgogKysrIGIvZmlsZWF0dHJzL2VsZi5hdHRyCiBAQCAtMSw0ICsxLDMgQEAKICAlX19lbGZfcHJvdmlkZXMJCSV7X3JwbWNvbmZpZ2Rpcn0vZWxmZGVwcyAtLXByb3ZpZGVzICV7P19fZmlsdGVyX0dMSUJDX1BSSVZBVEU6LS1maWx0ZXItcHJpdmF0ZX0KICAlX19lbGZfcmVxdWlyZXMJCSV7X3JwbWNvbmZpZ2Rpcn0vZWxmZGVwcyAtLXJlcXVpcmVzICV7P19fZmlsdGVyX0dMSUJDX1BSSVZBVEU6LS1maWx0ZXItcHJpdmF0ZX0KLSAlX19lbGZfbWFnaWMJCV4oc2V0dWlkICk/KHNldGdpZCApPyhzdGlja3kgKT9FTEYgKDMyfDY0KS1iaXQuKiQKKyAlX19lbGZfbWFnaWMJCV4oc2V0dWlkLD8gKT8oc2V0Z2lkLD8gKT8oc3RpY2t5ICk/RUxGICgzMnw2NCktYml0LiokCiAtJV9fZWxmX2ZsYWdzCQlleGVvbmx5CiAtLSAKLTIuMTIuMAorMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTItVXNlLWNvbmRpdGlvbmFsLXRvLWFjY2Vzcy1fZG9jZGlyLWluLW1hY3Jvcy5pbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTItVXNlLWNvbmRpdGlvbmFsLXRvLWFjY2Vzcy1fZG9jZGlyLWluLW1hY3Jvcy5pbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk2ZGE5MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDc3ODA4ZGI0MDM2ZGM0YTAxMmM0N2FjYTM2MjU1NTQ5ZWQ3NjRhNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KLURhdGU6IFR1ZSwgMTYgTWF5IDIwMTcgMTA6NTg6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xM10gVXNlIGNvbmRpdGlvbmFsIHRvIGFjY2VzcyAle19kb2NkaXJ9IGluIG1hY3Jvcy5pbgotCi1UaGlzIGF2b2lkcyB0aGUgZm9sbG93aW5nIHdhcm5pbmc6Ci0KLXdhcm5pbmc6IElnbm9yaW5nIGludmFsaWQgcmVnZXggJXtfZG9jZGlyfQotCi13aGVuIHJ1bmluZyBgcnBtZGVwcyAtUiA8ZmlsZT5gLCBzaW5jZSAle19kb2NkaXJ9IGlzIG9ubHkgZGVmaW5lZCB3aGVuCi1wYXJzaW5nIGEgc3BlYyBmaWxlIChpbiBwYXJzZVNwZWMoKSkuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMTZdCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KLS0tLQotIG1hY3Jvcy5pbiB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tYWNyb3MuaW4gYi9tYWNyb3MuaW4KLWluZGV4IDg0YWUyNTI3NS4uY2NhNjdhNTAwIDEwMDY0NAotLS0tIGEvbWFjcm9zLmluCi0rKysgYi9tYWNyb3MuaW4KLUBAIC0yMDAsOCArMjAwLDggQEAgcGFja2FnZSBvciB3aGVuIGRlYnVnZ2luZyB0aGlzIHBhY2thZ2UuXAotICMgVGhlaXIgcHVycG91c2UgaXMgdG8gc2V0IHVwIGdsb2JhbCBmaWx0ZXJpbmcgZm9yIGFsbCBwYWNrYWdlcy4gSWYgeW91IG5lZWQKLSAjIHRvIHNldCB1cCBzcGVjaWZpYyBmaWx0ZXJpbmcgZm9yIHlvdXIgcGFja2FnZSB1c2UgJV9fcmVxdWlyZXNfZXhjbHVkZV9mcm9tCi0gIyBhbmQgJV9fcHJvdmlkZXNfZXhjbHVkZV9mcm9tIGluc3RlYWQuCi0tJV9fZ2xvYmFsX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbQkJJXtfZG9jZGlyfQotLSVfX2dsb2JhbF9wcm92aWRlc19leGNsdWRlX2Zyb20JCSV7X2RvY2Rpcn0KLSslX19nbG9iYWxfcmVxdWlyZXNfZXhjbHVkZV9mcm9tCQklez9fZG9jZGlyOiV7X2RvY2Rpcn19Ci0rJV9fZ2xvYmFsX3Byb3ZpZGVzX2V4Y2x1ZGVfZnJvbQkJJXs/X2RvY2Rpcjole19kb2NkaXJ9fQotIAotICMJVGhlIHBhdGggdG8gdGhlIGd6aXAgZXhlY3V0YWJsZSAobGVnYWN5LCB1c2UgJXtfX2d6aXB9IGluc3RlYWQpLgotICVfZ3ppcGJpbgkJJXtfX2d6aXB9Ci0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEzLUFkZC1hLW5ldy1vcHRpb24tYWxsZGVwcy10by1ycG1kZXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhZjYyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEzLUFkZC1hLW5ldy1vcHRpb24tYWxsZGVwcy10by1ycG1kZXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLUZyb20gM2JmMjBhNjExNmFlM2UxYTVhM2E2OTA3YmVlN2U4ODFiMTdlZmIyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgotRGF0ZTogTW9uLCAxNSBNYXkgMjAxNyAxMToyMzoyNiArMDIwMAotU3ViamVjdDogW1BBVENIIDEzLzEzXSBBZGQgYSBuZXcgb3B0aW9uIC0tYWxsZGVwcyB0byBycG1kZXBzCi0KLVRoaXMgd2lsbCBzZW5kIHRoZSBvdXRwdXQgZnJvbSBycG1mY1ByaW50KCkgdG8gc3Rkb3V0LiBUaGlzIGlzIGFuCi1hbHRlcm5hdGl2ZSB0byB1c2luZyB0aGUgLS1ycG1mY2RlYnVnIG9wdGlvbiwgd2hpY2ggd2lsbCBzZW5kIHRoZSBzYW1lCi1vdXRwdXQgdG8gc3RkZXJyLiBUaGUgdHdvIG9wdGlvbnMgaGF2ZSB0b3RhbGx5IGRpZmZlcmVudCB1c2UgY2FzZXMKLXRob3VnaC4gV2hpbGUgLS1hbGxkZXBzIGlzIHVzZWQgd2hlbiB0aGUgb3V0cHV0IGZyb20gcnBtZmNQcmludCgpIGlzCi13aGF0IGlzIHdhbnRlZCwgLS1ycG1mY2RlYnVnIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIG90aGVyCi1vdXRwdXQgb3B0aW9ucywgZS5nLiwgLS1yZXF1aXJlcywgd2l0aG91dCBhZmZlY3RpbmcgdGhlaXIgb3V0cHV0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzIyMF0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgotLS0tCi0gYnVpbGQvcnBtZmMuYyAgIHwgMjcgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gYnVpbGQvcnBtZmMuaCAgIHwgIDEgLQotIHRvb2xzL3JwbWRlcHMuYyB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2J1aWxkL3JwbWZjLmMgYi9idWlsZC9ycG1mYy5jCi1pbmRleCBjOGUyZjg3NmEuLjQ0ZjFjZGM5YSAxMDA2NDQKLS0tLSBhL2J1aWxkL3JwbWZjLmMKLSsrKyBiL2J1aWxkL3JwbWZjLmMKLUBAIC03MzIsNyArNzMyLDYgQEAgc3RhdGljIHJwbV9jb2xvcl90IHJwbWZjQ29sb3IoY29uc3QgY2hhciAqIGZtc3RyKQotIAotIHZvaWQgcnBtZmNQcmludChjb25zdCBjaGFyICogbXNnLCBycG1mYyBmYywgRklMRSAqIGZwKQotIHsKLS0gICAgcnBtX2NvbG9yX3QgZmNvbG9yOwotICAgICBpbnQgbmR4OwotICAgICBpbnQgZHg7Ci0gICAgIGludCBmeDsKLUBAIC03NDQsMjEgKzc0MywyMyBAQCB2b2lkIHJwbWZjUHJpbnQoY29uc3QgY2hhciAqIG1zZywgcnBtZmMgZmMsIEZJTEUgKiBmcCkKLSAKLSAgICAgaWYgKGZjKQotICAgICBmb3IgKGZ4ID0gMDsgZnggPCBmYy0+bmZpbGVzOyBmeCsrKSB7Ci0tCXJwbXNpZCBjeCA9IGZjLT5mY2RpY3R4W2Z4XSArIDE7IC8qIGlkJ3MgYXJlIG9uZSBvZmYgKi8KLS0JZmNvbG9yID0gZmMtPmZjb2xvcltmeF07Ci0tCUFSR1ZfdCBmYXR0cnMgPSBmYy0+ZmF0dHJzW2Z4XTsKLS0KLSAJZnByaW50ZihmcCwgIiUzZCAlcyIsIGZ4LCBmYy0+Zm5bZnhdKTsKLS0JaWYgKGZjb2xvciAhPSBSUE1GQ19CTEFDSykKLSsJaWYgKF9ycG1mY19kZWJ1ZykgewotKwkgICAgcnBtc2lkIGN4ID0gZmMtPmZjZGljdHhbZnhdICsgMTsgLyogaWQncyBhcmUgb25lIG9mZiAqLwotKwkgICAgcnBtX2NvbG9yX3QgZmNvbG9yID0gZmMtPmZjb2xvcltmeF07Ci0rCSAgICBBUkdWX3QgZmF0dHJzID0gZmMtPmZhdHRyc1tmeF07Ci0rCi0rCSAgICBpZiAoZmNvbG9yICE9IFJQTUZDX0JMQUNLKQotIAkJZnByaW50ZihmcCwgIlx0MHgleCIsIGZjLT5mY29sb3JbZnhdKTsKLS0JZWxzZQotKwkgICAgZWxzZQotIAkJZnByaW50ZihmcCwgIlx0JXMiLCBycG1zdHJQb29sU3RyKGZjLT5jZGljdCwgY3gpKTsKLS0JaWYgKGZhdHRycykgewotLQkgICAgY2hhciAqYXR0cnMgPSBhcmd2Sm9pbihmYXR0cnMsICIsIik7Ci0tCSAgICBmcHJpbnRmKGZwLCAiIFslc10iLCBhdHRycyk7Ci0tCSAgICBmcmVlKGF0dHJzKTsKLS0JfSBlbHNlIHsKLS0JICAgIGZwcmludGYoZnAsICIgW25vbmVdIik7Ci0rCSAgICBpZiAoZmF0dHJzKSB7Ci0rCQljaGFyICphdHRycyA9IGFyZ3ZKb2luKGZhdHRycywgIiwiKTsKLSsJCWZwcmludGYoZnAsICIgWyVzXSIsIGF0dHJzKTsKLSsJCWZyZWUoYXR0cnMpOwotKwkgICAgfSBlbHNlIHsKLSsJCWZwcmludGYoZnAsICIgW25vbmVdIik7Ci0rCSAgICB9Ci0gCX0KLSAJZnByaW50ZihmcCwgIlxuIik7Ci0gCi1kaWZmIC0tZ2l0IGEvYnVpbGQvcnBtZmMuaCBiL2J1aWxkL3JwbWZjLmgKLWluZGV4IGRhZThlYTViMS4uM2Q4N2IzMWNmIDEwMDY0NAotLS0tIGEvYnVpbGQvcnBtZmMuaAotKysrIGIvYnVpbGQvcnBtZmMuaAotQEAgLTQ1LDcgKzQ1LDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgcnBtZmNUb2tlbnNfcyAqIHJwbWZjVG9rZW47Ci0gCi0gLyoqIFxpbmdyb3VwIHJwbWZjCi0gICogUHJpbnQgcmVzdWx0cyBvZiBmaWxlIGNsYXNzaWZpY2F0aW9uLgotLSAqIEB0b2RvIFJlbW92ZSBkZWJ1Z2dpbmcgcm91dGluZS4KLSAgKiBAcGFyYW0gbXNnCQltZXNzYWdlIHByZWZpeCAoTlVMTCBmb3Igbm9uZSkKLSAgKiBAcGFyYW0gZmMJCWZpbGUgY2xhc3NpZmllcgotICAqIEBwYXJhbSBmcAkJb3V0cHV0IGZpbGUgaGFuZGxlIChOVUxMIGZvciBzdGRlcnIpCi1kaWZmIC0tZ2l0IGEvdG9vbHMvcnBtZGVwcy5jIGIvdG9vbHMvcnBtZGVwcy5jCi1pbmRleCBhNDE0YjYzNDMuLmYyNjBhMzhjNCAxMDA2NDQKLS0tLSBhL3Rvb2xzL3JwbWRlcHMuYwotKysrIGIvdG9vbHMvcnBtZGVwcy5jCi1AQCAtMjMsNiArMjMsOCBAQCBzdGF0aWMgaW50IHByaW50X2NvbmZsaWN0czsKLSAKLSBzdGF0aWMgaW50IHByaW50X29ic29sZXRlczsKLSAKLStzdGF0aWMgaW50IHByaW50X2FsbGRlcHM7Ci0rCi0gc3RhdGljIHZvaWQgcnBtZHNQcmludChjb25zdCBjaGFyICogbXNnLCBycG1kcyBkcywgRklMRSAqIGZwKQotIHsKLSAgICAgaWYgKGZwID09IE5VTEwpIGZwID0gc3RkZXJyOwotQEAgLTU3LDYgKzU5LDggQEAgc3RhdGljIHN0cnVjdCBwb3B0T3B0aW9uIG9wdGlvbnNUYWJsZVtdID0gewotICAgICAgICAgTlVMTCwgTlVMTCB9LAotICB7ICJvYnNvbGV0ZXMiLCAnXDAnLCBQT1BUX0FSR19WQUwsICZwcmludF9vYnNvbGV0ZXMsIC0xLAotICAgICAgICAgTlVMTCwgTlVMTCB9LAotKyB7ICJhbGxkZXBzIiwgJ1wwJywgUE9QVF9BUkdfVkFMLCAmcHJpbnRfYWxsZGVwcywgLTEsCi0rICAgICAgICBOVUxMLCBOVUxMIH0sCi0gCi0gICAgUE9QVF9BVVRPQUxJQVMKLSAgICBQT1BUX0FVVE9IRUxQCi1AQCAtMTAwLDI1ICsxMDQsMjcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICBpZiAocnBtZmNDbGFzc2lmeShmYywgYXYsIE5VTEwpIHx8IHJwbWZjQXBwbHkoZmMpKQotIAlnb3RvIGV4aXQ7Ci0gCi0tICAgIGlmIChfcnBtZmNfZGVidWcpCi0tCXJwbWZjUHJpbnQoYnVmLCBmYywgTlVMTCk7Ci0tCi0tICAgIGlmIChwcmludF9wcm92aWRlcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY1Byb3ZpZGVzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X3JlcXVpcmVzKQotLQlycG1kc1ByaW50KE5VTEwsIHJwbWZjUmVxdWlyZXMoZmMpLCBzdGRvdXQpOwotLSAgICBpZiAocHJpbnRfcmVjb21tZW5kcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY1JlY29tbWVuZHMoZmMpLCBzdGRvdXQpOwotLSAgICBpZiAocHJpbnRfc3VnZ2VzdHMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNTdWdnZXN0cyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9zdXBwbGVtZW50cykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY1N1cHBsZW1lbnRzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X2VuaGFuY2VzKQotLQlycG1kc1ByaW50KE5VTEwsIHJwbWZjRW5oYW5jZXMoZmMpLCBzdGRvdXQpOwotLSAgICBpZiAocHJpbnRfY29uZmxpY3RzKQotLQlycG1kc1ByaW50KE5VTEwsIHJwbWZjQ29uZmxpY3RzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X29ic29sZXRlcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY09ic29sZXRlcyhmYyksIHN0ZG91dCk7Ci0rICAgIGlmIChwcmludF9hbGxkZXBzIHx8IF9ycG1mY19kZWJ1ZykKLSsJcnBtZmNQcmludChOVUxMLCBmYywgcHJpbnRfYWxsZGVwcyA/IHN0ZG91dCA6IE5VTEwpOwotKwotKyAgICBpZiAoIXByaW50X2FsbGRlcHMpIHsKLSsJaWYgKHByaW50X3Byb3ZpZGVzKQotKwkgICAgcnBtZHNQcmludChOVUxMLCBycG1mY1Byb3ZpZGVzKGZjKSwgc3Rkb3V0KTsKLSsJaWYgKHByaW50X3JlcXVpcmVzKQotKwkgICAgcnBtZHNQcmludChOVUxMLCBycG1mY1JlcXVpcmVzKGZjKSwgc3Rkb3V0KTsKLSsJaWYgKHByaW50X3JlY29tbWVuZHMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjUmVjb21tZW5kcyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9zdWdnZXN0cykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNTdWdnZXN0cyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9zdXBwbGVtZW50cykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNTdXBwbGVtZW50cyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9lbmhhbmNlcykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNFbmhhbmNlcyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9jb25mbGljdHMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjQ29uZmxpY3RzKGZjKSwgc3Rkb3V0KTsKLSsJaWYgKHByaW50X29ic29sZXRlcykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNPYnNvbGV0ZXMoZmMpLCBzdGRvdXQpOwotKyAgICB9Ci0gCi0gICAgIGVjID0gMDsKLSAKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMTI5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4xLmJiCkBAIC0wLDAgKzEsMTM4IEBACitTVU1NQVJZID0gIlRoZSBSUE0gcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSIKK0RFU0NSSVBUSU9OID0gIlRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIChSUE0pIGlzIGEgcG93ZXJmdWwgY29tbWFuZCBsaW5lIGRyaXZlbiBcCitwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIGNhcGFibGUgb2YgaW5zdGFsbGluZywgdW5pbnN0YWxsaW5nLCBcCit2ZXJpZnlpbmcsIHF1ZXJ5aW5nLCBhbmQgdXBkYXRpbmcgc29mdHdhcmUgcGFja2FnZXMuIEVhY2ggc29mdHdhcmUgXAorcGFja2FnZSBjb25zaXN0cyBvZiBhbiBhcmNoaXZlIG9mIGZpbGVzIGFsb25nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgXAordGhlIHBhY2thZ2UgbGlrZSBpdHMgdmVyc2lvbiwgYSBkZXNjcmlwdGlvbiwgZXRjLiIKKworU1VNTUFSWV8ke1BOfS1kZXYgPSAiRGV2ZWxvcG1lbnQgZmlsZXMgZm9yIG1hbmlwdWxhdGluZyBSUE0gcGFja2FnZXMiCitERVNDUklQVElPTl8ke1BOfS1kZXYgPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBSUE0gQyBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMuIFRoZXNlIFwKK2RldmVsb3BtZW50IGZpbGVzIHdpbGwgc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2Ygd3JpdGluZyBwcm9ncmFtcyB0aGF0IFwKK21hbmlwdWxhdGUgUlBNIHBhY2thZ2VzIGFuZCBkYXRhYmFzZXMuIFRoZXNlIGZpbGVzIGFyZSBpbnRlbmRlZCB0byBcCitzaW1wbGlmeSB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBncmFwaGljYWwgcGFja2FnZSBtYW5hZ2VycyBvciBhbnkgXAorb3RoZXIgdG9vbHMgdGhhdCBuZWVkIGFuIGludGltYXRlIGtub3dsZWRnZSBvZiBSUE0gcGFja2FnZXMgaW4gb3JkZXIgXAordG8gZnVuY3Rpb24uIgorCitTVU1NQVJZX3B5dGhvbjMtcnBtID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbnVwdWxhdGUgUlBNIHBhY2thZ2VzIgorREVTQ1JJUFRJT05fcHl0aG9uMy1ycG0gPSAiVGhlIHB5dGhvbjMtcnBtIHBhY2thZ2UgY29udGFpbnMgYSBtb2R1bGUgdGhhdCBwZXJtaXRzIGFwcGxpY2F0aW9ucyBcCit3cml0dGVuIGluIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gdXNlIHRoZSBpbnRlcmZhY2UgXAorc3VwcGxpZWQgYnkgdGhlIFJQTSBQYWNrYWdlIE1hbmFnZXIgbGlicmFyaWVzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ycG0ub3JnIgorCisjIGxpYnJhcmllcyBhcmUgYWxzbyBMR1BMIC0gaG93IHRvIGV4cHJlc3MgdGhpcz8KK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMwYmYwMTdjMGZkMTkyMGU2MTU4YTMzM2FjYWJmZDRhIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtO2JyYW5jaD1ycG0tNC4xNC54IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWFkZC1hbi11bnNhdGlzZmlhYmxlLWRlcGVuZGVuY3ktd2hlbi1idWlsZGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZWFkLWNvbmZpZy1maWxlcy1mcm9tLUhPTUUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWNyb3NzLWluc3RhbGxpbmctZXhlY3V0ZS1wYWNrYWdlLXNjcmlwdGxldHMtd2l0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1zdXBwb3J0LWZvci1wcmVmaXhpbmctZXRjLWZyb20tUlBNX0VUQ0NPTkZJR0RJUi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1jb2xvci1zZXR0aW5nLWZvci1taXBzNjRfbjMyLWJpbmFyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwbGl0LWJpbmFyeS1wYWNrYWdlLWJ1aWxkaW5nLWludG8tYS1zZXBhcmF0ZS1mdW5jdGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SdW4tYmluYXJ5LXBhY2thZ2UtY3JlYXRpb24tdmlhLXRocmVhZC1wb29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXJwbXN0cnBvb2wuYy1tYWtlLW9wZXJhdGlvbnMtb3Zlci1zdHJpbmctcG9vbHMtdGhyZWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1kaXNhYmxlLWF1dG8tcmVxcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1kYnVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQRSA9ICIxIgorU1JDUkVWID0gImJmZWUxNDEwYWY1MWMxY2M5NzI0NzkxZmI4ZDk4NTI2MGE2MjEwMmIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAibnNzIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGJ6aXAyIGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zbmF0aXZlCitleHBvcnQgUFlUSE9OX0FCSQorCisjIE9FLWNvcmUgcGF0Y2hlcyBhdXRvcmVjb25mIHRvIGFkZGl0aW9uYWxseSBydW4gZ251LWNvbmZpZ2l6ZSwgd2hpY2ggZmFpbHMgd2l0aCB0aGlzIHJlY2lwZQorRVhUUkFfQVVUT1JFQ09ORl9hcHBlbmQgPSAiIC0tZXhjbHVkZT1nbnUtY29uZmlnaXplIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLXdpdGhvdXQtbHVhIC0tZW5hYmxlLXB5dGhvbiIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtbmxzIgorCisjIC0tc3lzY29uZmRpciBwcmV2ZW50cyBycG0gZnJvbSBhdHRlbXB0aW5nIHRvIGFjY2VzcyBtYWNoaW5lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaW4gc3lzcm9vdC9ldGM7IHdlIG5lZWQgdG8gaGF2ZSBpdCBpbiByb290ZnMKKyMKKyMgLS1sb2NhbHN0YXRlZGlyIHByZXZlbnRzIHJwbSBmcm9tIHdyaXRpbmcgaXRzIGRhdGFiYXNlIHRvIG5hdGl2ZSBzeXNyb290IHdoZW4gYnVpbGRpbmcgaW1hZ2VzCisjCisjIERpc2FibGUgZGJ1cyBmb3IgbmF0aXZlLCBzbyB0aGF0IHJwbSBkb2Vzbid0IGF0dGVtcHQgdG8gaW5oaWJpdCBzaHV0ZG93biB2aWEgc2Vzc2lvbiBkYnVzIGV2ZW4gd2hlbiBwbHVnaW5zIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyMgQWxzbyBkaXNhYmxlIHBsdWdpbnMgYnkgZGVmYXVsdCBmb3IgbmF0aXZlLgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tc3lzY29uZmRpcj0vZXRjIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIC0td2l0aG91dC1kYnVzIC0tZGlzYWJsZS1wbHVnaW5zIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2ltYWV2bV0gPSAiLS13aXRoLWltYWV2bSwsaW1hLWV2bS11dGlscyIKKworIyBEaXJlY3QgcnBtLW5hdGl2ZSB0byByZWFkIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCisjIGxpYm1hZ2ljIGFsc28gaGFzIHN5c3Jvb3QgcGF0aCBjb250YW1pbmF0aW9uLCBzbyBvdmVycmlkZSBpdAorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICB0b29scz0iXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0gXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0yYXJjaGl2ZSBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbTJjcGlvIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtYnVpbGQgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1kYiBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWdyYXBoIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBta2V5cyBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbXNpZ24gXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1zcGVjIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vcnBtL3JwbWRlcHMgXAorICAgICAgICAiCisKKyAgICAgICAgZm9yIHRvb2wgaW4gJHRvb2xzOyBkbworICAgICAgICAgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0kdG9vbCBcCisgICAgICAgICAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0VUQ0NPTkZJR0RJUj0ke1NUQUdJTkdfRElSX05BVElWRX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgTUFHSUM9JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtkYXRhZGlyX25hdGl2ZX0vbWlzYy9tYWdpYy5tZ2MgXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCisgICAgICAgIGRvbmUKK30KKworIyBScG0ncyBtYWtlIGluc3RhbGwgY3JlYXRlcyB2YXIvdG1wIHdoaWNoIGNsYXNoZXMgd2l0aCBiYXNlLWZpbGVzIHBhY2thZ2luZworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIHJtIC1yZiAke0R9L3ZhcgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgICR7RH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKKworCXNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS9lbnYgJHtQWVRIT05fUE59fCcgXAorCSAgICAke0R9JHtsaWJkaXJ9L3JwbS9weXRob25kaXN0ZGVwcy5weSBcCisJICAgICR7RH0ke2xpYmRpcn0vcnBtL3B5dGhvbi1tYWNyby1oZWxwZXIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ycG0tcGx1Z2lucy8qLnNvIFwKKyAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gInB5dGhvbjMtcnBtIgorUFJPVklERVMgKz0gInB5dGhvbjMtcnBtIgorRklMRVNfcHl0aG9uMy1ycG0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcnBtLyoiCisKKyMgcnBtIDUueCB3YXMgcGFja2FnaW5nIHRoZSBycG0gYnVpbGQgdG9vbHMgc2VwYXJhdGVseQorUlBST1ZJREVTXyR7UE59ICs9ICJycG0tYnVpbGQiCisKK1JERVBFTkRTXyR7UE59ID0gImJhc2ggcGVybCBweXRob24zLWNvcmUiCisKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicnBtX3BhY2thZ2VfcHJlcHJvY2VzcyIKKworIyBEbyBub3Qgc3BlY2lmeSBhIHN5c3Jvb3Qgd2hlbiBjb21waWxpbmcgb24gYSB0YXJnZXQuCitycG1fcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290W14gXSo6OmcnIFwKKwkgICAgJHtQS0dEfS8ke2xpYmRpcn0vcnBtL21hY3JvcworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NjYzMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBSUE0gcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSIKLURFU0NSSVBUSU9OID0gIlRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIChSUE0pIGlzIGEgcG93ZXJmdWwgY29tbWFuZCBsaW5lIGRyaXZlbiBcCi1wYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIGNhcGFibGUgb2YgaW5zdGFsbGluZywgdW5pbnN0YWxsaW5nLCBcCi12ZXJpZnlpbmcsIHF1ZXJ5aW5nLCBhbmQgdXBkYXRpbmcgc29mdHdhcmUgcGFja2FnZXMuIEVhY2ggc29mdHdhcmUgXAotcGFja2FnZSBjb25zaXN0cyBvZiBhbiBhcmNoaXZlIG9mIGZpbGVzIGFsb25nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgXAotdGhlIHBhY2thZ2UgbGlrZSBpdHMgdmVyc2lvbiwgYSBkZXNjcmlwdGlvbiwgZXRjLiIKLQotU1VNTUFSWV8ke1BOfS1kZXYgPSAiRGV2ZWxvcG1lbnQgZmlsZXMgZm9yIG1hbmlwdWxhdGluZyBSUE0gcGFja2FnZXMiCi1ERVNDUklQVElPTl8ke1BOfS1kZXYgPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBSUE0gQyBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMuIFRoZXNlIFwKLWRldmVsb3BtZW50IGZpbGVzIHdpbGwgc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2Ygd3JpdGluZyBwcm9ncmFtcyB0aGF0IFwKLW1hbmlwdWxhdGUgUlBNIHBhY2thZ2VzIGFuZCBkYXRhYmFzZXMuIFRoZXNlIGZpbGVzIGFyZSBpbnRlbmRlZCB0byBcCi1zaW1wbGlmeSB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBncmFwaGljYWwgcGFja2FnZSBtYW5hZ2VycyBvciBhbnkgXAotb3RoZXIgdG9vbHMgdGhhdCBuZWVkIGFuIGludGltYXRlIGtub3dsZWRnZSBvZiBSUE0gcGFja2FnZXMgaW4gb3JkZXIgXAotdG8gZnVuY3Rpb24uIgotCi1TVU1NQVJZX3B5dGhvbjMtcnBtID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbnVwdWxhdGUgUlBNIHBhY2thZ2VzIgotREVTQ1JJUFRJT05fcHl0aG9uMy1ycG0gPSAiVGhlIHB5dGhvbjMtcnBtIHBhY2thZ2UgY29udGFpbnMgYSBtb2R1bGUgdGhhdCBwZXJtaXRzIGFwcGxpY2F0aW9ucyBcCi13cml0dGVuIGluIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gdXNlIHRoZSBpbnRlcmZhY2UgXAotc3VwcGxpZWQgYnkgdGhlIFJQTSBQYWNrYWdlIE1hbmFnZXIgbGlicmFyaWVzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ycG0ub3JnIgotCi0jIGxpYnJhcmllcyBhcmUgYWxzbyBMR1BMIC0gaG93IHRvIGV4cHJlc3MgdGhpcz8KLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY1MjU5MTUxZDI2ZmYxOGU3ODAyMzQ1MGE1YWM4ZDk2IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWFkZC1hbi11bnNhdGlzZmlhYmxlLWRlcGVuZGVuY3ktd2hlbi1idWlsZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZWFkLWNvbmZpZy1maWxlcy1mcm9tLUhPTUUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWNyb3NzLWluc3RhbGxpbmctZXhlY3V0ZS1wYWNrYWdlLXNjcmlwdGxldHMtd2l0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1zdXBwb3J0LWZvci1wcmVmaXhpbmctZXRjLWZyb20tUlBNX0VUQ0NPTkZJR0RJUi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLW5pY2UtdmFsdWUtY2Fubm90LWJlLXJlc2V0LWlzc3VlLWEtbm90aWNlLWluc3RlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtY29sb3Itc2V0dGluZy1mb3ItbWlwczY0X24zMi1iaW5hcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1QWVRIT05fQUJJLXdoZW4tc2VhcmNoaW5nLWZvci1weXRob24tbGlicmFyaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwbGl0LWJpbmFyeS1wYWNrYWdlLWJ1aWxkaW5nLWludG8tYS1zZXBhcmF0ZS1mdW5jdGkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1SdW4tYmluYXJ5LXBhY2thZ2UtY3JlYXRpb24tdmlhLXRocmVhZC1wb29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXJwbXN0cnBvb2wuYy1tYWtlLW9wZXJhdGlvbnMtb3Zlci1zdHJpbmctcG9vbHMtdGhyZWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1kaXNhYmxlLWF1dG8tcmVxcy5wYXRjaCBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotCi1QViA9ICI0LjEzLjkwK2dpdCR7U1JDUFZ9IgotUEUgPSAiMSIKLVNSQ1JFViA9ICJhOGU1MWIzYmIwNWM2YWNiMWQ5YjJlM2QzNGY4NTlkZGRhMTY3N2JlIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTID0gIm5zcyBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQotZXhwb3J0IFBZVEhPTl9BQkkKLQotIyBPRS1jb3JlIHBhdGNoZXMgYXV0b3JlY29uZiB0byBhZGRpdGlvbmFsbHkgcnVuIGdudS1jb25maWdpemUsIHdoaWNoIGZhaWxzIHdpdGggdGhpcyByZWNpcGUKLUVYVFJBX0FVVE9SRUNPTkZfYXBwZW5kID0gIiAtLWV4Y2x1ZGU9Z251LWNvbmZpZ2l6ZSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS13aXRob3V0LWx1YSAtLWVuYWJsZS1weXRob24iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5scyIKLQotIyAtLXN5c2NvbmZkaXIgcHJldmVudHMgcnBtIGZyb20gYXR0ZW1wdGluZyB0byBhY2Nlc3MgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHN5c3Jvb3QvZXRjOyB3ZSBuZWVkIHRvIGhhdmUgaXQgaW4gcm9vdGZzCi0jCi0jIC0tbG9jYWxzdGF0ZWRpciBwcmV2ZW50cyBycG0gZnJvbSB3cml0aW5nIGl0cyBkYXRhYmFzZSB0byBuYXRpdmUgc3lzcm9vdCB3aGVuIGJ1aWxkaW5nIGltYWdlcwotIwotIyBBbHNvIGRpc2FibGUgcGx1Z2lucywgc28gdGhhdCBycG0gZG9lc24ndCBhdHRlbXB0IHRvIGluaGliaXQgc2h1dGRvd24gdmlhIHNlc3Npb24gZGJ1cwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tc3lzY29uZmRpcj0vZXRjIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIC0tZGlzYWJsZS1wbHVnaW5zIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2ltYWV2bV0gPSAiLS13aXRoLWltYWV2bSwsaW1hLWV2bS11dGlscyIKLQotIyBEaXJlY3QgcnBtLW5hdGl2ZSB0byByZWFkIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCi0jIGxpYm1hZ2ljIGFsc28gaGFzIHN5c3Jvb3QgcGF0aCBjb250YW1pbmF0aW9uLCBzbyBvdmVycmlkZSBpdAotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICB0b29scz0iXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0gXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0yYXJjaGl2ZSBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbTJjcGlvIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtYnVpbGQgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1kYiBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWdyYXBoIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBta2V5cyBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbXNpZ24gXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1zcGVjIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vcnBtL3JwbWRlcHMgXAotICAgICAgICAiCi0KLSAgICAgICAgZm9yIHRvb2wgaW4gJHRvb2xzOyBkbwotICAgICAgICAgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0kdG9vbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0gXAotICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0VUQ0NPTkZJR0RJUj0ke1NUQUdJTkdfRElSX05BVElWRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgTUFHSUM9JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtkYXRhZGlyX25hdGl2ZX0vbWlzYy9tYWdpYy5tZ2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCi0gICAgICAgIGRvbmUKLX0KLQotIyBScG0ncyBtYWtlIGluc3RhbGwgY3JlYXRlcyB2YXIvdG1wIHdoaWNoIGNsYXNoZXMgd2l0aCBiYXNlLWZpbGVzIHBhY2thZ2luZwotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIHJtIC1yZiAke0R9L3ZhcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgICR7RH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKLQotCXNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS9lbnYgJHtQWVRIT05fUE59fCcgXAotCSAgICAke0R9JHtsaWJkaXJ9L3JwbS9weXRob25kaXN0ZGVwcy5weQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3JwbS1wbHVnaW5zLyouc28gXAotICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9ycG0tcGx1Z2lucy8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAicHl0aG9uMy1ycG0iCi1QUk9WSURFUyArPSAicHl0aG9uMy1ycG0iCi1GSUxFU19weXRob24zLXJwbSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ycG0vKiIKLQotIyBycG0gNS54IHdhcyBwYWNrYWdpbmcgdGhlIHJwbSBidWlsZCB0b29scyBzZXBhcmF0ZWx5Ci1SUFJPVklERVNfJHtQTn0gKz0gInJwbS1idWlsZCIKLQotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBwZXJsIHB5dGhvbjMtY29yZSIKLQotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJycG1fcGFja2FnZV9wcmVwcm9jZXNzIgotCi0jIERvIG5vdCBzcGVjaWZ5IGEgc3lzcm9vdCB3aGVuIGNvbXBpbGluZyBvbiBhIHRhcmdldC4KLXJwbV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCXNlZCAtaSAtZSAnczotLXN5c3Jvb3RbXiBdKjo6ZycgXAotCSAgICAke1BLR0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAzMTk4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotcmVxdWlyZSByc3luYy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL21ha2VmaWxlLW5vLXJlYnVpbGQucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZjc1OGQ3ZTAwMGMwZjdmN2QzNzkyNjEwZmFkNzBjYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlY2ZhNjJhN2ZhM2M0YzE4YjllY2NkOGMxNmVhZGRlZTRiZDMwOGE3NmVhNTBiNWMwMmE1ODQwZjA5YzBhMWMyIgotCi0jIEdQTHYyKyAoPDwgMy4wLjApLCBHUEx2MysgKD49IDMuMC4wKQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImFjbCBhdHRyIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wtc3VwcG9ydCwtLWRpc2FibGUtYWNsLXN1cHBvcnQsYWNsLCIKLVBBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS1lbmFibGUteGF0dHItc3VwcG9ydCwtLWRpc2FibGUteGF0dHItc3VwcG9ydCxhdHRyLCIKLQotIyBCeSBkZWZhdWx0LCBpZiBjcm9zc2NvbXBpbGluZywgcnN5bmMgZGlzYWJsZXMgYSBudW1iZXIgb2YKLSMgY2FwYWJpbGl0aWVzLCBoYXJkbGlua2luZyBzeW1saW5rcyBhbmQgc3BlY2lhbCBmaWxlcyAoaS5lLiBkZXZpY2VzKQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInJzeW5jX2N2X2Nhbl9oYXJkbGlua19zcGVjaWFsPXllcyByc3luY19jdl9jYW5faGFyZGxpbmtfc3ltbGluaz15ZXMiCi0KLSMgcnN5bmMgMy4wIHVzZXMgY29uZmlndXJlLnNoIGluc3RlYWQgb2YgY29uZmlndXJlLCBhbmQKLSMgbWFrZWZpbGUgY2hlY2tzIHRoZSBleGlzdGVuY2Ugb2YgY29uZmlndXJlLnNoCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7Ci0JY3AgLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGEwMjU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYgpAQCAtMCwwICsxLDMyIEBACityZXF1aXJlIHJzeW5jLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vbWFrZWZpbGUtbm8tcmVidWlsZC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjE1ODFhNTg4ZmRlOWQ4OWY2YmM2MjAxZTgxMjlhZmFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1Y2M1NTRlZmVjNWZkYWFkNzBkZTkyMWNkNWE1ZWViNmMyOWE5NTUyNGM3MTVmM2JiZjg0OTIzNWIwODAwYzAiCisKKyMgR1BMdjIrICg8PCAzLjAuMCksIEdQTHYzKyAoPj0gMy4wLjApCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitQQUNLQUdFQ09ORklHID8/PSAiYWNsIGF0dHIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbC1zdXBwb3J0LC0tZGlzYWJsZS1hY2wtc3VwcG9ydCxhY2wsIgorUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLWVuYWJsZS14YXR0ci1zdXBwb3J0LC0tZGlzYWJsZS14YXR0ci1zdXBwb3J0LGF0dHIsIgorCisjIEJ5IGRlZmF1bHQsIGlmIGNyb3NzY29tcGlsaW5nLCByc3luYyBkaXNhYmxlcyBhIG51bWJlciBvZgorIyBjYXBhYmlsaXRpZXMsIGhhcmRsaW5raW5nIHN5bWxpbmtzIGFuZCBzcGVjaWFsIGZpbGVzIChpLmUuIGRldmljZXMpCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAicnN5bmNfY3ZfY2FuX2hhcmRsaW5rX3NwZWNpYWw9eWVzIHJzeW5jX2N2X2Nhbl9oYXJkbGlua19zeW1saW5rPXllcyIKKworIyByc3luYyAzLjAgdXNlcyBjb25maWd1cmUuc2ggaW5zdGVhZCBvZiBjb25maWd1cmUsIGFuZAorIyBtYWtlZmlsZSBjaGVja3MgdGhlIGV4aXN0ZW5jZSBvZiBjb25maWd1cmUuc2gKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L2NvbmZpZ3VyZSAke1N9L2NvbmZpZ3VyZS5zaAorfQorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKwljcCAtZiAke1N9L2NvbmZpZ3VyZSAke1N9L2NvbmZpZ3VyZS5zaAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwppbmRleCBkNzE5ODk4Li5mZDM5MTFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCkBAIC04LDEzICs4LDEzIEBACiBTRUNUSU9OID0gImRldmVsL3J1YnkiCiBMSUNFTlNFID0gIlJ1YnkgfCBCU0QgfCBHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT04YTk2MGIwOGQ5NzJmNDNmOTFhZTg0YTZmMDBkY2JmYiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTM0MDk0OGUxODgyZTU3OTczMTg0MWJmNDljZGMyMmMxIFwKICAgICBmaWxlOi8vQlNETDttZDU9MTlhYWY2NWM4OGE0MGI1MDhkMTdhZTRiZTUzOWM0YjVcCiAgICAgZmlsZTovL0dQTDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjNcCi0gICAgZmlsZTovL0xFR0FMO21kNT1kYWYzNDlhZDU5ZGQxOWJkOGM5MTkxNzFiZmYzYzVkNiBcCisgICAgZmlsZTovL0xFR0FMO21kNT04Zjg3MWYzZjAzNzMyYzAxOGE1ZmE5YjE4NTk1ODIzMSBcCiAiCiAKLURFUEVORFMgPSAicnVieS1uYXRpdmUgemxpYiBvcGVuc3NsIHRjbCBsaWJ5YW1sIGRiIGdkYm0gcmVhZGxpbmUiCitERVBFTkRTID0gInJ1YnktbmF0aXZlIHpsaWIgb3BlbnNzbCB0Y2wgbGlieWFtbCBnZGJtIHJlYWRsaW5lIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAib3BlbnNzbC1uYXRpdmUgbGlieWFtbC1uYXRpdmUiCiAKIFNIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoCmluZGV4IGIwMTE0YmEuLjRjZjU3OWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoCkBAIC0xMCwxOSArMTAsMTYgQEAKICBNYWtlZmlsZS5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDdkYTI0ODguLjViNGFlYTEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC03NSw3ICs3NSw3IEBAIEVYVExJQlMgPQotIExJQlMgPSBATElCU0AgJChFWFRMSUJTKQorSW5kZXg6IHJ1YnktMi41LjAvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBydWJ5LTIuNS4wLm9yaWcvTWFrZWZpbGUuaW4KKysrKyBydWJ5LTIuNS4wL01ha2VmaWxlLmluCitAQCAtNzcsNyArNzcsNyBAQCBMSUJTID0gQExJQlNAICQoRVhUTElCUykKICBNSVNTSU5HID0gQExJQk9CSlNAIEBBTExPQ0FACisgRU5BQkxFX1NIQVJFRCA9IEBFTkFCTEVfU0hBUkVEQAogIExEU0hBUkVEID0gQExJQlJVQllfTERTSEFSRURACiAtRExERkxBR1MgPSBATElCUlVCWV9ETERGTEFHU0AgJChYTERGTEFHUykgJChBUkNIX0ZMQUcpCiArRExERkxBR1MgPSBATElCUlVCWV9ETERGTEFHU0AgQExERkxBR1NAICQoWExERkxBR1MpICQoQVJDSF9GTEFHKQogIFNPTElCUyA9IEBTT0xJQlNACisgRU5BQkxFX0RFQlVHX0VOViA9IEBFTkFCTEVfREVCVUdfRU5WQAogIE1BSU5MSUJTID0gQE1BSU5MSUJTQAotIEFSQ0hNSU5JT0JKUyA9IEBNSU5JT0JKU0AKLS0tIAotMi44LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9leHRtay5wYXRjaAppbmRleCBhNWIyMTg0Li40MDRiOWFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9leHRtay5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9leHRtay5wYXRjaApAQCAtMiwxMyArMiwxNSBAQAogZGlmZiAtcnUgcnVieS0xLjguNy1wMjQ4Lm9yaWcvZXh0L2V4dG1rLnJiIHJ1YnktMS44LjctcDI0OC9leHQvZXh0bWsucmIKIC0tLSBydWJ5LTEuOC43LXAyNDgub3JpZy9leHQvZXh0bWsucmIJMjAwOS0xMi0yNCAwMzowMTo1OC4wMDAwMDAwMDAgLTA2MDAKICsrKyBydWJ5LTEuOC43LXAyNDgvZXh0L2V4dG1rLnJiCTIwMTAtMDItMTIgMTU6NTU6MjcuMzcwMDYxNTU4IC0wNjAwCi1AQCAtMzU0LDggKzM1NCw4IEBACi0gICAkcnVieSA9ICckKHRvcGRpcikvbWluaXJ1YnknICsgRVhFRVhUCitAQCAtNDEzLDggKzQxMyw4IEBAIGRlZiAkbWZsYWdzLmRlZmluZWQ/KHZhcikKICBlbmQKLSAkcnVieSA8PCAiIC1JJyQodG9wZGlyKSciCi0rJHJ1YnkgPDwgIiAtSSckKHRvcF9zcmNkaXIpL2xpYiciCisgJHJ1YnkgPSBbJHJ1YnldCisgJHJ1YnkgPDwgIi1JJyQodG9wZGlyKSciCisrJHJ1YnkgPDwgIi1JJyQodG9wX3NyY2RpcikvbGliJyIKICB1bmxlc3MgQ1JPU1NfQ09NUElMSU5HCi0tICAkcnVieSA8PCAiIC1JJyQodG9wX3NyY2RpcikvbGliJyIKLSAgICRydWJ5IDw8ICIgLUknJChleHRvdXQpLyQoYXJjaCknIC1JJyQoZXh0b3V0KS9jb21tb24nIiBpZiAkZXh0b3V0Ci0gICAkcnVieSA8PCAiIC1JLi8tIC1JJyQodG9wX3NyY2RpcikvZXh0JyAtcnB1cmVsaWIucmIiCistICAkcnVieSA8PCAiLUknJCh0b3Bfc3JjZGlyKS9saWInIgorICAgJHJ1YnkgPDwgIi1JJyQoZXh0b3V0KS8kKGFyY2gpJyIgPDwgIi1JJyQoZXh0b3V0KS9jb21tb24nIiBpZiAkZXh0b3V0CiAgICBFTlZbIlJVQllMSUIiXSA9ICItIgorIGVuZAorLS0gCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGU2OTNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1Gcm9tIDhmNzgyZmQ4ZTE4MWQ5Y2ZlOTM4N2RlZDQzYTVjYTk2OTIyNjZiODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIEZyYW5rIDxmbG9yaUBwaW5nLmRlPgotRGF0ZTogVGh1LCAyIE1hciAyMDE3IDEyOjEyOjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhcmJpdHJhcnkgaGVhcCBleHBvc3VyZSBwcm9ibGVtCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTQwNjQKLQotU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotLS0tCi0gZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jIHwgMTIgKysrKysrLS0tLS0tCi0gZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oIHwgIDEgLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCi1pbmRleCBlZjg1YmI3Li5jODg4MThjIDEwMDY0NAotLS0tIGEvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCi0rKysgYi9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMKLUBAIC0zMDgsNyArMzA4LDcgQEAgc3RhdGljIGNoYXIgKmZzdHJuZHVwKGNvbnN0IGNoYXIgKnB0ciwgdW5zaWduZWQgbG9uZyBsZW4pIHsKLSAgIGNoYXIgKnJlc3VsdDsKLSAgIGlmIChsZW4gPD0gMCkgcmV0dXJuIE5VTEw7Ci0gICByZXN1bHQgPSBBTExPQ19OKGNoYXIsIGxlbik7Ci0tICBtZW1jY3B5KHJlc3VsdCwgcHRyLCAwLCBsZW4pOwotKyAgbWVtY3B5KHJlc3VsdCwgcHRyLCBsZW4pOwotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi1AQCAtMTA2Miw3ICsxMDYyLDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9pbmRlbnRfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIGluZGVudCkKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+aW5kZW50KSBydWJ5X3hmcmVlKHN0YXRlLT5pbmRlbnQpOwotLSAgICAgICAgc3RhdGUtPmluZGVudCA9IHN0cmR1cChSU1RSSU5HX1BUUihpbmRlbnQpKTsKLSsgICAgICAgIHN0YXRlLT5pbmRlbnQgPSBmc3RybmR1cChSU1RSSU5HX1BUUihpbmRlbnQpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPmluZGVudF9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1AQCAtMTEwMCw3ICsxMTAwLDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9zcGFjZV9zZXQoVkFMVUUgc2VsZiwgVkFMVUUgc3BhY2UpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPnNwYWNlKSBydWJ5X3hmcmVlKHN0YXRlLT5zcGFjZSk7Ci0tICAgICAgICBzdGF0ZS0+c3BhY2UgPSBzdHJkdXAoUlNUUklOR19QVFIoc3BhY2UpKTsKLSsgICAgICAgIHN0YXRlLT5zcGFjZSA9IGZzdHJuZHVwKFJTVFJJTkdfUFRSKHNwYWNlKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5zcGFjZV9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1AQCAtMTEzNiw3ICsxMTM2LDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9zcGFjZV9iZWZvcmVfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIHNwYWNlX2JlZm9yZSkKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+c3BhY2VfYmVmb3JlKSBydWJ5X3hmcmVlKHN0YXRlLT5zcGFjZV9iZWZvcmUpOwotLSAgICAgICAgc3RhdGUtPnNwYWNlX2JlZm9yZSA9IHN0cmR1cChSU1RSSU5HX1BUUihzcGFjZV9iZWZvcmUpKTsKLSsgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZV9iZWZvcmUpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPnNwYWNlX2JlZm9yZV9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1AQCAtMTE3Myw3ICsxMTczLDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9vYmplY3Rfbmxfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIG9iamVjdF9ubCkKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+b2JqZWN0X25sKSBydWJ5X3hmcmVlKHN0YXRlLT5vYmplY3RfbmwpOwotLSAgICAgICAgc3RhdGUtPm9iamVjdF9ubCA9IHN0cmR1cChSU1RSSU5HX1BUUihvYmplY3RfbmwpKTsKLSsgICAgICAgIHN0YXRlLT5vYmplY3RfbmwgPSBmc3RybmR1cChSU1RSSU5HX1BUUihvYmplY3RfbmwpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPm9iamVjdF9ubF9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1AQCAtMTIwOCw3ICsxMjA4LDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9hcnJheV9ubF9zZXQoVkFMVUUgc2VsZiwgVkFMVUUgYXJyYXlfbmwpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPmFycmF5X25sKSBydWJ5X3hmcmVlKHN0YXRlLT5hcnJheV9ubCk7Ci0tICAgICAgICBzdGF0ZS0+YXJyYXlfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIoYXJyYXlfbmwpKTsKLSsgICAgICAgIHN0YXRlLT5hcnJheV9ubCA9IGZzdHJuZHVwKFJTVFJJTkdfUFRSKGFycmF5X25sKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5hcnJheV9ubF9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1kaWZmIC0tZ2l0IGEvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oCi1pbmRleCA5MDBiNGQ1Li5jMzY3YTYyIDEwMDY0NAotLS0tIGEvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oCi0rKysgYi9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKLUBAIC0xLDcgKzEsNiBAQAotICNpZm5kZWYgX0dFTkVSQVRPUl9IXwotICNkZWZpbmUgX0dFTkVSQVRPUl9IXwotIAotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotIAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDgxMzliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNjkwMzEzYTA2MWY3YTRmYTYxNGVjNWNjODM2OGI0ZjIyODRlMDU5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJLLktvc2FrbyIgPGtvc2Frb0Bzb2ZuZWMuY28uanA+Ci1EYXRlOiBUdWUsIDIzIE1heSAyMDE3IDEwOjI4OjU4ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCAjNTcgOiBEQVRBX0VOU1VSRSgpIGNoZWNrIG11c3QgYmUgYmVmb3JlIGRhdGEgYWNjZXNzCi0KLS0tLQotIHJlZ2V4ZWMuYyB8ICAgIDUgLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05MjI0Ci0KLUNvbnRleHQgbW9kaWZpZWQgc28gdGhhdCBwYXRjaCBhcHBsaWVzIGZvciB2ZXJzaW9uIDIuNC4xLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotCi1kaWZmIC0tZ2l0IGEvcmVnZXhlYy5jIGIvcmVnZXhlYy5jCi1pbmRleCAzNWZlZjExLi5kNGU1NzdkIDEwMDY0NAotLS0tIGEvcmVnZXhlYy5jCi0rKysgYi9yZWdleGVjLmMKLUBAIC0xNDczLDE0ICsxNDczLDkgQEAgbWF0Y2hfYXQocmVnZXhfdCogcmVnLCBjb25zdCBVQ2hhciogc3RyLCBjb25zdCBVQ2hhciogZW5kLAotICAgICAgIE5FWFQ7Ci0KLSAgICAgQ0FTRShPUF9FWEFDVDEpICBNT1BfSU4oT1BfRVhBQ1QxKTsKLS0jaWYgMAotICAgICAgIERBVEFfRU5TVVJFKDEpOwotICAgICAgIGlmICgqcCAhPSAqcykgZ290byBmYWlsOwotICAgICAgIHArKzsgcysrOwotLSNlbmRpZgotLSAgICAgIGlmICgqcCAhPSAqcysrKSBnb3RvIGZhaWw7Ci0tICAgICAgREFUQV9FTlNVUkUoMCk7Ci0tICAgICAgcCsrOwotICAgICAgIE1PUF9PVVQ7Ci0gICAgICAgYnJlYWs7Ci0gCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoCmluZGV4IDBmMmE0MzAuLjg5NDM3YmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2gKQEAgLTIwLDIyICsyMCwxMyBAQAogCiAtLS0gcnVieS0yLjQuMS5vcmlnL3JlZ3BhcnNlLmMKICsrKyBydWJ5LTIuNC4xL3JlZ3BhcnNlLmMKLUBAIC0zNjQ0LDcgKzM2NDQsNyBAQCBmZXRjaF90b2tlbihPbmlnVG9rZW4qIHRvaywgVUNoYXIqKiBzcmMsCi0gICAgICAgaWYgKElTX1NZTlRBWF9PUChzeW4sIE9OSUdfU1lOX09QX0VTQ19PQ1RBTDMpKSB7Ci0gCXByZXYgPSBwOwotIAludW0gPSBzY2FuX3Vuc2lnbmVkX29jdGFsX251bWJlcigmcCwgZW5kLCAoYyA9PSAnMCcgPyAyOjMpLCBlbmMpOwotLQlpZiAobnVtIDwgMCkgcmV0dXJuIE9OSUdFUlJfVE9PX0JJR19OVU1CRVI7Ci0rCWlmIChudW0gPCAwIHx8IDB4ZmYgPCBudW0pIHJldHVybiBPTklHRVJSX1RPT19CSUdfTlVNQkVSOwotIAlpZiAocCA9PSBwcmV2KSB7ICAvKiBjYW4ndCByZWFkIG5vdGhpbmcuICovCi0gCSAgbnVtID0gMDsgLyogYnV0LCBpdCdzIG5vdCBlcnJvciAqLwotIAl9CiBAQCAtNDQ1MCw2ICs0NDUwLDkgQEAgbmV4dF9zdGF0ZV92YWwoQ0NsYXNzTm9kZSogY2MsIENDbGFzc05vZAogICAgc3dpdGNoICgqc3RhdGUpIHsKICAgIGNhc2UgQ0NTX1ZBTFVFOgogICAgICBpZiAoKnR5cGUgPT0gQ0NWX1NCKSB7Ci0rICAgICAgaWYgKCp2cyA+IDB4ZmYpCisrICAgICAgaWYgKCpmcm9tID4gMHhmZikKICsgICAgICAgICAgcmV0dXJuIE9OSUdFUlJfSU5WQUxJRF9DT0RFX1BPSU5UX1ZBTFVFOwogKwotICAgICAgIEJJVFNFVF9TRVRfQklUX0NIS0RVUChjYy0+YnMsIChpbnQgKSgqdnMpKTsKKyAgICAgICBCSVRTRVRfU0VUX0JJVF9DSEtEVVAoY2MtPmJzLCAoaW50ICkoKmZyb20pKTsKICAgICAgICBpZiAoSVNfTk9UX05VTEwoYXNjX2NjKSkKLSAJQklUU0VUX1NFVF9CSVQoYXNjX2NjLT5icywgKGludCApKCp2cykpOworIAlCSVRTRVRfU0VUX0JJVChhc2NfY2MtPmJzLCAoaW50ICkoKmZyb20pKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVlN2NjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDk2OTBkM2FiMWY5YmNkMmRiOGNiZTFmZTNlZTRhNWRhNjA2Yjg4MTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSy5Lb3Nha28iIDxrb3Nha29Ac29mbmVjLmNvLmpwPgotRGF0ZTogVHVlLCAyMyBNYXkgMjAxNyAxNjoxNTozNSArMDkwMAotU3ViamVjdDogW1BBVENIXSBmaXggIzU4IDogYWNjZXNzIHRvIGludmFsaWQgYWRkcmVzcyBieSByZWctPmRtaW4gdmFsdWUKLQotLS0tCi0gcmVnZXhlYy5jIHwgICAgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05MjI3Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3JlZ2V4ZWMuYyBiL3JlZ2V4ZWMuYwotaW5kZXggZDRlNTc3ZC4uMmZhMGYzZCAxMDA2NDQKLS0tLSBhL3JlZ2V4ZWMuYwotKysrIGIvcmVnZXhlYy5jCi1AQCAtMzE1NCw2ICszMTU0LDggQEAgZm9yd2FyZF9zZWFyY2hfcmFuZ2UocmVnZXhfdCogcmVnLCBjb25zdCBVQ2hhciogc3RyLCBjb25zdCBVQ2hhciogZW5kLCBVQ2hhciogcywKLSAgICAgfQotICAgICBlbHNlIHsKLSAgICAgICBVQ2hhciAqcSA9IHAgKyByZWctPmRtaW47Ci0rCi0rICAgICAgaWYgKHEgPj0gZW5kKSByZXR1cm4gMDsgLyogZmFpbCAqLwotICAgICAgIHdoaWxlIChwIDwgcSkgcCArPSBlbmNsZW4ocmVnLT5lbmMsIHAsIGVuZCk7Ci0gICAgIH0KLSAgIH0KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNzY1YmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBiNjkwMzcxYmJmOTc3OTRiNGExZDNmMjk1ZDRmYjlhOGIwNWQ0MDJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIksuS29zYWtvIiA8a29zYWtvQHNvZm5lYy5jby5qcD4KLURhdGU6IFdlZCwgMjQgTWF5IDIwMTcgMTA6Mjc6MDQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4ICM1OSA6IGFjY2VzcyB0byBpbnZhbGlkIGFkZHJlc3MgYnkgcmVnLT5kbWF4IHZhbHVlCi0KLS0tLQotIHJlZ2V4ZWMuYyB8ICAgMjcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi0tLS0gZW5kIG9mIG9yaWdpbmFsIGhlYWRlcgotCi1DVkU6IENWRS0yMDE3LTkyMjkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtub3QgYXV0aG9yXQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvcmVnZXhlYy5jIGIvcmVnZXhlYy5jCi1pbmRleCA0OWJjYzUwLi5jMDYyNmVmIDEwMDY0NAotLS0tIGEvcmVnZXhlYy5jCi0rKysgYi9yZWdleGVjLmMKLUBAIC0zNzU2LDE4ICszNzU2LDI1IEBAIGZvcndhcmRfc2VhcmNoX3JhbmdlKHJlZ2V4X3QqIHJlZywgY29uc3QKLSAgICAgfQotICAgICBlbHNlIHsKLSAgICAgICBpZiAocmVnLT5kbWF4ICE9IE9OSUdfSU5GSU5JVEVfRElTVEFOQ0UpIHsKLS0JKmxvdyA9IHAgLSByZWctPmRtYXg7Ci0tCWlmICgqbG93ID4gcykgewotLQkgICpsb3cgPSBvbmlnZW5jX2dldF9yaWdodF9hZGp1c3RfY2hhcl9oZWFkX3dpdGhfcHJldihyZWctPmVuYywgcywKLS0JCQkJCQkJICAgICAgKmxvdywgZW5kLCAoY29uc3QgVUNoYXIqKiApbG93X3ByZXYpOwotLQkgIGlmIChsb3dfcHJldiAmJiBJU19OVUxMKCpsb3dfcHJldikpCi0tCSAgICAqbG93X3ByZXYgPSBvbmlnZW5jX2dldF9wcmV2X2NoYXJfaGVhZChyZWctPmVuYywKLS0JCQkJCQkgICAocHByZXYgPyBwcHJldiA6IHMpLCAqbG93LCBlbmQpOwotKyAgICAgICAgaWYgKHAgLSBzdHIgPCByZWctPmRtYXgpIHsKLSsgICAgICAgICAgKmxvdyA9IChVQ2hhciogKXN0cjsKLSsgICAgICAgICAgaWYgKGxvd19wcmV2KQotKyAgICAgICAgICAgICpsb3dfcHJldiA9IG9uaWdlbmNfZ2V0X3ByZXZfY2hhcl9oZWFkKHJlZy0+ZW5jLCBzdHIsICpsb3csIGVuZCk7Ci0gCX0KLSAJZWxzZSB7Ci0tCSAgaWYgKGxvd19wcmV2KQotLQkgICAgKmxvd19wcmV2ID0gb25pZ2VuY19nZXRfcHJldl9jaGFyX2hlYWQocmVnLT5lbmMsCi0tCQkJCQkgICAgICAgKHBwcmV2ID8gcHByZXYgOiBzdHIpLCAqbG93LCBlbmQpOwotKyAgICAgICAgICAqbG93ID0gcCAtIHJlZy0+ZG1heDsKLSsgICAgICAgICAgaWYgKCpsb3cgPiBzKSB7Ci0rICAgICAgICAgICAgKmxvdyA9IG9uaWdlbmNfZ2V0X3JpZ2h0X2FkanVzdF9jaGFyX2hlYWRfd2l0aF9wcmV2KHJlZy0+ZW5jLCBzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbG93LCBlbmQsIChjb25zdCBVQ2hhcioqIClsb3dfcHJldik7Ci0rICAgICAgICAgICAgaWYgKGxvd19wcmV2ICYmIElTX05VTEwoKmxvd19wcmV2KSkKLSsgICAgICAgICAgICAgICpsb3dfcHJldiA9IG9uaWdlbmNfZ2V0X3ByZXZfY2hhcl9oZWFkKHJlZy0+ZW5jLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwcmV2ID8gcHByZXYgOiBzKSwgKmxvdywgZW5kKTsKLSsgICAgICAgICAgfQotKyAgICAgICAgICBlbHNlIHsKLSsgICAgICAgICAgICBpZiAobG93X3ByZXYpCi0rICAgICAgICAgICAgICAqbG93X3ByZXYgPSBvbmlnZW5jX2dldF9wcmV2X2NoYXJfaGVhZChyZWctPmVuYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHJldiA/IHBwcmV2IDogc3RyKSwgKmxvdywgZW5kKTsKLSsgICAgICAgICAgfQotIAl9Ci0gICAgICAgfQotICAgICB9Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QyN2FjOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLXJlcXVpcmUgcnVieS5pbmMKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyOC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy0xNDA2NC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc4MmJjYTU2MmU0NzRkZDI1OTU2ZGQwMDE3ZDkyNjc3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzMzBlMTBkNWNiNWU1M2IzYTAwNzgzMjZjNTczMTg4OGJiNTVlMzJjNGFiZmViMjdkOWU3ZjhlNWQwMDAyNTAiCi0KLSMgaXQncyB1bmtub3duIHRvIGNvbmZpZ3VyZSBzY3JpcHQsIGJ1dCB0aGVuIHBhc3NlZCB0byBleHRjb25mLnJiCi0jIG1heWJlIGl0J3Mgbm90IHJlYWxseSBuZWVkZWQgYXMgd2UncmUgaGFyZGNvZGluZyB0aGUgcmVzdWx0IHdpdGgKLSMgMDAwMS1zb2NrZXQtZXh0Y29uZi1oYXJkY29kZS13aWRlLWdldGFkZHItaW5mby10ZXN0LW91dGNvLnBhdGNoCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QgKz0gIi0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tncG1dID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvLCIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1kaXNhYmxlLXZlcnNpb25lZC1wYXRocyBcCi0gICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAtLWRpc2FibGUtZHRyYWNlIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLWxvYWQtcmVsYXRpdmUgXAotIgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcmktZG9jcyAke1BOfS1yZG9jIgotCi1TVU1NQVJZXyR7UE59LXJpLWRvY3MgPSAicmkgKFJ1YnkgSW50ZXJhY3RpdmUpIGRvY3VtZW50YXRpb24gZm9yIHRoZSBSdWJ5IHN0YW5kYXJkIGxpYnJhcnkiCi1SREVQRU5EU18ke1BOfS1yaS1kb2NzID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmktZG9jcyArPSAiJHtkYXRhZGlyfS9yaSIKLQotU1VNTUFSWV8ke1BOfS1yZG9jID0gIlJEb2MgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZnJvbSBSdWJ5IHNvdXJjZSIKLVJERVBFTkRTXyR7UE59LXJkb2MgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1yZG9jICs9ICIke2xpYmRpcn0vcnVieS8qL3Jkb2MgJHtiaW5kaXJ9L3Jkb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3J1YnlnZW1zIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFjN2YyYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4wLmJiCkBAIC0wLDAgKzEsNDkgQEAKK3JlcXVpcmUgcnVieS5pbmMKKworU1JDX1VSSSArPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjgucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNDcxMWY4NTZmZTE0ZGUyMjJiOWRhM2QzYjhlZmE4OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NmU2ZjM2MzBmMTg4OGViNjUzYjE1ZmE4MTFkNzdiNWIxZGY2ZmQ3YTNhZjQzNmIzNDNjZmU0ZjQ1MDNmMmFiIgorCisjIGl0J3MgdW5rbm93biB0byBjb25maWd1cmUgc2NyaXB0LCBidXQgdGhlbiBwYXNzZWQgdG8gZXh0Y29uZi5yYgorIyBtYXliZSBpdCdzIG5vdCByZWFsbHkgbmVlZGVkIGFzIHdlJ3JlIGhhcmRjb2RpbmcgdGhlIHJlc3VsdCB3aXRoCisjIDAwMDEtc29ja2V0LWV4dGNvbmYtaGFyZGNvZGUtd2lkZS1nZXRhZGRyLWluZm8tdGVzdC1vdXRjby5wYXRjaAorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUICs9ICItLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kPXllcywgLS13aXRoLXZhbGdyaW5kPW5vLCB2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbZ21wXSA9ICItLXdpdGgtZ21wPXllcywgLS13aXRoLWdtcD1ubywgZ21wIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICIsLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbywiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgorCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZGlzYWJsZS12ZXJzaW9uZWQtcGF0aHMgXAorICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgLS1kaXNhYmxlLWR0cmFjZSBcCisgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAtLWVuYWJsZS1sb2FkLXJlbGF0aXZlIFwKKyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKKworU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgorUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCisKK1NVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCitSREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgorRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cwppbmRleCA1MGMwYTFhLi4zMDdmZWI3IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMKQEAgLTQzLDcgKzQzLDcgQEAKIAlmaQogfQogCi1pZiBbIC16ICIkcGlfZGlyIiBdOyB0aGVuCitpZiAhIFsgLWQgJHBpX2RpciBdOyB0aGVuCiAJcmVtb3ZlX3Jjc2RfbGluawogCWV4aXQgMAogZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzXzEuMC5iYgppbmRleCAzMWM5OGVjLi44NWIzZmM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0c18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHNfMS4wLmJiCkBAIC0xLDYgKzEsNiBAQAogU1VNTUFSWSA9ICJSdW5zIHBvc3RpbnN0YWxsIHNjcmlwdHMgb24gZmlyc3QgYm9vdCBvZiB0aGUgdGFyZ2V0IGRldmljZSIKIFNFQ1RJT04gPSAiZGV2ZWwiCi1QUiA9ICJyOSIKK1BSID0gInIxMCIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMvZml4LWNvbXBhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMvZml4LWNvbXBhdC5wYXRjaAppbmRleCBkNTQ1MTQ2Li4wY2U3YjRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL2ZpeC1jb21wYXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29scy9maXgtY29tcGF0LnBhdGNoCkBAIC0yMyw3ICsyMyw3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gc3F1YXNoZnMtdG9vbHMub3JpZy9ta3NxdWFzaGZzLmMKICsrKyBzcXVhc2hmcy10b29scy9ta3NxdWFzaGZzLmMKLUBAIC0xMjg2LDYgKzEyODYsMTAgQEAgdm9pZCB3cml0ZV9kaXIoc3F1YXNoZnNfaW5vZGUgKmlub2RlLCBzdAorQEAgLTEyNjEsNiArMTI2MSwxMCBAQCB2b2lkIHdyaXRlX2RpcihzcXVhc2hmc19pbm9kZSAqaW5vZGUsIHN0CiAgCQlkaXJfc2l6ZSArIDMsIGRpcmVjdG9yeV9ibG9jaywgZGlyZWN0b3J5X29mZnNldCwgTlVMTCwgTlVMTCwKICAJCWRpciwgMCk7CiAgCkBAIC01MCw5ICs1MCw5IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gc3F1YXNoZnMtdG9vbHMub3JpZy91bnNxdWFzaGZzLmMKICsrKyBzcXVhc2hmcy10b29scy91bnNxdWFzaGZzLmMKLUBAIC0zOCw2ICszOCwxMCBAQAotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KK0BAIC00Miw2ICs0MiwxMCBAQAorICNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2VuZGlmCiAgCiArI2lmbmRlZiBGTk1fRVhUTUFUQ0gKICsjZGVmaW5lIEZOTV9FWFRNQVRDSCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCmluZGV4IDBmOTkxNzAuLmE4YmFjYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9zcXVhc2hmcy10b29scy00LjMtc3lzbWFjcm9zLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtY29tcGF0LnBhdGNoIFwKICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogU1JDX1VSSVtsem1hLm1kNXN1bV0gPSAiMjlkNWZmZDAzYTVhM2U1MWFlZjZhNzRlOWVhZmI3NTkiCiBTUkNfVVJJW2x6bWEuc2hhMjU2c3VtXSA9ICJjOTM1ZmQwNGRkOGUwZThjNjg4YTMwNzhmMzY3NWQ2OTk2NzlhOTBiZTgxYzEyNjg2ODM3ZTA4ODBhYTBmYTFlIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKaW5kZXggOTdiY2M5MC4uYTEyZjRjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaApAQCAtMTQsMjMgKzE0LDIzIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDYxZDY0MjUuLjYzODdjMjQgMTAwNjQ0CitpbmRleCA1ZjBhZWM0Li44ZWFhY2M2IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC00MSw3ICs0MSw3IEBAIEFDX0NPUFlSSUdIVChbQ29weXJpZ2h0IChDKSAxOTk5LV1jb3B5cmlnaHRfeWVhclsgVGhlIHN0cmFjZSBkZXZlbG9wZXJzLl0pCitAQCAtNDIsNyArNDIsNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMTk5OS1dY29weXJpZ2h0X3llYXJbIFRoZSBzdHJhY2UgZGV2ZWxvcGVycy5dKQogIEFDX0NPTkZJR19TUkNESVIoW3N0cmFjZS5jXSkKICBBQ19DT05GSUdfQVVYX0RJUihbLl0pCiAgQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKLS1BTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogc2lsZW50LXJ1bGVzIHBhcmFsbGVsLXRlc3RzXSkKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0c10pCi0gQU1fRVhUUkFfUkVDVVJTSVZFX1RBUkdFVFMoW2NoZWNrLXZhbGdyaW5kXSkKKy1BTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogc2lsZW50LXJ1bGVzIHBhcmFsbGVsLXRlc3RzIDEuMTNdKQorK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gbm9zdGRpbmMgZGlzdC14eiBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzIDEuMTNdKQogIEFNX01BSU5UQUlORVJfTU9ERQogIEFDX0NBTk9OSUNBTF9IT1NUCisgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggNWFhN2Y4OS4uYTU1YTM1NSAxMDA2NDQKK2luZGV4IGI0YmEyMmEuLjU4MzY0MzggMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0zNzksMyArMzc5LDIxIEBAIGNsZWFuLWxvY2FsLWNoZWNrOgorQEAgLTQwOCwzICs0MDgsMjEgQEAgQlVJTFRfU09VUkNFUyA9IGtzeXNlbnQuaAogIENMRUFORklMRVMgPSBrc3lzZW50LmgKICAKICBpbmNsdWRlIC4uL3Njbm8uYW0KQEAgLTUyLDYgKzUyLDMgQEAKICsJCXNlZCAtaSAtZSAncy8kJHtzcmNkaXI9Ln0vLi9nJyAkKERFU1RESVIpLyQoVEVTVERJUikvJCRmaWxlOyBcCiArCWRvbmUKICsJZm9yIGkgaW4gbmV0IHNjbV9yaWdodHMtZmQgcnRfc2lnYWN0aW9uOyBkbyBzZWQgLWkgLWUgJ3MvJCRzcmNkaXIvLi9nJyAkKERFU1RESVIpLyQoVEVTVERJUikvJCRpLnRlc3Q7IGRvbmUKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMjg5MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBjYWxsIHRyYWNpbmcgdG9vbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdHJhY2Uuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMTMyYjRkMmFkZmNjYzYzZGE0MTM5YTYwOTM2NzcxMSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc3RyYWNlL3N0cmFjZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aGVuLXVzaW5nLW5vbi1nbGliYy1saWJjLWltcGxlbWVudGF0aW9uLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM1NzliMzI2NmJiMDk2Y2ViYWVmYmUyY2RiMWEzYTc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5YWQ4ODdjMWU2MjI2YmRiY2E4ZGEzMWQ1ODljYWRlYTRiZTA3NDRiMTQyZWI0N2I3NjgwODZjOTM3ZmNhMDgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJsdWV0b290aAotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBjb3JldXRpbHMgZ3JlcCBnYXdrIHNlZCIKLQotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKLSIKLQotUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD15ZXMsYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubywke0JMVUVafSIKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgotCi1URVNURElSID0gInRlc3RzIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCi0Jcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQotCXNlZCAtaSAtZSAnL15zcmMvcy9zdHJhY2UuKlsxLTldL3B0ZXN0LycgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSAgICAtZSAnL15ERUJfQ0hBTkdFTE9HVElNRS9kJyBcCi0JICAgIC1lICcvXlJQTV9DSEFOR0VMT0dUSU1FL2QnIFwKLQkke0R9LyR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLVRPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2OWMxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yMC5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIlN5c3RlbSBjYWxsIHRyYWNpbmcgdG9vbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdHJhY2UuaW8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYxMzJiNGQyYWRmY2NjNjNkYTQxMzlhNjA5MzY3NzExIgorCitTUkNfVVJJID0gImh0dHBzOi8vc3RyYWNlLmlvL2ZpbGVzLyR7UFZ9L3N0cmFjZS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aGVuLXVzaW5nLW5vbi1nbGliYy1saWJjLWltcGxlbWVudGF0aW9uLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImYyMjcxYWIwZmFjNDllYmVlOWNiZDdmMzQ2OTIyN2NiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViZjMxNDhkZDE3MzA2YTQyNTY2ZjdkYTE3MzY4ZmRkNzgxYWZhMTQ3ZGIwNWVhNjNhNGNhMmI1MGY1OGM1MjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJsdWV0b290aAorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBjb3JldXRpbHMgZ3JlcCBnYXdrIHNlZCIKKworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKKyIKKworUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD15ZXMsYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubywke0JMVUVafSIKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgorCitURVNURElSID0gInRlc3RzIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCisJcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQorCXNlZCAtaSAtZSAnL15zcmMvcy9zdHJhY2UuKlsxLTldL3B0ZXN0LycgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSAgICAtZSAnL15ERUJfQ0hBTkdFTE9HVElNRS9kJyBcCisJICAgIC1lICcvXlJQTV9DSEFOR0VMT0dUSU1FL2QnIFwKKwkke0R9LyR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1RPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9DVkUtMjAxNy05ODAwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU5OWMyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9DVkUtMjAxNy05ODAwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotcjE4MDQ2OTEgfCBkYW5pZWxzaCB8IDIwMTctMDgtMTAgMTE6MTQ6MTMgLTA3MDAgKFRodSwgMTAgQXVnIDIwMTcpIHwgMTggbGluZXMKLQotRml4IENWRS0yMDE3LTk4MDAuCi0KLVNlZTogaHR0cHM6Ly9zdWJ2ZXJzaW9uLmFwYWNoZS5vcmcvc2VjdXJpdHkvQ1ZFLTIwMTctMDgwMC1hZHZpc29yeS50eHQKLQotKiBzdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vY2xpZW50LmMKLSAgKHN2bl9jdHlwZS5oKTogSW5jbHVkZS4KLSAgKGZpbmRfdHVubmVsX2FnZW50KTogUGFzcyBhICItLSIgZW5kLW9mLW9wdGlvbnMgZ3VhcmQgdG8gc3NoLgotICAgIEV4cGVjdCB0aGUgJ2hvc3RpbmZvJyBwYXJhbWV0ZXIgdG8gYmUgVVJJLWRlY29kZWQuCi0gIChpc192YWxpZF9ob3N0aW5mbyk6IE5ldy4KLSAgKHJhX3N2bl9vcGVuKTogVmFsaWRhdGUgdGhlIGhvc3RuYW1lIGJlZm9yZSB1c2luZyBpdC4KLQotKiBzdWJ2ZXJzaW9uL2xpYnN2bl9zdWJyL2NvbmZpZ19maWxlLmMKLSAgKHN2bl9jb25maWdfZW5zdXJlKTogVXBkYXRlIHRoZSBleGFtcGxlIGNvbmZpZ3VyYXRpb24gbGlrZXdpc2UuCi0KLVBhdGNoIGJ5OiBwaGlsaXAKLVJldmlldyBieTogZGFuaWVsc2gKLSAgICAgICAgICAgc3RzcAotICAgICAgICAgICBhc3RpZWdlciAoZWFybGllciB2ZXJzaW9uKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjP3ZpZXc9cmV2aXNpb24mYW1wO3NvcnRieT1yZXYmYW1wO3JldmlzaW9uPTE4MDQ2OTEKLQotQ1ZFOiBDVkUtMjAxNy05ODAwCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi1JbmRleDogc3VidmVyc2lvbi9saWJzdm5fc3Vici9jb25maWdfZmlsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3VidmVyc2lvbi9saWJzdm5fc3Vici9jb25maWdfZmlsZS5jCShyZXZpc2lvbiAxODA0NjkwKQotKysrIHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwkocmV2aXNpb24gMTgwNDY5MSkKLUBAIC0xNDQ4LDEyICsxNDQ4LDEyIEBACi0gICAgICAgICAiIyMjIHBhc3NlZCB0byB0aGUgdHVubmVsIGFnZW50IGFzIDx1c2VyPkA8aG9zdG5hbWU+LikgIElmIHRoZSIgICAgICBOTAotICAgICAgICAgIiMjIyBidWlsdC1pbiBzc2ggc2NoZW1lIHdlcmUgbm90IHByZWRlZmluZWQsIGl0IGNvdWxkIGJlIGRlZmluZWQiICAgTkwKLSAgICAgICAgICIjIyMgYXM6IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0tICAgICAgICAiIyBzc2ggPSAkU1ZOX1NTSCBzc2ggLXEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotKyAgICAgICAgIiMgc3NoID0gJFNWTl9TU0ggc3NoIC1xIC0tIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKLSAgICAgICAgICIjIyMgSWYgeW91IHdhbnRlZCB0byBkZWZpbmUgYSBuZXcgJ3JzaCcgc2NoZW1lLCB0byBiZSB1c2VkIHdpdGgiICAgIE5MCi0gICAgICAgICAiIyMjICdzdm4rcnNoOicgVVJMcywgeW91IGNvdWxkIGRvIHNvIGFzIGZvbGxvd3M6IiAgICAgICAgICAgICAgICAgICBOTAotLSAgICAgICAgIiMgcnNoID0gcnNoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKLSsgICAgICAgICIjIHJzaCA9IHJzaCAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0gICAgICAgICAiIyMjIE9yLCBpZiB5b3Ugd2FudGVkIHRvIHNwZWNpZnkgYSBmdWxsIHBhdGggYW5kIGFyZ3VtZW50czoiICAgICAgICBOTAotLSAgICAgICAgIiMgcnNoID0gL3BhdGgvdG8vcnNoIC1sIG15dXNlcm5hbWUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKLSsgICAgICAgICIjIHJzaCA9IC9wYXRoL3RvL3JzaCAtbCBteXVzZXJuYW1lIC0tIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0gICAgICAgICAiIyMjIE9uIFdpbmRvd3MsIGlmIHlvdSBhcmUgc3BlY2lmeWluZyBhIGZ1bGwgcGF0aCB0byBhIGNvbW1hbmQsIiAgICBOTAotICAgICAgICAgIiMjIyB1c2UgYSBmb3J3YXJkIHNsYXNoICgvKSBvciBhIHBhaXJlZCBiYWNrc2xhc2ggKFxcXFwpIGFzIHRoZSIgICAgTkwKLSAgICAgICAgICIjIyMgcGF0aCBzZXBhcmF0b3IuICBBIHNpbmdsZSBiYWNrc2xhc2ggd2lsbCBiZSB0cmVhdGVkIGFzIGFuIiAgICAgIE5MCi1JbmRleDogc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2NsaWVudC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2NsaWVudC5jCShyZXZpc2lvbiAxODA0NjkwKQotKysrIHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwkocmV2aXNpb24gMTgwNDY5MSkKLUBAIC00Niw2ICs0Niw3IEBACi0gI2luY2x1ZGUgInN2bl9wcm9wcy5oIgotICNpbmNsdWRlICJzdm5fbWVyZ2VpbmZvLmgiCi0gI2luY2x1ZGUgInN2bl92ZXJzaW9uLmgiCi0rI2luY2x1ZGUgInN2bl9jdHlwZS5oIgotIAotICNpbmNsdWRlICJzdm5fcHJpdmF0ZV9jb25maWcuaCIKLSAKLUBAIC0zOTgsNyArMzk5LDcgQEAKLSAgICAgICAgKiB2ZXJzaW9ucyBoYXZlIGl0IHRvby4gSWYgdGhlIHVzZXIgaXMgdXNpbmcgc29tZSBvdGhlciBzc2gKLSAgICAgICAgKiBpbXBsZW1lbnRhdGlvbiB0aGF0IGRvZXNuJ3QgYWNjZXB0IGl0LCB0aGV5IGNhbiBvdmVycmlkZSBpdAotICAgICAgICAqIGluIHRoZSBbdHVubmVsc10gc2VjdGlvbiBvZiB0aGUgY29uZmlnLiAqLwotLSAgICAgIHZhbCA9ICIkU1ZOX1NTSCBzc2ggLXEiOwotKyAgICAgIHZhbCA9ICIkU1ZOX1NTSCBzc2ggLXEgLS0iOwotICAgICB9Ci0gCi0gICBpZiAoIXZhbCB8fCAhKnZhbCkKLUBAIC00NDMsNyArNDQ0LDcgQEAKLSAgIGZvciAobiA9IDA7IGNtZF9hcmd2W25dICE9IE5VTEw7IG4rKykKLSAgICAgYXJndltuXSA9IGNtZF9hcmd2W25dOwotIAotLSAgYXJndltuKytdID0gc3ZuX3BhdGhfdXJpX2RlY29kZShob3N0aW5mbywgcG9vbCk7Ci0rICBhcmd2W24rK10gPSBob3N0aW5mbzsKLSAgIGFyZ3ZbbisrXSA9ICJzdm5zZXJ2ZSI7Ci0gICBhcmd2W24rK10gPSAiLXQiOwotICAgYXJndltuXSA9IE5VTEw7Ci1AQCAtODExLDcgKzgxMiwzMyBAQAotIH0KLSAKLSAKLSsvKiBBIHNpbXBsZSB3aGl0ZWxpc3QgdG8gZW5zdXJlIHRoZSBmb2xsb3dpbmcgYXJlIHZhbGlkOgotKyAqICAgdXNlckBzZXJ2ZXIKLSsgKiAgIFs6OjFdOjIyCi0rICogICBzZXJ2ZXItbmFtZQotKyAqICAgc2VydmVyX25hbWUKLSsgKiAgIDEyNy4wLjAuMQotKyAqIHdpdGggYW4gZXh0cmEgcmVzdHJpY3Rpb24gdGhhdCBhIGxlYWRpbmcgJy0nIGlzIGludmFsaWQuCi0rICovCi0rc3RhdGljIHN2bl9ib29sZWFuX3QKLStpc192YWxpZF9ob3N0aW5mbyhjb25zdCBjaGFyICpob3N0aW5mbykKLSt7Ci0rICBjb25zdCBjaGFyICpwID0gaG9zdGluZm87Ci0gCi0rICBpZiAocFswXSA9PSAnLScpCi0rICAgIHJldHVybiBGQUxTRTsKLSsKLSsgIHdoaWxlICgqcCkKLSsgICAgewotKyAgICAgIGlmICghc3ZuX2N0eXBlX2lzYWxudW0oKnApICYmICFzdHJjaHIoIjouLV9bXUAiLCAqcCkpCi0rICAgICAgICByZXR1cm4gRkFMU0U7Ci0rCi0rICAgICAgKytwOwotKyAgICB9Ci0rCi0rICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0gc3RhdGljIHN2bl9lcnJvcl90ICpyYV9zdm5fb3Blbihzdm5fcmFfc2Vzc2lvbl90ICpzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmNvcnJlY3RlZF91cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1cmwsCi1AQCAtODQ0LDggKzg3MSwxOCBAQAotICAgICAgICAgICB8fCAoY2FsbGJhY2tzLT5jaGVja190dW5uZWxfZnVuYyAmJiBjYWxsYmFja3MtPm9wZW5fdHVubmVsX2Z1bmMKLSAgICAgICAgICAgICAgICYmICFjYWxsYmFja3MtPmNoZWNrX3R1bm5lbF9mdW5jKGNhbGxiYWNrcy0+dHVubmVsX2JhdG9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVubmVsKSkpKQotLSAgICBTVk5fRVJSKGZpbmRfdHVubmVsX2FnZW50KHR1bm5lbCwgdXJpLmhvc3RpbmZvLCAmdHVubmVsX2FyZ3YsIGNvbmZpZywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfcG9vbCkpOwotKyAgICB7Ci0rICAgICAgY29uc3QgY2hhciAqZGVjb2RlZF9ob3N0aW5mbzsKLSsKLSsgICAgICBkZWNvZGVkX2hvc3RpbmZvID0gc3ZuX3BhdGhfdXJpX2RlY29kZSh1cmkuaG9zdGluZm8sIHJlc3VsdF9wb29sKTsKLSsKLSsgICAgICBpZiAoIWlzX3ZhbGlkX2hvc3RpbmZvKGRlY29kZWRfaG9zdGluZm8pKQotKyAgICAgICAgcmV0dXJuIHN2bl9lcnJvcl9jcmVhdGVmKFNWTl9FUlJfQkFEX1VSTCwgTlVMTCwgXygiSW52YWxpZCBob3N0ICclcyciKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmkuaG9zdGluZm8pOwotKwotKyAgICAgIFNWTl9FUlIoZmluZF90dW5uZWxfYWdlbnQodHVubmVsLCBkZWNvZGVkX2hvc3RpbmZvLCAmdHVubmVsX2FyZ3YsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcsIHJlc3VsdF9wb29sKSk7Ci0rICAgIH0KLSAgIGVsc2UKLSAgICAgdHVubmVsX2FyZ3YgPSBOVUxMOwotIAotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS45LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMmVkZWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS45LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLURFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAic2VyZiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIiCi1IT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZi5tNC1SZWdleC1tb2RpZmllZC10by1hbGxvdy1ELWluLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk4MDAucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjI3ZTAwMzM4ZDRhOWY3ZjlhZWM5ZDRhM2Y4YjQxOGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGJjYmM1MWZiNjM0MDgyZjAwOTEyMWYyY2I2NDM1MGNlMzIxNDY2MTI3ODdmZmIwZjdjZWQzNTFhYWNhYWUxOSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWY4MWFlNDliYTM1OWU3MDYyNmMwNWU5YmYzMTM3MDkiCi0KLVBBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIC0td2l0aG91dC1hcHhzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3dpZyAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWV4cG9ydCBMREZMQUdTICs9ICIgLUwke1NUQUdJTkdfTElCRElSfSAiCi1DUFBGTEFHUyArPSAiLVAiCi1CVUlMRF9DUFBGTEFHUyArPSAiLVAiCi0KLWFjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L2xpYnRvb2wKLQlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKLQlybSAtZiAke1N9L2FjbG9jYWwubTQKLQlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKLX0KLQotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0Ci0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCi0jfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKLVBBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS45LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3MzVmNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS43LmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiU3VidmVyc2lvbiAoc3ZuKSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGNsaWVudCIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorREVQRU5EUyA9ICJhcHItdXRpbCBzZXJmIHNxbGl0ZTMgZmlsZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSA9ICJzZXJmIgorTElDRU5TRSA9ICJBcGFjaGUtMiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJmLm00LVJlZ2V4LW1vZGlmaWVkLXRvLWFsbG93LUQtaW4tcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbGlidG9vbC1uYW1lLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJmbWFjcm8ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNWIwYzY3NzY4MTA3MzkyMGY5MzhjMWYzMjJlMGJlMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjM2IxMTgzMzNjZTEyZTUwMWQ1MDllNjZiYjBhNDdiY2MzNGQwNTM5OTBhY2FiNDU1NTk0MzFhYzNlNDkxNjIzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hZjgxYWU0OWJhMzU5ZTcwNjI2YzA1ZTliZjMxMzcwOSIKKworUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtc2FzbCwtLXdpdGhvdXQtc2FzbCxjeXJ1cy1zYXNsIgorUEFDS0FHRUNPTkZJR1tnbm9tZS1rZXlyaW5nXSA9ICItLXdpdGgtZ25vbWUta2V5cmluZywtLXdpdGhvdXQtZ25vbWUta2V5cmluZyxnbGliLTIuMCBnbm9tZS1rZXlyaW5nIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtYmVya2VsZXktZGIgLS13aXRob3V0LWFweHMgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zd2lnIC0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWtleWNoYWluIFwKKyAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1JVQlk9bm9uZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZXhwb3J0IExERkxBR1MgKz0gIiAtTCR7U1RBR0lOR19MSUJESVJ9ICIKK0NQUEZMQUdTICs9ICItUCIKK0JVSUxEX0NQUEZMQUdTICs9ICItUCIKKworYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vbGlidG9vbAorCXJtIC1mICR7U30vYnVpbGQvbGlidG9vbC5tNCAke1N9L2J1aWxkL2x0bWFpbi5zaCAke1N9L2J1aWxkL2x0b3B0aW9ucy5tNCAke1N9L2J1aWxkL2x0c3VnYXIubTQgJHtTfS9idWlsZC9sdHZlcnNpb24ubTQgJHtTfS9idWlsZC9sdH5vYnNvbGV0ZS5tNAorCXJtIC1mICR7U30vYWNsb2NhbC5tNAorCXNlZCAtaSAtZSAnczp3aXRoX3Nhc2w9Ii91c3IvbG9jYWwiOndpdGhfc2FzbD0iJHtTVEFHSU5HX0RJUn0iOicgJHtTfS9idWlsZC9hYy1tYWNyb3Mvc2FzbC5tNAorfQorCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX2xvY2FsL2xpYnN2bl9yYV9sb2NhbC0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sc3ZuX2RlbHRhLTF8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9saWJzdm5fcmFfc3ZuLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zZXJmL2xpYnN2bl9yYV9zZXJmLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiByZWxpbmsgYGxpYnN2bl9yYV9zZXJmLTEubGEnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgLi4vLi4vc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvc3VidmVyc2lvbi0xLjguOS9idWlsZC1vdXRwdXRzLm1rOjEwOTA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXNlcmYtbGliJyBmYWlsZWQKKyN8IG1ha2U6ICoqKiBbaW5zdGFsbC1zZXJmLWxpYl0gRXJyb3IgMQorUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcuaW5jCmluZGV4IDhjYjZmYmQuLmJmNjFiMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy5pbmMKQEAgLTExLDcgKzExLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0td2l0aC1weXRob24zPSR7UFlUSE9OfSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy8wMDAxLUFkZC1Ob2RlLTcueC1ha2EtVjgtNS4yLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy8wMDAxLUFkZC1Ob2RlLTcueC1ha2EtVjgtNS4yLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg1YzM5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLzAwMDEtQWRkLU5vZGUtNy54LWFrYS1WOC01LjItc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDMzMCBAQAorRnJvbSAxYTVhYWRjZDY2ZTg1YzYzZDIyOGJmZDgxMWE1MjFkNjE3YzIyYTM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF0cmljayBTY2huZWlkZXIgPHBhdHJpY2suc2NobmVpZGVyQG1lZXRub3cuZXU+CitEYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE1OjAyOjUzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBOb2RlIDcueCBha2EgVjggNS4yKyBzdXBwb3J0CisKKyogVXNlIFdlYWtDYWxsYmFja0luZm8gaW5zdGVhZCBvZiBXZWFrQ2FsbGJhY2tEYXRhCisqIFVzZSBHZXRQcml2YXRlIGluc3RlYWQgb2YgR2V0SGlkZGVuVmFsdWUKKyogQWRvcHRlZCBuZXcgc2lnbmF0dXJlIGZvciBTZXRXZWFrIHRvIHN1cHBvcnQgZGVzdHJ1Y3RvciBjYWxsaW5nCisqIFNldEFjY2Vzc29yIGRlcHJlY2F0aW9uIGZpeGVkCisqIFByb3BlciB2ZXJzaW9uIGNoZWNrcyB3aGVyZSBhcHBsaWNhYmxlCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3dpZy9zd2lnL3B1bGwvOTY4XQorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KKy0tLQorIExpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRjb2RlLnN3ZyAgICB8IDI3ICsrKysrKysrKysrKysrKysrLS0tLS0KKyBMaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0aGVscGVycy5zd2cgfCAyOSArKysrKysrKysrKysrKysrKysrKystLS0KKyBMaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0aW5pdC5zd2cgICAgfCAxNiArKysrKysrKysrKy0tCisgTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdHJ1bi5zd2cgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRjb2RlLnN3ZyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRjb2RlLnN3ZworaW5kZXggZmI3ZDU1Yy4uYjhjNTA4OSAxMDA2NDQKKy0tLSBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRjb2RlLnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGNvZGUuc3dnCitAQCAtMTMzLDEwICsxMzMsMTMgQEAgc3RhdGljIHZvaWQgJGpzd3JhcHBlcih2ODo6SXNvbGF0ZSAqaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHYKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBzdGF0aWNfY2FzdDxTV0lHVjhfUHJveHkgKj4ocGFyYW1ldGVyKTsKKyAjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IFNXSUdWOF9TRVRXRUFLX1ZFUlNJT04pCisgc3RhdGljIHZvaWQgJGpzd3JhcHBlcih2ODo6SXNvbGF0ZSAqaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gKm9iamVjdCwgU1dJR1Y4X1Byb3h5ICpwcm94eSkgeworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgc3RhdGljIHZvaWQgJGpzd3JhcHBlcihjb25zdCB2ODo6V2Vha0NhbGxiYWNrRGF0YTx2ODo6T2JqZWN0LCBTV0lHVjhfUHJveHk+ICZkYXRhKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gZGF0YS5HZXRWYWx1ZSgpOworICAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisrI2Vsc2UKKysgIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0luZm88U1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworKyAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisgI2VuZGlmCisgCisgICBpZihwcm94eS0+c3dpZ0NNZW1Pd24gJiYgcHJveHktPnN3aWdDT2JqZWN0KSB7CitAQCAtMTQ3LDcgKzE1MCw5IEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0CisgICB9CisgICBkZWxldGUgcHJveHk7CisgCisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgb2JqZWN0LkNsZWFyKCk7CisrI2VuZGlmCisgICAKKyAjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCAweDAzMTcxMCkKKyAgIG9iamVjdC5EaXNwb3NlKCk7CitAQCAtMTU1LDcgKzE2MCw3IEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0CisgICBvYmplY3QuRGlzcG9zZShpc29sYXRlKTsKKyAjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IDB4MDMyMTAwKQorICAgb2JqZWN0LT5EaXNwb3NlKGlzb2xhdGUpOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmplY3QtPkRpc3Bvc2UoKTsKKyAjZW5kaWYKKyB9CitAQCAtMTc3LDEwICsxODIsMTMgQEAgc3RhdGljIHZvaWQgJGpzd3JhcHBlcih2ODo6SXNvbGF0ZSAqaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHYKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBzdGF0aWNfY2FzdDxTV0lHVjhfUHJveHkgKj4ocGFyYW1ldGVyKTsKKyAjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IFNXSUdWOF9TRVRXRUFLX1ZFUlNJT04pCisgc3RhdGljIHZvaWQgJGpzd3JhcHBlcih2ODo6SXNvbGF0ZSAqaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8IHY4OjpPYmplY3Q+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpIHsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IGRhdGEuR2V0VmFsdWUoKTsKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrc3RhdGljIHZvaWQgJGpzd3JhcHBlcihjb25zdCB2ODo6V2Vha0NhbGxiYWNrSW5mbzxTV0lHVjhfUHJveHk+ICZkYXRhKSB7CisrICBTV0lHVjhfUHJveHkgKnByb3h5ID0gZGF0YS5HZXRQYXJhbWV0ZXIoKTsKKyAjZW5kaWYKKyAKKyAgIGlmKHByb3h5LT5zd2lnQ01lbU93biAmJiBwcm94eS0+c3dpZ0NPYmplY3QpIHsKK0BAIC0xOTcsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgJGpzd3JhcHBlcihjb25zdCB2ODo6V2Vha0NhbGxiYWNrRGF0YTx2ODo6T2JqZWN0LCBTV0lHVjhfUHJveHk+ICZkYXQKKyAgIG9iamVjdC0+RGlzcG9zZShpc29sYXRlKTsKKyAjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IFNXSUdWOF9TRVRXRUFLX1ZFUlNJT04pCisgICBvYmplY3QtPkRpc3Bvc2UoKTsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgb2JqZWN0LkNsZWFyKCk7CisgI2VuZGlmCisgfQorQEAgLTIxMSw3ICsyMTksMTEgQEAgc3RhdGljIHZvaWQgJGpzd3JhcHBlcihjb25zdCB2ODo6V2Vha0NhbGxiYWNrRGF0YTx2ODo6T2JqZWN0LCBTV0lHVjhfUHJveHk+ICZkYXQKKyAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICVmcmFnbWVudCgianNfZ2V0dGVyIiwgInRlbXBsYXRlcyIpCisgJXsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgc3RhdGljIFN3aWdWOFJldHVyblZhbHVlICRqc3dyYXBwZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHByb3BlcnR5LCBjb25zdCBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mbyAmaW5mbykgeworKyNlbHNlCisrc3RhdGljIFN3aWdWOFJldHVyblZhbHVlICRqc3dyYXBwZXIodjg6OkxvY2FsPHY4OjpOYW1lPiBwcm9wZXJ0eSwgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm8gJmluZm8pIHsKKysjZW5kaWYKKyAgIFNXSUdWOF9IQU5ETEVTQ09QRSgpOworICAgCisgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNyZXN1bHQ7CitAQCAtMjMzLDggKzI0NSwxMSBAQCBmYWlsOgorICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgJWZyYWdtZW50KCJqc19zZXR0ZXIiLCAidGVtcGxhdGVzIikKKyAleworLXN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHByb3BlcnR5LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKKy0gIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCAmaW5mbykgeworKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKytzdGF0aWMgdm9pZCAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCAmaW5mbykgeworKyNlbHNlCisrc3RhdGljIHZvaWQgJGpzd3JhcHBlcih2ODo6TG9jYWw8djg6Ok5hbWU+IHByb3BlcnR5LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkICZpbmZvKSB7CisrI2VuZGlmCisgICBTV0lHVjhfSEFORExFU0NPUEUoKTsKKyAgIAorICAgJGpzbG9jYWxzCitkaWZmIC0tZ2l0IGEvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnCitpbmRleCAwOTE0NjdkLi43NDYxMDc5IDEwMDY0NAorLS0tIGEvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnCisrKysgYi9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0aGVscGVycy5zd2cKK0BAIC02LDExICs2LDE2IEBAIHR5cGVkZWYgdjg6Okludm9jYXRpb25DYWxsYmFjayAgU3dpZ1Y4RnVuY3Rpb25DYWxsYmFjazsKKyB0eXBlZGVmIHY4OjpBY2Nlc3NvckdldHRlciAgICAgIFN3aWdWOEFjY2Vzc29yR2V0dGVyQ2FsbGJhY2s7CisgdHlwZWRlZiB2ODo6QWNjZXNzb3JTZXR0ZXIgICAgICBTd2lnVjhBY2Nlc3NvclNldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29ySW5mbyAgICAgICAgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgdHlwZWRlZiB2ODo6RnVuY3Rpb25DYWxsYmFjayAgICAgICAgICAgIFN3aWdWOEZ1bmN0aW9uQ2FsbGJhY2s7CisgdHlwZWRlZiB2ODo6QWNjZXNzb3JHZXR0ZXJDYWxsYmFjayAgICAgIFN3aWdWOEFjY2Vzc29yR2V0dGVyQ2FsbGJhY2s7CisgdHlwZWRlZiB2ODo6QWNjZXNzb3JTZXR0ZXJDYWxsYmFjayAgICAgIFN3aWdWOEFjY2Vzc29yU2V0dGVyQ2FsbGJhY2s7CisgdHlwZWRlZiB2ODo6UHJvcGVydHlDYWxsYmFja0luZm88dm9pZD4gIFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZDsKKysjZWxzZQorK3R5cGVkZWYgdjg6OkZ1bmN0aW9uQ2FsbGJhY2sgICAgICAgICAgICBTd2lnVjhGdW5jdGlvbkNhbGxiYWNrOworK3R5cGVkZWYgdjg6OkFjY2Vzc29yTmFtZUdldHRlckNhbGxiYWNrICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrOworK3R5cGVkZWYgdjg6OkFjY2Vzc29yTmFtZVNldHRlckNhbGxiYWNrICBTd2lnVjhBY2Nlc3NvclNldHRlckNhbGxiYWNrOworK3R5cGVkZWYgdjg6OlByb3BlcnR5Q2FsbGJhY2tJbmZvPHZvaWQ+ICBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQ7CisgI2VuZGlmCisgCisgLyoqCitAQCAtNjUsMTggKzcwLDM2IEBAIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X0FkZFN0YXRpY0Z1bmN0aW9uKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqLCBjb25zdCBjaGFyCisgICovCisgU1dJR1JVTlRJTUUgdm9pZCBTV0lHVjhfQWRkU3RhdGljVmFyaWFibGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmosIGNvbnN0IGNoYXIqIHN5bWJvbCwKKyAgIFN3aWdWOEFjY2Vzc29yR2V0dGVyQ2FsbGJhY2sgZ2V0dGVyLCBTd2lnVjhBY2Nlc3NvclNldHRlckNhbGxiYWNrIHNldHRlcikgeworKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iai0+U2V0QWNjZXNzb3IoU1dJR1Y4X1NZTUJPTF9ORVcoc3ltYm9sKSwgZ2V0dGVyLCBzZXR0ZXIpOworKyNlbHNlCisrICBvYmotPlNldEFjY2Vzc29yKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgU1dJR1Y4X1NZTUJPTF9ORVcoc3ltYm9sKSwgZ2V0dGVyLCBzZXR0ZXIpOworKyNlbmRpZgorIH0KKyAKKy1TV0lHUlVOVElNRSB2b2lkIEpTX3ZldG9fc2V0X3ZhcmlhYmxlKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCistICBjb25zdCBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQmIGluZm8pCisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorK1NXSUdSVU5USU1FIHZvaWQgSlNfdmV0b19zZXRfdmFyaWFibGUodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHByb3BlcnR5LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkJiBpbmZvKQorKyNlbHNlCisrU1dJR1JVTlRJTUUgdm9pZCBKU192ZXRvX3NldF92YXJpYWJsZSh2ODo6TG9jYWw8djg6Ok5hbWU+IHByb3BlcnR5LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkJiBpbmZvKQorKyNlbmRpZgorIHsKKyAgICAgY2hhciBidWZmZXJbMjU2XTsKKyAgICAgY2hhciBtc2dbNTEyXTsKKyAgICAgaW50IHJlczsKKyAKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICAgIHByb3BlcnR5LT5Xcml0ZVV0ZjgoYnVmZmVyLCAyNTYpOworICAgICByZXMgPSBzcHJpbnRmKG1zZywgIlRyaWVkIHRvIHdyaXRlIHJlYWQtb25seSB2YXJpYWJsZTogJXMuIiwgYnVmZmVyKTsKKysjZWxzZQorKyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gc3Byb3BlcnR5OworKyAgICBpZiAocHJvcGVydHktPlRvU3RyaW5nKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSkuVG9Mb2NhbCgmc3Byb3BlcnR5KSkgeworKyAgICAgIHNwcm9wZXJ0eS0+V3JpdGVVdGY4KGJ1ZmZlciwgMjU2KTsKKysgICAgICByZXMgPSBzcHJpbnRmKG1zZywgIlRyaWVkIHRvIHdyaXRlIHJlYWQtb25seSB2YXJpYWJsZTogJXMuIiwgYnVmZmVyKTsKKysgICAgfQorKyAgICBlbHNlIHsKKysgICAgICByZXMgPSAtMTsKKysgICAgfQorKyNlbmRpZgorIAorICAgICBpZihyZXM8MCkgeworICAgICAgIFNXSUdfZXhjZXB0aW9uKFNXSUdfRVJST1IsICJUcmllZCB0byB3cml0ZSByZWFkLW9ubHkgdmFyaWFibGUuIik7CitkaWZmIC0tZ2l0IGEvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnCitpbmRleCAzNGJlZmE3Li44NjAwOGQ5IDEwMDY0NAorLS0tIGEvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnCisrKysgYi9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0aW5pdC5zd2cKK0BAIC03LDE1ICs3LDI3IEBAIFNXSUdfVjhfU2V0TW9kdWxlKHZvaWQgKiwgc3dpZ19tb2R1bGVfaW5mbyAqc3dpZ19tb2R1bGUpIHsKKyAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBnbG9iYWxfb2JqID0gU1dJR1Y4X0NVUlJFTlRfQ09OVEVYVCgpLT5HbG9iYWwoKTsKKyAgIHY4OjpMb2NhbDx2ODo6RXh0ZXJuYWw+IG1vZCA9IFNXSUdWOF9FWFRFUk5BTF9ORVcoc3dpZ19tb2R1bGUpOworICAgYXNzZXJ0KCFtb2QuSXNFbXB0eSgpKTsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBnbG9iYWxfb2JqLT5TZXRIaWRkZW5WYWx1ZShTV0lHVjhfU1RSSU5HX05FVygic3dpZ19tb2R1bGVfaW5mb19kYXRhIiksIG1vZCk7CisrI2Vsc2UKKysgIHY4OjpMb2NhbDx2ODo6UHJpdmF0ZT4gcHJpdmF0ZUtleSA9IHY4OjpQcml2YXRlOjpGb3JBcGkodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgU1dJR1Y4X1NUUklOR19ORVcoInN3aWdfbW9kdWxlX2luZm9fZGF0YSIpKTsKKysgIGdsb2JhbF9vYmotPlNldFByaXZhdGUoU1dJR1Y4X0NVUlJFTlRfQ09OVEVYVCgpLCBwcml2YXRlS2V5LCBtb2QpOworKyNlbmRpZgorIH0KKyAKKyBTV0lHUlVOVElNRSBzd2lnX21vZHVsZV9pbmZvICoKKyBTV0lHX1Y4X0dldE1vZHVsZSh2b2lkICopIHsKKyAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBnbG9iYWxfb2JqID0gU1dJR1Y4X0NVUlJFTlRfQ09OVEVYVCgpLT5HbG9iYWwoKTsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBtb2R1bGVpbmZvID0gZ2xvYmFsX29iai0+R2V0SGlkZGVuVmFsdWUoU1dJR1Y4X1NUUklOR19ORVcoInN3aWdfbW9kdWxlX2luZm9fZGF0YSIpKTsKKysjZWxzZQorKyAgdjg6OkxvY2FsPHY4OjpQcml2YXRlPiBwcml2YXRlS2V5ID0gdjg6OlByaXZhdGU6OkZvckFwaSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBTV0lHVjhfU1RSSU5HX05FVygic3dpZ19tb2R1bGVfaW5mb19kYXRhIikpOworKyAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbW9kdWxlaW5mbzsKKysgIGlmICghZ2xvYmFsX29iai0+R2V0UHJpdmF0ZShTV0lHVjhfQ1VSUkVOVF9DT05URVhUKCksIHByaXZhdGVLZXkpLlRvTG9jYWwoJm1vZHVsZWluZm8pKQorKyAgICByZXR1cm4gMDsKKysjZW5kaWYKKyAKKy0gIGlmIChtb2R1bGVpbmZvLklzRW1wdHkoKSkKKysgIGlmIChtb2R1bGVpbmZvLklzRW1wdHkoKSB8fCBtb2R1bGVpbmZvLT5Jc051bGwoKSB8fCBtb2R1bGVpbmZvLT5Jc1VuZGVmaW5lZCgpKQorICAgeworICAgICAvLyBJdCdzIG5vdCB5ZXQgbG9hZGVkCisgICAgIHJldHVybiAwOworQEAgLTIzLDcgKzM1LDcgQEAgU1dJR19WOF9HZXRNb2R1bGUodm9pZCAqKSB7CisgCisgICB2ODo6TG9jYWw8djg6OkV4dGVybmFsPiBtb2R1bGVpbmZvX2V4dGVybiA9IHY4OjpMb2NhbDx2ODo6RXh0ZXJuYWw+OjpDYXN0KG1vZHVsZWluZm8pOworIAorLSAgaWYgKG1vZHVsZWluZm9fZXh0ZXJuLklzRW1wdHkoKSkKKysgIGlmIChtb2R1bGVpbmZvX2V4dGVybi5Jc0VtcHR5KCkgfHwgbW9kdWxlaW5mb19leHRlcm4tPklzTnVsbCgpIHx8IG1vZHVsZWluZm9fZXh0ZXJuLT5Jc1VuZGVmaW5lZCgpKQorICAgeworICAgICAvLyBTb21ldGhpbmcncyBub3QgcmlnaHQKKyAgICAgcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdHJ1bi5zd2cgYi9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0cnVuLnN3ZworaW5kZXggNWFjNTJhNS4uMzAwMDJjMCAxMDA2NDQKKy0tLSBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRydW4uc3dnCisrKysgYi9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0cnVuLnN3ZworQEAgLTE5Myw4ICsxOTMsMTAgQEAgcHVibGljOgorICAgdm9pZCAoKmR0b3IpICh2ODo6SXNvbGF0ZSAqaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8IHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkICpwYXJhbWV0ZXIpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyAgIHZvaWQgKCpkdG9yKSAodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PCB2ODo6T2JqZWN0ID4gKm9iamVjdCwgU1dJR1Y4X1Byb3h5ICpwcm94eSk7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIHZvaWQgKCpkdG9yKSAoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0YSk7CisrI2Vsc2UKKysgIHZvaWQgKCpkdG9yKSAoY29uc3Qgdjg6OldlYWtDYWxsYmFja0luZm88U1dJR1Y4X1Byb3h5PiAmZGF0YSk7CisgI2VuZGlmCisgfTsKKyAKK0BAIC0yNDEsOSArMjQzLDEyIEBAIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKHY4OjpJc29sYXRlICosIHY4OjpQZXJzaXN0ZW50PCB2ODo6VmFsCisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gc3RhdGljX2Nhc3Q8U1dJR1Y4X1Byb3h5ICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKHY4OjpJc29sYXRlICosIHY4OjpQZXJzaXN0ZW50PCB2ODo6T2JqZWN0ID4gKm9iamVjdCwgU1dJR1Y4X1Byb3h5ICpwcm94eSkgeworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgU1dJR1JVTlRJTUUgdm9pZCBTV0lHVjhfUHJveHlfRGVmYXVsdER0b3IoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworICAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisrI2Vsc2UKKytTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcihjb25zdCB2ODo6V2Vha0NhbGxiYWNrSW5mbzxTV0lHVjhfUHJveHk+ICZkYXRhKSB7CisrICBTV0lHVjhfUHJveHkgKnByb3h5ID0gZGF0YS5HZXRQYXJhbWV0ZXIoKTsKKyAjZW5kaWYKKyAKKyAgIGRlbGV0ZSBwcm94eTsKK0BAIC0zMTIsMTIgKzMxNywxOCBAQCBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9TZXRQcml2YXRlRGF0YSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iaiwgdm9pZCAqcHRyLCBzdworICAgfSBlbHNlIHsKKyAgICAgY2RhdGEtPmhhbmRsZS5NYWtlV2VhayhjZGF0YSwgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKTsKKyAgIH0KKy0jZWxzZQorKyNlbGlmaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBpZihjZGF0YS0+c3dpZ0NNZW1Pd24gJiYgKFNXSUdWOF9DbGllbnREYXRhKilpbmZvLT5jbGllbnRkYXRhKSB7CisgICAgIGNkYXRhLT5oYW5kbGUuU2V0V2VhayhjZGF0YSwgKChTV0lHVjhfQ2xpZW50RGF0YSopaW5mby0+Y2xpZW50ZGF0YSktPmR0b3IpOworICAgfSBlbHNlIHsKKyAgICAgY2RhdGEtPmhhbmRsZS5TZXRXZWFrKGNkYXRhLCBTV0lHVjhfUHJveHlfRGVmYXVsdER0b3IpOworICAgfQorKyNlbHNlCisrICBpZihjZGF0YS0+c3dpZ0NNZW1Pd24gJiYgKFNXSUdWOF9DbGllbnREYXRhKilpbmZvLT5jbGllbnRkYXRhKSB7CisrICAgIGNkYXRhLT5oYW5kbGUuU2V0V2VhayhjZGF0YSwgKChTV0lHVjhfQ2xpZW50RGF0YSopaW5mby0+Y2xpZW50ZGF0YSktPmR0b3IsIHY4OjpXZWFrQ2FsbGJhY2tUeXBlOjprUGFyYW1ldGVyKTsKKysgIH0gZWxzZSB7CisrICAgIGNkYXRhLT5oYW5kbGUuU2V0V2VhayhjZGF0YSwgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yLCB2ODo6V2Vha0NhbGxiYWNrVHlwZTo6a1BhcmFtZXRlcik7CisrICB9CisgI2VuZGlmCisgCisgI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgMHgwMzE3MTApCitAQCAtNDcwLDcgKzQ4MSwxNCBAQCBpbnQgU3dpZ1Y4UGFja2VkX0NoZWNrKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWxSZWYpIHsKKyAgIAorICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmpSZWYgPSB2YWxSZWYtPlRvT2JqZWN0KCk7CisgICBpZihvYmpSZWYtPkludGVybmFsRmllbGRDb3VudCgpIDwgMSkgcmV0dXJuIGZhbHNlOworKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmbGFnID0gb2JqUmVmLT5HZXRIaWRkZW5WYWx1ZShTV0lHVjhfU1RSSU5HX05FVygiX19zd2lnX19wYWNrZWRfZGF0YV9fIikpOworKyNlbHNlCisrICB2ODo6TG9jYWw8djg6OlByaXZhdGU+IHByaXZhdGVLZXkgPSB2ODo6UHJpdmF0ZTo6Rm9yQXBpKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIFNXSUdWOF9TVFJJTkdfTkVXKCJfX3N3aWdfX3BhY2tlZF9kYXRhX18iKSk7CisrICB2ODo6TG9jYWw8djg6OlZhbHVlPiBmbGFnOworKyAgaWYgKCFvYmpSZWYtPkdldFByaXZhdGUoU1dJR1Y4X0NVUlJFTlRfQ09OVEVYVCgpLCBwcml2YXRlS2V5KS5Ub0xvY2FsKCZmbGFnKSkKKysgICAgcmV0dXJuIGZhbHNlOworKyNlbmRpZgorICAgcmV0dXJuIChmbGFnLT5Jc0Jvb2xlYW4oKSAmJiBmbGFnLT5Cb29sZWFuVmFsdWUoKSk7CisgfQorIAorQEAgLTUxOSwxMCArNTM3LDEzIEBAIFNXSUdSVU5USU1FIHZvaWQgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0CisgICBTd2lnVjhQYWNrZWREYXRhICpjZGF0YSA9IHN0YXRpY19jYXN0PFN3aWdWOFBhY2tlZERhdGEgKj4ocGFyYW1ldGVyKTsKKyAjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IFNXSUdWOF9TRVRXRUFLX1ZFUlNJT04pCisgU1dJR1JVTlRJTUUgdm9pZCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZSh2ODo6SXNvbGF0ZSAqaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gKm9iamVjdCwgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEpIHsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIFNXSUdSVU5USU1FIHZvaWQgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU3dpZ1Y4UGFja2VkRGF0YT4gJmRhdGEpIHsKKyAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSBkYXRhLkdldFZhbHVlKCk7CisgICBTd2lnVjhQYWNrZWREYXRhICpjZGF0YSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisrI2Vsc2UKKytTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tJbmZvPFN3aWdWOFBhY2tlZERhdGE+ICZkYXRhKSB7CisrICBTd2lnVjhQYWNrZWREYXRhICpjZGF0YSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisgI2VuZGlmCisgCisgICBkZWxldGUgY2RhdGE7CitAQCAtNTM3LDcgKzU1OCw3IEBAIFNXSUdSVU5USU1FIHZvaWQgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iCisgICBvYmplY3QtPkRpc3Bvc2UoaXNvbGF0ZSk7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorICAgb2JqZWN0LT5EaXNwb3NlKCk7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iamVjdC5DbGVhcigpOworICNlbmRpZgorIH0KK0BAIC01NTAsNyArNTcxLDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBTV0lHVjhfTmV3UGFja2VkT2JqKHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzd2lnX3R5cGVfaW5mCisgLy8gIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqID0gU1dJR1Y4X09CSkVDVF9ORVcoKTsKKyAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmogPSBTV0lHVjhfT0JKRUNUX05FVygpOworIAorKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iai0+U2V0SGlkZGVuVmFsdWUoU1dJR1Y4X1NUUklOR19ORVcoIl9fc3dpZ19fcGFja2VkX2RhdGFfXyIpLCBTV0lHVjhfQk9PTEVBTl9ORVcodHJ1ZSkpOworKyNlbHNlCisrICB2ODo6TG9jYWw8djg6OlByaXZhdGU+IHByaXZhdGVLZXkgPSB2ODo6UHJpdmF0ZTo6Rm9yQXBpKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIFNXSUdWOF9TVFJJTkdfTkVXKCJfX3N3aWdfX3BhY2tlZF9kYXRhX18iKSk7CisrICBvYmotPlNldFByaXZhdGUoU1dJR1Y4X0NVUlJFTlRfQ09OVEVYVCgpLCBwcml2YXRlS2V5LCBTV0lHVjhfQk9PTEVBTl9ORVcodHJ1ZSkpOworKyNlbmRpZgorIAorICNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IDB4MDMxNTExKQorICAgb2JqLT5TZXRQb2ludGVySW5JbnRlcm5hbEZpZWxkKDAsIGNkYXRhKTsKK0BAIC01NzMsOSArNTk5LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBTV0lHVjhfTmV3UGFja2VkT2JqKHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzd2lnX3R5cGVfaW5mCisgICBjZGF0YS0+aGFuZGxlLk1ha2VXZWFrKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIGNkYXRhLCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZSk7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorICAgY2RhdGEtPmhhbmRsZS5NYWtlV2VhayhjZGF0YSwgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUpOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKTsKKyAvLyAgdjg6OlY4OjpTZXRXZWFrKCZjZGF0YS0+aGFuZGxlLCBjZGF0YSwgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUpOworKyNlbHNlCisrICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlLCB2ODo6V2Vha0NhbGxiYWNrVHlwZTo6a1BhcmFtZXRlcik7CisgI2VuZGlmCisgCisgI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgMHgwMzE3MTApCistLSAKKzIuOS41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnXzMuMC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnXzMuMC4xMi5iYgppbmRleCBkNWNhYTY3Li4xNWY3MzQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWdfMy4wLjEyLmJiCkBAIC0yLDYgKzIsNyBAQAogCiBTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Vc2UtcHJvYy1zZWxmLWV4ZS1mb3Itc3dpZy1zd2lnbGliLW9uLW5vbi1XaW4zMi1wbGF0LnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItcGNyZS1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLU5vZGUtNy54LWFrYS1WOC01LjItc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4MjEzM2RmYTdiYmE3NWZmOWFkOThhNzA0NmJlNjg3YyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2Y5ZjQ0N2FlN2VkMWM1MTcyMmVmYzQ1ZTdmMTQ0MThkMTVkN2ExZTE0M2FjOWYwOWE2Njg5OTlmNGZjOTRkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eC9zeXNsaW51eC1saWJ1cGxvYWQtZGVwZW5kLWxpYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXgvc3lzbGludXgtbGlidXBsb2FkLWRlcGVuZC1saWIucGF0Y2gKaW5kZXggYzA3MTRiNS4uNmJhOTZhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eC9zeXNsaW51eC1saWJ1cGxvYWQtZGVwZW5kLWxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c2xpbnV4L3N5c2xpbnV4L3N5c2xpbnV4LWxpYnVwbG9hZC1kZXBlbmQtbGliLnBhdGNoCkBAIC0yMCwxNSArMjAsMTIgQEAKICBjb20zMi9NYWtlZmlsZSB8ICAgIDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC0tZ2l0IGEvY29tMzIvTWFrZWZpbGUgYi9jb20zMi9NYWtlZmlsZQotaW5kZXggOWExNzIxYi4uZjE3MmRiMiAxMDA2NDQKLS0tLSBhL2NvbTMyL01ha2VmaWxlCi0rKysgYi9jb20zMi9NYWtlZmlsZQotQEAgLTIxLDMgKzIxLDQgQEAgcm9zaDogbGliIGxpYnV0aWwKLSBzYW1wbGVzOiBsaWJ1dGlsIGVsZmxpbmsvbGRsaW51eAotIHN5c2R1bXA6IGxpYnVwbG9hZCBncGxsaWIKK0luZGV4OiBzeXNsaW51eC02LjAzL2NvbTMyL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3lzbGludXgtNi4wMy5vcmlnL2NvbTMyL01ha2VmaWxlCisrKysgc3lzbGludXgtNi4wMy9jb20zMi9NYWtlZmlsZQorQEAgLTIyLDMgKzIyLDQgQEAgc2FtcGxlczogbGlidXRpbCBlbGZsaW5rL2xkbGludXgKKyBzeXNkdW1wOiBsaWIgbGlidXRpbCBsaWJ1cGxvYWQgZ3BsbGliCisgbHVhL3NyYzogY21lbnUgbW9kdWxlcwogIGdwbGxpYjogbGliCiArbGlidXBsb2FkOiBsaWIKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L2ZpbGVzLzAwMDEtcGFyc2UtdXRpbC1Eb24tdC11c2UteGxvY2FsZS5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFhMDQ2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L2ZpbGVzLzAwMDEtcGFyc2UtdXRpbC1Eb24tdC11c2UteGxvY2FsZS5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBkMzc5MTI2ZDU2ZDBiNmU5MzViMmQ5N2NhNzE1NzllNmNjNTRkMWJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMTM6Mzc6MjcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gcGFyc2UtdXRpbDogRG9uJ3QgdXNlIHhsb2NhbGUuaAotCi1nbGliYyAyLjI2IG5vIGxvbmdlciBjb250YWlucyB0aGUgbm9uLXN0YW5kYXJkIHhsb2NhbGUuaAotKGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nbGliYy93aWtpL1JlbGVhc2UvMi4yNiNSZW1vdmFsX29mXy4yN3hsb2NhbGUuaC4yNykKLQotVGhpcyBjaGFuZ2Ugc2hvdWxkbid0IGJyZWFrIGFueXRoaW5nIGFzIHhsb2NhbGUuaCB3YXMgYSBzdWJzZXQgb2YKLWxvY2FsZS5oLgotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQtYm9vdGNoYXJ0L3B1bGwvMzVdCi0tLS0KLSBzcmMvcGFyc2UtdXRpbC5jIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wYXJzZS11dGlsLmMgYi9zcmMvcGFyc2UtdXRpbC5jCi1pbmRleCA1NjM1YTY4Li4xYjIxNjljIDEwMDY0NAotLS0tIGEvc3JjL3BhcnNlLXV0aWwuYwotKysrIGIvc3JjL3BhcnNlLXV0aWwuYwotQEAgLTIxLDcgKzIxLDYgQEAKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8eGxvY2FsZS5oPgotIAotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMS1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzOTJjZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDQ1YjQwMWE5NDdhZjk0NGMyMGIzYzQ1MWEzNWRmZTUzYmNhNWVmM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFRodSwgMjggRGVjIDIwMTcgMjE6MjQ6NTcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIGNvbXBhcmlzb25fZm5fdCBpcyBnbGliYyBzcGVjaWZpYywgdXNlIHJhdyBzaWduYXR1cmUgaW4KKyBmdW5jdGlvbiBwb2ludGVyCisKK01ha2UgaXQgd29yayB3aXRoIG11c2wgd2hlcmUgY29tcGFyaXNvbl9mbl90IGlzIG5vdCBwcm92aWRlZAorCitSZXVzZSB0aGUgYXBwcm9hY2ggZnJvbSBzeXN0ZW1kOgorc3lzdGVtZC8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKKworQmFzZWQgb24gd29yayBieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworU2lnbmVkLW9mZi1ieTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3V0aWwuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy91dGlsLmggYi9zcmMvdXRpbC5oCitpbmRleCA1NjFmOWU3Li5lOWNmZDgxIDEwMDY0NAorLS0tIGEvc3JjL3V0aWwuaAorKysrIGIvc3JjL3V0aWwuaAorQEAgLTU3LDcgKzU3LDcgQEAgZXh0ZXJuIGNoYXIgKipzYXZlZF9hcmd2OworICAqIE5vcm1hbCBxc29ydCByZXF1aXJlcyBiYXNlIHRvIGJlIG5vbm51bGwuIEhlcmUgd2VyZSByZXF1aXJlCisgICogdGhhdCBvbmx5IGlmIG5tZW1iID4gMC4KKyAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBjb21wYXJpc29uX2ZuX3QgY29tcGFyKSB7Cisrc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgaW50ICgqY29tcGFyKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIHsKKyAgICAgICAgIGlmIChubWVtYiA8PSAxKQorICAgICAgICAgICAgICAgICByZXR1cm47CisgCistLSAKKzIuMTMuNgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDItbXVzbC1kb2VzLW5vdC1wcm92aWRlLXByaW50Zi1oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAyLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1wcmludGYtaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTYyNzJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAyLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1wcmludGYtaC5wYXRjaApAQCAtMCwwICsxLDQyMyBAQAorRnJvbSA2Zjk0NTQxODRhMDIzMTA4MDJiMWVkM2U0MDI4Nzk1OGI1MjRhNDk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUaHUsIDI4IERlYyAyMDE3IDIxOjM5OjUxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBtdXNsIGRvZXMgbm90IHByb3ZpZGUgcHJpbnRmLmgKKworUmV1c2UgdGhlIGFwcHJvYWNoIGZyb20gc3lzdGVtZDoKK3N5c3RlbWQvMDAwMS1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorCitPcmlnaW5hbCBwYXRjaCBhdXRob3I6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorSW5jbHVkZXMgd29yayBieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworU2lnbmVkLW9mZi1ieTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICB8ICAgNCArCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICB8ICAgMyArCisgc3JjL2xvZy5jICAgICAgICAgICAgICAgICB8ICAgMSArCisgc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrKysrCisgc3JjL3N0ZGlvLXV0aWwuaCAgICAgICAgICB8ICAgMSAtCisgNiBmaWxlcyBjaGFuZ2VkLCAzMzggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDliYmM4ZmEuLmI4ODdkMTYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0xNjksNiArMTY5LDEwIEBAIGxpYnV0aWxzX2xhX1NPVVJDRVMgPSBcCisgCXNyYy91dGlsLmMgXAorIAlzcmMvdXRpbC5oCisgCisraWYgIUhBVkVfUFJJTlRGX0ggCisrbGlidXRpbHNfbGFfU09VUkNFUyArPSBzcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCisrZW5kaWYKKysKKyBsaWJ1dGlsc19sYV9DRkxBR1MgPSBcCisgCSQoQU1fQ0ZMQUdTKSBcCisgCSQoTElCU1lTVEVNRF9DRkxBR1MpCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3Zjc0YmFjLi4wNjJlMzEwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC03Myw2ICs3Myw5IEBAIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfbGlic3lzdGVtZCIgIT0geG5vXSwKKyAgICAgICAgICldCisgKQorIAorK0FDX0NIRUNLX0hFQURFUlMoW3ByaW50Zi5oXSwgW10sIFtdKQorK0FNX0NPTkRJVElPTkFMKEhBVkVfUFJJTlRGX0gsIFt0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9wcmludF9oIiA9IHh5ZXNdKQorKworIENDX0NIRUNLX0ZMQUdTX0FQUEVORChbd2l0aF9jZmxhZ3NdLCBbQ0ZMQUdTXSwgW1wKKyAgICAgICAgIC1waXBlIFwKKyAgICAgICAgIC1XYWxsIFwKK2RpZmYgLS1naXQgYS9zcmMvbG9nLmMgYi9zcmMvbG9nLmMKK2luZGV4IDE1ZGVjODMuLmFlY2YyMzEgMTAwNjQ0CistLS0gYS9zcmMvbG9nLmMKKysrKyBiL3NyYy9sb2cuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3Vpby5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorICNpbmNsdWRlICJzZC1tZXNzYWdlcy5oIgorIAorICNpbmNsdWRlICJmZC11dGlsLmgiCitkaWZmIC0tZ2l0IGEvc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40OTQzN2U1CistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCitAQCAtMCwwICsxLDI3MyBAQAorKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KKysKKysvKioqCisrICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgorKworKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CisrCisrICBXaXRoIHBhcnRzIGZyb20gdGhlIG11c2wgQyBsaWJyYXJ5CisrICBDb3B5cmlnaHQgMjAwNS0yMDE0IFJpY2ggRmVsa2VyLCBldCBhbC4KKysKKysgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKysgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyoqKi8KKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbm9uYXJnKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIH0gd2hpbGUgKCpmbXQrKyAhPSAnJScpOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbnVtKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICBmb3IgKDsqZm10ID49ICcwJyAmJiAqZm10IDw9ICc5JzsgZm10KyspCisrICAgICAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87CisrICAgICAgICByZXR1cm4gZm10OworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9hcmduKGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90ICphcmcpCisreworKyAgICAgICAgY29uc3QgY2hhciAqcCA9IGZtdDsKKysgICAgICAgIHNpemVfdCB2YWwgPSAwOworKworKyAgICAgICAgaWYgKCpwIDwgJzEnIHx8ICpwID4gJzknKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICB2YWwgPSAxMCp2YWwgKyAoKnArKyAtICcwJyk7CisrICAgICAgICB9IHdoaWxlICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKKysKKysgICAgICAgIGlmICgqcCAhPSAnJCcpCisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICAqYXJnID0gdmFsOworKyAgICAgICAgcmV0dXJuIHArMTsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfZmxhZ3MoY29uc3QgY2hhciAqZm10KQorK3sKKysgICAgICAgIHdoaWxlICgxKSB7CisrICAgICAgICAgICAgICAgIHN3aXRjaCAoKmZtdCkgeworKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnMCc6CisrICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorKyAgICAgICAgICAgICAgICBjYXNlICcgJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnKyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ1wnJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnSSc6CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIH0KKyt9CisrCisrZW51bSBzdGF0ZSB7CisrICAgICAgICBCQVJFLAorKyAgICAgICAgTFBSRSwKKysgICAgICAgIExMUFJFLAorKyAgICAgICAgSFBSRSwKKysgICAgICAgIEhIUFJFLAorKyAgICAgICAgQklHTFBSRSwKKysgICAgICAgIFpUUFJFLAorKyAgICAgICAgSlBSRSwKKysgICAgICAgIFNUT1AKKyt9OworKworK2VudW0gdHlwZSB7CisrICAgICAgICBOT05FLAorKyAgICAgICAgUFRSLAorKyAgICAgICAgSU5ULAorKyAgICAgICAgVUlOVCwKKysgICAgICAgIFVMTE9ORywKKysgICAgICAgIExPTkcsCisrICAgICAgICBVTE9ORywKKysgICAgICAgIFNIT1JULAorKyAgICAgICAgVVNIT1JULAorKyAgICAgICAgQ0hBUiwKKysgICAgICAgIFVDSEFSLAorKyAgICAgICAgTExPTkcsCisrICAgICAgICBTSVpFVCwKKysgICAgICAgIElNQVgsCisrICAgICAgICBVTUFYLAorKyAgICAgICAgUERJRkYsCisrICAgICAgICBVSVBUUiwKKysgICAgICAgIERCTCwKKysgICAgICAgIExEQkwsCisrICAgICAgICBNQVhUWVBFCisrfTsKKysKKytzdGF0aWMgY29uc3Qgc2hvcnQgcGFfdHlwZXNbTUFYVFlQRV0gPSB7CisrICAgICAgICBbTk9ORV0gICA9IFBBX0lOVCwKKysgICAgICAgIFtQVFJdICAgID0gUEFfUE9JTlRFUiwKKysgICAgICAgIFtJTlRdICAgID0gUEFfSU5ULAorKyAgICAgICAgW1VJTlRdICAgPSBQQV9JTlQsCisrICAgICAgICBbVUxMT05HXSA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW0xPTkddICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbVUxPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtTSE9SVF0gID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKKysgICAgICAgIFtVU0hPUlRdID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKKysgICAgICAgIFtDSEFSXSAgID0gUEFfQ0hBUiwKKysgICAgICAgIFtVQ0hBUl0gID0gUEFfQ0hBUiwKKysgICAgICAgIFtMTE9OR10gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbU0laRVRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtJTUFYXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1BESUZGXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtVSVBUUl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW0RCTF0gICAgPSBQQV9ET1VCTEUsCisrICAgICAgICBbTERCTF0gICA9IFBBX0RPVUJMRSB8IFBBX0ZMQUdfTE9OR19ET1VCTEUKKyt9OworKworKyNkZWZpbmUgUyh4KSBbKHgpLSdBJ10KKysjZGVmaW5lIEUoeCkgKFNUT1AgKyAoeCkpCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3RhdGVzW11bJ3onLSdBJysxXSA9IHsKKysgICAgICAgIHsgLyogMDogYmFyZSB0eXBlcyAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKElOVCksIFMoJ2knKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVSU5UKSxTKCd1JykgPSBFKFVJTlQpLFMoJ3gnKSA9IEUoVUlOVCksIFMoJ1gnKSA9IEUoVUlOVCksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgUygnZicpID0gRShEQkwpLCBTKCdnJykgPSBFKERCTCksICBTKCdhJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoREJMKSwgUygnRicpID0gRShEQkwpLCBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoQ0hBUiksUygnQycpID0gRShJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdzJykgPSBFKFBUUiksIFMoJ1MnKSA9IEUoUFRSKSwgUygncCcpID0gRShVSVBUUiksUygnbicpID0gRShQVFIpLAorKyAgICAgICAgICAgICAgICBTKCdtJykgPSBFKE5PTkUpLAorKyAgICAgICAgICAgICAgICBTKCdsJykgPSBMUFJFLCAgIFMoJ2gnKSA9IEhQUkUsIFMoJ0wnKSA9IEJJR0xQUkUsCisrICAgICAgICAgICAgICAgIFMoJ3onKSA9IFpUUFJFLCAgUygnaicpID0gSlBSRSwgUygndCcpID0gWlRQUkUKKysgICAgICAgIH0sIHsgLyogMTogbC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKExPTkcpLCBTKCdpJykgPSBFKExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMT05HKSxTKCd1JykgPSBFKFVMT05HKSxTKCd4JykgPSBFKFVMT05HKSxTKCdYJykgPSBFKFVMT05HKSwKKysgICAgICAgICAgICAgICAgUygnZScpID0gRShEQkwpLCAgUygnZicpID0gRShEQkwpLCAgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksICBTKCdGJykgPSBFKERCTCksICBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoSU5UKSwgIFMoJ3MnKSA9IEUoUFRSKSwgIFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTExQUkUKKysgICAgICAgIH0sIHsgLyogMjogbGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMTE9ORyksIFMoJ2knKSA9IEUoTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMTE9ORyksUygndScpID0gRShVTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVMTE9ORyksUygnWCcpID0gRShVTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogMzogaC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKFNIT1JUKSwgUygnaScpID0gRShTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVVNIT1JUKSxTKCd1JykgPSBFKFVTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVVNIT1JUKSxTKCdYJykgPSBFKFVTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnaCcpID0gSEhQUkUKKysgICAgICAgIH0sIHsgLyogNDogaGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShDSEFSKSwgUygnaScpID0gRShDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVQ0hBUiksUygndScpID0gRShVQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVUNIQVIpLFMoJ1gnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNTogTC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKExEQkwpLFMoJ2YnKSA9IEUoTERCTCksUygnZycpID0gRShMREJMKSwgUygnYScpID0gRShMREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShMREJMKSxTKCdGJykgPSBFKExEQkwpLFMoJ0cnKSA9IEUoTERCTCksIFMoJ0EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA2OiB6LSBvciB0LXByZWZpeGVkIChhc3N1bWVkIHRvIGJlIHNhbWUgc2l6ZSkgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShQRElGRiksUygnaScpID0gRShQRElGRiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoU0laRVQpLFMoJ3UnKSA9IEUoU0laRVQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFNJWkVUKSxTKCdYJykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDc6IGotcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTUFYKSwgUygnaScpID0gRShJTUFYKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTUFYKSwgUygndScpID0gRShVTUFYKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTUFYKSwgUygnWCcpID0gRShVTUFYKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9CisrfTsKKysKKytzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKQorK3sKKysgICAgICAgIHNpemVfdCBpID0gMDsKKysgICAgICAgIHNpemVfdCBsYXN0ID0gMDsKKysKKysgICAgICAgIG1lbXNldCh0eXBlcywgMCwgbik7CisrCisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzaXplX3QgYXJnOworKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7CisrCisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbm9uYXJnKGZtdCk7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICclJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGFyZyA9IDA7CisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQsICZhcmcpOworKyAgICAgICAgICAgICAgICAvKiBmbGFncyAqLworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2ZsYWdzKGZtdCk7CisrICAgICAgICAgICAgICAgIC8qIHdpZHRoICovCisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcqJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3YXJnID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZ3YXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gd2FyZzsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA8PSBuICYmIHR5cGVzW3dhcmctMV0gPT0gTk9ORSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3dhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgIH0gZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7CisrICAgICAgICAgICAgICAgIC8qIHByZWNpc2lvbiAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnLicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJnID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQrMSwgJnBhcmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHBhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA8PSBuICYmIHR5cGVzW3BhcmctMV0gPT0gTk9ORSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbcGFyZy0xXSA9IElOVDsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy0nKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBtb2RpZmllciBhbmQgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KKysgICAgICAgICAgICAgICAgc3RhdGUgPSBCQVJFOworKyAgICAgICAgICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKmZtdCsrOworKworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJ0EnIHx8IGMgPiAneicpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlc1tzdGF0ZV1TKGMpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRlIDwgU1RPUCk7CisrCisrICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBFKE5PTkUpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAgICAgICAgICBpZiAoYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKytpOworKyAgICAgICAgICAgICAgICBpZiAoYXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gYXJnOworKyAgICAgICAgICAgICAgICBpZiAoYXJnIDw9IG4pCisrICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbYXJnLTFdID0gc3RhdGUgLSBTVE9QOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGxhc3QgPiBuKQorKyAgICAgICAgICAgICAgICBsYXN0ID0gbjsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYXN0OyBpKyspCisrICAgICAgICAgICAgICAgIHR5cGVzW2ldID0gcGFfdHlwZXNbdHlwZXNbaV1dOworKworKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrfQorZGlmZiAtLWdpdCBhL3NyYy9wYXJzZS1wcmludGYtZm9ybWF0LmggYi9zcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDM3MTE3NworLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorQEAgLTAsMCArMSw1NyBAQAorKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KKysKKysvKioqCisrICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgorKworKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CisrCisrICBXaXRoIHBhcnRzIGZyb20gdGhlIEdOVSBDIExpYnJhcnkKKysgIENvcHlyaWdodCAxOTkxLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI3ByYWdtYSBvbmNlCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKworKyNpZmRlZiBIQVZFX1BSSU5URl9ICisrI2luY2x1ZGUgPHByaW50Zi5oPgorKyNlbHNlCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKworK2VudW0gewkJCQkvKiBDIHR5cGU6ICovCisrICBQQV9JTlQsCQkJLyogaW50ICovCisrICBQQV9DSEFSLAkJCS8qIGludCwgY2FzdCB0byBjaGFyICovCisrICBQQV9XQ0hBUiwJCQkvKiB3aWRlIGNoYXIgKi8KKysgIFBBX1NUUklORywJCQkvKiBjb25zdCBjaGFyICosIGEgJ1wwJy10ZXJtaW5hdGVkIHN0cmluZyAqLworKyAgUEFfV1NUUklORywJCQkvKiBjb25zdCB3Y2hhcl90ICosIHdpZGUgY2hhcmFjdGVyIHN0cmluZyAqLworKyAgUEFfUE9JTlRFUiwJCQkvKiB2b2lkICogKi8KKysgIFBBX0ZMT0FULAkJCS8qIGZsb2F0ICovCisrICBQQV9ET1VCTEUsCQkJLyogZG91YmxlICovCisrICBQQV9MQVNUCisrfTsKKysKKysvKiBGbGFnIGJpdHMgdGhhdCBjYW4gYmUgc2V0IGluIGEgdHlwZSByZXR1cm5lZCBieSBgcGFyc2VfcHJpbnRmX2Zvcm1hdCcuICAqLworKyNkZWZpbmUJUEFfRkxBR19NQVNLCQkweGZmMDAKKysjZGVmaW5lCVBBX0ZMQUdfTE9OR19MT05HCSgxIDw8IDgpCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfRE9VQkxFCVBBX0ZMQUdfTE9OR19MT05HCisrI2RlZmluZQlQQV9GTEFHX0xPTkcJCSgxIDw8IDkpCisrI2RlZmluZQlQQV9GTEFHX1NIT1JUCQkoMSA8PCAxMCkKKysjZGVmaW5lCVBBX0ZMQUdfUFRSCQkoMSA8PCAxMSkKKysKKytzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKTsKKysKKysjZW5kaWYgLyogSEFWRV9QUklOVEZfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9zdGRpby11dGlsLmggYi9zcmMvc3RkaW8tdXRpbC5oCitpbmRleCAwYTY3NTU3Li4yMWNjNTE1IDEwMDY0NAorLS0tIGEvc3JjL3N0ZGlvLXV0aWwuaAorKysrIGIvc3JjL3N0ZGlvLXV0aWwuaAorQEAgLTE5LDcgKzE5LDYgQEAKKyAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKy0jaW5jbHVkZSA8cHJpbnRmLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0tIAorMi4xMy42CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMy1tdXNsLWRvZXMtbm90LXByb3ZpZGUtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMy1tdXNsLWRvZXMtbm90LXByb3ZpZGUtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjcwZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAzLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNzkzOTY0NDlkMjY0YmRlNThiNGRhYTNlZjZkZDk5ZjBmMDY1MjQyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyOCBEZWMgMjAxNyAyMjoxMDo1OCAtMDgwMAorU3ViamVjdDogW1BBVENIIDMvM10gbXVzbCBkb2VzIG5vdCBwcm92aWRlIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUKKworUmV1c2UgdGhlIGFwcHJvYWNoIGZyb20gc3lzdGVtZDoKK3N5c3RlbWQvMDAwNy1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCisKK0Jhc2VkIG9uIHdvcmsgYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9wYXRoLXV0aWwuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wYXRoLXV0aWwuYyBiL3NyYy9wYXRoLXV0aWwuYworaW5kZXggMmZiNjM2Ni4uMTJlMmUxNyAxMDA2NDQKKy0tLSBhL3NyYy9wYXRoLXV0aWwuYworKysrIGIvc3JjL3BhdGgtdXRpbC5jCitAQCAtNjMsNyArNjMsNyBAQCBjaGFyICoqcGF0aF9zdHJ2X3Jlc29sdmUoY2hhciAqKmwsIGNvbnN0IGNoYXIgKnByZWZpeCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAqczsKKyAKKyAgICAgICAgICAgICAgICAgZXJybm8gPSAwOworLSAgICAgICAgICAgICAgICB1ID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSh0KTsKKysgICAgICAgICAgICAgICAgdSA9IHJlYWxwYXRoKHQsIE5VTEwpOworICAgICAgICAgICAgICAgICBpZiAoIXUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4KSB7CistLSAKKzIuMTMuNgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGEwMDBlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2ggXAotIgotCi0jIE1vZGlmeSB0aGVzZSBhcyBkZXNpcmVkCi1QViA9ICIyMzErZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiOWVlMmZmYzFkYzZjODIwOTcyNWU2MjU5NTRiYmQ4OWY5NmNiNzEzOSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJzeXN0ZW1kIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUgaW50bHRvb2wiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBzeXN0ZW1kIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c3RlbWQtYm9vdGNoYXJ0LnNlcnZpY2UiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgaW50bHRvb2wubTQgaXMgYSBzb2Z0IGxpbmsgdG8gL3Vzci9zaGFyZS9hY2xvY2FsL200LCBkZWxldGUgaXQgYW5kIHVzZSB0aGUgb25lIGluIG91ciBzeXNyb290Ci0gICAgcm0gLWYgJHtTfS9tNC9pbnRsdG9vbC5tNAotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtYm9vdGNoYXJ0IgotCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1yb290cHJlZml4PSR7YmFzZV9wcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZTIxYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgpAQCAtMCwwICsxLDM3IEBACitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkxHUEwyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQtYm9vdGNoYXJ0LmdpdDtwcm90b2NvbD1odHRwcyBcCisiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1wcmludGYtaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtbXVzbC1kb2VzLW5vdC1wcm92aWRlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggXAorICAgICIKKworCisjIE1vZGlmeSB0aGVzZSBhcyBkZXNpcmVkCitQViA9ICIyMzMrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiZmUxYzVlNDFlNmJkYjc4MDQzZGFkOGZhODYzZmMyZGY2NmQxZGFkZiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJzeXN0ZW1kIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUgaW50bHRvb2wiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBzeXN0ZW1kIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c3RlbWQtYm9vdGNoYXJ0LnNlcnZpY2UiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgaW50bHRvb2wubTQgaXMgYSBzb2Z0IGxpbmsgdG8gL3Vzci9zaGFyZS9hY2xvY2FsL200LCBkZWxldGUgaXQgYW5kIHVzZSB0aGUgb25lIGluIG91ciBzeXNyb290CisgICAgcm0gLWYgJHtTfS9tNC9pbnRsdG9vbC5tNAorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtYm9vdGNoYXJ0IgorCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1yb290cHJlZml4PSR7YmFzZV9wcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudC9maXhfcmFubGliLnBhdGNoCmluZGV4IDVkNzA0NTYuLmI2NmY0MWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudC9maXhfcmFubGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudC9maXhfcmFubGliLnBhdGNoCkBAIC0xLDE0ICsxLDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Bva3ktc3BlY2lmaWMgZml4XQogCi0tLS0gYS9NYWtlZmlsZS5pbmMKLSsrKyBiL01ha2VmaWxlLmluYwotQEAgLTU3LDYgKzU3LDkgQEAKLSAgIGlmZXEgKCQoTk9fVVVJRCksKQotICAgICBMSUJTICs9IC1sdXVpZAorSW5kZXg6IGFnZW50L01ha2VmaWxlLmluYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFnZW50Lm9yaWcvTWFrZWZpbGUuaW5jCisrKysgYWdlbnQvTWFrZWZpbGUuaW5jCitAQCAtODgsNiArODgsOSBAQCBpZm5lcSAoJChPUFNZUyksV2luZG93cykKKyAgIGlmbmVxICgkKENDKSxnKyspCisgICAgIE9QVFMgKz0gLVdtaXNzaW5nLXByb3RvdHlwZXMKICAgIGVuZGlmCiArICBpZm5lcSAoJChSQU5MSUIpLCkKICsgICAgUkFOTElCICs9ICRACiArICBlbmRpZgogIGVuZGlmCiAgCi0gaWZuZXEgKCQoT1BTWVMpLFdpbmRvd3MpCisgIyBDb21waWxlciBmbGFncyBkZWZpbml0aW9uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgppbmRleCA5ZGIyNmRjLi5iYTE0YzQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKQEAgLTE2LDcgKzE2LDYgQEAKICAgICAgICAgICAgZmlsZTovL3RjZi1hZ2VudC5pbml0IFwKICAgICAgICAgICAgZmlsZTovL3RjZi1hZ2VudC5zZXJ2aWNlIFwKICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogREVQRU5EUyA9ICJ1dGlsLWxpbnV4IG9wZW5zc2wiCiBSREVQRU5EU18ke1BOfSA9ICJiYXNoIgpAQCAtMzEsNyArMzAsNyBAQAogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTkgMyA1IC4gc3RvcCAyMCAwIDEgMiA2IC4iCiAKICMgbWFuZ2xpbmcgbmVlZGVkIGZvciBtYWtlCi1NQUtFX0FSQ0ggPSAiYGVjaG8gJHtUQVJHRVRfQVJDSH0gfCBzZWQgcyxpLjg2LGk2ODYsIHwgc2VkIHMsYWFyY2g2NCxhNjQsYCIKK01BS0VfQVJDSCA9ICJgZWNobyAke1RBUkdFVF9BUkNIfSB8IHNlZCBzLGkuODYsaTY4NiwgfCBzZWQgcyxhYXJjaDY0LiosYTY0LGAiCiBNQUtFX09TID0gImBlY2hvICR7VEFSR0VUX09TfSB8IHNlZCBzLF5saW51eC4qLEdOVS9MaW51eCxgIgogCiBFWFRSQV9PRU1BS0UgPSAiTUFDSElORT0ke01BS0VfQVJDSH0gT1BTWVM9JHtNQUtFX09TfSAnQ0M9JHtDQ30nICdBUj0ke0FSfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1hZGQtc29uYW1lLnBhdGNoCmluZGV4IDk2Mjc2ZWEuLmQxZmM5YjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1hZGQtc29uYW1lLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1hZGQtc29uYW1lLnBhdGNoCkBAIC0xMSw3ICsxMSw3IEBACiArCSAgICAjIGZvbGxvd2luZyBsaW5lIGFkZGVkIGJ5IENXIGZvciBEZWJpYW4gR05VL0xpbnV4CiArCSAgICBUQ0xfU0hMSUJfTERfRVhUUkFTPSItV2wsLXNvbmFtZSxcJHtUQ0xfTElCX0ZJTEV9LjAiCiArCi0gCSAgICBTSExJQl9MRD0nJHtDQ30gLXNoYXJlZCAke0NGTEFHU30gJHtMREZMQUdTfScKKyAJICAgIFNITElCX0xEPScke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtc2hhcmVkJwogIAkgICAgRExfT0JKUz0idGNsTG9hZERsLm8iCiAgCSAgICBETF9MSUJTPSItbGRsIgogSW5kZXg6IHVuaXgvdGNsLm00CkBAIC0yNSw3ICsyNSw3IEBACiArCSAgICAjIGZvbGxvd2luZyBsaW5lIGFkZGVkIGJ5IENXIGZvciBEZWJpYW4gR05VL0xpbnV4CiArCSAgICBUQ0xfU0hMSUJfTERfRVhUUkFTPSItV2wsLXNvbmFtZSxcJHtUQ0xfTElCX0ZJTEV9LjAiCiArCi0gCSAgICBTSExJQl9MRD0nJHtDQ30gLXNoYXJlZCAke0NGTEFHU30gJHtMREZMQUdTfScKKyAJICAgIFNITElCX0xEPScke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtc2hhcmVkJwogIAkgICAgRExfT0JKUz0idGNsTG9hZERsLm8iCiAgCSAgICBETF9MSUJTPSItbGRsIgogSW5kZXg6IHVuaXgvTWFrZWZpbGUuaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYzczYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCi0KLSMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCi1MSUNFTlNFID0gInRjbCAmIEJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vd2luL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSIKLQotREVQRU5EUyA9ICJ0Y2wtbmF0aXZlIHpsaWIiCi0KLUJBU0VfU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdGNsLyR7QlBOfSR7UFZ9LXNyYy50YXIuZ3ogXAotICAgICAgICAgICAgICAgIGZpbGU6Ly90Y2wtYWRkLXNvbmFtZS5wYXRjaCIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9ub25fbmF0aXZlX2J1aWxkX2lzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm9fcGFja2FnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NjczYWFmNDViNWRlNWQ4ZGQ4MGJiM2RhYWViODgzOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YzZiOGY4NGUzNzMzMjQyM2NmZTViYWU1MDM0NDBkODg0NTBkYThjYzEyNDM0OTYyNDlmYWE1MjY4MDI2YmE1IgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke0JBU0VfU1JDX1VSSX0iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS91bml4IgotCi1WRVIgPSAiJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJpbmNvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtcHJpdmF0ZS1oZWFkZXJzCi0JbG4gLXNmIC4vdGNsc2gke1ZFUn0gJHtEfSR7YmluZGlyfS90Y2xzaAotCWxuIC1zZiB0Y2xzaDguNiAke0R9JHtiaW5kaXJ9L3RjbHNoJHtWRVJ9Ci0Jc2VkIC1pICJzOy1MJHtCfTstTCR7U1RBR0lOR19MSUJESVJ9O2ciIHRjbENvbmZpZy5zaAotCXNlZCAtaSAiczsnJHtXT1JLRElSfTsnJHtTVEFHSU5HX0lOQ0RJUn07ZyIgdGNsQ29uZmlnLnNoCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2xpYmRpcn0KLQlmb3IgZGlyIGluIGNvbXBhdCBnZW5lcmljIHVuaXg7IGRvCi0JCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vLi4vJGRpci8qLmggJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIvCi0JZG9uZQotfQotCi1TWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCi0KLVBBQ0tBR0VTID0rICJ0Y2wtbGliIgotRklMRVNfdGNsLWxpYiA9ICIke2xpYmRpcn0vbGlidGNsOC42LnNvLioiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RjbCR7VkVSfSAke2xpYmRpcn0vdGNsOC42ICR7bGliZGlyfS90Y2w4IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdGNsQ29uZmlnLnNoICR7bGliZGlyfS90Y2xvb0NvbmZpZy5zaCIKLQotIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQotUkRFUEVORFNfJHtQTn0gKz0gInRjbC1saWIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmdjYyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgdGNsdGVzdAotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwICR7Qn0vdGNsdGVzdCAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7U30vLi4vbGlicmFyeSAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7U30vLi4vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotIyBGaXggc29tZSBwYXRocyB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgVGNsIGV4dGVuc2lvbnMKLUJJTkNPTkZJR19HTE9CID0gIipDb25maWcuc2giCi0KLSMgRml4IHRoZSBwYXRoIGluIHNzdGF0ZQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIipDb25maWcuc2giCi0KLSMgQ2xlYW51cCBob3N0IHBhdGggZnJvbSAke2xpYmRpcn0vdGNsQ29uZmlnLnNoIGFuZCByZW1vdmUgdGhlCi0jICR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoIGZyb20gdGFyZ2V0Ci1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInRjbF9wYWNrYWdlX3ByZXByb2Nlc3MiCi10Y2xfcGFja2FnZV9wcmVwcm9jZXNzKCkgewotCXNlZCAtaSAtZSAiczske0RFQlVHX1BSRUZJWF9NQVB9OztnIiBcCi0JICAgICAgIC1lICJzOy1MJHtTVEFHSU5HX0xJQkRJUn07LUwke2xpYmRpcn07ZyIgXAotCSAgICAgICAtZSAiczske1NUQUdJTkdfSU5DRElSfTske2luY2x1ZGVkaXJ9O2ciIFwKLQkgICAgICAgLWUgInM7LS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9OztnIiBcCi0JICAgICAgICR7UEtHRH0ke2xpYmRpcn0vdGNsQ29uZmlnLnNoCi0KLQlybSAtZiAke1BLR0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS90Y2xDb25maWcuc2gKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJlMmU4OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi44LmJiCkBAIC0wLDAgKzEsMTAxIEBACitTVU1NQVJZID0gIlRvb2wgQ29tbWFuZCBMYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly90Y2wuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJkZXZlbC90Y2x0ayIKKworIyBodHRwOi8vd3d3LnRjbC50ay9zb2Z0d2FyZS90Y2x0ay9saWNlbnNlLmh0bWwKK0xJQ0VOU0UgPSAidGNsICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9jb21wYXQvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9saWJyYXJ5L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vbWFjb3N4L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vdGVzdHMvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi93aW4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorIgorCitERVBFTkRTID0gInRjbC1uYXRpdmUgemxpYiIKKworQkFTRV9TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS90Y2wvJHtCUE59JHtQVn0tc3JjLnRhci5neiBcCisgICAgICAgICAgICAgICAgZmlsZTovL3RjbC1hZGQtc29uYW1lLnBhdGNoIgorU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAorICAgICAgICAgICBmaWxlOi8vZml4X25vbl9uYXRpdmVfYnVpbGRfaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4X2lzc3VlX3dpdGhfb2xkX2Rpc3Ryb19nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ub19wYWNrYWdlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWx0ZXItaW5jbHVkZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjgxNjU2ZDMzNjdhZjAzMmUwYWU2MTU3ZWZmMTM0Zjg5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0M2NiMGMxNTE4Y2U0MmIwMGU3YzhmNmVhZGRkNTE5NWM1M2E5OGY5NGFkYzcxNzIzNGE2NWNiY2ZkM2Y5NmEiCisKK1NSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7QkFTRV9TUkNfVVJJfSIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCisKK1ZFUiA9ICIke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmluY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1ycGF0aCAtLWxpYmRpcj0ke2xpYmRpcn0iCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwllY2hvID4gJHtTfS8uLi9jb21wYXQvZml4c3RydG9kLmMKK30KKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1wcml2YXRlLWhlYWRlcnMKKwlsbiAtc2YgLi90Y2xzaCR7VkVSfSAke0R9JHtiaW5kaXJ9L3RjbHNoCisJbG4gLXNmIHRjbHNoOC42ICR7RH0ke2JpbmRpcn0vdGNsc2gke1ZFUn0KKwlzZWQgLWkgInM7LUwke0J9Oy1MJHtTVEFHSU5HX0xJQkRJUn07ZyIgdGNsQ29uZmlnLnNoCisJc2VkIC1pICJzOycke1dPUktESVJ9Oycke1NUQUdJTkdfSU5DRElSfTtnIiB0Y2xDb25maWcuc2gKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisJaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQorCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7bGliZGlyfQorCWZvciBkaXIgaW4gY29tcGF0IGdlbmVyaWMgdW5peDsgZG8KKwkJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS8ke0JQTn0ke1ZFUn0vJGRpcgorCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS8uLi8kZGlyLyouaCAke0R9JHtpbmNsdWRlZGlyfS8ke0JQTn0ke1ZFUn0vJGRpci8KKwlkb25lCit9CisKK1NZU1JPT1RfRElSUyArPSAiJHtiaW5kaXJfY3Jvc3NzY3JpcHRzfSIKKworUEFDS0FHRVMgPSsgInRjbC1saWIiCitGSUxFU190Y2wtbGliID0gIiR7bGliZGlyfS9saWJ0Y2w4LjYuc28uKiIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdGNsJHtWRVJ9ICR7bGliZGlyfS90Y2w4LjYgJHtsaWJkaXJ9L3RjbDgiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90Y2xDb25maWcuc2ggJHtsaWJkaXJ9L3RjbG9vQ29uZmlnLnNoIgorCisjIGlzbid0IGdldHRpbmcgcGlja2VkIHVwIGJ5IHNobGlicyBjb2RlCitSREVQRU5EU18ke1BOfSArPSAidGNsLWxpYiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZ2NjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSB0Y2x0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgJHtCfS90Y2x0ZXN0ICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtTfS8uLi9saWJyYXJ5ICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtTfS8uLi90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQorfQorCisjIEZpeCBzb21lIHBhdGhzIHRoYXQgbWlnaHQgYmUgdXNlZCBieSBUY2wgZXh0ZW5zaW9ucworQklOQ09ORklHX0dMT0IgPSAiKkNvbmZpZy5zaCIKKworIyBGaXggdGhlIHBhdGggaW4gc3N0YXRlCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiKkNvbmZpZy5zaCIKKworIyBDbGVhbnVwIGhvc3QgcGF0aCBmcm9tICR7bGliZGlyfS90Y2xDb25maWcuc2ggYW5kIHJlbW92ZSB0aGUKKyMgJHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS90Y2xDb25maWcuc2ggZnJvbSB0YXJnZXQKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAidGNsX3BhY2thZ2VfcHJlcHJvY2VzcyIKK3RjbF9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7CisJc2VkIC1pIC1lICJzOyR7REVCVUdfUFJFRklYX01BUH07O2ciIFwKKwkgICAgICAgLWUgInM7LUwke1NUQUdJTkdfTElCRElSfTstTCR7bGliZGlyfTtnIiBcCisJICAgICAgIC1lICJzOyR7U1RBR0lOR19JTkNESVJ9OyR7aW5jbHVkZWRpcn07ZyIgXAorCSAgICAgICAtZSAiczstLXN5c3Jvb3Q9JHtSRUNJUEVfU1lTUk9PVH07O2ciIFwKKwkgICAgICAgJHtQS0dEfSR7bGliZGlyfS90Y2xDb25maWcuc2gKKworCXJtIC1mICR7UEtHRH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCmluZGV4IDEyNjFjMDIuLmIyMmZhYWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKQEAgLTM0LDYgKzM0LDggQEAKICAgICAgICAgY2htb2QgK3ggJHtCfS92YXBpZ2VuLXdyYXBwZXIKIH0KIAorRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLWdyYXBodml6IgorCiAjIFZhcGlnZW4gd3JhcHBlciBuZWVkcyB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgaXQgd2lsbCBiZSB1c2VkCiAjIHRvIGJ1aWxkIHZhcGkgZmlsZXMgZnJvbSBhbGwgb3RoZXIgcGFja2FnZXMgd2l0aCB2YWxhIHN1cHBvcnQKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLzAwMDEtRGlzYWJsZS12YWxhZG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEvMDAwMS1EaXNhYmxlLXZhbGFkb2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIyN2I3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLzAwMDEtRGlzYWJsZS12YWxhZG9jLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYjZjYTM4NzZlMjMzYzcyNGZkNDYwYzE1NzlhYmM0YWI2M2M4ZDAxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IE9jdCAyMDE3IDE1OjIzOjA4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgdmFsYWRvYworCitWYWxhZG9jIGlzIGEgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIFZhbGEgc291cmNlcywgd2hpY2ggd2FzCityZWNlbnRseSBtZXJnZWQgaW50byB0aGUgbWFpbiB2YWxhIHNvdXJjZSB0cmVlLiBVbnN1cnByaXNpbmdseSwKK2l0J3MgYnJva2VuIGluIGNyb3NzLWNvbXBpbGUgZW52aXJvbm1lbnQgaW4gbXVsdGlwbGUgd2F5cywKK3NvIGxldCdzIGZpeCBpdCBzb21lIG90aGVyIHRpbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBlNWRjMGNjLi44MTNiM2ZjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTMsOCArMTMsNiBAQCBTVUJESVJTID0gXAorIAlkb2MgXAorIAlnb2JqZWN0LWludHJvc3BlY3Rpb24gXAorIAl2YXBpZ2VuIFwKKy0JbGlidmFsYWRvYyBcCistCXZhbGFkb2MgXAorIAkkKE5VTEwpCisgCisgaWYgRU5BQkxFX1VOVkVSU0lPTkVECistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS9kaXNhYmxlLWdyYXBodml6LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEvZGlzYWJsZS1ncmFwaHZpei5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWQxODZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEvZGlzYWJsZS1ncmFwaHZpei5wYXRjaApAQCAtMCwwICsxLDIyMyBAQAorRnJvbSBlYjcxNmRjODU2YzIwYjNkYTE0NmE0ZTgzZTk4MDBiZDFmNTNjNzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljbyBUenNjaGljaGhvbHogPHJpY290ekB1YnVudHUuY29tPgorRGF0ZTogV2VkLCA2IFNlcCAyMDE3IDE4OjUyOjU1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnZhbGFkb2M6IEFsbG93IGRpc2FibGluZyB0aGUgZ3JhcGh2aXogZGVwZW5kZW5jeSBvZgorIHZhbGFkb2MKKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzM3NQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbYnVnemlsbGEgbGluayBhYm92ZV0KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2MCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIGxpYnZhbGFkb2MvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAyNSArKysrKysrKysrKy0tLS0KKyBsaWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYSAgICAgIHwgIDggKysrKysKKyBsaWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhIHwgIDQgKysrCisgNCBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYzczZDVkNmIxLi4yOTFlNTAzZDUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTk4LDM0ICs5OCwzOCBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhHTU9EVUxFLCBnbW9kdWxlLTIuMCA+PSAkR0xJQl9SRVFVSVJFRCkKKyBBQ19TVUJTVChHTU9EVUxFX0NGTEFHUykKKyBBQ19TVUJTVChHTU9EVUxFX0xJQlMpCisgCistUEtHX0NIRUNLX01PRFVMRVMoTElCR1ZDLCBsaWJndmMgPj0gJExJQkdWQ19SRVFVSVJFRCkKKy1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBDR1JBUEhdKQorLWNncmFwaF90bXBfTElCQUREPSIkTElCQUREIgorLWNncmFwaF90bXBfQ0ZMQUdTPSIkQ0ZMQUdTIgorLUxJQkFERD0iJExJQkFERCAkTElCR1ZDX0xJQlMiCistQ0ZMQUdTPSIkQ0ZMQUdTICRMSUJHVkNfQ0ZMQUdTIgorLUFDX1JVTl9JRkVMU0UoCistCVtBQ19MQU5HX1NPVVJDRShbCistCQkjaW5jbHVkZSA8Z3ZjLmg+CistCistCQlpbnQgbWFpbih2b2lkKSB7CistCQkJI2lmZGVmIFdJVEhfQ0dSQVBICistCQkJCXJldHVybiAwOworLQkJCSNlbHNlCistCQkJCXJldHVybiAtMTsKKy0JCQkjZW5kaWYKKy0JCX0KKy0JXSldLCBbCistCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorLQkJVkFMQUZMQUdTPSIkVkFMQUZMQUdTIC1EIFdJVEhfQ0dSQVBIIgorLQkJaGF2ZV9jZ3JhcGg9eWVzCistCV0sIFsKKy0JCUFDX01TR19SRVNVTFQoW25vXSkKKy0JCWhhdmVfY2dyYXBoPW5vCistCV0KKy0pCistTElCQUREPSIkY2dyYXBoX3RtcF9MSUJBREQiCistQ0ZMQUdTPSIkY2dyYXBoX3RtcF9DRkxBR1MiCisrQUNfQVJHX0VOQUJMRShncmFwaHZpeiwgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1ncmFwaHZpel0sIFtEaXNhYmxlIGdyYXBodml6IHVzYWdlIGZvciB2YWxhZG9jXSksIGVuYWJsZV9ncmFwaHZpej0kZW5hYmxldmFsLCBlbmFibGVfZ3JhcGh2aXo9eWVzKQorK2lmIHRlc3QgeCRlbmFibGVfZ3JhcGh2aXogPSB4eWVzOyB0aGVuCisrCVBLR19DSEVDS19NT0RVTEVTKExJQkdWQywgbGliZ3ZjID49ICRMSUJHVkNfUkVRVUlSRUQpCisrCUFDX01TR19DSEVDS0lORyhbZm9yIENHUkFQSF0pCisrCVZBTEFGTEFHUz0iJFZBTEFGTEFHUyAtRCBIQVZFX0dSQVBIVklaIgorKwljZ3JhcGhfdG1wX0xJQkFERD0iJExJQkFERCIKKysJY2dyYXBoX3RtcF9DRkxBR1M9IiRDRkxBR1MiCisrCUxJQkFERD0iJExJQkFERCAkTElCR1ZDX0xJQlMiCisrCUNGTEFHUz0iJENGTEFHUyAkTElCR1ZDX0NGTEFHUyIKKysJQUNfUlVOX0lGRUxTRSgKKysJCVtBQ19MQU5HX1NPVVJDRShbCisrCQkJI2luY2x1ZGUgPGd2Yy5oPgorKwkJCWludCBtYWluKHZvaWQpIHsKKysJCQkJI2lmZGVmIFdJVEhfQ0dSQVBICisrCQkJCQlyZXR1cm4gMDsKKysJCQkJI2Vsc2UKKysJCQkJCXJldHVybiAtMTsKKysJCQkJI2VuZGlmCisrCQkJfQorKwkJXSldLCBbCisrCQkJQUNfTVNHX1JFU1VMVChbeWVzXSkKKysJCQlWQUxBRkxBR1M9IiRWQUxBRkxBR1MgLUQgV0lUSF9DR1JBUEgiCisrCQkJaGF2ZV9jZ3JhcGg9eWVzCisrCQldLCBbCisrCQkJQUNfTVNHX1JFU1VMVChbbm9dKQorKwkJCWhhdmVfY2dyYXBoPW5vCisrCQldCisrCSkKKysJTElCQUREPSIkY2dyYXBoX3RtcF9MSUJBREQiCisrCUNGTEFHUz0iJGNncmFwaF90bXBfQ0ZMQUdTIgorK2ZpCisrQU1fQ09ORElUSU9OQUwoRU5BQkxFX0dSQVBIVklaLCB0ZXN0IHgkZW5hYmxlX2dyYXBodml6ID0geHllcykKKyBBTV9DT05ESVRJT05BTChIQVZFX0NHUkFQSCwgdGVzdCAiJGhhdmVfY2dyYXBoIiA9ICJ5ZXMiKQorIAorIEFDX1BBVEhfUFJPRyhbWFNMVFBST0NdLCBbeHNsdHByb2NdLCA6KQorZGlmZiAtLWdpdCBhL2xpYnZhbGFkb2MvTWFrZWZpbGUuYW0gYi9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCitpbmRleCA4OTI0NWQ4NmIuLjdjMDc0OThiOSAxMDA2NDQKKy0tLSBhL2xpYnZhbGFkb2MvTWFrZWZpbGUuYW0KKysrKyBiL2xpYnZhbGFkb2MvTWFrZWZpbGUuYW0KK0BAIC0xMjcsMTAgKzEyNyw2IEBAIGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMgPSBcCisgCWNvbnRlbnQvdGFibGVyb3cudmFsYSBcCisgCWNvbnRlbnQvdGFnbGV0LnZhbGEgXAorIAljb250ZW50L3RleHQudmFsYSBcCistCWNoYXJ0cy9jaGFydC52YWxhIFwKKy0JY2hhcnRzL2NoYXJ0ZmFjdG9yeS52YWxhIFwKKy0JY2hhcnRzL2hpZXJhcmNoeWNoYXJ0LnZhbGEgXAorLQljaGFydHMvc2ltcGxlY2hhcnRmYWN0b3J5LnZhbGEgXAorIAlwYXJzZXIvbWFueXJ1bGUudmFsYSBcCisgCXBhcnNlci9vbmVvZnJ1bGUudmFsYSBcCisgCXBhcnNlci9vcHRpb25hbHJ1bGUudmFsYSBcCitAQCAtMTU4LDEzICsxNTQsMjQgQEAgbGlidmFsYWRvY19sYV9WQUxBU09VUkNFUyA9IFwKKyAJaGlnaGxpZ2h0ZXIvY29kZXRva2VuLnZhbGEgXAorIAloaWdobGlnaHRlci9oaWdobGlnaHRlci52YWxhIFwKKyAJaHRtbC9iYXNpY2RvY2xldC52YWxhIFwKKy0JaHRtbC9odG1sY2hhcnRmYWN0b3J5LnZhbGEgXAorIAlodG1sL2xpbmtoZWxwZXIudmFsYSBcCisgCWh0bWwvY3NzY2xhc3NyZXNvbHZlci52YWxhIFwKKyAJaHRtbC9odG1sbWFya3Vwd3JpdGVyLnZhbGEgXAorIAlodG1sL2h0bWxyZW5kZXJlci52YWxhIFwKKyAJJChOVUxMKQorIAorK2lmIEVOQUJMRV9HUkFQSFZJWgorK2xpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMgKz0gXAorKwljaGFydHMvY2hhcnQudmFsYSBcCisrCWNoYXJ0cy9jaGFydGZhY3RvcnkudmFsYSBcCisrCWNoYXJ0cy9oaWVyYXJjaHljaGFydC52YWxhIFwKKysJY2hhcnRzL3NpbXBsZWNoYXJ0ZmFjdG9yeS52YWxhIFwKKysJaHRtbC9odG1sY2hhcnRmYWN0b3J5LnZhbGEgXAorKwkkKE5VTEwpCisrCisrTElCR1ZDX1BLRyA9IC0tdmFwaWRpciAkKHRvcF9zcmNkaXIpL3ZhcGkgLS1wa2cgbGliZ3ZjCisrZW5kaWYKKysKKyBsaWJ2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQF9sYV9TT1VSQ0VTID0gXAorIAlsaWJ2YWxhZG9jLnZhbGEuc3RhbXAgXAorIAkkKGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVM6LnZhbGE9LmMpIFwKK0BAIC0xODIsOCArMTg5LDggQEAgbGlidmFsYWRvYy52YWxhLnN0YW1wOiAkKGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMpCisgCQktLWxpYnJhcnkgdmFsYWRvYyBcCisgCQktLXZhcGkgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAudmFwaSBcCisgCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGdtb2R1bGUtMi4wIFwKKy0JCS0tdmFwaWRpciAkKHRvcF9zcmNkaXIpL3ZhcGkgLS1wa2cgbGliZ3ZjIFwKKyAJCS0tdmFwaWRpciAkKHRvcF9zcmNkaXIpL2dlZSAtLXBrZyBnZWUgXAorKwkJJChMSUJHVkNfUEtHKSBcCisgCQktLXBrZyBjb25maWcgXAorIAkJJChmaWx0ZXIgJS52YWxhICUuYywkXikKKyAJdG91Y2ggJEAKK0BAIC0yMDksNiArMjE2LDkgQEAgbm9kaXN0X3BrZ2NvbmZpZ19EQVRBID0gdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAucGMKKyAKKyB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC5wYzogdmFsYWRvYy5wYworIAljcCAkPCAkQAorK2lmICFFTkFCTEVfR1JBUEhWSVoKKysJc2VkIC1pICJzL2xpYmd2YyAvL2ciICRACisrZW5kaWYKKyAKKyB2YXBpZGlyID0gJChkYXRhZGlyKS92YWxhL3ZhcGkKKyBkaXN0X3ZhcGlfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnZhcGkKK0BAIC0yMTYsNiArMjI2LDkgQEAgbm9kaXN0X3ZhcGlfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALmRlcHMKKyAKKyB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC5kZXBzOiB2YWxhZG9jLmRlcHMKKyAJY3AgJDwgJEAKKytpZiAhRU5BQkxFX0dSQVBIVklaCisrCXNlZCAtaSAicy9saWJndmMvL2ciICRACisrZW5kaWYKKyAKKyBFWFRSQV9ESVNUID0gXAorIAkkKGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMpIFwKK2RpZmYgLS1naXQgYS9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYSBiL2xpYnZhbGFkb2MvaHRtbC9iYXNpY2RvY2xldC52YWxhCitpbmRleCBjYzllYTRlZDcuLjQzMmMzODE4ZiAxMDA2NDQKKy0tLSBhL2xpYnZhbGFkb2MvaHRtbC9iYXNpY2RvY2xldC52YWxhCisrKysgYi9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQorQEAgLTQ2LDcgKzQ2LDExIEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBWYWxhZG9jLkh0bWwuQmFzaWNEb2NsZXQgOiBBcGkuVmlzaXRvciwgRG9jbGV0IHsKKyAJcHJvdGVjdGVkIEh0bWxSZW5kZXJlciBfcmVuZGVyZXI7CisgCXByb3RlY3RlZCBIdG1sLk1hcmt1cFdyaXRlciB3cml0ZXI7CisgCXByb3RlY3RlZCBIdG1sLkNzc0NsYXNzUmVzb2x2ZXIgY3NzcmVzb2x2ZXI7CisrI2lmIEhBVkVfR1JBUEhWSVoKKyAJcHJvdGVjdGVkIENoYXJ0cy5GYWN0b3J5IGltYWdlX2ZhY3Rvcnk7CisrI2Vsc2UKKysJcHJvdGVjdGVkIHZvaWQqIGltYWdlX2ZhY3Rvcnk7CisrI2VuZGlmCisgCXByb3RlY3RlZCBFcnJvclJlcG9ydGVyIHJlcG9ydGVyOworIAlwcm90ZWN0ZWQgc3RyaW5nIHBhY2thZ2VfbGlzdF9saW5rID0gIi4uL2luZGV4Lmh0bWwiOworIAorQEAgLTEyMCw3ICsxMjQsOSBAQCBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVmFsYWRvYy5IdG1sLkJhc2ljRG9jbGV0IDogQXBpLlZpc2l0b3IsIERvY2xldCB7CisgCQl0aGlzLmxpbmtlciA9IG5ldyBMaW5rSGVscGVyICgpOworIAorIAkJX3JlbmRlcmVyID0gbmV3IEh0bWxSZW5kZXJlciAoc2V0dGluZ3MsIHRoaXMubGlua2VyLCB0aGlzLmNzc3Jlc29sdmVyKTsKKysjaWYgSEFWRV9HUkFQSFZJWgorIAkJdGhpcy5pbWFnZV9mYWN0b3J5ID0gbmV3IFNpbXBsZUNoYXJ0RmFjdG9yeSAoc2V0dGluZ3MsIGxpbmtlcik7CisrI2VuZGlmCisgCX0KKyAKKyAKK0BAIC0xMDI1LDYgKzEwMzEsNyBAQCBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVmFsYWRvYy5IdG1sLkJhc2ljRG9jbGV0IDogQXBpLlZpc2l0b3IsIERvY2xldCB7CisgCX0KKyAKKyAJcHJvdGVjdGVkIHZvaWQgd3JpdGVfaW1hZ2VfYmxvY2sgKEFwaS5Ob2RlIGVsZW1lbnQpIHsKKysjaWYgSEFWRV9HUkFQSFZJWgorIAkJaWYgKGVsZW1lbnQgaXMgQ2xhc3MgfHwgZWxlbWVudCBpcyBJbnRlcmZhY2UgfHwgZWxlbWVudCBpcyBTdHJ1Y3QpIHsKKyAJCQl1bm93bmVkIHN0cmluZyBmb3JtYXQgPSAoc2V0dGluZ3MudXNlX3N2Z19pbWFnZXMgPyAic3ZnIiA6ICJwbmciKTsKKyAJCQl2YXIgY2hhcnQgPSBuZXcgQ2hhcnRzLkhpZXJhcmNoeSAoaW1hZ2VfZmFjdG9yeSwgZWxlbWVudCk7CitAQCAtMTA0NCw2ICsxMDUxLDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIFZhbGFkb2MuSHRtbC5CYXNpY0RvY2xldCA6IEFwaS5WaXNpdG9yLCBEb2NsZXQgeworIAkJCQkJCQkJCSAgIHRoaXMuZ2V0X2ltZ19wYXRoX2h0bWwgKGVsZW1lbnQsIGZvcm1hdCl9KTsKKyAJCQl3cml0ZXIuYWRkX3VzZW1hcCAoY2hhcnQpOworIAkJfQorKyNlbmRpZgorIAl9CisgCisgCXB1YmxpYyB2b2lkIHdyaXRlX25hbWVzcGFjZV9jb250ZW50IChOYW1lc3BhY2Ugbm9kZSwgQXBpLk5vZGU/IHBhcmVudCkgeworZGlmZiAtLWdpdCBhL2xpYnZhbGFkb2MvaHRtbC9odG1sbWFya3Vwd3JpdGVyLnZhbGEgYi9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCitpbmRleCAxNWVkOWVmZDEuLmZlMGQ3MDVkNCAxMDA2NDQKKy0tLSBhL2xpYnZhbGFkb2MvaHRtbC9odG1sbWFya3Vwd3JpdGVyLnZhbGEKKysrKyBiL2xpYnZhbGFkb2MvaHRtbC9odG1sbWFya3Vwd3JpdGVyLnZhbGEKK0BAIC00MywxMiArNDMsMTYgQEAgcHVibGljIGNsYXNzIFZhbGFkb2MuSHRtbC5NYXJrdXBXcml0ZXIgOiBWYWxhZG9jLk1hcmt1cFdyaXRlciB7CisgCQl9LCB4bWxfZGVjbGFyYXRpb24pOworIAl9CisgCisrI2lmIEhBVkVfR1JBUEhWSVoKKyAJcHVibGljIE1hcmt1cFdyaXRlciBhZGRfdXNlbWFwIChDaGFydHMuQ2hhcnQgY2hhcnQpIHsKKyAJCXN0cmluZz8gYnVmID0gKHN0cmluZz8pIGNoYXJ0LndyaXRlX2J1ZmZlciAoImNtYXB4Iik7CisgCQlpZiAoYnVmICE9IG51bGwpIHsKKyAJCQlyYXdfdGV4dCAoIlxuIik7CisgCQkJcmF3X3RleHQgKCghKSBidWYpOworIAkJfQorKyNlbHNlCisrCXB1YmxpYyBNYXJrdXBXcml0ZXIgYWRkX3VzZW1hcCAodm9pZCogY2hhcnQpIHsKKysjZW5kaWYKKyAKKyAJCXJldHVybiB0aGlzOworIAl9CistLSAKKzIuMTQuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTAwMGQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1naXQtdmVyc2lvbi1nZW4tZG9uLXQtYXBwZW5kLWRpcnR5LWlmLXdlLXJlLW5vdC1pbi1nLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNjMTkwMTQwOTNmMWEzZDk5NTM1NzI1M2I0NjMwODJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU5ZjIzY2U3MTFjMWE3MmNlNjY0ZDEwOTQ2ZmJjNTk1M2YwMWIwYjdmMmEzNTYyZTdhMDFlMzYyZDg2ZGUwNTkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM4LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM4LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJiYWY2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzguOC5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAorCSAgICAgZmlsZTovL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2ggXAorCSAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS12YWxhZG9jLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjM3ZWRkMDQ2N2QwNTZmZDllMzkzN2QwYmJjZWRhODBiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmYTc0NmI1MWNkNjZlNDM1NzdkMWRhMDZhODBiNzA4YzI4NzVjYWRhYWZlZTc3ZTk3MDBlYTM1Y2YyMzg4MmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItcmVtb3ZlLXJwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkxMTJkYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItcmVtb3ZlLXJwYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBmOTZjZjFmNGVhYTcyODYwYWI4YjVlMThhZDEwZmRjNzA0ZDc4YzVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IERlYyAyMDE1IDE1OjAxOjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSByZW1vdmUgcnBhdGgKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBjb25maWddCi1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci0tLS0KLSBub25lL3Rlc3RzL01ha2VmaWxlLmFtIHwgMyArLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ub25lL3Rlc3RzL01ha2VmaWxlLmFtIGIvbm9uZS90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggNTRmMmE3ZS4uMjViMGY0OSAxMDA2NDQKLS0tLSBhL25vbmUvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL25vbmUvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0zMjYsNyArMzI2LDYgQEAgdGhyZWFkZWRlcnJub19DRkxBR1MJKz0gLS1zdGQ9Yzk5Ci0gZW5kaWYKLSB0bHNfU09VUkNFUwkJPSB0bHMuYyB0bHMyLmMKLSB0bHNfREVQRU5ERU5DSUVTCT0gdGxzLnNvIHRsczIuc28KLS10bHNfTERGTEFHUwkJPSAtV2wsLXJwYXRoLCQoYWJzX3RvcF9idWlsZGRpcikvbm9uZS90ZXN0cwotIHRsc19MREFERAkJPSB0bHMuc28gdGxzMi5zbyAtbHB0aHJlYWQKLSB0bHNfc29fU09VUkNFUwkJPSB0bHNfc28uYwotIHRsc19zb19ERVBFTkRFTkNJRVMJPSB0bHMyLnNvCi1AQCAtMzM0LDcgKzMzMyw3IEBAIGlmIFZHQ09ORl9PU19JU19EQVJXSU4KLSAgdGxzX3NvX0xERkxBR1MJCT0gLWR5bmFtaWMgLWR5bmFtaWNsaWIgLWFsbF9sb2FkIC1mcGljCi0gIHRsc19zb19MREFERAkJPSBgcHdkYC90bHMyLnNvCi0gZWxzZQotLSB0bHNfc29fTERGTEFHUwkJPSAtV2wsLXJwYXRoLCQoYWJzX3RvcF9idWlsZGRpcikvbm9uZS90ZXN0cyAtc2hhcmVkIC1mUElDCi0rIHRsc19zb19MREZMQUdTCQk9IC1zaGFyZWQgLWZQSUMKLSAgdGxzX3NvX0xEQURECQk9IHRsczIuc28KLSBlbmRpZgotIHRsc19zb19DRkxBR1MJCT0gJChBTV9DRkxBR1MpIC1mUElDCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvbWFzay1DUFVJRC1zdXBwb3J0LWluLUhXQ0FQLW9uLWFhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YTk1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0ZpeCBydW50aW1lIFZhbGdyaW5kIGZhaWx1cmUKKworVGhpcyBwYXRjaCBpcyBkZXJpdmVkIGZyb20KK2h0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDIxMQorCitBdCBydW50aW1lIGl0IHdpbGwgZmFpbHMgbGlrZSB0aGlzOgorCitBUk02NCBmcm9udCBlbmQ6IGJyYW5jaF9ldGMKK2Rpc0luc3RyKGFybTY0KTogdW5oYW5kbGVkIGluc3RydWN0aW9uIDB4RDUzODAwMDEKK2Rpc0luc3RyKGFybTY0KTogMTEwMScwMTAxIDAwMTEnMTAwMCAwMDAwJzAwMDAgMDAwMCcwMDAxID09MjA4Mj09Cit2YWxncmluZDogVW5yZWNvZ25pc2VkIGluc3RydWN0aW9uIGF0IGFkZHJlc3MgMHg0MDE0ZTY0LgorCitUaGlzIHBhdGNoIGlzIGEgd29ya2Fyb3VuZCBieSBtYXNraW5nIGFsbCBIV0NBUAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFuanVrdW1hciBNYXRoYSA8bWFuanVrdW1hci5oYXJ0aGlrb3RlLW1hdGhhQHhpbGlueC5jb20+CisKK0luZGV4OiB2YWxncmluZC0zLjEzLjAvY29yZWdyaW5kL21faW5pdGltZy9pbml0aW1nLWxpbnV4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0tIHZhbGdyaW5kLTMuMTMuMC5vcmlnL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jICAgMjAxOC0wMy0wNCAyMjoyMjoxNy42OTg1NzI2NzUgLTA4MDAKKysrKyB2YWxncmluZC0zLjEzLjAvY29yZWdyaW5kL21faW5pdGltZy9pbml0aW1nLWxpbnV4LmMgICAgICAgIDIwMTgtMDMtMDQgMjI6MjM6MjUuNzI3ODE1NjI0IC0wODAwCitAQCAtNzAzLDYgKzcwMywxMiBAQAorICAgICAgICAgICAgICAgICAgIChhbmQgYW55dGhpbmcgYWJvdmUpIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFZhbGdyaW5kLiAqLworICAgICAgICAgICAgICAgIGF1eHYtPnUuYV92YWwgJj0gVktJX0hXQ0FQX1MzOTBfVEUgLSAxOworICAgICAgICAgICAgIH0KKysjICAgICAgICAgICBlbGlmIGRlZmluZWQoVkdQX2FybTY0X2xpbnV4KQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAvKiBMaW51eCA0LjExIHN0YXJ0ZWQgcG9wdWxhdGluZyB0aGlzIGZvciBhcm02NCwgYnV0IHdlCisrICAgICAgICAgICAgICAgICAgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgYW55LiAqLworKyAgICAgICAgICAgICAgIGF1eHYtPnUuYV92YWwgPSAwOworKyAgICAgICAgICAgIH0KKyAjICAgICAgICAgICBlbmRpZgorICAgICAgICAgICAgIGJyZWFrOworICMgICAgICAgIGlmIGRlZmluZWQoVkdQX3BwYzY0YmVfbGludXgpIHx8IGRlZmluZWQoVkdQX3BwYzY0bGVfbGludXgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMy4wLmJiCmluZGV4IGJmM2NmZDcuLmQzYWYzNWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xMy4wLmJiCkBAIC0xNiw3ICsxNiw2IEBACiAgICAgICAgICAgIGZpbGU6Ly9maXhlZC1wZXJsLXBhdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQWRkZWQtc3VwcG9ydC1mb3ItUFBDLWluc3RydWN0aW9ucy1tZmF0YnUtbWZhdGJsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNS1Nb2RpZnktdmdfdGVzdC13cmFwcGVyLXRvLXN1cHBvcnQtUFRFU1QtZm9ybWF0cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10ZXN0cy10aGF0LWZhaWwtdG8tYnVpbGQtb24tc29tZS1QUEMzMi1jb25maWcucGF0Y2ggXApAQCAtMzcsNiArMzYsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2xpbmstZ3otdGVzdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcHBjLWhlYWRlcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFzay1DUFVJRC1zdXBwb3J0LWluLUhXQ0FQLW9uLWFhcmNoNjQucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiODE3ZGQwOGYxZThhNjYzMzZiOWZmMjA2NDAwYTUzNjkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDc2NjgwZWYwM2YwMGNkNWU5NzBiYmRjZDRlNTdmYjFmNmRmN2QyZTJjMDcxNjM1ZWYyYmU3NDc5MDE5MGMzYiIKQEAgLTg2LDYgKzg2LDggQEAKIAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgIHJtIC1yZiAke1N9L2NvbmZpZy5oCisgICAgc2VkIC1pIC1lICdzOiQoYWJzX3RvcF9idWlsZGRpcik6JChwa2dsaWJkaXIpL3B0ZXN0OmcnICR7U30vbm9uZS90ZXN0cy9NYWtlZmlsZS5hbQorICAgIHNlZCAtaSAtZSAnczokKHRvcF9idWlsZGRpcik6JChwa2dsaWJkaXIpL3B0ZXN0OmcnICR7U30vbWVtY2hlY2svdGVzdHMvTWFrZWZpbGUuYW0KIH0KIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy96aXNvZnMtdG9vbHMvemlzb2ZzLXRvb2xzLW5hdGl2ZV8xLjAuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy1uYXRpdmVfMS4wLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMWMwNTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy96aXNvZnMtdG9vbHMvemlzb2ZzLXRvb2xzLW5hdGl2ZV8xLjAuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMgemlzb2ZzLXRvb2xzLW5hdGl2ZSBPRSBidWlsZCBmaWxlCi0jIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBjcmVhdGluZyBjb21wcmVzc2VkIENELVJPTSBmaWxlc3lzdGVtcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9mcmVlY29kZS5jb20vcHJvamVjdHMvemlzb2ZzLXRvb2xzIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1ERVBFTkRTID0gInpsaWItbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy96aXNvZnMtdG9vbHMvemlzb2ZzLXRvb2xzLSR7UFZ9LnRhci5iejIvMmQwZWQ4YzlhMWY2MGI0NWY5NDliMTM2ZjliZTFmNmMvemlzb2ZzLXRvb2xzLSR7UFZ9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZDBlZDhjOWExZjYwYjQ1Zjk0OWIxMzZmOWJlMWY2YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTRlNTNlNDkxNDkzNGQ0MTY2MDI0OGZiNTlkM2M4NzYxZjFmMWZkMTgwZDVlYzk5M2MxN2RkYjNhZmQwNGYzIgotCi1pbmhlcml0IG5hdGl2ZQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMUk9PVD0ke0R9IGJpbmRpcj0ke2JpbmRpcn0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYgppbmRleCA4Njg1MDViLi41MWFlNzdiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTcwMzAzLmJiCkBAIC0xNyw3ICsxNyw2IEBACiBERVBFTkRTID0gImJpc29uIGZsZXgiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peDItJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vbm8td2Vycm9yLnBhdGNoIFwKICAgICBmaWxlOi8vcmVuYW1lLXl5X3NjYW5fc3RyaW5nLW1hbnVhbGx5LnBhdGNoIFwKICAgICBmaWxlOi8vbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgZmlsZTovLzAwMDEtTGludXgtYWRkLXN1cHBvcnQtZm9yLVgzMi1BQkktY29tcGlsYXRpb24ucGF0Y2ggXApAQCAtNDksNyArNDgsNiBAQAogUFJPVklERVMgPSAiaWFzbCIKIFJQUk9WSURFU18ke1BOfSArPSAiaWFzbCIKIFJSRVBMQUNFU18ke1BOfSArPSAiaWFzbCIKLVJDT05GTElHSFRTXyR7UE59ICs9ICJpYXNsIgorUkNPTkZMSUNUU18ke1BOfSArPSAiaWFzbCIKIAotTkFUSVZFX0lOU1RBTExfV09SS1MgPSAiMSIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbm8td2Vycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbm8td2Vycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmU3YjU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLURlc2NyaXB0aW9uOiByZW1vdmUgLVdlcnJvciBmbGFnCi1Gb3J3YXJkZWQ6IG5vdC1uZWVkZWQKLUF1dGhvcjogRmF0aGkgQm91ZHJhIDxmYXRoaS5ib3VkcmFAbGluYXJvLm9yZz4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2VuZXJhdGUvdW5peC9pYXNsL01ha2VmaWxlIHwgICAxMiArKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi0tLS0gYS9nZW5lcmF0ZS91bml4L2lhc2wvTWFrZWZpbGUKLSsrKyBiL2dlbmVyYXRlL3VuaXgvaWFzbC9NYWtlZmlsZQotQEAgLTI2NiwxOSArMjY2LDE5IEBAICQoT0JKRElSKS9wcnBhcnNlci55Lmg6ICQoT0JKRElSKS9wcnBhcnMKLSAjIGJ5IHRoZSB1dGlsaXRpZXMgYWJvdmUgYW5kIHRoZXkgYXJlIG5vdCBuZWNlc3NhcmlseSBBTlNJIEMsIGV0Yy4KLSAjCi0gJChPQkpESVIpL2FzbGNvbXBpbGVybGV4Lm8gOiAgICQoT0JKRElSKS9hc2xjb21waWxlcmxleC5jCi0tCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtV2Vycm9yIC1vJEAgJDwKLSsJJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1vJEAgJDwKLSAKLSAkKE9CSkRJUikvYXNsY29tcGlsZXJwYXJzZS5vIDogJChPQkpESVIpL2FzbGNvbXBpbGVycGFyc2UuYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8Ci0gCi0gJChPQkpESVIpL2R0cGFyc2VybGV4Lm8gOiAgICAgICQoT0JKRElSKS9kdHBhcnNlcmxleC5jCi0tCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtV2Vycm9yIC1vJEAgJDwKLSsJJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1vJEAgJDwKLSAKLSAkKE9CSkRJUikvZHRwYXJzZXJwYXJzZS5vIDogICAgJChPQkpESVIpL2R0cGFyc2VycGFyc2UuYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8Ci0gCi0gJChPQkpESVIpL3BycGFyc2VybGV4Lm8gOiAgICAgICQoT0JKRElSKS9wcnBhcnNlcmxleC5jCi0tCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtV2Vycm9yIC1vJEAgJDwKLSsJJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1vJEAgJDwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2gKaW5kZXggOTMyYTRjMC4uZDYwNTZkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC9tYWtlZmlsZS1maXgtcGFyYWxsZWwucGF0Y2gKQEAgLTE1LDEzICsxNSwxMyBAQAogIE1ha2VmaWxlIHwgICAgNCArKystCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMmE5YjkxOC4uYWE3YzA0YSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTc1LDcgKzc1LDkgQEAgYXQ6ICQoQVRPQkpFQ1RTKQorSW5kZXg6IGF0LTMuMS4yMC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF0LTMuMS4yMC5vcmlnL01ha2VmaWxlLmluCisrKysgYXQtMy4xLjIwL01ha2VmaWxlLmluCitAQCAtNzYsNyArNzYsOSBAQCBhdDogJChBVE9CSkVDVFMpCiAgYXRkOiAkKFJVTk9CSkVDVFMpCi0gCSQoQ0MpICQoTERGTEFHUykgLW8gYXRkICQoUlVOT0JKRUNUUykgJChMSUJTKSAkKFBBTUxJQikKKyAJJChDQykgJChMREZMQUdTKSAtbyBhdGQgJChSVU5PQkpFQ1RTKSAkKExJQlMpICQoUEFNTElCKSAkKFNFTElOVVhMSUIpCiAgCiAteS50YWIuYyB5LnRhYi5oOiBwYXJzZXRpbWUueQogK3kudGFiLmg6IHkudGFiLmMKQEAgLTMwLDYgKzMwLDMgQEAKICAJJChZQUNDKSAtZCBwYXJzZXRpbWUueQogIAogIGxleC55eS5jOiBwYXJzZXRpbWUubAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKaW5kZXggOWI1MzdlZS4uOGZlM2I0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKQEAgLTUsNyArNSw3IEBACiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotREVQRU5EUyA9ICJmbGV4IGZsZXgtbmF0aXZlIFwKK0RFUEVORFMgPSAiZmxleCBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgogCiBSREVQRU5EU18ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9ERVBTfScsICcnLCBkKX0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCmluZGV4IGY0ZTFmN2EuLjljMmIwNjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKQEAgLTYsNyArNiw3IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHB0ZXN0CiAKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgorRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIgLS1leGNsdWRlPWFjbG9jYWwiCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtam9iLWNvbnRyb2wgLS13aXRob3V0LWJhc2gtbWFsbG9jIgogCiAjIElmIE5PTl9JTlRFUkFDVElWRV9MT0dJTl9TSEVMTFMgaXMgZGVmaW5lZCwgYWxsIGxvZ2luIHNoZWxscyByZWFkIHRoZQpAQCAtMjUsNyArMjUsNyBAQAogUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgogCi1ERVBFTkRTX2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1sb2NhbGUiCitERVBFTkRTX2FwcGVuZF9saWJjLWdsaWJjID0gIiB2aXJ0dWFsL2xpYmMtbG9jYWxlIgogUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLWZyLWZyIGxvY2FsZS1iYXNlLWRlLWRlIgogCiBVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXB0ZXN0IgpAQCAtMzMsMTIgKzMzLDYgQEAKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImhlYWRlcnNkaXI9JHtpbmNsdWRlZGlyfS8ke1BOfSIKIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCi0JCWNhdCAke1N9L2FjbG9jYWwubTQgPiAke1N9L2FjaW5jbHVkZS5tNAotCWZpCi19Ci0KIGRvX2NvbXBpbGVfcHRlc3QgKCkgewogCW9lX3J1bm1ha2UgYnVpbGR0ZXN0CiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2V4ZWN1dGVfY21kLnBhdGNoCmluZGV4IDgxZjhmMGEuLjk5NzBiNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2V4ZWN1dGVfY21kLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2V4ZWN1dGVfY21kLnBhdGNoCkBAIC0xLDggKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKLS0tLSBleGVjdXRlX2NtZC5jLm9yaWcJRnJpIEp1biAgMyAxMzozNDo0MiAyMDExCi0rKysgZXhlY3V0ZV9jbWQuYwlGcmkgSnVuICAzIDEzOjM2OjQxIDIwMTEKLUBAIC0yMjAyLDcgKzIyMDIsMTEgQEAKK0luZGV4OiBleGVjdXRlX2NtZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZXhlY3V0ZV9jbWQuYy5vcmlnCisrKysgZXhlY3V0ZV9jbWQuYworQEAgLTI0NTksNyArMjQ1OSwxMSBAQCBleGVjdXRlX3BpcGVsaW5lIChjb21tYW5kLCBhc3luY2hyb25vdXMsCiAgICAvKiBJZiB0aGUgYGxhc3RwaXBlJyBvcHRpb24gaXMgc2V0IHdpdGggc2hvcHQsIGFuZCBqb2IgY29udHJvbCBpcyBub3QKICAgICAgIGVuYWJsZWQsIGV4ZWN1dGUgdGhlIGxhc3QgZWxlbWVudCBvZiBub24tYXN5bmMgcGlwZWxpbmVzIGluIHRoZQogICAgICAgY3VycmVudCBzaGVsbCBlbnZpcm9ubWVudC4gKi8KQEAgLTEzLDUgKzE1LDUgQEAKICsjZW5kaWYKICsJCWFzeW5jaHJvbm91cyA9PSAwICYmIHBpcGVfb3V0ID09IE5PX1BJUEUgJiYgcHJldiA+IDApCiAgICAgIHsKLSAgICAgICBsc3RkaW4gPSBtb3ZlX3RvX2hpZ2hfZmQgKDAsIDAsIDI1NSk7CisgICAgICAgbHN0ZGluID0gbW92ZV90b19oaWdoX2ZkICgwLCAxLCAtMSk7CiAgICAgICAgaWYgKGxzdGRpbiA+IDApCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9wYXRoZXhwLWRlcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3BhdGhleHAtZGVwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNWJiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9wYXRoZXhwLWRlcC5wYXRjaApAQCAtMCwwICsxLDEzIEBACitwYXRoZXhwIGluY2x1ZGVzIGxpYmludGwuaCBidXQgZG9lc24ndCBkZXBlbmQgb24gaXQsIHRodXMgYSBidWlsZCByYWNlIGNhbiBvY2N1ci4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9wYXRjaC9pbmRleC5waHA/OTUwMykKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBjN2I2MmJjMC4uMjQxY2JmMTIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xMjgxLDIgKzEyODEsMyBAQCBub2pvYnMubzogYmFzaGludGwuaCAke0xJQklOVExfSH0gJChCQVNISU5DRElSKS9nZXR0ZXh0LmgKKyB5LnRhYi5vOiBiYXNoaW50bC5oICR7TElCSU5UTF9IfSAkKEJBU0hJTkNESVIpL2dldHRleHQuaAorK3BhdGhleHAubzogYmFzaGludGwuaCAke0xJQklOVExfSH0gJChCQVNISU5DRElSKS9nZXR0ZXh0LmgKKyBwY29tcGxldGUubzogYmFzaGludGwuaCAke0xJQklOVExfSH0gJChCQVNISU5DRElSKS9nZXR0ZXh0LmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzgyYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LjEyLmJiCkBAIC0wLDAgKzEsMjQgQEAKK3JlcXVpcmUgYmFzaC5pbmMKKworIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCisgICAgICAgICAgIGZpbGU6Ly9ta2J1aWx0aW5zX2hhdmVfc3RyaW5naXplLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1aWxkLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlc3Qtb3V0cHV0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tYnVpbHRpbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhdGhleHAtZGVwLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI3YzExMjk3MGNiZGNhZGZjMzMxZTEwZWViNWY2YWE0MSIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjU3ZDg0MzJiZTU0NTQxNTMxYTQ5NmZkNDkwNGZkYzA4YzEyNTQyZjQzNjA1YTkyMDI1OTRmYTVkNWY5ZjIzMzEiCisKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NDRkMDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotcmVxdWlyZSBiYXNoLmluYwotCi0jIEdQTHYyKyAoPCA0LjApLCBHUEx2MysgKD49IDQuMCkKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9iYXNoLyR7QlB9LnRhci5nejtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDAxO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwMSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDAyIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwMzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDMgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA0O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDU7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA1IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDYgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA3O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNyBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDg7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA4IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwOTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDkgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDEwO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMTE7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDExIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAxMjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTIgXAotICAgICAgICAgICBmaWxlOi8vZXhlY3V0ZV9jbWQucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgZmlsZTovL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVpbGQtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1vdXRwdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXJ1bi1jb3Byb2MtcnVuLWhlcmVkb2MtcnVuLWV4ZWNzY3JpcHQtcnVuLXRlc3QtZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZml4LXJ1bi1idWlsdGlucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWhlbHAtZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iYXNoLW1lbWxlYWstYnVnLWZpeC1mb3ItYnVpbHRpbi1jb21tYW5kLXJlYWQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjE0ODg4OGE3Yzk1YWMyMzcwNTU1OWI2ZjQ3N2RmZTI1IgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiZDg2YjMzOTJjMTIwMmU4ZmY1YTQyM2IzMDJlNjI4NGRiN2Y4ZjQzNWVhOWYzOWI1YjFiMjBmZDNhYzM2ZGZjYiIKLQotU1JDX1VSSVtwYXRjaDAwMS5tZDVzdW1dID0gIjgxN2QwMWE2YzBhZjZmNzkzMDhhOGI3YjY0OWU1M2Q4IgotU1JDX1VSSVtwYXRjaDAwMS5zaGEyNTZzdW1dID0gIjNlMjhkOTE1MzE3NTJkZjlhOGNiMTY3YWQwN2NjNTQyYWJhZjk0NGRlOTM1M2ZlOGM2YTUzNWM5ZjFmMTdmMGYiCi1TUkNfVVJJW3BhdGNoMDAyLm1kNXN1bV0gPSAiNzY1ZTE0Y2ZmMTJjNzI4NDAwOTc3MmU4ZTI0ZjJmZTAiCi1TUkNfVVJJW3BhdGNoMDAyLnNoYTI1NnN1bV0gPSAiNzAyMGEwMTgzZTE3YTcyMzNlNjY1Yjk3OWM3OGMxODRlYTM2OWNmYWYzZThiNGIxMWY1NTQ3ZWNiN2MxM2M1MyIKLVNSQ19VUklbcGF0Y2gwMDMubWQ1c3VtXSA9ICI0OWU3ZGE5M2JmMDdmNTEwYTJlYjZiYjQzYWMzZTVhMiIKLVNSQ19VUklbcGF0Y2gwMDMuc2hhMjU2c3VtXSA9ICI1MWRmNWE5MTkyZmRlZmUwZGRjYTRiZGYyOTA5MzJmNzRiZTAzZmZkMDUwM2EzZDExMmU0MTk5OTA1ZTcxOGIyIgotU1JDX1VSSVtwYXRjaDAwNC5tZDVzdW1dID0gIjQ1NTdkNjc0YWI1ODMxYTVmYTk4MDUyYWIxOWVkYWY0IgotU1JDX1VSSVtwYXRjaDAwNC5zaGEyNTZzdW1dID0gImFkMDgwYTMwYTRhYzZjMTI3MzM3MzYxN2YyOTYyOGNjMzIwYTM1YzhjZDA2OTEzODk0Nzk0MjkzZGM1MmM4YjMiCi1TUkNfVVJJW3BhdGNoMDA1Lm1kNXN1bV0gPSAiY2NlOTZkZDc3Y2RkMWQyOTNiZWVjMTA4NDhmNmNiYjUiCi1TUkNfVVJJW3BhdGNoMDA1LnNoYTI1NnN1bV0gPSAiMjIxZTRiNzI1Yjc3MGFkMGJiNjkyNGRmM2Y4ZDA0Zjg5ZWVjYTQ1NThmNmU0Yzc3N2RmYTkzZTk2NzA5MDUyOSIKLVNSQ19VUklbcGF0Y2gwMDYubWQ1c3VtXSA9ICJkMzM3OWY4ZDhhYmNlNWM2ZWUzMzhmOTMxYWQwMDhkNSIKLVNSQ19VUklbcGF0Y2gwMDYuc2hhMjU2c3VtXSA9ICI2YThlMmUyYTYxODBkMGYxY2UzOWRjZDY1MTYyMmZiNmQyZmQwNWRiN2M0NTlmNjRhZTQyZDY2N2YxZTM0NGI4IgotU1JDX1VSSVtwYXRjaDAwNy5tZDVzdW1dID0gImVjMzhjNzZjYTQzOWNhN2Y5YzE3OGU5YmFlZGU4NGZjIgotU1JDX1VSSVtwYXRjaDAwNy5zaGEyNTZzdW1dID0gImRlMWNjYzA3YjdiZmM5ZTI1MjQzYWQ4NTRmM2JiYjVkM2ViZjkxNTViMDQ3N2RmMTZhYWYwMGE3YjBkNWVkYWYiCi1TUkNfVVJJW3BhdGNoMDA4Lm1kNXN1bV0gPSAiZTBiYTE4YzFlM2I5NGY5MDVkYTliNWJmOWQzOGI1OGIiCi1TUkNfVVJJW3BhdGNoMDA4LnNoYTI1NnN1bV0gPSAiODYxNDQ3MDA0NjU5MzM2MzZkN2I5NDVlODliNzdkZjk1ZDM2MjAwMzQ3MjViZTE2MWNhMGNhNWE0MmUyMzliYSIKLVNSQ19VUklbcGF0Y2gwMDkubWQ1c3VtXSA9ICJlOTUyZDRmNDRlNjEyMDQ4OTMwYzU1OWQ5MGViOTliYiIKLVNSQ19VUklbcGF0Y2gwMDkuc2hhMjU2c3VtXSA9ICIwYjZiZGQxYTE4YTBkMjBlMzMwY2MzYmM3MWUwNDg4NjRlNGExMzY1MmUyOWRjMGViZjM5MThiZWE3MjkzNDNjIgotU1JDX1VSSVtwYXRjaDAxMC5tZDVzdW1dID0gIjU3YjViMzU5NTVkNjhmOWEwOWRiZWY2Yjg2ZDJjNzgyIgotU1JDX1VSSVtwYXRjaDAxMC5zaGEyNTZzdW1dID0gIjg0NjVjNmYyYzU2YWZlNTU5NDAyMjY1YjM5ZDllOTQzNjg5NTQ5MzBmOWFhN2YzZGZhNmQzNmRkNjY4NjhlMDYiCi1TUkNfVVJJW3BhdGNoMDExLm1kNXN1bV0gPSAiY2M4OTZlMWZhNjk2YjkzZGVkNTY4ZTU1N2UyMzkyZDUiCi1TUkNfVVJJW3BhdGNoMDExLnNoYTI1NnN1bV0gPSAiZGQ1NjQyNmVmN2Q3Mjk1ZTExMDdjMGIzZDA2YzE5MmViOTI5OGY0MDIzYzIwMmNhMmJhNjI2NmM2MTNkMTcwZCIKLVNSQ19VUklbcGF0Y2gwMTIubWQ1c3VtXSA9ICJmYTQ3ZmJmYTU2ZmI3ZTllNTM2N2YxOWE5ZGY1ZmM5ZSIKLVNSQ19VUklbcGF0Y2gwMTIuc2hhMjU2c3VtXSA9ICJmYWMyNzFkMmJmNjM3MmM5OTAzZTNiMzUzY2I5ZWRhMDQ0ZDdmZTM2YjVhYWI1MmYyMWYzZjIxY2Q2YTIwNjNlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoCmluZGV4IDUzNzllYjYuLmRiMDEzY2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaApAQCAtMTAsMTIgKzEwLDEyIEBACiAgcHBkYy9NYWtlZmlsZSB8ICAgMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGN1cHMtMi4wLjAvcHBkYy9NYWtlZmlsZQorSW5kZXg6IGN1cHMtMi4yLjYvcHBkYy9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGN1cHMtMi4wLjAub3JpZy9wcGRjL01ha2VmaWxlCi0rKysgY3Vwcy0yLjAuMC9wcGRjL01ha2VmaWxlCi1AQCAtMjQyLDggKzI0Miw4IEBAIGdlbnN0cmluZ3M6CQlnZW5zdHJpbmdzLm8gbGliY3Vwc3BwZGMuYQotIAkkKENYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gZ2Vuc3RyaW5ncyBnZW5zdHJpbmdzLm8gXAorLS0tIGN1cHMtMi4yLjYub3JpZy9wcGRjL01ha2VmaWxlCisrKysgY3Vwcy0yLjIuNi9wcGRjL01ha2VmaWxlCitAQCAtMjI4LDggKzIyOCw4IEBAIGdlbnN0cmluZ3M6CQlnZW5zdHJpbmdzLm8gbGliY3Vwc3BwZGMuYQorIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gZ2Vuc3RyaW5ncyBnZW5zdHJpbmdzLm8gXAogIAkJbGliY3Vwc3BwZGMuYSAuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgJChMSUJHU1NBUEkpICQoU1NMTElCUykgXAogIAkJJChETlNTRExJQlMpICQoQ09NTU9OTElCUykgJChMSUJaKQogLQllY2hvIEdlbmVyYXRpbmcgbG9jYWxpemF0aW9uIHN0cmluZ3MuLi4KQEAgLTI1LDggKzI1LDggQEAKICAKICAKICAjCi1AQCAtMjYwLDkgKzI2MCw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3UKLSAJJChDWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIHBwZGMtc3RhdGljIHBwZGMubyBsaWJjdXBzcHBkYy5hIFwKK0BAIC0yNDYsOSArMjQ2LDkgQEAgcHBkYy1zdGF0aWM6CQlwcGRjLm8gbGliY3Vwc3BwZGMuYSAuLi9jdQorIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gcHBkYy1zdGF0aWMgcHBkYy5vIGxpYmN1cHNwcGRjLmEgXAogIAkJLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpICQoRE5TU0RMSUJTKSBcCiAgCQkkKENPTU1PTkxJQlMpICQoTElCWikKIC0JZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgpAQCAtMzgsOCArMzgsOCBAQAogIAogIAogICMKLUBAIC0yODgsMTcgKzI4OCwxNyBAQCBwcGRpLXN0YXRpYzoJCXBwZGMtc3RhdGljIHBwZGkubyBsaWJjdXBzCi0gCSQoQ1hYKSAkKEFSQ0hGTEFHUykgJChMREZMQUdTKSAtbyBwcGRpLXN0YXRpYyBwcGRpLm8gbGliY3Vwc3BwZGMuYSBcCitAQCAtMjc0LDE3ICsyNzQsMTcgQEAgcHBkaS1zdGF0aWM6CQlwcGRjLXN0YXRpYyBwcGRpLm8gbGliY3VwcworIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gcHBkaS1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgXAogIAkJLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpICQoRE5TU0RMSUJTKSBcCiAgCQkkKENPTU1PTkxJQlMpICQoTElCWikKIC0JZWNobyBUZXN0aW5nIFBQRCBpbXBvcnRlci4uLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5NGI2Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBjdXBzLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMjZlNWEwYTU3NGE2OWZlMWQwMTA3OWIyOTMxZmM0OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTZkNGRiNzI2NTFjMzM1NDY5YWU1ZjM3YjBkYTcyYWM5Zjk3ZDczZTMwODM4ZDc4NzA2NWY1NTlkZWE5OGNjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWE5MzRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjYuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIGN1cHMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1mMjEyYjQzMzhkYjBkYThjYjg5MmU5NGJmMjk0OTQ2MCIKKworU1JDX1VSSVttZDVzdW1dID0gImU5MWMyNmQ4ZDk3YjVhMTYzMGE5NjJmNTMwZjAyMTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwMzg1Nzc4YzJiM2JkZjU1MDMwZDFjOTk5NzM0ZTIyNzc0Yzc5ZTM0MjVkOTEzMzljZTY3NzgyNTYyMDE2OWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYwppbmRleCA3YzViZTUwLi5jOWUzMTMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMKQEAgLTEwLDMgKzEwLDQgQEAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImRpZmYgY21wIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCmluZGV4IGJmNjYyNjcuLmRlMzgxMDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCkBAIC01LDExICs1LDEyIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIChkZWZhdWx0IGF1dG9tYWtlIGJlaGF2aW9yIGluY29tcGF0aWJsZSB3aXRoIHB0ZXN0KQogCi1kaWZmIC1ydU4gYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLS0tLSBhL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTI4IDE4OjE5OjEzLjUxMzk4MDk3NyArMDIwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTQtMDUtMjggMTg6MTk6MjEuMTI5NjYwMjE1ICswMjAwCi1AQCAtMiw3ICsyLDcgQEAKLSBBQ19JTklUKGV0aHRvb2wsIDMuMTQsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCitJbmRleDogZXRodG9vbC00LjEzL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGV0aHRvb2wtNC4xMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGV0aHRvb2wtNC4xMy9jb25maWd1cmUuYWMKK0BAIC0yLDcgKzIsNyBAQCBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwCisgQUNfSU5JVChldGh0b29sLCA0LjEzLCBuZXRkZXZAdmdlci5rZXJuZWwub3JnKQogIEFDX1BSRVJFUSgyLjUyKQogIEFDX0NPTkZJR19TUkNESVIoW2V0aHRvb2wuY10pCiAtQU1fSU5JVF9BVVRPTUFLRShbZ251XSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWZlOWI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCi1ERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvbmV0d29yay9ldGh0b29sL2V0aHRvb2wtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhmMTA3MjY3OTg4OGM5MzM1ZTQ5YjE3ZWZiNzk4YjRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmMmZkOTY5MmYzMTU5ZDNhYjFlNDFlNmY5YjdkOGRiMmE0NjkzZjFjYjIyMzQ4Yzg4YmE4OWY3MGYwZTY1MDMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0Ci1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAotICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NjJhNTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjEzLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmJhNDRlYjBjYTk2NzUyMzkyZTliZjhkYzgzYmEzMDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDMxMWM0YjU1N2M0NGM1MjQ4YWM1NDM2YjllMTljMzkxYTYwZDhlNDgzMGI2YTdmNDFiZTE2ZDg5YzA1NTZkZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICBjcCAke0J9L01ha2VmaWxlICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L3Rlc3QtY21kbGluZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWZlYXR1cmVzICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vZXRodG9vbCAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9ldGh0b29sCisgICBzZWQgLWkgJ3MvXk1ha2VmaWxlL19NYWtlZmlsZS8nICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay00LjEuNC90ZXN0LWFycmF5aW5kMS1SZW1vdmUtaGFzaGJhbmctbGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQyNjJlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay00LjEuNC90ZXN0LWFycmF5aW5kMS1SZW1vdmUtaGFzaGJhbmctbGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYTNhM2YyNjA3ODIyM2M0Nzg3MWM3YjUzZTVjMDE1YWQxNjNhZTA0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBUaHUsIDMgTm92IDIwMTYgMTQ6NTA6NTIgLTAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdC9hcnJheWluZDE6IFJlbW92ZSBoYXNoYmFuZyBsaW5lCi1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1SZW1vdmUgIiMhL3Vzci9sb2NhbC9iaW4vYXdrIC1mIiBhcyBub25lIG9mIHRoZSBvdGhlciBhd2sgc2NyaXB0cyBpbiB0aGUKLXRlc3Qgc3VpdGUgaGF2ZSBhIGhhc2hiYW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KLQotWzFdIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWdhd2svMjAxNi0xMS9tc2cwMDAwMy5odG1sCi0KLVNpZ25lZC1vZmYtYnk6IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+Ci0tLS0KLSB0ZXN0L2FycmF5aW5kMS5hd2sgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdC9hcnJheWluZDEuYXdrIGIvdGVzdC9hcnJheWluZDEuYXdrCi1pbmRleCA1ZDRhNmYzLi41OWU4YjRlIDEwMDc1NQotLS0tIGEvdGVzdC9hcnJheWluZDEuYXdrCi0rKysgYi90ZXN0L2FycmF5aW5kMS5hd2sKLUBAIC0xLDQgKzEsMyBAQAotLSMhL3Vzci9sb2NhbC9iaW4vYXdrIC1mCi0gIyB0aGlzIHNjcmlwdCByZW51bXMgcGVkaWdyZWVzIHdpdGggbWV0YWZvdW5kZXJzCi0gIyBzbyB0aGF0IHRoZXkgYXJlIGFkZGVkICpiZWZvcmUqcmVndWxhciBhbmltYWxzCi0gIyBtZiBhcmUgYXNjZXJ0YWluZWQgYmVjYXVzZSB0aGV5IGFyZSBub3QgaW4gdGhlIDFzdCBjb2x1bW4KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2svcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay00LjEuNC9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrL3J1bi1wdGVzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a180LjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk1ZDM3ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a180LjEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIGF3ayB0ZXh0IHByb2Nlc3NpbmcgdXRpbGl0eSIKLURFU0NSSVBUSU9OID0gIlRoZSBHTlUgdmVyc2lvbiBvZiBhd2ssIGEgdGV4dCBwcm9jZXNzaW5nIHV0aWxpdHkuIFwKLUF3ayBpbnRlcnByZXRzIGEgc3BlY2lhbC1wdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIGRvIFwKLXF1aWNrIGFuZCBlYXN5IHRleHQgcGF0dGVybiBtYXRjaGluZyBhbmQgcmVmb3JtYXR0aW5nIGpvYnMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nYXdrLyIKLUJVR1RSQUNLRVIgID0gImJ1Zy1nYXdrQGdudS5vcmciCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLSMgZ2F3ayA8PSAzLjEuNTogR1BMdjIKLSMgZ2F3ayA+PSAzLjEuNjogR1BMdjMKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyArPSAicmVhZGxpbmUiCi0KLVBBQ0tBR0VDT05GSUdbbXBmcl0gPSAiLS13aXRoLW1wZnIsLS13aXRob3V0LW1wZnIsIG1wZnIiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nYXdrL2dhd2stJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWFycmF5aW5kMS1SZW1vdmUtaGFzaGJhbmctbGluZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMjBjOTRjYTUxYjZlYmZjOWJmZmI5MGY5NWM4ZmZiYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YzAzMDgwZTJiNWE1NjI2M2U4NzgzZjZmMWYzMDYzOThkNDU5MWJlMTgyNTQwNDFmM2Y1NDdlZmVmOTQ0ZDM1IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hd2siCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5sYSIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiYXdrIgotQUxURVJOQVRJVkVfVEFSR0VUW2F3a10gPSAiJHtiaW5kaXJ9L2dhd2siCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgcmVtb3ZlIHRoZSBsaW5rIHNpbmNlIHdlIGRvbid0IHBhY2thZ2UgaXQKLQlybSAke0R9JHtiaW5kaXJ9L2F3awotfQotCi1pbmhlcml0IHB0ZXN0Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWZvciBpIGluIGBncmVwIC12RSAiQHxeJHwjfEd0LWR1bW15IiAke1N9L3Rlc3QvTWFrZXRlc3RzIHxhd2sgLUY6ICd7cHJpbnQgJDF9J2AgTWFrZXRlc3RzIGluY2xpYi5hd2s7IFwKLQkgIGRvIGNwICR7U30vdGVzdC8kaSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgXAotCWRvbmUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a180LjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2Y3OWEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4yLjAuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJHTlUgYXdrIHRleHQgcHJvY2Vzc2luZyB1dGlsaXR5IgorREVTQ1JJUFRJT04gPSAiVGhlIEdOVSB2ZXJzaW9uIG9mIGF3aywgYSB0ZXh0IHByb2Nlc3NpbmcgdXRpbGl0eS4gXAorQXdrIGludGVycHJldHMgYSBzcGVjaWFsLXB1cnBvc2UgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gZG8gXAorcXVpY2sgYW5kIGVhc3kgdGV4dCBwYXR0ZXJuIG1hdGNoaW5nIGFuZCByZWZvcm1hdHRpbmcgam9icy4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dhd2svIgorQlVHVFJBQ0tFUiAgPSAiYnVnLWdhd2tAZ251Lm9yZyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworIyBnYXdrIDw9IDMuMS41OiBHUEx2MgorIyBnYXdrID49IDMuMS42OiBHUEx2MworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTICs9ICJyZWFkbGluZSIKKworUEFDS0FHRUNPTkZJR1ttcGZyXSA9ICItLXdpdGgtbXBmciwtLXdpdGhvdXQtbXBmciwgbXBmciIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dhd2svZ2F3ay0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjBiNTk4YzMxYmM3MDNkNjYwODJiZDk1OGQ0MTg5OTgwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4ODA0NmM2ZTgzOTZlZTU0OGJjYjk0MWUxNmRlZjgwOWI3YjU1YjYwYTEwNDRiNWRkMjU0MDk0ZjM0N2M3ZDkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2F3ayIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qLmxhIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhd2siCitBTFRFUk5BVElWRV9UQVJHRVRbYXdrXSA9ICIke2JpbmRpcn0vZ2F3ayIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyByZW1vdmUgdGhlIGxpbmsgc2luY2Ugd2UgZG9uJ3QgcGFja2FnZSBpdAorCXJtICR7RH0ke2JpbmRpcn0vYXdrCit9CisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlta2RpciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJZm9yIGkgaW4gYGdyZXAgLXZFICJAfF4kfCN8R3QtZHVtbXkiICR7U30vdGVzdC9NYWtldGVzdHMgfGF3ayAtRjogJ3twcmludCAkMX0nYCBNYWtldGVzdHMgaW5jbGliLmF3azsgXAorCSAgZG8gY3AgJHtTfS90ZXN0LyRpKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBcCisJZG9uZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZWVkMTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA4YWJkMjIwMTBlYjRkYjBmYjFiMTBlNDMwZDVmNWQ4M2UwMTVlZjcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IE1vbiwgMyBPY3QgMjAxNiAwMTo0NjoyOCArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk3MTY5OiBCZSByaWdvcm91cyB3aXRoIFNBRkVSIHBlcm1pc3Npb25zCi0KLU9uY2Ugd2UndmUgb3BlbmVkIG91ciBpbnB1dCBmaWxlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgZW5mb3JjZSB0aGUgU0FGRVIKLXJ1bGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTc5NzcKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBwc2kvemZpbGUuYyB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcHNpL3pmaWxlLmMgYi9wc2kvemZpbGUuYwotaW5kZXggYjZjYWVhMi4uMmM2Yzk1OCAxMDA2NDQKLS0tLSBhL3BzaS96ZmlsZS5jCi0rKysgYi9wc2kvemZpbGUuYwotQEAgLTEwODEsNiArMTA4MSw5IEBAIGxpYl9maWxlX29wZW4oZ3NfZmlsZV9wYXRoX3B0ciAgbGliX3BhdGgsIGNvbnN0IGdzX21lbW9yeV90ICptZW0sIGlfY3R4X3QgKmlfY3R4Ci0gICAgIGdzX21haW5faW5zdGFuY2UgKm1pbnN0ID0gZ2V0X21pbnN0X2Zyb21fbWVtb3J5KG1lbSk7Ci0gICAgIGludCBjb2RlOwotIAotKyAgICBpZiAoaV9jdHhfcCAmJiBzdGFydGluZ19hcmdfZmlsZSkKLSsgICAgICAgIGlfY3R4X3AtPnN0YXJ0aW5nX2FyZ19maWxlID0gZmFsc2U7Ci0rCi0gICAgIC8qIHdoZW4gc3RhcnRpbmcgYXJnIGZpbGVzIChAIGZpbGVzKSBpb2Rldl9kZWZhdWx0IGlzIG5vdCB5ZXQgc2V0ICovCi0gICAgIGlmIChpb2RldiA9PSAwKQotICAgICAgICAgaW9kZXYgPSAoZ3hfaW9fZGV2aWNlICopZ3hfaW9fZGV2aWNlX3RhYmxlWzBdOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaAppbmRleCBlMjhhOTQ5Li5iNGMxNGVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaApAQCAtMTIsMTEgKzEyLDEyIEBACiAjIFN1bW1hcnk6IEdlbmVyYXRlIGFyY2guaCBmb3IgcHBjMzIKICMKIAotZGlmZiAtTnJ1IGdob3N0c2NyaXB0LTguNjQub3JpZy9iYXNlL2xpYi5tYWsgZ2hvc3RzY3JpcHQtOC42NC9iYXNlL2xpYi5tYWsKLS0tLSBnaG9zdHNjcmlwdC04LjY0Lm9yaWcvYmFzZS9saWIubWFrCTIwMTAtMDItMTAgMTA6MzA6MDIuMDAwMDAwMDAwICswODAwCi0rKysgZ2hvc3RzY3JpcHQtOC42NC9iYXNlL2xpYi5tYWsJMjAxMC0wMi0xMCAxMDo1NjoyMS4wMDAwMDAwMDAgKzA4MDAKLUBAIC02Nyw4ICs2Nyw4IEBACi0gc3RkcHJlX2g9JChHTFNSQylzdGRwcmUuaCAkKHN0ZHBuX2gpCitJbmRleDogZ2hvc3RzY3JpcHQtOS4yMS9iYXNlL2xpYi5tYWsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaG9zdHNjcmlwdC05LjIxLm9yaWcvYmFzZS9saWIubWFrCisrKysgZ2hvc3RzY3JpcHQtOS4yMS9iYXNlL2xpYi5tYWsKK0BAIC03Myw4ICs3Myw4IEBAIGFyY2hfaD0kKEdMR0VOKWFyY2guaAorIHN0ZHByZV9oPSQoR0xTUkMpc3RkcHJlLmgKICBzdGRpbnRfX2g9JChHTFNSQylzdGRpbnRfLmggJChzdGRfaCkKICAKIC0kKEdMR0VOKWFyY2guaCA6ICQoR0VOQVJDSF9YRSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYgppbmRleCBiZjk4NWM0Li41MGVjN2UyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIxLmJiCkBAIC0zMiw3ICszMiw2IEBACiAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKICAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTc5NzcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzIwNy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy01OTUxLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc5NzUucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIKaW5kZXggMjIyZmM5ZC4uYWI3MGVhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWhlbGxvd29ybGRfMC4xLmJiCkBAIC03LDYgKzcsNyBAQAogCiBTUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSIKIFNSQ1JFViA9ICI0NjY5NWQ4MWQxZmFlOTA1YTI3MGZiN2RiOGE0ZDExYTMzNDU2MmZlIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9nb2xhbmcvZXhhbXBsZSIKIEdPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2hlbGxvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThjZTIzMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkdOVSBncGVyZiBpcyBhIHBlcmZlY3QgaGFzaCBmdW5jdGlvbiBnZW5lcmF0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ3BlcmYiCi1TVU1NQVJZICA9ICJHZW5lcmF0ZSBhIHBlcmZlY3QgaGFzaCBmdW5jdGlvbiBmcm9tIGEgc2V0IG9mIGtleXdvcmRzIgotTElDRU5TRSAgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uY2M7YmVnaW5saW5lPTg7ZW5kbGluZT0xOTttZDU9ZGVjOGY2MTE4NDVkMDQ3Mzg3ZWQ1NmI1Yjg1ZmE5OWIiCi0KLVNSQ19VUkkgID0gIiR7R05VX01JUlJPUn0vZ3BlcmYvZ3BlcmYtJHtQVn0udGFyLmd6IgotCi1pbmhlcml0IGF1dG90b29scwotCi0jIGF1dG9yZWNvbmYgY291bGRuJ3QgZmluZCBhY2luY2x1ZGUubTQgd2hlbiBzdGVwcGluZyBpbnRvIHN1YmRpcmVjdG9yeS4gSW5zdGVhZCBvZgotIyBkdXBsaWNhdGluZyBhY2luY2x1ZGUubTQgaW4gZXZlcnkgc3ViZGlyZWN0b3J5LCB1c2UgYWJzb2x1dGUgaW5jbHVkZSBwYXRoIHRvIGFjbG9jYWwKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIiAtSSAke1N9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgaWYgWyAhIC1lICR7U30vYWNpbmNsdWRlLm00IF07IHRoZW4KLSAgICAgICAgICAgICAgICBjYXQgJHtTfS9hY2xvY2FsLm00ID4gJHtTfS9hY2luY2x1ZGUubTQKLSAgICAgICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4xLmJiCmluZGV4IDk0MjgyMGIuLmY2MWIyYTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4xLmJiCkBAIC0xLDUgKzEsMTggQEAKLXJlcXVpcmUgZ3BlcmYuaW5jCitERVNDUklQVElPTiA9ICJHTlUgZ3BlcmYgaXMgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZ2VuZXJhdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dwZXJmIgorU1VNTUFSWSAgPSAiR2VuZXJhdGUgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZnJvbSBhIHNldCBvZiBrZXl3b3JkcyIKK0xJQ0VOU0UgID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmNjO2JlZ2lubGluZT04O2VuZGxpbmU9MTk7bWQ1PWRlYzhmNjExODQ1ZDA0NzM4N2VkNTZiNWI4NWZhOTliIgogCi0KK1NSQ19VUkkgID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiIKIFNSQ19VUklbbWQ1c3VtXSA9ICI5ZTI1MWMwYTYxOGFkMDgyNGI1MTExN2Q1ZDlkYjg3ZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODg1NDZiOTQ1YmJhNGI3MGI2YTNhNjE2ZTgwYjRhYjQ2NmUzZjMzMDI0YTM1MmZjMjE5ODExMmNkYmIzYWUyIgorCitpbmhlcml0IGF1dG90b29scworCisjIFRoZSBuZXN0ZWQgY29uZmlndXJlcyBkb24ndCBmaW5kIHRoZSBwYXJlbnQgYWNsb2NhbC5tNCBvdXQgb2YgdGhlIGJveCwgc28gdGVsbAorIyBpdCB3aGVyZSB0byBsb29rIGV4cGxpY2l0bHkgKG1pcnJvcmluZyB0aGUgYmVoYXZpb3VyIG9mIHVwc3RyZWFtJ3MgTWFrZWZpbGUuZGV2ZWwpLgorRVhUUkFfQVVUT1JFQ09ORiArPSAiIC1JICR7U30gLS1leGNsdWRlPWFjbG9jYWwiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4xLmJiCmluZGV4IDA1YjZiOTMuLjcxODEwZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjEuYmIKQEAgLTE0LDggKzE0LDYgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwogCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXBlcmwtcmVnZXhwIgotCiAjIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAogYWNwYXRocyA9ICItSSAuL200IgogCkBAIC0zNiw2ICszNCw5IEBACiAKIGluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwogCitQQUNLQUdFQ09ORklHID8/PSAicGNyZSIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGVybC1yZWdleHAsLS1kaXNhYmxlLXBlcmwtcmVnZXhwLGxpYnBjcmUiCisKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAogQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2ZpbGVzLzAwMDEtZ3ppcC1wb3J0LXpkaWZmLXpsZXNzLXRvLUJ1c3lib3gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZDVhMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2ZpbGVzLzAwMDEtZ3ppcC1wb3J0LXpkaWZmLXpsZXNzLXRvLUJ1c3lib3gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDVmNzEyNjIxODI5ZWQ4MWE3NTgwNzc0MzEyMjZhODZkZjM3ZmJjM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBaYWdvcnVpIDxkZW55cy56YWdvcnVpQGdsb2JhbGxvZ2ljLmNvbT4KLURhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjowNTo1MCArMDMwMAotU3ViamVjdDogW1BBVENIXSBnemlwOiBwb3J0IHpkaWZmLCB6bGVzcyB0byBCdXN5Ym94Ci0KLVByb2JsZW0gcmVwb3J0ZWQgYnkgRGVueXMgWmFnb3J1aSAoQnVnIzI2MDg4KS4KLSogdGVzdHMvemRpZmY6IENoZWNrIHRoYXQgZGlmZiB1c2VzIFBPU0lYLWZvcm1hdCBvdXRwdXQuCi0qIHpsZXNzLmluIChsZXNzX3ZlcnNpb24pOiBEb24ndCBleGl0IG1lcmVseSBiZWNhdXNlICdsZXNzIC1WJwotZmFpbHM7IGluc3RlYWQsIGFzc3VtZSAnbGVzcycgaXMgY29tcGF0aWJsZSB3aXRoIGFuIG9sZCB2ZXJzaW9uIG9mCi10aGUgb3JpZ2luYWwgJ2xlc3MnLiAgQnVzeWJveCAnbGVzcyAtVicgZmFpbHMsIGJ1dCBhcHBhcmVudGx5IGl0cwotJ2xlc3MnIHdvcmtzIGFueXdheSBzb21laG93LgotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBaYWdvcnVpIDxkZW55cy56YWdvcnVpQGdsb2JhbGxvZ2ljLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotLS0tCi0gdGVzdHMvemRpZmYgfCA0ICsrKy0KLSB6bGVzcy5pbiAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL3pkaWZmIGIvdGVzdHMvemRpZmYKLWluZGV4IDBiYjdjN2QuLjljZDRmZDQgMTAwNzU1Ci0tLS0gYS90ZXN0cy96ZGlmZgotKysrIGIvdGVzdHMvemRpZmYKLUBAIC0yMiw3ICsyMiw2IEBACi0gCi0gZWNobyBhID4gYSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLSBlY2hvIGIgPiBiIHx8IGZyYW1ld29ya19mYWlsdXJlXwotLWd6aXAgYSBiIHx8IGZyYW1ld29ya19mYWlsdXJlXwotIAotIGNhdCA8PEVPRiA+IGV4cAotIDFjMQotQEAgLTMxLDcgKzMwLDEwIEBAIGNhdCA8PEVPRiA+IGV4cAotID4gYgotIEVPRgotIAotK2RpZmYgYSBiIHwgZGlmZiBleHAgLSB8fCBza2lwXyAiZGlmZiBvdXRwdXQgZm9ybWF0IGlzIGluY29tcGF0aWJsZSB3aXRoIFBPU0lYIgotKwotIGZhaWw9MAotK2d6aXAgYSBiIHx8IGZhaWw9MQotIHpkaWZmIGEuZ3ogYi5neiA+IG91dCAyPiYxCi0gdGVzdCAkPyA9IDEgfHwgZmFpbD0xCi0gCi1kaWZmIC0tZ2l0IGEvemxlc3MuaW4gYi96bGVzcy5pbgotaW5kZXggZTYzNGFmNi4uOTc1OWFlNiAxMDA2NDQKLS0tLSBhL3psZXNzLmluCi0rKysgYi96bGVzcy5pbgotQEAgLTQ3LDcgKzQ3LDcgQEAgaWYgdGVzdCAiJHtMRVNTTUVUQUNIQVJTK3NldH0iICE9IHNldDsgdGhlbgotICAgZXhwb3J0IExFU1NNRVRBQ0hBUlMKLSBmaQotIAotLWxlc3NfdmVyc2lvbj1gbGVzcyAtVmAgfHwgZXhpdAotK2xlc3NfdmVyc2lvbj1gbGVzcyAtViAyPi9kZXYvbnVsbGAKLSBjYXNlICRsZXNzX3ZlcnNpb24gaW4KLSBsZXNzJyAnNDVbMS05XSogfCBcCi0gbGVzcycgJzRbNi05XVswLTldKiB8IFwKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS44L3dyb25nLXBhdGgtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS44L3dyb25nLXBhdGgtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGMxMDAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOC93cm9uZy1wYXRoLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLWZpeCBNYWtlTWFrZXIgaXNzdWVzIHdpdGggdXNpbmcgd3JvbmcgU0hFTEwvR1JFUAotCi1BIHNldCBvZiBzdWJzdGl0dXRpb24gaXMgYmVpbmcgcHJvY2Vzc2VkIHRvIGFsbCB0YXJnZXQgc2NyaXB0cyB3aXRoIHNlZCBieQotcmVwbGFjaW5nIHNvbWUga2V5IHdvcmRzIHdpdGggdGhlIGRldGVjdGVkIHZhbHVlcyBhdCBjb25maWd1cmUgdGltZSwgdGhpcwotaXMgZXhhY3RseSBub3QgY29tcGxpYW50IHdpdGggY3Jvc3MgY29tcGxpbmcsIGFuZCB3aWxsIGNhdXNlIG1pc3NpbmcgcGF0aAotZXJyb3JzIGF0IHJ1biB0aW1lIGxpa2U6Ci0iL3Vzci9iaW4vemdyZXA6IGxpbmUgMjMwOiAvdXNyL2Jpbi9ncmVwOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgotCi1GaXhlZCBieSByZW1vdmluZyB1bm5lZWRlZCBzdWJzdGl0dXRpb24gYW5kIHVzaW5nIHJlYWwgcnVudGltZSBwYXRocwotaW5zdGVhZC4KLQotU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPG1pbmcubGl1QHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogZ3ppcC0xLjgvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnemlwLTEuOC5vcmlnL01ha2VmaWxlLmFtCi0rKysgZ3ppcC0xLjgvTWFrZWZpbGUuYW0KLUBAIC04MSw4ICs4MSw3IEBAIGd6aXAuZG9jLmd6OiBnemlwLmRvYyAkKGJpbl9QUk9HUkFNUykKLSBTVUZGSVhFUyA9IC5pbgotIC5pbjoKLSAJJChBTV9WX0dFTilzZWQgXAotLQkJLWUgJ3N8L2Jpbi9zaHwkKFNIRUxMKXxnJyBcCi0tCQktZSAnc3xbQF1HUkVQQHwkKEdSRVApfGcnIFwKLSsJCS1lICdzfFtAXUdSRVBAfCQoYmFzZV9iaW5kaXIpL2dyZXB8ZycgXAotIAkJLWUgJ3N8W0BdVkVSU0lPTkB8JChWRVJTSU9OKXxnJyBcCi0gCQkkKHNyY2RpcikvJEAuaW4gPiRALXQgXAotIAkgICYmIGNobW9kIGEreCAkQC10IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOS93cm9uZy1wYXRoLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOS93cm9uZy1wYXRoLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzM3YmM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS45L3dyb25nLXBhdGgtZml4LnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK2ZpeCBNYWtlTWFrZXIgaXNzdWVzIHdpdGggdXNpbmcgd3JvbmcgU0hFTEwvR1JFUAorCitBIHNldCBvZiBzdWJzdGl0dXRpb24gaXMgYmVpbmcgcHJvY2Vzc2VkIHRvIGFsbCB0YXJnZXQgc2NyaXB0cyB3aXRoIHNlZCBieQorcmVwbGFjaW5nIHNvbWUga2V5IHdvcmRzIHdpdGggdGhlIGRldGVjdGVkIHZhbHVlcyBhdCBjb25maWd1cmUgdGltZSwgdGhpcworaXMgZXhhY3RseSBub3QgY29tcGxpYW50IHdpdGggY3Jvc3MgY29tcGxpbmcsIGFuZCB3aWxsIGNhdXNlIG1pc3NpbmcgcGF0aAorZXJyb3JzIGF0IHJ1biB0aW1lIGxpa2U6CisiL3Vzci9iaW4vemdyZXA6IGxpbmUgMjMwOiAvdXNyL2Jpbi9ncmVwOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgorCitGaXhlZCBieSByZW1vdmluZyB1bm5lZWRlZCBzdWJzdGl0dXRpb24gYW5kIHVzaW5nIHJlYWwgcnVudGltZSBwYXRocworaW5zdGVhZC4KKworU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPG1pbmcubGl1QHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBNYWtlZmlsZS5hbSB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZDRlY2MzZi4uZTQ2NTdkMiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTgyLDggKzgyLDcgQEAgU1VGRklYRVMgPSAuaW4KKyAuaW46CisgCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCBcCisgICAgICAgICAgICYmIHNlZCBcCistCQktZSAnc3wvYmluL3NofCQoU0hFTEwpfGcnIFwKKy0JCS1lICdzfFtAXUdSRVBAfCQoR1JFUCl8ZycgXAorKwkJLWUgJ3N8W0BdR1JFUEB8JChiYXNlX2JpbmRpcikvZ3JlcHxnJyBcCisgCQktZSAnc3xbQF1WRVJTSU9OQHwkKFZFUlNJT04pfGcnIFwKKyAJCSQoc3JjZGlyKS8kQC5pbiA+JEAtdCBcCisgCSAgJiYgY2htb2QgYT1yeCAkQC10IFwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDkzMjA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLXJlcXVpcmUgZ3ppcC5pbmMKLQotTElDRU5TRSA9ICJHUEx2MysiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nemlwLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vd3JvbmctcGF0aC1maXgucGF0Y2giCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d6aXAuaDtiZWdpbmxpbmU9ODtlbmRsaW5lPTIwO21kNT02ZTQ3Y2FhYTYzMGUwYzhiZjlmMWJjOGQ5NGE4ZWQwZSIKLQotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZ3ppcC1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IHB0ZXN0Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2J1aWxkLWF1eAotCWNwICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L3NyYy9idWlsZC1hdXgvCi0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL3Rlc3RzCi0JY3AgLXIgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cwotCXNlZCAtZSAncy9eYWJzX3NyY2RpciA9IC4uKi9hYnNfc3JjZGlyID0gXC5cLi8nIFwKLSAgICAgICAgICAgIC1lICdzL150b3Bfc3JjZGlyID0gLi4qL3RvcF9zcmNkaXIgPSBcLlwuLycgXAotICAgICAgICAgICAgLWUgJ3MvXkdSRVAgPSAuLiovR1JFUCA9IGdyZXAvJyAgICAgICAgICAgICBcCi0gICAgICAgICAgICAtZSAncy9eQVdLID0gLi4qL0FXSyA9IGF3ay8nICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIC1lICdzL15zcmNkaXIgPSAuLiovc3JjZGlyID0gXC4vJyAgICAgICAgICAgXAotICAgICAgICAgICAgLWUgJ3MvXk1ha2VmaWxlOiAuLiovTWFrZWZpbGU6IC8nICAgICAgICAgICBcCi0gICAgICAgICAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyAgIFwKLSAgICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLSAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCi0gICAgICAgICAgICAke0J9L3Rlc3RzL01ha2VmaWxlID4gJHtEfSR7UFRFU1RfUEFUSH0vc3JjL3Rlc3RzL01ha2VmaWxlCi19Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MzI1NTMxNTI4MTRiMjJkYzM1YWEwMjY3ZGY1Mjg2YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmY3YWVkYjNkNjZhMGQ3M2Y0NDJmNjI2MWU0YjM4NjBkZjZmZDZjOTQwMjVjMmNiMzFhMjAyYzljNjBmZTBlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlZWJhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOS5iYgpAQCAtMCwwICsxLDM4IEBACityZXF1aXJlIGd6aXAuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL3dyb25nLXBhdGgtZml4LnBhdGNoIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nemlwLmg7YmVnaW5saW5lPTg7ZW5kbGluZT0yMDttZDU9NmU0N2NhYWE2MzBlMGM4YmY5ZjFiYzhkOTRhOGVkMGUiCisKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd6aXAtcmVwbGFjZW1lbnQtbmF0aXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBwdGVzdAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy9idWlsZC1hdXgKKwljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4LworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cworCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKKwlzZWQgLWUgJ3MvXmFic19zcmNkaXIgPSAuLiovYWJzX3NyY2RpciA9IFwuXC4vJyBcCisgICAgICAgICAgICAtZSAncy9edG9wX3NyY2RpciA9IC4uKi90b3Bfc3JjZGlyID0gXC5cLi8nIFwKKyAgICAgICAgICAgIC1lICdzL15HUkVQID0gLi4qL0dSRVAgPSBncmVwLycgICAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MvXkFXSyA9IC4uKi9BV0sgPSBhd2svJyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAncy9ec3JjZGlyID0gLi4qL3NyY2RpciA9IFwuLycgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzL15NYWtlZmlsZTogLi4qL01ha2VmaWxlOiAvJyAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgICBcCisgICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAgICAgJHtCfS90ZXN0cy9NYWtlZmlsZSA+ICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cy9NYWtlZmlsZQorfQorCitTUkNfVVJJW21kNXN1bV0gPSAiOTI5ZDZhNmI4MzJmNzViMjhlM2VlZWFmYjMwYzFkOWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQyZDNhMzQzMmVmMzJmMjRjZGIwNjBkMjc4ODM0NTA3YjQ4MWE3NWFkZWNhMTg4NTBjNzM1OTJmNzc4ZjZhZCIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtL3dpcGVyLnNoLWZpeC1zdGF0LXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm0vd2lwZXIuc2gtZml4LXN0YXQtcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWYxYjYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtL3dpcGVyLnNoLWZpeC1zdGF0LXBhdGgucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBlMjMzMDA2ZWUyMTIxMDlkMmExNDAxZGFjMzdhOWE4NTFjYzQ5M2Q4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNCBEZWMgMjAxNyAxNToyMzo0NyArMDgwMAorU3ViamVjdDogW1BBVENIXSB3aXBlci5zaDogZml4IHN0YXQgcGF0aAorCitGaXggdGhlIHN0YXQgcGF0aCBmb3IgT0UuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHdpcGVyL3dpcGVyLnNoIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS93aXBlci93aXBlci5zaCBiL3dpcGVyL3dpcGVyLnNoCitpbmRleCA3OWVkZGM4Li45ZWYyODQwIDEwMDc1NQorLS0tIGEvd2lwZXIvd2lwZXIuc2gKKysrKyBiL3dpcGVyL3dpcGVyLnNoCitAQCAtOTcsNyArOTcsNiBAQCBmdW5jdGlvbiBmaW5kX3Byb2coKXsKKyBoYXNoIC1yICAjIyBSZWZyZXNoIGJhc2gncyBjYWNoZWQgUEFUSCBlbnRyaWVzCisgSERQQVJNPWBmaW5kX3Byb2cgL3NiaW4vaGRwYXJtYAl8fCBleGl0IDEKKyBGSU5EPWBmaW5kX3Byb2cgL3Vzci9iaW4vZmluZGAJfHwgZXhpdCAxCistU1RBVD1gZmluZF9wcm9nIC91c3IvYmluL3N0YXRgCXx8IGV4aXQgMQorIEdBV0s9YGZpbmRfcHJvZyAvdXNyL2Jpbi9nYXdrYAl8fCBleGl0IDEKKyBCTEtJRD1gZmluZF9wcm9nIC9zYmluL2Jsa2lkYAl8fCBleGl0IDEKKyBHUkVQPWBmaW5kX3Byb2cgL2Jpbi9ncmVwYAl8fCBleGl0IDEKK0BAIC0xMDUsNyArMTA0LDcgQEAgSUQ9YGZpbmRfcHJvZyAvdXNyL2Jpbi9pZGAJfHwgZXhpdCAxCisgTFM9YGZpbmRfcHJvZyAvYmluL2xzYAkJfHwgZXhpdCAxCisgREY9YGZpbmRfcHJvZyAvYmluL2RmYAkJfHwgZXhpdCAxCisgUk09YGZpbmRfcHJvZyAvYmluL3JtYAkJfHwgZXhpdCAxCistU1RBVD1gZmluZF9wcm9nIC91c3IvYmluL3N0YXRgCXx8IGV4aXQgMQorK1NUQVQ9YGZpbmRfcHJvZyAvYmluL3N0YXRgCXx8IGV4aXQgMQorIAorIFsgJHZlcmJvc2UgLWd0IDEgXSAmJiBIRFBBUk09IiRIRFBBUk0gLS12ZXJib3NlIgorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWZkYzk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXR5IGZvciB2aWV3aW5nL21hbmlwdWxhdGluZyBJREUgZGlzayBkcml2ZS9kcml2ZXIgcGFyYW1ldGVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvaGRwYXJtLyIKLURFU0NSSVBUSU9OID0gImhkcGFybSBpcyBhIExpbnV4IHNoZWxsIHV0aWxpdHkgZm9yIHZpZXdpbmcgXAotYW5kIG1hbmlwdWxhdGluZyB2YXJpb3VzIElERSBkcml2ZSBhbmQgZHJpdmVyIHBhcmFtZXRlcnMuIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyIgotTElDRU5TRV8ke1BOfSA9ICJCU0QiCi1MSUNFTlNFXyR7UE59LWRiZyA9ICJCU0QiCi1MSUNFTlNFX3dpcGVyID0gIkdQTHYyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLlRYVDttZDU9NDk1ZDAzZTUwZGM2Yzg5ZDZhMzAxMDdhYjBkZjViMDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YTgyZDdiYTNhZGU5ZThlYzkwMjc0OWRiOThjNTkyZjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvR1BMdjIudHh0O21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci93aXBlci5zaDtiZWdpbmxpbmU9NztlbmRsaW5lPTMxO21kNT1iN2JjNjQyYWRkYzE1MmVhMzA3NTA1YmYxYTI5NmYwOSIKLQotCi1QQUNLQUdFUyA9KyAid2lwZXIiCi0KLUZJTEVTX3dpcGVyID0gIiR7YmluZGlyfS93aXBlci5zaCIKLQotUkRFUEVORFNfd2lwZXIgPSAiYmFzaCBnYXdrIHN0YXQiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2hkcGFybS8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MTA1MzlkMGJmM2NjMjQ3MTgxNTk0NTgxZWRiZmI1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzQyOWNkNDIzZTI3MWZhNTY1YmY1ODQ1OThmZDc1MWRkMmU3NzNiYjcxOTlhNTkyYjA2YjVhNjFjZWM0ZmI2IgotCi1FWFRSQV9PRU1BS0UgPSAnU1RSSVA9ImVjaG8iIExERkxBR1M9IiR7TERGTEFHU30iJwotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaGRwYXJtIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2hkcGFybV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hkcGFybSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfSAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0vJHtiaW5kaXJ9Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIGluc3RhbGwKLQljcCAke1N9L3dpcGVyL3dpcGVyLnNoICR7RH0vJHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjM2VjNWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTMuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJVdGlsaXR5IGZvciB2aWV3aW5nL21hbmlwdWxhdGluZyBJREUgZGlzayBkcml2ZS9kcml2ZXIgcGFyYW1ldGVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvaGRwYXJtLyIKK0RFU0NSSVBUSU9OID0gImhkcGFybSBpcyBhIExpbnV4IHNoZWxsIHV0aWxpdHkgZm9yIHZpZXdpbmcgXAorYW5kIG1hbmlwdWxhdGluZyB2YXJpb3VzIElERSBkcml2ZSBhbmQgZHJpdmVyIHBhcmFtZXRlcnMuIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyIgorTElDRU5TRV8ke1BOfSA9ICJCU0QiCitMSUNFTlNFXyR7UE59LWRiZyA9ICJCU0QiCitMSUNFTlNFX3dpcGVyID0gIkdQTHYyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLlRYVDttZDU9NDk1ZDAzZTUwZGM2Yzg5ZDZhMzAxMDdhYjBkZjViMDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YTgyZDdiYTNhZGU5ZThlYzkwMjc0OWRiOThjNTkyZjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvR1BMdjIudHh0O21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci93aXBlci5zaDtiZWdpbmxpbmU9NztlbmRsaW5lPTMxO21kNT1iN2JjNjQyYWRkYzE1MmVhMzA3NTA1YmYxYTI5NmYwOSIKKworCitQQUNLQUdFUyA9KyAid2lwZXIiCisKK0ZJTEVTX3dpcGVyID0gIiR7YmluZGlyfS93aXBlci5zaCIKKworUkRFUEVORFNfd2lwZXIgPSAiYmFzaCBnYXdrIGNvcmV1dGlscyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaGRwYXJtLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly93aXBlci5zaC1maXgtc3RhdC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZTU0YjUyZTBjOGNiNzkzODlkNGQ0N2VhY2JhNDExZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjczZjU5MWRmNjkxNmM2YTFmYWVjMDcwNjlhN2ViMWNiOGVlMzA3NjE1YTYxNWQ4MDgxOTJmYjBjMDI2NWU1IgorCitFWFRSQV9PRU1BS0UgPSAnU1RSSVA9ImVjaG8iIExERkxBR1M9IiR7TERGTEFHU30iJworCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiaGRwYXJtIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hkcGFybV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hkcGFybSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfSAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0vJHtiaW5kaXJ9CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIGluc3RhbGwKKwljcCAke1N9L3dpcGVyL3dpcGVyLnNoICR7RH0vJHtiaW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWY4NWE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotW1BBVENIXSBmaXggYnVpbGQgd2l0aCBtdXNsCi0KLURlZmluZSBhZGRpdGlvbmFsIFRDT1BUUyBpZiBub3QgdGhlcmUKLXVfaW5pdFggdHlwZXMgYXJlIGluIHN5cy90eXBlcy5oIGJlIGV4cGxpY2l0IGFib3V0IGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLU5hdXIgaXB0YWJsZXMtMS42LjAtb3JpZ2luL2V4dGVuc2lvbnMvbGlieHRfVENQT1BUU1RSSVAuYyBpcHRhYmxlcy0xLjYuMC9leHRlbnNpb25zL2xpYnh0X1RDUE9QVFNUUklQLmMKLS0tLSBpcHRhYmxlcy0xLjYuMC1vcmlnaW4vZXh0ZW5zaW9ucy9saWJ4dF9UQ1BPUFRTVFJJUC5jCTIwMTUtMTItMDkgMTQ6NTU6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgaXB0YWJsZXMtMS42LjAvZXh0ZW5zaW9ucy9saWJ4dF9UQ1BPUFRTVFJJUC5jCTIwMTUtMTItMjkgMTQ6NDQ6MzIuNTg1MzI3MDc3ICswMjAwCi1AQCAtMTIsNiArMTIsMjEgQEAKLSAjaWZuZGVmIFRDUE9QVF9NRDVTSUcKLSAjCWRlZmluZSBUQ1BPUFRfTUQ1U0lHIDE5Ci0gI2VuZGlmCi0rI2lmbmRlZiBUQ1BPUFRfTUFYU0VHCi0rI2RlZmluZSBUQ1BPUFRfTUFYU0VHIDIKLSsjZW5kaWYKLSsjaWZuZGVmIFRDUE9QVF9XSU5ET1cKLSsjZGVmaW5lIFRDUE9QVF9XSU5ET1cgMwotKyNlbmRpZgotKyNpZm5kZWYgVENQT1BUX1NBQ0tfUEVSTUlUVEVECi0rI2RlZmluZSBUQ1BPUFRfU0FDS19QRVJNSVRURUQgNAotKyNlbmRpZgotKyNpZm5kZWYgVENQT1BUX1NBQ0sKLSsjZGVmaW5lIFRDUE9QVF9TQUNLIDUKLSsjZW5kaWYKLSsjaWZuZGVmIFRDUE9QVF9USU1FU1RBTVAKLSsjZGVmaW5lIFRDUE9QVF9USU1FU1RBTVAgOAotKyNlbmRpZgotIAotIGVudW0gewotIAlPX1NUUklQX09QVElPTiA9IDAsCi1kaWZmIC1OYXVyIGlwdGFibGVzLTEuNi4wLW9yaWdpbi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oIGlwdGFibGVzLTEuNi4wL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmgKLS0tLSBpcHRhYmxlcy0xLjYuMC1vcmlnaW4vaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaAkyMDE1LTEyLTA5IDE0OjU1OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGlwdGFibGVzLTEuNi4wL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmgJMjAxNS0xMi0yOSAxNDo0MDoyMS4yNTA0NjkxOTUgKzAyMDAKLUBAIC0xNSw2ICsxNSw3IEBACi0gI2lmbmRlZiBfSVBUQUJMRVNfSAotICNkZWZpbmUgX0lQVEFCTEVTX0gKLSAKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gCi0gI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRlcl9pcHY0Lmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvdHlwZXMuaC1hZGQtZGVmaW5lcy10aGF0LWFyZS1yZXF1aXJlZC1mb3ItaWZfcGFja2V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGVlMjllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvdHlwZXMuaC1hZGQtZGVmaW5lcy10aGF0LWFyZS1yZXF1aXJlZC1mb3ItaWZfcGFja2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSAxOTU5MzQ5MWY0M2I3MGMxYTcxYzNiOWI4ZjRmZjRmZDE0NTAwMDE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDIzIE1hciAyMDEyIDE0OjI3OjIwIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHR5cGVzLmg6IGFkZCBkZWZpbmVzIHRoYXQgYXJlIHJlcXVpcmVkIGZvciBpZl9wYWNrZXQuaAotCi1UaGUgaXB0YWJsZXMgbG9jYWwgbGludXgvdHlwZXMuaCBvdmVycmlkZXMgdGhlIGtlcm5lbC9zeXNyb290Ci10eXBlcy5oLiBBcyBzdWNoLCB3ZSBuZWVkIHRvIHByb3ZpZGUgc29tZSBkZWZpbmVzIHRoYXQgYXJlIHJlcXVpcmVkCi10byBidWlsZCBhZ2FpbnN0IDMuMisga2VybmVsIGhlYWRlcnMuCi0KLWlmbmRlZiBwcm90ZWN0aW9uIGlzIHByb3ZpZGVkIGZvciB0aGUgZGVmaW5lcyB0byBlbnN1cmUgdGhhdAotY29uZmlndXJhdGlvbiB0aGF0IGFscmVhZHkgaGF2ZSB0aGVzZSBkZWZpbmVzIGFyZSBzdGlsbCBidWlsZGFibGUuCi0KLVRoaXMgY29tbWl0IGlzIHRlbXBvcmFyeSB1bnRpbCBhIG5ldyB2ZXJzaW9uIG9mIGlwdGFibGVzIGNhbiBiZQotdXNlZCB0aGF0IGNvbnRhaW5zIHRoZSBkZWZpbmVzLgotCi1UaGlzIGlzIHNpbWlsYXIgdG8gdGhlIGNvbW1pdCBpbiB0aGUgaXB0YWJsZXMgZ2l0IHJlcG9zaXRvcnk6Ci0KLSAgaHR0cHM6Ly9naXQubmV0ZmlsdGVyLm9yZy9jZ2ktYmluL2dpdHdlYi5jZ2k/cD1pcHRhYmxlcy5naXQ7YT1jb21taXQ7aD1kYmU3N2NjOTc0Y2VlNjU2ZWFlMzdlNzUwMzlkZDFhNDEwYTQ1MzViCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpbmNsdWRlL2xpbnV4L3R5cGVzLmggfCAgIDEwICsrKysrKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgKLWluZGV4IDhiNDgzYzguLmViZjY0MzIgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpbnV4L3R5cGVzLmgKLSsrKyBiL2luY2x1ZGUvbGludXgvdHlwZXMuaAotQEAgLTM0LDUgKzM0LDE1IEBAIHR5cGVkZWYgX191NjQgX19iaXR3aXNlIF9fYmU2NDsKLSB0eXBlZGVmIF9fdTE2IF9fYml0d2lzZSBfX3N1bTE2OwotIHR5cGVkZWYgX191MzIgX19iaXR3aXNlIF9fd3N1bTsKLSAKLSsjaWZuZGVmIF9fYWxpZ25lZF91NjQKLSsjZGVmaW5lIF9fYWxpZ25lZF91NjQgX191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCi0rI2VuZGlmCi0rI2lmbmRlZiBfX2FsaWduZWRfYmU2NAotKyNkZWZpbmUgX19hbGlnbmVkX2JlNjQgX19iZTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQotKyNlbmRpZgotKyNpZm5kZWYgX19hbGlnbmVkX2xlNjQKLSsjZGVmaW5lIF9fYWxpZ25lZF9sZTY0IF9fbGU2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKLSsjZW5kaWYKLSsKLSAjZW5kaWYgLyogIF9fQVNTRU1CTFlfXyAqLwotICNlbmRpZiAvKiBfTElOVVhfVFlQRVNfSCAqLwotLS0gCi0xLjcuMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzdjNTVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIGZvciBtYW5hZ2luZyBrZXJuZWwgcGFja2V0IGZpbHRlcmluZyBjYXBhYmlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJpcHRhYmxlcyBpcyB0aGUgdXNlcnNwYWNlIGNvbW1hbmQgbGluZSBwcm9ncmFtIHVzZWQgdG8gY29uZmlndXJlIGFuZCBjb250cm9sIG5ldHdvcmsgcGFja2V0IFwKLWZpbHRlcmluZyBjb2RlIGluIExpbnV4LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5uZXRmaWx0ZXIub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjNcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy9pcHRhYmxlcy5jO2JlZ2lubGluZT0xMztlbmRsaW5lPTI1O21kNT1jNWNmZmQwOTk3NDU1OGNmMjdkMGY3NjNkZjJhMTJkYyIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwLXRhYmxlcyBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1kZWZyYWctaXB2NCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjayBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtbmF0IFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0LW1hc3F1ZXJhZGUiCi1GSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3h0YWJsZXMvICR7ZGF0YWRpcn0veHRhYmxlcyIKLQotU1JDX1VSSSA9ICJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9pcHRhYmxlcy9maWxlcy9pcHRhYmxlcy0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLWxpYm5mbmV0bGluay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1vbmx5LWNoZWNrLWNvbm50cmFjay13aGVuLWxpYm5mbmV0bGluay1lbmFibGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhYjM4YTMzODA2YjYxODJjNmY1M2Q2YWZiNDYxOWFkZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZmMyZDdiZDVkN2JlMTEzMTE3MjY0NjY3ODlkNGM2NWZiNGM4ZTA5NmM5MTgyYjU2Y2U5NzQ0MDg2NGYwY2Y1IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgIgotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotIyBsaWJuZm5ldGxpbmsgcmVjaXBlIGlzIGluIG1ldGEtbmV0d29ya2luZyBsYXllcgotUEFDS0FHRUNPTkZJR1tsaWJuZm5ldGxpbmtdID0gIi0tZW5hYmxlLWxpYm5mbmV0bGluaywtLWRpc2FibGUtbGlibmZuZXRsaW5rLGxpYm5mbmV0bGluayBsaWJuZXRmaWx0ZXItY29ubnRyYWNrIgotCi0jIGxpYm5mdG5sIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIocHJldmlvdXNseSBrbm93biBhcyBsaWJuZnRhYmxlcykKLVBBQ0tBR0VDT05GSUdbbGlibmZ0bmxdID0gIi0tZW5hYmxlLW5mdGFibGVzLC0tZGlzYWJsZS1uZnRhYmxlcyxsaWJuZnRubCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBSZW1vdmUgc29tZSBsaWJ0b29sIG00IGZpbGVzCi0JIyBLZWVwIGF4X2NoZWNrX2xpbmtlcl9mbGFncy5tNCB3aGljaCBiZWxvbmdzIHRvIGF1dG9jb25mLWFyY2hpdmUuCi0Jcm0gLWYgbGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YTgzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4yLmJiCkBAIC0wLDAgKzEsNDcgQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIGtlcm5lbCBwYWNrZXQgZmlsdGVyaW5nIGNhcGFiaWxpdGllcyIKK0RFU0NSSVBUSU9OID0gImlwdGFibGVzIGlzIHRoZSB1c2Vyc3BhY2UgY29tbWFuZCBsaW5lIHByb2dyYW0gdXNlZCB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgbmV0d29yayBwYWNrZXQgXAorZmlsdGVyaW5nIGNvZGUgaW4gTGludXguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLm5ldGZpbHRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2M1wKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2lwdGFibGVzL2lwdGFibGVzLmM7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjU7bWQ1PWM1Y2ZmZDA5OTc0NTU4Y2YyN2QwZjc2M2RmMmExMmRjIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXgtdGFibGVzIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXAtdGFibGVzIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1maWx0ZXIgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLW5hdCBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWRlZnJhZy1pcHY0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrLWlwdjQgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1uYXQgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHQtbWFzcXVlcmFkZSIKK0ZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0veHRhYmxlcy8gJHtkYXRhZGlyfS94dGFibGVzIgorCitTUkNfVVJJID0gImh0dHA6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2lwdGFibGVzL2ZpbGVzL2lwdGFibGVzLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtb25seS1jaGVjay1jb25udHJhY2std2hlbi1saWJuZm5ldGxpbmstZW5hYmxlZC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZDJiNzg0N2U0YWE4ODMyYTE4NDM3YjhhNGMxODczZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NWQwMmRmYTQ2MjYzMzQzYTQwMWYyOTdkNDQxOTBmMmEzZTUxMTNjODkzMzk0NmYwOTRlZDQwMjM3MDUzNzMzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgIgorUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworIyBsaWJuZm5ldGxpbmsgcmVjaXBlIGlzIGluIG1ldGEtbmV0d29ya2luZyBsYXllcgorUEFDS0FHRUNPTkZJR1tsaWJuZm5ldGxpbmtdID0gIi0tZW5hYmxlLWxpYm5mbmV0bGluaywtLWRpc2FibGUtbGlibmZuZXRsaW5rLGxpYm5mbmV0bGluayBsaWJuZXRmaWx0ZXItY29ubnRyYWNrIgorCisjIGxpYm5mdG5sIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIocHJldmlvdXNseSBrbm93biBhcyBsaWJuZnRhYmxlcykKK1BBQ0tBR0VDT05GSUdbbGlibmZ0bmxdID0gIi0tZW5hYmxlLW5mdGFibGVzLC0tZGlzYWJsZS1uZnRhYmxlcyxsaWJuZnRubCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBSZW1vdmUgc29tZSBsaWJ0b29sIG00IGZpbGVzCisJIyBLZWVwIGF4X2NoZWNrX2xpbmtlcl9mbGFncy5tNCB3aGljaCBiZWxvbmdzIHRvIGF1dG9jb25mLWFyY2hpdmUuCisJcm0gLWYgbGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLW9uLU1VU0wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U4Y2ZlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoCkBAIC0wLDAgKzEsOTUgQEAKK0Zyb20gYzZjNTk2NmQ5ZmFlMjdiYzJmMGEzNGFiNTliOTk5NTU1MTExYmQyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFyaWMgQmVsc2l0byA8bGx1aXhoaUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDI5IE9jdCAyMDE3IDIzOjE3OjAzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBvbiBNVVNMCisKK0FkZCBtaXNzaW5nIEFJX0lETiBhbmQgTklfSUROIGRlY2xhcmF0aW9ucy4KKworQnVnOiBodHRwczovL2J1Z3MuZ2VudG9vLm9yZy81MDM5MTQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGFycGluZy5jICAgICAgfCAgNyArKysrKysrCisgcGluZy5oICAgICAgICB8IDExICsrKysrKysrKysrCisgdHJhY2VwYXRoLmMgICB8ICA4ICsrKysrKysrCisgdHJhY2Vyb3V0ZTYuYyB8ICA0ICsrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2FycGluZy5jIGIvYXJwaW5nLmMKK2luZGV4IDFhM2Y0MGIuLjUzMWQyOWQgMTAwNjQ0CistLS0gYS9hcnBpbmcuYworKysrIGIvYXJwaW5nLmMKK0BAIC00NSw2ICs0NSwxMyBAQCBzdHJ1Y3Qgc3lzZnNfZGV2YXR0cl92YWx1ZXM7CisgI2lmZGVmIFVTRV9JRE4KKyAjaW5jbHVkZSA8aWRuYS5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKysKKysjaWZuZGVmIEFJX0lETgorKyNkZWZpbmUgQUlfSUROIDB4MDA0MAorKyNlbmRpZgorKyNpZm5kZWYgQUlfQ0FOT05JRE4KKysjZGVmaW5lIEFJX0NBTk9OSUROIDB4MDA4MAorKyNlbmRpZgorICNlbmRpZgorIAorICNpbmNsdWRlICJTTkFQU0hPVC5oIgorZGlmZiAtLWdpdCBhL3BpbmcuaCBiL3BpbmcuaAoraW5kZXggNzQ5ZjNmZi4uMjI3MzE1ZiAxMDA2NDQKKy0tLSBhL3BpbmcuaAorKysrIGIvcGluZy5oCitAQCAtMzgsNiArMzgsMTcgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPGlkbmEuaD4KKyAjaW5jbHVkZSA8c3RyaW5ncHJlcC5oPgorKworKyNpZm5kZWYgQUlfSUROCisrI2RlZmluZSBBSV9JRE4gMHgwMDQwCisrI2VuZGlmCisrI2lmbmRlZiBBSV9DQU5PTklETgorKyNkZWZpbmUgQUlfQ0FOT05JRE4gMHgwMDgwCisrI2VuZGlmCisrI2lmbmRlZiBOSV9JRE4KKysjZGVmaW5lIE5JX0lETiAzMgorKyNlbmRpZgorKworICNkZWZpbmUgZ2V0YWRkcmluZm9fZmxhZ3MgKEFJX0NBTk9OTkFNRSB8IEFJX0lETiB8IEFJX0NBTk9OSUROKQorICNkZWZpbmUgZ2V0bmFtZWluZm9fZmxhZ3MgTklfSUROCisgI2Vsc2UKK2RpZmYgLS1naXQgYS90cmFjZXBhdGguYyBiL3RyYWNlcGF0aC5jCitpbmRleCA3NGE4MjlkLi5kY2VjNWI5IDEwMDY0NAorLS0tIGEvdHJhY2VwYXRoLmMKKysrKyBiL3RyYWNlcGF0aC5jCitAQCAtMzAsNiArMzAsMTQgQEAKKyAjaWZkZWYgVVNFX0lETgorICNpbmNsdWRlIDxpZG5hLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorKworKyNpZm5kZWYgQUlfSUROCisrI2RlZmluZSBBSV9JRE4gMHgwMDQwCisrI2VuZGlmCisrI2lmbmRlZiBOSV9JRE4KKysjZGVmaW5lIE5JX0lETiAzMgorKyNlbmRpZgorKworICNkZWZpbmUgZ2V0bmFtZWluZm9fZmxhZ3MJTklfSUROCisgI2Vsc2UKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCTAKK2RpZmYgLS1naXQgYS90cmFjZXJvdXRlNi5jIGIvdHJhY2Vyb3V0ZTYuYworaW5kZXggNDhmYzVjNS4uOGQxZWViZiAxMDA2NDQKKy0tLSBhL3RyYWNlcm91dGU2LmMKKysrKyBiL3RyYWNlcm91dGU2LmMKK0BAIC0yNTEsNiArMjUxLDEwIEBACisgI2luY2x1ZGUgPGlkbmEuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisrI2lmbmRlZiBOSV9JRE4KKysjZGVmaW5lIE5JX0lETiAzMgorKyNlbmRpZgorKworICNkZWZpbmUgZ2V0bmFtZWluZm9fZmxhZ3MJTklfSUROCisgI2Vsc2UKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCTAKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzLzAwMDEtRml4LWhlYWRlci1pbmNsdXNpb24tZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZWYwN2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzLzAwMDEtRml4LWhlYWRlci1pbmNsdXNpb24tZm9yLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi1Gcm9tIGJlMGJiODFkNzJmZWE0ZDIwZGE3NGY0ZjIyMzZhYTE0NTY4NGYzMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA2IEphbiAyMDE2IDE0OjE0OjIyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBoZWFkZXIgaW5jbHVzaW9uIGZvciBtdXNsCi0KLUZpeCBlcnJvcnMgZS5nLgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gdHJhY2VwYXRoLmM6MTc6MDoKLS91c3IvaW5jbHVkZS9saW51eC9lcnJxdWV1ZS5oOjMzOjE4OgotZXJyb3I6IGFycmF5IHR5cGUgaGFzIGluY29tcGxldGUgZWxlbWVudCB0eXBlICdzdHJ1Y3QgdGltZXNwZWMnCi0gIHN0cnVjdCB0aW1lc3BlYyB0c1szXTsKLSAgICAgICAgICAgICAgICAgIF4KLXRyYWNlcGF0aC5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Ci10cmFjZXBhdGguYzozMjk6MTY6IGVycm9yOiAnSU5UX01BWCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMKLWZ1bmN0aW9uKQotICAgICAgb3ZlcmhlYWQsIElOVF9NQVgpOwotICAgICAgICAgICAgICAgIF4KLXRyYWNlcGF0aC5jOjMyOToxNjogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seQotb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluCi1NYWtlZmlsZToxMzE6IHJlY2lwZSBmb3IgdGFyZ2V0ICd0cmFjZXBhdGgubycgZmFpbGVkCi1tYWtlOiAqKiogW3RyYWNlcGF0aC5vXSBFcnJvciAxCi0KLXBpbmdfY29tbW9uLmM6IEluIGZ1bmN0aW9uICdtYWluX2xvb3AnOgotcGluZ19jb21tb24uYzo3NTY6MTU6IGVycm9yOiAnSFonIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzCi1mdW5jdGlvbikKLSAgICBpZiAoMTAwMCAlIEhaID09IDAgPyBuZXh0IDw9IDEwMDAgLyBIWiA6IChuZXh0IDwgSU5UX01BWCAvIEhaICYmCi1uZXh0ICogSFogPD0gMTAwMCkpIHsKLQotcHJvdG9jb2xzL3RpbWVkLmggaXMgbm90IG5lZWRlZCBhbmQgaXMgYWJzZW50IGluIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBjbG9ja2RpZmYuYyAgIHwgMSAtCi0gcGluZ19jb21tb24uYyB8IDEgKwotIHRyYWNlcGF0aC5jICAgfCAyICsrCi0gdHJhY2VwYXRoNi5jICB8IDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jbG9ja2RpZmYuYyBiL2Nsb2NrZGlmZi5jCi1pbmRleCA3YzFlYTFiLi4xZDYzNDFlIDEwMDY0NAotLS0tIGEvY2xvY2tkaWZmLmMKLSsrKyBiL2Nsb2NrZGlmZi5jCi1AQCAtMTQsNyArMTQsNiBAQAotICNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgotICNkZWZpbmUgVFNQVFlQRVMKLS0jaW5jbHVkZSA8cHJvdG9jb2xzL3RpbWVkLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPG5ldGRiLmg+Ci0gI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotZGlmZiAtLWdpdCBhL3BpbmdfY29tbW9uLmMgYi9waW5nX2NvbW1vbi5jCi1pbmRleCA3ZjgyODUxLi4zY2U2OTlkIDEwMDY0NAotLS0tIGEvcGluZ19jb21tb24uYwotKysrIGIvcGluZ19jb21tb24uYwotQEAgLTIsNiArMiw3IEBACi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHNjaGVkLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8YXNtLWdlbmVyaWMvcGFyYW0uaD4KLSAKLSBpbnQgb3B0aW9uczsKLSAKLWRpZmYgLS1naXQgYS90cmFjZXBhdGguYyBiL3RyYWNlcGF0aC5jCi1pbmRleCA4OWU2ZDE2Li5jOWQ2ZGRkIDEwMDY0NAotLS0tIGEvdHJhY2VwYXRoLmMKLSsrKyBiL3RyYWNlcGF0aC5jCi1AQCAtMTIsNiArMTIsOCBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgvZXJycXVldWUuaD4KLWRpZmYgLS1naXQgYS90cmFjZXBhdGg2LmMgYi90cmFjZXBhdGg2LmMKLWluZGV4IDEyNmZhZGYuLjlkNTc0NWMgMTAwNjQ0Ci0tLS0gYS90cmFjZXBhdGg2LmMKLSsrKyBiL3RyYWNlcGF0aDYuYwotQEAgLTEyLDYgKzEyLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzLzAwMDEtSW50aWFsaXplLXN0cnVjdC1lbGVtZW50cy1ieS1uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzLzAwMDEtSW50aWFsaXplLXN0cnVjdC1lbGVtZW50cy1ieS1uYW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGEwMWRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMDAwNjI5Zjc0OTA4YTJhOTVmNjEwNDQ0NGM3N2FkOTNjZjQwZDYyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEzIEphbiAyMDE2IDA4OjUwOjUwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEludGlhbGl6ZSBzdHJ1Y3QgZWxlbWVudHMgYnkgbmFtZQotCi1tYWtlcyBpdCBwb3J0YWJsZSBhY3Jvc3MgZ2xpYmMgYW5kIG11c2wKLQotRml4ZXMgZXJyb3JzCi0KLXwgcGluZy5jOiBJbiBmdW5jdGlvbiAnc2VuZF9wcm9iZSc6Ci18IHBpbmcuYzo3MzU6MTk6IHdhcm5pbmc6IGluaXRpYWxpemF0aW9uIG1ha2VzIGludGVnZXIgZnJvbSBwb2ludGVyCi13aXRob3V0IGEgY2FzdCBbLVdpbnQtY29udmVyc2lvbl0KLXwgICAgICAgICAgICZpb3YsIDEsICZjbXNnLCAwLCAwIH07Ci18ICAgICAgICAgICAgICAgICAgICBeCi18IHBpbmcuYzo3MzU6MTk6IG5vdGU6IChuZWFyIGluaXRpYWxpemF0aW9uIGZvciAnbS5fX3BhZDEnKQotfCBwaW5nLmM6NzM1OjE5OiBlcnJvcjogaW5pdGlhbGl6ZXIgZWxlbWVudCBpcyBub3QgY29tcHV0YWJsZSBhdCBsb2FkCi10aW1lCi18IHBpbmcuYzo3MzU6MTk6IG5vdGU6IChuZWFyIGluaXRpYWxpemF0aW9uIGZvciAnbS5fX3BhZDEnKQotfCBtYWtlOiAqKiogW3Bpbmcub10gRXJyb3IgMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHBpbmcuYyB8IDExICsrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BpbmcuYyBiL3BpbmcuYwotaW5kZXggNDk4OTc2MC4uZTY3ZjM4MSAxMDA2NDQKLS0tLSBhL3BpbmcuYwotKysrIGIvcGluZy5jCi1AQCAtNzMxLDggKzczMSwxNSBAQCBpbnQgc2VuZF9wcm9iZSgpCi0gCi0gCWRvIHsKLSAJCXN0YXRpYyBzdHJ1Y3QgaW92ZWMgaW92ID0ge291dHBhY2ssIDB9OwotLQkJc3RhdGljIHN0cnVjdCBtc2doZHIgbSA9IHsgJndoZXJldG8sIHNpemVvZih3aGVyZXRvKSwKLS0JCQkJCQkgICAmaW92LCAxLCAmY21zZywgMCwgMCB9OwotKwkJc3RhdGljIHN0cnVjdCBtc2doZHIgbSA9IHsKLSsJCQkubXNnX25hbWUgPSAmd2hlcmV0bywKLSsJCQkubXNnX25hbWVsZW4gPSBzaXplb2Yod2hlcmV0byksCi0rCQkJLm1zZ19pb3YgPSAmaW92LAotKwkJCS5tc2dfaW92bGVuID0gMSwKLSsJCQkubXNnX2NvbnRyb2wgPSAmY21zZywKLSsJCQkubXNnX2NvbnRyb2xsZW4gPSAwLAotKwkJCS5tc2dfZmxhZ3M9IDAsCi0rCQl9OwotIAkJbS5tc2dfY29udHJvbGxlbiA9IGNtc2dfbGVuOwotIAkJaW92Lmlvdl9sZW4gPSBjYzsKLSAKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2FycGluZy1maXgtYXJwaW5nLWhhbmctaWYtU0lHQUxSTS1pcy1ibG9ja2VkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2FycGluZy1maXgtYXJwaW5nLWhhbmctaWYtU0lHQUxSTS1pcy1ibG9ja2VkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjU2Mjc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLWFycGluZzogZml4IGFycGluZyBoYW5nIGlmIFNJR0FMUk0gaXMgYmxvY2tlZAotCi1VbmJsb2NrIFNJR0FMUk0gc28gdGhhdCB0aGUgcHJldmlvdXNseSBjYWxsZWQgYWxhcm0oKSBjYW4gcHJldmVudAotcmVjdmZyb20oKSBmcm9tIGJsb2NraW5nIGZvcmV2ZXIgaW4gY2FzZSB0aGUgaW5oZXJpdGVkIHByb2NtYXNrIGlzCi1ibG9ja2luZyBTSUdBTFJNIGFuZCBubyBwYWNrZXQgaXMgcmVjZWl2ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotUmVwb3J0ZWQtYnk6IFJ1aSBQcmlvciA8cnByaW9yQGRjYy5mYy51cC5wdD4KLVJILUJ1Z3ppbGxhOiAjMTA4NTk3MQotU2lnbmVkLW9mZi1ieTogSmFuIFN5bmFjZWsgPGpzeW5hY2VrQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBaaGVuYm8gR2FvIDx6aGVuYm8uZ2FvQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9hcnBpbmcuYy5vcmlnIGIvYXJwaW5nLmMKLWluZGV4IDM1NDA4YzEuLjIwOTgxNTkgMTAwNjQ0Ci0tLS0gYS9hcnBpbmcuYy5vcmlnCi0rKysgYi9hcnBpbmcuYwotQEAgLTEyMTUsMTYgKzEyMTUsMjIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQlzb2NrbGVuX3QgYWxlbiA9IHNpemVvZihmcm9tKTsKLSAJCWludCBjYzsKLSAKLSsJCXNpZ2VtcHR5c2V0KCZzc2V0KTsKLSsJCXNpZ2FkZHNldCgmc3NldCwgU0lHQUxSTSk7Ci0rCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0lOVCk7Ci0rCQkvKiBVbmJsb2NrIFNJR0FMUk0gc28gdGhhdCB0aGUgcHJldmlvdXNseSBjYWxsZWQgYWxhcm0oKQotKwkJICogY2FuIHByZXZlbnQgcmVjdmZyb20gZnJvbSBibG9ja2luZyBmb3JldmVyIGluIGNhc2UgdGhlCi0rCQkgKiBpbmhlcml0ZWQgcHJvY21hc2sgaXMgYmxvY2tpbmcgU0lHQUxSTSBhbmQgbm8gcGFja2V0Ci0rCQkgKiBpcyByZWNlaXZlZC4gKi8KLSsJCXNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLCAmc3NldCwgJm9zc2V0KTsKLSsKLSAJCWlmICgoY2MgPSByZWN2ZnJvbShzLCBwYWNrZXQsIHNpemVvZihwYWNrZXQpLCAwLAotIAkJCQkgICAoc3RydWN0IHNvY2thZGRyICopJmZyb20sICZhbGVuKSkgPCAwKSB7Ci0gCQkJcGVycm9yKCJhcnBpbmc6IHJlY3Zmcm9tIik7Ci0gCQkJY29udGludWU7Ci0gCQl9Ci0gCi0tCQlzaWdlbXB0eXNldCgmc3NldCk7Ci0tCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0FMUk0pOwotLQkJc2lnYWRkc2V0KCZzc2V0LCBTSUdJTlQpOwotLQkJc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc3NldCwgJm9zc2V0KTsKLSsJCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNzZXQsIE5VTEwpOwotIAkJcmVjdl9wYWNrKHBhY2tldCwgY2MsIChzdHJ1Y3Qgc29ja2FkZHJfbGwgKikmZnJvbSk7Ci0gCQlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJm9zc2V0LCBOVUxMKTsKLSAJfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi90YXJnZXRzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZGViaWFuL3RhcmdldHMuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNiNTU3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZGViaWFuL3RhcmdldHMuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzYWJsZSBmZWF0dXJlXQotCi1JbmRleDogaXB1dGlscy1zMjAxMjEyMjEvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcHV0aWxzLXMyMDEyMTIyMS5vcmlnL01ha2VmaWxlCi0rKysgaXB1dGlscy1zMjAxMjEyMjEvTWFrZWZpbGUKLUBAIC0xMDYsNyArMTA2LDcgQEAgZW5kaWYKLSBlbmRpZgotIAotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLUlQVjRfVEFSR0VUUz10cmFjZXBhdGggcGluZyBjbG9ja2RpZmYgcmRpc2MgYXJwaW5nIHRmdHBkIHJhcnBkCi0rSVBWNF9UQVJHRVRTPXRyYWNlcGF0aCBwaW5nIGNsb2NrZGlmZiBhcnBpbmcKLSBJUFY2X1RBUkdFVFM9dHJhY2VwYXRoNiB0cmFjZXJvdXRlNiBwaW5nNgotIFRBUkdFVFM9JChJUFY0X1RBUkdFVFMpICQoSVBWNl9UQVJHRVRTKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi91c2VfZ2V0aG9zdGJ5bmFtZTIuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYjE4ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi91c2VfZ2V0aG9zdGJ5bmFtZTIuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBvdGhlciBkaXN0cm8gRGViaWFuXQotCi1JbmRleDogaXB1dGlscy1zMjAxMjEyMjEvdHJhY2VwYXRoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcHV0aWxzLXMyMDEyMTIyMS5vcmlnL3RyYWNlcGF0aC5jCi0rKysgaXB1dGlscy1zMjAxMjEyMjEvdHJhY2VwYXRoLmMKLUBAIC0zNzAsOSArMzcwLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCX0KLSAjZW5kaWYKLSAKLS0JaGUgPSBnZXRob3N0YnluYW1lKHApOwotKwloZSA9IGdldGhvc3RieW5hbWUyKGFyZ3ZbMF0sIEFGX0lORVQpOwotIAlpZiAoaGUgPT0gTlVMTCkgewotLQkJaGVycm9yKCJnZXRob3N0YnluYW1lIik7Ci0rCQloZXJyb3IoImdldGhvc3RieW5hbWUyIik7Ci0gCQlleGl0KDEpOwotIAl9Ci0gCi1JbmRleDogaXB1dGlscy1zMjAxMjEyMjEvcGluZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy9waW5nLmMKLSsrKyBpcHV0aWxzLXMyMDEyMTIyMS9waW5nLmMKLUBAIC0yNzksNyArMjc5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gI2Vsc2UKLSAJCQlpZG4gPSB0YXJnZXQ7Ci0gI2VuZGlmCi0tCQkJaHAgPSBnZXRob3N0YnluYW1lKGlkbik7Ci0rCQkJaHAgPSBnZXRob3N0YnluYW1lMihpZG4sIEFGX0lORVQpOwotIAkJCWlmICghaHApIHsKLSAJCQkJZnByaW50ZihzdGRlcnIsICJwaW5nOiB1bmtub3duIGhvc3QgJXNcbiIsIHRhcmdldCk7Ci0gCQkJCWV4aXQoMik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvbnNnbWxzLXBhdGgtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJiZjk0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvbnNnbWxzLXBhdGgtZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRml4IG5zZ21scyBwYXRoIGlzc3VlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBaaGFpIEVkd2luIDxlZHdpbi56aGFpQGludGVsLmNvbT4KLQotSW5kZXg6IGlwdXRpbHMtczIwMTAxMDA2L2RvYy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwdXRpbHMtczIwMTAxMDA2Lm9yaWcvZG9jL01ha2VmaWxlCTIwMTEtMDktMTMgMjA6NDI6MjcuMDAwMDAwMDAwICswODAwCi0rKysgaXB1dGlscy1zMjAxMDEwMDYvZG9jL01ha2VmaWxlCTIwMTEtMDktMTMgMjE6MDE6NTIuMDAwMDAwMDAwICswODAwCi1AQCAtMjcsMTAgKzI3LDE1IEBACi0gIyBkb2Nib29rMm1hbiBwcm9kdWNlcyB1dHRlcmx5IHVnbHkgb3V0cHV0IGFuZCBJIGRpZCBub3QgZmluZAotICMgYW55IHdheSB0byBjdXN0b21pemUgdGhpcyBidXQgaGFja2luZyBiYWNrZW5kIHBlcmwgc2NyaXB0IGEgbGl0dGxlLgotICMgV2VsbCwgaGVuY2UuLi4KLSsjIG5zZ21scyBzZWVtcyBhcHBlbmQgcGF0aCB0byBzZWFyY2ggZGlyZWN0b3J5IGFjY29yZGluZyB0byB0aGUgc3lzaWQgcGF0aC4KLSsjIGUuZy4gaWYgaW5wdXQgLi4vaW5kZXguZGIsIGl0IHdvdWxkIHNlYXJjaCAkc2VhcmNoX2RpcmVjdG9yeS8uLi8gcmF0aGVyIHRoYW4KLSsjICRzZWFyY2hfZGlyZWN0b3J5LCB3aGljaCBsZWFkcyBzZWFyY2hpbmcgZmFpbHVyZS4gRml4aW5nIG5zZ21scyBwcm9iYWJseQotKyMgaW50cm9kdWNlIHNvbWUgc2lkZSBlZmZlY3RzLCBzbyB1c2UgdGhpcyB1Z2x5IGhhY2s6IHJ1bm5pbmcgbnNnbWxzIGluIGN1cnJlbnQKLSsjIGRpcmVjdG9yeSwgYW5kIHJ1bm5pbmcgZG9jYm9vazJtYW4gaW4gdG1wIGRpcmVjdG9yeS4KLSAKLSAkKE1BTkZJTEVTKTogaW5kZXguZGIKLSAJQC1ta2RpciB0bXAuZGIybWFuCi0tCUBzZXQgLWU7IGNkIHRtcC5kYjJtYW47IG5zZ21scyAuLi8kPCB8IHNnbWxzcGwgLi4vZG9jYm9vazJtYW4tc3BlYy5wbCA7CW12ICRAIC4uCi0rCUBzZXQgLWU7IG5zZ21scyAkPCA+dG1wLmRiMm1hbi9vdXRwdXQ7IGNkIHRtcC5kYjJtYW47IGNhdCBvdXRwdXQgfCBzZ21sc3BsIC4uL2RvY2Jvb2sybWFuLXNwZWMucGwgOwltdiAkQCAuLgotIAlALXJtIC1yZiB0bXAuZGIybWFuCi0gCi0gY2xlYW46CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxNTEyMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxNTEyMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZGU2ZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrIG1vbml0b3JpbmcgdG9vbHMiCi1ERVNDUklQVElPTiA9ICJVdGlsaXRpZXMgZm9yIHRoZSBJUCBwcm90b2NvbCwgaW5jbHVkaW5nIHRyYWNlcm91dGU2LCBcCi10cmFjZXBhdGgsIHRyYWNlcGF0aDYsIHBpbmcsIHBpbmc2IGFuZCBhcnBpbmcuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5za2J1ZmYubmV0L2lwdXRpbHMiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTM1O21kNT1mOWNlYjIwMTczM2U5YTZjZjhmMDA3NjZkZDI3OGQ4MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZXBhdGguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTEwO21kNT0wZWNlYTJiZjYwYmZmMmYzZDg0MDA5NmQ4NzY0N2YzZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcnBpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1mZTg0MzAxYjVjMjY1NWM5NTBmOGI5MmEwNTdmYWZhNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZnRwZC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PTI4ODM0YmY4YTkxYTViOGE5Mjc1NWRiZWU3MDllZjk2ICIKLQotREVQRU5EUyA9ICJnbnV0bHMgbGliY2FwIGxpYmdjcnlwdCIKLQotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuc2tidWZmLm5ldC9pcHV0aWxzLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi91c2VfZ2V0aG9zdGJ5bmFtZTIuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vdGFyZ2V0cy5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL25zZ21scy1wYXRoLWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW50aWFsaXplLXN0cnVjdC1lbGVtZW50cy1ieS1uYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FycGluZy1maXgtYXJwaW5nLWhhbmctaWYtU0lHQUxSTS1pcy1ibG9ja2VkLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4YWFhNzM5NWYyN2RmZjlmNTdhZTAxNmQ0YmM3NTNjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NDlmNThkNzE5NTFlNTJiNDY1OTU4MjkxMzRkNGUzMzA2NDJmNTIyZjUwMDI2OTE3ZmFkYzM0OWE1NDgyNWExIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpcHV0aWxzLSg/UDxwdmVyPnNcZCspLnRhciIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9IC1EX0dOVV9TT1VSQ0UnIFZQQVRIPSIke1NUQUdJTkdfTElCRElSfToke1NUQUdJTkdfRElSX0hPU1R9LyR7YmFzZV9saWJkaXJ9IiBhbGwKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCSMgU1VJRCByb290IHByb2dyYW1zCi0JaW5zdGFsbCAtbSA0NTU1IHBpbmcgJHtEfSR7YmFzZV9iaW5kaXJ9L3BpbmcKLQlpbnN0YWxsIC1tIDQ1NTUgcGluZzYgJHtEfSR7YmFzZV9iaW5kaXJ9L3Bpbmc2Ci0JaW5zdGFsbCAtbSA0NTU1IHRyYWNlcm91dGU2ICR7RH0ke2Jhc2VfYmluZGlyfS8KLQlpbnN0YWxsIC1tIDQ1NTUgY2xvY2tkaWZmICR7RH0ke2Jhc2VfYmluZGlyfS8KLQkjIE90aGVyIHByb2dyYW1ncwotCWZvciBpIGluIGFycGluZyB0cmFjZXBhdGggdHJhY2VwYXRoNjsgZG8KLQkgIGluc3RhbGwgLW0gMDc1NSAkaSAke0R9JHtiYXNlX2JpbmRpcn0vCi0JZG9uZQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1BTFRFUk5BVElWRV8ke1BOfS1waW5nID0gInBpbmciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZ10gPSAiJHtiYXNlX2JpbmRpcn0vcGluZyIKLQotQUxURVJOQVRJVkVfJHtQTn0tcGluZzYgPSAicGluZzYiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZzZdID0gIiR7YmFzZV9iaW5kaXJ9L3Bpbmc2IgotCi1QQUNLQUdFUyArPSAiJHtQTn0tcGluZyAke1BOfS1waW5nNiAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LXRyYWNlcGF0aDYgJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tY2xvY2tkaWZmIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXBpbmcgJHtQTn0tcGluZzYgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXBhdGg2ICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiIKLQotRklMRVNfJHtQTn0JPSAiIgotRklMRVNfJHtQTn0tcGluZyA9ICIke2Jhc2VfYmluZGlyfS9waW5nLiR7QlBOfSIKLUZJTEVTXyR7UE59LXBpbmc2ID0gIiR7YmFzZV9iaW5kaXJ9L3Bpbmc2LiR7QlBOfSIKLUZJTEVTXyR7UE59LWFycGluZyA9ICIke2Jhc2VfYmluZGlyfS9hcnBpbmciCi1GSUxFU18ke1BOfS10cmFjZXBhdGggPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2VwYXRoIgotRklMRVNfJHtQTn0tdHJhY2VwYXRoNiA9ICIke2Jhc2VfYmluZGlyfS90cmFjZXBhdGg2IgotRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZTYJPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2Vyb3V0ZTYiCi1GSUxFU18ke1BOfS1jbG9ja2RpZmYgPSAiJHtiYXNlX2JpbmRpcn0vY2xvY2tkaWZmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTYxMTA1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTYxMTA1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMjU3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxNjExMDUuYmIKQEAgLTAsMCArMSw2MiBAQAorU1VNTUFSWSA9ICJOZXR3b3JrIG1vbml0b3JpbmcgdG9vbHMiCitERVNDUklQVElPTiA9ICJVdGlsaXRpZXMgZm9yIHRoZSBJUCBwcm90b2NvbCwgaW5jbHVkaW5nIHRyYWNlcm91dGU2LCBcCit0cmFjZXBhdGgsIHRyYWNlcGF0aDYsIHBpbmcsIHBpbmc2IGFuZCBhcnBpbmcuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGluZy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzU7bWQ1PWY5Y2ViMjAxNzMzZTlhNmNmOGYwMDc2NmRkMjc4ZDgyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyYWNlcGF0aC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTA7bWQ1PTBlY2VhMmJmNjBiZmYyZjNkODQwMDk2ZDg3NjQ3ZjNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2FycGluZy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTE7bWQ1PWZlODQzMDFiNWMyNjU1Yzk1MGY4YjkyYTA1N2ZhZmE2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RmdHBkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zMjttZDU9Mjg4MzRiZjhhOTFhNWI4YTkyNzU1ZGJlZTcwOWVmOTYgIgorCitERVBFTkRTID0gImdudXRscyBsaWJjYXAgbGliZ2NyeXB0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLU1VU0wucGF0Y2ggXAorICAgICAgICAgICAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImJmZmMwZTk1N2I5OGQ2MjZhYjRjZWEyMThjODkyNTEyMDE0MjU0NDIiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPnNcZCspIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIlVTRV9JRE49eWVzLFVTRV9JRE49bm8sbGliaWRuIgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlICdDQz0ke0NDfSAtRF9HTlVfU09VUkNFJyBWUEFUSD0iJHtTVEFHSU5HX0xJQkRJUn06JHtTVEFHSU5HX0RJUl9IT1NUfS8ke2Jhc2VfbGliZGlyfSIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBhbGwKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCSMgU1VJRCByb290IHByb2dyYW1zCisJaW5zdGFsbCAtbSA0NTU1IHBpbmcgJHtEfSR7YmFzZV9iaW5kaXJ9L3BpbmcKKwlpbnN0YWxsIC1tIDQ1NTUgdHJhY2Vyb3V0ZTYgJHtEfSR7YmFzZV9iaW5kaXJ9LworCWluc3RhbGwgLW0gNDU1NSBjbG9ja2RpZmYgJHtEfSR7YmFzZV9iaW5kaXJ9LworCSMgT3RoZXIgcHJvZ3JhbWdzCisJZm9yIGkgaW4gYXJwaW5nIHRyYWNlcGF0aDsgZG8KKwkgIGluc3RhbGwgLW0gMDc1NSAkaSAke0R9JHtiYXNlX2JpbmRpcn0vCisJZG9uZQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfS1waW5nID0gInBpbmciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZ10gPSAiJHtiYXNlX2JpbmRpcn0vcGluZyIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcGluZyAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiIKKworRklMRVNfJHtQTn0JPSAiIgorRklMRVNfJHtQTn0tcGluZyA9ICIke2Jhc2VfYmluZGlyfS9waW5nLiR7QlBOfSIKK0ZJTEVTXyR7UE59LWFycGluZyA9ICIke2Jhc2VfYmluZGlyfS9hcnBpbmciCitGSUxFU18ke1BOfS10cmFjZXBhdGggPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2VwYXRoIgorRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZTYJPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2Vyb3V0ZTYiCitGSUxFU18ke1BOfS1jbG9ja2RpZmYgPSAiJHtiYXNlX2JpbmRpcn0vY2xvY2tkaWZmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sZXNzL2xlc3NfNDg3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sZXNzL2xlc3NfNDg3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2FlNDg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzQ4Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dCBmaWxlIHZpZXdlciBzaW1pbGFyIHRvIG1vcmUiCi1ERVNDUklQVElPTiA9ICJMZXNzIGlzIGEgcHJvZ3JhbSBzaW1pbGFyIHRvIG1vcmUsIGkuZS4gYSB0ZXJtaW5hbCBcCi1iYXNlZCBwcm9ncmFtIGZvciB2aWV3aW5nIHRleHQgZmlsZXMgYW5kIHRoZSBvdXRwdXQgZnJvbSBvdGhlciBcCi1wcm9ncmFtcy4gTGVzcyBvZmZlcnMgbWFueSBmZWF0dXJlcyBiZXlvbmQgdGhvc2UgdGhhdCBtb3JlIGRvZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi0jIChHUEx2MisgKDw8IDQxOCksIEdQTHYzKyAoPj0gNDE4KSkgfCBsZXNzCi0jIEluY2x1ZGluZyBlbWFpbCBhdXRob3IgZ2l2aW5nIHBlcm1pc3NpbmcgdG8gdXNlIEJTRAotIwotIyBGcm9tOiBNYXJrIE51ZGVsbWFuIDxtYXJrbkBncmVlbndvb2Rzb2Z0d2FyZS5jb20+Ci0jIFRvOiBFbGl6YWJldGggRmxhbmFnYW4gPGVsaXphYmV0aC5mbGFuYWdhbkBpbnRlbC5jb20KLSMgRGF0ZTogMTIvMTkvMTEKLSMKLSMgSGkgRWxpemFiZXRoLAotIyBVc2luZyBhIGdlbmVyaWMgQlNEIGxpY2Vuc2UgZm9yIGxlc3MgaXMgZmluZSB3aXRoIG1lLgotIyBUaGFua3MsCi0jCi0jIC0tTWFyawotIwotCi1MSUNFTlNFID0gIkdQTHYzKyB8IEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTJlZjNlNGI4ZGFmYzg1NjEyYmM1MjU0YjgwODFlMjM0IgotREVQRU5EUyA9ICJuY3Vyc2VzIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLQkgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImRjYzhiZjE4M2E4M2IzNjJkMzdmZTllZjhkZjFmYjYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzZGM4NDU1Y2IwYjJiNjZlMGM2YjgxNmMwMDE5N2E3MWJmNmQxNzg3MDc4YWRlZWUwYmNmMmFlYTRiMTI3MDYiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS9sZXNzL2Rvd25sb2FkLmh0bWwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgJ2JpbmRpcj0ke0R9JHtiaW5kaXJ9JyAnbWFuZGlyPSR7RH0ke21hbmRpcn0nIGluc3RhbGwKLX0KLQotQUxURVJOQVRJVkVfJHtQTn0gPSAibGVzcyIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUyOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUyOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODZmNzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sZXNzL2xlc3NfNTI5LmJiCkBAIC0wLDAgKzEsNDIgQEAKK1NVTU1BUlkgPSAiVGV4dCBmaWxlIHZpZXdlciBzaW1pbGFyIHRvIG1vcmUiCitERVNDUklQVElPTiA9ICJMZXNzIGlzIGEgcHJvZ3JhbSBzaW1pbGFyIHRvIG1vcmUsIGkuZS4gYSB0ZXJtaW5hbCBcCitiYXNlZCBwcm9ncmFtIGZvciB2aWV3aW5nIHRleHQgZmlsZXMgYW5kIHRoZSBvdXRwdXQgZnJvbSBvdGhlciBcCitwcm9ncmFtcy4gTGVzcyBvZmZlcnMgbWFueSBmZWF0dXJlcyBiZXlvbmQgdGhvc2UgdGhhdCBtb3JlIGRvZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCisjIChHUEx2MisgKDw8IDQxOCksIEdQTHYzKyAoPj0gNDE4KSkgfCBsZXNzCisjIEluY2x1ZGluZyBlbWFpbCBhdXRob3IgZ2l2aW5nIHBlcm1pc3NpbmcgdG8gdXNlIEJTRAorIworIyBGcm9tOiBNYXJrIE51ZGVsbWFuIDxtYXJrbkBncmVlbndvb2Rzb2Z0d2FyZS5jb20+CisjIFRvOiBFbGl6YWJldGggRmxhbmFnYW4gPGVsaXphYmV0aC5mbGFuYWdhbkBpbnRlbC5jb20KKyMgRGF0ZTogMTIvMTkvMTEKKyMKKyMgSGkgRWxpemFiZXRoLAorIyBVc2luZyBhIGdlbmVyaWMgQlNEIGxpY2Vuc2UgZm9yIGxlc3MgaXMgZmluZSB3aXRoIG1lLgorIyBUaGFua3MsCisjCisjIC0tTWFyaworIworCitMSUNFTlNFID0gIkdQTHYzKyB8IEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTJlZjNlNGI4ZGFmYzg1NjEyYmM1MjU0YjgwODFlMjM0IgorREVQRU5EUyA9ICJuY3Vyc2VzIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKwkgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjMyMDE4YjUzYTFmNzMxOWFiNTQzNDliYWY4MGU2YWE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiYTQyY2Q0YzM4MTc0YjdiZDBkNDI2ZDhhMzlkZjJiZTZiY2MxZWMxODk0NmE0NjQyNzEzMjkwZjZiZjlhMGIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS9sZXNzL2Rvd25sb2FkLmh0bWwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgJ2JpbmRpcj0ke0R9JHtiaW5kaXJ9JyAnbWFuZGlyPSR7RH0ke21hbmRpcn0nIGluc3RhbGwKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAibGVzcyIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2Rlc3RkaXIucGF0Y2gKaW5kZXggZGFkOTYwMS4uMGY5MDQwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2Rlc3RkaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2Rlc3RkaXIucGF0Y2gKQEAgLTIsMTYgKzIsMTYgQEAKIAogZnJvbSBvcGVuZW1iZWRkZWQsIGFkZGVkIGJ5IFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgogCi1JbmRleDogbGliYWlvLTAuMy4xMDYvTWFrZWZpbGUKK0luZGV4OiBsaWJhaW8tMC4zLjExMC9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmFpby0wLjMuMTA2Lm9yaWcvTWFrZWZpbGUJMjAwNC0wMi0yNiAwNzoyNToxMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBsaWJhaW8tMC4zLjEwNi9NYWtlZmlsZQkyMDA2LTEwLTE0IDA5OjE5OjA3LjAwMDAwMDAwMCAtMDcwMAotQEAgLTE1LDcgKzE1LDcgQEAKKy0tLSBsaWJhaW8tMC4zLjExMC5vcmlnL01ha2VmaWxlCisrKysgbGliYWlvLTAuMy4xMTAvTWFrZWZpbGUKK0BAIC0xNSw3ICsxNSw3IEBAIGFsbDoKICAJQCQoTUFLRSkgLUMgc3JjCiAgCiAgaW5zdGFsbDoKIC0JQCQoTUFLRSkgLUMgc3JjIGluc3RhbGwgcHJlZml4PSQocHJlZml4KSBpbmNsdWRlZGlyPSQoaW5jbHVkZWRpcikgbGliZGlyPSQobGliZGlyKQogKwlAJChNQUtFKSAtQyBzcmMgaW5zdGFsbCBwcmVmaXg9JChERVNURElSKSQocHJlZml4KSBpbmNsdWRlZGlyPSQoREVTVERJUikkKGluY2x1ZGVkaXIpIGxpYmRpcj0kKERFU1RESVIpJChsaWJkaXIpCiAgCi0gCi0gY2xlYW46CisgY2hlY2s6CisgCUAkKE1BS0UpIC1DIGhhcm5lc3MgY2hlY2sKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKaW5kZXggNTY4M2QzYy4uZGI5MTMxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKQEAgLTksMTIgKzksMTIgQEAKIFNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CiAyMDEyLzA1LzAzCiAKLUluZGV4OiBsaWJpZG4tMS4yNC9jb25maWd1cmUuYWMKK0luZGV4OiBsaWJpZG4tMS4zMy9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJpZG4tMS4yNC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGxpYmlkbi0xLjI0L2NvbmZpZ3VyZS5hYwotQEAgLTM0LDYgKzM0LDEwIEBAIEFDX1NVQlNUKExUX0NVUlJFTlQsIDE3KQotIEFDX1NVQlNUKExUX1JFVklTSU9OLCA3KQorLS0tIGxpYmlkbi0xLjMzLm9yaWcvY29uZmlndXJlLmFjCisrKysgbGliaWRuLTEuMzMvY29uZmlndXJlLmFjCitAQCAtMzMsNiArMzMsMTAgQEAgQUNfU1VCU1QoTFRfQ1VSUkVOVCwgMTcpCisgQUNfU1VCU1QoTFRfUkVWSVNJT04sIDE2KQogIEFDX1NVQlNUKExUX0FHRSwgNikKICAKICsjIGF1dG9tYWtlIDEuMTIgc2VlbXMgdG8gcmVxdWlyZSB0aGlzLCBidXQgYXV0b21ha2UgMS4xMSBkb2Vzbid0IHJlY29nbml6ZSBpdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCmluZGV4IGI0NTg3OTkuLjIzMjYyZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKQEAgLTExLDMgKzExLDUgQEAKIFNSQ19VUklbdGFyLnNoYTI1NnN1bV0gPSAiMTcxZjg5Njk5ZjI4NmE1ODU0YjcyYjkxZDA2ZThmOGUzNjgzMDY0YzU5MDFmYjA5ZDk1NGE5YWI2ZjU1MWY4MSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJwaXBlbGluZS9saWJwaXBlbGluZV8xLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjYzllNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjAuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJwaXBlbGluZSBtYW5pcHVsYXRpb24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSBDIGxpYnJhcnkgZm9yIHNldHRpbmcgdXAgYW5kIHJ1bm5pbmcgcGlwZWxpbmVzIG9mIHByb2Nlc3NlcywgXAord2l0aG91dCBuZWVkaW5nIHRvIGludm9sdmUgc2hlbGwgY29tbWFuZC1saW5lIHBhcnNpbmcgd2hpY2ggaXMgb2Z0ZW4gXAorZXJyb3ItcHJvbmUgYW5kIGluc2VjdXJlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJwaXBlbGluZS5ub25nbnUub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNzQzN2E1MDIwMTkwY2ZhODRmMDljNDEyZGIzODkwMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZDcyZTEyZTRmMmFmZmY2N2ZkN2I5ZGYwYTI0ZDdiYTQyYjVhN2M5MjExYWM1YjNkY2NjYzVjZDhiMjg2ZjJiIgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCBhNTc1ZDBlLi5lNWNiNjBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNGQ5YjZlYzMwYjc4ZDAwZWFkMGEyMmViNWQwNDdkY2RiYTM3ZTk5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDdjNmYxYjQzMzJhOWU0OTM1YzQ4Y2NhODI2Nzg2YTZiOGZlNmY1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206ID0/VVRGLTg/cT9OZWFsPTIwR29tcGE9MjA9Mjg9RTM9ODM9OEI9RTM9ODM9QkM9RTM9ODM9QUI9RTM9ODM9QkI/PQogID0/VVRGLTg/cT89RTM9ODI9QjM9RTM9ODI9OTk9RTM9ODM9QjM9RTM9ODM9OEY9RTM9ODI9OUE9Mjk/PQogIDxuZ29tcGExM0BnbWFpbC5jb20+CkBAIC0xMyw2ICsxMyw3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9wdWxsLzExMl0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBleHQvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICB8ICAgNyArKwogIGV4dC9zb2x2X3hmb3Blbi5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstLQpAQCAtMjMsNyArMjQsNyBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHQvc29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuaAogCiBkaWZmIC0tZ2l0IGEvZXh0L0NNYWtlTGlzdHMudHh0IGIvZXh0L0NNYWtlTGlzdHMudHh0Ci1pbmRleCA1ODZlZGE4Li40NzdhMmVmIDEwMDY0NAoraW5kZXggYjg5MTdhMi4uZmFjNmMzMiAxMDA2NDQKIC0tLSBhL2V4dC9DTWFrZUxpc3RzLnR4dAogKysrIGIvZXh0L0NNYWtlTGlzdHMudHh0CiBAQCAtNCw2ICs0LDEzIEBAIFNFVCAobGlic29sdmV4dF9TUkNTCkBAIC00MSwxMSArNDIsMTEgQEAKICAgICAgU0VUIChsaWJzb2x2ZXh0X1NSQ1MgJHtsaWJzb2x2ZXh0X1NSQ1N9CiAgICAgICAgICBwb29sX2ZpbGVjb25mbGljdHMuYyByZXBvX3JwbWRiLmMpCiBkaWZmIC0tZ2l0IGEvZXh0L3NvbHZfeGZvcGVuLmMgYi9leHQvc29sdl94Zm9wZW4uYwotaW5kZXggYjA0MjFiZi4uMzEzNDVkZCAxMDA2NDQKK2luZGV4IDJjNjRiYjYuLmViM2EzYWQgMTAwNjQ0CiAtLS0gYS9leHQvc29sdl94Zm9wZW4uYwogKysrIGIvZXh0L3NvbHZfeGZvcGVuLmMKLUBAIC0xMyw2ICsxMywxMCBAQAotICNpbmNsdWRlIDx6bGliLmg+CitAQCAtMTIsNiArMTIsMTAgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgCiArI2lmICFkZWZpbmVkKEhBVkVfRlVOT1BFTikgJiYgIWRlZmluZWQoSEFWRV9GT1BFTkNPT0tJRSkKQEAgLTU1LDcgKzU2LDcgQEAKICAjaW5jbHVkZSAic29sdl94Zm9wZW4uaCIKICAjaW5jbHVkZSAidXRpbC5oIgogIAotQEAgLTM5LDcgKzQzLDcgQEAgc3RhdGljIEZJTEUgKmNvb2tpZW9wZW4odm9pZCAqY29va2llLCBjb25zdCBjaGFyICptb2RlLAorQEAgLTIxLDcgKzI1LDcgQEAgc3RhdGljIEZJTEUgKmNvb2tpZW9wZW4odm9pZCAqY29va2llLCBjb25zdCBjaGFyICptb2RlLAogIAlzc2l6ZV90ICgqY3dyaXRlKSh2b2lkICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KSwKICAJaW50ICgqY2Nsb3NlKSh2b2lkICopKQogIHsKQEAgLTY0LDcgKzY1LDcgQEAKICAgIGlmICghY29va2llKQogICAgICByZXR1cm4gMDsKICAgIHJldHVybiBmdW5vcGVuKGNvb2tpZSwKLUBAIC00OCw3ICs1Miw3IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKK0BAIC0zMCw3ICszNCw3IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKICAgICAgICAoZnBvc190ICgqKSh2b2lkICosIGZwb3NfdCwgaW50KSlOVUxMLAkJCQkJLyogc2Vla2ZuICovCiAgICAgICAgY2Nsb3NlCiAgICAgICAgKTsKQEAgLTczLDcgKzc0LDcgQEAKICAgIGNvb2tpZV9pb19mdW5jdGlvbnNfdCBjaW87CiAgCiAgICBpZiAoIWNvb2tpZSkKLUBAIC02MCw4ICs2NCw2IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKK0BAIC00Miw4ICs0Niw2IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKICAgICAgY2lvLndyaXRlID0gY3dyaXRlOwogICAgY2lvLmNsb3NlID0gY2Nsb3NlOwogICAgcmV0dXJuICBmb3BlbmNvb2tpZShjb29raWUsICptb2RlID09ICd3JyA/ICJ3IiA6ICJyIiwgY2lvKTsKQEAgLTI0Niw1ICsyNDcsNSBAQAogKwogKyNlbmRpZgogLS0gCi0yLjExLjAKKzIuNC4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1yZXBvX3JwbWRiLmMtaW5jcmVhc2UtTUFYX0hEUl9DTlQtYW5kLU1BWF9IRFJfRFNJWkUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNGU1Y2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1yZXBvX3JwbWRiLmMtaW5jcmVhc2UtTUFYX0hEUl9DTlQtYW5kLU1BWF9IRFJfRFNJWkUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDFjNGM5MzVjYjczYWMxY2NiOTY5M2RmMWE1MWJhMjE4YTIyZThjYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIFNlcCAyMDE3IDExOjE1OjE2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlcG9fcnBtZGIuYzogaW5jcmVhc2UgTUFYX0hEUl9DTlQgYW5kIE1BWF9IRFJfRFNJWkUKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L3B1bGwvMjMwXQotCi1XZSBlbmNvdW50ZXJlZCAnY29ycnVwdCBycG0nIGlzc3VlcyB3aGVuIGluc3RhbGxpbmcgZXh0cmVtZSBiaWcgUlBNCi1wYWNrYWdlcyBsaWtlIHRoZSBrZXJuZWwtZGV2c3JjIHBhY2thZ2Ugb2YgWW9jdG8gcHJvamVjdC4KLQotSXQgY2FuIGJlIGZpeGVkIGJ5IGluY3JlYXNpbmcgTUFYX0hEUl9DTlQgYW5kIE1BWF9IRFJfRFNJWkUgcGVyIHRlc3QuCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KLS0tLQotIGV4dC9yZXBvX3JwbWRiLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXh0L3JlcG9fcnBtZGIuYyBiL2V4dC9yZXBvX3JwbWRiLmMKLWluZGV4IGM3MDAwYTkuLjcwMDA4MzUgMTAwNjQ0Ci0tLS0gYS9leHQvcmVwb19ycG1kYi5jCi0rKysgYi9leHQvcmVwb19ycG1kYi5jCi1AQCAtMTcwLDggKzE3MCw4IEBACi0gI2RlZmluZSBNQVhfU0lHX0NOVAkJMHgxMDAwMDAKLSAjZGVmaW5lIE1BWF9TSUdfRFNJWkUJCTB4MTAwMDAwCi0gCi0tI2RlZmluZSBNQVhfSERSX0NOVAkJMHgxMDAwMDAKLS0jZGVmaW5lIE1BWF9IRFJfRFNJWkUJCTB4MjAwMDAwMAotKyNkZWZpbmUgTUFYX0hEUl9DTlQJCTB4MjAwMDAwCi0rI2RlZmluZSBNQVhfSERSX0RTSVpFCQkweDQwMDAwMDAKLSAKLSB0eXBlZGVmIHN0cnVjdCBycG1oZWFkIHsKLSAgIGludCBjbnQ7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDItRml4ZXMtdG8taW50ZXJuYWwtZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IGVmYjRlM2EuLjkzYjhjYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDItRml4ZXMtdG8taW50ZXJuYWwtZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTliMTBjZGY2YTBmOGEyNGUxNjcwYzE4MTNiMWQ5NTYzYWUzZjViNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODRlMTJiZjdlY2U0OTA3M2M1NTlkZmQ1ODAwNTEzMmE2MDk5YTk2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206ID0/VVRGLTg/cT9OZWFsPTIwR29tcGE9MjA9Mjg9RTM9ODM9OEI9RTM9ODM9QkM9RTM9ODM9QUI9RTM9ODM9QkI/PQogID0/VVRGLTg/cT89RTM9ODI9QjM9RTM9ODI9OTk9RTM9ODM9QjM9RTM9ODM9OEY9RTM9ODI9OUE9Mjk/PQogIDxuZ29tcGExM0BnbWFpbC5jb20+CkBAIC0xMSw2ICsxMSw3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9wdWxsLzExMl0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBleHQvc29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuYyB8IDE5ICsrKysrKysrKystLS0tLS0tLS0KICBleHQvc29sdl94Zm9wZW5fZmFsbGJhY2tfZm9wZW5jb29raWUuaCB8IDEwICsrKysrLS0tLS0KQEAgLTEwMCw1ICsxMDEsNSBAQAogIAogICNpZm5kZWYgU09MVl9YRk9QRU5fRkFMTEJBQ0tfRk9QRU5DT09LSUVfSAogLS0gCi0yLjExLjAKKzIuNC4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM4ZjdmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKLQotREVQRU5EUyA9ICJleHBhdCB6bGliIHJwbSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDUkVWID0gImI4YTlkZGQ4OGViNGUwYWIzNTFlYjU1YTUzMTg2YjVkYzVhYzA4MjUiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRVhUUkFfT0VDTUFLRSA9ICItRExJQj0ke2Jhc2VsaWJ9IC1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX1JQTU1EPU9OIC1ERU5BQkxFX1JQTURCPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcy9GaW5kTGliU29sdi5jbWFrZSIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn1leHQgPSAiJHtsaWJkaXJ9LyR7UE59ZXh0LnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDAxY2VkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjMzLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgorCitERVBFTkRTID0gImV4cGF0IHpsaWIgcnBtIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi5naXQgXAorICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtQWRkLWZhbGxiYWNrLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDItRml4ZXMtdG8taW50ZXJuYWwtZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitTUkNSRVYgPSAiNjlmMTgwMzk3OGJhN2E0NmE1NzkyOGZhNGJlNjQzMDc5MjQxOWU0ZSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFID0gIi1ETElCPSR7YmFzZWxpYn0gLURNVUxUSV9TRU1BTlRJQ1M9T04gLURFTkFCTEVfUlBNTUQ9T04gLURFTkFCTEVfUlBNREI9T04gLURFTkFCTEVfQ09NUExFWF9ERVBTPU9OIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMgJHtQTn1leHQiCisKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn1leHQgPSAiJHtsaWJkaXJ9LyR7UE59ZXh0LnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiCmluZGV4IDE3NjUzNDYuLjdlYzU0ZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ1c2VyL2xpYnVzZXJfMC42Mi5iYgpAQCAtMjIsNiArMjIsOSBAQAogCiBERVBFTkRTID0gInBvcHQgbGlicGFtIGdsaWItMi4wIHB5dGhvbjMiCiAKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgorCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB5dGhvbjNuYXRpdmUgcHl0aG9uMy1kaXIgcGtnY29uZmlnIGd0ay1kb2MKIAogRVhUUkFfT0VNQUtFID0gIlBZVEhPTl9DUFBGTEFHUz0tSSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaAppbmRleCBiOGM3ZjM3Li5mMTdiZGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTdhOGM5MjViOTMxNmE3MmJkYzhmMzI3ODlmZmU1NmZkYTVjNDc4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjJhZmM1ZDlhYWEyMTVjM2M4N2JhMjFjNzdkNDdkYTQ0YWIzYjExMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAyNiBBdWcgMjAxNiAxODoyMDozMiArMDMwMAogU3ViamVjdDogW1BBVENIXSBVc2UgcGtnLWNvbmZpZyBmb3IgcGNyZSBkZXBlbmRlbmN5IGluc3RlYWQgb2YgLWNvbmZpZyBzY3JpcHQuCkBAIC03LDMxICs3LDM2IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCi0gY29uZmlndXJlLmFjIHwgMTEgKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDE2ICsrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMWQxNzJhMS4uYTkyMzZkYSAxMDA2NDQKK2luZGV4IDUzODNjZWMuLmMyOWE5MDIgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM4MCwxMSArMzgwLDEyIEBAIGlmIHRlc3QgIiRXSVRIX1BDUkUiICE9ICJubyI7IHRoZW4KLSAJCQlQQ1JFX0xJQj0iLUwkV0lUSF9QQ1JFL2xpYiAtbHBjcmUiCi0gCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSRXSVRIX1BDUkUvaW5jbHVkZSIKLSAJCWVsc2UKLS0JCQlBQ19QQVRIX1BST0coUENSRUNPTkZJRywgcGNyZS1jb25maWcpCi0tCQkJaWYgdGVzdCB4IiRQQ1JFQ09ORklHIiAhPSB4OyB0aGVuCi0tCQkJCVBDUkVfTElCPWAkUENSRUNPTkZJRyAtLWxpYnNgCi0tCQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgYCRQQ1JFQ09ORklHIC0tY2ZsYWdzYCIKLS0JCQlmaQotKwkJCVBLR19DSEVDS19NT0RVTEVTKFBDUkVQS0csIFtsaWJwY3JlXSwgWworQEAgLTY1MSwxMCArNjUxLDE4IEBAIEFDX0FSR19XSVRIKFtwY3JlXSwKKyApCisgQUNfTVNHX1JFU1VMVChbJFdJVEhfUENSRV0pCisgCistaWYgdGVzdCAiJFdJVEhfUENSRSIgIT0gbm87IHRoZW4KKy0gIGlmIHRlc3QgIiRXSVRIX1BDUkUiICE9IHllczsgdGhlbgorLSAgICBQQ1JFX0xJQj0iLUwkV0lUSF9QQ1JFL2xpYiAtbHBjcmUiCistICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkV0lUSF9QQ1JFL2luY2x1ZGUiCisraWYgdGVzdCAiJFdJVEhfUENSRSIgIT0gIm5vIjsgdGhlbgorKyAgUEtHX0NIRUNLX01PRFVMRVMoUENSRVBLRywgW2xpYnBjcmVdLCBbCiArCQkJCVBDUkVfTElCPSR7UENSRVBLR19MSUJTfQogKwkJCQlDUFBGTEFHUz0iJENQUEZMQUdTICR7UENSRVBLR19DRkxBR1N9IgotKwkJCV0sIFsKKysgIF0sIFsKICsJCQkJQUNfTVNHX0VSUk9SKFtwY3JlIHBrZ2NvbmZpZyBub3QgZm91bmQsIGluc3RhbGwgdGhlIHBjcmUtZGV2ZWwgcGFja2FnZSBvciBidWlsZCB3aXRoIC0td2l0aG91dC1wY3JlXSkKLSsJCQldKQotIAkJZmkKLSAKLSAgIGlmIHRlc3QgeCIkUENSRV9MSUIiICE9IHg7IHRoZW4KKysgIF0pCisrCisrICBpZiB0ZXN0IHgiJFBDUkVfTElCIiAhPSB4OyB0aGVuCisrICAgIEFDX0RFRklORShbSEFWRV9MSUJQQ1JFXSwgWzFdLCBbbGlicGNyZV0pCisrICAgIEFDX0RFRklORShbSEFWRV9QQ1JFX0hdLCBbMV0sIFtwY3JlLmhdKQorKyAgICBBQ19TVUJTVChQQ1JFX0xJQikKKyAgIGVsc2UKKyAgICAgQUNfUEFUSF9QUk9HKFtQQ1JFQ09ORklHXSwgW3BjcmUtY29uZmlnXSkKKyAgICAgaWYgdGVzdCAtbiAiJFBDUkVDT05GSUciOyB0aGVuCiAtLSAKLTIuOS4zCisyLjE1LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhkZGEzMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40NS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgaGlnaC1wZXJmb3JtYW5jZSB3ZWIgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWdodHRwZC5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vcmVkbWluZS5saWdodHRwZC5uZXQvcHJvamVjdHMvbGlnaHR0cGQvaXNzdWVzIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0ZGFjNWM2YWIxNjlhYTIxMmZlYjUwMjg4NTNhNTc5IgotCi1TRUNUSU9OID0gIm5ldCIKLVJERVBFTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1kaXJsaXN0aW5nIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1pbmRleGZpbGUgXAotICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLXN0YXRpY2ZpbGUiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtYWNjZXNzIFwKLSAgICAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3Nsb2ciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmxpZ2h0dHBkLm5ldC9saWdodHRwZC9yZWxlYXNlcy0xLjQueC9saWdodHRwZC0ke1BWfS50YXIueHogXAotICAgICAgICBmaWxlOi8vaW5kZXguaHRtbC5saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5jb25mIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkLnNlcnZpY2UgXAotICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItcGNyZS1kZXBlbmRlbmN5LWluc3RlYWQtb2YtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTEyOGUxZWRhNzY4OTljZTNmZDExNWVmYWU1ZmU2MzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM5NzIyNWRlZWEzM2VlZmJhNmQ0MTU4YzJjZWYyNzkxM2Q0NzU1MzI2MzUxNmJiZTlkMmUyNzYwZmM0M2EzZiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wgcGNyZSB6bGliIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKLSIKLQotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2IgotUEFDS0FHRUNPTkZJR1ttbWFwXSA9ICItLWVuYWJsZS1tbWFwLC0tZGlzYWJsZS1tbWFwIgotUEFDS0FHRUNPTkZJR1tsaWJldl0gPSAiLS13aXRoLWxpYmV2LC0td2l0aG91dC1saWJldixsaWJldiIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1teXNxbCwtLXdpdGhvdXQtbXlzcWwsbWFyaWFkYiIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCi1QQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgta3JiNSwtLXdpdGhvdXQta3JiNSxrcmI1IgotUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZSwtLXdpdGhvdXQtcGNyZSxsaWJwY3JlIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6aXAyLC0td2l0aG91dC1iemlwMixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZmFtXSA9ICItLXdpdGgtZmFtLC0td2l0aG91dC1mYW0sZ2FtaW4iCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1wcm9wc10gPSAiLS13aXRoLXdlYmRhdi1wcm9wcywtLXdpdGhvdXQtd2ViZGF2LXByb3BzLGxpYnhtbDIgc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbd2ViZGF2LWxvY2tzXSA9ICItLXdpdGgtd2ViZGF2LWxvY2tzLC0td2l0aG91dC13ZWJkYXYtbG9ja3MsdXRpbC1saW51eCIKLVBBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLS13aXRoLWdkYm0sLS13aXRob3V0LWdkYm0sZ2RibSIKLVBBQ0tBR0VDT05GSUdbbWVtY2FjaGVdID0gIi0td2l0aC1tZW1jYWNoZWQsLS13aXRob3V0LW1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YSwtLXdpdGhvdXQtbHVhLGx1YTUuMSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sZnMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKLQotSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQotCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCi0JbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKLQlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmNvbmYiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsICdebW9kXyguKilcLnNvJCcsICdsaWdodHRwZC1tb2R1bGUtJXMnLCAnTGlnaHR0cGQgbW9kdWxlIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40OC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjQ4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNDQ0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40OC5iYgpAQCAtMCwwICsxLDg1IEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKKworU0VDVElPTiA9ICJuZXQiCitSREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKKyAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCisgICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZC5zZXJ2aWNlIFwKKyAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjFlM2E5ZWI1MDc4ZjQ4MWUzYThhMWQwYWFhYzhjM2M4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmOGFkNWFhYzc1MjlkN2I5NDhiOWQ3ZThjZDBiNGE5ZTE3NzMwOWQ4NWQ2YmY2NTE2ZTI4ZTZlNDBkNzRmMzYiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKK1BBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKK1BBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCitQQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCitQQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWE1LjEiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgZ2V0dGV4dCBzeXN0ZW1kCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJsaWdodHRwZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibGlnaHR0cGQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQuZCAke0R9L3d3dy9wYWdlcy9kYXYKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaW5kZXguaHRtbC5saWdodHRwZCAke0R9L3d3dy9wYWdlcy9pbmRleC5odG1sCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpZ2h0dHBkLnNlcnZpY2UKKwkjRm9yIEZIUyBjb21wbGlhbmNlLCBjcmVhdGUgc3ltYm9saWMgbGlua3MgdG8gL3Zhci9sb2cgYW5kIC92YXIvdG1wIGZvciBsb2dzIGFuZCB0ZW1wb3JhcnkgZGF0YQorCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L2xvZyAke0R9L3d3dy9sb2dzCisJbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vdG1wICR7RH0vd3d3L3ZhcgorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAvd3d3IgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9saWdodHRwZC5jb25mIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlnaHR0cGQtbW9kdWxlLS4qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGlnaHR0cGRfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlnaHR0cGRfbGliZGlyLCAnXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMGIyMDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLVNVTU1BUlkgPSAiUm90YXRlcywgY29tcHJlc3NlcywgcmVtb3ZlcyBhbmQgbWFpbHMgc3lzdGVtIGxvZyBmaWxlcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL2lzc3VlcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLSMgVE9ETzogRG9jdW1lbnQgY29yZXV0aWxzIGRlcGVuZGVuY3kuIFdoeSBub3QgUkRFUEVORFM/IFdoeSBub3QgYnVzeWJveD8KLQotREVQRU5EUz0iY29yZXV0aWxzIHBvcHQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi0jIFdoZW4gdXBkYXRpbmcgbG9ncm90YXRlIHRvIGxhdGVzdCB1cHN0cmVhbSwgU1JDX1VSSSBzaG91bGQgcG9pbnQgdG8KLSMgYSBwcm9wZXIgcmVsZWFzZSB0YXJiYWxsIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvcmVsZWFzZXMKLSMgYW5kIHdlIGhhdmUgdG8gdGFrZSB0aGUgc25hcHNob3QgZm9yIG5vdyBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2gKLSMgdGFyYmFsbCBhdmFpbGFibGUgZm9yIDMuOS4xLgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsb2dyb3RhdGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXBkYXRlLXRoZS1tYW51YWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtY2hlY2stZGlmZmVyZW50LWZpbGVzeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImE1NjBjNTdmYWM4N2M0NWIyZmMxNzQwNmNkZjc5Mjg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlNmE0MDFjYWM5MDI0ZGIyMjg4Mjk3ZTNiZTFhOGFiNjBlNzQwMWJhOGU5MTIyNTIxOGFhZjRhMjdlODJhMDciCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCBzZWxpbnV4JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLCxhY2wiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIiwsbGlic2VsaW51eCIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzIFwKLQkJICAgICR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmNvbmYiCi0KLSMgSWYgUlBNX09QVF9GTEFHUyBpcyB1bnNldCwgaXQgYWRkcyAtZyBpdHNlbGYgcmF0aGVyIHRoYW4gb2JleWluZyBvdXIKLSMgb3B0aW1pemF0aW9uIHZhcmlhYmxlcywgc28gdXNlIGl0IHJhdGhlciB0aGFuIEVYVFJBX0NGTEFHUy4KLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgTEZTPSBcCi0gICAgT1NfTkFNRT0nJHtPU19OQU1FfScgXAotICAgICdDQz0ke0NDfScgXAotICAgICdSUE1fT1BUX0ZMQUdTPSR7Q0ZMQUdTfScgXAotICAgICdFWFRSQV9MREZMQUdTPSR7TERGTEFHU30nIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhY2wnLCAnV0lUSF9BQ0w9eWVzJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VsaW51eCcsICdXSVRIX1NFTElOVVg9eWVzJywgJycsIGQpfSBcCi0iCi0KLSMgT1NfTkFNRSBpbiB0aGUgbWFrZWZpbGUgZGVmYXVsdHMgdG8gYHVuYW1lIC1zYC4gVGhlIGJlaGF2aW9yIGZvcgotIyBmcmVlYnNkL25ldGJzZCBpcyBxdWVzdGlvbmFibGUsIHNvIGxlYXZlIGl0IGFzIExpbnV4LCB3aGljaCBvbmx5IHNldHMKLSMgSU5TVEFMTD1pbnN0YWxsIGFuZCBCQVNFRElSPS91c3IuCi1PU19OQU1FID0gIkxpbnV4IgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJcCi0gICAgJHtCUE59LnNlcnZpY2UgXAotICAgICR7QlBOfS50aW1lciBcCi0iCi0KLUxPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTID89ICJkYWlseSIKLUxPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZID89ICIxMmgiCi0KLWRvX2luc3RhbGwoKXsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke0R9IE1BTkRJUj0ke21hbmRpcn0KLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZAotICAgIG1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYgotICAgIGluc3RhbGwgLXAgLW0gNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLWRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmNvbmYKLSAgICB0b3VjaCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cwotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUuc2VydmljZQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUudGltZXIgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCi0gICAgICAgIHNlZCAtaSAtZSAncyxPbkNhbGVuZGFyPS4qJCxPbkNhbGVuZGFyPSR7TE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQkFTSVN9LGcnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgotICAgICAgICBzZWQgLWkgLWUgJ3MsQWNjdXJhY3lTZWM9LiokLEFjY3VyYWN5U2VjPSR7TE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQUNDVVJBQ1l9LGcnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgotICAgIGZpCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQotICAgICAgICBpbnN0YWxsIC1wIC1tIDA3NTUgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUuY3JvbiAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5L2xvZ3JvdGF0ZQotICAgIGZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTBjZjkxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTMuMC5iYgpAQCAtMCwwICsxLDg1IEBACitTVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCitMSUNFTlNFID0gIkdQTHYyIgorCisjIFRPRE86IERvY3VtZW50IGNvcmV1dGlscyBkZXBlbmRlbmN5LiBXaHkgbm90IFJERVBFTkRTPyBXaHkgbm90IGJ1c3lib3g/CisKK0RFUEVORFM9ImNvcmV1dGlscyBwb3B0IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworIyBXaGVuIHVwZGF0aW5nIGxvZ3JvdGF0ZSB0byBsYXRlc3QgdXBzdHJlYW0sIFNSQ19VUkkgc2hvdWxkIHBvaW50IHRvCisjIGEgcHJvcGVyIHJlbGVhc2UgdGFyYmFsbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzCisjIGFuZCB3ZSBoYXZlIHRvIHRha2UgdGhlIHNuYXBzaG90IGZvciBub3cgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoCisjIHRhcmJhbGwgYXZhaWxhYmxlIGZvciAzLjkuMS4KKworUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibG9ncm90YXRlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OGVmMjRkNmZkZGNjNGRmOGU0MTJkZDc1YzU1MWI0YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjIyY2EwMzJmOTliZThkN2E0YThjNmFkNjlmM2RjYzQ5Yjk1MTFiZmUzODRiZDVhMjcxZWJjZDliZDNlNTJjIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIiwsYWNsIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICIsLGxpYnNlbGludXgiCisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cyBcCisJCSAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mIgorCisjIElmIFJQTV9PUFRfRkxBR1MgaXMgdW5zZXQsIGl0IGFkZHMgLWcgaXRzZWxmIHJhdGhlciB0aGFuIG9iZXlpbmcgb3VyCisjIG9wdGltaXphdGlvbiB2YXJpYWJsZXMsIHNvIHVzZSBpdCByYXRoZXIgdGhhbiBFWFRSQV9DRkxBR1MuCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIExGUz0gXAorICAgIE9TX05BTUU9JyR7T1NfTkFNRX0nIFwKKyAgICAnQ0M9JHtDQ30nIFwKKyAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKKyAgICAnRVhUUkFfTERGTEFHUz0ke0xERkxBR1N9JyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWNsJywgJ1dJVEhfQUNMPXllcycsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnV0lUSF9TRUxJTlVYPXllcycsICcnLCBkKX0gXAorIgorCisjIE9TX05BTUUgaW4gdGhlIG1ha2VmaWxlIGRlZmF1bHRzIHRvIGB1bmFtZSAtc2AuIFRoZSBiZWhhdmlvciBmb3IKKyMgZnJlZWJzZC9uZXRic2QgaXMgcXVlc3Rpb25hYmxlLCBzbyBsZWF2ZSBpdCBhcyBMaW51eCwgd2hpY2ggb25seSBzZXRzCisjIElOU1RBTEw9aW5zdGFsbCBhbmQgQkFTRURJUj0vdXNyLgorT1NfTkFNRSA9ICJMaW51eCIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAorICAgICR7QlBOfS5zZXJ2aWNlIFwKKyAgICAke0JQTn0udGltZXIgXAorIgorCitMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJUyA/PSAiZGFpbHkiCitMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWSA/PSAiMTJoIgorCitkb19pbnN0YWxsKCl7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtEfSBNQU5ESVI9JHttYW5kaXJ9CisgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKKyAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKKyAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS1kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mCisgICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnNlcnZpY2UKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnRpbWVyICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgorICAgICAgICBzZWQgLWkgLWUgJ3MsT25DYWxlbmRhcj0uKiQsT25DYWxlbmRhcj0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICAgICAgc2VkIC1pIC1lICdzLEFjY3VyYWN5U2VjPS4qJCxBY2N1cmFjeVNlYz0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICBmaQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKKyAgICAgICAgaW5zdGFsbCAtcCAtbSAwNzU1ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9sb2dyb3RhdGUKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ODU2MTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi1TVU1NQVJZID0gIkxTQiBzdXBwb3J0IGZvciBPcGVuRW1iZWRkZWQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2xzYiIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotUFIgPSAicjIiCi0KLUxTQl9DT1JFID0gImxzYi1jb3JlLSR7VEFSR0VUX0FSQ0h9IgotTFNCX0NPUkVfeDg2ID0gImxzYi1jb3JlLWlhMzIiCi1MU0JfQ09SRV94ODYtNjQgPSAibHNiLWNvcmUtYW1kNjQiCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7TFNCX0NPUkV9IgotCi0jIGxzYl9yZWxlYXNlIG5lZWRzIGdldG9wdCwgbHNiaW5pdHNjcmlwdHMKLVJERVBFTkRTXyR7UE59ICs9ICIke1ZJUlRVQUwtUlVOVElNRV9nZXRvcHR9IGxzYmluaXRzY3JpcHRzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTEyZGE1NDRiMWEzYTVhMTc5NWEyMTE2MGI0OTQ3MWNmIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xzYi9sc2JfcmVsZWFzZS8xLjQvbHNiLXJlbGVhc2UtMS40LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1sc2JfcmVsZWFzZS10by13b3JrLXdpdGgtYnVzeWJveC1oZWFkLWFuZC1maW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQtZnVuY3Rpb25zIFwKLSAgICAgICAgICAgZmlsZTovL2xzYl9raWxscHJvYyBcCi0gICAgICAgICAgIGZpbGU6Ly9sc2JfbG9nX21lc3NhZ2UgXAotICAgICAgICAgICBmaWxlOi8vbHNiX3BpZG9mcHJvYyBcCi0gICAgICAgICAgIGZpbGU6Ly9sc2Jfc3RhcnRfZGFlbW9uIFwKLSAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMDUzN2VmNWEwMWUwY2E5NGI3YjhlYjZhMzZiYjFlNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTMyMTI4OGY4ZDYyZTdhMWQ0ODViN2M2YmRjY2YwNjc2NmZiOGNhNjAzYzYxOTU4MDZlNDQ1N2ZkZjE3MTcyIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sc2IvZmlsZXMvbHNiX3JlbGVhc2UvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xzYl9yZWxlYXNlLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLVMgPSAiJHtXT1JLRElSfS9sc2ItcmVsZWFzZS0xLjQiCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIHByZWZpeD0ke0R9JHtiYXNlX3ByZWZpeH0gbWFuZGlyPSR7RH0ke2RhdGFkaXJ9L21hbi8gREVTVERJUj0ke0R9Ci0KLQkjIHRoZXNlIHR3byBkaXJzIGFyZSBuZWVkZWQgYnkgcGFja2FnZSBsc2ItZGlzdC1jaGVja2VyCi0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vb3B0Ci0JbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3B0Ci0KLQlta2RpciAtcCAke0R9JHtiYXNlX2xpYmRpcn0KLQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCi0JcHJpbnRmICJMU0JfVkVSU0lPTj1cImNvcmUtNC4xLW5vYXJjaDoiID4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCi0JCXByaW50ZiAiY29yZS00LjEtaWEzMiIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZWxzZQotCQlwcmludGYgImNvcmUtNC4xLSR7VEFSR0VUX0FSQ0h9IiA+PiAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQlmaQotCWVjaG8gIlwiIiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWVjaG8gIkRJU1RSSUJfSUQ9JHtESVNUUk99IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWVjaG8gIkRJU1RSSUJfUkVMRUFTRT0ke0RJU1RST19WRVJTSU9OfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQlpZiBbIC1uICIke0RJU1RST19DT0RFTkFNRX0iIF07IHRoZW4KLQkJZWNobyAiRElTVFJJQl9DT0RFTkFNRT0ke0RJU1RST19DT0RFTkFNRX0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZmkKLQllY2hvICJESVNUUklCX0RFU0NSSVBUSU9OPVwiJHtESVNUUk9fTkFNRX0gJHtESVNUUk9fVkVSU0lPTn1cIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCi0JCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LWlhMzIKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWlhMzIKLQllbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1hbWQ2NAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0tYW1kNjQKLQlmaQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tcHBjMzIKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LXBwYzMyCi0JZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tcHBjNjQKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LXBwYzY0Ci0JZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jb3JlLWxzYgotICAgICAgIGZvciBpIGluIGxzYl9raWxscHJvYyBsc2JfbG9nX21lc3NhZ2UgbHNiX3BpZG9mcHJvYyBsc2Jfc3RhcnRfZGFlbW9uCi0gICAgICAgZG8KLSAgICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJGkgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKLSAgICAgICBkb25lCi0KLSAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xzYgotICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtZnVuY3Rpb25zICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xzYgotCi0gICAgICAgIyBjcmVhdGUgbGlua3MgZm9yIExTQiB0ZXN0Ci0gICAgICAgaWYgWyAtZSAke3NiaW5kaXJ9L2Noa2NvbmZpZyBdOyB0aGVuCi0gICAgICAgICAgICAgICBpZiBbICIke25vbmFyY2hfYmFzZV9saWJkaXJ9IiAhPSAiJHtub25hcmNoX2xpYmRpcn0iIF0gOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYgotICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L2Noa2NvbmZpZyAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiL2luc3RhbGxfaW5pdGQKLSAgICAgICAgICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L2Noa2NvbmZpZyAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiL3JlbW92ZV9pbml0ZAotICAgICAgIGZpCi0KLSAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0gICAgICAgICAgICAgICBpZiBbICIke2Jhc2VfbGliZGlyfSIgIT0gIiR7YmFzZV9wcmVmaXh9L2xpYjY0IiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgbG5yICR7RH0ke2Jhc2VfbGliZGlyfSAke0R9JHtiYXNlX3ByZWZpeH0vbGliNjQKLSAgICAgICAgICAgICAgIGZpCi0JICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LXg4Ni02NC5zby4yIGxkLWxzYi14ODYtNjQuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LXg4Ni02NC5zby4yIGxkLWxzYi14ODYtNjQuc28uMwotICAgICAgIGZpCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07IHRoZW4KLQkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICBsbiAtc2YgbGQtbGludXguc28uMiBsZC1sc2Iuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjMKLSAgICAgICBmaQotCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0Ci0gICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICBsbiAtc2YgbGQ2NC5zby4xIGxkLWxzYi1wcGM2NC5zby4yCi0gICAgICAgICAgICAgICBsbiAtc2YgbGQ2NC5zby4xIGxkLWxzYi1wcGM2NC5zby4zCi0gICAgICAgZmkKLSAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC5zby4xIGxkLWxzYi1wcGMzMi5zby4yCi0gICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMwotICAgICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke0AnJHtiYXNlX3ByZWZpeH0vbGliNjQnIGlmIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpID09ICgneDg2XzY0JyBvciAncG93ZXJwYzY0JykgYW5kICcke2Jhc2VfbGliZGlyfScgIT0gJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBlbHNlICcnfSBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0gXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L2xzYiBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IvKiBcCi0gICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzUuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY0ODEyZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIKQEAgLTAsMCArMSwxMzQgQEAKK1NVTU1BUlkgPSAiTFNCIHN1cHBvcnQgZm9yIE9wZW5FbWJlZGRlZCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0hPTUVQQUdFID0gImh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvbHNiIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xTQl9DT1JFID0gImxzYi1jb3JlLSR7VEFSR0VUX0FSQ0h9IgorTFNCX0NPUkVfeDg2ID0gImxzYi1jb3JlLWlhMzIiCitMU0JfQ09SRV94ODYtNjQgPSAibHNiLWNvcmUtYW1kNjQiCitSUFJPVklERVNfJHtQTn0gKz0gIiR7TFNCX0NPUkV9IgorCisjIGxzYl9yZWxlYXNlIG5lZWRzIGdldG9wdCwgbHNiaW5pdHNjcmlwdHMKK1JERVBFTkRTXyR7UE59ICs9ICIke1ZJUlRVQUwtUlVOVElNRV9nZXRvcHR9IGxzYmluaXRzY3JpcHRzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTEyZGE1NDRiMWEzYTVhMTc5NWEyMTE2MGI0OTQ3MWNmIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xzYi9sc2JfcmVsZWFzZS8xLjQvbHNiLXJlbGVhc2UtMS40LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1sc2JfcmVsZWFzZS10by13b3JrLXdpdGgtYnVzeWJveC1oZWFkLWFuZC1maW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQtZnVuY3Rpb25zIFwKKyAgICAgICAgICAgZmlsZTovL2xzYl9raWxscHJvYyBcCisgICAgICAgICAgIGZpbGU6Ly9sc2JfbG9nX21lc3NhZ2UgXAorICAgICAgICAgICBmaWxlOi8vbHNiX3BpZG9mcHJvYyBcCisgICAgICAgICAgIGZpbGU6Ly9sc2Jfc3RhcnRfZGFlbW9uIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMDUzN2VmNWEwMWUwY2E5NGI3YjhlYjZhMzZiYjFlNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTMyMTI4OGY4ZDYyZTdhMWQ0ODViN2M2YmRjY2YwNjc2NmZiOGNhNjAzYzYxOTU4MDZlNDQ1N2ZkZjE3MTcyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sc2IvZmlsZXMvbHNiX3JlbGVhc2UvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xzYl9yZWxlYXNlLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK1MgPSAiJHtXT1JLRElSfS9sc2ItcmVsZWFzZS0xLjQiCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsIHByZWZpeD0ke0R9JHtiYXNlX3ByZWZpeH0gbWFuZGlyPSR7RH0ke2RhdGFkaXJ9L21hbi8gREVTVERJUj0ke0R9CisKKwkjIHRoZXNlIHR3byBkaXJzIGFyZSBuZWVkZWQgYnkgcGFja2FnZSBsc2ItZGlzdC1jaGVja2VyCisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vb3B0CisJbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3B0CisKKwlta2RpciAtcCAke0R9JHtiYXNlX2xpYmRpcn0KKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCisJcHJpbnRmICJMU0JfVkVSU0lPTj1cImNvcmUtNS4wLW5vYXJjaDoiID4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKworCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCisJCXByaW50ZiAiY29yZS01LjAtaWEzMiIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJZWxzZQorCQlwcmludGYgImNvcmUtNS4wLSR7VEFSR0VUX0FSQ0h9IiA+PiAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwlmaQorCWVjaG8gIlwiIiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWVjaG8gIkRJU1RSSUJfSUQ9JHtESVNUUk99IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWVjaG8gIkRJU1RSSUJfUkVMRUFTRT0ke0RJU1RST19WRVJTSU9OfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwlpZiBbIC1uICIke0RJU1RST19DT0RFTkFNRX0iIF07IHRoZW4KKwkJZWNobyAiRElTVFJJQl9DT0RFTkFNRT0ke0RJU1RST19DT0RFTkFNRX0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJZmkKKwllY2hvICJESVNUUklCX0RFU0NSSVBUSU9OPVwiJHtESVNUUk9fTkFNRX0gJHtESVNUUk9fVkVSU0lPTn1cIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKworCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCisJCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LW5vYXJjaAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LWlhMzIKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWlhMzIKKwllbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1hbWQ2NAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0tYW1kNjQKKwlmaQorCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tcHBjMzIKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LXBwYzMyCisJZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tcHBjNjQKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LXBwYzY0CisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jb3JlLWxzYgorICAgICAgIGZvciBpIGluIGxzYl9raWxscHJvYyBsc2JfbG9nX21lc3NhZ2UgbHNiX3BpZG9mcHJvYyBsc2Jfc3RhcnRfZGFlbW9uCisgICAgICAgZG8KKyAgICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJGkgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKKyAgICAgICBkb25lCisKKyAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xzYgorICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtZnVuY3Rpb25zICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xzYgorCisgICAgICAgIyBjcmVhdGUgbGlua3MgZm9yIExTQiB0ZXN0CisgICAgICAgaWYgWyAtZSAke3NiaW5kaXJ9L2Noa2NvbmZpZyBdOyB0aGVuCisgICAgICAgICAgICAgICBpZiBbICIke25vbmFyY2hfYmFzZV9saWJkaXJ9IiAhPSAiJHtub25hcmNoX2xpYmRpcn0iIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYgorICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L2Noa2NvbmZpZyAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiL2luc3RhbGxfaW5pdGQKKyAgICAgICAgICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L2Noa2NvbmZpZyAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiL3JlbW92ZV9pbml0ZAorICAgICAgIGZpCisKKyAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCisgICAgICAgICAgICAgICBpZiBbICIke2Jhc2VfbGliZGlyfSIgIT0gIiR7YmFzZV9wcmVmaXh9L2xpYjY0IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgICAgbG5yICR7RH0ke2Jhc2VfbGliZGlyfSAke0R9JHtiYXNlX3ByZWZpeH0vbGliNjQKKyAgICAgICAgICAgICAgIGZpCisJICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQorICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LXg4Ni02NC5zby4yIGxkLWxzYi14ODYtNjQuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LXg4Ni02NC5zby4yIGxkLWxzYi14ODYtNjQuc28uMworICAgICAgIGZpCisgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07IHRoZW4KKwkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICAgICBsbiAtc2YgbGQtbGludXguc28uMiBsZC1sc2Iuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjMKKyAgICAgICBmaQorCisgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0CisgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICAgICBsbiAtc2YgbGQ2NC5zby4xIGxkLWxzYi1wcGM2NC5zby4yCisgICAgICAgICAgICAgICBsbiAtc2YgbGQ2NC5zby4xIGxkLWxzYi1wcGM2NC5zby4zCisgICAgICAgZmkKKyAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC5zby4xIGxkLWxzYi1wcGMzMi5zby4yCisgICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMworICAgICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke0AnJHtiYXNlX3ByZWZpeH0vbGliNjQnIGlmIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpID09ICgneDg2XzY0JyBvciAncG93ZXJwYzY0JykgYW5kICcke2Jhc2VfbGliZGlyfScgIT0gJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBlbHNlICcnfSBcCisgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0gXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L2xzYiBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IvKiBcCisgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoCmluZGV4IDE3YzkwMDIuLmMwMDc2NDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2gKQEAgLTcsMTggKzcsMTUgQEAKICByYy5kL2luaXQuZC9mdW5jdGlvbnMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9yYy5kL2luaXQuZC9mdW5jdGlvbnMgYi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLWluZGV4IDY4NTAwNDYuLjExMjIzZjcgMTAwNjQ0Ci0tLS0gYS9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLSsrKyBiL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotQEAgLTU5Nyw2ICs1OTcsNiBAQCBpZiBbICIkX3VzZV9zeXN0ZW1jdGwiID0gIjEiIF07IHRoZW4KLSAJZmkKK0luZGV4OiBpbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGluaXRzY3JpcHRzLTkuNzIub3JpZy9yYy5kL2luaXQuZC9mdW5jdGlvbnMKKysrKyBpbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworQEAgLTY4Niw2ICs2ODYsNiBAQCBpZiBbICIkX3VzZV9zeXN0ZW1jdGwiID0gIjEiIF07IHRoZW4KKyAgICAgZmkKICBmaQogIAogLXN0cnN0ciAiJChjYXQgL3Byb2MvY21kbGluZSkiICJyYy5kZWJ1ZyIgJiYgc2V0IC14CiArc3Ryc3RyICIkKGNhdCAvcHJvYy9jbWRsaW5lKSIgInJjLmRlYnVnIiAmJiBzZXQgLXggfHwgdHJ1ZQogIHJldHVybiAwCi0KLS0tIAotMi4xLjAKLQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCmluZGV4IDljNThkOTAuLmU5MTJkYWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDU3NDY4YzVmNGUzNjRiZGFkNTU2NjA0ZGNhMDkwNDZlMWFmY2E5MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU0NmIwNTYyODJjODQyMGYwOTZkNWMzNGQ3OGMwMGY4MTY3ODg3ODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgogRGF0ZTogTW9uLCA1IEp1biAyMDE3IDE2OjI2OjQ3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogU2lnbmVkLW9mZi1ieTogWGlhb2ZlbmcgWWFuIDx4aWFvZmVuZy55YW5Ad2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KQEAgLTEwLDIzICsxMCwyNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIC0tLQotIGluaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zIHwgMiArLQorIHJjLmQvaW5pdC5kL2Z1bmN0aW9ucyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLWluZGV4IDBmNjI3ZjEuLmE2YWEwOTIgMTAwNjQ0Ci0tLS0gYS9pbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotKysrIGIvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK2RpZmYgLS1naXQgYS9yYy5kL2luaXQuZC9mdW5jdGlvbnMgYi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK2luZGV4IDJlM2RhOTY0Li4xYTIwNGRlYyAxMDA2NDQKKy0tLSBhL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworKysrIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCiBAQCAtNTksNyArNTksNyBAQCBzeXN0ZW1jdGxfcmVkaXJlY3QgKCkgewogIFsgLXogIiR7Q09MVU1OUzotfSIgXSAmJiBDT0xVTU5TPTgwCiAgCiAgaWYgWyAteiAiJHtDT05TT0xFVFlQRTotfSIgXTsgdGhlbgotLSAgICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiBdOyB0aGVuCi0rICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiAtYSAtciAiL2Rldi9zdGRlcnIiIC1hIC1lIC9zYmluL2NvbnNvbGV0eXBlIF07IHRoZW4KKy0gICAgaWYgWyAtYyAiL2Rldi9zdGRlcnIiIF0gJiYgWyAtciAiL2Rldi9zdGRlcnIiIF07IHRoZW4KKysgICAgaWYgWyAtYyAiL2Rldi9zdGRlcnIiIF0gJiYgWyAtciAiL2Rldi9zdGRlcnIiIF0gJiYgWyAtZSAvc2Jpbi9jb25zb2xldHlwZSBdOyB0aGVuCiAgICAgICAgICBDT05TT0xFVFlQRT0iJCgvc2Jpbi9jb25zb2xldHlwZSA8IC9kZXYvc3RkZXJyIDI+L2Rldi9udWxsKSIKICAgICAgZWxzZQogICAgICAgICAgQ09OU09MRVRZUEU9InNlcmlhbCIKIC0tIAotMS45LjEKKzIuMTUuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjcyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ3NGE2Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjcyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXNWIGluaXQgc2NyaXB0cyB3aGljaCBhcmUgb25seSB1c2VkIGluIGFuIExTQiBpbWFnZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL0xTQkluaXRTY3JpcHRzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLURFUEVORFMgPSAicG9wdCBnbGliLTIuMCIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJpbml0ZC1mdW5jdGlvbnMiCi1SREVQRU5EU18ke1BOfSArPSAidXRpbC1saW51eCIKLVJDT05GTElDVFNfJHtQTn0gPSAiaW5pdHNjcmlwdHMtZnVuY3Rpb25zIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmY0ZThiNDk3ODBhYjE4N2Q1MWJkMjZhYWEwMjJjNiIKLQotUz0iJHtXT1JLRElSfS9pbml0c2NyaXB0cy0ke1BWfSIKLVNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5nei9zaGE1MTIvYjZlZDM4Zjk1NzZlOTIyN2MyZWNmMDQ3ZTJkNjBlMWU4NzJmNDBkNTFkMTM4NjFiMGM5MWRkZGIyODJmMTBmN2U2Yjc5NzA2YTRkMTQzNWQ3YTU3YTE0YTBiNzNhMWI3MTU0MWNmZTQ0YzAwZThlMDNlZjk2YjA4ZGUxOWVjMzIvaW5pdHNjcmlwdHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5wYXRjaDtzdHJpcGxldmVsPTIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAiIAotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDZjNzk4ZjQwZGNlYjExN2UxMjEyNmQ5NGNiMjVhOWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTc5MzY3N2JkZDFmN2VlNGNiMDA4NzhjZTQzMzQ2MTk2Mzc0Zjg0OGE0YzhlNDU1OWUwODYwNDBmYzc0ODdkYiIKLQotIyBTaW5jZSB3ZSBhcmUgb25seSB0YWtpbmcgdGhlIHBhdGNoZWQgdmVyc2lvbiBvZiBmdW5jdGlvbnMsIG5vIG5lZWQgdG8KLSMgY29uZmlndXJlIG9yIGNvbXBpbGUgYW55dGhpbmcgc28gZG8gbm90IGV4ZWN1dGUgdGhlc2UKLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiIAotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiIAotCi1kb19pbnN0YWxsKCl7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vcmMuZC9pbml0LmQvZnVuY3Rpb25zICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZWRlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBpbiBhbiBMU0IgaW1hZ2UiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZGViaWFuLm9yZy9MU0JJbml0U2NyaXB0cyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiaW5pdGQtZnVuY3Rpb25zIgorUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgiCitSQ09ORkxJQ1RTXyR7UE59ID0gImluaXRzY3JpcHRzLWZ1bmN0aW9ucyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmVkb3JhLXN5c3YvaW5pdHNjcmlwdHMgXAorICAgICAgICAgICBmaWxlOi8vZnVuY3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCisgICAgICAgICAgIiAKK1NSQ1JFViA9ICJhNTFjMWI0ZjdkY2Y1NWI1NjhiMmVlNGMyYjE4MDc4ODQ5OTQzNDY5IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiXig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworU1JDX1VSSVttZDVzdW1dID0gImQ2Yzc5OGY0MGRjZWIxMTdlMTIxMjZkOTRjYjI1YTlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3OTM2NzdiZGQxZjdlZTRjYjAwODc4Y2U0MzM0NjE5NjM3NGY4NDhhNGM4ZTQ1NTllMDg2MDQwZmM3NDg3ZGIiCisKKyMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCisjIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKKworZG9faW5zdGFsbCgpeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaAppbmRleCAwZWIyNzkzLi4wNzNlMjQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvTFNCX1Rlc3Quc2gKQEAgLTYwLDcgKzYwLDcgQEAKIAogUEFDS0FHRVNfRElSPSIvdmFyL29wdC9sc2IvdGVzdC9tYW5hZ2VyL3BhY2thZ2VzL2Z0cC5saW51eGZvdW5kYXRpb24ub3JnL3B1Yi9sc2IiCiAKLUJBU0VfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vYmFzZS8ke0xTQl9SRUxFQVNFfS9iaW5hcnkiCitCQVNFX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L2Jhc2UvcmVsZWFzZWQtYWxsL2JpbmFyeSIKIFJVTlRJTUVfQkFTRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS90ZXN0X3N1aXRlcy9yZWxlYXNlZC1hbGwvYmluYXJ5L3J1bnRpbWUiCiBSVU5USU1FX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L3Rlc3Rfc3VpdGVzLyR7TFNCX1JFTEVBU0V9L2JpbmFyeS9ydW50aW1lIgogQVBQX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L2FwcC1iYXR0ZXJ5LyR7TFNCX1JFTEVBU0V9LyR7TFNCX0FSQ0h9IgpAQCAtOTgsNyArOTgsNyBAQAogZmkKIAogIyBPZmZpY2lhbCBkb3dubG9hZCBzZXJ2ZXIgbGlzdC4gWW91IGNhbiByZXBsYWNlIHRoZW0gd2l0aCB5b3VyIG93biBzZXJ2ZXIuCi1TRVJWRVJfSVBBRERSPSIxNDAuMjExLjE2OS4yMyIKK1NFUlZFUl9JUEFERFI9IjE0MC4yMTEuMTY5LjI4IgogU0VSVkVSX05BTUU9ImZ0cC5saW51eGZvdW5kYXRpb24ub3JnIgogCiBpZiAhIGBncmVwIC1GIC1xICIke1NFUlZFUl9OQU1FfSIgL2V0Yy9ob3N0c2A7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdAppbmRleCA5NTlmOTMxLi4xYTZjMTE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9wYWNrYWdlc19saXN0CkBAIC0xLDcgKzEsNyBAQAogTFNCX1JFTEVBU0U9InJlbGVhc2VkLTUuMCIKIExTQl9BUkNIPSJsc2JhcmNoIgogCi1CQVNFX1BBQ0tBR0VTX0xJU1Q9ImxzYi1zZXR1cC00LjEuMC0xLm5vYXJjaC5ycG0iCitCQVNFX1BBQ0tBR0VTX0xJU1Q9ImxzYi1zZXR1cC01LjAuMC0yLm5vYXJjaC5ycG0iCiAKIFJVTlRJTUVfQkFTRV9QQUNLQUdFU19MSVNUPSJsc2ItZGlzdC1jaGVja2VyLTUuMC4wLjEtMS50YXJnZXRhcmNoLnJwbSBcCiAJbHNiLXRldDMtbGl0ZS0zLjctMjcubHNiNS50YXJnZXRhcmNoLnJwbSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3Nlc3Npb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3Nlc3Npb24KaW5kZXggM2FiY2NhNy4uNGQ0N2U0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3Qvc2Vzc2lvbgpAQCAtMiw3ICsyLDcgQEAKIFZFUkJPU0VfTEVWRUw6ICAgMQogQVJDSElURUNUVVJFOiAgICB0YXJnZXRhcmNoCiBVU0VfSU5URVJORVQ6ICAgIDEKLVNURF9WRVJTSU9OOiAgICAgTFNCIDQuMQorU1REX1ZFUlNJT046ICAgICBMU0IgNS4wCiBTVERfUFJPRklMRTogICAgIG5vCiBbY21kY2hrXQogUlVOOiAxCkBAIC0xMjYsMTUgKzEyNiw2IEBACiBBVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9weXRob24KIEFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9weXRob24vcmVzdWx0cwogCi1bcXQ0LWF6b3ZdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW3F0NC1hem92fGxvY2FsfCpdCi1BVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9xdDQtYXpvdgotQVVUT1JFUExZX1gxMV9GT05UX1BBVEg6IFtkZWZhdWx0XQotQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L3F0NC1hem92L3Jlc3VsdHMKLQogW3htbDItYXpvdl0KIFJVTjogMQogVkVSU0lPTjogbG9jYWx8KgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0XzEuMC5iYgppbmRleCAzNmY1MmZkLi5hOTBjMDIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0XzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0XzEuMC5iYgpAQCAtMTAsMTQgKzEwLDEzIEBACiAJCSAgIGZpbGU6Ly9wYWNrYWdlc19saXN0IFwKIAkJICAgZmlsZTovL3Nlc3Npb24gXAogCQkgICAiCi1SREVQRU5EU18ke1BOfSA9ICJycG0iCitSREVQRU5EU18ke1BOfSA9ICJsc2IgcnBtIgogCiBTID0gIiR7V09SS0RJUn0iCiAKIGRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7U30vTFNCX1Rlc3Quc2ggJHtEfSR7YmluZGlyfQogCWluc3RhbGwgLWQgICR7RH0vb3B0L2xzYi10ZXN0CisJaW5zdGFsbCAtbSAwNzU1ICR7U30vTFNCX1Rlc3Quc2ggJHtEfS9vcHQvbHNiLXRlc3QvTFNCX1Rlc3Quc2gKIAlpbnN0YWxsIC1tIDA2NDQgJHtTfS9wYWNrYWdlc19saXN0ICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKIAlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zZXNzaW9uICR7RH0vb3B0L2xzYi10ZXN0L3Nlc3Npb24KIAlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTt0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1hZGQtX0dOVV9TT1VSQ0UtdG8tcGVjX2xpc3RlbmVyLmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1hZGQtX0dOVV9TT1VSQ0UtdG8tcGVjX2xpc3RlbmVyLmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYzY2ZjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSBhZTEwMjQ1YzE1YTYxN2JkNTczMzc5ODFiYjQyZWIzNjYyOWY5YjU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgOCBGZWIgMjAxNyAxNTo1MzozMSArMDgwMAotU3ViamVjdDogW1BBVENIIDAxLzI2XSBhZGQgX0dOVV9TT1VSQ0UgdG8gcGVjX2xpc3RlbmVyLmMKLQotSW4gcHJldmlvdXMgcGF0Y2ggMDAwNy1yZXBsYWNlLVNJR0NMRC13aXRoLVNJR0NITEQucGF0Y2ggbWFkZSBieSBLaGVtIFJhagotY29udGFpbnMgdHdvIGFzcGVjdHM6Ci0KLQkxLiByZXBsYWNlIFNJR0NMRCB3aXRoIFNJR0NITEQKLQkyLiBhZGQgX0dOVV9TT1VSQ0UgdG8gcGVjX2xpc3RlbmVyLmMKLQotVGhlIHJlcGxhY2UgU0lHQ0xEIHdpdGggU0lHQ0hMRCBoYXZlIGJlZW4gaW50ZWdyYXRlZCB1cHN0cmVhbSwgc28gbWFrZSBhCi1hbm90aGVyIHBhdGNoIHRvIGFkZCBfR05VX1NPVVJDRSB0byBwZWNfbGlzdGVuZXIuYyBjb21wbHkgd2l0aCBLaGVtIFJhaidzCi1wcmV2aW91cyBwYXRjaC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotJSUgb3JpZ2luYWwgcGF0Y2g6IDAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoCi0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL2Nvbm5lY3RvcnMvcGVjL3BlY19saXN0ZW5lci5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL2Nvbm5lY3RvcnMvcGVjL3BlY19saXN0ZW5lci5jIGIvdGVzdGNhc2VzL2tlcm5lbC9jb25uZWN0b3JzL3BlYy9wZWNfbGlzdGVuZXIuYwotaW5kZXggZDExZTRkYy4uYjhiNWUwZCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29ubmVjdG9ycy9wZWMvcGVjX2xpc3RlbmVyLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29ubmVjdG9ycy9wZWMvcGVjX2xpc3RlbmVyLmMKLUBAIC0yMCw2ICsyMCw3IEBACi0gLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotICNpbmNsdWRlIDxzeXMvcG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLUZpeC1kZWZhdWx0LXZhbHVlLW9mLXdpdGhvdXQtbnVtYS1zd2l0Y2gtaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2MjY4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA0YWNlNjhhNmJhNTAxOTA3YTA3NDFkYmE1ZjVmMTU1ZTA2YTc0YzM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CitEYXRlOiBXZWQsIDcgRmViIDIwMTggMTE6MDk6NDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBGaXggZGVmYXVsdCB2YWx1ZSBvZiAtLXdpdGhvdXQtbnVtYSBzd2l0Y2ggaW4gaGVscAorCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyBuby4KKworRml4ZXM6IDM5YTg1YTFmMSAoImNvbmZpZ3VyZTogYWRkIGtub2IgdG8gY29udHJvbCBudW1hIHN1cHBvcnQiKQorCitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjM5YTMxZC4uZDY2ZWEwMCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtODYsNyArODYsNyBAQCBmaQorICMgTnVtYQorIEFDX0FSR19XSVRIKFtudW1hXSwKKyAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtbnVtYV0sCistICAgIFt3aXRob3V0IG51bWEgc3VwcG9ydCAoZGVmYXVsdD15ZXMpXSksCisrICAgIFt3aXRob3V0IG51bWEgc3VwcG9ydCAoZGVmYXVsdD1ubyldKSwKKyAgIFt3aXRoX251bWE9bm9dLAorICAgW3dpdGhfbnVtYT15ZXNdCisgKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtYWRkLWtub2ItdG8tY29udHJvbC1udW1hLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtYWRkLWtub2ItdG8tY29udHJvbC1udW1hLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhYTI4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1hZGQta25vYi10by1jb250cm9sLW51bWEtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIDM5YTg1YTFmMWU2NjI0ZjU1NDIxNWJhNGI2ODQzZDM2ODlhODQxNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRlcnMgUm94ZWxsIDxhbmRlcnMucm94ZWxsQGxpbmFyby5vcmc+CitEYXRlOiBNb24sIDUgRmViIDIwMTggMTE6NTY6MDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBhZGQga25vYiB0byBjb250cm9sIG51bWEgc3VwcG9ydAorCitBbGxvdyB0byBkaXNhYmxlIG51bWEgZnJvbSB0aGUgdG9wIGxldmVsLgorCitCYXNlZCBvbiBwYXRjaDoKK2h0dHA6Ly9jZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvY29tbWl0L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHA/aWQ9NGM3ODczNTUyZTEzZGZkYmE5NmFmY2E3NTYyYzM5OGQyOTY2Y2E3MQorCitSZXBvcnRlZC1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBsaW5hcm8ub3JnPgorU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCistLS0KKyBjb25maWd1cmUuYWMgfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNWM4ZDRlYS4uYjM5YTMxZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtODMsNiArODMsMTQgQEAgZWxzZQorICAgICBBQ19TVUJTVChbV0lUSF9FWFBFQ1RdLFsibm8iXSkKKyBmaQorIAorKyMgTnVtYQorK0FDX0FSR19XSVRIKFtudW1hXSwKKysgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtbnVtYV0sCisrICAgIFt3aXRob3V0IG51bWEgc3VwcG9ydCAoZGVmYXVsdD15ZXMpXSksCisrICBbd2l0aF9udW1hPW5vXSwKKysgIFt3aXRoX251bWE9eWVzXQorKykKKysKKyAjIFBlcmwKKyBBQ19BUkdfV0lUSChbcGVybF0sCisgICBbQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1wZXJsXSwKK0BAIC0xNTcsNyArMTY1LDkgQEAgTFRQX0NIRUNLX1NFTElOVVgKKyBMVFBfQ0hFQ0tfU0lHTkFMCisgTFRQX0NIRUNLX1NZU0NBTExfRVZFTlRGRAorIExUUF9DSEVDS19TWVNDQUxMX01PRElGWV9MRFQKKytpZiB0ZXN0ICJ4JHdpdGhfbnVtYSIgPSB4eWVzOyB0aGVuCisgTFRQX0NIRUNLX1NZU0NBTExfTlVNQQorK2ZpCisgTFRQX0NIRUNLX1NZU0NBTExfUVVPVEFDVEwKKyBMVFBfQ0hFQ0tfU1lTQ0FMTF9TSUdOQUxGRAorIExUUF9DSEVDS19TWVNDQUxMX1VOU0hBUkUKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NjUwMjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gODY3YWQ1ZDVkNjRiOWIyN2VlMzIxNDgwMjc1MzJkYjBhMDBmNjQzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJSb3kuTGkiIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA3IEphbiAyMDE2IDE3OjMzOjI2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMzJdIEFkZCBrbm9iIHRvIGNvbnRyb2wgd2hldGhlciBudW1hIHN1cHBvcnQgc2hvdWxkIGJlCi0gY2hlY2tlZAotCi1vdGhlcndpc2UgdW5kZXRlcm1pbmlzdGljIGRlcGVuZGVuY3kgd2lsbCBiZSBnZW5lcmF0ZWQKLWR1cmluZyBidWlsZCBkZXBlbmRpbmcgdXBvbmcgbnVtYSBiZWluZyBzdGFnZWQgb3Igbm90Ci0KLVNpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIG00L2x0cC1udW1hLm00IHwgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL200L2x0cC1udW1hLm00IGIvbTQvbHRwLW51bWEubTQKLWluZGV4IDYwYWUwN2IuLmVkNzA3OGQgMTAwNjQ0Ci0tLS0gYS9tNC9sdHAtbnVtYS5tNAotKysrIGIvbTQvbHRwLW51bWEubTQKLUBAIC0yNCw3ICsyNCwxMyBAQCBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGRubAotIEFDX0RFRlVOKFtMVFBfQ0hFQ0tfU1lTQ0FMTF9OVU1BXSwKLSBbZG5sCi0tQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvbWVtcG9saWN5LmggbnVtYS5oIG51bWFpZi5oXSxbCi0rQUNfTVNHX0NIRUNLSU5HKFtmb3IgbnVtYV0pCi0rQUNfQVJHX1dJVEgoCi0rCVtudW1hXSwKLSsJQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1udW1hXSwKLSsJW3dpdGhvdXQgbnVtYSBzdXBwb3J0XSksCi0rCVtdLAotKwlbQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvbWVtcG9saWN5LmggbnVtYS5oIG51bWFpZi5oXSxbCi0gCUxUUF9TWVNDQUxMX05VTUFfSEVBREVSUz15ZXMKLSAJQUNfQ0hFQ0tfTElCKG51bWEsbnVtYV9hbGxvY19vbm5vZGUsW2hhdmVfbnVtYV9hbGxvY19vbm5vZGU9InllcyJdKQotIAlpZiAgdGVzdCAieCRoYXZlX251bWFfYWxsb2Nfb25ub2RlIiA9ICJ4eWVzIjsgdGhlbgotQEAgLTQ4LDMgKzU0LDUgQEAgaWYgdGVzdCAieCRoYXZlX21wb2xfY29uc3RhbnRzIiA9ICJ4eWVzIjsgdGhlbgotIAlBQ19ERUZJTkUoSEFWRV9NUE9MX0NPTlNUQU5UUywxLFtkZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhbGwgY29uc3RhbnRzIHJlcXVpcmVkIHRvIHVzZSBtYmluZCB0ZXN0c10pCi0gZmkKLSApXSkKLStBQ19NU0dfUkVTVUxUKFskd2l0aF9udW1hXSkKLStdKQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCBjZjc0NDYzLi44NGFiMzdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTIyLDEwICsyMiwxMCBAQAogIHRlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUgfCA1ICsrKysrCiAgOCBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMjk3ZjhlNy4uOTA2YjI4MCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQorSW5kZXg6IGdpdC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL01ha2VmaWxlCisrKysgZ2l0L01ha2VmaWxlCiBAQCAtNDksNiArNDksMTEgQEAgU0tJUF9JRENIRUNLCQk/PSAwCiAgVUNMSU5VWAkJCT89IDAKICBleHBvcnQgVUNMSU5VWApAQCAtMzgsMTEgKzM4LDExIEBACiAgIyBDTEVBTl9UQVJHRVRTOglUYXJnZXRzIHdoaWNoIGV4aXN0IHNvbGVseSBpbiBjbGVhbi4KICAjIENPTU1PTl9UQVJHRVRTOglUYXJnZXRzIHdoaWNoIGV4aXN0IGluIGFsbCwgY2xlYW4sIGFuZCBpbnN0YWxsLgogICMgSU5TVEFMTF9UQVJHRVRTOglUYXJnZXRzIHdoaWNoIGV4aXN0IGluIGNsZWFuIGFuZCBpbnN0YWxsIChjb250YWlucwotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCi1pbmRleCA1MGExMmZhLi40ZjE5ODdmIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQotQEAgLTQ3LDEzICs0NywxNiBAQCBTVUJESVJTCQkJKz0gY29ubmVjdG9ycyBcCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCisrKysgZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKK0BAIC00OCwxMyArNDgsMTYgQEAgU1VCRElSUwkJCSs9IGNvbm5lY3RvcnMgXAogIAkJCSAgIGxvZ2dpbmcgXAogIAkJCSAgIG1lbSBcCiAgCQkJICAgbnVtYSBcCkBAIC02MCwxMCArNjAsMTAgQEAKICBpZmVxICgkKFdJVEhfUE9XRVJfTUFOQUdFTUVOVF9URVNUU1VJVEUpLHllcykKICBTVUJESVJTCQkJKz0gcG93ZXJfbWFuYWdlbWVudAogIGVuZGlmCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUKLWluZGV4IDYyNDVlZDAuLmFhNGViN2YgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCisrKysgZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUKIEBAIC0yMyw1ICsyMyw3IEBACiAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4KICAKQEAgLTczLDExICs3MywxMSBAQAogKwlGSUxURVJfT1VUX0RJUlMgKz0gcHJvY2Vzc19zdHJlc3MKICtlbmRpZgogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfdHJ1bmtfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUKLWluZGV4IDhhY2IzOTUuLmI3NDkxMjYgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1AQCAtMjgsNSArMjgsMTAgQEAgaWZlcSAoJChVQ0xJTlVYKSwxKQorSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCitAQCAtMjgsNiArMjgsMTEgQEAgaWZlcSAoJChVQ0xJTlVYKSwxKQogIEZJTFRFUl9PVVRfRElSUwkrPSBjYXBnZXQgY2Fwc2V0IGNobW9kIGNob3duIGNsb25lIGZvcmsgZ2V0Y29udGV4dCBsbHNlZWsgXAogIAkJICAgbWluY29yZSBtcHJvdGVjdCBuZnR3IHByb2ZpbCByZW1hcF9maWxlX3BhZ2VzIHNicmsKICBlbmRpZgpAQCAtODcsMTIgKzg3LDEzIEBACiArCQkgICB1c3RhdAogK2VuZGlmCiAgCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLWluZGV4IDhiYzc4YzIuLmMzNmNmNTAgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQotQEAgLTI2LDQgKzI2LDggQEAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZS5taworIGlmZXEgKCQoVUNMSUJDKSwxKQorIEZJTFRFUl9PVVRfRElSUwkrPSBwcm9maWwKK0luZGV4OiBnaXQvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCisrKysgZ2l0L3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorQEAgLTI2LDQgKzI2LDggQEAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZQogIAogIExETElCUwkJCSs9ICQoQUNMX0xJQlMpCiAgCkBAIC0xMDEsMTAgKzEwMiwxMCBAQAogK2VuZGlmCiArCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5tawotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQotaW5kZXggMzE2MDgxMy4uOWJkZjVkMCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKIEBAIC0yMyw0ICsyMyw5IEBACiAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KICAKQEAgLTExNSwxMSArMTE2LDExIEBACiArZW5kaWYKICsKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLWluZGV4IDdhN2E1N2EuLjU4MDg4NjYgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLUBAIC0yNyw1ICsyNyw5IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKK0luZGV4OiBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZQorQEAgLTI3LDUgKzI3LDkgQEAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZQogIGluY2x1ZGUgJChhYnNfc3JjZGlyKS8uLi8uLi9jb25maWcubWsKICAKICBNQUtFX1RBUkdFVFMJCTo9IHRlc3RwaS0wIHRlc3RwaS0xIHRlc3RwaS0yIHRlc3RwaS00IHRlc3RwaS01IHRlc3RwaS02IHRlc3RwaS03IHNicmtfbXV0ZXgKQEAgLTEyOSwxMCArMTMwLDEwIEBACiArCiAgCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5tawotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi1pbmRleCA1ZWRjM2I0Li5hYTU5ODdhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQorSW5kZXg6IGdpdC90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCiBAQCAtMjQsNCArMjQsOSBAQCB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgogIAogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKQEAgLTE0Myw2ICsxNDQsMyBAQAogK2VuZGlmCiArCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5tawotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZjZiYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLUZyb20gZGMxOTA1YjZkOTcyZjkxNzZiNDBkYTI3MGM4M2Q4ZmI0ZDE3NTFiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDggRmViIDIwMTcgMTY6MTI6MzQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzVdIFJlbmFtZSBzaWdzZXQgdmFyaWFibGUgdG8gc2lnc2V0MQotCi1zaWdzZXQgQVBJIGZyb20gc2lnbmFsLmggaXMgc2hhZG93ZWQgYnkgdGhpcyBuYW1lIGNvbmZsaWN0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA0LmMgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA2LmMgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lncHJvY21hc2svc2lncHJvY21hc2swMS5jIHwgMTAgKysrKystLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jIGIvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDQuYwotaW5kZXggYjI2ODJkYS4uM2YzNWZhZCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA0LmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA0LmMKLUBAIC01Niw3ICs1Niw3IEBAIGludCBUU1RfVE9UQUwgPSAyOwkJLyogVG90YWwgbnVtYmVyIG9mIHRlc3QgY2FzZXMuICovCi0gLyoqKioqKioqKioqKioqLwotIAotIGtleV90IGtleTsKLS1zaWdzZXRfdCBzZXQ7Ci0rc2lnc2V0X3Qgc2V0MTsKLSAKLSAjZGVmaW5lICBTSVpFICAxNioxMDI0Ci0gCi1AQCAtNzEsOSArNzEsOSBAQCBpbnQgbWFpbih2b2lkKQotIAotIAlrZXkgPSAoa2V5X3QpIGdldHBpZCgpOwotIAotLQlzaWdlbXB0eXNldCgmc2V0KTsKLS0Jc2lnYWRkc2V0KCZzZXQsIFNJR1VTUjEpOwotLQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQsIE5VTEwpOwotKwlzaWdlbXB0eXNldCgmc2V0MSk7Ci0rCXNpZ2FkZHNldCgmc2V0MSwgU0lHVVNSMSk7Ci0rCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldDEsIE5VTEwpOwotIAotIAlwaWQgPSBmb3JrKCk7Ci0gCXN3aXRjaCAocGlkKSB7Ci1AQCAtMTQ4LDcgKzE0OCw3IEBAIGludCBjaGlsZCh2b2lkKQotIAljaGFyICpjcDsKLSAJaW50IHNpZzsKLSAKLS0Jc2lnd2FpdCgmc2V0LCAmc2lnKTsKLSsJc2lnd2FpdCgmc2V0MSwgJnNpZyk7Ci0gCWNobGRfcGlkID0gZ2V0cGlkKCk7Ci0gLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDYuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA2LmMKLWluZGV4IGRkNjlkZTcuLjU2ZmIxZGEgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jCi1AQCAtNTcsNyArNTcsNyBAQCBpbnQgVFNUX1RPVEFMID0gMjsJCS8qIFRvdGFsIG51bWJlciBvZiB0ZXN0IGNhc2VzLiAqLwotIC8qKioqKioqKioqKioqKi8KLSAKLSBrZXlfdCBrZXk7Ci0tc2lnc2V0X3Qgc2V0OwotK3NpZ3NldF90IHNldDE7Ci0gCi0gaW50IGNoaWxkKCk7Ci0gc3RhdGljIGludCBybV9zaG0oaW50KTsKLUBAIC03MCw5ICs3MCw5IEBAIGludCBtYWluKHZvaWQpCi0gCi0gCWtleSA9IChrZXlfdCkgZ2V0cGlkKCk7Ci0gCi0tCXNpZ2VtcHR5c2V0KCZzZXQpOwotLQlzaWdhZGRzZXQoJnNldCwgU0lHVVNSMSk7Ci0tCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldCwgTlVMTCk7Ci0rCXNpZ2VtcHR5c2V0KCZzZXQxKTsKLSsJc2lnYWRkc2V0KCZzZXQxLCBTSUdVU1IxKTsKLSsJc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc2V0MSwgTlVMTCk7Ci0gCi0gCXBpZCA9IGZvcmsoKTsKLSAJc3dpdGNoIChwaWQpIHsKLUBAIC0xNDcsNyArMTQ3LDcgQEAgaW50IGNoaWxkKHZvaWQpCi0gCWNoYXIgKmNwOwotIAlpbnQgc2lnOwotIAotLQlzaWd3YWl0KCZzZXQsICZzaWcpOwotKwlzaWd3YWl0KCZzZXQxLCAmc2lnKTsKLSAJY2hsZF9waWQgPSBnZXRwaWQoKTsKLSAKLSAJaWYgKChzaG1pZCA9IHNobWdldChrZXksIFNJWkUsIDApKSA8IDApIHsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lncHJvY21hc2svc2lncHJvY21hc2swMS5jCi1pbmRleCAyMzJkMjVhLi4wNmQ5MDJmIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWdwcm9jbWFzay9zaWdwcm9jbWFzazAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lncHJvY21hc2svc2lncHJvY21hc2swMS5jCi1AQCAtOTEsNyArOTEsNyBAQCBpbnQgVFNUX1RPVEFMID0gMTsKLSBpbnQgc2lnX2NhdGNoID0gMDsJCS8qIHZhcmlhYmxlIHRvIGJsb2NrZWQvdW5ibG9ja2VkIHNpZ25hbHMgKi8KLSAKLSBzdHJ1Y3Qgc2lnYWN0aW9uIHNhX25ldzsJLyogc3RydWN0IHRvIGhvbGQgc2lnbmFsIGluZm8gKi8KLS1zaWdzZXRfdCBzZXQ7CQkvKiBzaWduYWwgc2V0IHRvIGhvbGQgc2lnbmFsIGxpc3RzICovCi0rc2lnc2V0X3Qgc2V0MTsJCS8qIHNpZ25hbCBzZXQgdG8gaG9sZCBzaWduYWwgbGlzdHMgKi8KLSBzaWdzZXRfdCBzaWdzZXQyOwotIAotIGludCBtYWluKGludCBhYywgY2hhciAqKmF2KQotQEAgLTExMiw3ICsxMTIsNyBAQCBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKLSAJCSAqIHNvIHRoYXQsIHNpZ25hbCB3aWxsIG5vdCBiZSBkZWxpdmVyZWQgdG8KLSAJCSAqIHRoZSB0ZXN0IHByb2Nlc3MuCi0gCQkgKi8KLS0JCVRFU1Qoc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc2V0LCAwKSk7Ci0rCQlURVNUKHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldDEsIDApKTsKLSAKLSAJCS8qIEdldCB0aGUgcHJvY2VzcyBpZCBvZiB0ZXN0IHByb2Nlc3MgKi8KLSAJCW15X3BpZCA9IGdldHBpZCgpOwotQEAgLTE2NSw3ICsxNjUsNyBAQCBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKLSAJCQkJICovCi0gCQkJCWVycm5vID0gMDsKLSAJCQkJaWYgKHNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLAotLQkJCQkJCSZzZXQsIDApID09IC0xKSB7Ci0rCQkJCQkJJnNldDEsIDApID09IC0xKSB7Ci0gCQkJCQl0c3RfYnJrbShURkFJTCwgY2xlYW51cCwKLSAJCQkJCQkgInNpZ3Byb2NtYXNrKCkgZmFpbGVkICIKLSAJCQkJCQkgInRvIHVuYmxvY2sgc2lnbmFsLCAiCi1AQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgc2V0dXAodm9pZCkKLSAJICogSW5pdGlhbGlzZSB0aGUgc2lnbmFsIHNldHMgd2l0aCB0aGUgbGlzdCB0aGF0Ci0gCSAqIGV4Y2x1ZGVzL2luY2x1ZGVzICBhbGwgc3lzdGVtLWRlZmluZWQgc2lnbmFscy4KLSAJICovCi0tCWlmIChzaWdlbXB0eXNldCgmc2V0KSA9PSAtMSkgewotKwlpZiAoc2lnZW1wdHlzZXQoJnNldDEpID09IC0xKSB7Ci0gCQl0c3RfYnJrbShURkFJTCwgY2xlYW51cCwKLSAJCQkgInNpZ2VtcHR5c2V0KCkgZmFpbGVkLCBlcnJubz0lZCA6ICVzIiwKLSAJCQkgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7Ci1AQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgc2V0dXAodm9pZCkKLSAJICogQWRkIHNwZWNpZmllZCBzaWduYWwgKFNJR0lOVCkgdG8gdGhlIHNpZ25hbCBzZXQKLSAJICogd2hpY2ggZXhjbHVkZXMgc3lzdGVtLWRlZmluZWQgc2lnbmFscy4KLSAJICovCi0tCWlmIChzaWdhZGRzZXQoJnNldCwgU0lHSU5UKSA9PSAtMSkgewotKwlpZiAoc2lnYWRkc2V0KCZzZXQxLCBTSUdJTlQpID09IC0xKSB7Ci0gCQl0c3RfYnJrbShURkFJTCwgY2xlYW51cCwKLSAJCQkgInNpZ2FkZHNldCgpIGZhaWxlZCwgZXJybm89JWQgOiAlcyIsCi0gCQkJIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKaW5kZXggM2U3OWM5Zi4uNDYyOTc2ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaApAQCAtMTgsMTAgKzE4LDEwIEBACiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYyB8IDIgKysKICAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMKLWluZGV4IGQ2M2QxZTQuLjI0Y2ExNzQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCisrKysgZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMKIEBAIC03NiwxMCArNzYsMTIgQEAKICAgKi8KICAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC0zNSwxMSArMzUsMTEgQEAKICsjdW5kZWYgX0dOVV9TT1VSQ0UKICAKICAjaW5jbHVkZSAidGVzdC5oIgotIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jCi1pbmRleCA1YTUxYjlhLi5hNTMwYTZiIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYworICNpbmNsdWRlICJzYWZlX21hY3Jvcy5oIgorSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYworKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jCiBAQCAtNzUsOSArNzUsMTEgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC01MiwxMCArNTIsMTAgQEAKICAKICAjaW5jbHVkZSAidGVzdC5oIgogIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jCi1pbmRleCAxMmUzODI5Li45YjM5ZjhiIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYworSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYworKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jCiBAQCAtNzYsOSArNzYsMTEgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC02OCw2ICs2OCwzIEBACiAgCiAgI2luY2x1ZGUgInRlc3QuaCIKICAKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjUtbWNfZ2V0aG9zdC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjUtbWNfZ2V0aG9zdC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmNiYTYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gOWQxNGVkZmMxMmVlZmFjOTAwZGQ1NDcyOWE4OGIzY2NmOTFjMWM0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDggSmFuIDIwMTYgMDc6MTg6MTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8zMl0gbWNfZ2V0aG9zdDogaW5jbHVkZSBzeXMvdHlwZXMuaAotCi1GaXggYnVpbGQgb24gbXVzbAotZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICd1X2NoYXInCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLWluZGV4IDViOWE3OTAuLmM3OTllMmEgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYwotQEAgLTYsNiArNiw3IEBACi0gCi0gI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotICNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjctc3lzY29uZjAxLVVzZS1fU0NfMl9DX1ZFUlNJT04tY29uZGl0aW9uYWxseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZjZmMjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjctc3lzY29uZjAxLVVzZS1fU0NfMl9DX1ZFUlNJT04tY29uZGl0aW9uYWxseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMTQ3MTAxMjE2NGJhOGYyNjA0NmQ0YjFjZTU1MzFhMGQ5MjgwNWVmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDggRmViIDIwMTcgMTY6MjE6MTYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIHN5c2NvbmYwMTogVXNlIF9TQ18yX0NfVkVSU0lPTiBjb25kaXRpb25hbGx5Ci0KLV9TQ18yX0NfVkVSU0lPTiBpcyBub3QgYXZhaWxhYmxlIG9uIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zeXNjb25mL3N5c2NvbmYwMS5jIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYwotaW5kZXggNTgzZGVlZi4uZGU5MzY5NSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zeXNjb25mL3N5c2NvbmYwMS5jCi1AQCAtMTAzLDcgKzEwMyw5IEBAIGludCBtYWluKHZvaWQpCi0gCXRlc3Rfc3lzY29uZihfU0NfMl9DX0JJTkQpOwotIAl0ZXN0X3N5c2NvbmYoX1NDXzJfQ19ERVYpOwotICNpZmRlZiBfU0NfMl9DX1ZFUlNJT04KLSsjaWZkZWYgX19HTElCQ19fCi0gCXRlc3Rfc3lzY29uZihfU0NfMl9DX1ZFUlNJT04pOwotKyNlbmRpZgotICNlbHNlCi0gCXRzdF9yZXNtKFRDT05GLCAiX1NDXzJfQ19WRVJTSU9OIG5vdCBkZWZpbmVkIik7Ci0gI2VuZGlmCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDMwLWxpYi1Vc2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUtaW4tcGxhY2Utb2YtUFRIUkVBRF8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmE2ZDA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDMwLWxpYi1Vc2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUtaW4tcGxhY2Utb2YtUFRIUkVBRF8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDAwYmE3Y2RkMDYwOGIxNTA3MDI3NDI4ZjlmODdiMWNiOTc0NzM3MmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA5IEZlYiAyMDE3IDE1OjU0OjUzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYjogVXNlIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFIGluIHBsYWNlIG9mCi0gUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVJfTlAgZm9yIG5vbi1nbGliYwotCi1lLmcuIG11c2wgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBfTlAgbXV0ZXggdHlwZXMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGliL3RzdF9yZXMuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYi90c3RfcmVzLmMgYi9saWIvdHN0X3Jlcy5jCi1pbmRleCA2MWRhYWViLi40MzUyMjRmIDEwMDY0NAotLS0tIGEvbGliL3RzdF9yZXMuYwotKysrIGIvbGliL3RzdF9yZXMuYwotQEAgLTc5LDcgKzc5LDExIEBAIGludCBURVNUX0VSUk5POwotIAlhc3NlcnQoc3RybGVuKGJ1ZikgPiAwKTsJCVwKLSB9IHdoaWxlICgwKQotIAotKyNpZmRlZiBfX0dMSUJDX18KLSBzdGF0aWMgcHRocmVhZF9tdXRleF90IHRtdXRleCA9IFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QOwotKyNlbHNlCi0rc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0bXV0ZXggPSB7ICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSB9OwotKyNlbmRpZgotIAotIHN0YXRpYyB2b2lkIGNoZWNrX2Vudih2b2lkKTsKLSBzdGF0aWMgdm9pZCB0c3RfY29uZGVuc2UoaW50IHRudW0sIGludCB0dHlwZSwgY29uc3QgY2hhciAqdG1lc2cpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMy1zaG1hdDEtQ292ZXItR05VLXNwZWNpZmljLWNvZGUtdW5kZXItX19VU0VfR05VLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY4ZTFjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMy1zaG1hdDEtQ292ZXItR05VLXNwZWNpZmljLWNvZGUtdW5kZXItX19VU0VfR05VLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA1ZTNkZWE2NjllNWIwYjc2OWYzMjJkNTRhM2JiOWYzMjBiNTMyN2RhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjIgTWFyIDIwMTYgMTU6NDc6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNi8yNl0gc2htYXQxOiBDb3ZlciBHTlUgc3BlY2lmaWMgY29kZSB1bmRlciBfX1VTRV9HTlUKLQotb24geDg2LCB3ZSB1c2UgdWNfbWNvbnRleHQgZWxlbWVudCBmcm9tIHNpZ2NvbnRleHQKLXdoaWNoIGlzIG1hcmtlZCBnbnUtc3BlY2lmaWMgaW4gZ2xpYmMsIHRoaXMgcGF0Y2gKLWFkZHMgdGhpcyBjb25kaXRpb24gYXJvdW5kIHRoZSBjb2RlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gdGVzdGNhc2VzL2tlcm5lbC9tZW0vbXRlc3QwNi9zaG1hdDEuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDA2L3NobWF0MS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9tZW0vbXRlc3QwNi9zaG1hdDEuYwotaW5kZXggMGQ2ZDdhNC4uYmVlNjlmNiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDYvc2htYXQxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDYvc2htYXQxLmMKLUBAIC0xMTEsNyArMTExLDcgQEAgaW50IGRvbmVfc2htYXQgPSAwOwkJLyogZGlzYWxsb3cgcmVhZCBhbmQgd3JpdGVzIGJlZm9yZSBzaG1hdCAgICAgICovCi0gc3RhdGljIHZvaWQgc2lnX2hhbmRsZXIoaW50IHNpZ25hbCwJLyogc2lnbmFsIG51bWJlciwgc2V0IHRvIGhhbmRsZSBTSUdBTFJNICAgICAgICovCi0gCQkJaW50IGNvZGUsIHN0cnVjdCB1Y29udGV4dCAqdXQpCi0gewkJCQkvKiBjb250YWlucyBwb2ludGVyIHRvIHNpZ2NvbnRleHQgc3RydWN0dXJlICAgKi8KLS0jaWZkZWYgX19pMzg2X18KLSsjaWYgZGVmaW5lZChfX2kzODZfXykgJiYgZGVmaW5lZChfX1VTRV9HTlUpCi0gCXVuc2lnbmVkIGxvbmcgZXhjZXB0OwkvKiBleGNlcHRpb24gdHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAJaW50IHJldCA9IDA7CQkvKiBleGl0IGNvZGUgZnJvbSBzaWduYWwgaGFuZGxlci4gICAgICAgICAgICAgKi8KLSAJc3RydWN0IHNpZ2NvbnRleHQgKnNjcCA9CS8qIHBvaW50ZXIgdG8gc2lnY29udGV4dCBzdHJ1Y3R1cmUgICAgICAgICAgICAqLwotQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgdm9pZCBzaWdfaGFuZGxlcihpbnQgc2lnbmFsLAkvKiBzaWduYWwgbnVtYmVyLCBzZXQgdG8gaGFuZGxlIFNJR0FMUk0KLSAJCWZwcmludGYoc3Rkb3V0LCAiVGVzdCBlbmRlZCwgc3VjY2Vzc1xuIik7Ci0gCQlleGl0KDApOwotIAl9Ci0tI2lmZGVmIF9faTM4Nl9fCi0rI2lmIGRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX19VU0VfR05VKQotIAllbHNlIHsKLSAJCWV4Y2VwdCA9IHNjcC0+dHJhcG5vOwotIAkJZnByaW50ZihzdGRlcnIsICJzaWduYWwgY2F1Z2h0IC0gWyVkXSAiLCBzaWduYWwpOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg3MzhhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLUZyb20gYTlkNTU5NWQyZmEyYWIyNTJmMWNhYmY2M2Y0YjY1YzNlZmJhZmViOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDEwIEF1ZyAyMDE3IDE1OjI3OjAzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGx0cDogZml4IFBBR0VfU0laRSByZWRlZmluaXRpb24gYW5kIE9fQ1JFQVQgdW5kZWNsZWFyIHdoZW4KLSBidWlsZCB3aXRoIG11c2wKLQotZXJyb3IgMToKLQotfHN0YWNrX2NsYXNoLmM6NTA6MjI6IGVycm9yOiBleHBlY3RlZCBpZGVudGlmaWVyIG9yICcoJyBiZWZvcmUgbnVtZXJpYyBjb25zdGFudAotfCBzdGF0aWMgdW5zaWduZWQgbG9uZyBQQUdFX1NJWkU7Ci0KLVRoaXMgaXMgYmVjYXVzZSB0aGUgbXVzbCBsaWJjIGFscmVhZHkgY29udGFpbiBQQUdFX1NJWkUgZGVmaW5pdGlvbiBpbiBsaW1pdHMuYywKLXdlIGNhbiBjaGVjayBpdCBoZXJlOgotCi0gICAgaHR0cHM6Ly9naXQubXVzbC1saWJjLm9yZy9jZ2l0L211c2wvdHJlZS9pbmNsdWRlL2xpbWl0cy5oI240MwotCi1lcnJvciAyOgotCi18Y2swMS5jOjE1NzoyMjogZXJyb3I6ICdPX0NSRUFUJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnU19JUkVBRCc/Ci18ICAgZmQgPSBvcGVuKGZpbGVuYW1lLCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fUkRXUiwgMDY0NCk7Ci18ICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+Ci18ICAgICAgICAgICAgICAgICAgICAgICBTX0lSRUFECi0KLVRoaXMgaXMgYmVjYXVzZSB0aGUgbXVzbCBsaWJjIHB1dCB0aG9zZSBpbiBmY250bC5oLCBzbyB3ZSBzaG91bGQgaW5jbHVkZSB0aGF0Ci1maWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL3B1bGwvMTk0IF0KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jdmUvc3RhY2tfY2xhc2guYyAgICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMgfCAgMSArCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMgfCAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMgYi90ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMKLWluZGV4IDJlZjFhODIuLjdjNDU5OTEgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMKLSsrKyBiL3Rlc3RjYXNlcy9jdmUvc3RhY2tfY2xhc2guYwotQEAgLTQ3LDcgKzQ3LDcgQEAKLSAjaW5jbHVkZSAidHN0X3Rlc3QuaCIKLSAjaW5jbHVkZSAidHN0X3NhZmVfc3RkaW8uaCIKLSAKLS1zdGF0aWMgdW5zaWduZWQgbG9uZyBQQUdFX1NJWkU7Ci0rc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFX3RzdDsKLSBzdGF0aWMgdW5zaWduZWQgbG9uZyBQQUdFX01BU0s7Ci0gc3RhdGljIHVuc2lnbmVkIGxvbmcgR0FQX1BBR0VTID0gMjU2OwotIHN0YXRpYyB1bnNpZ25lZCBsb25nIFRIUkVTSE9MRDsKLUBAIC02Niw3ICs2Niw3IEBAIHZvaWQgZXhoYXVzdF9zdGFja19pbnRvX3NpZ3NlZ3Yodm9pZCkKLSAJZXhoYXVzdF9zdGFja19pbnRvX3NpZ3NlZ3YoKTsKLSB9Ci0gCi0tI2RlZmluZSBNQVBQRURfTEVOIFBBR0VfU0laRQotKyNkZWZpbmUgTUFQUEVEX0xFTiBQQUdFX1NJWkVfdHN0Ci0gc3RhdGljIHVuc2lnbmVkIGxvbmcgbWFwcGVkX2FkZHI7Ci0gCi0gdm9pZCBzZWd2X2hhbmRsZXIoaW50IHNpZywgc2lnaW5mb190ICppbmZvLCB2b2lkICpkYXRhIExUUF9BVFRSSUJVVEVfVU5VU0VEKQotQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIGRvX2NoaWxkKHZvaWQpCi0gCXN0YWNrX3Qgc2lnbmFsX3N0YWNrOwotIAlzdHJ1Y3Qgc2lnYWN0aW9uIHNlZ3Zfc2lnID0gey5zYV9zaWdhY3Rpb24gPSBzZWd2X2hhbmRsZXIsIC5zYV9mbGFncyA9IFNBX09OU1RBQ0t8U0FfU0lHSU5GT307Ci0gCXZvaWQgKm1hcDsKLS0JdW5zaWduZWQgbG9uZyBnYXAgPSBHQVBfUEFHRVMgKiBQQUdFX1NJWkU7Ci0rCXVuc2lnbmVkIGxvbmcgZ2FwID0gR0FQX1BBR0VTICogUEFHRV9TSVpFX3RzdDsKLSAJc3RydWN0IHJsaW1pdCBybGltaXQ7Ci0gCi0gCXJsaW1pdC5ybGltX2N1ciA9IHJsaW1pdC5ybGltX21heCA9IFJMSU1fSU5GSU5JVFk7Ci1AQCAtMjAwLDggKzIwMCw4IEBAIHZvaWQgc2V0dXAodm9pZCkKLSB7Ci0gCWNoYXIgYnVmWzQwOTZdLCAqcDsKLSAKLS0JUEFHRV9TSVpFID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOwotLQlQQUdFX01BU0sgPSB+KFBBR0VfU0laRSAtIDEpOwotKwlQQUdFX1NJWkVfdHN0ID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOwotKwlQQUdFX01BU0sgPSB+KFBBR0VfU0laRV90c3QgLSAxKTsKLSAKLSAJYnVmWzQwOTVdID0gJ1wwJzsKLSAJU0FGRV9GSUxFX1NDQU5GKCIvcHJvYy9jbWRsaW5lIiwgIiU0MDk1W15cbl0iLCBidWYpOwotQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCQl0c3RfcmVzKFRJTkZPLCAic3RhY2tfZ3VhcmRfZ2FwID0gJWxkIiwgR0FQX1BBR0VTKTsKLSAJfQotIAotLQlUSFJFU0hPTEQgPSAoR0FQX1BBR0VTIC0gMSkgKiBQQUdFX1NJWkU7Ci0rCVRIUkVTSE9MRCA9IChHQVBfUEFHRVMgLSAxKSAqIFBBR0VfU0laRV90c3Q7Ci0gCi0gCXsKLSAJCXZvbGF0aWxlIGludCAqYSA9IGFsbG9jYSgxMjgpOwotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMKLWluZGV4IDNlMTdiZTQuLjA2ZDg5ZTMgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMKLUBAIC02OSw2ICs2OSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgInRlc3QuaCIKLSAKLSB2b2lkIHNldHVwKHZvaWQpOwotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMKLWluZGV4IDQxNGRmNjguLjlkZGY3MjkgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMKLUBAIC03NSw2ICs3NSw3IEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlICJ0ZXN0LmgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM4LWNvbW1hbmRzLWdkYjAxLXJlcGxhY2Utc3RkaW4td2l0aC1kZXYtbnVsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM4LWNvbW1hbmRzLWdkYjAxLXJlcGxhY2Utc3RkaW4td2l0aC1kZXYtbnVsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjMGE0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDJmNmFiOGY2OTRiMjZiN2YyNTY2NjI0ZjZkMWYyMzc4OGQ2YWI4YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTEgU2VwIDIwMTcgMTI6NTc6NTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29tbWFuZHMvZ2RiMDE6IHJlcGxhY2Ugc3RkaW4gd2l0aCAvZGV2L251bGwKLQotSWYgdGhpcyB0ZXN0Y2FzZSBydW5zIGFzIGJhY2tncm91bmQgcHJvY2VzcywgZ2RiIGNhbiByZWNlaXZlCi1TSUdUVE9VIGFuZCB0aGVuIHRlc3RjYXNlIGdldHMgc3R1Y2suCi0KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0LzJmNmFiOGY2OTRiMjZiN2YyNTY2NjI0ZjZkMWYyMzc4OGQ2YWI4YTBdCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2ggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoIGIvdGVzdGNhc2VzL2NvbW1hbmRzL2dkYi9nZGIwMS5zaAotaW5kZXggMDdhZTM2Zi4uZTNhNWI1MSAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKLSsrKyBiL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKLUBAIC0yOSw3ICsyOSw3IEBAIFRTVF9ORUVEU19DTURTPSJnZGIgL2Jpbi9jYXQiCi0gCi0gc2ltcGxlX3Rlc3QoKQotIHsKLS0JZ2RiIC9iaW4vY2F0IC1leCAicnVuIC9ldGMvcGFzc3dkIiAtZXggcXVpdAotKwlnZGIgL2Jpbi9jYXQgLWV4ICJydW4gL2V0Yy9wYXNzd2QiIC1leCBxdWl0IDwgL2Rldi9udWxsCi0gCVJDPSQ/Ci0gCWlmIFsgJFJDIC1lcSAwIF0gOyB0aGVuCi0gCQl0c3RfcmVzIFRQQVNTICJnZGIgYXR0YWNoZWQgdG8gcHJvY2VzcyBhbmQgY29tcGxldGVkIHJ1biIKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzktY29tbWFuZHMtYXIwMS1GaXgtZm9yLXRlc3QtaW4tZGV0ZXJtaW5pc3RpYy1tb2RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzktY29tbWFuZHMtYXIwMS1GaXgtZm9yLXRlc3QtaW4tZGV0ZXJtaW5pc3RpYy1tb2RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YzkyN2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOS1jb21tYW5kcy1hcjAxLUZpeC1mb3ItdGVzdC1pbi1kZXRlcm1pbmlzdGljLW1vZGUucGF0Y2gKQEAgLTAsMCArMSwyNTIgQEAKK0Zyb20gMDRkYTk0Nzg4ODdlNzA1ZWEzOGU0ZjA5NzQ5MmRhMjBlNjUxNjg2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEd1YW5nd2VuIEZlbmcgPGZlbmdndy1mbnN0QGNuLmZ1aml0c3UuY29tPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAxNTo0ODo0MiArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb21tYW5kcy9hcjAxOiBGaXggZm9yIHRlc3QgaW4gZGV0ZXJtaW5pc3RpYyBtb2RlCisKK0lmIGJpbnV0aWxzIHdhcyBjb25maWd1cmVkIHdpdGggLS1lbmFibGUtZGV0ZXJtaW5pc3RpYy1hcmNoaXZlcywKK2FyIHdpbGwgcnVuIGluIGRldGVybWluaXN0aWMgbW9kZSBieSBkZWZhdWx0LCBhbmQgdXNlIHplcm8gZm9yCit0aW1lc3RhbXBzIGFuZCB1aWRzL2dpZHMsIHdoaWNoIG1ha2VzIHRoZSB0ZXN0IGNhc2UgYWJub3JtYWwuCisKK0ZpeCB0aGlzIGJ5IGFkZCB0aGUgIlUiIG1vZGlmaWVyIHdoZW4gZGV0ZXJtaW5pc3RpYyBtb2RlIGlzIGRlZmF1bHQuCisKK1NpZ25lZC1vZmYtYnk6IEd1YW5nd2VuIEZlbmcgPGZlbmdndy1mbnN0QGNuLmZ1aml0c3UuY29tPgorU2lnbmVkLW9mZi1ieTogRmVpIEppZSA8ZmVpai5mbnN0QGNuLmZ1aml0c3UuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cDovL2xpc3RzLmxpbnV4Lml0L3BpcGVybWFpbC9sdHAvMjAxNy1TZXB0ZW1iZXIvMDA1NjY4Lmh0bWxdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9jb21tYW5kcy9hci9hcjAxIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jb21tYW5kcy9hci9hcjAxIGIvdGVzdGNhc2VzL2NvbW1hbmRzL2FyL2FyMDEKK2luZGV4IGRkYWIyZTAuLmQ2ODhmNzYgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMvY29tbWFuZHMvYXIvYXIwMQorKysrIGIvdGVzdGNhc2VzL2NvbW1hbmRzL2FyL2FyMDEKK0BAIC0yMywxNCArMjMsMjYgQEAKKyAjIFRoaXMgaXMgYSBiYXNpYyBhciBjb21tYW5kIHRlc3QuCisgIworIFRTVF9DTlQ9MTcKKytUU1RfU0VUVVA9c2V0dXAKKyBUU1RfVEVTVEZVTkM9dGVzdAorIFRTVF9ORUVEU19UTVBESVI9MQorIC4gdHN0X3Rlc3Quc2gKKyAKKytzZXR1cCgpCisreworKwlhciAtLWhlbHAgfCBncmVwICJ1c2UgemVybyBmb3IgdGltZXN0YW1wcyBhbmQgdWlkcy9naWRzIChkZWZhdWx0KSIgXAorKwkJPi9kZXYvbnVsbAorKwlpZiBbICQ/IC1lcSAwIF07IHRoZW4KKysJCU1PRD0iVSIKKysJZWxzZQorKwkJTU9EPSIiCisrCWZpCisrfQorKworIHRlc3QxKCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluCistCVJPRCBhciAtcmEgZmlsZTEuaW4gbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLXJhIiRNT0QiIGZpbGUxLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC00Nyw5ICs1OSw5IEBAIHRlc3QxKCkKKyAKKyB0ZXN0MigpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCQkgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluICRUU1RfREFUQVJPT1QvZmlsZTQuaW4KKy0JUk9EIGFyIC1tYSBmaWxlMS5pbiBsaWIuYSBmaWxlNC5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gJFRTVF9EQVRBUk9PVC9maWxlNC5pbgorKwlST0QgYXIgLW1hIiRNT0QiIGZpbGUxLmluIGxpYi5hIGZpbGU0LmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTQuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTY2LDggKzc4LDggQEAgdGVzdDIoKQorIAorIHRlc3QzKCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluCistCVJPRCBhciAtcmIgZmlsZTMuaW4gbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLXJiIiRNT0QiIGZpbGUzLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC04NCw5ICs5Niw5IEBAIHRlc3QzKCkKKyAKKyB0ZXN0NCgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorLQlST0QgYXIgLW1iIGZpbGUzLmluIGxpYi5hIGZpbGUyLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorKwlST0QgYXIgLW1iIiRNT0QiIGZpbGUzLmluIGxpYi5hIGZpbGUyLmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtMTAzLDcgKzExNSw3IEBAIHRlc3Q0KCkKKyAKKyB0ZXN0NSgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gXD4gYXIub3V0CisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiBcPiBhci5vdXQKKyAKKyAJaWYgWyAtcyBhci5vdXQgXTsgdGhlbgorIAkJdHN0X3JlcyBURkFJTCAiYXIgcHJvZHVjZWQgb3V0cHV0IHVuZXhwZWN0ZWRseSAoLWMpIgorQEAgLTExNyw3ICsxMjksNyBAQCB0ZXN0NSgpCisgCisgdGVzdDYoKQorIHsKKy0JUk9EIGFyIC1xYyBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluIFw+IGFyLm91dAorKwlST0QgYXIgLXFjIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gXD4gYXIub3V0CisgCisgCWlmIFsgLXMgYXIub3V0IF07IHRoZW4KKyAJCXRzdF9yZXMgVEZBSUwgImFyIHByb2R1Y2VkIG91dHB1dCB1bmV4cGVjdGVkbHkgKC1xYykiCitAQCAtMTMxLDkgKzE0Myw5IEBAIHRlc3Q2KCkKKyAKKyB0ZXN0NygpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLWQgbGliLmEgZmlsZTEuaW4gZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCisrCVJPRCBhciAtZCIkTU9EIiBsaWIuYSBmaWxlMS5pbiBmaWxlMi5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC0xNTAsOSArMTYyLDkgQEAgdGVzdDcoKQorIAorIHRlc3Q4KCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKy0JICAgICAgICAgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCistCVJPRCBhciAtZCBsaWIuYQorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1kIiRNT0QiIGxpYi5hCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtMTY5LDggKzE4MSw4IEBAIHRlc3Q4KCkKKyAKKyB0ZXN0OSgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXJpIGZpbGUzLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1yaSIkTU9EIiBmaWxlMy5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtMTg3LDkgKzE5OSw5IEBAIHRlc3Q5KCkKKyAKKyB0ZXN0MTAoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC1taSBmaWxlMy5pbiBsaWIuYSBmaWxlMi5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1taSIkTU9EIiBmaWxlMy5pbiBsaWIuYSBmaWxlMi5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTIwNiw5ICsyMTgsOSBAQCB0ZXN0MTAoKQorIAorIHRlc3QxMSgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorLQlST0QgYXIgLW0gbGliLmEgZmlsZTMuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisrCVJPRCBhciAtbSIkTU9EIiBsaWIuYSBmaWxlMy5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTIyNSw5ICsyMzcsOSBAQCB0ZXN0MTEoKQorIAorIHRlc3QxMigpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXAgbGliLmEgXD4gYXIub3V0CisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLXAiJE1PRCIgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiVGhpcyBpcyBmaWxlIG9uZVxuVGhpcyBpcyBmaWxlIHR3b1xuVGhpcyBpcyBmaWxlIHRocmVlXG4iID4gYXIuZXhwCisgCitAQCAtMjQ0LDkgKzI1Niw5IEBAIHRlc3QxMigpCisgdGVzdDEzKCkKKyB7CisgCistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKy0JICAgICAgICAgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCistCVJPRCBhciAtcSBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGU0LmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLXEiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlNC5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuZmlsZTQuaW5cbiIgPiBhci5leHAKK0BAIC0yNjQsMTQgKzI3NiwxNCBAQCB0ZXN0MTMoKQorIHRlc3QxNCgpCisgeworIAlST0QgdG91Y2ggZmlsZTAuaW4KKy0JUk9EIGFyIC1jciBsaWIuYSBmaWxlMC5pbiAkVFNUX0RBVEFST09UL2ZpbGUxLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgZmlsZTAuaW4gJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorIAorIAlmaWxlMF9tdGltZTE9JChhciAtdHYgbGliLmEgfCBncmVwIGZpbGUwLmluKQorIAlmaWxlMV9tdGltZTE9JChhciAtdHYgbGliLmEgfCBncmVwIGZpbGUxLmluKQorIAorIAl0b3VjaCAtYyAtdCAkKGRhdGUgLS1kYXRlPSduZXh0IGRheScgKyIlWSVtJWQlSCVNIikgZmlsZTAuaW4KKyAKKy0JUk9EIGFyIC1ydSBsaWIuYSBmaWxlMC5pbiAkVFNUX0RBVEFST09UL2ZpbGUxLmluCisrCVJPRCBhciAtcnUiJE1PRCIgbGliLmEgZmlsZTAuaW4gJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorIAorIAlmaWxlMF9tdGltZTI9JChhciAtdHYgbGliLmEgfCBncmVwIGZpbGUwLmluKQorIAlmaWxlMV9tdGltZTI9JChhciAtdHYgbGliLmEgfCBncmVwIGZpbGUxLmluKQorQEAgLTI5Myw3ICszMDUsNyBAQCB0ZXN0MTQoKQorIAorIHRlc3QxNSgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluCisgCVJPRCBhciAtdHYgbGliLmEgXD4gYXIub3V0CisgCisgCWlmIGdyZXAgLXEgJ1tyd3gtXVx7OVx9IFswLTldLiovWzAtOV0uKlxzKlswLTldLiouKmZpbGUxLmluJyBhci5vdXQ7IHRoZW4KK0BAIC0zMDgsOSArMzIwLDkgQEAgdGVzdDE1KCkKKyAKKyB0ZXN0MTYoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC14diBsaWIuYSBcPiBhci5vdXQKKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCisrCVJPRCBhciAteHYiJE1PRCIgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAieCAtIGZpbGUxLmluXG54IC0gZmlsZTIuaW5cbnggLSBmaWxlMy5pblxuIiA+IGFyLmV4cAorIAorQEAgLTMzMiw4ICszNDQsOCBAQCB0ZXN0MTYoKQorIAorIHRlc3QxNygpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorLQlST0QgYXIgLXh2IGxpYi5hIGZpbGUyLmluIFw+IGFyLm91dAorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorKwlST0QgYXIgLXh2IiRNT0QiIGxpYi5hIGZpbGUyLmluIFw+IGFyLm91dAorIAorIAlwcmludGYgInggLSBmaWxlMi5pblxuIiA+IGFyLmV4cAorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0MC1zYWZlX21hY3Jvcy1tYWtlLWlzX2Z1c2UtcmV0dXJuLXplcm8taWYtZnNfdHlwZS1pcy1OLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtc2FmZV9tYWNyb3MtbWFrZS1pc19mdXNlLXJldHVybi16ZXJvLWlmLWZzX3R5cGUtaXMtTi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDk2YTg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtc2FmZV9tYWNyb3MtbWFrZS1pc19mdXNlLXJldHVybi16ZXJvLWlmLWZzX3R5cGUtaXMtTi5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDY3YWY3ZGJlOGJkZjI5ZjllZDk4MGQ4ZDI5ZmVlYWUzMmEwYTdhMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSBXYW5nIDxsaXdhbmdAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjMgSmFuIDIwMTggMTc6NDY6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2FmZV9tYWNyb3M6IG1ha2UgaXNfZnVzZSgpIHJldHVybiB6ZXJvIGlmIGZzX3R5cGUgaXMgTlVMTAorCitUaGlzIGNvbW1taXQgMjg1MDdlNTE0YyhzYWZlX21vdW50OiBEbyBub3QgdHJ5IG1vdW50KCkgc3lzY2FsbCBmb3IgRlVTRSBmcykKK2ludm9sdmVzIEZVU0UgZnMgY2hlY2sgaW4gc2FmZV9tb3VudCgpLCBidXQgd2UnZCBiZXR0ZXIgZ3VhcmFudGVlIHRoZSAiZnNfdHlwZSIKK2lzIGxlZ2FsIHRvIGNoZWNrIGluIGlzX2Z1c2UoKSBmdW5jdGlvbiBvdGhlcndpc2Ugc3lzdGVtIHdpbGwga2lsbCB0aGUgcHJvZ3JhbS4KKworICBjbWRsaW5lPSJmYW5vdGlmeTA2IgorICBjb250YWN0cz0iIgorICBhbmFseXNpcz1leGl0CisgIDw8PHRlc3Rfb3V0cHV0Pj4+CisgIHRzdF90ZXN0LmM6OTgwOiBJTkZPOiBUaW1lb3V0IHBlciBydW4gaXMgMGggMTBtIDAwcworICB0c3RfdGVzdC5jOjEwMjU6IEJST0s6IFRlc3Qga2lsbGVkIGJ5IFNJR1NFR1YhCisKK1NpZ25lZC1vZmYtYnk6IExpIFdhbmcgPGxpd2FuZ0ByZWRoYXQuY29tPgorQWNrZWQtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0LzY3YWY3ZGJlOGJkZjI5ZjllZDk4MGQ4ZDI5ZmVlYWUzMmEwYTdhMWRdCistLS0KKyBsaWIvc2FmZV9tYWNyb3MuYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliL3NhZmVfbWFjcm9zLmMgYi9saWIvc2FmZV9tYWNyb3MuYworaW5kZXggYzQ4ZTQzNmRjLi5hYmRlY2EwMTMgMTAwNjQ0CistLS0gYS9saWIvc2FmZV9tYWNyb3MuYworKysrIGIvbGliL3NhZmVfbWFjcm9zLmMKK0BAIC03MDgsNiArNzA4LDkgQEAgc3RhdGljIGludCBpc19mdXNlKGNvbnN0IGNoYXIgKmZzX3R5cGUpCisgeworIAl1bnNpZ25lZCBpbnQgaTsKKyAKKysJaWYgKCFmc190eXBlKQorKwkJcmV0dXJuIDA7CisrCisgCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZ1c2VfZnNfdHlwZXMpOyBpKyspIHsKKyAJCWlmICghc3RyY21wKGZ1c2VfZnNfdHlwZXNbaV0sIGZzX3R5cGUpKQorIAkJCXJldHVybiAxOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTcwNTE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTcwNTE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTNjYmZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IFRlc3QgUHJvamVjdCIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBqb2ludCBwcm9qZWN0IHdpdGggU0dJLCBJQk0sIE9TREwsIGFuZCBCdWxsIHdpdGggYSBnb2FsIHRvIGRlbGl2ZXIgdGVzdCBzdWl0ZXMgdG8gdGhlIG9wZW4gc291cmNlIGNvbW11bml0eSB0aGF0IHZhbGlkYXRlIHRoZSByZWxpYWJpbGl0eSwgcm9idXN0bmVzcywgYW5kIHN0YWJpbGl0eSBvZiBMaW51eC4gVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgZm9yIHRlc3RpbmcgdGhlIExpbnV4IGtlcm5lbCBhbmQgcmVsYXRlZCBmZWF0dXJlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbHRwLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL3J1bl9mcmVlemVyLnNoO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PTg2YTYxZDJjMDQyZDU5ODM2ZmZiMzUzYTIxNDU2NDk4IFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL21lbW9yeV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL2NwdV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0NPUFlJTkc7bWQ1PTQ4YjFjNWVjNjMzZTNlMzBlYzJjZjg4NGFlNjk5OTQ3IFwKLSAgICBmaWxlOi8vdGVzdGNhc2VzL3JlYWx0aW1lL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKLSAgICBmaWxlOi8vdG9vbHMvcG91bmRlcjIxL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICBmaWxlOi8vdXRpbHMvYmVuY2htYXJrL2tlcm5iZW5jaC0wLjQyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICBmaWxlOi8vdXRpbHMvZmZzYi02LjAtcmMyL0NPUFlJTkc7bWQ1PWM0NjA4MjE2N2EzMTRkNzg1ZDAxMmEyNDQ3NDhkODAzIFwKLSIKLQotREVQRU5EUyA9ICJhdHRyIGxpYmFpbyBsaWJjYXAgYWNsIG9wZW5zc2wgemlwLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKLUVYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJDPW11c2wgIgotQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgotQ0ZMQUdTX2FwcGVuZF9taXBzYXJjaG42NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCi1TUkNSRVYgPSAiMTg5MTZhMmU2ZDhjOTk3YjdiMjlkY2ZhOTU1MGQ1YTE1YjIyZWQyMiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctc3lzY29uZjAxLVVzZS1fU0NfMl9DX1ZFUlNJT04tY29uZGl0aW9uYWxseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM1LWZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM3LWx0cC1maXgtUEFHRV9TSVpFLXJlZGVmaW5pdGlvbi1hbmQtT19DUkVBVC11bmRlY2xlYXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZXhwb3J0IHByZWZpeCA9ICIvb3B0L2x0cCIKLWV4cG9ydCBleGVjX3ByZWZpeCA9ICIvb3B0L2x0cCIKLQotUEFDS0FHRUNPTkZJR1tudW1hXSA9ICItLXdpdGgtbnVtYSwgLS13aXRob3V0LW51bWEsIG51bWFjdGwsIgotRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS90ZXN0Y2FzZXMvcmVhbHRpbWUvbTQiCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1wb3dlci1tYW5hZ2VtZW50LXRlc3RzdWl0ZSAtLXdpdGgtcmVhbHRpbWUtdGVzdHN1aXRlICIKLSMgbHRwIG5ldHdvcmsvcnBjIHRlc3QgY2FzZXMgZnRiZnMgd2hlbiBsaWJ0aXJwYyBpcyBmb3VuZAotRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXRpcnBjICIKLQotZG9faW5zdGFsbCgpewotICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLwotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKLQotICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCi0gICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQotICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKLSAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCi0gICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KLSAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCi0gICAgcm0gLXJmICR7RH0vb3B0L2x0cC9iaW4vU1RQZmFpbHVyZV9yZXBvcnQucGwKLQotICAgICMgQ29weSBQT1NJWCB0ZXN0IHN1aXRlIGludG8gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcyBieSBtYW51YWwKLSAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcwotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgYWNsIFwKLSAgICBhdCBcCi0gICAgYXR0ciBcCi0gICAgYmFzaCBcCi0gICAgY3BpbyBcCi0gICAgY3JvbmllIFwKLSAgICBjdXJsIFwKLSAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKLSAgICBleHBlY3QgXAotICAgIGdhd2sgXAotICAgIGd6aXAgXAotICAgIGlwcm91dGUyIFwKLSAgICBsZGQgXAotICAgIGxpYmFpbyBcCi0gICAgbG9ncm90YXRlIFwKLSAgICBwZXJsIFwKLSAgICBweXRob24tY29yZSBcCi0gICAgdW56aXAgXAotICAgIHV0aWwtbGludXggXAotICAgIHdoaWNoIFwKLSIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIvb3B0L2x0cC9saWIvbGlibWVtLmEgL29wdC9sdHAvdGVzdGNhc2VzL2RhdGEvbm0wMS9saWIuYSIKLQotRklMRVNfJHtQTn0gKz0gIi9vcHQvbHRwLyogL29wdC9sdHAvcnVudGVzdC8qIC9vcHQvbHRwL3NjZW5hcmlvX2dyb3Vwcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyovYmluLyogL29wdC9sdHAvdGVzdHNjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9mdW5jdGlvbmFsLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zdHJlc3MvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiIKLQotIyBBdm9pZCBnZW5lcmF0ZWQgYmluYXJpZXMgc3RyaXBwaW5nLiBPdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWxzCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKLUlOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgotIyBIb3dldmVyLCB0ZXN0X2FyY2hfc3RyaXBwZWQgaXMgYWxyZWFkeSBzdHJpcHBlZCwgc28uLi4KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIgotCi0jIEF2b2lkIGZpbGUgZGVwZW5kZW5jeSBzY2FucywgYXMgTFRQIGNoZWNrcyBmb3IgdGhpbmdzIHRoYXQgbWF5IG9yIG1heSBub3QKLSMgZXhpc3Qgb24gdGhlIHJ1bm5pbmcgc3lzdGVtLiAgRm9yIGluc3RhbmNlIGl0IGhhcyBzcGVjaWZpYyBjaGVja3MgZm9yCi0jIGNzaCBhbmQga3NoIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IHBhcnQgb2YgT3BlbkVtYmVkZGVkIHN5c3RlbXMgKGJ1dAotIyBjYW4gYmUgYWRkZWQgdmlhIGFkZGl0aW9uYWwgbGF5ZXJzLikKLVNLSVBfRklMRURFUFNfJHtQTn0gPSAnMScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDExOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDExOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGZiNDFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTgwMTE4LmJiCkBAIC0wLDAgKzEsMTE2IEBACitTVU1NQVJZID0gIkxpbnV4IFRlc3QgUHJvamVjdCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBqb2ludCBwcm9qZWN0IHdpdGggU0dJLCBJQk0sIE9TREwsIGFuZCBCdWxsIHdpdGggYSBnb2FsIHRvIGRlbGl2ZXIgdGVzdCBzdWl0ZXMgdG8gdGhlIG9wZW4gc291cmNlIGNvbW11bml0eSB0aGF0IHZhbGlkYXRlIHRoZSByZWxpYWJpbGl0eSwgcm9idXN0bmVzcywgYW5kIHN0YWJpbGl0eSBvZiBMaW51eC4gVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgZm9yIHRlc3RpbmcgdGhlIExpbnV4IGtlcm5lbCBhbmQgcmVsYXRlZCBmZWF0dXJlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vbHRwLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL3J1bl9mcmVlemVyLnNoO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PTg2YTYxZDJjMDQyZDU5ODM2ZmZiMzUzYTIxNDU2NDk4IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL21lbW9yeV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL2NwdV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0NPUFlJTkc7bWQ1PTQ4YjFjNWVjNjMzZTNlMzBlYzJjZjg4NGFlNjk5OTQ3IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL3JlYWx0aW1lL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKKyAgICBmaWxlOi8vdG9vbHMvcG91bmRlcjIxL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICBmaWxlOi8vdXRpbHMvYmVuY2htYXJrL2tlcm5iZW5jaC0wLjQyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICBmaWxlOi8vdXRpbHMvZmZzYi02LjAtcmMyL0NPUFlJTkc7bWQ1PWM0NjA4MjE2N2EzMTRkNzg1ZDAxMmEyNDQ3NDhkODAzIFwKKyIKKworREVQRU5EUyA9ICJhdHRyIGxpYmFpbyBsaWJjYXAgYWNsIG9wZW5zc2wgemlwLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJDPW11c2wgIgorQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorQ0ZMQUdTX2FwcGVuZF9taXBzYXJjaG42NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCitTUkNSRVYgPSAiNzMxY2QzNGU2ODJkMjk3YjIwNzY2OGJlOGIxZDE1MzIwYTlhYzFiMSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUZpeC1kZWZhdWx0LXZhbHVlLW9mLXdpdGhvdXQtbnVtYS1zd2l0Y2gtaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM1LWZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZXhwb3J0IHByZWZpeCA9ICIvb3B0L2x0cCIKK2V4cG9ydCBleGVjX3ByZWZpeCA9ICIvb3B0L2x0cCIKKworUEFDS0FHRUNPTkZJR1tudW1hXSA9ICItLXdpdGgtbnVtYSwgLS13aXRob3V0LW51bWEsIG51bWFjdGwsIgorRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS90ZXN0Y2FzZXMvcmVhbHRpbWUvbTQiCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1wb3dlci1tYW5hZ2VtZW50LXRlc3RzdWl0ZSAtLXdpdGgtcmVhbHRpbWUtdGVzdHN1aXRlICIKKyMgbHRwIG5ldHdvcmsvcnBjIHRlc3QgY2FzZXMgZnRiZnMgd2hlbiBsaWJ0aXJwYyBpcyBmb3VuZAorRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXRpcnBjICIKKworZG9faW5zdGFsbCgpeworICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKKworICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCisgICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQorICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKKyAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCisgICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KKyAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCisgICAgcm0gLXJmICR7RH0vb3B0L2x0cC9iaW4vU1RQZmFpbHVyZV9yZXBvcnQucGwKKworICAgICMgQ29weSBQT1NJWCB0ZXN0IHN1aXRlIGludG8gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcyBieSBtYW51YWwKKyAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcworfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgYWNsIFwKKyAgICBhdCBcCisgICAgYXR0ciBcCisgICAgYmFzaCBcCisgICAgY3BpbyBcCisgICAgY3JvbmllIFwKKyAgICBjdXJsIFwKKyAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKKyAgICBleHBlY3QgXAorICAgIGdhd2sgXAorICAgIGd6aXAgXAorICAgIGlwcm91dGUyIFwKKyAgICBsZGQgXAorICAgIGxpYmFpbyBcCisgICAgbG9ncm90YXRlIFwKKyAgICBwZXJsIFwKKyAgICBweXRob24tY29yZSBcCisgICAgcHJvY3BzIFwKKyAgICB1bnppcCBcCisgICAgdXRpbC1saW51eCBcCisgICAgd2hpY2ggXAorICAgIHRhciBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIvb3B0L2x0cC8qIC9vcHQvbHRwL3J1bnRlc3QvKiAvb3B0L2x0cC9zY2VuYXJpb19ncm91cHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qL2Jpbi8qIC9vcHQvbHRwL3Rlc3RzY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0RvY3VtZW50YXRpb24vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvZnVuY3Rpb25hbC8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9pbmNsdWRlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3NjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc3RyZXNzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3Rvb2xzLyogL29wdC9sdHAvdGVzdGNhc2VzL2RhdGEvbm0wMS9saWIuYSAvb3B0L2x0cC9saWIvbGlibWVtLmEiCisKKyMgQXZvaWQgc3RyaXBwaW5nIHNvbWUgZ2VuZXJhdGVkIGJpbmFyaWVzIG90aGVyd2lzZSBzb21lIG9mIHRoZSBsdHAgdGVzdHMgc3VjaCBhcyBsZGQwMSAmIG5tMDEgZmFpbAorSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTID0gIi9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vbm0wMSAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL2xkZDAxIgorSU5TQU5FX1NLSVBfJHtQTn0gKz0gImFscmVhZHktc3RyaXBwZWQgc3RhdGljZGV2IgorCisjIEF2b2lkIGZpbGUgZGVwZW5kZW5jeSBzY2FucywgYXMgTFRQIGNoZWNrcyBmb3IgdGhpbmdzIHRoYXQgbWF5IG9yIG1heSBub3QKKyMgZXhpc3Qgb24gdGhlIHJ1bm5pbmcgc3lzdGVtLiAgRm9yIGluc3RhbmNlIGl0IGhhcyBzcGVjaWZpYyBjaGVja3MgZm9yCisjIGNzaCBhbmQga3NoIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IHBhcnQgb2YgT3BlbkVtYmVkZGVkIHN5c3RlbXMgKGJ1dAorIyBjYW4gYmUgYWRkZWQgdmlhIGFkZGl0aW9uYWwgbGF5ZXJzLikKK1NLSVBfRklMRURFUFNfJHtQTn0gPSAnMScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzI4YTY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOC4xLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgorSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MTg0Mjk3OGUwNjY4NjI4NjQyMWY5NDk4ZDEwMDliNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNmFlYzY0MWNhM2Q5OTQyYjA1NGNjMGU5YzNmMDVjYjQ2YTNhOTkyYmMwMDA2Nzk1NzU1ZTJmZWQxMzU3ZjNlIgorCitERVBFTkRTID0gImxpYnBpcGVsaW5lIGdkYm0gZ3JvZmYtbmF0aXZlIgorCisjIHwgL3Vzci9zcmMvZGVidWcvbWFuLWRiLzIuOC4wLXIwL21hbi1kYi0yLjguMC9zcmMvd2hhdGlzLmM6OTM5OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfbmxfbXNnX2NhdF9jbnRyJworVVNFX05MU19saWJjLW11c2wgPSAibm8iCisKK2luaGVyaXQgZ2V0dGV4dCBwa2djb25maWcgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyAtLWRpc2FibGUtY2FjaGUtb3duZXIiCisKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKKworUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCitSUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCisKK2RlZiBjb21wcmVzc19wa2coZCk6CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMwNzdhOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggbWFuLXBhZ2VzIgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0IGRvY3VtZW50cyB0aGUgTGludXgga2VybmVsIGFuZCBDIGxpYnJhcnkgaW50ZXJmYWNlcyB0aGF0IGFyZSBlbXBsb3llZCBieSB1c2VyIHByb2dyYW1zIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9kb2NzL21hbi1wYWdlcyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PThmMmEzZDQzMDU3ZDQ1OGU1MDY2NzE0OTgwNTY3YTYwIgotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RvY3MvJHtCUE59L0FyY2hpdmUvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDA4MzAwZWQwOWQxYWQ1OTM4MDcwMTU4YjIxZGExZDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTZkYjkxYTI0ZTY4YzdjNzY1YjdiOGU2MGYxNTkxZWQxMDQ5YmMyZGMzMTQzZGI3NzllYWU0ODM4Yjg5ZDE5NSIKLQotUkRFUEVORFNfJHtQTn0gPSAibWFuIgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCi1GSUxFU18ke1BOfS1kb2MgPSAiIgotRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGJkMDkwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTQuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJMaW51eCBtYW4tcGFnZXMiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QgZG9jdW1lbnRzIHRoZSBMaW51eCBrZXJuZWwgYW5kIEMgbGlicmFyeSBpbnRlcmZhY2VzIHRoYXQgYXJlIGVtcGxveWVkIGJ5IHVzZXIgcHJvZ3JhbXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2RvY3MvbWFuLXBhZ2VzIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9Nzk0ZjcwMTYxN2NjMDNmZTUwYzUzMjU3NjYwZDhlYzQiCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZG9jcy8ke0JQTn0vQXJjaGl2ZS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MmJkMmQwNWM0ZDBkYmE1ZTdhOTBkMzljOTU1NTE5NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZWViYzZiMDlhMTFlN2Y3YmJjOThmMzk4NGZlOGI4YjJiZGU5ZDJmNWY5ZGNiZDQzNDhhOWUwZDkzNzA0MjM4IgorCitSREVQRU5EU18ke1BOfSA9ICJtYW4iCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCisjIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCitGSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFzc3dkLjVdID0gIiR7bWFuZGlyfS9tYW41L3Bhc3N3ZC41IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dldHNwbmFtLjNdID0gIiR7bWFuZGlyfS9tYW4zL2dldHNwbmFtLjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vY29uZmlndXJlX3NlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9jb25maWd1cmVfc2VkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDllNjgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9jb25maWd1cmVfc2VkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotbWFuOiByZXBsYWNlICcsJyB3aXRoICcjJwotCi1Tb21ldGltZXMsIHRoZSBwYXJhbWV0ZXJzIG9mIENDL0JVSUxEX0NDIGNvbnRhaW5zIHRoZSAnLCcsIHdoaWNoCi1jYXVzZSB0aGUgc2VkIGNvbW1hbmQgZmFpbGVkLCBzbyByZXBsYWNlIHRoZSAnLCcgd2l0aCAnIycKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPFl1ZS5UYW9Ad2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggOWY2MmNmOS4uOWE1NjVhZSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtMTMyMSw5ICsxMzIxLDkgQEAgZG8KLSAgIGVjaG8gIkNyZWF0aW5nICRpbmZpbGUgZnJvbSAkaW5maWxlLmluIgotICAgc2VkIC1lICcKLSBzLEB2ZXJzaW9uQCwkdmVyc2lvbiwKLS1zLEBDQ0AsJENDLAotK3MjQENDQCMkQ0MjCi0gcyxARVhFRVhUQCwkRVhFRVhULAotLXMsQEJVSUxEX0NDQCwkQlVJTERfQ0MsCi0rcyNAQlVJTERfQ0NAIyRCVUlMRF9DQyMKLSBzLEBJTlNUQUxMQCwkSU5TVEFMTCwKLSBzLEBERUZTQCwkREVGUywKLSBzLEBMSUJTQCwkTElCUywKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVnLW5vbnJvb3RidWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmODM0YmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVnLW5vbnJvb3RidWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotZGlmZiAtdSAtciBtYW4tMS41Zy5vbGQvY29uZmlndXJlIG1hbi0xLjVnL2NvbmZpZ3VyZQotLS0tIG1hbi0xLjVnLm9sZC9jb25maWd1cmUJV2VkIEFwciAgNyAwNDoxNjowNSAxOTk5Ci0rKysgbWFuLTEuNWcvY29uZmlndXJlCU1vbiBNYXkgMTUgMTU6MjI6NDQgMjAwMAotQEAgLTc5MSw3ICs3OTEsNyBAQAotICAgICByZWFkIG1vZGUKLSAgICAgaWYgdGVzdCAiJG1vZGUiICE9ICIiOyB0aGVuIG1hbl9tb2RlPSRtb2RlOyBmaQotICAgZmkKLS0gIG1hbl9pbnN0YWxsX2ZsYWdzPSItbSAkbWFuX21vZGUgLW8gJG1hbl91c2VyIC1nICRtYW5fZ3JvdXAiCi0rICBtYW5faW5zdGFsbF9mbGFncz0iIgotIGZpCi0gCi0gIyBXaGF0IHNlY3Rpb25zIGRvIHdlIGFudGljaXBhdGU/CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aDEtZ2VuY2F0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDRiMTRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aDEtZ2VuY2F0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gZ2VuY2F0L2dlbmxpYi5jCTIwMDYtMDgtMDIgMjA6MTE6NDQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2VuY2F0L2dlbmxpYi5jLm9kZW4JMjAwOC0xMi0yMSAxOToxODo1MC4wMDAwMDAwMDAgKzAxMDAKLUBAIC00Nyw2ICs0Nyw3IEBAIHVwLXRvLWRhdGUuICBNYW55IHRoYW5rcy4KLSAwMS8xNC85MSAgIDQgbmF6Z3VsCU9mZiBieSBvbmUgb24gbnVtYmVyIHNwZWNpZmllZCBlbnRyaWVzCi0gKi8KLSAKLSsjdW5kZWYgX0dOVV9TT1VSQ0UKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2lmZGVmIFNZU1YKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aDEtbWFrZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aDEtbWFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYzMWViMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41Zy9tYW4vTWFrZWZpbGUuaW4ubWlrZQlGcmkgQXByICA5IDEzOjM1OjU0IDE5OTkKLSsrKyBtYW4tMS41Zy9tYW4vTWFrZWZpbGUuaW4JRnJpIEFwciAgOSAxMzozNjo0NSAxOTk5Ci1AQCAtMSw4ICsxLDggQEAKLSAjIG9ubHkgZXhlY3V0ZWQgZnJvbSBhIHN1YmRpcgotIE1BTjEgPSBtYW4gd2hhdGlzIGFwcm9wb3MKLS1NQU41ID0gbWFuLmNvbmYKLStNQU41ID0gbWFuLmNvbmZpZwotIE1BTjggPSBtYWtld2hhdGlzCi0tQUxMID0gbWFuLjEgd2hhdGlzLjEgYXByb3Bvcy4xIG1hbi5jb25mLjUKLStBTEwgPSBtYW4uMSB3aGF0aXMuMSBhcHJvcG9zLjEgbWFuLmNvbmZpZy41Ci0gTUFZQkU4ID0gbWFrZXdoYXRpcwotIAotIC5TVUZGSVhFUzogLm1hbiAuMSAuNSAuOApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1pbml0aWFsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1pbml0aWFsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTU2YzA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItaW5pdGlhbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVpMi9zcmMvbWFrZXdoYXRpcy5zaC5pbml0aWFsCVR1ZSBKdWwgIDMgMTU6Mzg6MzkgMjAwMQotKysrIG1hbi0xLjVpMi9zcmMvbWFrZXdoYXRpcy5zaAlUdWUgSnVsICAzIDE1OjM5OjM5IDIwMDEKLUBAIC04MSw4ICs4MSwxMCBAQAotIAljb250aW51ZTs7Ci0gICAgIC1zKSBzZXRzZWN0aW9ucz0xCi0gCWNvbnRpbnVlOzsKLS0gICAgLXUpIGZpbmRhcmc9Ii1uZXdlciAvdmFyL2NhY2hlL21hbi93aGF0aXMiCi0tCXVwZGF0ZT0xCi0rICAgIC11KSBpZiBbIC1lIC92YXIvY2FjaGUvbWFuL3doYXRpcyBdOyB0aGVuCi0rCSAgZmluZGFyZz0iLW5ld2VyIC92YXIvY2FjaGUvbWFuL3doYXRpcyIKLSsJICB1cGRhdGU9MQotKwlmaQotIAljb250aW51ZTs7Ci0gICAgIC12KSB2ZXJib3NlPTEKLSAJY29udGludWU7OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1uZXdsaW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1uZXdsaW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTFkZjVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItbmV3bGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIHNyYy9tYW4uYwkyMDA4LTEyLTIxIDE5OjE3OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIHNyYy9tYW4uYy5vZGVuCTIwMDgtMTItMjEgMTk6MTc6MzguMDAwMDAwMDAwICswMTAwCi1AQCAtMzkxLDcgKzM5MSw3IEBAIGFnYWluOgotIAkgIGJlZysrOwotIAotICAgICAgZW5kID0gYmVnOwotLSAgICAgd2hpbGUgKCplbmQgIT0gJyAnICYmICplbmQgIT0gJ1x0JyAmJiAqZW5kICE9ICdcbicgJiYgKmVuZCAhPSAnXDAnKQotKyAgICAgd2hpbGUgKCplbmQgIT0gJyAnICYmICplbmQgIT0gJ1x0JyAmJiAqZW5kICE9ICdcbicgJiYgKmVuZCAhPSAnXDAnICYmIChlbmQtYnVmKTxCVUZTSVpFKQotIAkgIGVuZCsrOwkJLyogbm90ZSB0aGF0IGJ1ZiBpcyBOVUwtdGVybWluYXRlZCAqLwotICAgICAgKmVuZCA9ICdcMCc7Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLW92ZXJmbG93LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJkMjg4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLW92ZXJmbG93LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWkyL3NyYy9tYW4uYy5vdmVyZmxvdwlNb24gSnVuIDI1IDAwOjAxOjQ1IDIwMDEKLSsrKyBtYW4tMS41aTIvc3JjL21hbi5jCU1vbiBKdW4gMjUgMDA6MDE6NDUgMjAwMQotQEAgLTM4MSw2ICszODEsOSBAQAotIAkgIHN0cmNhdChuYW1lLCAiLyIpOwotIAkgIHN0cmNhdChuYW1lLCBiZWcpOwotICAgICAgfQotKyAgICAgLyogSWYgdGhpcyBpcyB0b28gbG9uZywgYmFkIHRoaW5ncyBoYXZlIGFscmVhZHkgaGFwcGVuZWQuICoKLSsgICAgICAqIHdlIHNob3VsZCBxdWl0IElNTUVESUFURUxZLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKyAgICAgaWYoc3RybGVuKG5hbWUpPnNpemVvZih1bHRuYW1lKSkgX2V4aXQoMSk7Ci0gCi0gICAgICBnb3RvIGFnYWluOwotIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1pMThuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLWkxOG4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZTA5YzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLWkxOG4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41ai9tc2dzL2luc3Quc2guaTE4bglXZWQgQXByIDI1IDEwOjQwOjUwIDIwMDEKLSsrKyBtYW4tMS41ai9tc2dzL2luc3Quc2gJV2VkIEFwciAyNSAxMDo0MToxNyAyMDAxCi1AQCAtMjcsOCArMjcsNyBAQAotIGZvciBqIGluICRNOyBkbwotICAgaWYgWyAtZiAkaiBdOyB0aGVuCi0gICAgIGk9YGVjaG8gJGogfCBzZWQgLWUgJ3MvbWVzcy4vLzsgcy8uY2F0Ly8nYAotLSAgICBkZXN0PWBlY2hvICRsb2NkaXIgfCBzZWQgLWUgInMvJU4vbWFuLzsgcy8lTC8kaS8iYAotLSAgICBkZXN0PSR7UFJFRklYfSRkZXN0Ci0rICAgIGRlc3Q9JHtQUkVGSVh9L2BlY2hvICRsb2NkaXIgfCBzZWQgLWUgInMvJU4vbWFuLzsgcy8lTC8kaS8iYAotICAgICBlY2hvICJta2RpciAtcCBgZGlybmFtZSAkZGVzdGAiCi0gICAgIG1rZGlyIC1wIGBkaXJuYW1lICRkZXN0YDsKLSAgICAgZWNobyAiaW5zdGFsbCAtYyAtbSA2NDQgJGogJGRlc3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1ub2NhY2hlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTFkZGRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1ub2NhY2hlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWovc3JjL21hbi5jb25mLmluLm5vY2FjaGUJVGh1IE5vdiAyMiAxNTowNzoxMiAyMDAxCi0rKysgbWFuLTEuNWovc3JjL21hbi5jb25mLmluCVRodSBOb3YgMjIgMTU6MDc6MTIgMjAwMQotQEAgLTgxLDYgKzgxLDkgQEAKLSAjIAotICNOT0NBQ0hFCi0gIwotKyMgTk9DQUNIRSBrZWVwcyBtYW4gZnJvbSBjcmVhdGluZyBjYWNoZSBwYWdlcwotK05PQ0FDSEUKLSsjCi0gIyBVc2VmdWwgcGF0aHMgLSBub3RlIHRoYXQgQ09MIHNob3VsZCBub3QgYmUgZGVmaW5lZCB3aGVuCi0gIyBOUk9GRiBpcyBkZWZpbmVkIGFzICJncm9mZiAtVGFzY2lpIiBvciAiZ3JvZmYgLVRsYXRpbjEiOwotICMgbm90IG9ubHkgaXMgaXQgc3VwZXJmbHVvdXMsIGJ1dCBpdCBhY3R1YWxseSBkYW1hZ2VzIHRoZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotdXRmOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai11dGY4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2QzZTRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai11dGY4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWovY29uZmlndXJlLnV0ZjgJVGh1IE5vdiAyMiAxNTowMjozNSAyMDAxCi0rKysgbWFuLTEuNWovY29uZmlndXJlCVRodSBOb3YgMjIgMTU6MDM6MTUgMjAwMQotQEAgLTQwOCw5ICs0MDgsOSBAQAotICAgRmdhd2s9L2Jpbi9nYXdrCi0gICBGYXdrPS9iaW4vZ2F3awotICAgRm1hd2s9bWlzc2luZwotLSAgdHJvZmY9IiIKLS0gIG5yb2ZmPSIiCi0tICBqbnJvZmY9IiIKLSsgIHRyb2ZmPS91c3IvYmluL3Ryb2ZmCi0rICBucm9mZj0vdXNyL2Jpbi9ucm9mZgotKyAgam5yb2ZmPS91c3IvYmluL25yb2ZmCi0gICBlcW49IiIKLSAgIG5lcW49IiIKLSAgIGpuZXFuPSIiCi1AQCAtNDUzLDYgKzQ1Myw4IEBACi0gICAgIGRvbmUKLSAgIGRvbmUKLSAgIEZncm9mZj0vdXNyL2Jpbi9ncm9mZgotKyAgRm5yb2ZmPS91c3IvYmluL25yb2ZmCi0rICBGam5yb2ZmPS91c3IvYmluL25yb2ZmCi0gICBGZ2Vxbj0vdXNyL2Jpbi9nZXFuCi0gICBGZ3RibD0vdXNyL2Jpbi9ndGJsCi0gICBGY29sPS91c3IvYmluL2NvbAotQEAgLTQ4NSwyNSArNDg3LDI1IEBACi0gICB0aGVuCi0gICAgIGlmIHRlc3QgJEZucm9mZiA9ICJtaXNzaW5nIgotICAgICB0aGVuCi0tICAgICAgbnJvZmY9Im5yb2ZmIC1UbGF0aW4xIC1tYW5kb2MiCi0rICAgICAgbnJvZmY9Im5yb2ZmIC1UdXRmOCAtbWFuZG9jIgotICAgICBlbHNlCi0tICAgICAgbnJvZmY9IiRGbnJvZmYgLVRsYXRpbjEgLW1hbmRvYyIKLSsgICAgICBucm9mZj0iJEZucm9mZiAtVHV0ZjggLW1hbmRvYyIKLSAgICAgZmkKLSAgICAgdHJvZmY9InRyb2ZmIC1tYW5kb2MiCi0gICAgIGVjaG8gIldhcm5pbmc6IGNvdWxkIG5vdCBmaW5kIGdyb2ZmIgotICAgZWxzZQotICAgICBpZiB0ZXN0ICRGbnJvZmYgPSAibWlzc2luZyIKLSAgICAgdGhlbgotLSAgICAgIG5yb2ZmPSIkRmdyb2ZmIC1UbGF0aW4xIC1tYW5kb2MiCi0rICAgICAgbnJvZmY9IiRGZ3JvZmYgLVR1dGY4IC1tYW5kb2MiCi0gICAgIGVsc2UKLS0gICAgICBucm9mZj0iJEZucm9mZiAtVGxhdGluMSAtbWFuZG9jIgotKyAgICAgIG5yb2ZmPSIkRm5yb2ZmIC1UdXRmOCAtbWFuZG9jIgotICAgICBmaQotICAgICB0cm9mZj0iJEZncm9mZiAtVHBzIC1tYW5kb2MiCi0tICAgIGpucm9mZj0iJEZncm9mZiAtVG5pcHBvbiAtbWFuZG9jaiIKLSsgICAgam5yb2ZmPSIkRmpucm9mZiAtVHV0ZjggLW1hbmRvY2oiCi0gICBmaQotICAgZXFuPSIkRmdlcW4gLVRwcyIKLS0gIG5lcW49IiRGZ2VxbiAtVGxhdGluMSIKLS0gIGpuZXFuPSIkRmdlcW4gLVRuaXBwb24iCi0rICBuZXFuPSIkRmdlcW4gLVR1dGY4IgotKyAgam5lcW49IiRGZ2VxbiAtVHV0ZjgiCi0gICB0Ymw9IiRGZ3RibCIKLSAgIGNvbD0iJEZjb2wiCi0gICB2Z3JpbmQ9IiRGdmdyaW5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLWNvbmZwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLWNvbmZwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTc0NmMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1jb25mcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIGNvbmZpZ3VyZQkyMDA2LTA1LTAxIDE5OjU2OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGNvbmZpZ3VyZS5vZGVuCTIwMDgtMTItMjEgMTk6MTY6NTAuMDAwMDAwMDAwICswMTAwCi1AQCAtMTk4LDcgKzE5OCw3IEBACi0gICAgIGNvbmZkaXI9IiR7Y29uZnByZWZpeH0vc2hhcmUvbWlzYyIKLSAgIGZpCi0gZmkKLS1jb25mZmlsZW5hbWU9Im1hbi5jb25mIgotK2NvbmZmaWxlbmFtZT0ibWFuLmNvbmZpZyIKLSAKLSBpZiB0ZXN0ICIkUkFORE9NIiA9ICIkUkFORE9NIjsgdGhlbgotICAgIyBQbGFpbiBvbGQgQm91cm5lIHNoZWxsLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLW5vbmFzY2lpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLW5vbmFzY2lpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjYyZDliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1ub25hc2NpaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIC4vc3JjL2Fwcm9wb3Muc2gubm9uYXNjaWkJMjAwMS0xMS0yMyAwMDozMDo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL3NyYy9hcHJvcG9zLnNoCTIwMDItMDgtMTMgMTU6NDQ6NTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMTgsOSArMTgsOSBAQAotIAotICMgV2hlbiBtYW4gcGFnZXMgaW4geW91ciBmYXZvcml0ZSBsb2NhbGUgbG9vayB0byBncmVwIGxpa2UgYmluYXJ5IGZpbGVzCi0gIyAoYW5kIHlvdSB1c2UgR05VIGdyZXApIHlvdSBtYXkgd2FudCB0byBhZGQgdGhlICdhJyBvcHRpb24gdG8gKmdyZXBvcHQxLgotLWFwcm9wb3NncmVwb3B0MT0naScKLSthcHJvcG9zZ3JlcG9wdDE9J2lhJwotIGFwcm9wb3NncmVwb3B0Mj0nJwotLXdoYXRpc2dyZXBvcHQxPSdpdycKLSt3aGF0aXNncmVwb3B0MT0naXdhJwotIHdoYXRpc2dyZXBvcHQyPSdeJwotIGdyZXBvcHQxPSQlYXByb3Bvc19vcl93aGF0aXMlZ3JlcG9wdDEKLSBncmVwb3B0Mj0kJWFwcm9wb3Nfb3Jfd2hhdGlzJWdyZXBvcHQyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstc29maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstc29maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYjkyNTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWovc3JjL21hbi5jLnNvZml4CVRodSBOb3YgMjIgMTQ6NTE6NDQgMjAwMQotKysrIG1hbi0xLjVqL3NyYy9tYW4uYwlUaHUgTm92IDIyIDE0OjUyOjQ0IDIwMDEKLUBAIC0zMDAsNyArMzAwLDcgQEAKLSAKLSAgICAgIGlmIChzdHJsZW4obmFtZTApID49IHNpemVvZih1bHRuYW1lKSkKLSAJICAgICByZXR1cm4gbmFtZTA7Ci0tICAgICBzdHJjcHkodWx0bmFtZSwgbmFtZTApOwotKyAgICAgc3RybmNweSh1bHRuYW1lLCBuYW1lMCwgQlVGU0laRS0zMik7Ci0gICAgICBuYW1lID0gdWx0bmFtZTsKLSAKLSBhZ2FpbjoKLUBAIC0zMzIsNyArMzMyLDcgQEAKLSAJICAgKiAuc28gZmlsZXMgLSB3ZSBjb3VsZCBnbG9iIGZvciBhbGwgcG9zc2libGUgZXh0ZW5zaW9ucywKLSAJICAgKiBmb3Igbm93OiBvbmx5IHRyeSAuZ3oKLSAJICAgKi8KLS0JICBlbHNlIGlmIChmcCA9PSBOVUxMICYmIGdldF9leHBhbmRlcigiLmd6IikgJiYKLSsJICBpZiAoZnAgPT0gTlVMTCAmJiBnZXRfZXhwYW5kZXIoIi5neiIpICYmCi0gCQkgICBzdHJsZW4obmFtZSkrc3RybGVuKCIuZ3oiKSA8IEJVRlNJWkUpIHsKLSAJICAgICAgIHN0cmNhdChuYW1lLCAiLmd6Iik7Ci0gCSAgICAgICBmcCA9IGZvcGVuIChuYW1lLCAiciIpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1idWcxMTYyMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVnMTE2MjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MTI5OTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1idWcxMTYyMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIC4vY29uZmlndXJlLmFkCTIwMDMtMTItMTEgMTk6MTc6MTAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9jb25maWd1cmUJMjAwMy0xMi0xMSAxOToxNzoyNy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yNiw3ICsyNiw3IEBACi0gIyAoSW5kZWVkLCAtciBtYXkgY2F1c2UgdGhlIHRlcm1pbmFsIHRvIGdldCBpbnRvIGZ1bm55IHN0YXRlcy4KLSAjIFZlcnkgaW5jb252ZW5pZW50LiBGb3Igdmlld2luZyBwYWdlcyBpbiBzdHJhbmdlIGxvY2FsZXMsIHNldCBMQ18qLikKLSAjCi0tREVGQVVMVExFU1NPUFQ9Ii1pcyIKLStERUZBVUxUTEVTU09QVD0iLWlzciIKLSAjCi0gIyBOb3RlIHRoYXQgbm90IGNyZWF0aW5nIGFueSBjYXQgZGlyZWN0b3JpZXMgKC92YXIvY2FjaGUvbWFuIG9yIHNvKQotICMgYW5kIG5vdCBtYWtpbmcgbWFuIHN1aWQgb3Igc2dpZCBpcyByZWNvbW1lbmRlZC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1idWlsZHJvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjOTdmNTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1idWlsZHJvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSAuL2NvbmZpZ3VyZS5sZXNzCTIwMDMtMTItMTEgMTk6MTg6MTUuMDAwMDAwMDAwICswMTAwCi0rKysgLi9jb25maWd1cmUJMjAwMy0xMi0xMSAxOToyMDowMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC00MDEsMTggKzQwMSwxMyBAQAotIAotIGlmIHRlc3QgIiRhbnMiID0gImZhbHNlIgotIHRoZW4KLS0gIGZvciBpIGluIG1vcmUgbGVzcyBjbXAgY2F0IGF3ayBnYXdrIG1hd2sKLS0gIGRvCi0tICAgIGV2YWwgRiRpPSJtaXNzaW5nIgotLSAgICBmb3IgaiBpbiAkREVGUEFUSAotLSAgICBkbwotLSAgICAgIGlmIHRlc3QgLWYgJGovJGkKLS0gICAgICB0aGVuCi0tCWV2YWwgRiRpPSRqLyRpCi0tCWJyZWFrCi0tICAgICAgZmkKLS0gICAgZG9uZQotLSAgZG9uZQotKyAgRm1vcmU9L2Jpbi9tb3JlCi0rICBGbGVzcz0vdXNyL2Jpbi9sZXNzCi0rICBGY21wPS91c3IvYmluL2NtcAotKyAgRmNhdD0vYmluL2NhdAotKyAgRmdhd2s9L2Jpbi9nYXdrCi0rICBGYXdrPS9iaW4vZ2F3awotKyAgRm1hd2s9bWlzc2luZwotICAgdHJvZmY9IiIKLSAgIG5yb2ZmPSIiCi0gICBqbnJvZmY9IiIKLUBAIC00NTcsNiArNDUyLDE5IEBACi0gICAgICAgZmkKLSAgICAgZG9uZQotICAgZG9uZQotKyAgRmdyb2ZmPS91c3IvYmluL2dyb2ZmCi0rICBGZ2Vxbj0vdXNyL2Jpbi9nZXFuCi0rICBGZ3RibD0vdXNyL2Jpbi9ndGJsCi0rICBGY29sPS91c3IvYmluL2NvbAotKyAgRmdyZWZlcj0vdXNyL2Jpbi9ncmVmZXIKLSsgIEZncGljPS91c3IvYmluL2dwaWMKLSsgIEZtb3JlPS9iaW4vbW9yZQotKyAgRmxlc3M9L3Vzci9iaW4vbGVzcwotKyAgRmNtcD0vdXNyL2Jpbi9jbXAKLSsgIEZjYXQ9L2Jpbi9jYXQKLSsgIEZnYXdrPS9iaW4vZ2F3awotKwotKwotICAgZm9yIGkgaW4gZXFuIHRibCByZWZlciBwaWMKLSAgIGRvCi0gICAgIGlmIHRlc3QgYGV2YWwgZWNobyBcXCRGZyRpYCA9ICJtaXNzaW5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLW5vLWNvbG9yLWZvci1wcmludGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1ZmYxZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLW5vLWNvbG9yLWZvci1wcmludGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVtMi9jb25maWd1cmUuY29sb3IJMjAwNi0wOS0xNiAxODoyNzozNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBtYW4tMS41bTIvY29uZmlndXJlCTIwMDYtMDktMTYgMTg6Mjg6NDQuMDAwMDAwMDAwICswMjAwCi1AQCAtNTM5LDYgKzUzOSw4IEBACi0gICAgIHRyb2ZmPSIkdHJvZmYgLWMiCi0gICAgIG5yb2ZmPSIkbnJvZmYgLWMiCi0gICAgIGpucm9mZj0iJGpucm9mZiAtYyIKLStlbHNlCi0rICAgIHRyb2ZmPSIkdHJvZmYgLWMiCi0gZmkKLSAKLSBpZiBbIHgkZGVmYXVsdCA9IHggXTsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1zaWdwaXBlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1zaWdwaXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWY3OGVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItc2lncGlwZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVtMi9zcmMvdXRpbC5jX3NpZ3BpcGUJMjAwNi0xMi0wOSAxMzo0MzoyMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBtYW4tMS41bTIvc3JjL3V0aWwuYwkyMDA2LTEyLTA5IDEzOjUzOjEzLjAwMDAwMDAwMCArMDEwMAotQEAgLTExNiwxMSArMTE2LDE0IEBACi0gc3RhdGljIGludAotIHN5c3RlbTEgKGNvbnN0IGNoYXIgKmNvbW1hbmQpIHsKLSAJdm9pZCAoKnByZXZfaGFuZGxlcikoaW50KSA9IHNpZ25hbCAoU0lHSU5ULGNhdGNoX2ludCk7Ci0rCXNpZ25hbCAoU0lHUElQRSxTSUdfSUdOKTsKLSAJaW50IHJldCA9IHN5c3RlbShjb21tYW5kKTsKLSAKLSAJLyogY2hpbGQgdGVybWluYXRlZCB3aXRoIHNpZ25hbD8gKi8KLSAJaWYgKFdJRlNJR05BTEVEKHJldCkgJiYKLS0JICAgIChXVEVSTVNJRyhyZXQpID09IFNJR0lOVCB8fCBXVEVSTVNJRyhyZXQpID09IFNJR1FVSVQpKQotKwkgICAgKFdURVJNU0lHKHJldCkgPT0gU0lHSU5UIHx8Ci0rCQkgV1RFUk1TSUcocmV0KSA9PSBTSUdQSVBFIHx8Ci0rCQkgV1RFUk1TSUcocmV0KSA9PSBTSUdRVUlUKSkKLSAJCWV4aXQoMSk7Ci0gCi0gCS8qIG9yIHdlIGNhdWdodCBhbiBpbnRlcnJ1cHQ/ICovCi1AQCAtMTI4LDYgKzEzMSw3IEBACi0gCQlleGl0KDEpOwotIAotIAlzaWduYWwoU0lHSU5ULHByZXZfaGFuZGxlcik7Ci0rCXNpZ25hbChTSUdQSVBFLFNJR19ERkwpOwotIAlyZXR1cm4gcmV0OwotIH0KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1pMThuX3doYXRpcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1pMThuX3doYXRpcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMyMTMyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi1kaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvc3JjL2Fwcm9wb3Muc2ggbWFuLTEuNmUvc3JjL2Fwcm9wb3Muc2gKLS0tLSBtYW4tMS42ZS5vcmlnL3NyYy9hcHJvcG9zLnNoCTIwMDctMDUtMTggMTM6NDk6MzEuMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvc3JjL2Fwcm9wb3Muc2gJMjAwNy0wNS0xOCAxNDoyNDozMy4wMDAwMDAwMDAgLTAzMDAKLUBAIC02MCwxNiArNjAsNTYgQEAKLSAgICAgZXNhYwotIGRvbmUKLSAKLSsjIGxpc3Qgb2YgbGFuZ3VhZ2VzIHRvIGxvb2sgZm9yCi0rTEFOR19MSVNUPWBlY2hvICRMQU5HVUFHRTokTENfQUxMOiRMQ19NRVNTQUdFUzokTEFORyB8IHRyICc6JyAnICdgCi0rRElSX0xJU1Q9IiIKLStmb3IgZCBpbiAvdmFyL2NhY2hlL21hbiAkbWFucGF0aCAvdXNyL2xpYgotK2RvCi0rICAgIGZvciBsIGluICRMQU5HX0xJU1QKLSsgICAgZG8KLSsgICAgICAgIGlmIFsgLWQgJGQvJGwgXQotKyAgICAgICAgdGhlbgotKyAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcGF0aCBpcyBub3QgYWxyZWFkeSBpbiB0aGUgbGlzdAotKyAgICAgICAgICAgIGlmICEgZWNobyAiJERJUl9MSVNUIiB8IGdyZXAgIiAkZC8kbFxiIiA+IC9kZXYvbnVsbAotKyAgICAgICAgICAgIHRoZW4KLSsgICAgICAgICAgICAgICAgRElSX0xJU1Q9IiRESVJfTElTVCAkZC8kbCIKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgZG9uZQotKyAgICBESVJfTElTVD0iJERJUl9MSVNUICRkIgotKyAgICAjIGNoZWNrIHRoYXQgdGhlIHBhdGggaXMgbm90IGFscmVhZHkgaW4gdGhlIGxpc3QKLSsgICAgaWYgISBlY2hvICIkRElSX0xJU1QiIHwgZ3JlcCAiICRkXGIiID4gL2Rldi9udWxsCi0rICAgIHRoZW4KLSsgICAgICAgIERJUl9MSVNUPSIkRElSX0xJU1QgJGQvJGwiCi0rICAgIGZpCi0rZG9uZQotKwotIHdoaWxlIFsgIiQxIiAhPSAiIiBdCi0gZG8KLSAgICAgZm91bmQ9MAotLSAgICBmb3IgZCBpbiAvdmFyL2NhY2hlL21hbiAkbWFucGF0aCAvdXNyL2xpYgotKyAgICAjIGluIG9yZGVyIG5vdCB0byBkaXNwbGF5IGxpbmVzIGluIG1vcmUgdGhhbiBvbmUgbGFuZ3VhZ2UgZm9yCi0rICAgICMgYSBzYW1lIG1hbiBwYWdlOyB3ZSBjaGVjayB0aGF0IGEgZ2l2ZW4gbWFuIHBhZ2UgbmFtZQotKyAgICAjIGhhc24ndCBhbHJlYWR5IGJlZW4gZGlzcGxheWVkCi0rICAgIEJBWj0iIgotKyAgICBmb3IgZCBpbiAkRElSX0xJU1QKLSAgICAgZG8KLSAgICAgICAgIGlmIFsgLWYgJGQvd2hhdGlzIF0KLSAgICAgICAgIHRoZW4KLS0gICAgICAgICAgICBpZiBncmVwIC0iJGdyZXBvcHQxIiAiJGdyZXBvcHQyIiIkMSIgJGQvd2hhdGlzCi0rICAgICAgICAgICAgaWYgRk9PPWBncmVwIC0iJGdyZXBvcHQxIiAiJGdyZXBvcHQyIiIkMSIgJGQvd2hhdGlzYAotICAgICAgICAgICAgIHRoZW4KLS0gICAgICAgICAgICAgICAgZm91bmQ9MQotKyAgICAgICAgICAgICAgICAjIHRoZSBMQ19BTEw9QyBpcyBuZWVkZWQgaW4gY2FzZSB0aGUgdGV4dCBpcwotKyAgICAgICAgICAgICAgICAjIGluIGEgZGlmZmVyZW50IGVuY29kaW5nIHRoYW4gdGhlIGxvY2FsZQotKyAgICAgICAgICAgICAgICBCQVI9YGVjaG8gLWUgIiRGT08iIHwgTENfQUxMPUMgc2VkICdzLyAtIC4qJC8vJyB8IHRyICcgW10nICdfJyB8IHNvcnQgLXVgCi0rICAgICAgICAgICAgICAgIGZvciBpIGluICRCQVIKLSsgICAgICAgICAgICAgICAgZG8KLSsgICAgICAgICAgICAgICAgICAgIGlmICEgZWNobyAiJEJBWiIgfCBncmVwICIkaSIgPiAvZGV2L251bGwKLSsgICAgICAgICAgICAgICAgICAgIHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBCQVo9IiRCQVogJGkiCi0rICAgICAgICAgICAgICAgICAgICAgICAgaT0iXmBlY2hvICRpIHwgc2VkICdzOl9cKzpcXFwoXFtfIFxdXFxcfFxcXFtcXFx8XFxcXVxcXClcXFwrOmcnYCIKLSsgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIC1lICIkRk9PIiB8IGdyZXAgIiRpIgotKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kPTEKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGRvbmUKLSAjIFNvbWUgcGVvcGxlIGFyZSBzYXRpc2ZpZWQgd2l0aCBhIHNpbmdsZSBvY2N1cnJlbmNlCi0gIyBCdXQgaXQgaXMgYmV0dGVyIHRvIGdpdmUgYWxsCi0gIyAgICAgICAgICAgICAgIGJyZWFrCi1kaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gKLS0tLSBtYW4tMS42ZS5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMDctMDUtMTggMTM6NDk6MzEuMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gJMjAwNy0wNS0xOCAxMzo1MDowNy4wMDAwMDAwMDAgLTAzMDAKLUBAIC00MSwxMiArNDEsMzIgQEAKLSAKLSBwcm9ncmFtPWBiYXNlbmFtZSAkMGAKLSAKLSsjIHRoaXMgYWxsb3dzIHRvIGRlZmluZSBsYW5ndWFnZSBzcGVjaWZpYyB2YWx1ZXMgZnJvIE5BTUUsIERFU0NSSVBUSU9OCi0rIyBpZiBub3QgZGVmaW5lZCwgdXNpbmcgdGhvc2UgZGVmYXVsdCB2YWx1ZXMKLStpZiBbIC16ICIkTUFOX05BTUUiIF0KLSt0aGVuCi0rCU1BTl9OQU1FPSLQmNCc0JV8Tk9NfEpNw4lOT3xOQVZOfM6fzp3On86czpF8Tk9NQlJFfE5JTUV8SVpFTkF8TklNSXxJTUV8XAotK07DiVZ8Tk9NRXzlkI3liY187J2066aEfE5BQU18TkFaV0F8TlVNRXzQmNCc0K98TUVOT3zQndCQ0JfQktCQfOWQjeensHzlkI3nqLEiCi0rZmkKLStpZiBbIC16ICIkTUFOX0RFU0NSSVBUSU9OIiBdCi0rdGhlbgotKwlNQU5fREVTQ1JJUFRJT049ItCe0J/QmNCh0JDQndCY0JV8REVTQ1JJUENJw5N8UE9QSVN8QkVTS1JJVkVMU0V8QkVTQ0hSRUlCVU5HfFwKLSvOoM6VzqHOmc6TzqHOkc6mzpd8REVTQ1JJUENJw5NOfEtJUkpFTERVU3xBWkFMUEVOQXxLVVZBVVN8T1BJU3xMRcONUsOBU3xERVNDUklaSU9ORXxcCi0r6Kqs5piOfOyEpOuqhXxCRVNDSFJJSlZJTkd8REVTQ1JJw4fDg098REVTQ1JJRVJFfNCe0J/QmNChfOaPj+i/sCIKLStmaQotKyMgbWFrZSB0aGVtIGludG8gYXdrIHJlZ2V4cAotK01BTl9OQU1FPSJeKCR7TUFOX05BTUV9KSI7Ci0rTUFOX0RFU0NSSVBUSU9OPSJeKCR7TUFOX0RFU0NSSVBUSU9OfSkiOwotKwotICMgSW4gY2FzZSBib3RoIC91c3IvbWFuIGFuZCAvdXNyL3NoYXJlL21hbiBleGlzdCwgdGhlIGZvcm1lciBpcyBsb2NhbAotICMgYW5kIHNob3VsZCBiZSBmaXJzdC4KLSAjIEl0IGlzIGEgYnVnIHRvIGFkZCAvdmFyL2NhY2hlL21hbiB0byBERUZDQVRQQVRILgotIGRtPQotIGZvciBkIGluIC91c3Ivc2hhcmUvbWFuIC91c3IvbWFuIC91c3IvWDExUjYvbWFuIC91c3IvbG9jYWwvbWFuCi0gZG8KLSsgICAgaWYgWyAtbiAiJExBTkciIC1hIC1kICIkZC8kTEFORyIgXTsgdGhlbgotKwlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09IiRkLyRMQU5HIjsgZWxzZSBkbT0kZG06IiRkLyRMQU5HIjsgZmkKLSsgICAgZmkKLSAgICAgaWYgWyAtZCAkZCBdOyB0aGVuCi0gCWlmIFsgeCRkbSA9IHggXTsgdGhlbiBkbT0kZDsgZWxzZSBkbT0kZG06JGQ7IGZpCi0gICAgIGZpCi1AQCAtNTUsNiArNzUsOSBAQAotIGRjPQotIGZvciBkIGluIC92YXIvY2FjaGUvbWFuIC91c3Ivc2hhcmUvbWFuL3ByZWZvcm1hdCAvdXNyL21hbi9wcmVmb3JtYXQgL3Vzci9zaGFyZS9tYW4gL3Vzci9tYW4KLSBkbwotKyAgICBpZiBbIC1uICIkTEFORyIgLWEgLWQgIiRkLyRMQU5HIiBdOyB0aGVuCi0rCWlmIFsgeCRkYyA9IHggXTsgdGhlbiBkbT0iJGQvJExBTkciOyBlbHNlIGRtPSRkYzoiJGQvJExBTkciOyBmaQotKyAgICBmaQotICAgICBpZiBbIC1kICRkIF07IHRoZW4KLSAJaWYgWyB4JGRjID0geCBdOyB0aGVuIGRjPSRkOyBlbHNlIGRjPSRkYzokZDsgZmkKLSAgICAgZmkKLUBAIC0xOTQsNyArMjE3LDcgQEAKLSAJICAgIHNlY3Rpb249JGkKLSAJICAgIGN1cmRpcj0kbWFuZGlyLyR7cGFnZXN9JGkKLSAJICAgIGV4cG9ydCBzZWN0aW9uIHZlcmJvc2UgY3VyZGlyCi0tCSAgICBmaW5kICRtYW5kaXIvJHtwYWdlc30kaS8uIC1uYW1lICcqJyAkZmluZGFyZzAgJGZpbmRhcmcgLXByaW50IHwgJEFXSyAnCi0rCSAgICBmaW5kICRtYW5kaXIvJHtwYWdlc30kaS8uIC1uYW1lICcqJyAkZmluZGFyZzAgJGZpbmRhcmcgLXByaW50IHwgTENfQUxMPUMgJEFXSyAtdiBNQU5fTkFNRT0iJE1BTl9OQU1FIiAtdiBNQU5fREVTQ1JJUFRJT049IiRNQU5fREVTQ1JJUFRJT04iICcKLSAKLSAJICAgIGZ1bmN0aW9uIHJlYWRsaW5lKCkgewotIAkgICAgICBpZiAodXNlX3pjYXQgfHwgdXNlX2J6Y2F0KSB7Ci1AQCAtMjYxLDEzICsyODQsNyBAQAotIAkJZ3N1YigvLlxiLywgIiIpOwotIAkJaWYgKCgkMSB+IC9eXC5bU3NdW0hoXS8gJiYKLSAJCSAgKCQyIH4gL1tObl1bQWFdW01tXVtFZV0vIHx8Ci0tCQkgICAkMiB+IC9eSk3JTk8vIHx8ICQyIH4gL15OQVZOLyB8fCAkMiB+IC9eTlVNRS8gfHwKLS0JCSAgICQyIH4gL15CRVpFSUNITlVORy8gfHwgJDIgfiAvXk5PTUJSRS8gfHwKLS0JCSAgICQyIH4gL15OSU1JLyB8fCAkMiB+IC9eTk9NLyB8fCAkMiB+IC9eSU1FLyB8fAotLQkJICAgJDIgfiAvXk5byUVdVi8gfHwgJDIgfiAvXk5BTUEvIHx8ICQyIH4gL17MvsGwLyB8fAotLQkJICAgJDIgfiAvXsy+vs4vIHx8ICQyIH4gL17AzLinLyB8fCAkMiB+IC9eTkFaV0EvIHx8Ci0tCQkgICAkMiB+IC9e7uH69+Hu6eUvIHx8ICQyIH4gL17D+7PGLyB8fCAkMiB+IC9eple62S8gfHwKLS0JCSAgICQyIH4gL15OT01FLyB8fCAkMiB+IC9eTkFBTS8gfHwgJDIgfiAvXsjMxS8pKSB8fAotKwkJICAgJDIgfiBNQU5fTkFNRSApKSB8fAotIAkJICAocGFnZXMgPT0gImNhdCIgJiYgJDEgfiAvXk5BTUUvKSkgewotIAkJICAgIGlmICghaW5zaCkgewotIAkJICAgICAgaW5zaCA9IDE7Ci1AQCAtMjc4LDYgKzI5NSw3IEBACi0gCQkgIGlmICgkMSB+IC9eXC5bU3NdW0hoWVNdLyB8fAotIAkJICAgIChwYWdlcyA9PSAiY2F0IiAmJgotIAkJICAgICgkMSB+IC9eU1t5WWVFXS8gfHwgJDEgfiAvXkRFU0NSSVBUSU9OLyB8fAotKwkJICAgICAkMSB+IE1BTl9ERVNDUklQVElPTiB8fAotIAkJICAgICAkMSB+IC9eQ09NTUFORC8gfHwgJDEgfiAvXk9WRVJWSUVXLyB8fAotIAkJICAgICAkMSB+IC9eU1RSVUNUVVJFUy8gfHwgJDEgfiAvXklOVFJPRFVDVElPTi8gfHwKLSAJCSAgICAgJDAgfiAvXlteIF0vKSkpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW1hbmRpcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNDAwNjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW1hbmRpcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS42ZS5vcmlnL3NyYy9tYW4uY29uZi5pbgkyMDA1LTA4LTIwIDIwOjI2OjA2LjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9tYW4uY29uZi5pbgkyMDA3LTA1LTE4IDEwOjMwOjI5LjAwMDAwMDAwMCAtMDMwMAotQEAgLTM2LDExICszNiwxMiBAQAotICMKLSAjIEV2ZXJ5IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIE1BTlBBVEggaW5jbHVkZXMgdGhlc2UgZmllbGRzCi0gIwotLU1BTlBBVEgJL3Vzci9tYW4KLSBNQU5QQVRICS91c3Ivc2hhcmUvbWFuCi0rTUFOUEFUSAkvdXNyL1gxMVI2L21hbgotIE1BTlBBVEgJL3Vzci9sb2NhbC9tYW4KLSBNQU5QQVRICS91c3IvbG9jYWwvc2hhcmUvbWFuCi0tTUFOUEFUSAkvdXNyL1gxMVI2L21hbgotK01BTlBBVEgJL3Vzci9rZXJiZXJvcy9tYW4KLStNQU5QQVRICS91c3IvbWFuCi0gIwotICMgVW5jb21tZW50IGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgb25lIG9mIHRoZXNlIGJ5IGRlZmF1bHQKLSAjCi1AQCAtNjcsNiArNjgsOSBAQAotIE1BTlBBVEhfTUFQCS91c3IvWDExUjYvYmluCQkvdXNyL1gxMVI2L21hbgotIE1BTlBBVEhfTUFQCS91c3IvYmluL1gxMQkJL3Vzci9YMTFSNi9tYW4KLSBNQU5QQVRIX01BUAkvdXNyL2Jpbi9taAkJL3Vzci9zaGFyZS9tYW4KLStNQU5QQVRIX01BUAkvdXNyL2tlcmJlcm9zL2JpbgkJL3Vzci9rZXJiZXJvcy9tYW4KLStNQU5QQVRIX01BUAkvdXNyL2tlcmJlcm9zL3NiaW4JCS91c3Iva2VyYmVyb3MvbWFuCi0rCi0gIwotICMgTk9BVVRPUEFUSCBrZWVwcyBtYW4gZnJvbSBhdXRvbWF0aWNhbGx5IGFkZGluZyBkaXJlY3RvcmllcyB0aGF0IGxvb2sgbGlrZQotICMgbWFudWFsIHBhZ2UgZGlyZWN0b3JpZXMgdG8gdGhlIHBhdGguCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtbmV3X3NlY3Rpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW5ld19zZWN0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI5NzczYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtbmV3X3NlY3Rpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmUub3JpZy9jb25maWd1cmUJMjAwNi0wNS0wMSAxNDo1NjoxNC4wMDAwMDAwMDAgLTAzMDAKLSsrKyBtYW4tMS42ZS9jb25maWd1cmUJMjAwNy0wNS0xOCAxNDozNTo0My4wMDAwMDAwMDAgLTAzMDAKLUBAIC05NjAsNyArOTYwLDcgQEAKLSAKLSAjIFdoYXQgc2VjdGlvbnMgZG8gd2UgYW50aWNpcGF0ZT8KLSAKLS10bXBzZWN0aW9ucz0iMSAxcCA4IDIgMyAzcCA0IDUgNiA3IDkgMHAgdGNsIG4gbCBwIG8iCi0rdG1wc2VjdGlvbnM9IjEgMXAgOCAyIDMgM3AgM3BtIDQgNSA2IDcgOSAwcCB0Y2wgbiBsIHAgbyIKLSAKLSBpZiBbIHgkZGVmYXVsdCA9IHggXTsgdGhlbgotICAgZWNobyAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXJvX3Vzci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1yb191c3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMWNiMGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXJvX3Vzci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotSW5kZXg6IG1hbi0xLjZmL3NyYy9tYWtld2hhdGlzLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWFuLTEuNmYub3JpZy9zcmMvbWFrZXdoYXRpcy5zaAkyMDEwLTEyLTI5IDEzOjQyOjM0LjAwMDAwMDAwMCAtMDgwMAotKysrIG1hbi0xLjZmL3NyYy9tYWtld2hhdGlzLnNoCTIwMTAtMTItMjkgMTM6NDI6MzUuNjY3NDI4MzQ3IC0wODAwCi1AQCAtMTI0LDcgKzEyNCw3IEBACi0gCWNvbnRpbnVlOzsKLSAgICAgLXMpIHNldHNlY3Rpb25zPTEKLSAJY29udGludWU7OwotLSAgICAtdSkgZmluZGFyZz0iLWN0aW1lIDAiCi0rICAgIC11KSBmaW5kYXJnPSItbmV3ZXIgL3Zhci9jYWNoZS9tYW4vd2hhdGlzIgotIAl1cGRhdGU9MQotIAljb250aW51ZTs7Ci0gICAgIC12KSB2ZXJib3NlPTEKLUBAIC0xNjUsMTQgKzE2NSw3IEBACi0gIyBmaXJzdCB0cnVuY2F0ZSBhbGwgdGhlIHdoYXRpcyBmaWxlcyB0aGF0IHdpbGwgYmUgY3JlYXRlZCBuZXcsCi0gIyB0aGVuIG9ubHkgdXBkYXRlIC0gd2UgbWlnaHQgdmlzaXQgdGhlIHNhbWUgZGlyZWN0b3J5IHR3aWNlCi0gaWYgWyB4JHVwZGF0ZSA9IHggXTsgdGhlbgotLSAgIGZvciBwYWdlcyBpbiBtYW4gY2F0Ci0tICAgZG8KLS0gICAgICBldmFsIHBhdGg9IlwkJHBhZ2VzInBhdGgKLS0gICAgICBmb3IgbWFuZGlyIGluICRwYXRoCi0tICAgICAgZG8KLS0JIGNwIC9kZXYvbnVsbCAkbWFuZGlyL3doYXRpcwotLSAgICAgIGRvbmUKLS0gICBkb25lCi0rICAgY3AgL2Rldi9udWxsIC92YXIvY2FjaGUvbWFuL3doYXRpcwotIGZpCi0gCi0gZm9yIHBhZ2VzIGluIG1hbiBjYXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1zZWN1cml0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1zZWN1cml0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEyYTg4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLWRpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvbWFrZXdoYXRpcy5zaCBtYW4tMS42ZS9zcmMvbWFrZXdoYXRpcy5zaAotLS0tIG1hbi0xLjZlLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAwNi0wNy0xOSAwMTo1ODowOC4wMDAwMDAwMDAgLTAzMDAKLSsrKyBtYW4tMS42ZS9zcmMvbWFrZXdoYXRpcy5zaAkyMDA3LTA1LTE4IDEwOjE4OjMxLjAwMDAwMDAwMCAtMDMwMAotQEAgLTQ1LDcgKzQ1LDcgQEAKLSAjIGFuZCBzaG91bGQgYmUgZmlyc3QuCi0gIyBJdCBpcyBhIGJ1ZyB0byBhZGQgL3Zhci9jYWNoZS9tYW4gdG8gREVGQ0FUUEFUSC4KLSBkbT0KLS1mb3IgZCBpbiAvdXNyL21hbiAvdXNyL3NoYXJlL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgotK2ZvciBkIGluIC91c3Ivc2hhcmUvbWFuIC91c3IvbWFuIC91c3IvWDExUjYvbWFuIC91c3IvbG9jYWwvbWFuCi0gZG8KLSAgICAgaWYgWyAtZCAkZCBdOyB0aGVuCi0gCWlmIFsgeCRkbSA9IHggXTsgdGhlbiBkbT0kZDsgZWxzZSBkbT0kZG06JGQ7IGZpCi1AQCAtNTMsNyArNTMsNyBAQAotIGRvbmUKLSBERUZNQU5QQVRIPSRkbQotIGRjPQotLWZvciBkIGluIC91c3IvbWFuL3ByZWZvcm1hdCAvdXNyL21hbiAvdXNyL3NoYXJlL21hbi9wcmVmb3JtYXQgL3Vzci9zaGFyZS9tYW4KLStmb3IgZCBpbiAvdmFyL2NhY2hlL21hbiAvdXNyL3NoYXJlL21hbi9wcmVmb3JtYXQgL3Vzci9tYW4vcHJlZm9ybWF0IC91c3Ivc2hhcmUvbWFuIC91c3IvbWFuCi0gZG8KLSAgICAgaWYgWyAtZCAkZCBdOyB0aGVuCi0gCWlmIFsgeCRkYyA9IHggXTsgdGhlbiBkYz0kZDsgZWxzZSBkYz0kZGM6JGQ7IGZpCi1AQCAtNzYsMTIgKzc2LDEyIEBACi0gIyBXZSB0cnkgaGVyZSB0byBiZSBjYXJlZnVsIChhbmQgYXZvaWQgcHJlY29uc3RydWN0ZWQgc3ltbGlua3MpCi0gIyBpbiBjYXNlIG1ha2V3aGF0aXMgaXMgcnVuIGFzIHJvb3QsIGJ5IGNyZWF0aW5nIGEgc3ViZGlyZWN0b3J5IG9mIC90bXAuCi0gCi0tVE1QRklMRURJUj0vdG1wL3doYXRpcy50bXAuZGlyLiQkCi0tcm0gLXJmICRUTVBGSUxFRElSCi0taWYgISBta2RpciAtbSAwNzAwICRUTVBGSUxFRElSOyB0aGVuCi0tICAgIGVjaG8gQ291bGQgbm90IGNyZWF0ZSAkVE1QRklMRURJUgotLSAgICBleGl0IDE7Ci0rVE1QRklMRURJUj1gbWt0ZW1wIC1kIC90bXAvbWFrZXdoYXRpc1hYWFhYWGAKLStpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSsgICBlY2hvICIkMDogQ2FuJ3QgY3JlYXRlIHRlbXAgZmlsZSwgZXhpdGluZy4uLiIKLSsgICBleGl0IDEKLSBmaQotK2NobW9kIDA3MDAgJFRNUEZJTEVESVIKLSBUTVBGSUxFPSRUTVBGSUxFRElSL3cKLSAKLSAjIG1ha2Ugc3VyZSBUTVBGSUxFRElSIGlzIGRlbGV0ZWQgaWYgcHJvZ3JhbSBpcyBraWxsZWQgb3IgdGVybWluYXRlcwotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9tYW4uYyBtYW4tMS42ZS9zcmMvbWFuLmMKLS0tLSBtYW4tMS42ZS5vcmlnL3NyYy9tYW4uYwkyMDA2LTA1LTAxIDE3OjM0OjIyLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9tYW4uYwkyMDA3LTA1LTE4IDEwOjExOjMzLjAwMDAwMDAwMCAtMDMwMAotQEAgLTEyMzQsNyArMTIzNCw2IEBACi0gI2VuZGlmCi0gCi0gCi0tI2lmIDAKLSAgICAgIHsKLSAJLyogVGhlcmUgYXJlIG5vIGtub3duIGNhc2VzIG9mIGJ1ZmZlciBvdmVyZmxvdyBjYXVzZWQgYnkKLSAJICAgZXhjZXNzaXZlbHkgbG9uZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIEluIGNhc2UgeW91IGZpbmQgb25lLAotQEAgLTEyNTcsNyArMTI1Niw2IEBACi0gCSAgIE1BTl9JQ09OVl9QQVRILCBNQU5fSUNPTlZfT1BULCBNQU5fSUNPTlZfSU5QVVRfQ0hBUlNFVCwKLSAJICAgTUFOX0lDT05WX09VVFBVVF9DSEFSU0VULCBOTFNQQVRILCBQQVRIICovCi0gICAgICB9Ci0tI2VuZGlmCi0gCi0gCi0gI2lmbmRlZiBfX0ZyZWVCU0RfXyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS11c2VfaTE4bl92YXJzX2luX2Ffc3RkX3dheS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS11c2VfaTE4bl92YXJzX2luX2Ffc3RkX3dheS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY4Zjc0Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtdXNlX2kxOG5fdmFyc19pbl9hX3N0ZF93YXkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi1kaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvY2F0b3Blbi9jYXRvcGVuLmMgbWFuLTEuNmUvY2F0b3Blbi9jYXRvcGVuLmMKLS0tLSBtYW4tMS42ZS5vcmlnL2NhdG9wZW4vY2F0b3Blbi5jCTIwMDUtMDgtMjAgMjA6MjY6MDYuMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvY2F0b3Blbi9jYXRvcGVuLmMJMjAwNy0wNS0xOCAxMTozMTowNS4wMDAwMDAwMDAgLTAzMDAKLUBAIC05LDIyICs5LDYzIEBACi0gZXh0ZXJuIGNoYXIgKmluZGV4IChjb25zdCBjaGFyICosIGludCk7ICAgICAgICAgLyogbm90IGFsd2F5cyBpbiA8c3RyaW5nLmg+ICovCi0gZXh0ZXJuIGNoYXIgKm15X21hbGxvYyhpbnQpOwkvKiBpbiB1dGlsLmMgKi8KLSAKLSsvKiBpZiB0aGUgcHJvZ3JhbSBoYXMgc2dpZC9zdWlkIHByaXZpbGVnZXMgdGhlbiBnZXRlbnYgZG9lc24ndCByZXR1cm4KLSsgKiBOTFNQQVRIOyBzbyB3ZSBzZXQgaGVyZSBhIGdvb2QgZGVmYXVsdCB2YWx1ZS4KLSsgKi8KLSAjaWZuZGVmIERFRkFVTFRfTkxTUEFUSAotICMgaWYgX19HTElCQ19fID49IDIKLS0jICBkZWZpbmUgREVGQVVMVF9OTFNQQVRIICIvdXNyL3NoYXJlL2xvY2FsZS8lTC8lTiIKLSsjICBkZWZpbmUgREVGQVVMVF9OTFNQQVRIICIvdXNyL3NoYXJlL2xvY2FsZS8lTC8lTjovdXNyL3NoYXJlL2xvY2FsZS8lbF8ldC8lTjovdXNyL3NoYXJlL2xvY2FsZS8lbC8lTiIKLSAjIGVsc2UKLSAjICBkZWZpbmUgREVGQVVMVF9OTFNQQVRIICIvdXNyL2xpYi9sb2NhbGUvJU4vJUwiCi0gIyBlbmRpZgotICNlbmRpZgotIAotLXN0YXRpYyBubF9jYXRkIG15X2NhdG9wZW5wYXRoKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGgpOwotK3N0YXRpYyBubF9jYXRkIG15X2NhdG9wZW5wYXRoKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGgsIGNoYXIgKmxhbmcpOwotIAotIHN0YXRpYwkJCQkvKiB0aGlzIHNvdXJjZSBpbmNsdWRlZCBpbiBncmlwZXMuYyAqLwotIG5sX2NhdGQKLSBteV9jYXRvcGVuKGNoYXIgKm5hbWUsIGludCBvZmxhZykgewotLSAgbmxfY2F0ZCBmZDsKLSsgIG5sX2NhdGQgZmQgPSAobmxfY2F0ZCkgLTE7Ci0rCi0rICAvKiB1c2luZyBmaXJzdCB0aGUgbXlfY2F0b3BlbnBhdGgsIHdoaWNoIGxvb2tzIHdpdGggTEFOR1VBR0UKLSsgICAqIGFuZCBvbmx5IGlmIGl0IGZhaWxzIHJlc3NvcnQgdG8gY2F0b3BlbiwgaXQgZ2l2ZXMgYmV0dGVyIGkxOG4KLSsgICAqLwotKyAgewotKyAgICBjaGFyICpubHNwYXRoLCAqbGFuZywgKnM7Ci0gCi0tICBmZCA9IGNhdG9wZW4obmFtZSwgb2ZsYWcpOwotKyAgICAvKgotKyAgICAgKiAiSWYgTkxTUEFUSCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZW52aXJvbm1lbnQsIG9yIGlmIGEKLSsgICAgICogbWVzc2FnZSBjYXRhbG9nIGNhbm5vdCBiZSBvcGVuZWQgaW4gYW55IG9mIHRoZSBwYXRocyBzcGVjaWZpZWQKLSsgICAgICogYnkgTkxTUEFUSCwgdGhlbiBhbiBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGRlZmF1bHQgcGF0aCBpcyB1c2VkIgotKyAgICAgKi8KLSsgICAgbmxzcGF0aCA9IGdldGVudigiTkxTUEFUSCIpOwotKyAgICBpZiAoIW5sc3BhdGgpCi0rICAgICAgbmxzcGF0aCA9IERFRkFVTFRfTkxTUEFUSDsKLSsgCi0rICAgIGxhbmcgPSBnZXRlbnYoIkxBTkdVQUdFIik7Ci0rICAgIGlmICghbGFuZykKLSsgICAgICBsYW5nID0gZ2V0ZW52KCJMQ19BTEwiKTsKLSsgICAgaWYgKCFsYW5nKQotKyAgICAgIGxhbmcgPSBnZXRlbnYoIkxDX01FU1NBR0VTIik7Ci0rICAgIGlmICghbGFuZykKLSsgICAgICBsYW5nID0gZ2V0ZW52KCJMQU5HIik7Ci0rICAgIGlmICghbGFuZykKLSsgICAgICBsYW5nID0gIiI7Ci0rIAotKyAgICB3aGlsZSgqbGFuZyAmJiAoZmQgPT0gKG5sX2NhdGQpIC0xKSkgewotKyAgICAgIHMgPSBpbmRleChsYW5nLCAnOicpOwotKyAgICAgIGlmIChzKSAqcyA9IDA7Ci0rICAgICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIG5sc3BhdGgsIGxhbmcpOwotKyAgICAgIGlmIChzKSBsYW5nPXMrMTsKLSsgICAgICBlbHNlIGxhbmcgPSAiIjsKLSsgICAgfQotKyAgICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKQotKyAgICAgIGZkID0gbXlfY2F0b3BlbnBhdGgobmFtZSwgbmxzcGF0aCwgImVuIik7Ci0rICB9Ci0rCi0rICAvKiBzdGlsbCBub3QgZm91bmQsIHVzZSB0aGUgc3lzdGVtIGNhdG9wZW4gKi8KLSsgIGlmIChmZCA9PSAobmxfY2F0ZCkgLTEpCi0rICAgIGZkID0gY2F0b3BlbihuYW1lLCBvZmxhZyk7Ci0gCi0gICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xICYmIG9mbGFnKSB7Ci0gICAgIG9mbGFnID0gMDsKLUBAIC0zMiw4ICs3Myw2IEBACi0gICB9Ci0gCi0gICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKSB7Ci0tICAgIGNoYXIgKm5sc3BhdGg7Ci0tCi0gICAgIC8qIFRoZSBsaWJjIGNhdG9wZW4gZmFpbHMgLSBsZXQgdXMgc2VlIGlmIHdlIGNhbiBkbyBiZXR0ZXIgKi8KLSAgICAgLyogVGhlIHF1b3RlcyBiZWxvdyBhcmUgZnJvbSBYL09wZW4sIFhQRyAxOTg3LCBWb2wuIDMuICovCi0gCi1AQCAtNTgsMTcgKzk3LDYgQEAKLSAjZW5kaWYKLSAgICAgfQotIAotLSAgICAvKgotLSAgICAgKiAiSWYgTkxTUEFUSCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZW52aXJvbm1lbnQsIG9yIGlmIGEKLS0gICAgICogbWVzc2FnZSBjYXRhbG9nIGNhbm5vdCBiZSBvcGVuZWQgaW4gYW55IG9mIHRoZSBwYXRocyBzcGVjaWZpZWQKLS0gICAgICogYnkgTkxTUEFUSCwgdGhlbiBhbiBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGRlZmF1bHQgcGF0aCBpcyB1c2VkIgotLSAgICAgKi8KLS0KLS0gICAgbmxzcGF0aCA9IGdldGVudigiTkxTUEFUSCIpOwotLSAgICBpZiAobmxzcGF0aCkKLS0gICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIG5sc3BhdGgpOwotLSAgICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKQotLSAgICAgIGZkID0gbXlfY2F0b3BlbnBhdGgobmFtZSwgREVGQVVMVF9OTFNQQVRIKTsKLSAgIH0KLSAgIHJldHVybiBmZDsKLSB9Ci1AQCAtOTAsMTUgKzExOCwxMyBAQAotICAqCi0gICovCi0gc3RhdGljIG5sX2NhdGQKLS1teV9jYXRvcGVucGF0aChjaGFyICpuYW1lLCBjaGFyICpubHNwYXRoKSB7Ci0tICBpbnQgZmQ7Ci0rbXlfY2F0b3BlbnBhdGgoY2hhciAqbmFtZSwgY2hhciAqbmxzcGF0aCwgY2hhciAqbGFuZykgewotICAgbmxfY2F0ZCBjZmQgPSAobmxfY2F0ZCkgLTE7Ci0tICBjaGFyICpwYXRoMCwgKnBhdGgsICpzLCAqZmlsZSwgKmxhbmcsICpsYW5nX2wsICpsYW5nX3QsICpsYW5nX2M7Ci0rICBjaGFyICpwYXRoMCwgKnBhdGgsICpzLCAqZmlsZSwgKmxhbmdfbCwgKmxhbmdfdCwgKmxhbmdfYzsKLSAgIGludCBsYW5nc3osIG5hbWVzeiwgc3osIGxhbmdfbF9zeiwgbGFuZ190X3N6LCBsYW5nX2Nfc3o7Ci0gCi0gICBuYW1lc3ogPSBzdHJsZW4obmFtZSk7Ci0gCi0tICBsYW5nID0gZ2V0ZW52KCJMQU5HIik7Ci0gICBpZiAoIWxhbmcpCi0gICAgIGxhbmcgPSAiIjsKLSAgIGxhbmdzeiA9IHN0cmxlbihsYW5nKTsKLUBAIC0xOTQsMTQgKzIyMCw5IEBACi0gICAgICAgcGF0aCA9IHMrMTsKLSAgICAgfSBlbHNlCi0gICAgICAgcGF0aCA9IDA7Ci0tICAgIGZkID0gb3BlbihmaWxlLCBPX1JET05MWSk7Ci0tICAgIGlmIChmZCAhPSAtMSkgewotLSAgICAgIC8qIHdlIGZvdW5kIHRoZSByaWdodCBjYXRhbG9nIC0gYnV0IHdlIGRvbid0IGtub3cgdGhlCi0tCSB0eXBlIG9mIG5sX2NhdGQsIHNvIGNsb3NlIGl0IGFnYWluIGFuZCBhc2sgbGliYyAqLwotLSAgICAgIGNsb3NlKGZkKTsKLS0gICAgICBjZmQgPSBjYXRvcGVuKGZpbGUsIDApOwotLSAgICAgIGJyZWFrOwotLSAgICB9Ci0rCWNmZCA9IGNhdG9wZW4oZmlsZSwgMCk7Ci0rCWlmIChjZmQgIT0gKG5sX2NhdGQpIC0xKQotKwkJCWJyZWFrOwotICAgfQotIAotICAgZnJlZShwYXRoMCk7Ci1kaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvc3JjL21hbnBhdGguYyBtYW4tMS42ZS9zcmMvbWFucGF0aC5jCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFucGF0aC5jCTIwMDYtMDgtMDMgMTg6MTg6MzMuMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvc3JjL21hbnBhdGguYwkyMDA3LTA1LTE4IDExOjAyOjQ4LjAwMDAwMDAwMCAtMDMwMAotQEAgLTI4MiwxMyArMjgyLDE0IEBACi0gCQkvKiBXZSBjYW5ub3QgdXNlICJsYW5nID0gc2V0bG9jYWxlKExDX01FU1NBR0VTLCBOVUxMKSIgb3Igc286Ci0gCQkgICB0aGUgcmV0dXJuIHZhbHVlIG9mIHNldGxvY2FsZSBpcyBhbiBvcGFxdWUgc3RyaW5nLiAqLwotIAkJLyogUE9TSVggcHJlc2NyaWJlcyB0aGUgb3JkZXI6IExDX0FMTCwgTENfTUVTU0FHRVMsIExBTkcgKi8KLS0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQ19BTEwiKSkgIT0gTlVMTCkKLSsJICAgICAgICAvKiBMQU5HVUFHRSBpcyBHTlUvTGludXggYW5kIG92ZXJydWxlcyBhbGwgKi8KLSsJCWlmKChsYW5nID0gZ2V0ZW52KCJMQU5HVUFHRSIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLS0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQ19NRVNTQUdFUyIpKSAhPSBOVUxMKQotKwkJZWxzZSBpZigobGFuZyA9IGdldGVudigiTENfQUxMIikpICE9IE5VTEwpCi0gCQkJc3BsaXQyKGRpciwgbGFuZywgYWRkX3RvX21hbmRpcmxpc3RfeCwgcGVycnMpOwotLQkJaWYoKGxhbmcgPSBnZXRlbnYoIkxBTkciKSkgIT0gTlVMTCkKLSsJCWVsc2UgaWYoKGxhbmcgPSBnZXRlbnYoIkxDX01FU1NBR0VTIikpICE9IE5VTEwpCi0gCQkJc3BsaXQyKGRpciwgbGFuZywgYWRkX3RvX21hbmRpcmxpc3RfeCwgcGVycnMpOwotLQkJaWYoKGxhbmcgPSBnZXRlbnYoIkxBTkdVQUdFIikpICE9IE5VTEwpCi0rCQllbHNlIGlmKChsYW5nID0gZ2V0ZW52KCJMQU5HIikpICE9IE5VTEwpCi0gCQkJc3BsaXQyKGRpciwgbGFuZywgYWRkX3RvX21hbmRpcmxpc3RfeCwgcGVycnMpOwotIAkJYWRkX3RvX21hbmRpcmxpc3RfeChkaXIsIDAsIHBlcnJzKTsKLSAJfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtd2hhdGlzMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM0ZWQzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtd2hhdGlzMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotSW5kZXg6IG1hbi0xLjZmL3NyYy9tYWtld2hhdGlzLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWFuLTEuNmYub3JpZy9zcmMvbWFrZXdoYXRpcy5zaAkyMDEwLTEyLTI5IDEzOjUxOjQ1LjAwMDAwMDAwMCAtMDgwMAotKysrIG1hbi0xLjZmL3NyYy9tYWtld2hhdGlzLnNoCTIwMTAtMTItMjkgMTM6NTk6MzUuMzk5Nzk5NDEyIC0wODAwCi1AQCAtMTY0LDEwICsxNjQsMTUgQEAKLSBmaQotIGNhdHBhdGg9YGVjaG8gJHtjYXRwYXRofSB8IHRyIDogJyAnYAotIAotKyNXSEFUSVNfRElSPSRERVNURElSL3Zhci9jYWNoZS9tYW4vYGVjaG8gJGhlcmV8c2VkIC1lICdzIS4qL21hbi8hIWcnYAotK1dIQVRJU19ESVI9JERFU1RESVIvdmFyL2NhY2hlL21hbi8kTEFORwotK1tbIC1kICRXSEFUSVNfRElSIF1dIHx8IG1rZGlyIC1wICRXSEFUSVNfRElSLwotKwotICMgZmlyc3QgdHJ1bmNhdGUgYWxsIHRoZSB3aGF0aXMgZmlsZXMgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgbmV3LAotICMgdGhlbiBvbmx5IHVwZGF0ZSAtIHdlIG1pZ2h0IHZpc2l0IHRoZSBzYW1lIGRpcmVjdG9yeSB0d2ljZQotIGlmIFsgeCR1cGRhdGUgPSB4IF07IHRoZW4KLS0gICBjcCAvZGV2L251bGwgL3Zhci9jYWNoZS9tYW4vd2hhdGlzCi0rICAgbWtkaXIgLXAgJFdIQVRJU19ESVIvCi0rICAgL2Jpbi9lY2hvIC1uID4gJFdIQVRJU19ESVIvd2hhdGlzCi0gZmkKLSAKLSBmb3IgcGFnZXMgaW4gbWFuIGNhdAotQEAgLTE4MCwxMyArMTg1LDcgQEAKLSAJZWNobyAiYWJvdXQgdG8gZW50ZXIgJG1hbmRpciIgPiAvZGV2L3N0ZGVycgotICAgICAgZmkKLSAKLS0gICAgICMga2x1ZGdlIGZvciBTbGFja3dhcmUncyAvdXNyL21hbi9wcmVmb3JtYXQKLS0gICAgIGlmIFsgJG1hbmRpciA9IC91c3IvbWFuL3ByZWZvcm1hdCBdCi0tICAgICB0aGVuCi0tCW1hbmRpcjE9L3Vzci9tYW4KLS0gICAgIGVsc2UKLS0JbWFuZGlyMT0kbWFuZGlyCi0tICAgICBmaQotKyAgICAgbWFuZGlyMT0kV0hBVElTX0RJUgotIAotICAgICAgIyBpZiAkbWFuZGlyIGlzIG9uIGEgcmVhZG9ubHkgcGFydGl0aW9uLCBhbmQgdGhlIHdoYXRpcyBmaWxlCi0gICAgICAjIGlzIG5vdCBhIHN5bWxpbmssIHRoZW4gbGV0J3Mgc2tpcCB0cnlpbmcgdG8gdXBkYXRlIGl0Ci1AQCAtMjA3LDExICsyMDYsNiBAQAotIAlmaQotICAgICAgZmkKLSAKLS0gICAgIGlmIFsgLXMgJHttYW5kaXJ9L3doYXRpcyAtYSAkcGFnZXMgPSBtYW4gLWEgeCR1cGRhdGUgPSB4IF07IHRoZW4KLS0JaWYgWyB4JHZlcmJvc2UgIT0geCBdOyB0aGVuCi0tCSAgIGVjaG8gc2tpcHBpbmcgJG1hbmRpciAtIHdlIGRpZCBpdCBhbHJlYWR5ID4gL2Rldi9zdGRlcnIKLS0JZmkKLS0gICAgIGVsc2UgICAgICAKLSAgICAgICAgaGVyZT1gcHdkYAotICAgICAgICBjZCAkbWFuZGlyCi0gICAgICAgIGZvciBpIGluICRzZWN0aW9ucwotQEAgLTQ0Nyw3ICs0NDcsNiBAQAotCi0gICAgICAgIGNobW9kIDY0NCAke21hbmRpcjF9L3doYXRpcwotICAgICAgICBybSAkVE1QRklMRQotLSAgICAgZmkKLSAgICBkb25lCi0gZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbXBpbGUtd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctY29tcGlsZS13YXJuaW5ncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWQyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctY29tcGlsZS13YXJuaW5ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi1GaXggYSBidWlsZCBlcnJvciB3aGVuIGJ1aWxkaW5nIG1hbi5jb25maWcuNSAoYSByZW1uYW50IG9mIGEgbG9uZwotYWdvIHByZXZpb3VzIHBhdGNoKS4gT3B0aW1pemVkIHRoZSBtYW5wYWdlcyBNYWtlZmlsZSBmb3IgcGFyYWxsZWwKLWJ1aWxkcy4gQWxzbywgZml4IGNvbXBpbGUgd2FybmluZ3MgaW4gYSBjb3VwbGUgb3RoZXIgZmlsZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBCaWxsIFJhbmRsZSA8d2lsbGlhbS5jLnJhbmRsZUBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS42Zy9tYW4vTWFrZWZpbGUuaW4ub3JpZwkyMDE2LTAzLTI4IDE3OjMxOjA4LjcyMzk0OTE4MCAtMDcwMAotKysrIG1hbi0xLjZnL21hbi9NYWtlZmlsZS5pbgkyMDE2LTAzLTI4IDE3OjQ2OjEyLjg2NjkxMDM4NiAtMDcwMAotQEAgLTUsNiArNSwxMyBAQAotIEFMTCA9IG1hbi4xIHdoYXRpcy4xIGFwcm9wb3MuMSBtYW4uY29uZmlnLjUKLSBNQVlCRTggPSBtYWtld2hhdGlzCi0gCi0rU1VCRElSUyA6PSAkKHNoZWxsIGVjaG8gQGxhbmd1YWdlc0ApCi0rCi0rLlBIT05ZOiBzdWJkaXJzICQoU1VCRElSUykKLSsKLSttYW4uY29uZmlnLm1hbjogbWFuLmNvbmYubWFuCi0rCUBjcCAkPCAkQAotKwotIC5TVUZGSVhFUzogLm1hbiAuMSAuNSAuOAotIAotIC5tYW4uMToKLUBAIC0xOSwxMSArMjYsMTEgQEAKLSBJTlNUQUxMID0gQElOU1RBTExAIC1jIC1tIDY0NAotIAotICMgV2hlcmUgdG8gcHV0IHRoZSBtYW51YWwgcGFnZXMuCi0tbWFuZGlyID0gJChERVNURElSKSQoUFJFRklYKUBtYW5kaXJAJChTTEFORykKLSttYW5kaXIgOj0gJChERVNURElSKSQoUFJFRklYKUBtYW5kaXJAJChTTEFORykKLSAKLSBhbGw6CSQoQUxMKQotIAlmb3IgaSBpbiAkKE1BWUJFOCk7IFwKLS0JCWRvIGlmIHRlc3QgLWYgJCRpLm1hbjsgdGhlbiBtYWtlIC1mIC4uL01ha2VmaWxlICQkaS44OyBmaTsgZG9uZQotKwkJZG8gaWYgdGVzdCAtZiAkJGkubWFuOyB0aGVuICQoTUFLRSkgLWYgLi4vTWFrZWZpbGUgJCRpLjg7IGZpOyBkb25lCi0gCi0gaW5zdGFsbDogJChBTEwpCi0gCW1rZGlyIC1wICQobWFuZGlyKS9tYW4xICQobWFuZGlyKS9tYW41ICQobWFuZGlyKS9tYW44Ci1AQCAtMzgsMjQgKzQ1LDI3IEBACi0gCXJtIC1mIGNvcmUgKi5pbiAqLkBtYW4xZXh0QCAqLkBtYW41ZXh0QCAqLkBtYW44ZXh0QCAqfgotIAotIHNwb3RsZXNzOgotKwlybSAtZiBtYW4uY29uZmlnLm1hbgotIAotIHN1YmRpcnM6Ci0tCUBmb3IgaSBpbiBAbGFuZ3VhZ2VzQDsgZG8gaWYgdGVzdCAtZCAkJGk7IHRoZW4gZWNobzsgXAotLQkJZWNobyAiPT09PSBNYWtpbmcgdGhlIGBjYXQgJCRpLnR4dGAgbWFuIHBhZ2VzLiA9PT09IjsgXAotLQkJY2QgJCRpOyBtYWtlIC1mIC4uL01ha2VmaWxlOyBjZCAuLjsgXAotLQkJZWxzZSBlY2hvICI9PT09IE5vICQkaSBtYW4gcGFnZXMgZm91bmQuID09PT0iOyBmaTsgZG9uZQotK3N1YmRpcnM6ICQoU1VCRElSUykKLSskKFNVQkRJUlMpOgotKwlpZiB0ZXN0IC1kICRAOyB0aGVuIGVjaG87IFwKLSsJCWVjaG8gIj09PT0gTWFraW5nIHRoZSBgY2F0ICRALnR4dGAgbWFuIHBhZ2VzLiA9PT09IjsgXAotKwkJJChNQUtFKSAtQyAkQCAtZiAuLi9NYWtlZmlsZSBhbGw7IFwKLSsJCWVsc2UgZWNobyAiPT09PSBObyAkQCBtYW4gcGFnZXMgZm91bmQuID09PT0iOyBmaQotIAotIGluc3RhbGxzdWJkaXJzOgotIAlAZm9yIGkgaW4gQGxhbmd1YWdlc0A7IGRvIGlmIHRlc3QgLWQgJCRpOyB0aGVuIGVjaG87IFwKLSAJCWVjaG8gIj09PT0gSW5zdGFsbGluZyB0aGUgYGNhdCAkJGkudHh0YCBtYW4gcGFnZXMuID09PT0iOyBcCi0gCQljZCAkJGk7IFNMQU5HPS8kJGk7IGlmIHRlc3QgJCRTTEFORyA9IC9lbjsgdGhlbiBTTEFORz0gOyBmaTsgXAotLQkJZXhwb3J0IFNMQU5HOyBtYWtlIC1mIC4uL01ha2VmaWxlIGluc3RhbGw7IGNkIC4uOyBcCi0rCQlleHBvcnQgU0xBTkc7ICQoTUFLRSkgLWYgLi4vTWFrZWZpbGUgaW5zdGFsbDsgY2QgLi47IFwKLSAJCWVsc2UgZWNobyAiPT09PSBObyAkJGkgbWFuIHBhZ2VzIGZvdW5kLiA9PT09IjsgZmk7IGRvbmUKLSAKLSBjbGVhbnN1YmRpcnM6Ci0tCUBmb3IgaSBpbiA/PzsgZG8gY2QgJCRpOyBtYWtlIC1mIC4uL01ha2VmaWxlIGNsZWFuOyBjZCAuLjsgZG9uZQotKwlAZm9yIGkgaW4gPz87IGRvICQoTUFLRSkgLUMgJCRpIC1mIC4uL01ha2VmaWxlIGNsZWFuOyBkb25lCi0gCXJtIC1mIGNvcmUgKn4KLSAKLSBzcG90bGVzc3N1YmRpcnM6Ci0tCWZvciBpIGluID8/OyBkbyBjZCAkJGk7IG1ha2UgLWYgLi4vTWFrZWZpbGUgc3BvdGxlc3M7IGNkIC4uOyBkb25lCi0rCWZvciBpIGluID8/OyBkbyAkKE1BS0UpIC1DICQkaSAtZiAuLi9NYWtlZmlsZSBzcG90bGVzczsgZG9uZQotIAlybSAtZiBNYWtlZmlsZQotCi0tLS0gbWFuLTEuNmcvc3JjL2dyaXBlcy5jLm9yaWcJMjAwNi0xMS0yMSAxMTo1Mzo0NC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zy9zcmMvZ3JpcGVzLmMJMjAxNi0wMy0zMCAxNjozMjozMS42MDExMDM0ODcgLTA3MDAKLUBAIC03LDggKzcsNiBAQAotIAotIGV4dGVybiBjaGFyICptc2dbXTsKLSAKLS1zdGF0aWMgY2hhciAqbWFudGV4dHMgPSAibWFuIjsJCS8qIGUuZy4gL3Vzci9saWIvbG9jYWxlLyVML21hbi5jYXQgKi8KLS0KLSAjaWZkZWYgTk9OTFMKLSAKLSBzdGF0aWMgY2hhciAqCi1AQCAtMzAsNiArMjgsOCBAQAotICNpbmNsdWRlIDxubF90eXBlcy5oPgotICNpbmNsdWRlICIuLi9jYXRvcGVuL2NhdG9wZW4uYyIKLSAKLStzdGF0aWMgY2hhciAqbWFudGV4dHMgPSAibWFuIjsJCS8qIGUuZy4gL3Vzci9saWIvbG9jYWxlLyVML21hbi5jYXQgKi8KLSsKLSBubF9jYXRkIGNhdGZkID0gKG5sX2NhdGQpIC0xOwotIGludCBjYXRfaXNfb3BlbiA9IDA7Ci0gCi0tLS0gbWFuLTEuNmcvc3JjL21hbmZpbGUuYy5vcmlnCTIwMDUtMDgtMjAgMTY6MjY6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbWFuLTEuNmcvc3JjL21hbmZpbGUuYwkyMDE2LTAzLTI5IDA5OjEwOjIxLjUyNzg0MTI4NSAtMDcwMAotQEAgLTI5OSw3ICsyOTksNyBAQAotIAljb25zdCBjaGFyICooKCp0b2NhdCkoY29uc3QgY2hhciAqbWFuX2ZpbGVuYW1lLCBjb25zdCBjaGFyICpleHQsCi0gCQkJICAgICAgaW50IGZsYWdzKSkpIHsKLSAgICAgIGNoYXIgKipzbDsKLS0gICAgIHN0cnVjdCBtYW5wYWdlICpyZXM7Ci0rICAgICBzdHJ1Y3QgbWFucGFnZSAqcmVzID0gMDsKLSAKLSAgICAgIHN0YW5kYXJkcyA9IChmbGFncyAmIChGSFMgfCBGU1NUTkQgfCBET19IUCB8IERPX0lSSVgpKTsKLSAgICAgIHRvX2NhdF9maWxlbmFtZSA9IHRvY2F0OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNmNjOTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLVVzZSBCVUlMRF9DQyBhbmQgdGFyZ2V0IGluY2x1ZGUgZmlsZXMgZm9yIGNvbmZpZ3VyYXRpb24gdGVzdHMuCi1JZiBjcm9zcy1jb21waWxpbmcsIGZvcmNlIHBhdGhuYW1lcyBmb3IgaGVscGVyIHByb2dyYW1zLCBzaW5jZQotYXV0b2Rpc2NvdmVyeSBieSB0aGUgY29uZmlndXJlIHNjcmlwdCB3aWxsIG5vdCB3b3JrLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQmlsbCBSYW5kbGUgPHdpbGxpYW0uYy5yYW5kbGUgYXQgaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmcvY29uZmlndXJlLm9yaWcJMjAxNi0wMy0yOCAxNzo0NjoxMi43MzQ5MTA5NzYgLTA3MDAKLSsrKyBtYW4tMS42Zy9jb25maWd1cmUJMjAxNi0wMy0zMCAyMTo0Nzo0NS4xMTA1NzI5MDggLTA3MDAKLUBAIC0yMTYsNyArMjE2LDggQEAKLSBJTkNMVURFRElSPSR7SU5DTFVERURJUi0vdXNyL2luY2x1ZGV9Ci0gCi0gcm0gLWYgY29uZnRlc3QgY29uZnRlc3QuYwotLWNvbXBpbGU9IiRDQyAkREVGUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0ICRMSUJTID4vZGV2L251bGwgMj4mMSIKLSsjIHNpbmNlIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRhcmdldCBmZWF0dXJlIHN1cHBvcnQsIHVzZSB0aGF0IHN5c3Jvb3QKLStjb21waWxlPSIkQlVJTERfQ0MgLWlzeXN0ZW0vJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfS91c3IvaW5jbHVkZSAkREVGUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0ICRMSUJTID4vZGV2L251bGwgMj4mMSIKLSAKLSAjIENoZWNrIGZvciB2YXJpb3VzIGhlYWRlciBmaWxlcy4KLSAKLUBAIC00NTUsMTkgKzQ1NiwyMyBAQAotICAgICAgIGZpCi0gICAgIGRvbmUKLSAgIGRvbmUKLS0gIEZncm9mZj0vdXNyL2Jpbi9ncm9mZgotLSAgRm5yb2ZmPS91c3IvYmluL25yb2ZmCi0tICBGam5yb2ZmPS91c3IvYmluL25yb2ZmCi0tICBGZ2Vxbj0vdXNyL2Jpbi9nZXFuCi0tICBGZ3RibD0vdXNyL2Jpbi9ndGJsCi0tICBGY29sPS91c3IvYmluL2NvbAotLSAgRmdyZWZlcj0vdXNyL2Jpbi9ncmVmZXIKLS0gIEZncGljPS91c3IvYmluL2dwaWMKLS0gIEZtb3JlPS9iaW4vbW9yZQotLSAgRmxlc3M9L3Vzci9iaW4vbGVzcwotLSAgRmNtcD0vdXNyL2Jpbi9jbXAKLS0gIEZjYXQ9L2Jpbi9jYXQKLS0gIEZnYXdrPS9iaW4vZ2F3awotKyAgaWYgWyAkQlVJTERfQ0MgIT0gJENDIF07IHRoZW4KLSsgICAgIyBjcm9zcyBjb21waWxpbmcgPT4gdGFyZ2V0IGZzIG5vdCBhdmFpbGFibGUsIHNvIGZvcmNlIGRlZmF1bHRzCi0rICAgIEZncm9mZj0vdXNyL2Jpbi9ncm9mZgotKyAgICBGbnJvZmY9L3Vzci9iaW4vbnJvZmYKLSsgICAgRmpucm9mZj0vdXNyL2Jpbi9ucm9mZgotKyAgICBGZ2Vxbj0vdXNyL2Jpbi9lcW4KLSsgICAgRmduZXFuPS91c3IvYmluL25lcW4KLSsgICAgRmd0Ymw9L3Vzci9iaW4vdGJsCi0rICAgIEZjb2w9L3Vzci9iaW4vY29sCi0rICAgIEZncmVmZXI9L3Vzci9iaW4vcmVmZXIKLSsgICAgRmdwaWM9L3Vzci9iaW4vcGljCi0rICAgIEZtb3JlPS9iaW4vbW9yZQotKyAgICBGbGVzcz0vdXNyL2Jpbi9sZXNzCi0rICAgIEZjbXA9L3Vzci9iaW4vY21wCi0rICAgIEZjYXQ9L2Jpbi9jYXQKLSsgICAgRmdhd2s9L3Vzci9iaW4vZ2F3awotKyAgZmkKLSAKLSAKLSAgIGZvciBpIGluIGVxbiB0YmwgcmVmZXIgcGljCi1AQCAtNTA3LDggKzUxMiw4IEBACi0gICAgIGpucm9mZj0iJEZqbnJvZmYgLVR1dGY4IC1tYW5kb2NqIgotICAgZmkKLSAgIGVxbj0iJEZnZXFuIC1UcHMiCi0tICBuZXFuPSIkRmdlcW4gLVR1dGY4IgotLSAgam5lcW49IiRGZ2VxbiAtVHV0ZjgiCi0rICBuZXFuPSIkRmduZXFuIC1UdXRmOCIKLSsgIGpuZXFuPSIkRmduZXFuIC1UdXRmOCIKLSAgIHRibD0iJEZndGJsIgotICAgY29sPSIkRmNvbCIKLSAgIHZncmluZD0iJEZ2Z3JpbmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctcGFyYWxsZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctcGFyYWxsZWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYTg4YjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXBhcmFsbGVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVGhlIE1ha2VmaWxlIGZvciBtYW4gaGFzIGEgcnVsZSB0byBjcmVhdGUgdHdvIGdlbmVyYXRlZCB0YXJnZXRzIHdpdGgKLWEgcHJvZ3JhbSBydW4gZnJvbSB0aGUgc2hlbGwuIEJlY2F1c2UgdGhlIHJ1bGUgd2FzIHJ1biB0d2ljZSwgd2l0aAotcGFyYWxsZWwgbWFrZSwgdGhlIGdlbmVyYXRlZCBmaWxlcyB3ZXJlIGJlaW5nIG92ZXJ3cml0dGVuIGF0IHRoZSBzYW1lCi10aW1lIHRoZXkgd2VyZSBiZWluZyBjb21waWxlZC4gVGhpcyBwYXRjaCBmb3JjZXMgdGhlIHJ1bGUgdG8gYmUgcnVuCi1vbmx5IG9uY2UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBCaWxsIFJhbmRsZSA8d2lsbGlhbS5jLnJhbmRsZSBhdCBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS42Zy9zcmMvTWFrZWZpbGUuaW4ub3JpZwkyMDEwLTEyLTMxIDEyOjI4OjQ2LjAwMDAwMDAwMCAtMDgwMAotKysrIG1hbi0xLjZnL3NyYy9NYWtlZmlsZS5pbgkyMDE2LTAzLTI4IDA5OjA5OjE2Ljg0NTQ1ODc5OCAtMDcwMAotQEAgLTQzLDggKzQzLDEwIEBACi0gbWFrZW1zZzoKLSAJJChCVUlMRF9DQykgLW8gbWFrZW1zZyBtYWtlbXNnLmMKLSAKLS1tc2cuYyBncmlwZWRlZnMuaDogLi4vbXNncy9tZXNzLmVuIG1ha2Vtc2cKLSttc2cuYyBncmlwZWRlZnMuaDogZ2VuZmlsZXMtc3RhbXAKLStnZW5maWxlcy1zdGFtcDogLi4vbXNncy9tZXNzLmVuIG1ha2Vtc2cKLSAJLi9tYWtlbXNnIC4uL21zZ3MvbWVzcy5lbiBncmlwZWRlZnMuaCBtc2cuYwotKwl0b3VjaCBnZW5maWxlcy1zdGFtcAotIAotICMgZ2xvYi5jIGRvZXMgbm90IGhhdmUgcHJvdG90eXBlcwotIGdsb2IubzogZ2xvYi5jIG5kaXIuaAotQEAgLTExNyw0ICsxMTksNCBAQAotIAotIHNwb3RsZXNzOiBjbGVhbgotIAlybSAtZiBNYWtlZmlsZSBjb25maWcuc3RhdHVzIHBhdGhzLmggdmVyc2lvbi5oIG1hbi5jb25mCi0tCXJtIC1mIGdyaXBlZGVmcy5oIG1zZy5jIG1lc3MuKi5jYXQKLSsJcm0gLWYgZ3JpcGVkZWZzLmggbXNnLmMgbWVzcy4qLmNhdCBnZW5maWxlcy1zdGFtcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXdoYXRpczMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctd2hhdGlzMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMzNDQ1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctd2hhdGlzMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLURvIG5vdCB1c2UgYWJzb2x1dGUgcGF0aCBmb3IgYXdrIHdoaWxlIGdldHRpbmcgdGhlIHBhdGggb2YgYXdrCi13aGVuIHJ1bm5pbmcgbWFrZXdoYXRpcy4KLVRoaXMgY2FuIGF2b2lkIGVycm9ycyBpZiBwYXRoIG9mIGF3ayBjaGFuZ2VzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbWFuLTEuNmddCi0KLVNpZ25lZC1vZmYtYnk6IEppYW4gTGl1IDxqaWFuLmxpdUB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC1OdXIgbWFuLTEuNmcub3JpZy9zcmMvbWFrZXdoYXRpcy5zaCBtYW4tMS42Zy9zcmMvbWFrZXdoYXRpcy5zaAotLS0tIG1hbi0xLjZnLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAxNS0wMi0yNSAxNjoxMzoxMi42NTc2MTE0MTkgKzA4MDAKLSsrKyBtYW4tMS42Zy9zcmMvbWFrZXdoYXRpcy5zaAkyMDE1LTAyLTI1IDE2OjE0OjQ5LjMzNDY5NDgxNSArMDgwMAotQEAgLTY3LDcgKzY3LDcgQEAKLSAjIGJ1dCB0aGF0IGxlYWRzIHRvIHByb2JsZW1zIGFuZCBidWdzLgotCi0gIyBBV0s9L3Vzci9iaW4vZ2F3awotLUFXSz1AYXdrQAotK0FXSz1gd2hpY2ggYXdrYAotCi0gIyBGaW5kIGEgcGxhY2UgZm9yIG91ciB0ZW1wb3JhcnkgZmlsZXMuIElmIHNlY3VyaXR5IGlzIG5vdCBhIGNvbmNlcm4sIHVzZQotICMJVE1QRklMRT0vdG1wL3doYXRpcyQkOyBUTVBGSUxFRElSPW5vbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uMS5neiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uMS5negpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM2ODA0NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjEuZ3oKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjcuZ3ogYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjcuZ3oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NWFmODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi43Lmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzEwYmUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0jCi0jIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gbWFuLmNvbmYuaW4gYnkgdGhlCi0jIGNvbmZpZ3VyZSBzY3JpcHQuCi0jCi0jIG1hbi5jb25mIGZyb20gbWFuLTEuNXAKLSMKLSMgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBmaWxlLCBzZWUgdGhlIG1hbiBwYWdlcyBtYW4oMSkKLSMgYW5kIG1hbi5jb25mKDUpLgotIwotIyBUaGlzIGZpbGUgaXMgcmVhZCBieSBtYW4gdG8gY29uZmlndXJlIHRoZSBkZWZhdWx0IG1hbnBhdGggKGFsc28gdXNlZAotIyB3aGVuIE1BTlBBVEggY29udGFpbnMgYW4gZW1wdHkgc3Vic3RyaW5nKSwgdG8gZmluZCBvdXQgd2hlcmUgdGhlIGNhdAotIyBwYWdlcyBjb3JyZXNwb25kaW5nIHRvIGdpdmVuIG1hbiBwYWdlcyBzaG91bGQgYmUgc3RvcmVkLAotIyBhbmQgdG8gbWFwIGVhY2ggUEFUSCBlbGVtZW50IHRvIGEgbWFucGF0aCBlbGVtZW50LgotIyBJdCBtYXkgYWxzbyByZWNvcmQgdGhlIHBhdGhuYW1lIG9mIHRoZSBtYW4gYmluYXJ5LiBbVGhpcyBpcyB1bnVzZWQuXQotIyBUaGUgZm9ybWF0IGlzOgotIwotIyBNQU5CSU4JCXBhdGhuYW1lCi0jIE1BTlBBVEgJCW1hbnBhdGhfZWxlbWVudAlbY29ycmVzcG9uZGluZ19jYXRkaXJdCi0jIE1BTlBBVEhfTUFQCQlwYXRoX2VsZW1lbnQJbWFucGF0aF9lbGVtZW50Ci0jCi0jIElmIG5vIGNhdGRpciBpcyBnaXZlbiwgaXQgaXMgYXNzdW1lZCB0byBiZSBlcXVhbCB0byB0aGUgbWFuZGlyCi0jIChzbyB0aGF0IHRoaXMgZGlyIGhhcyBib3RoIG1hbjEgZXRjLiBhbmQgY2F0MSBldGMuIHN1YmRpcnMpLgotIyBUaGlzIGlzIHRoZSB0cmFkaXRpb25hbCBVbml4IHNldHVwLgotIyBDZXJ0YWluIHZlcnNpb25zIG9mIHRoZSBGU1NUTkQgcmVjb21tZW5kIHB1dHRpbmcgZm9ybWF0dGVkIHZlcnNpb25zCi0jIG9mIC91c3IvLi4uL21hbi9tYW54L3BhZ2UueCBpbnRvIC92YXIvY2F0bWFuLy4uLi9jYXR4L3BhZ2UueC4KLSMgVGhlIGtleXdvcmQgRlNTVE5EIHdpbGwgY2F1c2UgdGhpcyBiZWhhdmlvdXIuCi0jIENlcnRhaW4gdmVyc2lvbnMgb2YgdGhlIEZIUyByZWNvbW1lbmQgcHV0dGluZyBmb3JtYXR0ZWQgdmVyc2lvbnMgb2YKLSMgL3Vzci8uLi4vc2hhcmUvbWFuL1tsb2NhbGUvXW1hbngvcGFnZS54IGludG8KLSMgL3Zhci9jYWNoZS9tYW4vLi4uL1tsb2NhbGUvXWNhdHgvcGFnZS54LgotIyBUaGUga2V5d29yZCBGSFMgd2lsbCBjYXVzZSB0aGlzIGJlaGF2aW91ciAoYW5kIG92ZXJyaWRlcyBGU1NUTkQpLgotIyBFeHBsaWNpdGx5IGdpdmVuIGNhdGRpcnMgb3ZlcnJpZGUuCi0jCi0jIEZTU1RORAotRkhTCi0jCi0jIFRoaXMgZmlsZSBpcyBhbHNvIHJlYWQgYnkgbWFuIGluIG9yZGVyIHRvIGZpbmQgaG93IHRvIGNhbGwgbnJvZmYsIGxlc3MsIGV0Yy4sCi0jIGFuZCB0byBkZXRlcm1pbmUgdGhlIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gZXh0ZW5zaW9ucyBhbmQgZGVjb21wcmVzc29ycy4KLSMKLSMgTUFOQklOCQkvdXNyL2xvY2FsL2Jpbi9tYW4KLSMKLSMgRXZlcnkgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgTUFOUEFUSCBpbmNsdWRlcyB0aGVzZSBmaWVsZHMKLSMKLU1BTlBBVEgJL3Vzci9tYW4KLU1BTlBBVEgJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEgJL3Vzci9sb2NhbC9tYW4KLU1BTlBBVEgJL3Vzci9sb2NhbC9zaGFyZS9tYW4KLU1BTlBBVEgJL3Vzci9YMTFSNi9tYW4KLSMKLSMgVW5jb21tZW50IGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgb25lIG9mIHRoZXNlIGJ5IGRlZmF1bHQKLSMKLSMgTUFOUEFUSAkvb3B0LyovbWFuCi0jIE1BTlBBVEgJL3Vzci9saWIvKi9tYW4KLSMgTUFOUEFUSAkvdXNyL3NoYXJlLyovbWFuCi0jIE1BTlBBVEgJL3Vzci9rZXJiZXJvcy9tYW4KLSMKLSMgU2V0IHVwIFBBVEggdG8gTUFOUEFUSCBtYXBwaW5nCi0jCi0jIElmIHBlb3BsZSBhc2sgZm9yICJtYW4gZm9vIiBhbmQgaGF2ZSAiL2Rpci9iaW4vZm9vIiBpbiB0aGVpciBQQVRICi0jIGFuZCB0aGUgZG9jcyBhcmUgZm91bmQgaW4gIi9kaXIvbWFuIiwgdGhlbiBubyBtYXBwaW5nIGlzIHJlcXVpcmVkLgotIwotIyBUaGUgYmVsb3cgbWFwcGluZ3MgYXJlIHN1cGVyZmx1b3VzIHdoZW4gdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcwotIyBpbiB0aGUgbWFuZGF0b3J5IG1hbnBhdGggYWxyZWFkeSwgYnV0IHdpbGwga2VlcCBtYW4gZnJvbSBzdGF0dGluZwotIyBsb3RzIG9mIG90aGVyIG5lYXJieSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCi0jCi1NQU5QQVRIX01BUAkvYmluCQkJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEhfTUFQCS9zYmluCQkJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEhfTUFQCS91c3IvYmluCQkvdXNyL3NoYXJlL21hbgotTUFOUEFUSF9NQVAJL3Vzci9zYmluCQkvdXNyL3NoYXJlL21hbgotTUFOUEFUSF9NQVAJL3Vzci9sb2NhbC9iaW4JCS91c3IvbG9jYWwvc2hhcmUvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2xvY2FsL3NiaW4JCS91c3IvbG9jYWwvc2hhcmUvbWFuCi1NQU5QQVRIX01BUAkvdXNyL1gxMVI2L2JpbgkJL3Vzci9YMTFSNi9tYW4KLU1BTlBBVEhfTUFQCS91c3IvYmluL1gxMQkJL3Vzci9YMTFSNi9tYW4KLU1BTlBBVEhfTUFQCS91c3IvYmluL21oCQkvdXNyL3NoYXJlL21hbgotIwotIyBOT0FVVE9QQVRIIGtlZXBzIG1hbiBmcm9tIGF1dG9tYXRpY2FsbHkgYWRkaW5nIGRpcmVjdG9yaWVzIHRoYXQgbG9vayBsaWtlCi0jIG1hbnVhbCBwYWdlIGRpcmVjdG9yaWVzIHRvIHRoZSBwYXRoLgotIwotI05PQVVUT1BBVEgKLSMKLSMgTk9DQUNIRSBrZWVwcyBtYW4gZnJvbSBjcmVhdGluZyBjYWNoZSBwYWdlcyAoImNhdCBwYWdlcyIpCi0jIChnZW5lcmFsbHkgb25lIGVuYWJsZXMvZGlzYWJsZSBjYXQgcGFnZSBjcmVhdGlvbiBieSBjcmVhdGluZy9kZWxldGluZwotIyB0aGUgZGlyZWN0b3J5IHRoZXkgd291bGQgbGl2ZSBpbiAtIG1hbiBuZXZlciBkb2VzIG1rZGlyKQotIyAKLSNOT0NBQ0hFCi0jCi0jIFVzZWZ1bCBwYXRocyAtIG5vdGUgdGhhdCBDT0wgc2hvdWxkIG5vdCBiZSBkZWZpbmVkIHdoZW4KLSMgTlJPRkYgaXMgZGVmaW5lZCBhcyAiZ3JvZmYgLVRhc2NpaSIgb3IgImdyb2ZmIC1UbGF0aW4xIjsKLSMgbm90IG9ubHkgaXMgaXQgc3VwZXJmbHVvdXMsIGJ1dCBpdCBhY3R1YWxseSBkYW1hZ2VzIHRoZSBvdXRwdXQuCi0jIEZvciB1c2Ugd2l0aCB1dGYtOCwgTlJPRkYgc2hvdWxkIGJlICJucm9mZiAtbWFuZG9jIiB3aXRob3V0IC1UIG9wdGlvbi4KLSMgKE1heWJlIC0gYnV0IHRvZGF5IEkgbmVlZCAtVGxhdGluMSB0byBwcmV2ZW50IGRvdWJsZSBjb252ZXJzaW9uIHRvIHV0ZjguKQotIwotIyBJZiB5b3UgaGF2ZSBhIG5ldyB0cm9mZiAodmVyc2lvbiAxLjE4LjE/KSBhbmQgaXRzIGNvbG9yZWQgb3V0cHV0Ci0jIGNhdXNlcyBwcm9ibGVtcywgYWRkIHRoZSAtYyBvcHRpb24gdG8gVFJPRkYsIE5ST0ZGLCBKTlJPRkYuCi0jCi1UUk9GRgkJL3Vzci9iaW4vZ3JvZmYgLVRwcyAtbWFuZG9jCi1OUk9GRgkJL3Vzci9iaW4vbnJvZmYgLVRsYXRpbjEgLW1hbmRvYwotSk5ST0ZGCQkvdXNyL2Jpbi9ncm9mZiAtVG5pcHBvbiAtbWFuZG9jagotRVFOCQkvdXNyL2Jpbi9lcW4gLVRwcwotTkVRTgkJL3Vzci9iaW4vZXFuIC1UbGF0aW4xCi1KTkVRTgkJL3Vzci9iaW4vZXFuIC1UbmlwcG9uCi1UQkwJCS91c3IvYmluL3RibAotIyBDT0wJCS91c3IvYmluL2NvbAotUkVGRVIJCS91c3IvYmluL3JlZmVyCi1QSUMJCS91c3IvYmluL3BpYwotVkdSSU5ECQkKLUdSQVAJCQotUEFHRVIJCS91c3IvYmluL2xlc3MgLWlzUgotQ0FUCQkvYmluL2NhdAotIwotIyBUaGUgY29tbWFuZCAibWFuIC1hIHh5enp5IiB3aWxsIHNob3cgYWxsIG1hbiBwYWdlcyBmb3IgeHl6enkuCi0jIFdoZW4gQ01QIGlzIGRlZmluZWQgbWFuIHdpbGwgdHJ5IHRvIGF2b2lkIHNob3dpbmcgdGhlIHNhbWUKLSMgdGV4dCB0d2ljZS4gKEJ1dCBjb21wcmVzc2VkIHBhZ2VzIGNvbXBhcmUgdW5lcXVhbC4pCi0jCi1DTVAJCS91c3IvYmluL2NtcCAtcwotIwotIyBDb21wcmVzcyBjYXQgcGFnZXMKLSMKLUNPTVBSRVNTCS9iaW4vYnppcDIKLUNPTVBSRVNTX0VYVAkuYnoyCi0jCi0jIERlZmF1bHQgbWFudWFsIHNlY3Rpb25zIChhbmQgb3JkZXIpIHRvIHNlYXJjaCBpZiAtUyBpcyBub3Qgc3BlY2lmaWVkCi0jIGFuZCB0aGUgTUFOU0VDVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LgotIwotTUFOU0VDVAkJMToxcDo4OjI6MzozcDo0OjU6Njo3Ojk6MHA6dGNsOm46bDpwOm8KLSMKLSMgRGVmYXVsdCBvcHRpb25zIHRvIHVzZSB3aGVuIG1hbiBpcyBpbnZva2VkIHdpdGhvdXQgb3B0aW9ucwotIyBUaGlzIGlzIG1haW5seSBmb3IgdGhlIGJlbmVmaXQgb2YgdGhvc2UgdGhhdCB0aGluayAtYSBzaG91bGQgYmUgdGhlIGRlZmF1bHQKLSMgTm90ZSB0aGF0IHNvbWUgc3lzdGVtcyBoYXZlIC91c3IvbWFuL2FsbG1hbiwgY2F1c2luZyBwYWdlcyB0byBiZSBzaG93biB0d2ljZS4KLSMKLSNNQU5ERUZPUFRJT05TCS1hCi0jCi0jIERlY29tcHJlc3Mgd2l0aCBnaXZlbiBkZWNvbXByZXNzb3Igd2hlbiBpbnB1dCBmaWxlIGhhcyBnaXZlbiBleHRlbnNpb24KLSMgVGhlIGNvbW1hbmQgZ2l2ZW4gbXVzdCBhY3QgYXMgYSBmaWx0ZXIuCi0jCi0uZ3oJCS9iaW4vZ3VuemlwIC1jCi0uYnoyCQkvdXNyL2Jpbi9idW56aXAyIC1jCi0ueHoJCS91c3IvYmluL3VueHogLWMKLS56CQkKLS5aCQkvYmluL3pjYXQKLS5GCQkKLS5ZCQkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW5wYXRoLjUuZ3ogYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFucGF0aC41Lmd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDEyZmY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW5wYXRoLjUuZ3oKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbl8xLjZnLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjYwM2Y4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbl8xLjZnLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotU1VNTUFSWSA9ICJPbmxpbmUgZG9jdW1lbnRhdGlvbiB0b29scyIKLURFU0NSSVBUSU9OID0gIkEgc2V0IG9mIGRvY3VtZW50YXRpb24gdG9vbHM6IG1hbiwgYXByb3BvcyBhbmQgd2hhdGlzIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3ByaW1hdGVzLnhpbWlhbi5jb20vfmZsdWNpZnJlZGkvbWFuIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIgotCi1QUiA9ICJyMSIKLQotREVQRU5EUyA9ICJncm9mZiBsZXNzIgotCi1kZWYgY29tcHJlc3NfcGtnKGQpOgotICAgIGlmICJjb21wcmVzc19kb2MiIGluIChkLmdldFZhcigiSU5IRVJJVCIpIG9yICIiKS5zcGxpdCgpOgotICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKLSAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJnemlwIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKLSAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgotICAgICAgICAgICAgIHJldHVybiAieHoiCi0gICAgcmV0dXJuICIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL2xvb2thc2lkZS9wa2dzL21hbjJodG1sLyR7QlB9LnRhci5nei9iYTE1NGQ1Nzk2OTI4Yjg0MWM5YzY5ZjBhZTM3NjY2MC8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWstY29uZnBhdGgucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVoMS1tYWtlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVrLW5vbmFzY2lpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLXNlY3VyaXR5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLW1hbmRpcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNW0yLWJ1ZzExNjIxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVrLXNvZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi1idWlsZHJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtcm9fdXNyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVpMi1uZXdsaW5lLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ai11dGY4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ai1ub2NhY2hlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVpMi1pbml0aWFsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVoMS1nZW5jYXQucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVnLW5vbnJvb3RidWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ai1pMThuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLXdoYXRpczIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtdXNlX2kxOG5fdmFyc19pbl9hX3N0ZF93YXkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNW0yLW5vLWNvbG9yLWZvci1wcmludGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41bTItc2lncGlwZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1pMThuX3doYXRpcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1uZXdfc2VjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLjEuZ3o7dW5wYWNrPWZhbHNlIFwKLSAgICAgICAgICAgZmlsZTovL21hbi43Lmd6O3VucGFjaz1mYWxzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4uY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW5wYXRoLjUuZ3o7dW5wYWNrPWZhbHNlIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZnLXdoYXRpczMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX3NlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42Zy1wYXJhbGxlbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42Zy1jb21waWxlLXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZnLWNvbmZpZ3VyZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiYTE1NGQ1Nzk2OTI4Yjg0MWM5YzY5ZjBhZTM3NjY2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjY2RjYjhjM2Y0ZTAwODA5MjNkN2U4MThmMGU0YTIwMmRiMjZjNDY0MTVlYWVmMzYxMzg3YzIwOTk1Yjg5NTlmIgotCi1DRkxBR1MgKz0gIi1EU1lTViIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICAgICAgJHtTfS9jb25maWd1cmUgLWRlZmF1bHQgLWNvbmZkaXIgL2V0YyArc2dpZCArZmhzICtsYW5nIGFsbAotfQotCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKXsKLQlta2RpciAtcCAgJHtEfSR7c3lzY29uZmRpcn0KLSAgICAgICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjUKLSAgICAgICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjcKLQljcCAke1dPUktESVJ9L21hbi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L21hbi5jb25maWcKLSAgICAgICAgY3AgJHtXT1JLRElSfS9tYW4uMS5neiAke0R9JHtkYXRhZGlyfS9tYW4vbWFuMS8KLSAgICAgICAgY3AgJHtXT1JLRElSfS9tYW4uNy5neiAke0R9JHtkYXRhZGlyfS9tYW4vbWFuNy8KLSAgICAgICAgY3AgJHtXT1JLRElSfS9tYW5wYXRoLjUuZ3ogJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjUvCi19Ci0KLQotUkRFUEVORFNfJHtQTn0gPSAibGVzcyBncm9mZiIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2xvY2FsZSAke3N5c2NvbmZkaXJ9L21hbi5jb25maWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzLzAwMDItVGlja2V0LTM2OTctdHR5X2luaXQtdW5pZnktY3Vyc2VzLWluaXRpYWxpemF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU0ZDRkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzLzAwMDItVGlja2V0LTM2OTctdHR5X2luaXQtdW5pZnktY3Vyc2VzLWluaXRpYWxpemF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotRnJvbSA0ZDQ2YTEwODYyOWJlYjY2YTI5MzY3MmRiN2I0NGY4NjNiNjU5OGJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIERpY2tleSA8ZGlja2V5QGhpcy5jb20+Ci1EYXRlOiBGcmksIDE0IEFwciAyMDE3IDE0OjA2OjEzICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRpY2tldCAjMzY5NzogKHR0eV9pbml0KTogdW5pZnkgY3Vyc2VzIGluaXRpYWxpemF0aW9uCi0KLS4uLmZvciB2YXJpb3VzIGN1cnNlcyBpbXBsZW1lbnRhdGlvbnMuCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJldyBCb3JvZGluIDxhYm9yb2RpbkB2bWFpbC5ydT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL01pZG5pZ2h0Q29tbWFuZGVyL21jLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWIvdHR5L3R0eS1uY3Vyc2VzLmMgfCAyNiArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3R0eS90dHktbmN1cnNlcy5jIGIvbGliL3R0eS90dHktbmN1cnNlcy5jCi1pbmRleCBhN2ExMWYzLi44ZTY5YjM5IDEwMDY0NAotLS0tIGEvbGliL3R0eS90dHktbmN1cnNlcy5jCi0rKysgYi9saWIvdHR5L3R0eS1uY3Vyc2VzLmMKLUBAIC0xNzksNiArMTc5LDggQEAgbWNfdHR5X25vcm1hbGl6ZV9saW5lc19jaGFyIChjb25zdCBjaGFyICpjaCkKLSB2b2lkCi0gdHR5X2luaXQgKGdib29sZWFuIG1vdXNlX2VuYWJsZSwgZ2Jvb2xlYW4gaXNfeHRlcm0pCi0gewotKyAgICBzdHJ1Y3QgdGVybWlvcyBtb2RlOwotKwotICAgICBpbml0c2NyICgpOwotIAotICNpZmRlZiBIQVZFX0VTQ0RFTEFZCi1AQCAtMTk0LDI1ICsxOTYsMTUgQEAgdHR5X2luaXQgKGdib29sZWFuIG1vdXNlX2VuYWJsZSwgZ2Jvb2xlYW4gaXNfeHRlcm0pCi0gICAgIEVTQ0RFTEFZID0gMjAwOwotICNlbmRpZiAvKiBIQVZFX0VTQ0RFTEFZICovCi0gCi0tI2lmZGVmIE5DVVJTRVNfVkVSU0lPTgotKyAgICB0Y2dldGF0dHIgKFNURElOX0ZJTEVOTywgJm1vZGUpOwotICAgICAvKiB1c2UgQ3RybC1nIHRvIGdlbmVyYXRlIFNJR0lOVCAqLwotLSAgICBjdXJfdGVybS0+TnR0eWIuY19jY1tWSU5UUl0gPSBDVFJMICgnZycpOyAgIC8qIF5nICovCi0rICAgIG1vZGUuY19jY1tWSU5UUl0gPSBDVFJMICgnZycpOyAgLyogXmcgKi8KLSAgICAgLyogZGlzYWJsZSBTSUdRVUlUIHRvIGFsbG93IHVzZSBDdHJsLVwga2V5ICovCi0tICAgIGN1cl90ZXJtLT5OdHR5Yi5jX2NjW1ZRVUlUXSA9IE5VTExfVkFMVUU7Ci0tICAgIHRjc2V0YXR0ciAoY3VyX3Rlcm0tPkZpbGVkZXMsIFRDU0FOT1csICZjdXJfdGVybS0+TnR0eWIpOwotLSNlbHNlCi0tICAgIC8qIG90aGVyIGN1cnNlcyBpbXBsZW1lbnRhdGlvbiAoYnNkIGN1cnNlcywgLi4uKSAqLwotLSAgICB7Ci0tICAgICAgICBzdHJ1Y3QgdGVybWlvcyBtb2RlOwotLQotLSAgICAgICAgdGNnZXRhdHRyIChTVERJTl9GSUxFTk8sICZtb2RlKTsKLS0gICAgICAgIC8qIHVzZSBDdHJsLWcgdG8gZ2VuZXJhdGUgU0lHSU5UICovCi0tICAgICAgICBtb2RlLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgIC8qIF5nICovCi0tICAgICAgICAvKiBkaXNhYmxlIFNJR1FVSVQgdG8gYWxsb3cgdXNlIEN0cmwtXCBrZXkgKi8KLS0gICAgICAgIG1vZGUuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOwotLSAgICAgICAgdGNzZXRhdHRyIChTVERJTl9GSUxFTk8sIFRDU0FOT1csICZtb2RlKTsKLS0gICAgfQotLSNlbmRpZiAvKiBOQ1VSU0VTX1ZFUlNJT04gKi8KLSsgICAgbW9kZS5jX2NjW1ZRVUlUXSA9IE5VTExfVkFMVUU7Ci0rICAgIHRjc2V0YXR0ciAoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmbW9kZSk7Ci0rCi0rICAgIC8qIGN1cnNlcyByZW1lbWJlcnMgdGhlICJpbi1wcm9ncmFtIiBtb2RlcyBhZnRlciB0aGlzIGNhbGwgKi8KLSsgICAgZGVmX3Byb2dfbW9kZSAoKTsKLSAKLSAgICAgdHR5X3N0YXJ0X2ludGVycnVwdF9rZXkgKCk7Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTE1NmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIk1pZG5pZ2h0IENvbW1hbmRlciBpcyBhbiBuY3Vyc2VzIGJhc2VkIGZpbGUgbWFuYWdlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1jLXJlcGxhY2UtcGVybC13LXdpdGgtdXNlLXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItVGlja2V0LTM2OTctdHR5X2luaXQtdW5pZnktY3Vyc2VzLWluaXRpYWxpemF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImVmNDIzZjViNmY4MGExYTVhNWZjNTNiODMyNGNhYjcwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwZGRkZmFlNzE0OWZhYzkwM2Y3NGVmNTVjZmNiMmExOThlMGY3MDA0MzQ2YzdiZGVkNDM2NjlkNjFiYTQzNmYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLSMKLSMgQm90aCBTYW1iYSAoc21iKSBhbmQgc2Z0cCByZXF1aXJlIHBhY2thZ2UgZGVsaXZlcmVkIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQKLSMKLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtdmZzLXNtYiwtLWRpc2FibGUtdmZzLXNtYixzYW1iYSwiCi1QQUNLQUdFQ09ORklHW3NmdHBdID0gIi0tZW5hYmxlLXZmcy1zZnRwLC0tZGlzYWJsZS12ZnMtc2Z0cCxsaWJzc2gyLCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1zY3JlZW49bmN1cnNlcyAtLXdpdGhvdXQtZ3BtLW1vdXNlIC0td2l0aG91dC14IgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCi0gICAgICAgIAotICAgICAgICBybSAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3MzKyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VjMTU0MQotfQotCi1QQUNLQUdFUyA9KyAiJHtCUE59LWhlbHBlcnMtcGVybCAke0JQTn0taGVscGVycyAke0JQTn0tZmlzaCIKLQotU1VNTUFSWV8ke0JQTn0taGVscGVycy1wZXJsID0gIk1pZG5pZ2h0IENvbW1hbmRlciBQZXJsLWJhc2VkIGhlbHBlciBzY3JpcHRzIgotRklMRVNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYSsgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2FwdCsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmQgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2Rwa2crIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL21haWxmcyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcGF0Y2hmcyBcIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcnBtcysgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VsaWIgXCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3V6aXAiCi1SREVQRU5EU18ke0JQTn0taGVscGVycy1wZXJsID0gInBlcmwiCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIHNoZWxsIGhlbHBlciBzY3JpcHRzIgotRklMRVNfJHtCUE59LWhlbHBlcnMgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyogJHtsaWJleGVjZGlyfS9tYy9leHQuZC8qIgotCi1TVU1NQVJZXyR7QlBOfS1maXNoID0gIk1pZG5pZ2h0IENvbW1hbmRlciBGaXNoIHNjcmlwdHMiCi1GSUxFU18ke0JQTn0tZmlzaCA9ICIke2xpYmV4ZWNkaXJ9L21jL2Zpc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZDFiNWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIk1pZG5pZ2h0IENvbW1hbmRlciBpcyBhbiBuY3Vyc2VzIGJhc2VkIGZpbGUgbWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKK1JERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1jLXJlcGxhY2UtcGVybC13LXdpdGgtdXNlLXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImRjZmM3YWE2MTNjNjIyOTFhMGY3MWY2YjY5OGQ4MjY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkODVkYWFhNmFiMjZlNTI0OTQ2ZGY0ODIzYWMyZjY5ODAyYmMxNmJjOTY3NzgxYjVlMjhkNWI4NmZjM2I5NzkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKKyMKKyMgQm90aCBTYW1iYSAoc21iKSBhbmQgc2Z0cCByZXF1aXJlIHBhY2thZ2UgZGVsaXZlcmVkIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQKKyMKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtdmZzLXNtYiwtLWRpc2FibGUtdmZzLXNtYixzYW1iYSwiCitQQUNLQUdFQ09ORklHW3NmdHBdID0gIi0tZW5hYmxlLXZmcy1zZnRwLC0tZGlzYWJsZS12ZnMtc2Z0cCxsaWJzc2gyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zY3JlZW49bmN1cnNlcyAtLXdpdGhvdXQtZ3BtLW1vdXNlIC0td2l0aG91dC14IgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCisgICAgICAgIAorICAgICAgICBybSAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3MzKyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VjMTU0MQorfQorCitQQUNLQUdFUyA9KyAiJHtCUE59LWhlbHBlcnMtcGVybCAke0JQTn0taGVscGVycyAke0JQTn0tZmlzaCIKKworU1VNTUFSWV8ke0JQTn0taGVscGVycy1wZXJsID0gIk1pZG5pZ2h0IENvbW1hbmRlciBQZXJsLWJhc2VkIGhlbHBlciBzY3JpcHRzIgorRklMRVNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYSsgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2FwdCsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmQgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2Rwa2crIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL21haWxmcyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcGF0Y2hmcyBcIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcnBtcysgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VsaWIgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3V6aXAiCitSREVQRU5EU18ke0JQTn0taGVscGVycy1wZXJsID0gInBlcmwiCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIHNoZWxsIGhlbHBlciBzY3JpcHRzIgorRklMRVNfJHtCUE59LWhlbHBlcnMgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyogJHtsaWJleGVjZGlyfS9tYy9leHQuZC8qIgorCitTVU1NQVJZXyR7QlBOfS1maXNoID0gIk1pZG5pZ2h0IENvbW1hbmRlciBGaXNoIHNjcmlwdHMiCitGSUxFU18ke0JQTn0tZmlzaCA9ICIke2xpYmV4ZWNkaXJ9L21jL2Zpc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL2djYy00LjkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL2djYy00LjkucGF0Y2gKaW5kZXggNTRiZjFkNy4uZGYyMTM5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9nY2MtNC45LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvZ2NjLTQuOS5wYXRjaApAQCAtNywxMyArNywxMyBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogbWRhZG0tMy4zL3N1cGVyLWludGVsLmMKK0luZGV4OiBtZGFkbS00LjAvc3VwZXItaW50ZWwuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1kYWRtLTMuMy5vcmlnL3N1cGVyLWludGVsLmMJMjAxNC0wNS0wMiAxNTowODoyMS4xNTQzMTk2NTEgLTA3MDAKLSsrKyBtZGFkbS0zLjMvc3VwZXItaW50ZWwuYwkyMDE0LTA1LTAyIDE1OjA5OjMxLjQ3MDk4NTc5NCAtMDcwMAotQEAgLTUwNjAsNyArNTA2MCw3IEBACi0gCXNwYXJlLT5jYWNoZV9zaXplID0gbXBiLT5jYWNoZV9zaXplLAotIAlzcGFyZS0+cHdyX2N5Y2xlX2NvdW50ID0gX19jcHVfdG9fbGUzMigxKSwKKy0tLSBtZGFkbS00LjAub3JpZy9zdXBlci1pbnRlbC5jCisrKysgbWRhZG0tNC4wL3N1cGVyLWludGVsLmMKK0BAIC01NzI1LDcgKzU3MjUsNyBAQCBzdGF0aWMgaW50IHdyaXRlX3N1cGVyX2ltc21fc3BhcmVzKHN0cnVjCisgCXNwYXJlLT5jYWNoZV9zaXplID0gbXBiLT5jYWNoZV9zaXplOworIAlzcGFyZS0+cHdyX2N5Y2xlX2NvdW50ID0gX19jcHVfdG9fbGUzMigxKTsKICAKIC0Jc25wcmludGYoKGNoYXIgKikgc3BhcmUtPnNpZywgTUFYX1NJR05BVFVSRV9MRU5HVEgsCiArCSh2b2lkKXNucHJpbnRmKChjaGFyICopIHNwYXJlLT5zaWcsIE1BWF9TSUdOQVRVUkVfTEVOR1RILApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjMuMl94MzJfYWJpX3RpbWVfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4zLjJfeDMyX2FiaV90aW1lX3QucGF0Y2gKaW5kZXggYzY1NmQwNy4uMDBlNjY1NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjMuMl94MzJfYWJpX3RpbWVfdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL21kYWRtLTMuMy4yX3gzMl9hYmlfdGltZV90LnBhdGNoCkBAIC01LDEzICs1LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogCi1JbmRleDogbWRhZG0tMy4zLjQvbW9uaXRvci5jCitJbmRleDogbWRhZG0tNC4wL21vbml0b3IuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1kYWRtLTMuMy40Lm9yaWcvbW9uaXRvci5jCi0rKysgbWRhZG0tMy4zLjQvbW9uaXRvci5jCi1AQCAtMjU3LDkgKzI1NywxMiBAQCBzdGF0aWMgaW50IHJlYWRfYW5kX2FjdChzdHJ1Y3QgYWN0aXZlX2FyCi0gCQkJbWRpLT5jdXJyX3N0YXRlID0gcmVhZF9kZXZfc3RhdGUobWRpLT5zdGF0ZV9mZCk7Ci0gCQl9CistLS0gbWRhZG0tNC4wLm9yaWcvbW9uaXRvci5jCisrKysgbWRhZG0tNC4wL21vbml0b3IuYworQEAgLTQ0NSw5ICs0NDUsMTIgQEAgc3RhdGljIGludCByZWFkX2FuZF9hY3Qoc3RydWN0IGFjdGl2ZV9hcgorIAkJaWYgKEZEX0lTU0VUKG1kaS0+YmJfZmQsIGZkcykpCisgCQkJY2hlY2tfZm9yX2NsZWFyZWRfYmIoYSwgbWRpKTsKICAJfQogLQogIAlnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIKaW5kZXggMWEzMWE4Ny4uZTZhZmUyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIKQEAgLTI3LDMgKzI3LDQgQEAKIAlmb3IgZCBpbiBkb2MgZXh0cmFzIG1hbiBsaWIgc3JjOyBkbyBtYWtlIC1DICRkIERFU1RESVI9JHtEfSBpbnN0YWxsOyBkb25lCiB9CiAKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJscnpzeiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9uZXQtdG9vbHMtMS42MC1zY3RwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9uZXQtdG9vbHMtMS42MC1zY3RwMS5wYXRjaAppbmRleCAxMmVlZDE3Li43OGRhZjZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLTEuNjAtc2N0cDEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy0xLjYwLXNjdHAxLnBhdGNoCkBAIC0xMSwxMCArMTEsMTAgQEAKICBzdGF0aXN0aWNzLmMgfCAgNjggKysrKysrKysrLQogIDIgZmlsZXMgY2hhbmdlZCwgNDY1IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvbmV0c3RhdC5jIGIvbmV0c3RhdC5jCi1pbmRleCAxZmI5ZTBjLi41ZDFhNGExIDEwMDY0NAotLS0tIGEvbmV0c3RhdC5jCi0rKysgYi9uZXRzdGF0LmMKK0luZGV4OiBuZXQtdG9vbHMtMS42MC9uZXRzdGF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXQtdG9vbHMtMS42MC5vcmlnL25ldHN0YXQuYworKysrIG5ldC10b29scy0xLjYwL25ldHN0YXQuYwogQEAgLTU4LDYgKzU4LDcgQEAKICAgKgogICAqOTkwNDIwIHsxLjM4fSBUdWFuIEhvYW5nICAgICAgICAgICAgICByZW1vdmVkIGEgdXNlbGVzcyBhc3NpZ25tZW50IGZyb20gaWdtcF9kb19vbmUoKQpAQCAtMjMsNyArMjMsNyBAQAogICAqCiAgICogICAgICAgICAgICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAogICAqICAgICAgICAgICAgICBhbmQvb3IgIG1vZGlmeSBpdCB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwKLUBAIC0xMDUsNyArMTA2LDcgQEAKK0BAIC0xMDYsNyArMTA3LDcgQEAKICAjZW5kaWYKICAKICAvKiBwcm90b3R5cGVzIGZvciBzdGF0aXN0aWNzLmMgKi8KQEAgLTMyLDcgKzMyLDcgQEAKICB2b2lkIGluaXR0YWIodm9pZCk7CiAgdm9pZCBwYXJzZXNubXA2KGludCwgaW50LCBpbnQpOwogIHZvaWQgaW5pdHRhYjYodm9pZCk7Ci1AQCAtMTE4LDYgKzExOSwyOCBAQCB0eXBlZGVmIGVudW0geworQEAgLTExOSw2ICsxMjAsMjggQEAgdHlwZWRlZiBlbnVtIHsKICAgICAgU1NfRElTQ09OTkVDVElORwkJLyogaW4gcHJvY2VzcyBvZiBkaXNjb25uZWN0aW5nICAqLwogIH0gc29ja2V0X3N0YXRlOwogIApAQCAtNjEsNyArNjEsNyBAQAogICNkZWZpbmUgU09fQUNDRVBUQ09OICAgICgxPDwxNikJLyogcGVyZm9ybWVkIGEgbGlzdGVuICAgICAgICAgICAqLwogICNkZWZpbmUgU09fV0FJVERBVEEgICAgICgxPDwxNykJLyogd2FpdCBkYXRhIHRvIHJlYWQgICAgICAgICAgICAqLwogICNkZWZpbmUgU09fTk9TUEFDRSAgICAgICgxPDwxOCkJLyogbm8gc3BhY2UgdG8gd3JpdGUgICAgICAgICAgICAqLwotQEAgLTE0OCw2ICsxNzEsNyBAQCBpbnQgZmxhZ19vcHQgPSAwOworQEAgLTE0OSw2ICsxNzIsNyBAQCBpbnQgZmxhZ19vcHQgPSAwOwogIGludCBmbGFnX3JhdyA9IDA7CiAgaW50IGZsYWdfdGNwID0gMDsKICBpbnQgZmxhZ191ZHAgPSAwOwpAQCAtNjksNyArNjksNyBAQAogIGludCBmbGFnX2lnbXA9IDA7CiAgaW50IGZsYWdfcm9tID0gMDsKICBpbnQgZmxhZ19leHAgPSAxOwotQEAgLTk5MCw2ICsxMDE0LDM2NSBAQCBzdGF0aWMgaW50IHVkcF9pbmZvKHZvaWQpCitAQCAtOTk1LDYgKzEwMTksMzY1IEBAIHN0YXRpYyBpbnQgdWRwX2luZm8odm9pZCkKICAJICAgICAgIHVkcF9kb19vbmUpOwogIH0KICAKQEAgLTQzNSw3ICs0MzUsNyBAQAogIHN0YXRpYyB2b2lkIHJhd19kb19vbmUoaW50IGxuciwgY29uc3QgY2hhciAqbGluZSkKICB7CiAgICAgIGNoYXIgYnVmZmVyWzgxOTJdLCBsb2NhbF9hZGRyWzY0XSwgcmVtX2FkZHJbNjRdOwotQEAgLTE1NDksNyArMTkzMiw3IEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCitAQCAtMTU1OCw3ICsxOTQxLDcgQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKICAgICAgZnByaW50ZihzdGRlcnIsIF8oIiAgICAgICAgLUYsIC0tZmliICAgICAgICAgICAgICAgIGRpc3BsYXkgRm9yd2FyZGluZyBJbmZvcm1hdGlvbiBCYXNlIChkZWZhdWx0KVxuIikpOwogICAgICBmcHJpbnRmKHN0ZGVyciwgXygiICAgICAgICAtQywgLS1jYWNoZSAgICAgICAgICAgICAgZGlzcGxheSByb3V0aW5nIGNhY2hlIGluc3RlYWQgb2YgRklCXG5cbiIpKTsKICAKQEAgLTQ0NCw3ICs0NDQsNyBAQAogICAgICBmcHJpbnRmKHN0ZGVyciwgXygiICA8QUY+PVVzZSAnLTZ8LTQnIG9yICctQSA8YWY+JyBvciAnLS08YWY+JzsgZGVmYXVsdDogJXNcbiIpLCBERkxUX0FGKTsKICAgICAgZnByaW50ZihzdGRlcnIsIF8oIiAgTGlzdCBvZiBwb3NzaWJsZSBhZGRyZXNzIGZhbWlsaWVzICh3aGljaCBzdXBwb3J0IHJvdXRpbmcpOlxuIikpOwogICAgICBwcmludF9hZmxpc3QoMSk7IC8qIDEgPSByb3V0ZWFibGUgKi8KLUBAIC0xNTc0LDYgKzE5NTcsNyBAQCBpbnQgbWFpbgorQEAgLTE1ODMsNiArMTk2Niw3IEBAIGludCBtYWluCiAgCXsicHJvdG9jb2wiLCAxLCAwLCAnQSd9LAogIAl7InRjcCIsIDAsIDAsICd0J30sCiAgCXsidWRwIiwgMCwgMCwgJ3UnfSwKQEAgLTQ1Miw3ICs0NTIsNyBAQAogIAl7InJhdyIsIDAsIDAsICd3J30sCiAgCXsidW5peCIsIDAsIDAsICd4J30sCiAgCXsibGlzdGVuaW5nIiwgMCwgMCwgJ2wnfSwKLUBAIC0xNjA0LDcgKzE5ODgsNyBAQCBpbnQgbWFpbgorQEAgLTE2MTMsNyArMTk5Nyw3IEBAIGludCBtYWluCiAgICAgIGdldHJvdXRlX2luaXQoKTsJCS8qIFNldCB1cCBBRiByb3V0aW5nIHN1cHBvcnQgKi8KICAKICAgICAgYWZuYW1lWzBdID0gJ1wwJzsKQEAgLTQ2MSw3ICs0NjEsNyBAQAogIAlzd2l0Y2ggKGkpIHsKICAJY2FzZSAtMToKICAJICAgIGJyZWFrOwotQEAgLTE2OTYsMTAgKzIwODAsMTIgQEAgaW50IG1haW4KK0BAIC0xNzA1LDEwICsyMDg5LDEyIEBAIGludCBtYWluCiAgCWNhc2UgJ3QnOgogIAkgICAgZmxhZ190Y3ArKzsKICAJICAgIGJyZWFrOwpAQCAtNDc1LDcgKzQ3NSw3IEBACiAgCWNhc2UgJ3cnOgogIAkgICAgZmxhZ19yYXcrKzsKICAJICAgIGJyZWFrOwotQEAgLTE3MTcsMTMgKzIxMDMsMTMgQEAgaW50IG1haW4KK0BAIC0xNzI2LDEzICsyMTEyLDEzIEBAIGludCBtYWluCiAgICAgIGlmIChmbGFnX2ludCArIGZsYWdfcm91ICsgZmxhZ19tYXMgKyBmbGFnX3N0YSA+IDEpCiAgCXVzYWdlKCk7CiAgCkBAIC00OTMsNyArNDkzLDcgQEAKICAJKyBmbGFnX2F4MjUgKyBmbGFnX25ldHJvbSArIGZsYWdfaWdtcCArIGZsYWdfeDI1OwogIAogICAgICBpZiAoZmxhZ19tYXMpIHsKLUBAIC0xNzUxLDcgKzIxMzcsNyBAQCBpbnQgbWFpbgorQEAgLTE3NjAsNyArMjE0Niw3IEBAIGludCBtYWluCiAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwogICAgICAgICAgaWYgKCFhZm5hbWVbMF0pIHsKICAgICAgICAgICAgICBpbml0dGFiKCk7CkBAIC01MDIsNyArNTAyLDcgQEAKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgc2FmZV9zdHJuY3B5KGJ1ZiwgYWZuYW1lLCBzaXplb2YoYnVmKSk7CiAgICAgICAgICAgICAgdG1wMSA9IGJ1ZjsKLUBAIC0xODA0LDcgKzIxOTAsNyBAQCBpbnQgbWFpbgorQEAgLTE4MTUsNyArMjIwMSw3IEBAIGludCBtYWluCiAgCXJldHVybiAoaSk7CiAgICAgIH0KICAgICAgZm9yICg7OykgewpAQCAtNTExLDcgKzUxMSw3IEBACiAgI2lmIEhBVkVfQUZJTkVUCiAgCSAgICBwcmdfY2FjaGVfbG9hZCgpOwogIAkgICAgcHJpbnRmKF8oIkFjdGl2ZSBJbnRlcm5ldCBjb25uZWN0aW9ucyAiKSk7CS8qIHh4eCAqLwotQEAgLTE4NDMsNiArMjIyOSwxMSBAQCBpbnQgbWFpbgorQEAgLTE4NTQsNiArMjI0MCwxMSBAQCBpbnQgbWFpbgogIAkgICAgaWYgKGkpCiAgCQlyZXR1cm4gKGkpOwogIAl9CkBAIC01MjMsMTAgKzUyMywxMCBAQAogIAlpZiAoIWZsYWdfYXJnIHx8IGZsYWdfcmF3KSB7CiAgCSAgICBpID0gcmF3X2luZm8oKTsKICAJICAgIGlmIChpKQotZGlmZiAtLWdpdCBhL3N0YXRpc3RpY3MuYyBiL3N0YXRpc3RpY3MuYwotaW5kZXggMDM2MDBkNy4uZWI4ZDdkYyAxMDA2NDQKLS0tLSBhL3N0YXRpc3RpY3MuYwotKysrIGIvc3RhdGlzdGljcy5jCitJbmRleDogbmV0LXRvb2xzLTEuNjAvc3RhdGlzdGljcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXRvb2xzLTEuNjAub3JpZy9zdGF0aXN0aWNzLmMKKysrKyBuZXQtdG9vbHMtMS42MC9zdGF0aXN0aWNzLmMKIEBAIC0yMSw3ICsyMSw3IEBACiAgI2RlZmluZSBVRldBUk4oeCkKICAjZW5kaWYKQEAgLTUzNyw3ICs1MzcsNyBAQAogIGVudW0gU3RhdGUgewogICAgICBudW1iZXIgPSAwLCBvcHRfbnVtYmVyLCBpX2ZvcndhcmQsIGlfaW5wX2ljbXAsIGlfb3V0cF9pY21wLCBpX3J0b19hbGcsCiBAQCAtMjk3LDYgKzI5NywyNyBAQCBzdHJ1Y3QgZW50cnkgVGNwZXh0dGFiW10gPQotICAgICB7ICJUQ1BSZW5vUmVjb3ZlcnlGYWlsIiwgTl8oIiV1IGNsYXNzaWMgUmVubyBmYXN0IHJldHJhbnNtaXRzIGZhaWxlZCIpLCBvcHRfbnVtYmVyIH0sCisgICAgIHsgIlRDUFJlbm9SZWNvdmVyeUZhaWwiLCBOXygiJWxsdSBjbGFzc2ljIFJlbm8gZmFzdCByZXRyYW5zbWl0cyBmYWlsZWQiKSwgb3B0X251bWJlciB9LAogIH07CiAgCiArc3RydWN0IGVudHJ5IFNjdHB0YWJbXSA9CkBAIC02MTYsNyArNjE2LDcgQEAKICAgICAgZiA9IHByb2NfZm9wZW4oIi9wcm9jL25ldC9zbm1wIik7CiAgICAgIGlmICghZikgewogIAlwZXJyb3IoXygiY2Fubm90IG9wZW4gL3Byb2MvbmV0L3NubXAiKSk7Ci1AQCAtNTMwLDYgKzU4MCwxNiBAQCB2b2lkIHBhcnNlc25tcChpbnQgZmxhZ19yYXcsIGludCBmbGFnX3RjcCwgaW50IGZsYWdfdWRwKQorQEAgLTUzMCw2ICs1ODAsMTYgQEAgdm9pZCBwYXJzZXNubXAoaW50IGZsYWdfcmF3LCBpbnQgZmxhZ190YwogICAgICAKICAgICAgICAgIGZjbG9zZShmKTsKICAgICAgfQpAQCAtNjMzLDYgKzYzMywzIEBACiAgICAgIHJldHVybjsKICB9CiAgICAgIAotLS0gCi0xLjguNS4yLjIzMy5nOTMyZjdlNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvY3Jvc3NfYXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvY3Jvc3NfYXIucGF0Y2gKaW5kZXggMDMwMDdhYS4uODZjYzBiZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2Nyb3NzX2FyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9maWxlcy9jcm9zc19hci5wYXRjaApAQCAtMTgsMTggKzE4LDE5IEBACiAgY29uZmlndXJlLmFjIHwgNCArKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgorSW5kZXg6IG5ld3QtMC41Mi4yMC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ld3QtMC41Mi4yMC5vcmlnL01ha2VmaWxlLmluCisrKysgbmV3dC0wLjUyLjIwL01ha2VmaWxlLmluCiBAQCAtNyw2ICs3LDcgQEAgQ0ZMQUdTID0gQENGTEFHU0AKICBMREZMQUdTID0gQExERkxBR1NACi0gQ1BQRkxBR1MgPSAtRF9HTlVfU09VUkNFIEBDUFBGTEFHU0AgCisgQ1BQRkxBR1MgPSAtRF9HTlVfU09VUkNFIEBDUFBGTEFHU0AKICBHTlVfTEQgPSBAR05VX0xEQAogK0FSID0gQEFSQAogIAogIFZFUlNJT04gPSBAVkVSU0lPTkAKICBUQUcgPSByJChzdWJzdCAuLC0sJChWRVJTSU9OKSkKLUBAIC0xMDksNyArMTEwLDcgQEAgd2hpcHRjbC4kKFNPRVhUKTogJChXSElQVENMT0JKUykgJChMSUJORVdUU0gpCitAQCAtMTA5LDcgKzExMCw3IEBAIHdoaXB0Y2wuJChTT0VYVCk6ICQoV0hJUFRDTE9CSlMpICQoTElCTkUKICAJJChDQykgLXNoYXJlZCAkKFNIQ0ZMQUdTKSAkKExERkxBR1MpIC1vIHdoaXB0Y2wuJChTT0VYVCkgJChXSElQVENMT0JKUykgLUwuIC1sbmV3dCAgJChMSUJUQ0wpIC1scG9wdCAkKExJQlMpCiAgCiAgJChMSUJORVdUKTogJChMSUJPQkpTKQpAQCAtMzgsMTAgKzM5LDEwIEBACiAgCiAgbmV3dC5vICQoU0hBUkVERElSKS9uZXd0Lm86IG5ld3QuYyBNYWtlZmlsZQogIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTJlNmRhOC4uY2Q4M2Q1NyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCitJbmRleDogbmV3dC0wLjUyLjIwL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ld3QtMC41Mi4yMC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG5ld3QtMC41Mi4yMC9jb25maWd1cmUuYWMKIEBAIC0xNSw2ICsxNSwxMCBAQCBBQ19QUk9HX0lOU1RBTEwKICBBQ19QUk9HX0xOX1MKICBBQ19QUk9HX0dSRVAKQEAgLTUxLDggKzUyLDUgQEAKICtBQ19ERUZVTihbQUNfUFJPR19BUl0sIFtBQ19DSEVDS19UT09MKEFSLCBhciwgOildKQogK0FDX1BST0dfQVIKICAKLSAjIEFyZSB3ZSB1c2luZyBHTlUgbGQ/Ci0gQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIGxkXSkKLS0tIAotMS44LjEuMgotCisgQUNfQ0hFQ0tfU0laRU9GKFtsb25nXSkKKyBBQ19DSEVDS19TSVpFT0YoW2xvbmcgbG9uZ10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgppbmRleCBmZGVkZTU5Li45MDAyZmJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKQEAgLTg5LDcgKzg5LDYgQEAKICAgICBta3RlbXAgXAogICAgIG5jdXJzZXMgXAogICAgIG5ldC10b29scyBcCi0gICAgcGF4IFwKICAgICBwb3B0IFwKICAgICBwcm9jcHMgXAogICAgIHBzbWlzYyBcCkBAIC0xNDAsMTkgKzEzOSwxMyBAQAogICAgIGJ6aXAyIFwKICAgICBjcm9uaWUgXAogICAgIGRidXMgXAotICAgIGRidXMtZ2xpYiBcCiAgICAgZWxmdXRpbHMgXAogICAgIGd6aXAgXAogICAgIGxlc3MgXAotICAgIGxpYmNhcCBcCi0gICAgbGliZXZlbnQgXAogICAgIGxvZ3JvdGF0ZSBcCiAgICAgbmZzLXV0aWxzIFwKICAgICBwY2l1dGlscyBcCi0gICAgbGlicGNyZSBcCiAgICAgcnBjYmluZCBcCi0gICAgc3lzZnN1dGlscyBcCiAgICAgdGNwLXdyYXBwZXJzIFwKICAgICB0emRhdGEgXAogICAgICIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKaW5kZXggNWJhYWYzNS4uNTNkMTAwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCkBAIC0xNCwxMiArMTQsMTUgQEAKICMgbGliZ2x1IG5lZWRzIHZpcnR1YWwvbGliZ2wsIHdoaWNoIHJlcXVpcmVzIG9wZW5nbCBpbiBESVNUUk9fRkVBVFVSRVMKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAib3BlbmdsIgogCisjIGxpYnBhbSwgcGFtLXBsdWdpbi13aGVlbCByZXF1aXJlcyBwYW0gaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gInBhbSIKKwogIwogIyBXZSB3aWxsIHNraXAgcGFyc2luZyB0aGlzIHBhY2thZ2VnZW91cCBmb3Igbm9uLWdsaWJjIHN5c3RlbXMKICMKIHB5dGhvbiBfX2Fub255bW91cyAoKSB7CiAgICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpICE9ICJnbGliYyI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpbmNvbXBhdGlibGUgd2l0aCAlcyBDIGxpYnJhcnkiICUKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggJXMgQyBsaWJyYXJ5IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdUQ0xJQkMnKSkKIH0KIApAQCAtNjgsNyArNzEsNiBAQAogICAgIG1jLWhlbHBlcnMtcGVybCBcCiAgICAgbWRhZG0gXAogICAgIG1pbmljb20gXAotICAgIG5lb24gXAogICAgIHBhcnRlZCBcCiAgICAgcXVvdGEgXAogICAgIHNjcmVlbiBcCkBAIC0xNTksNyArMTYxLDYgQEAKICAgICBta3RlbXAgXAogICAgIG1zbXRwIFwKICAgICBwYXRjaCBcCi0gICAgcGF4IFwKICAgICBwcm9jcHMgXAogICAgIHBzbWlzYyBcCiAgICAgc2VkIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMucGF0Y2gKaW5kZXggYmU2ODc0NS4uN2VkZjY2ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMucGF0Y2gKQEAgLTMsMTggKzMsMjAgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLYW5nIEthaSA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLSBMaW51eC1QQU0tMS4xLjQveHRlc3RzL01ha2VmaWxlLmFtLm9yaWcJMjAxMS0wNy0xOSAxNzowMDowOS42MTk5ODAwMDEgKzA4MDAKLSsrKyBMaW51eC1QQU0tMS4xLjQveHRlc3RzL01ha2VmaWxlLmFtCTIwMTEtMDctMTkgMTY6NTQ6MDAuMjI5OTc5OTk4ICswODAwCi1AQCAtNyw3ICs3LDcgQEAKLSBBTV9MREZMQUdTID0gLUwkKHRvcF9idWlsZGRpcikvbGlicGFtIC1scGFtIFwKLSAJLUwkKHRvcF9idWlsZGRpcikvbGlicGFtX21pc2MgLWxwYW1fbWlzYworSW5kZXg6IExpbnV4LVBBTS0xLjMuMC94dGVzdHMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMaW51eC1QQU0tMS4zLjAub3JpZy94dGVzdHMvTWFrZWZpbGUuYW0KKysrKyBMaW51eC1QQU0tMS4zLjAveHRlc3RzL01ha2VmaWxlLmFtCitAQCAtNyw3ICs3LDcgQEAgQU1fQ0ZMQUdTID0gLURMSUJQQU1fQ09NUElMRSAtSSQodG9wX3NyYworIExEQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYnBhbS9saWJwYW0ubGEgXAorIAkkKHRvcF9idWlsZGRpcikvbGlicGFtX21pc2MvbGlicGFtX21pc2MubGEKICAKIC1DTEVBTkZJTEVTID0gKn4gJChYVEVTVFMpCiArQ0xFQU5GSUxFUyA9ICp+CiAgCiAgRVhUUkFfRElTVCA9IHJ1bi14dGVzdHMuc2ggdHN0LXBhbV9kaXNwYXRjaDEucGFtZCB0c3QtcGFtX2Rpc3BhdGNoMi5wYW1kIFwKICAJdHN0LXBhbV9kaXNwYXRjaDMucGFtZCB0c3QtcGFtX2Rpc3BhdGNoNC5wYW1kIFwKLUBAIC01MSwzICs1MSwxOCBAQAorQEAgLTUxLDMgKzUxLDE4IEBAIEVYVFJBX1BST0dSQU1TID0gJChYVEVTVFMpCiAgCiAgeHRlc3RzOiAkKFhURVNUUykgcnVuLXh0ZXN0cy5zaAogIAkiJChzcmNkaXIpIi9ydW4teHRlc3RzLnNoICIkKHNyY2RpcikiICR7WFRFU1RTfSAke05PU1JDVEVTVFN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tc2VjdXJpdHktYWJzdHJhY3Qtc2VjdXJldHR5LWhhbmRsaW5nLnBhdGNoCmluZGV4IGYxODM0ZjYuLjliOGQ0YzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tc2VjdXJpdHktYWJzdHJhY3Qtc2VjdXJldHR5LWhhbmRsaW5nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9wYW0tc2VjdXJpdHktYWJzdHJhY3Qtc2VjdXJldHR5LWhhbmRsaW5nLnBhdGNoCkBAIC01LDEyICs1LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotZGlmZiAtdXJwTiBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbSBiL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQotLS0tIGEvbW9kdWxlcy9wYW1fc2VjdXJldHR5L01ha2VmaWxlLmFtCTIwMTMtMDctMDUgMTE6MDg6MjMuMjI0NDgzMjM3ICswODAwCi0rKysgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0JMjAxMy0wNy0wNSAxMToxNToyMS4zMDQ0ODY0NTYgKzA4MDAKK0luZGV4OiBMaW51eC1QQU0tMS4zLjAvbW9kdWxlcy9wYW1fc2VjdXJldHR5L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTGludXgtUEFNLTEuMy4wLm9yaWcvbW9kdWxlcy9wYW1fc2VjdXJldHR5L01ha2VmaWxlLmFtCisrKysgTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQogQEAgLTI0LDYgKzI0LDEwIEBAIGVuZGlmCiAgc2VjdXJlbGliX0xUTElCUkFSSUVTID0gcGFtX3NlY3VyZXR0eS5sYQotIHBhbV9zZWN1cmV0dHlfbGFfTElCQUREID0gLUwkKHRvcF9idWlsZGRpcikvbGlicGFtIC1scGFtCisgcGFtX3NlY3VyZXR0eV9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvbGlicGFtL2xpYnBhbS5sYQogIAogK3BhbV9zZWN1cmV0dHlfbGFfU09VUkNFUyA9CVwKICsJcGFtX3NlY3VyZXR0eS5jCQlcCkBAIC0xOSw5ICsyMCwxMCBAQAogIGlmIEVOQUJMRV9SRUdFTkVSQVRFX01BTgogIG5vaW5zdF9EQVRBID0gUkVBRE1FCiAgUkVBRE1FOiBwYW1fc2VjdXJldHR5LjgueG1sCi1kaWZmIC11cnBOIGEvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3BhbV9zZWN1cmV0dHkuYyBiL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMKLS0tLSBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMJMjAxMy0wNy0wNSAxMTowNzo1MC4wNjQ0ODM1NjggKzA4MDAKLSsrKyBiL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMJMjAxMy0wNy0wNSAxMToxMjoyMy45OTQ0ODMzNDQgKzA4MDAKK0luZGV4OiBMaW51eC1QQU0tMS4zLjAvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3BhbV9zZWN1cmV0dHkuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExpbnV4LVBBTS0xLjMuMC5vcmlnL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMKKysrKyBMaW51eC1QQU0tMS4zLjAvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3BhbV9zZWN1cmV0dHkuYwogQEAgLTEsNyArMSw1IEBACiAgLyogcGFtX3NlY3VyZXR0eSBtb2R1bGUgKi8KICAKQEAgLTEwNCw5ICsxMDYsMTAgQEAKICAKICAgICAgaWYgKHJldHZhbCAmJiAhKGN0cmwgJiBQQU1fTk9DT05TT0xFX0FSRykpIHsKICAgICAgICAgIEZJTEUgKmNtZGxpbmVmaWxlOwotZGlmZiAtdXJwTiBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS90dHlfc2VjdXJlLmMgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jCi0tLS0gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jCTE5NzAtMDEtMDEgMDg6MzA6MDAuMDAwMDAwMDAwICswODMwCi0rKysgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jCTIwMTMtMDctMDUgMTE6MTQ6MjEuNTM0NDgyOTAwICswODAwCitJbmRleDogTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS90dHlfc2VjdXJlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKKysrKyBMaW51eC1QQU0tMS4zLjAvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwogQEAgLTAsMCArMSw5MCBAQAogKy8qCiArICogQSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGxpbmUgaXMgaW4gL2V0Yy9zZWN1cmV0dHkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgppbmRleCA4Zjc3NTNkLi45MmFiNzJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCkBAIC0xNTEsMTEgKzE1MSw4IEBACiAJZmkKIH0KIAotcHl0aG9uIGRvX3BhbV9zYW5pdHkgKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgYmIud2FybigiQnVpbGRpbmcgbGlicGFtIGJ1dCAncGFtJyBpc24ndCBpbiBESVNUUk9fRkVBVFVSRVMsIFBBTSB3b24ndCB3b3JrIGNvcnJlY3RseSIpCi19Ci1hZGR0YXNrIHBhbV9zYW5pdHkgYmVmb3JlIGRvX2NvbmZpZ3VyZQoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIG5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ub19jaGVjay5wYXRjaAppbmRleCA1OGQ4ZGI0Li5lNmEyNmQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ub19jaGVjay5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ub19jaGVjay5wYXRjaApAQCAtNSwxMiArNSwxMiBAQAogCiBSUCAtIDQvMTEvMDgKIAotSW5kZXg6IHBhcnRlZC0xLjkuMC9jb25maWd1cmUuYWMKK0luZGV4OiBwYXJ0ZWQtMy4yL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBhcnRlZC0xLjkuMC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDA5LTA3LTIzIDE4OjUyOjA4LjAwMDAwMDAwMCArMDEwMAotKysrIHBhcnRlZC0xLjkuMC9jb25maWd1cmUuYWMJMjAxMC0wMi0wMiAxNDoxMzo1Ni4wMTM5MDUwOTMgKzAwMDAKLUBAIC00NzcsNyArNDc3LDcgQEAKLSBBTV9DT05ESVRJT05BTChbQlVJTERfTElOVVhdLCBbdGVzdCAiJE9TIiA9IGxpbnV4XSkKKy0tLSBwYXJ0ZWQtMy4yLm9yaWcvY29uZmlndXJlLmFjCisrKysgcGFydGVkLTMuMi9jb25maWd1cmUuYWMKK0BAIC01NTUsNyArNTU1LDcgQEAgQUNfQ0hFQ0tfSEVBREVSKFtleGVjaW5mby5oXSwgWworIEFNX0NPTkRJVElPTkFMKFtDT01QSUxFX0ZPUl9TMzkwXSwgW3Rlc3QgIiRob3N0X2NwdSIgPSBzMzkwIHx8IHRlc3QgIiRob3N0X2NwdSIgPSBzMzkweF0pCiAgCiAgZG5sIGNoZWNrIGZvciAiY2hlY2siLCB1bml0IHRlc3RpbmcgbGlicmFyeS9oZWFkZXIKIC1QS0dfQ0hFQ0tfTU9EVUxFUyhbQ0hFQ0tdLCBbY2hlY2sgPj0gMC45LjNdLCBoYXZlX2NoZWNrPXllcywgaGF2ZV9jaGVjaz1ubykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvc3lzY2FsbHMucGF0Y2gKaW5kZXggZTliYmU5YS4uOTMyMDVhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvc3lzY2FsbHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvc3lzY2FsbHMucGF0Y2gKQEAgLTQsMTAgKzQsMTAgQEAKICBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgICAxMyArKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykKIAotSW5kZXg6IHBhcnRlZC0xLjkuMC9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCitJbmRleDogcGFydGVkLTMuMi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGFydGVkLTEuOS4wLm9yaWcvbGlicGFydGVkL2FyY2gvbGludXguYwkyMDA5LTA3LTIzIDE4OjUyOjA4LjAwMDAwMDAwMCArMDEwMAotKysrIHBhcnRlZC0xLjkuMC9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCTIwMTAtMDItMDIgMTQ6MTQ6MTYuNTIzOTA0NzY4ICswMDAwCistLS0gcGFydGVkLTMuMi5vcmlnL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKKysrKyBwYXJ0ZWQtMy4yL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKIEBAIC0xNyw2ICsxNyw4IEBACiAgCiAgI2RlZmluZSBQUk9DX0RFVklDRVNfQlVGU0laIDE2Mzg0CkBAIC0xNiw4ICsxNiw4IEBACiArCiAgI2luY2x1ZGUgPGNvbmZpZy5oPgogICNpbmNsdWRlIDxhcmNoL2xpbnV4Lmg+Ci0gCi1AQCAtMTQ3NywxMiArMTQ3OSwxNCBAQAorICNpbmNsdWRlIDxsaW51eC9ibGtwZy5oPgorQEAgLTE2OTYsMTIgKzE2OTgsMTQgQEAgbGludXhfcmVmcmVzaF9jbG9zZSAoUGVkRGV2aWNlKiBkZXYpCiAgCiAgI2lmIFNJWkVPRl9PRkZfVCA8IDgKICAKQEAgLTMyLDcgKzMyLDcgQEAKICAKICBsb2ZmX3QKICBsbHNlZWsgKHVuc2lnbmVkIGludCBmZCwgbG9mZl90IG9mZnNldCwgdW5zaWduZWQgaW50IHdoZW5jZSkKLUBAIC0xNDkwLDExICsxNDk0LDIwIEBACitAQCAtMTcwOSwxMSArMTcxMywyMCBAQCBsbHNlZWsgKHVuc2lnbmVkIGludCBmZCwgbG9mZl90IG9mZnNldCwKICAgICAgICAgIGxvZmZfdCByZXN1bHQ7CiAgICAgICAgICBpbnQgcmV0dmFsOwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1BZGQtYS1jb21tZW50LWZvci1mYWxsdGhyb3VnaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc2Zjg1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1BZGQtYS1jb21tZW50LWZvci1mYWxsdGhyb3VnaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gZTY3YmIzZGViZTU4MmYwZTc3NzcwYjcxNGJkMDEyYmIxMDgyZmM0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE5IEFwciAyMDE3IDExOjMyOjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIGNvbW1lbnQgZm9yIGZhbGx0aHJvdWdoCi0KLUZpeGVzIHdhcm5pbmdzIHdpdGggZ2NjNyBlLmcuCi0KLS4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL3BheC9zcmMvb3B0aW9ucy5jOiBJbiBmdW5jdGlvbiAndGFyX29wdGlvbnMnOgotLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvcGF4L3NyYy9vcHRpb25zLmM6NzI1Ojc6IGVycm9yOiB0aGlzIHN0YXRlbWVudCBtYXkgZmFsbCB0aHJvdWdoIFstV2Vycm9yPWltcGxpY2l0LWZhbGx0aHJvdWdoPV0KLSAgICBpZiAob3B0X2FkZCAoIndyaXRlX29wdD1ub2RpciIpIDwgMCkKLSAgICAgICBeCi0uLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9wYXgvc3JjL29wdGlvbnMuYzo3MzA6Mjogbm90ZTogaGVyZQotICBjYXNlICdPJzoKLSAgXn5+fgotY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvb3B0aW9ucy5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvb3B0aW9ucy5jIGIvc3JjL29wdGlvbnMuYwotaW5kZXggYzY2M2I0ZS4uYjgwODE5YSAxMDA2NDQKLS0tLSBhL3NyYy9vcHRpb25zLmMKLSsrKyBiL3NyYy9vcHRpb25zLmMKLUBAIC03MjQsNiArNzI0LDcgQEAgdGFyX29wdGlvbnMgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJY2FzZSAnbyc6Ci0gCSAgaWYgKG9wdF9hZGQgKCJ3cml0ZV9vcHQ9bm9kaXIiKSA8IDApCi0gCSAgICB0YXJfdXNhZ2UgKCk7Ci0rCSAgLyogZmFsbHRocnUgKi8KLSAJY2FzZSAnTyc6Ci0gCSAgT2ZsYWcgPSAxOwotIAkgIGJyZWFrOwotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYmYyZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyODcgKzAsMCBAQAotRnJvbSA0N2M0ZGI4ZDM3MjQ4ZDk2OGZhYzdlZTRhNzFjYTY0Mzk4ODkwNzIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBKYW4gMjAxNiAxMTo1NzoyMSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsCi0KLVJlbW92ZSBCU0Rpc21zCi1SZW1vdmUgZnRzLCBhbmQgbGluayB0byBsaWJmdHMgdGhhdHMgcHJvdmlkZWQgZXh0ZXJuYWxseQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbbXVzbCBzcGVjaWZpY10KLQotIGxpYi9NYWtlZmlsZS5hbSB8ICAgIDQgKy0KLSBsaWIvZnRzLmMgICAgICAgfCAxMDI1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBsaWIvZnRzLmggICAgICAgfCAgMTMxIC0tLS0tLS0KLSBsaWIvdmlzLmggICAgICAgfCAgIDEzICstCi0gc3JjL01ha2VmaWxlLmFtIHwgICAgMiArLQotIHNyYy9leHRlcm4uaCAgICB8ICAgIDIgLQotIHNyYy9maWxlX3N1YnMuYyB8ICAgIDIgKy0KLSBzcmMvdGFibGVzLmMgICAgfCAgICAyICstCi0gOCBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMTY3IGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWIvZnRzLmMKLSBkZWxldGUgbW9kZSAxMDA2NDQgbGliL2Z0cy5oCi0KLWRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KLWluZGV4IDU2ZDA4NTkuLjdmNTA0NWEgMTAwNjQ0Ci0tLS0gYS9saWIvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYi9NYWtlZmlsZS5hbQotQEAgLTgsOCArOCw4IEBAIEFVVE9NQUtFX09QVElPTlMgPSAxLjcgZ25pdHMKLSBDTEVBTkZJTEVTID0gKn4KLSAKLSBub2luc3RfTElCUkFSSUVTID0gbGliYnNkZnVuYy5hCi0tbm9pbnN0X0hFQURFUlMgPSB2aXMuaCBic2RmdW5jLmggZnRzLmgKLStub2luc3RfSEVBREVSUyA9IHZpcy5oIGJzZGZ1bmMuaAotIAotIEFNX0NGTEFHUyA9IEBFWFRSQV9DRkxBR1NACi0gCi0tbGliYnNkZnVuY19hX1NPVVJDRVMgPSB2aXMuYyBzdHJsY3B5LmMgc3RybW9kZS5jIGZ0cy5jCi0rbGliYnNkZnVuY19hX1NPVVJDRVMgPSB2aXMuYyBzdHJsY3B5LmMgc3RybW9kZS5jCi1kaWZmIC0tZ2l0IGEvbGliL2Z0cy5jIGIvbGliL2Z0cy5jCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDQ1ZTkwY2EuLjAwMDAwMDAKLS0tLSBhL2xpYi9mdHMuYwotKysrIC9kZXYvbnVsbAotQEAgLTEsMTAyNSArMCwwIEBACi0tLyotCi0tICogQ29weXJpZ2h0IChjKSAxOTkwLCAxOTkzLCAxOTk0Ci0tICogICAgICBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS0gKgotLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLSAqIGFyZSBtZXQ6Ci0tICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0tICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0tICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLSAqCi0tICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLS0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0tICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLS0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLS0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLS0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0tICogU1VDSCBEQU1BR0UuCi0tICovCi0tCi0tI2lmZGVmIEhBVkVfQ09ORklHX0gKLS0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmCi0tCi0tI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPGRpcmVudC5oPgotLSNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxmdHMuaD4KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDx1bmlzdGQuaD4KLS0KLS0vKiBMYXJnZXN0IGFsaWdubWVudCBzaXplIG5lZWRlZCwgbWludXMgb25lLgotLSAgIFVzdWFsbHkgbG9uZyBkb3VibGUgaXMgdGhlIHdvcnN0IGNhc2UuICAqLwotLSNpZm5kZWYgQUxJR05CWVRFUwotLSNkZWZpbmUgQUxJR05CWVRFUwkoX19hbGlnbm9mX18gKGxvbmcgZG91YmxlKSAtIDEpCi0tI2VuZGlmCi0tLyogQWxpZ24gUCB0byB0aGF0IHNpemUuICAqLwotLSNpZm5kZWYgQUxJR04KLS0jZGVmaW5lCUFMSUdOKHApCSgoKHVuc2lnbmVkIGxvbmcgaW50KSAocCkgKyBBTElHTkJZVEVTKSAmIH5BTElHTkJZVEVTKQotLSNlbmRpZgotLQotLQotLXN0YXRpYyBGVFNFTlQJKmZ0c19hbGxvYyAoRlRTICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLS1zdGF0aWMgRlRTRU5UCSpmdHNfYnVpbGQgKEZUUyAqLCBpbnQpOwotLXN0YXRpYyB2b2lkCSBmdHNfbGZyZWUgKEZUU0VOVCAqKTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xvYWQgKEZUUyAqLCBGVFNFTlQgKik7Ci0tc3RhdGljIHNpemVfdAkgZnRzX21heGFyZ2xlbiAoY2hhciAqIGNvbnN0ICopOwotLXN0YXRpYyB2b2lkCSBmdHNfcGFkanVzdCAoRlRTICosIEZUU0VOVCAqKTsKLS1zdGF0aWMgaW50CSBmdHNfcGFsbG9jIChGVFMgKiwgc2l6ZV90KTsKLS1zdGF0aWMgRlRTRU5UCSpmdHNfc29ydCAoRlRTICosIEZUU0VOVCAqLCBpbnQpOwotLXN0YXRpYyB1X3Nob3J0CSBmdHNfc3RhdCAoRlRTICosIEZUU0VOVCAqLCBpbnQpOwotLXN0YXRpYyBpbnQgICAgICBmdHNfc2FmZV9jaGFuZ2VkaXIgKEZUUyAqLCBGVFNFTlQgKiwgaW50LCBjb25zdCBjaGFyICopOwotLQotLSNpZm5kZWYgTUFYCi0tI2RlZmluZSBNQVgoYSwgYikJKGEgPiBiID8gYSA6IGIpCi0tI2VuZGlmCi0tCi0tI2RlZmluZQlJU0RPVChhKQkoYVswXSA9PSAnLicgJiYgKCFhWzFdIHx8IChhWzFdID09ICcuJyAmJiAhYVsyXSkpKQotLQotLSNkZWZpbmUgQ0xSKG9wdCkJKHNwLT5mdHNfb3B0aW9ucyAmPSB+KG9wdCkpCi0tI2RlZmluZQlJU1NFVChvcHQpCShzcC0+ZnRzX29wdGlvbnMgJiAob3B0KSkKLS0jZGVmaW5lCVNFVChvcHQpCShzcC0+ZnRzX29wdGlvbnMgfD0gKG9wdCkpCi0tCi0tI2RlZmluZQlGQ0hESVIoc3AsIGZkKQkoIUlTU0VUKEZUU19OT0NIRElSKSAmJiBmY2hkaXIoZmQpKQotLQotLSNkZWZpbmUJQlJFQUQJCTMJCS8qIGZ0c19yZWFkICovCi0tCi0tRlRTICoKLS1mdHNfb3Blbihhcmd2LCBrb3B0aW9ucywgY29tcGFyKQotLQljaGFyICogY29uc3QgKmFyZ3Y7Ci0tCXJlZ2lzdGVyIGludCBrb3B0aW9uczsKLS0JaW50ICgqY29tcGFyKSAoY29uc3QgRlRTRU5UICoqLCBjb25zdCBGVFNFTlQgKiopOwotLXsKLS0JcmVnaXN0ZXIgRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqcm9vdDsKLS0JcmVnaXN0ZXIgaW50IG5pdGVtczsKLS0JRlRTRU5UICpwYXJlbnQsICp0bXA7Ci0tCWludCBsZW47Ci0tCi0tdG1wID0gTlVMTDsJLyogc3RvcCBjb21waWxlciB3aGluZ2luZyAqLwotLQkvKiBPcHRpb25zIGNoZWNrLiAqLwotLQlpZiAoa29wdGlvbnMgJiB+RlRTX09QVElPTk1BU0spIHsKLS0JCWVycm5vID0gRUlOVkFMOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotLQotLQkvKiBBbGxvY2F0ZS9pbml0aWFsaXplIHRoZSBzdHJlYW0gKi8KLS0JaWYgKChzcCA9IG1hbGxvYygodV9pbnQpc2l6ZW9mKEZUUykpKSA9PSBOVUxMKQotLQkJcmV0dXJuIChOVUxMKTsKLS0JbWVtc2V0KHNwLCAwLCBzaXplb2YoRlRTKSk7Ci0tCXNwLT5mdHNfY29tcGFyID0gKGludCAoKikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgY29tcGFyOwotLQlzcC0+ZnRzX29wdGlvbnMgPSBrb3B0aW9uczsKLS0KLS0JLyogTG9naWNhbCB3YWxrcyB0dXJuIG9uIE5PQ0hESVI7IHN5bWJvbGljIGxpbmtzIGFyZSB0b28gaGFyZC4gKi8KLS0JaWYgKElTU0VUKEZUU19MT0dJQ0FMKSkKLS0JCVNFVChGVFNfTk9DSERJUik7Ci0tCi0tCS8qCi0tCSAqIFN0YXJ0IG91dCB3aXRoIDFLIG9mIHBhdGggc3BhY2UsIGFuZCBlbm91Z2gsIGluIGFueSBjYXNlLAotLQkgKiB0byBob2xkIHRoZSB1c2VyJ3MgcGF0aHMuCi0tCSAqLwotLSNpZm5kZWYgTUFYUEFUSExFTgotLSNkZWZpbmUgTUFYUEFUSExFTiAxMDI0Ci0tI2VuZGlmCi0tCWlmIChmdHNfcGFsbG9jKHNwLCBNQVgoZnRzX21heGFyZ2xlbihhcmd2KSwgTUFYUEFUSExFTikpKQotLQkJZ290byBtZW0xOwotLQotLQkvKiBBbGxvY2F0ZS9pbml0aWFsaXplIHJvb3QncyBwYXJlbnQuICovCi0tCWlmICgocGFyZW50ID0gZnRzX2FsbG9jKHNwLCAiIiwgMCkpID09IE5VTEwpCi0tCQlnb3RvIG1lbTI7Ci0tCXBhcmVudC0+ZnRzX2xldmVsID0gRlRTX1JPT1RQQVJFTlRMRVZFTDsKLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSByb290KHMpLiAqLwotLQlmb3IgKHJvb3QgPSBOVUxMLCBuaXRlbXMgPSAwOyAqYXJndiAhPSBOVUxMOyArK2FyZ3YsICsrbml0ZW1zKSB7Ci0tCQkvKiBEb24ndCBhbGxvdyB6ZXJvLWxlbmd0aCBwYXRocy4gKi8KLS0JCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPT0gMCkgewotLQkJCWVycm5vID0gRU5PRU5UOwotLQkJCWdvdG8gbWVtMzsKLS0JCX0KLS0KLS0JCXAgPSBmdHNfYWxsb2Moc3AsICphcmd2LCBsZW4pOwotLQkJcC0+ZnRzX2xldmVsID0gRlRTX1JPT1RMRVZFTDsKLS0JCXAtPmZ0c19wYXJlbnQgPSBwYXJlbnQ7Ci0tCQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19uYW1lOwotLQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgcCwgSVNTRVQoRlRTX0NPTUZPTExPVykpOwotLQotLQkJLyogQ29tbWFuZC1saW5lICIuIiBhbmQgIi4uIiBhcmUgcmVhbCBkaXJlY3Rvcmllcy4gKi8KLS0JCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRE9UKQotLQkJCXAtPmZ0c19pbmZvID0gRlRTX0Q7Ci0tCi0tCQkvKgotLQkJICogSWYgY29tcGFyaXNvbiByb3V0aW5lIHN1cHBsaWVkLCB0cmF2ZXJzZSBpbiBzb3J0ZWQKLS0JCSAqIG9yZGVyOyBvdGhlcndpc2UgdHJhdmVyc2UgaW4gdGhlIG9yZGVyIHNwZWNpZmllZC4KLS0JCSAqLwotLQkJaWYgKGNvbXBhcikgewotLQkJCXAtPmZ0c19saW5rID0gcm9vdDsKLS0JCQlyb290ID0gcDsKLS0JCX0gZWxzZSB7Ci0tCQkJcC0+ZnRzX2xpbmsgPSBOVUxMOwotLQkJCWlmIChyb290ID09IE5VTEwpCi0tCQkJCXRtcCA9IHJvb3QgPSBwOwotLQkJCWVsc2UgewotLQkJCQl0bXAtPmZ0c19saW5rID0gcDsKLS0JCQkJdG1wID0gcDsKLS0JCQl9Ci0tCQl9Ci0tCX0KLS0JaWYgKGNvbXBhciAmJiBuaXRlbXMgPiAxKQotLQkJcm9vdCA9IGZ0c19zb3J0KHNwLCByb290LCBuaXRlbXMpOwotLQotLQkvKgotLQkgKiBBbGxvY2F0ZSBhIGR1bW15IHBvaW50ZXIgYW5kIG1ha2UgZnRzX3JlYWQgdGhpbmsgdGhhdCB3ZSd2ZSBqdXN0Ci0tCSAqIGZpbmlzaGVkIHRoZSBub2RlIGJlZm9yZSB0aGUgcm9vdChzKTsgc2V0IHAtPmZ0c19pbmZvIHRvIEZUU19JTklUCi0tCSAqIHNvIHRoYXQgZXZlcnl0aGluZyBhYm91dCB0aGUgImN1cnJlbnQiIG5vZGUgaXMgaWdub3JlZC4KLS0JICovCi0tCWlmICgoc3AtPmZ0c19jdXIgPSBmdHNfYWxsb2Moc3AsICIiLCAwKSkgPT0gTlVMTCkKLS0JCWdvdG8gbWVtMzsKLS0Jc3AtPmZ0c19jdXItPmZ0c19saW5rID0gcm9vdDsKLS0Jc3AtPmZ0c19jdXItPmZ0c19pbmZvID0gRlRTX0lOSVQ7Ci0tCi0tCS8qCi0tCSAqIElmIHVzaW5nIGNoZGlyKDIpLCBncmFiIGEgZmlsZSBkZXNjcmlwdG9yIHBvaW50aW5nIHRvIGRvdCB0byBlbnN1cmUKLS0JICogdGhhdCB3ZSBjYW4gZ2V0IGJhY2sgaGVyZTsgdGhpcyBjb3VsZCBiZSBhdm9pZGVkIGZvciBzb21lIHBhdGhzLAotLQkgKiBidXQgYWxtb3N0IGNlcnRhaW5seSBub3Qgd29ydGggdGhlIGVmZm9ydC4gIFNsYXNoZXMsIHN5bWJvbGljIGxpbmtzLAotLQkgKiBhbmQgIi4uIiBhcmUgYWxsIGZhaXJseSBuYXN0eSBwcm9ibGVtcy4gIE5vdGUsIGlmIHdlIGNhbid0IGdldCB0aGUKLS0JICogZGVzY3JpcHRvciB3ZSBydW4gYW55d2F5LCBqdXN0IG1vcmUgc2xvd2x5LgotLQkgKi8KLS0JaWYgKCFJU1NFVChGVFNfTk9DSERJUikKLS0JICAgICYmIChzcC0+ZnRzX3JmZCA9IG9wZW4oIi4iLCBPX1JET05MWSwgMCkpIDwgMCkKLS0JCVNFVChGVFNfTk9DSERJUik7Ci0tCi0tCXJldHVybiAoc3ApOwotLQotLW1lbTM6CWZ0c19sZnJlZShyb290KTsKLS0JZnJlZShwYXJlbnQpOwotLW1lbTI6CWZyZWUoc3AtPmZ0c19wYXRoKTsKLS1tZW0xOglmcmVlKHNwKTsKLS0JcmV0dXJuIChOVUxMKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1mdHNfbG9hZChzcCwgcCkKLS0JRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLXsKLS0JcmVnaXN0ZXIgaW50IGxlbjsKLS0JcmVnaXN0ZXIgY2hhciAqY3A7Ci0tCi0tCS8qCi0tCSAqIExvYWQgdGhlIHN0cmVhbSBzdHJ1Y3R1cmUgZm9yIHRoZSBuZXh0IHRyYXZlcnNhbC4gIFNpbmNlIHdlIGRvbid0Ci0tCSAqIGFjdHVhbGx5IGVudGVyIHRoZSBkaXJlY3RvcnkgdW50aWwgYWZ0ZXIgdGhlIHByZW9yZGVyIHZpc2l0LCBzZXQKLS0JICogdGhlIGZ0c19hY2NwYXRoIGZpZWxkIHNwZWNpYWxseSBzbyB0aGUgY2hkaXIgZ2V0cyBkb25lIHRvIHRoZSByaWdodAotLQkgKiBwbGFjZSBhbmQgdGhlIHVzZXIgY2FuIGFjY2VzcyB0aGUgZmlyc3Qgbm9kZS4gIEZyb20gZnRzX29wZW4gaXQncwotLQkgKiBrbm93biB0aGF0IHRoZSBwYXRoIHdpbGwgZml0LgotLQkgKi8KLS0JbGVuID0gcC0+ZnRzX3BhdGhsZW4gPSBwLT5mdHNfbmFtZWxlbjsKLS0JbWVtbW92ZShzcC0+ZnRzX3BhdGgsIHAtPmZ0c19uYW1lLCBsZW4gKyAxKTsKLS0JaWYgKChjcCA9IHN0cnJjaHIocC0+ZnRzX25hbWUsICcvJykpICYmIChjcCAhPSBwLT5mdHNfbmFtZSB8fCBjcFsxXSkpIHsKLS0JCWxlbiA9IHN0cmxlbigrK2NwKTsKLS0JCW1lbW1vdmUocC0+ZnRzX25hbWUsIGNwLCBsZW4gKyAxKTsKLS0JCXAtPmZ0c19uYW1lbGVuID0gbGVuOwotLQl9Ci0tCXAtPmZ0c19hY2NwYXRoID0gcC0+ZnRzX3BhdGggPSBzcC0+ZnRzX3BhdGg7Ci0tCXNwLT5mdHNfZGV2ID0gcC0+ZnRzX2RldjsKLS19Ci0tCi0taW50Ci0tZnRzX2Nsb3NlKHNwKQotLQlGVFMgKnNwOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICpmcmVlcCwgKnA7Ci0tCWludCBzYXZlZF9lcnJubzsKLS0KLS0JLyoKLS0JICogVGhpcyBzdGlsbCB3b3JrcyBpZiB3ZSBoYXZlbid0IHJlYWQgYW55dGhpbmcgLS0gdGhlIGR1bW15IHN0cnVjdHVyZQotLQkgKiBwb2ludHMgdG8gdGhlIHJvb3QgbGlzdCwgc28gd2Ugc3RlcCB0aHJvdWdoIHRvIHRoZSBlbmQgb2YgdGhlIHJvb3QKLS0JICogbGlzdCB3aGljaCBoYXMgYSB2YWxpZCBwYXJlbnQgcG9pbnRlci4KLS0JICovCi0tCWlmIChzcC0+ZnRzX2N1cikgewotLQkJZm9yIChwID0gc3AtPmZ0c19jdXI7IHAtPmZ0c19sZXZlbCA+PSBGVFNfUk9PVExFVkVMOykgewotLQkJCWZyZWVwID0gcDsKLS0JCQlwID0gcC0+ZnRzX2xpbmsgIT0gTlVMTCA/IHAtPmZ0c19saW5rIDogcC0+ZnRzX3BhcmVudDsKLS0JCQlmcmVlKGZyZWVwKTsKLS0JCX0KLS0JCWZyZWUocCk7Ci0tCX0KLS0KLS0JLyogRnJlZSB1cCBjaGlsZCBsaW5rZWQgbGlzdCwgc29ydCBhcnJheSwgcGF0aCBidWZmZXIuICovCi0tCWlmIChzcC0+ZnRzX2NoaWxkKQotLQkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotLQlpZiAoc3AtPmZ0c19hcnJheSkKLS0JCWZyZWUoc3AtPmZ0c19hcnJheSk7Ci0tCWZyZWUoc3AtPmZ0c19wYXRoKTsKLS0KLS0JLyogUmV0dXJuIHRvIG9yaWdpbmFsIGRpcmVjdG9yeSwgc2F2ZSBlcnJubyBpZiBuZWNlc3NhcnkuICovCi0tCWlmICghSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0tCQlzYXZlZF9lcnJubyA9IGZjaGRpcihzcC0+ZnRzX3JmZCkgPyBlcnJubyA6IDA7Ci0tCQkodm9pZCljbG9zZShzcC0+ZnRzX3JmZCk7Ci0tCi0tCQkvKiBTZXQgZXJybm8gYW5kIHJldHVybi4gKi8KLS0JCWlmIChzYXZlZF9lcnJubyAhPSAwKSB7Ci0tCQkJLyogRnJlZSB1cCB0aGUgc3RyZWFtIHBvaW50ZXIuICovCi0tCQkJZnJlZShzcCk7Ci0tCQkJZXJybm8gPSBzYXZlZF9lcnJubzsKLS0JCQlyZXR1cm4gKC0xKTsKLS0JCX0KLS0JfQotLQotLQkvKiBGcmVlIHVwIHRoZSBzdHJlYW0gcG9pbnRlci4gKi8KLS0JZnJlZShzcCk7Ci0tCXJldHVybiAoMCk7Ci0tfQotLQotLS8qCi0tICogU3BlY2lhbCBjYXNlIG9mICIvIiBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoIHNvIHRoYXQgc2xhc2hlcyBhcmVuJ3QKLS0gKiBhcHBlbmRlZCB3aGljaCB3b3VsZCBjYXVzZSBwYXRocyB0byBiZSB3cml0dGVuIGFzICIuLi4uLy9mb28iLgotLSAqLwotLSNkZWZpbmUJTkFQUEVORChwKQkJCQkJCQlcCi0tCShwLT5mdHNfcGF0aFtwLT5mdHNfcGF0aGxlbiAtIDFdID09ICcvJwkJCQlcCi0tCSAgICA/IHAtPmZ0c19wYXRobGVuIC0gMSA6IHAtPmZ0c19wYXRobGVuKQotLQotLUZUU0VOVCAqCi0tZnRzX3JlYWQoc3ApCi0tCXJlZ2lzdGVyIEZUUyAqc3A7Ci0tewotLQlyZWdpc3RlciBGVFNFTlQgKnAsICp0bXA7Ci0tCXJlZ2lzdGVyIGludCBpbnN0cjsKLS0JcmVnaXN0ZXIgY2hhciAqdDsKLS0JaW50IHNhdmVkX2Vycm5vOwotLQotLQkvKiBJZiBmaW5pc2hlZCBvciB1bnJlY292ZXJhYmxlIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KLS0JaWYgKHNwLT5mdHNfY3VyID09IE5VTEwgfHwgSVNTRVQoRlRTX1NUT1ApKQotLQkJcmV0dXJuIChOVUxMKTsKLS0KLS0JLyogU2V0IGN1cnJlbnQgbm9kZSBwb2ludGVyLiAqLwotLQlwID0gc3AtPmZ0c19jdXI7Ci0tCi0tCS8qIFNhdmUgYW5kIHplcm8gb3V0IHVzZXIgaW5zdHJ1Y3Rpb25zLiAqLwotLQlpbnN0ciA9IHAtPmZ0c19pbnN0cjsKLS0JcC0+ZnRzX2luc3RyID0gRlRTX05PSU5TVFI7Ci0tCi0tCS8qIEFueSB0eXBlIG9mIGZpbGUgbWF5IGJlIHJlLXZpc2l0ZWQ7IHJlLXN0YXQgYW5kIHJlLXR1cm4uICovCi0tCWlmIChpbnN0ciA9PSBGVFNfQUdBSU4pIHsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIHAsIDApOwotLQkJcmV0dXJuIChwKTsKLS0JfQotLQotLQkvKgotLQkgKiBGb2xsb3dpbmcgYSBzeW1saW5rIC0tIFNMTk9ORSB0ZXN0IGFsbG93cyBhcHBsaWNhdGlvbiB0byBzZWUKLS0JICogU0xOT05FIGFuZCByZWNvdmVyLiAgSWYgaW5kaXJlY3RpbmcgdGhyb3VnaCBhIHN5bWxpbmssIGhhdmUKLS0JICoga2VlcCBhIHBvaW50ZXIgdG8gY3VycmVudCBsb2NhdGlvbi4gIElmIHVuYWJsZSB0byBnZXQgdGhhdAotLQkgKiBwb2ludGVyLCBmb2xsb3cgZmFpbHMuCi0tCSAqLwotLQlpZiAoaW5zdHIgPT0gRlRTX0ZPTExPVyAmJgotLQkgICAgKHAtPmZ0c19pbmZvID09IEZUU19TTCB8fCBwLT5mdHNfaW5mbyA9PSBGVFNfU0xOT05FKSkgewotLQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgcCwgMSk7Ci0tCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgJiYgIUlTU0VUKEZUU19OT0NIRElSKSkgewotLQkJCWlmICgocC0+ZnRzX3N5bWZkID0gb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKSB7Ci0tCQkJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLQkJCQlwLT5mdHNfaW5mbyA9IEZUU19FUlI7Ci0tCQkJfSBlbHNlCi0tCQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfU1lNRk9MTE9XOwotLQkJfQotLQkJcmV0dXJuIChwKTsKLS0JfQotLQotLQkvKiBEaXJlY3RvcnkgaW4gcHJlLW9yZGVyLiAqLwotLQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0QpIHsKLS0JCS8qIElmIHNraXBwZWQgb3IgY3Jvc3NlZCBtb3VudCBwb2ludCwgZG8gcG9zdC1vcmRlciB2aXNpdC4gKi8KLS0JCWlmIChpbnN0ciA9PSBGVFNfU0tJUCB8fAotLQkJICAgIChJU1NFVChGVFNfWERFVikgJiYgcC0+ZnRzX2RldiAhPSBzcC0+ZnRzX2RldikpIHsKLS0JCQlpZiAocC0+ZnRzX2ZsYWdzICYgRlRTX1NZTUZPTExPVykKLS0JCQkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLS0JCQlpZiAoc3AtPmZ0c19jaGlsZCkgewotLQkJCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0tCQkJCXNwLT5mdHNfY2hpbGQgPSBOVUxMOwotLQkJCX0KLS0JCQlwLT5mdHNfaW5mbyA9IEZUU19EUDsKLS0JCQlyZXR1cm4gKHApOwotLQkJfQotLQotLQkJLyogUmVidWlsZCBpZiBvbmx5IHJlYWQgdGhlIG5hbWVzIGFuZCBub3cgdHJhdmVyc2luZy4gKi8KLS0JCWlmIChzcC0+ZnRzX2NoaWxkICE9IE5VTEwgJiYgSVNTRVQoRlRTX05BTUVPTkxZKSkgewotLQkJCUNMUihGVFNfTkFNRU9OTFkpOwotLQkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLS0JCX0KLS0KLS0JCS8qCi0tCQkgKiBDZCB0byB0aGUgc3ViZGlyZWN0b3J5LgotLQkJICoKLS0JCSAqIElmIGhhdmUgYWxyZWFkeSByZWFkIGFuZCBub3cgZmFpbCB0byBjaGRpciwgd2hhY2sgdGhlIGxpc3QKLS0JCSAqIHRvIG1ha2UgdGhlIG5hbWVzIGNvbWUgb3V0IHJpZ2h0LCBhbmQgc2V0IHRoZSBwYXJlbnQgZXJybm8KLS0JCSAqIHNvIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGV2ZW50dWFsbHkgZ2V0IGFuIGVycm9yIGNvbmRpdGlvbi4KLS0JCSAqIFNldCB0aGUgRlRTX0RPTlRDSERJUiBmbGFnIHNvIHRoYXQgd2hlbiB3ZSBsb2dpY2FsbHkgY2hhbmdlCi0tCQkgKiBkaXJlY3RvcmllcyBiYWNrIHRvIHRoZSBwYXJlbnQgd2UgZG9uJ3QgZG8gYSBjaGRpci4KLS0JCSAqCi0tCQkgKiBJZiBoYXZlbid0IHJlYWQgZG8gc28uICBJZiB0aGUgcmVhZCBmYWlscywgZnRzX2J1aWxkIHNldHMKLS0JCSAqIEZUU19TVE9QIG9yIHRoZSBmdHNfaW5mbyBmaWVsZCBvZiB0aGUgbm9kZS4KLS0JCSAqLwotLQkJaWYgKHNwLT5mdHNfY2hpbGQgIT0gTlVMTCkgewotLQkJCWlmIChmdHNfc2FmZV9jaGFuZ2VkaXIoc3AsIHAsIC0xLCBwLT5mdHNfYWNjcGF0aCkpIHsKLS0JCQkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfRE9OVENIRElSOwotLQkJCQlmb3IgKHAgPSBzcC0+ZnRzX2NoaWxkOyBwICE9IE5VTEw7Ci0tCQkJCSAgICAgcCA9IHAtPmZ0c19saW5rKQotLQkJCQkJcC0+ZnRzX2FjY3BhdGggPQotLQkJCQkJICAgIHAtPmZ0c19wYXJlbnQtPmZ0c19hY2NwYXRoOwotLQkJCX0KLS0JCX0gZWxzZSBpZiAoKHNwLT5mdHNfY2hpbGQgPSBmdHNfYnVpbGQoc3AsIEJSRUFEKSkgPT0gTlVMTCkgewotLQkJCWlmIChJU1NFVChGVFNfU1RPUCkpCi0tCQkJCXJldHVybiAoTlVMTCk7Ci0tCQkJcmV0dXJuIChwKTsKLS0JCX0KLS0JCXAgPSBzcC0+ZnRzX2NoaWxkOwotLQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0tCQlnb3RvIG5hbWU7Ci0tCX0KLS0KLS0JLyogTW92ZSB0byB0aGUgbmV4dCBub2RlIG9uIHRoaXMgbGV2ZWwuICovCi0tbmV4dDoJdG1wID0gcDsKLS0JaWYgKChwID0gcC0+ZnRzX2xpbmspICE9IE5VTEwpIHsKLS0JCWZyZWUodG1wKTsKLS0KLS0JCS8qCi0tCQkgKiBJZiByZWFjaGVkIHRoZSB0b3AsIHJldHVybiB0byB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5IChvcgotLQkJICogdGhlIHJvb3Qgb2YgdGhlIHRyZWUpLCBhbmQgbG9hZCB0aGUgcGF0aHMgZm9yIHRoZSBuZXh0IHJvb3QuCi0tCQkgKi8KLS0JCWlmIChwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RMRVZFTCkgewotLQkJCWlmIChGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSkgewotLQkJCQlTRVQoRlRTX1NUT1ApOwotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCX0KLS0JCQlmdHNfbG9hZChzcCwgcCk7Ci0tCQkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotLQkJfQotLQotLQkJLyoKLS0JCSAqIFVzZXIgbWF5IGhhdmUgY2FsbGVkIGZ0c19zZXQgb24gdGhlIG5vZGUuICBJZiBza2lwcGVkLAotLQkJICogaWdub3JlLiAgSWYgZm9sbG93ZWQsIGdldCBhIGZpbGUgZGVzY3JpcHRvciBzbyB3ZSBjYW4KLS0JCSAqIGdldCBiYWNrIGlmIG5lY2Vzc2FyeS4KLS0JCSAqLwotLQkJaWYgKHAtPmZ0c19pbnN0ciA9PSBGVFNfU0tJUCkKLS0JCQlnb3RvIG5leHQ7Ci0tCQlpZiAocC0+ZnRzX2luc3RyID09IEZUU19GT0xMT1cpIHsKLS0JCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBwLCAxKTsKLS0JCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgJiYgIUlTU0VUKEZUU19OT0NIRElSKSkgewotLQkJCQlpZiAoKHAtPmZ0c19zeW1mZCA9Ci0tCQkJCSAgICBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApIHsKLS0JCQkJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLQkJCQkJcC0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJCQl9IGVsc2UKLS0JCQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfU1lNRk9MTE9XOwotLQkJCX0KLS0JCQlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLS0JCX0KLS0KLS1uYW1lOgkJdCA9IHNwLT5mdHNfcGF0aCArIE5BUFBFTkQocC0+ZnRzX3BhcmVudCk7Ci0tCQkqdCsrID0gJy8nOwotLQkJbWVtbW92ZSh0LCBwLT5mdHNfbmFtZSwgcC0+ZnRzX25hbWVsZW4gKyAxKTsKLS0JCXJldHVybiAoc3AtPmZ0c19jdXIgPSBwKTsKLS0JfQotLQotLQkvKiBNb3ZlIHVwIHRvIHRoZSBwYXJlbnQgbm9kZS4gKi8KLS0JcCA9IHRtcC0+ZnRzX3BhcmVudDsKLS0JZnJlZSh0bXApOwotLQotLQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UUEFSRU5UTEVWRUwpIHsKLS0JCS8qCi0tCQkgKiBEb25lOyBmcmVlIGV2ZXJ5dGhpbmcgdXAgYW5kIHNldCBlcnJubyB0byAwIHNvIHRoZSB1c2VyCi0tCQkgKiBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiBlcnJvciBhbmQgRU9GLgotLQkJICovCi0tCQlmcmVlKHApOwotLQkJZXJybm8gPSAwOwotLQkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IE5VTEwpOwotLQl9Ci0tCi0tCS8qIE5VTCB0ZXJtaW5hdGUgdGhlIHBhdGhuYW1lLiAqLwotLQlzcC0+ZnRzX3BhdGhbcC0+ZnRzX3BhdGhsZW5dID0gJ1wwJzsKLS0KLS0JLyoKLS0JICogUmV0dXJuIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAgSWYgYXQgYSByb290IG5vZGUgb3IgY2FtZSB0aHJvdWdoCi0tCSAqIGEgc3ltbGluaywgZ28gYmFjayB0aHJvdWdoIHRoZSBmaWxlIGRlc2NyaXB0b3IuICBPdGhlcndpc2UsIGNkIHVwCi0tCSAqIG9uZSBkaXJlY3RvcnkuCi0tCSAqLwotLQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLS0JCWlmIChGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSkgewotLQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJcmV0dXJuIChOVUxMKTsKLS0JCX0KLS0JfSBlbHNlIGlmIChwLT5mdHNfZmxhZ3MgJiBGVFNfU1lNRk9MTE9XKSB7Ci0tCQlpZiAoRkNIRElSKHNwLCBwLT5mdHNfc3ltZmQpKSB7Ci0tCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKLS0JCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotLQkJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0tCQkJU0VUKEZUU19TVE9QKTsKLS0JCQlyZXR1cm4gKE5VTEwpOwotLQkJfQotLQkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLS0JfSBlbHNlIGlmICghKHAtPmZ0c19mbGFncyAmIEZUU19ET05UQ0hESVIpICYmCi0tCQkgICBmdHNfc2FmZV9jaGFuZ2VkaXIoc3AsIHAtPmZ0c19wYXJlbnQsIC0xLCAiLi4iKSkgewotLQkJU0VUKEZUU19TVE9QKTsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0JcC0+ZnRzX2luZm8gPSBwLT5mdHNfZXJybm8gPyBGVFNfRVJSIDogRlRTX0RQOwotLQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tfQotLQotLS8qCi0tICogRnRzX3NldCB0YWtlcyB0aGUgc3RyZWFtIGFzIGFuIGFyZ3VtZW50IGFsdGhvdWdoIGl0J3Mgbm90IHVzZWQgaW4gdGhpcwotLSAqIGltcGxlbWVudGF0aW9uOyBpdCB3b3VsZCBiZSBuZWNlc3NhcnkgaWYgYW55b25lIHdhbnRlZCB0byBhZGQgZ2xvYmFsCi0tICogc2VtYW50aWNzIHRvIGZ0cyB1c2luZyBmdHNfc2V0LiAgQW4gZXJyb3IgcmV0dXJuIGlzIGFsbG93ZWQgZm9yIHNpbWlsYXIKLS0gKiByZWFzb25zLgotLSAqLwotLS8qIEFSR1NVU0VEICovCi0taW50Ci0tZnRzX3NldChzcCwgcCwgaW5zdHIpCi0tCUZUUyBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgKnNwOwotLQlGVFNFTlQgKnA7Ci0tCWludCBpbnN0cjsKLS17Ci0tc3AgPSBOVUxMOwkvKiBzdG9wIGNvbXBpbGVyIHdoaW5naW5nICovCi0tCWlmIChpbnN0ciAhPSAwICYmIGluc3RyICE9IEZUU19BR0FJTiAmJiBpbnN0ciAhPSBGVFNfRk9MTE9XICYmCi0tCSAgICBpbnN0ciAhPSBGVFNfTk9JTlNUUiAmJiBpbnN0ciAhPSBGVFNfU0tJUCkgewotLQkJZXJybm8gPSBFSU5WQUw7Ci0tCQlyZXR1cm4gKDEpOwotLQl9Ci0tCXAtPmZ0c19pbnN0ciA9IGluc3RyOwotLQlyZXR1cm4gKDApOwotLX0KLS0KLS0vKgotLSAqIFRoaXMgaXMgdGhlIHRyaWNreSBwYXJ0IC0tIGRvIG5vdCBjYXN1YWxseSBjaGFuZ2UgKmFueXRoaW5nKiBpbiBoZXJlLiAgVGhlCi0tICogaWRlYSBpcyB0byBidWlsZCB0aGUgbGlua2VkIGxpc3Qgb2YgZW50cmllcyB0aGF0IGFyZSB1c2VkIGJ5IGZ0c19jaGlsZHJlbgotLSAqIGFuZCBmdHNfcmVhZC4gIFRoZXJlIGFyZSBsb3RzIG9mIHNwZWNpYWwgY2FzZXMuCi0tICoKLS0gKiBUaGUgcmVhbCBzbG93ZG93biBpbiB3YWxraW5nIHRoZSB0cmVlIGlzIHRoZSBzdGF0IGNhbGxzLiAgSWYgRlRTX05PU1RBVCBpcwotLSAqIHNldCBhbmQgaXQncyBhIHBoeXNpY2FsIHdhbGsgKHNvIHRoYXQgc3ltYm9saWMgbGlua3MgY2FuJ3QgYmUgZGlyZWN0b3JpZXMpLAotLSAqIHdlIGNhbiBkbyB0aGluZ3MgcXVpY2tseS4gIEZpcnN0LCBpZiBpdCdzIGEgNC40QlNEIGZpbGUgc3lzdGVtLCB0aGUgdHlwZQotLSAqIG9mIHRoZSBmaWxlIGlzIGluIHRoZSBkaXJlY3RvcnkgZW50cnkuICBPdGhlcndpc2UsIHdlIGFzc3VtZSB0aGF0IHRoZSBudW1iZXIKLS0gKiBvZiBzdWJkaXJlY3RvcmllcyBpbiBhIG5vZGUgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBsaW5rcyB0byB0aGUgcGFyZW50LgotLSAqIFRoZSBmb3JtZXIgc2tpcHMgYWxsIHN0YXQgY2FsbHMuICBUaGUgbGF0dGVyIHNraXBzIHN0YXQgY2FsbHMgaW4gYW55IGxlYWYKLS0gKiBkaXJlY3RvcmllcyBhbmQgZm9yIGFueSBmaWxlcyBhZnRlciB0aGUgc3ViZGlyZWN0b3JpZXMgaW4gdGhlIGRpcmVjdG9yeSBoYXZlCi0tICogYmVlbiBmb3VuZCwgY3V0dGluZyB0aGUgc3RhdCBjYWxscyBieSBhYm91dCAyLzMuCi0tICovCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX2J1aWxkKHNwLCB0eXBlKQotLQlyZWdpc3RlciBGVFMgKnNwOwotLQlpbnQgdHlwZTsKLS17Ci0tCXJlZ2lzdGVyIHN0cnVjdCBkaXJlbnQgKmRwOwotLQlyZWdpc3RlciBGVFNFTlQgKnAsICpoZWFkOwotLQlyZWdpc3RlciBpbnQgbml0ZW1zOwotLQlGVFNFTlQgKmN1ciwgKnRhaWw7Ci0tCURJUiAqZGlycDsKLS0Jdm9pZCAqb2xkYWRkcjsKLS0JaW50IGNkZXJybm8sIGRlc2NlbmQsIGxlbiwgbGV2ZWwsIG5saW5rcywgc2F2ZWRfZXJybm8sCi0tCSAgICBub3N0YXQsIGRvYWRqdXN0OwotLQlzaXplX3QgbWF4bGVuOwotLQljaGFyICpjcDsKLS0KLS0JLyogU2V0IGN1cnJlbnQgbm9kZSBwb2ludGVyLiAqLwotLQljdXIgPSBzcC0+ZnRzX2N1cjsKLS0KLS0JLyoKLS0JICogT3BlbiB0aGUgZGlyZWN0b3J5IGZvciByZWFkaW5nLiAgSWYgdGhpcyBmYWlscywgd2UncmUgZG9uZS4KLS0JICogSWYgYmVpbmcgY2FsbGVkIGZyb20gZnRzX3JlYWQsIHNldCB0aGUgZnRzX2luZm8gZmllbGQuCi0tCSAqLwotLSAgICAgICBpZiAoKGRpcnAgPSBvcGVuZGlyKGN1ci0+ZnRzX2FjY3BhdGgpKSA9PSBOVUxMKSB7Ci0tCQlpZiAodHlwZSA9PSBCUkVBRCkgewotLQkJCWN1ci0+ZnRzX2luZm8gPSBGVFNfRE5SOwotLQkJCWN1ci0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQl9Ci0tCQlyZXR1cm4gKE5VTEwpOwotLQl9Ci0tCi0tCS8qCi0tCSAqIE5saW5rcyBpcyB0aGUgbnVtYmVyIG9mIHBvc3NpYmxlIGVudHJpZXMgb2YgdHlwZSBkaXJlY3RvcnkgaW4gdGhlCi0tCSAqIGRpcmVjdG9yeSBpZiB3ZSdyZSBjaGVhdGluZyBvbiBzdGF0IGNhbGxzLCAwIGlmIHdlJ3JlIG5vdCBkb2luZwotLQkgKiBhbnkgc3RhdCBjYWxscyBhdCBhbGwsIC0xIGlmIHdlJ3JlIGRvaW5nIHN0YXRzIG9uIGV2ZXJ5dGhpbmcuCi0tCSAqLwotLQlubGlua3MgPSAtMTsKLS0Jbm9zdGF0ID0gMDsKLS0KLS0JLyoKLS0JICogSWYgd2UncmUgZ29pbmcgdG8gbmVlZCB0byBzdGF0IGFueXRoaW5nIG9yIHdlIHdhbnQgdG8gZGVzY2VuZAotLQkgKiBhbmQgc3RheSBpbiB0aGUgZGlyZWN0b3J5LCBjaGRpci4gIElmIHRoaXMgZmFpbHMgd2Uga2VlcCBnb2luZywKLS0JICogYnV0IHNldCBhIGZsYWcgc28gd2UgZG9uJ3QgY2hkaXIgYWZ0ZXIgdGhlIHBvc3Qtb3JkZXIgdmlzaXQuCi0tCSAqIFdlIHdvbid0IGJlIGFibGUgdG8gc3RhdCBhbnl0aGluZywgYnV0IHdlIGNhbiBzdGlsbCByZXR1cm4gdGhlCi0tCSAqIG5hbWVzIHRoZW1zZWx2ZXMuICBOb3RlLCB0aGF0IHNpbmNlIGZ0c19yZWFkIHdvbid0IGJlIGFibGUgdG8KLS0JICogY2hkaXIgaW50byB0aGUgZGlyZWN0b3J5LCBpdCB3aWxsIGhhdmUgdG8gcmV0dXJuIGRpZmZlcmVudCBwYXRoCi0tCSAqIG5hbWVzIHRoYW4gYmVmb3JlLCBpLmUuICJhL2IiIGluc3RlYWQgb2YgImIiLiAgU2luY2UgdGhlIG5vZGUKLS0JICogaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGluIHByZS1vcmRlciwgaGF2ZSB0byB3YWl0IHVudGlsIHRoZQotLQkgKiBwb3N0LW9yZGVyIHZpc2l0IHRvIHJldHVybiB0aGUgZXJyb3IuICBUaGVyZSBpcyBhIHNwZWNpYWwgY2FzZQotLQkgKiBoZXJlLCBpZiB0aGVyZSB3YXMgbm90aGluZyB0byBzdGF0IHRoZW4gaXQncyBub3QgYW4gZXJyb3IgdG8KLS0JICogbm90IGJlIGFibGUgdG8gc3RhdC4gIFRoaXMgaXMgYWxsIGZhaXJseSBuYXN0eS4gIElmIGEgcHJvZ3JhbQotLQkgKiBuZWVkZWQgc29ydGVkIGVudHJpZXMgb3Igc3RhdCBpbmZvcm1hdGlvbiwgdGhleSBoYWQgYmV0dGVyIGJlCi0tCSAqIGNoZWNraW5nIEZUU19OUyBvbiB0aGUgcmV0dXJuZWQgbm9kZXMuCi0tCSAqLwotLQljZGVycm5vID0gMDsKLS0JaWYgKG5saW5rcyB8fCB0eXBlID09IEJSRUFEKSB7Ci0tCQlpZiAoZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBjdXIsIGRpcmZkKGRpcnApLCBOVUxMKSkgewotLQkJCWlmIChubGlua3MgJiYgdHlwZSA9PSBCUkVBRCkKLS0JCQkJY3VyLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQljdXItPmZ0c19mbGFncyB8PSBGVFNfRE9OVENIRElSOwotLQkJCWRlc2NlbmQgPSAwOwotLQkJCWNkZXJybm8gPSBlcnJubzsKLS0JCQkodm9pZCljbG9zZWRpcihkaXJwKTsKLS0JCQlkaXJwID0gTlVMTDsKLS0JCX0gZWxzZQotLQkJCWRlc2NlbmQgPSAxOwotLQl9IGVsc2UKLS0JCWRlc2NlbmQgPSAwOwotLQotLQkvKgotLQkgKiBGaWd1cmUgb3V0IHRoZSBtYXggZmlsZSBuYW1lIGxlbmd0aCB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gdGhlCi0tCSAqIGN1cnJlbnQgcGF0aCAtLSB0aGUgaW5uZXIgbG9vcCBhbGxvY2F0ZXMgbW9yZSBwYXRoIGFzIG5lY2Vzc2FyeS4KLS0JICogV2UgcmVhbGx5IHdvdWxkbid0IGhhdmUgdG8gZG8gdGhlIG1heGxlbiBjYWxjdWxhdGlvbnMgaGVyZSwgd2UKLS0JICogY291bGQgZG8gdGhlbSBpbiBmdHNfcmVhZCBiZWZvcmUgcmV0dXJuaW5nIHRoZSBwYXRoLCBidXQgaXQncyBhCi0tCSAqIGxvdCBlYXNpZXIgaGVyZSBzaW5jZSB0aGUgbGVuZ3RoIGlzIHBhcnQgb2YgdGhlIGRpcmVudCBzdHJ1Y3R1cmUuCi0tCSAqCi0tCSAqIElmIG5vdCBjaGFuZ2luZyBkaXJlY3RvcmllcyBzZXQgYSBwb2ludGVyIHNvIHRoYXQgY2FuIGp1c3QgYXBwZW5kCi0tCSAqIGVhY2ggbmV3IG5hbWUgaW50byB0aGUgcGF0aC4KLS0JICovCi0tCWxlbiA9IE5BUFBFTkQoY3VyKTsKLS0JaWYgKElTU0VUKEZUU19OT0NIRElSKSkgewotLQkJY3AgPSBzcC0+ZnRzX3BhdGggKyBsZW47Ci0tCQkqY3ArKyA9ICcvJzsKLS0JfSBlbHNlIHsKLS0JCS8qIEdDQywgeW91J3JlIHRvbyB2ZXJib3NlLiAqLwotLQkJY3AgPSBOVUxMOwotLQl9Ci0tCWxlbisrOwotLQltYXhsZW4gPSBzcC0+ZnRzX3BhdGhsZW4gLSBsZW47Ci0tCi0tCWxldmVsID0gY3VyLT5mdHNfbGV2ZWwgKyAxOwotLQotLQkvKiBSZWFkIHRoZSBkaXJlY3RvcnksIGF0dGFjaGluZyBlYWNoIGVudHJ5IHRvIHRoZSBgbGluaycgcG9pbnRlci4gKi8KLS0JZG9hZGp1c3QgPSAwOwotLQlmb3IgKGhlYWQgPSB0YWlsID0gTlVMTCwgbml0ZW1zID0gMDsgZGlycCAmJiAoZHAgPSByZWFkZGlyKGRpcnApKTspIHsKLS0JCWlmICghSVNTRVQoRlRTX1NFRURPVCkgJiYgSVNET1QoZHAtPmRfbmFtZSkpCi0tCQkJY29udGludWU7Ci0tCi0tCQlpZiAoKHAgPSBmdHNfYWxsb2Moc3AsIGRwLT5kX25hbWUsIChpbnQpX0RfRVhBQ1RfTkFNTEVOIChkcCkpKSA9PSBOVUxMKQotLQkJCWdvdG8gbWVtMTsKLS0JCWlmIChfRF9FWEFDVF9OQU1MRU4gKGRwKSA+PSBtYXhsZW4pIHsvKiBpbmNsdWRlIHNwYWNlIGZvciBOVUwgKi8KLS0JCQlvbGRhZGRyID0gc3AtPmZ0c19wYXRoOwotLQkJCWlmIChmdHNfcGFsbG9jKHNwLCBfRF9FWEFDVF9OQU1MRU4gKGRwKSArIGxlbiArIDEpKSB7Ci0tCQkJCS8qCi0tCQkJCSAqIE5vIG1vcmUgbWVtb3J5IGZvciBwYXRoIG9yIHN0cnVjdHVyZXMuICBTYXZlCi0tCQkJCSAqIGVycm5vLCBmcmVlIHVwIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBhbmQgdGhlCi0tCQkJCSAqIHN0cnVjdHVyZXMgYWxyZWFkeSBhbGxvY2F0ZWQuCi0tCQkJCSAqLwotLW1lbTE6CQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0tCQkJCWlmIChwKQotLQkJCQkJZnJlZShwKTsKLS0JCQkJZnRzX2xmcmVlKGhlYWQpOwotLQkJCQkodm9pZCljbG9zZWRpcihkaXJwKTsKLS0JCQkJY3VyLT5mdHNfaW5mbyA9IEZUU19FUlI7Ci0tCQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0tCQkJCXJldHVybiAoTlVMTCk7Ci0tCQkJfQotLQkJCS8qIERpZCByZWFsbG9jKCkgY2hhbmdlIHRoZSBwb2ludGVyPyAqLwotLQkJCWlmIChvbGRhZGRyICE9IHNwLT5mdHNfcGF0aCkgewotLQkJCQlkb2FkanVzdCA9IDE7Ci0tCQkJCWlmIChJU1NFVChGVFNfTk9DSERJUikpCi0tCQkJCQljcCA9IHNwLT5mdHNfcGF0aCArIGxlbjsKLS0JCQl9Ci0tCQkJbWF4bGVuID0gc3AtPmZ0c19wYXRobGVuIC0gbGVuOwotLQkJfQotLQotLQkJaWYgKGxlbiArIF9EX0VYQUNUX05BTUxFTiAoZHApID49IDB4MTAwMDApIHsKLS0JCQkvKgotLQkJCSAqIEluIGFuIEZUU0VOVCwgZnRzX3BhdGhsZW4gaXMgYSB1X3Nob3J0IHNvIGl0IGlzCi0tCQkJICogcG9zc2libGUgdG8gd3JhcGFyb3VuZCBoZXJlLiAgSWYgd2UgZG8sIGZyZWUgdXAKLS0JCQkgKiB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgYW5kIHRoZSBzdHJ1Y3R1cmVzIGFscmVhZHkKLS0JCQkgKiBhbGxvY2F0ZWQsIHRoZW4gZXJyb3Igb3V0IHdpdGggRU5BTUVUT09MT05HLgotLQkJCSAqLwotLQkJCWZyZWUocCk7Ci0tCQkJZnRzX2xmcmVlKGhlYWQpOwotLQkJCSh2b2lkKWNsb3NlZGlyKGRpcnApOwotLQkJCWN1ci0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJZXJybm8gPSBFTkFNRVRPT0xPTkc7Ci0tCQkJcmV0dXJuIChOVUxMKTsKLS0JCX0KLS0JCXAtPmZ0c19sZXZlbCA9IGxldmVsOwotLQkJcC0+ZnRzX3BhcmVudCA9IHNwLT5mdHNfY3VyOwotLQkJcC0+ZnRzX3BhdGhsZW4gPSBsZW4gKyBfRF9FWEFDVF9OQU1MRU4gKGRwKTsKLS0KLS0jaWYgZGVmaW5lZCBGVFNfV0hJVEVPVVQgJiYgMAotLQkJaWYgKGRwLT5kX3R5cGUgPT0gRFRfV0hUKQotLQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfSVNXOwotLSNlbmRpZgotLQotLQkJaWYgKGNkZXJybm8pIHsKLS0JCQlpZiAobmxpbmtzKSB7Ci0tCQkJCXAtPmZ0c19pbmZvID0gRlRTX05TOwotLQkJCQlwLT5mdHNfZXJybm8gPSBjZGVycm5vOwotLQkJCX0gZWxzZQotLQkJCQlwLT5mdHNfaW5mbyA9IEZUU19OU09LOwotLQkJCXAtPmZ0c19hY2NwYXRoID0gY3VyLT5mdHNfYWNjcGF0aDsKLS0JCX0gZWxzZSBpZiAobmxpbmtzID09IDAKLS0jaWYgZGVmaW5lZCBEVF9ESVIgJiYgZGVmaW5lZCBfRElSRU5UX0hBVkVfRF9UWVBFCi0tCQkJICAgfHwgKG5vc3RhdCAmJgotLQkJCSAgICAgICBkcC0+ZF90eXBlICE9IERUX0RJUiAmJiBkcC0+ZF90eXBlICE9IERUX1VOS05PV04pCi0tI2VuZGlmCi0tCQkgICAgKSB7Ci0tCQkJcC0+ZnRzX2FjY3BhdGggPQotLQkJCSAgICBJU1NFVChGVFNfTk9DSERJUikgPyBwLT5mdHNfcGF0aCA6IHAtPmZ0c19uYW1lOwotLQkJCXAtPmZ0c19pbmZvID0gRlRTX05TT0s7Ci0tCQl9IGVsc2UgewotLQkJCS8qIEJ1aWxkIGEgZmlsZSBuYW1lIGZvciBmdHNfc3RhdCB0byBzdGF0LiAqLwotLQkJCWlmIChJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCQkJcC0+ZnRzX2FjY3BhdGggPSBwLT5mdHNfcGF0aDsKLS0JCQkJbWVtbW92ZShjcCwgcC0+ZnRzX25hbWUsIHAtPmZ0c19uYW1lbGVuICsgMSk7Ci0tCQkJfSBlbHNlCi0tCQkJCXAtPmZ0c19hY2NwYXRoID0gcC0+ZnRzX25hbWU7Ci0tCQkJLyogU3RhdCBpdC4gKi8KLS0JCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBwLCAwKTsKLS0KLS0JCQkvKiBEZWNyZW1lbnQgbGluayBjb3VudCBpZiBhcHBsaWNhYmxlLiAqLwotLQkJCWlmIChubGlua3MgPiAwICYmIChwLT5mdHNfaW5mbyA9PSBGVFNfRCB8fAotLQkJCSAgICBwLT5mdHNfaW5mbyA9PSBGVFNfREMgfHwgcC0+ZnRzX2luZm8gPT0gRlRTX0RPVCkpCi0tCQkJCS0tbmxpbmtzOwotLQkJfQotLQotLQkJLyogV2Ugd2FsayBpbiBkaXJlY3Rvcnkgb3JkZXIgc28gImxzIC1mIiBkb2Vzbid0IGdldCB1cHNldC4gKi8KLS0JCXAtPmZ0c19saW5rID0gTlVMTDsKLS0JCWlmIChoZWFkID09IE5VTEwpCi0tCQkJaGVhZCA9IHRhaWwgPSBwOwotLQkJZWxzZSB7Ci0tCQkJdGFpbC0+ZnRzX2xpbmsgPSBwOwotLQkJCXRhaWwgPSBwOwotLQkJfQotLQkJKytuaXRlbXM7Ci0tCX0KLS0JaWYgKGRpcnApCi0tCQkodm9pZCljbG9zZWRpcihkaXJwKTsKLS0KLS0JLyoKLS0JICogSWYgcmVhbGxvYygpIGNoYW5nZWQgdGhlIGFkZHJlc3Mgb2YgdGhlIHBhdGgsIGFkanVzdCB0aGUKLS0JICogYWRkcmVzc2VzIGZvciB0aGUgcmVzdCBvZiB0aGUgdHJlZSBhbmQgdGhlIGRpciBsaXN0LgotLQkgKi8KLS0JaWYgKGRvYWRqdXN0KQotLQkJZnRzX3BhZGp1c3Qoc3AsIGhlYWQpOwotLQotLQkvKgotLQkgKiBJZiBub3QgY2hhbmdpbmcgZGlyZWN0b3JpZXMsIHJlc2V0IHRoZSBwYXRoIGJhY2sgdG8gb3JpZ2luYWwKLS0JICogc3RhdGUuCi0tCSAqLwotLQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0tCQlpZiAobGVuID09IHNwLT5mdHNfcGF0aGxlbiB8fCBuaXRlbXMgPT0gMCkKLS0JCQktLWNwOwotLQkJKmNwID0gJ1wwJzsKLS0JfQotLQotLQkvKgotLQkgKiBJZiBkZXNjZW5kZWQgYWZ0ZXIgY2FsbGVkIGZyb20gZnRzX2NoaWxkcmVuIG9yIGFmdGVyIGNhbGxlZCBmcm9tCi0tCSAqIGZ0c19yZWFkIGFuZCBub3RoaW5nIGZvdW5kLCBnZXQgYmFjay4gIEF0IHRoZSByb290IGxldmVsIHdlIHVzZQotLQkgKiB0aGUgc2F2ZWQgZmQ7IGlmIG9uZSBvZiBmdHNfb3BlbigpJ3MgYXJndW1lbnRzIGlzIGEgcmVsYXRpdmUgcGF0aAotLQkgKiB0byBhbiBlbXB0eSBkaXJlY3RvcnksIHdlIHdpbmQgdXAgaGVyZSB3aXRoIG5vIG90aGVyIHdheSBiYWNrLiAgSWYKLS0JICogY2FuJ3QgZ2V0IGJhY2ssIHdlJ3JlIGRvbmUuCi0tCSAqLwotLQlpZiAoZGVzY2VuZCAmJiBuaXRlbXMgPT0gMCAmJgotLQkgICAgKGN1ci0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwgPwotLQkgICAgIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpIDoKLS0JICAgICBmdHNfc2FmZV9jaGFuZ2VkaXIoc3AsIGN1ci0+ZnRzX3BhcmVudCwgLTEsICIuLiIpKSkgewotLQkJY3VyLT5mdHNfaW5mbyA9IEZUU19FUlI7Ci0tCQlTRVQoRlRTX1NUT1ApOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotLQotLQkvKiBJZiBkaWRuJ3QgZmluZCBhbnl0aGluZywgcmV0dXJuIE5VTEwuICovCi0tCWlmICghbml0ZW1zKSB7Ci0tCQlpZiAodHlwZSA9PSBCUkVBRCkKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0RQOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotLQotLQkvKiBTb3J0IHRoZSBlbnRyaWVzLiAqLwotLQlpZiAoc3AtPmZ0c19jb21wYXIgJiYgbml0ZW1zID4gMSkKLS0JCWhlYWQgPSBmdHNfc29ydChzcCwgaGVhZCwgbml0ZW1zKTsKLS0JcmV0dXJuIChoZWFkKTsKLS19Ci0tCi0tc3RhdGljIHVfc2hvcnQKLS1mdHNfc3RhdChzcCwgcCwgZm9sbG93KQotLQlGVFMgKnNwOwotLQlyZWdpc3RlciBGVFNFTlQgKnA7Ci0tCWludCBmb2xsb3c7Ci0tewotLQlyZWdpc3RlciBGVFNFTlQgKnQ7Ci0tCXJlZ2lzdGVyIGRldl90IGRldjsKLS0JcmVnaXN0ZXIgaW5vX3QgaW5vOwotLQlzdHJ1Y3Qgc3RhdCAqc2JwOwotLQlpbnQgc2F2ZWRfZXJybm87Ci0tCi0tCS8qIElmIHVzZXIgbmVlZHMgc3RhdCBpbmZvLCBzdGF0IGJ1ZmZlciBhbHJlYWR5IGFsbG9jYXRlZC4gKi8KLS0Jc2JwID0gcC0+ZnRzX3N0YXRwOwotLQotLSNpZiBkZWZpbmVkIEZUU19XSElURU9VVCAmJiAwCi0tCS8qIGNoZWNrIGZvciB3aGl0ZW91dCAqLwotLQlpZiAocC0+ZnRzX2ZsYWdzICYgRlRTX0lTVykgewotLQkJaWYgKHNicCAhPSAmc2IpIHsKLS0JCQltZW1zZXQoc2JwLCAnXDAnLCBzaXplb2YgKCpzYnApKTsKLS0JCQlzYnAtPnN0X21vZGUgPSBTX0lGV0hUOwotLQkJfQotLQkJcmV0dXJuIChGVFNfVyk7Ci0tICAgICAgIH0KLS0jZW5kaWYKLS0KLS0JLyoKLS0JICogSWYgZG9pbmcgYSBsb2dpY2FsIHdhbGssIG9yIGFwcGxpY2F0aW9uIHJlcXVlc3RlZCBGVFNfRk9MTE9XLCBkbwotLQkgKiBhIHN0YXQoMikuICBJZiB0aGF0IGZhaWxzLCBjaGVjayBmb3IgYSBub24tZXhpc3RlbnQgc3ltbGluay4gIElmCi0tCSAqIGZhaWwsIHNldCB0aGUgZXJybm8gZnJvbSB0aGUgc3RhdCBjYWxsLgotLQkgKi8KLS0JaWYgKElTU0VUKEZUU19MT0dJQ0FMKSB8fCBmb2xsb3cpIHsKLS0JCWlmIChzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKLS0JCQlpZiAoIWxzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQkJCWVycm5vID0gMDsKLS0JCQkJcmV0dXJuIChGVFNfU0xOT05FKTsKLS0JCQl9Ci0tCQkJcC0+ZnRzX2Vycm5vID0gc2F2ZWRfZXJybm87Ci0tCQkJZ290byBlcnI7Ci0tCQl9Ci0tCX0gZWxzZSBpZiAobHN0YXQocC0+ZnRzX2FjY3BhdGgsIHNicCkpIHsKLS0JCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLWVycjoJCW1lbXNldChzYnAsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwotLQkJcmV0dXJuIChGVFNfTlMpOwotLQl9Ci0tCi0tCWlmIChTX0lTRElSKHNicC0+c3RfbW9kZSkpIHsKLS0JCS8qCi0tCQkgKiBTZXQgdGhlIGRldmljZS9pbm9kZS4gIFVzZWQgdG8gZmluZCBjeWNsZXMgYW5kIGNoZWNrIGZvcgotLQkJICogY3Jvc3NpbmcgbW91bnQgcG9pbnRzLiAgQWxzbyByZW1lbWJlciB0aGUgbGluayBjb3VudCwgdXNlZAotLQkJICogaW4gZnRzX2J1aWxkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygc3RhdCBjYWxscy4gIEl0IGlzCi0tCQkgKiB1bmRlcnN0b29kIHRoYXQgdGhlc2UgZmllbGRzIGFyZSBvbmx5IHJlZmVyZW5jZWQgaWYgZnRzX2luZm8KLS0JCSAqIGlzIHNldCB0byBGVFNfRC4KLS0JCSAqLwotLQkJZGV2ID0gcC0+ZnRzX2RldiA9IHNicC0+c3RfZGV2OwotLQkJaW5vID0gcC0+ZnRzX2lubyA9IHNicC0+c3RfaW5vOwotLQkJcC0+ZnRzX25saW5rID0gc2JwLT5zdF9ubGluazsKLS0KLS0JCWlmIChJU0RPVChwLT5mdHNfbmFtZSkpCi0tCQkJcmV0dXJuIChGVFNfRE9UKTsKLS0KLS0JCS8qCi0tCQkgKiBDeWNsZSBkZXRlY3Rpb24gaXMgZG9uZSBieSBicnV0ZSBmb3JjZSB3aGVuIHRoZSBkaXJlY3RvcnkKLS0JCSAqIGlzIGZpcnN0IGVuY291bnRlcmVkLiAgSWYgdGhlIHRyZWUgZ2V0cyBkZWVwIGVub3VnaCBvciB0aGUKLS0JCSAqIG51bWJlciBvZiBzeW1ib2xpYyBsaW5rcyB0byBkaXJlY3RvcmllcyBpcyBoaWdoIGVub3VnaCwKLS0JCSAqIHNvbWV0aGluZyBmYXN0ZXIgbWlnaHQgYmUgd29ydGh3aGlsZS4KLS0JCSAqLwotLQkJZm9yICh0ID0gcC0+ZnRzX3BhcmVudDsKLS0JCSAgICB0LT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDsgdCA9IHQtPmZ0c19wYXJlbnQpCi0tCQkJaWYgKGlubyA9PSB0LT5mdHNfaW5vICYmIGRldiA9PSB0LT5mdHNfZGV2KSB7Ci0tCQkJCXAtPmZ0c19jeWNsZSA9IHQ7Ci0tCQkJCXJldHVybiAoRlRTX0RDKTsKLS0JCQl9Ci0tCQlyZXR1cm4gKEZUU19EKTsKLS0JfQotLQlpZiAoU19JU0xOSyhzYnAtPnN0X21vZGUpKQotLQkJcmV0dXJuIChGVFNfU0wpOwotLQlpZiAoU19JU1JFRyhzYnAtPnN0X21vZGUpKQotLQkJcmV0dXJuIChGVFNfRik7Ci0tCXJldHVybiAoRlRTX0RFRkFVTFQpOwotLX0KLS0KLS1zdGF0aWMgRlRTRU5UICoKLS1mdHNfc29ydChzcCwgaGVhZCwgbml0ZW1zKQotLQlGVFMgKnNwOwotLQlGVFNFTlQgKmhlYWQ7Ci0tCXJlZ2lzdGVyIGludCBuaXRlbXM7Ci0tewotLQlyZWdpc3RlciBGVFNFTlQgKiphcCwgKnA7Ci0tCi0tCS8qCi0tCSAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiBwb2ludGVycyB0byB0aGUgc3RydWN0dXJlcyBhbmQgY2FsbCBxc29ydCgzKS4KLS0JICogUmVhc3NlbWJsZSB0aGUgYXJyYXkgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHFzb3J0LiAgSWYgdW5hYmxlIHRvCi0tCSAqIHNvcnQgZm9yIG1lbW9yeSByZWFzb25zLCByZXR1cm4gdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGluIHRoZWlyCi0tCSAqIGN1cnJlbnQgb3JkZXIuICBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBjdXJyZW50IG5lZWRzIHBsdXMKLS0JICogNDAgc28gZG9uJ3QgcmVhbGxvYyBvbmUgZW50cnkgYXQgYSB0aW1lLgotLQkgKi8KLS0JaWYgKG5pdGVtcyA+IHNwLT5mdHNfbml0ZW1zKSB7Ci0tCQlzdHJ1Y3QgX2Z0c2VudCAqKmE7Ci0tCi0tCQlzcC0+ZnRzX25pdGVtcyA9IG5pdGVtcyArIDQwOwotLQkJaWYgKChhID0gcmVhbGxvYyhzcC0+ZnRzX2FycmF5LAotLSAJCSAgICAoc2l6ZV90KShzcC0+ZnRzX25pdGVtcyAqIHNpemVvZihGVFNFTlQgKikpKSkgPT0gTlVMTCkgewotLQkJCWZyZWUoc3AtPmZ0c19hcnJheSk7Ci0tCQkJc3AtPmZ0c19hcnJheSA9IE5VTEw7Ci0tCQkJc3AtPmZ0c19uaXRlbXMgPSAwOwotLQkJCXJldHVybiAoaGVhZCk7Ci0tCQl9Ci0tCQlzcC0+ZnRzX2FycmF5ID0gYTsKLS0JfQotLQlmb3IgKGFwID0gc3AtPmZ0c19hcnJheSwgcCA9IGhlYWQ7IHA7IHAgPSBwLT5mdHNfbGluaykKLS0JCSphcCsrID0gcDsKLS0JcXNvcnQoKHZvaWQgKilzcC0+ZnRzX2FycmF5LCBuaXRlbXMsIHNpemVvZihGVFNFTlQgKiksIHNwLT5mdHNfY29tcGFyKTsKLS0JZm9yIChoZWFkID0gKihhcCA9IHNwLT5mdHNfYXJyYXkpOyAtLW5pdGVtczsgKythcCkKLS0JCWFwWzBdLT5mdHNfbGluayA9IGFwWzFdOwotLQlhcFswXS0+ZnRzX2xpbmsgPSBOVUxMOwotLQlyZXR1cm4gKGhlYWQpOwotLX0KLS0KLS1zdGF0aWMgRlRTRU5UICoKLS1mdHNfYWxsb2Moc3AsIG5hbWUsIG5hbWVsZW4pCi0tCUZUUyAqc3A7Ci0tCWNvbnN0IGNoYXIgKm5hbWU7Ci0tCXJlZ2lzdGVyIGludCBuYW1lbGVuOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQlzaXplX3QgbGVuOwotLQotLQkvKgotLQkgKiBUaGUgZmlsZSBuYW1lIGlzIGEgdmFyaWFibGUgbGVuZ3RoIGFycmF5IGFuZCBubyBzdGF0IHN0cnVjdHVyZSBpcwotLQkgKiBuZWNlc3NhcnkgaWYgdGhlIHVzZXIgaGFzIHNldCB0aGUgbm9zdGF0IGJpdC4gIEFsbG9jYXRlIHRoZSBGVFNFTlQKLS0JICogc3RydWN0dXJlLCB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaW4gb25lIGNodW5rLCBidXQKLS0JICogYmUgY2FyZWZ1bCB0aGF0IHRoZSBzdGF0IHN0cnVjdHVyZSBpcyByZWFzb25hYmx5IGFsaWduZWQuICBTaW5jZSB0aGUKLS0JICogZnRzX25hbWUgZmllbGQgaXMgZGVjbGFyZWQgdG8gYmUgb2Ygc2l6ZSAxLCB0aGUgZnRzX25hbWUgcG9pbnRlciBpcwotLQkgKiBuYW1lbGVuICsgMiBiZWZvcmUgdGhlIGZpcnN0IHBvc3NpYmxlIGFkZHJlc3Mgb2YgdGhlIHN0YXQgc3RydWN0dXJlLgotLQkgKi8KLS0JbGVuID0gc2l6ZW9mKEZUU0VOVCkgKyBuYW1lbGVuOwotLQlsZW4gKz0gc2l6ZW9mKHN0cnVjdCBzdGF0KSArIEFMSUdOQllURVM7Ci0tCWlmICgocCA9IG1hbGxvYyhsZW4pKSA9PSBOVUxMKQotLQkJcmV0dXJuIChOVUxMKTsKLS0KLS0JLyogQ29weSB0aGUgbmFtZSBhbmQgZ3VhcmFudGVlIE5VTCB0ZXJtaW5hdGlvbi4gKi8KLS0JbWVtbW92ZShwLT5mdHNfbmFtZSwgbmFtZSwgbmFtZWxlbik7Ci0tCXAtPmZ0c19uYW1lW25hbWVsZW5dID0gJ1wwJzsKLS0KLS0JcC0+ZnRzX3N0YXRwID0gKHN0cnVjdCBzdGF0ICopQUxJR04ocC0+ZnRzX25hbWUgKyBuYW1lbGVuICsgMik7Ci0tCXAtPmZ0c19uYW1lbGVuID0gbmFtZWxlbjsKLS0JcC0+ZnRzX3BhdGggPSBzcC0+ZnRzX3BhdGg7Ci0tCXAtPmZ0c19lcnJubyA9IDA7Ci0tCXAtPmZ0c19mbGFncyA9IDA7Ci0tCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotLQlwLT5mdHNfbnVtYmVyID0gMDsKLS0JcC0+ZnRzX3BvaW50ZXIgPSBOVUxMOwotLQlyZXR1cm4gKHApOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLWZ0c19sZnJlZShoZWFkKQotLQlyZWdpc3RlciBGVFNFTlQgKmhlYWQ7Ci0tewotLQlyZWdpc3RlciBGVFNFTlQgKnA7Ci0tCi0tCS8qIEZyZWUgYSBsaW5rZWQgbGlzdCBvZiBzdHJ1Y3R1cmVzLiAqLwotLQl3aGlsZSAoKHAgPSBoZWFkKSkgewotLQkJaGVhZCA9IGhlYWQtPmZ0c19saW5rOwotLQkJZnJlZShwKTsKLS0JfQotLX0KLS0KLS0vKgotLSAqIEFsbG93IGVzc2VudGlhbGx5IHVubGltaXRlZCBwYXRoczsgZmluZCwgcm0sIGxzIHNob3VsZCBhbGwgd29yayBvbiBhbnkgdHJlZS4KLS0gKiBNb3N0IHN5c3RlbXMgd2lsbCBhbGxvdyBjcmVhdGlvbiBvZiBwYXRocyBtdWNoIGxvbmdlciB0aGFuIE1BWFBBVEhMRU4sIGV2ZW4KLS0gKiB0aG91Z2ggdGhlIGtlcm5lbCB3b24ndCByZXNvbHZlIHRoZW0uICBBZGQgdGhlIHNpemUgKG5vdCBqdXN0IHdoYXQncyBuZWVkZWQpCi0tICogcGx1cyAyNTYgYnl0ZXMgc28gZG9uJ3QgcmVhbGxvYyB0aGUgcGF0aCAyIGJ5dGVzIGF0IGEgdGltZS4KLS0gKi8KLS1zdGF0aWMgaW50Ci0tZnRzX3BhbGxvYyhzcCwgbW9yZSkKLS0JRlRTICpzcDsKLS0Jc2l6ZV90IG1vcmU7Ci0tewotLQljaGFyICpwOwotLQotLQlzcC0+ZnRzX3BhdGhsZW4gKz0gbW9yZSArIDI1NjsKLS0JLyoKLS0JICogQ2hlY2sgZm9yIHBvc3NpYmxlIHdyYXBhcm91bmQuICBJbiBhbiBGVFMsIGZ0c19wYXRobGVuIGlzCi0tCSAqIGEgc2lnbmVkIGludCBidXQgaW4gYW4gRlRTRU5UIGl0IGlzIGFuIHVuc2lnbmVkIHNob3J0LgotLQkgKiBXZSBsaW1pdCBmdHNfcGF0aGxlbiB0byBVU0hSVF9NQVggdG8gYmUgc2FmZSBpbiBib3RoIGNhc2VzLgotLQkgKi8KLS0JaWYgKHNwLT5mdHNfcGF0aGxlbiA8IDAgfHwgc3AtPmZ0c19wYXRobGVuID49IDB4MTAwMDApIHsKLS0JCWlmIChzcC0+ZnRzX3BhdGgpIHsKLS0JCQlmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tCQkJc3AtPmZ0c19wYXRoID0gTlVMTDsKLS0JCX0KLS0JCXNwLT5mdHNfcGF0aCA9IE5VTEw7Ci0tCQllcnJubyA9IEVOQU1FVE9PTE9ORzsKLS0JCXJldHVybiAoMSk7Ci0tCX0KLS0JcCA9IHJlYWxsb2Moc3AtPmZ0c19wYXRoLCBzcC0+ZnRzX3BhdGhsZW4pOwotLQlpZiAocCA9PSBOVUxMKSB7Ci0tCQlmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tCQlzcC0+ZnRzX3BhdGggPSBOVUxMOwotLQkJcmV0dXJuIDE7Ci0tCX0KLS0Jc3AtPmZ0c19wYXRoID0gcDsKLS0JcmV0dXJuIDA7Ci0tfQotLQotLS8qCi0tICogV2hlbiB0aGUgcGF0aCBpcyByZWFsbG9jJ2QsIGhhdmUgdG8gZml4IGFsbCBvZiB0aGUgcG9pbnRlcnMgaW4gc3RydWN0dXJlcwotLSAqIGFscmVhZHkgcmV0dXJuZWQuCi0tICovCi0tc3RhdGljIHZvaWQKLS1mdHNfcGFkanVzdChzcCwgaGVhZCkKLS0JRlRTICpzcDsKLS0JRlRTRU5UICpoZWFkOwotLXsKLS0JRlRTRU5UICpwOwotLQljaGFyICphZGRyID0gc3AtPmZ0c19wYXRoOwotLQotLSNkZWZpbmUJQURKVVNUKHApIGRvIHsJCQkJCQkJXAotLQlpZiAoKHApLT5mdHNfYWNjcGF0aCAhPSAocCktPmZ0c19uYW1lKSB7CQkJXAotLQkJKHApLT5mdHNfYWNjcGF0aCA9CQkJCQlcCi0tCQkgICAgKGNoYXIgKilhZGRyICsgKChwKS0+ZnRzX2FjY3BhdGggLSAocCktPmZ0c19wYXRoKTsJXAotLQl9CQkJCQkJCQlcCi0tCShwKS0+ZnRzX3BhdGggPSBhZGRyOwkJCQkJCVwKLS19IHdoaWxlICgwKQotLQkvKiBBZGp1c3QgdGhlIGN1cnJlbnQgc2V0IG9mIGNoaWxkcmVuLiAqLwotLQlmb3IgKHAgPSBzcC0+ZnRzX2NoaWxkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0tCQlBREpVU1QocCk7Ci0tCi0tCS8qIEFkanVzdCB0aGUgcmVzdCBvZiB0aGUgdHJlZSwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGxldmVsLiAqLwotLQlmb3IgKHAgPSBoZWFkOyBwLT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDspIHsKLS0JCUFESlVTVChwKTsKLS0JCXAgPSBwLT5mdHNfbGluayA/IHAtPmZ0c19saW5rIDogcC0+ZnRzX3BhcmVudDsKLS0JfQotLX0KLS0KLS1zdGF0aWMgc2l6ZV90Ci0tZnRzX21heGFyZ2xlbihhcmd2KQotLQljaGFyICogY29uc3QgKmFyZ3Y7Ci0tewotLQlzaXplX3QgbGVuLCBtYXg7Ci0tCi0tCWZvciAobWF4ID0gMDsgKmFyZ3Y7ICsrYXJndikKLS0JCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPiBtYXgpCi0tCQkJbWF4ID0gbGVuOwotLQlyZXR1cm4gKG1heCArIDEpOwotLX0KLS0KLS0vKgotLSAqIENoYW5nZSB0byBkaXIgc3BlY2lmaWVkIGJ5IGZkIG9yIHAtPmZ0c19hY2NwYXRoIHdpdGhvdXQgZ2V0dGluZwotLSAqIHRyaWNrZWQgYnkgc29tZW9uZSBjaGFuZ2luZyB0aGUgd29ybGQgb3V0IGZyb20gdW5kZXJuZWF0aCB1cy4KLS0gKiBBc3N1bWVzIHAtPmZ0c19kZXYgYW5kIHAtPmZ0c19pbm8gYXJlIGZpbGxlZCBpbi4KLS0gKi8KLS1zdGF0aWMgaW50Ci0tZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBwLCBmZCwgcGF0aCkKLS0JRlRTICpzcDsKLS0JRlRTRU5UICpwOwotLQlpbnQgZmQ7Ci0tCWNvbnN0IGNoYXIgKnBhdGg7Ci0tewotLQlpbnQgcmV0LCBvZXJybm8sIG5ld2ZkOwotLQlzdHJ1Y3Qgc3RhdCBzYjsKLS0KLS0JbmV3ZmQgPSBmZDsKLS0JaWYgKElTU0VUKEZUU19OT0NIRElSKSkKLS0JCXJldHVybiAoMCk7Ci0tCWlmIChmZCA8IDAgJiYgKG5ld2ZkID0gb3BlbihwYXRoLCBPX1JET05MWSwgMCkpIDwgMCkKLS0JCXJldHVybiAoLTEpOwotLQlpZiAoZnN0YXQobmV3ZmQsICZzYikpIHsKLS0JCXJldCA9IC0xOwotLQkJZ290byBiYWlsOwotLQl9Ci0tCWlmIChwLT5mdHNfZGV2ICE9IHNiLnN0X2RldiB8fCBwLT5mdHNfaW5vICE9IHNiLnN0X2lubykgewotLQkJZXJybm8gPSBFTk9FTlQ7CQkvKiBkaXNpbmZvcm1hdGlvbiAqLwotLQkJcmV0ID0gLTE7Ci0tCQlnb3RvIGJhaWw7Ci0tCX0KLS0JcmV0ID0gZmNoZGlyKG5ld2ZkKTsKLS1iYWlsOgotLQlvZXJybm8gPSBlcnJubzsKLS0JaWYgKGZkIDwgMCkKLS0JCSh2b2lkKWNsb3NlKG5ld2ZkKTsKLS0JZXJybm8gPSBvZXJybm87Ci0tCXJldHVybiAocmV0KTsKLS19Ci1kaWZmIC0tZ2l0IGEvbGliL2Z0cy5oIGIvbGliL2Z0cy5oCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDU4ODQ2YjkuLjAwMDAwMDAKLS0tLSBhL2xpYi9mdHMuaAotKysrIC9kZXYvbnVsbAotQEAgLTEsMTMxICswLDAgQEAKLS0vKgotLSAqIENvcHlyaWdodCAoYykgMTk4OSwgMTk5MwotLSAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotLSAqCi0tICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0tICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0tICogYXJlIG1ldDoKLS0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLSAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCi0tICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0tICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0tICoKLS0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0tICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0tICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLS0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotLSAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotLSAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0tICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLS0gKiBTVUNIIERBTUFHRS4KLS0gKgotLSAqCUAoIylmdHMuaAk4LjMgKEJlcmtlbGV5KSA4LzE0Lzk0Ci0tICovCi0tCi0tI2lmbmRlZglfRlRTX0gKLS0jZGVmaW5lCV9GVFNfSCAxCi0tCi0tI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLQotLXR5cGVkZWYgc3RydWN0IHsKLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19jdXI7CS8qIGN1cnJlbnQgbm9kZSAqLwotLQlzdHJ1Y3QgX2Z0c2VudCAqZnRzX2NoaWxkOwkvKiBsaW5rZWQgbGlzdCBvZiBjaGlsZHJlbiAqLwotLQlzdHJ1Y3QgX2Z0c2VudCAqKmZ0c19hcnJheTsJLyogc29ydCBhcnJheSAqLwotLQlkZXZfdCBmdHNfZGV2OwkJCS8qIHN0YXJ0aW5nIGRldmljZSAjICovCi0tCWNoYXIgKmZ0c19wYXRoOwkJCS8qIHBhdGggZm9yIHRoaXMgZGVzY2VudCAqLwotLQlpbnQgZnRzX3JmZDsJCQkvKiBmZCBmb3Igcm9vdCAqLwotLQlpbnQgZnRzX3BhdGhsZW47CQkvKiBzaXplb2YocGF0aCkgKi8KLS0JaW50IGZ0c19uaXRlbXM7CQkJLyogZWxlbWVudHMgaW4gdGhlIHNvcnQgYXJyYXkgKi8KLS0JaW50ICgqZnRzX2NvbXBhcikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsgLyogY29tcGFyZSBmbiAqLwotLQotLSNkZWZpbmUJRlRTX0NPTUZPTExPVwkweDAwMDEJCS8qIGZvbGxvdyBjb21tYW5kIGxpbmUgc3ltbGlua3MgKi8KLS0jZGVmaW5lCUZUU19MT0dJQ0FMCTB4MDAwMgkJLyogbG9naWNhbCB3YWxrICovCi0tI2RlZmluZQlGVFNfTk9DSERJUgkweDAwMDQJCS8qIGRvbid0IGNoYW5nZSBkaXJlY3RvcmllcyAqLwotLSNkZWZpbmUJRlRTX05PU1RBVAkweDAwMDgJCS8qIGRvbid0IGdldCBzdGF0IGluZm8gKi8KLS0jZGVmaW5lCUZUU19QSFlTSUNBTAkweDAwMTAJCS8qIHBoeXNpY2FsIHdhbGsgKi8KLS0jZGVmaW5lCUZUU19TRUVET1QJMHgwMDIwCQkvKiByZXR1cm4gZG90IGFuZCBkb3QtZG90ICovCi0tI2RlZmluZQlGVFNfWERFVgkweDAwNDAJCS8qIGRvbid0IGNyb3NzIGRldmljZXMgKi8KLS0jZGVmaW5lIEZUU19XSElURU9VVAkweDAwODAJCS8qIHJldHVybiB3aGl0ZW91dCBpbmZvcm1hdGlvbiAqLwotLSNkZWZpbmUJRlRTX09QVElPTk1BU0sJMHgwMGZmCQkvKiB2YWxpZCB1c2VyIG9wdGlvbiBtYXNrICovCi0tCi0tI2RlZmluZQlGVFNfTkFNRU9OTFkJMHgwMTAwCQkvKiAocHJpdmF0ZSkgY2hpbGQgbmFtZXMgb25seSAqLwotLSNkZWZpbmUJRlRTX1NUT1AJMHgwMjAwCQkvKiAocHJpdmF0ZSkgdW5yZWNvdmVyYWJsZSBlcnJvciAqLwotLQlpbnQgZnRzX29wdGlvbnM7CQkvKiBmdHNfb3BlbiBvcHRpb25zLCBnbG9iYWwgZmxhZ3MgKi8KLS19IEZUUzsKLS0KLS10eXBlZGVmIHN0cnVjdCBfZnRzZW50IHsKLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19jeWNsZTsJLyogY3ljbGUgbm9kZSAqLwotLQlzdHJ1Y3QgX2Z0c2VudCAqZnRzX3BhcmVudDsJLyogcGFyZW50IGRpcmVjdG9yeSAqLwotLQlzdHJ1Y3QgX2Z0c2VudCAqZnRzX2xpbms7CS8qIG5leHQgZmlsZSBpbiBkaXJlY3RvcnkgKi8KLS0JbG9uZyBmdHNfbnVtYmVyOwkgICAgICAgIC8qIGxvY2FsIG51bWVyaWMgdmFsdWUgKi8KLS0Jdm9pZCAqZnRzX3BvaW50ZXI7CSAgICAgICAgLyogbG9jYWwgYWRkcmVzcyB2YWx1ZSAqLwotLQljaGFyICpmdHNfYWNjcGF0aDsJCS8qIGFjY2VzcyBwYXRoICovCi0tCWNoYXIgKmZ0c19wYXRoOwkJCS8qIHJvb3QgcGF0aCAqLwotLQlpbnQgZnRzX2Vycm5vOwkJCS8qIGVycm5vIGZvciB0aGlzIG5vZGUgKi8KLS0JaW50IGZ0c19zeW1mZDsJCQkvKiBmZCBmb3Igc3ltbGluayAqLwotLQl1X3Nob3J0IGZ0c19wYXRobGVuOwkJLyogc3RybGVuKGZ0c19wYXRoKSAqLwotLQl1X3Nob3J0IGZ0c19uYW1lbGVuOwkJLyogc3RybGVuKGZ0c19uYW1lKSAqLwotLQotLQlpbm9fdCBmdHNfaW5vOwkJCS8qIGlub2RlICovCi0tCWRldl90IGZ0c19kZXY7CQkJLyogZGV2aWNlICovCi0tCW5saW5rX3QgZnRzX25saW5rOwkJLyogbGluayBjb3VudCAqLwotLQotLSNkZWZpbmUJRlRTX1JPT1RQQVJFTlRMRVZFTAktMQotLSNkZWZpbmUJRlRTX1JPT1RMRVZFTAkJIDAKLS0Jc2hvcnQgZnRzX2xldmVsOwkJLyogZGVwdGggKC0xIHRvIE4pICovCi0tCi0tI2RlZmluZQlGVFNfRAkJIDEJCS8qIHByZW9yZGVyIGRpcmVjdG9yeSAqLwotLSNkZWZpbmUJRlRTX0RDCQkgMgkJLyogZGlyZWN0b3J5IHRoYXQgY2F1c2VzIGN5Y2xlcyAqLwotLSNkZWZpbmUJRlRTX0RFRkFVTFQJIDMJCS8qIG5vbmUgb2YgdGhlIGFib3ZlICovCi0tI2RlZmluZQlGVFNfRE5SCQkgNAkJLyogdW5yZWFkYWJsZSBkaXJlY3RvcnkgKi8KLS0jZGVmaW5lCUZUU19ET1QJCSA1CQkvKiBkb3Qgb3IgZG90LWRvdCAqLwotLSNkZWZpbmUJRlRTX0RQCQkgNgkJLyogcG9zdG9yZGVyIGRpcmVjdG9yeSAqLwotLSNkZWZpbmUJRlRTX0VSUgkJIDcJCS8qIGVycm9yOyBlcnJubyBpcyBzZXQgKi8KLS0jZGVmaW5lCUZUU19GCQkgOAkJLyogcmVndWxhciBmaWxlICovCi0tI2RlZmluZQlGVFNfSU5JVAkgOQkJLyogaW5pdGlhbGl6ZWQgb25seSAqLwotLSNkZWZpbmUJRlRTX05TCQkxMAkJLyogc3RhdCgyKSBmYWlsZWQgKi8KLS0jZGVmaW5lCUZUU19OU09LCTExCQkvKiBubyBzdGF0KDIpIHJlcXVlc3RlZCAqLwotLSNkZWZpbmUJRlRTX1NMCQkxMgkJLyogc3ltYm9saWMgbGluayAqLwotLSNkZWZpbmUJRlRTX1NMTk9ORQkxMwkJLyogc3ltYm9saWMgbGluayB3aXRob3V0IHRhcmdldCAqLwotLSNkZWZpbmUgRlRTX1cJCTE0CQkvKiB3aGl0ZW91dCBvYmplY3QgKi8KLS0JdV9zaG9ydCBmdHNfaW5mbzsJCS8qIHVzZXIgZmxhZ3MgZm9yIEZUU0VOVCBzdHJ1Y3R1cmUgKi8KLS0KLS0jZGVmaW5lCUZUU19ET05UQ0hESVIJIDB4MDEJCS8qIGRvbid0IGNoZGlyIC4uIHRvIHRoZSBwYXJlbnQgKi8KLS0jZGVmaW5lCUZUU19TWU1GT0xMT1cJIDB4MDIJCS8qIGZvbGxvd2VkIGEgc3ltbGluayB0byBnZXQgaGVyZSAqLwotLQl1X3Nob3J0IGZ0c19mbGFnczsJCS8qIHByaXZhdGUgZmxhZ3MgZm9yIEZUU0VOVCBzdHJ1Y3R1cmUgKi8KLS0KLS0jZGVmaW5lCUZUU19BR0FJTgkgMQkJLyogcmVhZCBub2RlIGFnYWluICovCi0tI2RlZmluZQlGVFNfRk9MTE9XCSAyCQkvKiBmb2xsb3cgc3ltYm9saWMgbGluayAqLwotLSNkZWZpbmUJRlRTX05PSU5TVFIJIDMJCS8qIG5vIGluc3RydWN0aW9ucyAqLwotLSNkZWZpbmUJRlRTX1NLSVAJIDQJCS8qIGRpc2NhcmQgbm9kZSAqLwotLQl1X3Nob3J0IGZ0c19pbnN0cjsJCS8qIGZ0c19zZXQoKSBpbnN0cnVjdGlvbnMgKi8KLS0KLS0Jc3RydWN0IHN0YXQgKmZ0c19zdGF0cDsJCS8qIHN0YXQoMikgaW5mb3JtYXRpb24gKi8KLS0JY2hhciBmdHNfbmFtZVsxXTsJCS8qIGZpbGUgbmFtZSAqLwotLX0gRlRTRU5UOwotLQotLV9fQkVHSU5fREVDTFMKLS0KLS0jZGVmaW5lIGZ0c19jaGlsZHJlbiBwYXhfZnRzX2NoaWxkcmVuCi0tI2RlZmluZSBmdHNfY2xvc2UgcGF4X2Z0c19jbG9zZQotLSNkZWZpbmUgZnRzX29wZW4gcGF4X2Z0c19vcGVuCi0tI2RlZmluZSBmdHNfcmVhZCBwYXhfZnRzX3JlYWQKLS0jZGVmaW5lIGZ0c19zZXQgcGF4X2Z0c19zZXQKLS0KLS1GVFNFTlQJKmZ0c19jaGlsZHJlbiAoRlRTICosIGludCk7Ci0taW50CSBmdHNfY2xvc2UgKEZUUyAqKTsKLS1GVFMJKmZ0c19vcGVuIChjaGFyICogY29uc3QgKiwgaW50LAotLQkJICAgaW50ICgqKShjb25zdCBGVFNFTlQgKiosIGNvbnN0IEZUU0VOVCAqKikpOwotLUZUU0VOVAkqZnRzX3JlYWQgKEZUUyAqKTsKLS1pbnQJIGZ0c19zZXQgKEZUUyAqLCBGVFNFTlQgKiwgaW50KSBfX1RIUk9XOwotLV9fRU5EX0RFQ0xTCi0tCi0tI2VuZGlmIC8qIGZ0cy5oICovCi1kaWZmIC0tZ2l0IGEvbGliL3Zpcy5oIGIvbGliL3Zpcy5oCi1pbmRleCBkMzRkMzQyLi43MWZhNWY0IDEwMDY0NAotLS0tIGEvbGliL3Zpcy5oCi0rKysgYi9saWIvdmlzLmgKLUBAIC03MywxNCArNzMsMTkgQEAKLSAgKi8KLSAjZGVmaW5lCVVOVklTX0VORAkxCS8qIG5vIG1vcmUgY2hhcmFjdGVycyAqLwotIAotLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSsjaWZuZGVmIF9fUAotKyNkZWZpbmUgX19QKHgpIHgKLSsjZW5kaWYKLSAKLS1fX0JFR0lOX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gY2hhcgkqdmlzIF9fUCgoY2hhciAqLCBpbnQsIGludCwgaW50KSk7Ci0gaW50CXN0cnZpcyBfX1AoKGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpKTsKLSBpbnQJc3RydmlzeCBfX1AoKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGludCkpOwotIGludAlzdHJ1bnZpcyBfX1AoKGNoYXIgKiwgY29uc3QgY2hhciAqKSk7Ci0gaW50CXVudmlzIF9fUCgoY2hhciAqLCBjaGFyLCBpbnQgKiwgaW50KSk7Ci0tX19FTkRfREVDTFMKLS0KLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0gI2VuZGlmIC8qICFfVklTX0hfICovCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA1ZWY1MmEzLi4yMjdjZGVmIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0yMiw0ICsyMiw0IEBAIHBheF9TT1VSQ0VTID0gYXJfaW8uYyBhcl9zdWJzLmMgYnVmX3N1YnMuYyBjYWNoZS5jIGNwaW8uY1wKLSAJZmlsZV9zdWJzLmMgZnRyZWUuYyBnZW5fc3Vicy5jIGdldG9sZG9wdC5jIG9wdGlvbnMuY1wKLSAJcGF0X3JlcC5jIHBheC5jIHNlbF9zdWJzLmMgdGFibGVzLmMgdGFyLmMgdHR5X3N1YnMuYwotIAotLXBheF9MREFERCA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliYnNkZnVuYy5hCi0rcGF4X0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJic2RmdW5jLmEgLWxmdHMKLWRpZmYgLS1naXQgYS9zcmMvZXh0ZXJuLmggYi9zcmMvZXh0ZXJuLmgKLWluZGV4IDM2MWZhODEuLjNlZDM2NWQgMTAwNjQ0Ci0tLS0gYS9zcmMvZXh0ZXJuLmgKLSsrKyBiL3NyYy9leHRlcm4uaAotQEAgLTM3LDggKzM3LDYgQEAKLSAgKiBFeHRlcm5hbCByZWZlcmVuY2VzIGZyb20gZWFjaCBzb3VyY2UgZmlsZQotICAqLwotIAotLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLS0KLSAvKgotICAqIGFyX2lvLmMKLSAgKi8KLWRpZmYgLS1naXQgYS9zcmMvZmlsZV9zdWJzLmMgYi9zcmMvZmlsZV9zdWJzLmMKLWluZGV4IDU1OTBmZjEuLjE1YmMzMzkgMTAwNjQ0Ci0tLS0gYS9zcmMvZmlsZV9zdWJzLmMKLSsrKyBiL3NyYy9maWxlX3N1YnMuYwotQEAgLTUyLDcgKzUyLDcgQEAKLSAjaW5jbHVkZSAiZXh0ZXJuLmgiCi0gCi0gc3RhdGljIGludAotLW1rX2xpbmsgX19QKChyZWdpc3RlciBjaGFyICoscmVnaXN0ZXIgc3RydWN0IHN0YXQgKixyZWdpc3RlciBjaGFyICosIGludCkpOwotK21rX2xpbmsgKHJlZ2lzdGVyIGNoYXIgKixyZWdpc3RlciBzdHJ1Y3Qgc3RhdCAqLHJlZ2lzdGVyIGNoYXIgKiwgaW50KTsKLSAKLSAvKgotICAqIHJvdXRpbmVzIHRoYXQgZGVhbCB3aXRoIGZpbGUgb3BlcmF0aW9ucyBzdWNoIGFzOiBjcmVhdGluZywgcmVtb3Zpbmc7Ci1kaWZmIC0tZ2l0IGEvc3JjL3RhYmxlcy5jIGIvc3JjL3RhYmxlcy5jCi1pbmRleCAyMjc1YmY3Li44ZmRkY2E0IDEwMDY0NAotLS0tIGEvc3JjL3RhYmxlcy5jCi0rKysgYi9zcmMvdGFibGVzLmMKLUBAIC0zOSw3ICszOSw3IEBACi0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotLSNpbmNsdWRlIDxzeXMvZmNudGwuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotLS0gCi0yLjYuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOTY5YmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotRnJvbSA3ZjRmMzc5ZjgzNDNjMGNlOTJhYTMwZjNmOTAzNzI4OGEwODlhOTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTggRGVjIDIwMTYgMDg6MjQ6NTYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiBmb3IgbWFqb3IvbWlub3IgZGVmaW5pdGlvbnMKLQotZ2xpYmMgMi4yNSB3aWxsIGVycm9yIG91dCBpZiB0aGUgYXBwbGljYXRpb25zIGFyZSBleHBlY3RpbmcKLXRoaXMgdG8gY29tZSBmcm9tIHN5cy90eXBlcy5oLCBpdCBpcyBiZWluZyByZW1vdmVkIGZyb20KLXRoZXJlLgotCi1GaXhlcwotCi1lcnJvcjogSW4gdGhlIEdOVSBDIExpYnJhcnksICJtaW5vciIgaXMgZGVmaW5lZAotfCAgYnkgPHN5cy9zeXNtYWNyb3MuaD4uIEZvciBoaXN0b3JpY2FsIGNvbXBhdGliaWxpdHksIGl0IGlzCi18ICBjdXJyZW50bHkgZGVmaW5lZCBieSA8c3lzL3R5cGVzLmg+IGFzIHdlbGwsIGJ1dCB3ZSBwbGFuIHRvCi18ICByZW1vdmUgdGhpcyBzb29uLiBUbyB1c2UgIm1pbm9yIiwgaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotfCAgZGlyZWN0bHkuIElmIHlvdSBkaWQgbm90IGludGVuZCB0byB1c2UgYSBzeXN0ZW0tZGVmaW5lZCBtYWNybwotfCAgIm1pbm9yIiwgeW91IHNob3VsZCB1bmRlZmluZSBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4gWy1XZXJyb3JdCi18ICAgICAgICB1bF9vY3QgKCh1X2xvbmcpIE1JTk9SIChhcmNuLT5zYi5zdF9yZGV2KSwgaGQtPmRldm1pbm9yLAotfCAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvY3Bpby5jICAgICB8IDIgKy0KLSBzcmMvZ2VuX3N1YnMuYyB8IDIgKy0KLSBzcmMvdGFyLmMgICAgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IHBheC0zLjQvc3JjL2NwaW8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvY3Bpby5jCi0rKysgcGF4LTMuNC9zcmMvY3Bpby5jCi1AQCAtMzYsNiArMzYsNyBAQAotICNpbmNsdWRlICJjb25maWcuaCIKLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLUluZGV4OiBwYXgtMy40L3NyYy9nZW5fc3Vicy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy9nZW5fc3Vicy5jCi0rKysgcGF4LTMuNC9zcmMvZ2VuX3N1YnMuYwotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1JbmRleDogcGF4LTMuNC9zcmMvdGFyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL3Rhci5jCi0rKysgcGF4LTMuNC9zcmMvdGFyLmMKLUBAIC0zNyw2ICszNyw3IEBACi0gI2luY2x1ZGUgImNvbmZpZy5oIgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS11c2Utc3RydG9sbC1pbnN0ZWFkLW9mLXN0cnRvcS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThhYzljZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS11c2Utc3RydG9sbC1pbnN0ZWFkLW9mLXN0cnRvcS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gYjFmNTAzMjAzMzJjOWM5MGZhMzNhYjEzNmVmMGVjMmQxMmNkYTQ2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDYgSmFuIDIwMTYgMTI6MzA6NTIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdXNlIHN0cnRvbGwgaW5zdGVhZCBvZiBzdHJ0b3EKLQotVXNlIExMT05HX01BWCBpbnN0ZWFkIG9mIExPTkdfTE9OR19NQVgKLUxPTkdfTE9OR19NQVggaXMgR05VIHNwZWNpZmljCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL29wdGlvbnMuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvb3B0aW9ucy5jIGIvc3JjL29wdGlvbnMuYwotaW5kZXggZGE4YjRjZi4uYzY2M2I0ZSAxMDA2NDQKLS0tLSBhL3NyYy9vcHRpb25zLmMKLSsrKyBiL3NyYy9vcHRpb25zLmMKLUBAIC0xNTQ3LDggKzE1NDcsOCBAQCBzdHJfb2ZmdCAoY2hhciAqdmFsKQotIAotICNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotICAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0tICBudW0gPSBzdHJ0b3EgKHZhbCwgJmV4cHIsIDApOwotLSAgaWYgKChudW0gPT0gTE9OR19MT05HX01BWCkgfHwgKG51bSA8PSAwKSB8fCAoZXhwciA9PSB2YWwpKQotKyAgbnVtID0gc3RydG9sbCAodmFsLCAmZXhwciwgMCk7Ci0rICBpZiAoKG51bSA9PSBMTE9OR19NQVgpIHx8IChudW0gPD0gMCkgfHwgKGV4cHIgPT0gdmFsKSkKLSAjZWxzZQotICAgbnVtID0gc3RydG9sICh2YWwsICZleHByLCAwKTsKLSAgIGlmICgobnVtID09IExPTkdfTUFYKSB8fCAobnVtIDw9IDApIHx8IChleHByID09IHZhbCkpCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9maXhfZm9yX2NvbXBpbGVfd2l0aF9nY2MtNC42LjAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODc3OWMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9maXhfZm9yX2NvbXBpbGVfd2l0aF9nY2MtNC42LjAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGNvbXBpbGVyIGVycm9yIHdpdGggZ2NjIDQuNi4wCi0KLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMDUvMDgKLQotfCBmdHMuYzogSW4gZnVuY3Rpb24gJ3BheF9mdHNfc2V0JzoKLXwgZnRzLmM6NDY5Ojc6IGVycm9yOiBwYXJhbWV0ZXIgJ3NwJyBzZXQgYnV0IG5vdCB1c2VkIFstV2Vycm9yPXVudXNlZC1idXQtc2V0LXBhcmFtZXRlcl0KLXwgY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLXwgCi18IG1ha2VbMl06ICoqKiBbZnRzLm9dIEVycm9yIDEKLQotSW5kZXg6IHBheC0zLjQvbGliL2Z0cy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL2xpYi9mdHMuYwotKysrIHBheC0zLjQvbGliL2Z0cy5jCi1AQCAtNDY2LDcgKzQ2Niw3IEBAIG5hbWU6CQl0ID0gc3AtPmZ0c19wYXRoICsgTkFQUEVORChwLT5mdHMKLSAvKiBBUkdTVVNFRCAqLwotIGludAotIGZ0c19zZXQoc3AsIHAsIGluc3RyKQotLQlGVFMgKnNwOwotKwlGVFMgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpICpzcDsKLSAJRlRTRU5UICpwOwotIAlpbnQgaW5zdHI7Ci0gewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvcGF4LTMuNF9maXhfZm9yX3gzMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FkYmQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvcGF4LTMuNF9maXhfZm9yX3gzMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQXV0aG9yOiBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogICBUdWUgRGVjIDYgMTA6MzQ6NTMgMjAxMSAtMDgwMAotCi0gICAgRml4IHBheC0zLjQgYnVpbGQgZm9yIHgzMgotICAgIAotICAgIG9mZl90IGlzIDhieXRlIGZvciB4MzIuICBXZSBuZWVkIHRvIGNoZWNrIGJvdGggX0ZJTEVfT0ZGU0VUX0JJVFMgYW5kCi0gICAgc2l6ZSBvZiBvZmZfdCB0byBzZWUgaWYgZmlsZSBvZmZzZXQgaXMgNjRiaXQuICBUaGlzIHBhdGNoIGFkZHMKLSAgICBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpIGFuZCBjaGVja3MgU0laRU9GX09GRl9UID09IDguCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMDYKLQotSW5kZXg6IHBheC0zLjQvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIHBheC0zLjQvY29uZmlndXJlLmluCi1AQCAtMzMsNCArMzMsNyBAQCBkbmwgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCi0gZG5sIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCi0gQUNfQ19DT05TVAotIAotK0FDX0NIRUNLX1NJWkVPRihvZmZfdCkKLStBQ19DSEVDS19TSVpFT0YobG9uZykKLSsKLSBBQ19PVVRQVVQoW01ha2VmaWxlIGxpYi9NYWtlZmlsZSBzcmMvTWFrZWZpbGVdKQotSW5kZXg6IHBheC0zLjQvc3JjL2FyX2lvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL2FyX2lvLmMKLSsrKyBwYXgtMy40L3NyYy9hcl9pby5jCi1AQCAtMzc4LDcgKzM3OCw4IEBAIGFyX2Nsb3NlKHZvaWQpCi0gCSAqIGNvdWxkIGhhdmUgd3JpdHRlbiBhbnl0aGluZyB5ZXQuCi0gCSAqLwotIAlpZiAoZnJtdCA9PSBOVUxMKSB7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAJCSh2b2lkKWZwcmludGYobGlzdGYsICIlczogdW5rbm93biBmb3JtYXQsICVxdSBieXRlcyBza2lwcGVkLlxuIiwKLSAjZWxzZQotIAkJKHZvaWQpZnByaW50ZihsaXN0ZiwgIiVzOiB1bmtub3duIGZvcm1hdCwgJWx1IGJ5dGVzIHNraXBwZWQuXG4iLAotQEAgLTM5MSw3ICszOTIsOCBAQCBhcl9jbG9zZSh2b2lkKQotIAotIAlpZiAoc3RyY21wKE5NX0NQSU8sIGFyZ3YwKSA9PSAwKQotIAkJKHZvaWQpZnByaW50ZihsaXN0ZiwKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIAkJICAgICIlcXUgYmxvY2tzXG4iLAotICNlbHNlCi0gCQkgICAgIiVsdSBibG9ja3NcbiIsCi1AQCAtMzk5LDcgKzQwMSw4IEBAIGFyX2Nsb3NlKHZvaWQpCi0gCQkJKHJkY250ID8gcmRjbnQgOiB3cmNudCkgLyA1MTIwKTsKLSAJZWxzZSBpZiAoc3RyY21wKE5NX1RBUiwgYXJndjApICE9IDApCi0gCQkodm9pZClmcHJpbnRmKGxpc3RmLAotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gCQkgICAgIiVzOiAlcyB2b2wgJWQsICVsdSBmaWxlcywgJXF1IGJ5dGVzIHJlYWQsICVxdSBieXRlcyB3cml0dGVuLlxuIiwKLSAjZWxzZQotIAkJICAgICIlczogJXMgdm9sICVkLCAlbHUgZmlsZXMsICVsdSBieXRlcyByZWFkLCAlbHUgYnl0ZXMgd3JpdHRlbi5cbiIsCi1JbmRleDogcGF4LTMuNC9zcmMvY3Bpby5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy9jcGlvLmMKLSsrKyBwYXgtMy40L3NyYy9jcGlvLmMKLUBAIC0yMTgsNyArMjE4LDggQEAgcmRfbG5fbm0gKEFSQ0hEICphcmNuKQotIAkgKi8KLSAJaWYgKChhcmNuLT5zYi5zdF9zaXplID09IDApIHx8Ci0gCSAgICAoYXJjbi0+c2Iuc3Rfc2l6ZSA+PSAob2ZmX3QpIHNpemVvZihhcmNuLT5sbl9uYW1lKSkpIHsKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIAkJcGF4d2FybiAoMSwgIkNwaW8gbGluayBuYW1lIGxlbmd0aCBpcyBpbnZhbGlkOiAlcXUiLAotIAkJCSBhcmNuLT5zYi5zdF9zaXplKTsKLSAjZWxzZQotSW5kZXg6IHBheC0zLjQvc3JjL2dlbl9zdWJzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL2dlbl9zdWJzLmMKLSsrKyBwYXgtMy40L3NyYy9nZW5fc3Vicy5jCi1AQCAtMTMzLDcgKzEzMyw4IEBAIGxzX2xpc3QgKEFSQ0hEICphcmNuLCB0aW1lX3Qgbm93LCBGSUxFICoKLSAgICAqIHByaW50IGRldmljZSBpZCdzIGZvciBkZXZpY2VzLCBvciBzaXplcyBmb3Igb3RoZXIgbm9kZXMKLSAgICAqLwotICAgaWYgKChhcmNuLT50eXBlID09IFBBWF9DSFIpIHx8IChhcmNuLT50eXBlID09IFBBWF9CTEspKQotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICAgICh2b2lkKSBmcHJpbnRmIChmcCwgIiU0bHUsJTRsdSAiLCAodW5zaWduZWQgbG9uZykgTUFKT1IgKHNicC0+c3RfcmRldiksCi0gCQkgICAgKHVuc2lnbmVkIGxvbmcpIE1JTk9SIChzYnAtPnN0X3JkZXYpKTsKLSAjZWxzZQotQEAgLTE0Miw3ICsxNDMsOCBAQCBsc19saXN0IChBUkNIRCAqYXJjbiwgdGltZV90IG5vdywgRklMRSAqCi0gI2VuZGlmCi0gICBlbHNlCi0gICAgIHsKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotICAgICAgICh2b2lkKSBmcHJpbnRmIChmcCwgIiU5cXUgIiwgc2JwLT5zdF9zaXplKTsKLSAjZWxzZQotICAgICAgICh2b2lkKSBmcHJpbnRmIChmcCwgIiU5bHUgIiwgc2JwLT5zdF9zaXplKTsKLUBAIC0zMzQsNyArMzM2LDggQEAgdWxfYXNjICh1X2xvbmcgdmFsLCBjaGFyICpzdHIsIGludCBsZW4sIAotICAgcmV0dXJuICgwKTsKLSB9Ci0gCi0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAvKgotICAqIGFzY191cWQoKQotICAqCWNvbnZlcnQgaGV4L29jdGFsIGNoYXJhY3RlciBzdHJpbmcgaW50byBhIHVfcXVhZF90LiBXZSBkbyBub3QgaGF2ZSB0bwotSW5kZXg6IHBheC0zLjQvc3JjL29wdGlvbnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvb3B0aW9ucy5jCi0rKysgcGF4LTMuNC9zcmMvb3B0aW9ucy5jCi1AQCAtMTU0NSw3ICsxNTQ1LDggQEAgc3RyX29mZnQgKGNoYXIgKnZhbCkKLSAgIGNoYXIgKmV4cHI7Ci0gICBvZmZfdCBudW0sIHQ7Ci0gCi0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgIG51bSA9IHN0cnRvcSAodmFsLCAmZXhwciwgMCk7Ci0gICBpZiAoKG51bSA9PSBMT05HX0xPTkdfTUFYKSB8fCAobnVtIDw9IDApIHx8IChleHByID09IHZhbCkpCi0gI2Vsc2UKLUluZGV4OiBwYXgtMy40L3NyYy90YXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvdGFyLmMKLSsrKyBwYXgtMy40L3NyYy90YXIuYwotQEAgLTU4LDcgKzU4LDggQEAKLSBzdGF0aWMgdW5zaWduZWQgbG9uZyB0YXJfY2hrc20gKGNoYXIgKiwgaW50KTsKLSBzdGF0aWMgY2hhciAqbmFtZV9zcGxpdCAoY2hhciAqLCBpbnQpOwotIHN0YXRpYyBpbnQgdWxfb2N0ICh1X2xvbmcsIGNoYXIgKiwgaW50LCBpbnQpOwotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gc3RhdGljIGludCB1cWRfb2N0ICh1X3F1YWRfdCwgY2hhciAqLCBpbnQsIGludCk7Ci0gI2VuZGlmCi0gCi1AQCAtMTk2LDcgKzE5Nyw4IEBAIHVsX29jdCAodV9sb25nIHZhbCwgcmVnaXN0ZXIgY2hhciAqc3RyLCAKLSAgIHJldHVybiAoMCk7Ci0gfQotIAotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gLyoKLSAgKiB1cWRfb2N0KCkKLSAgKgljb252ZXJ0IGFuIHVfcXVhZF90IHRvIGFuIG9jdGFsIHN0cmluZy4gb25lIG9mIG1hbnkgb2RkYmFsbCBmaWVsZAotQEAgLTQyNyw3ICs0MjksOCBAQCB0YXJfcmQgKEFSQ0hEICphcmNuLCBjaGFyICpidWYpCi0gCQkJICAgICAgIDB4ZmZmKTsKLSAgIGFyY24tPnNiLnN0X3VpZCA9ICh1aWRfdCkgYXNjX3VsIChoZC0+dWlkLCBzaXplb2YgKGhkLT51aWQpLCBPQ1QpOwotICAgYXJjbi0+c2Iuc3RfZ2lkID0gKGdpZF90KSBhc2NfdWwgKGhkLT5naWQsIHNpemVvZiAoaGQtPmdpZCksIE9DVCk7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgIGFyY24tPnNiLnN0X3NpemUgPSAob2ZmX3QpIGFzY191cWQgKGhkLT5zaXplLCBzaXplb2YgKGhkLT5zaXplKSwgT0NUKTsKLSAjZWxzZQotICAgYXJjbi0+c2Iuc3Rfc2l6ZSA9IChvZmZfdCkgYXNjX3VsIChoZC0+c2l6ZSwgc2l6ZW9mIChoZC0+c2l6ZSksIE9DVCk7Ci1AQCAtNjU5LDcgKzY2Miw4IEBAIHRhcl93ciAocmVnaXN0ZXIgQVJDSEQgKiBhcmNuKQotICAgICAgICAqIGRhdGEgZm9sbG93cyB0aGlzIGZpbGUsIHNvIHNldCB0aGUgcGFkCi0gICAgICAgICovCi0gICAgICAgaGQtPmxpbmtmbGFnID0gQVJFR1RZUEU7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgICAgICBpZiAodXFkX29jdCAoKHVfcXVhZF90KSBhcmNuLT5zYi5zdF9zaXplLCBoZC0+c2l6ZSwKLSAJCSAgIHNpemVvZiAoaGQtPnNpemUpLCAxKSkKLSAjZWxzZQotQEAgLTgzNCw3ICs4MzgsOCBAQCB1c3Rhcl9yZCAoQVJDSEQgKmFyY24sIGNoYXIgKmJ1ZikKLSAgICAqLwotICAgYXJjbi0+c2Iuc3RfbW9kZSA9IChtb2RlX3QpIChhc2NfdWwgKGhkLT5tb2RlLCBzaXplb2YgKGhkLT5tb2RlKSwgT0NUKSAmCi0gCQkJICAgICAgIDB4ZmZmKTsKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotICAgYXJjbi0+c2Iuc3Rfc2l6ZSA9IChvZmZfdCkgYXNjX3VxZCAoaGQtPnNpemUsIHNpemVvZiAoaGQtPnNpemUpLCBPQ1QpOwotICNlbHNlCi0gICBhcmNuLT5zYi5zdF9zaXplID0gKG9mZl90KSBhc2NfdWwgKGhkLT5zaXplLCBzaXplb2YgKGhkLT5zaXplKSwgT0NUKTsKLUBAIC0xMDgxLDcgKzEwODYsOCBAQCB1c3Rhcl93ciAocmVnaXN0ZXIgQVJDSEQgKiBhcmNuKQotICAgICAgIGVsc2UKLSAJaGQtPnR5cGVmbGFnID0gUkVHVFlQRTsKLSAgICAgICBhcmNuLT5wYWQgPSBUQVJfUEFEIChhcmNuLT5zYi5zdF9zaXplKTsKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotICAgICAgIGlmICh1cWRfb2N0ICgodV9xdWFkX3QpIGFyY24tPnNiLnN0X3NpemUsIGhkLT5zaXplLAotIAkJICAgc2l6ZW9mIChoZC0+c2l6ZSksIDMpKQotIAl7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXhfMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRmOWE4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXhfMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJQb3J0YWJsZSBBcmNoaXZlIGVYY2hhbmdlIgotREVTQ1JJUFRJT04gPSAicGF4IChQb3J0YWJsZSBBcmNoaXZlIGVYY2hhbmdlKSBpcyB0aGUgUE9TSVggc3RhbmRhcmQgYXJjaGl2ZSB0b29sIgotSE9NRVBBR0UgPSAiaHR0cDovL2N2c3dlYi5vcGVuYnNkLm9yZy9jZ2ktYmluL2N2c3dlYi9zcmMvYmluL3BheC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbmJzZC5vcmcvcXVlcnktcHIuaHRtbCIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YjBiNjc0ZGZkYzU2ZGFhMzgzMmQ0MDY5YjgyMGVhMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcGF4Lmg7ZW5kbGluZT00MDttZDU9MzA5ZDNlMjQxYzFkODIwNjkyMjhlNWE1MWU5YjhkNjAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NwaW8uaDtlbmRsaW5lPTQwO21kNT1jM2I0YmJmZjYxMzNhODMzODc5Njg2MTdiYmFlOGFjNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdmlzLmg7ZW5kbGluZT00MDttZDU9YjI4M2Y3NTlhYmQ0YTVhZDdlMDE0YjgwZjUxZmMwNTMiCi0KLVNFQ1RJT04gPSAiYmFzZSIKLVBSID0gInIyIgotCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzLyR7QlBOfS8ke0JQfS50YXIuYnoyL2ZiZDkwMjNiNTkwYjQ1YWMzYWRlOTU4NzA3MDJhMGQ2LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1jb21tZW50LWZvci1mYWxsdGhyb3VnaC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmJkOTAyM2I1OTBiNDVhYzNhZGU5NTg3MDcwMmEwZDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWMzYzA2MDQ4ZTAyODI4MDc3Y2Y3NzU3ZDNkMTQyMjQxNDI5MjM4ODkzYjkxZDUyOWFmMjlhMmU4Y2M1NjIzYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYmNvbnZlcnQtYXNuMS1wZXJsXzAuMjcuYmIKaW5kZXggMTcwZTdlYy4uNjQ0ZDgyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYmNvbnZlcnQtYXNuMS1wZXJsXzAuMjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYmNvbnZlcnQtYXNuMS1wZXJsXzAuMjcuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L0NvbnZlcnQtQVNOMS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBFWFRSQV9QRVJMRkxBR1MgPSAiLUkgJHtQRVJMSE9TVExJQn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiCmluZGV4IDQyNzYxM2MuLjhlMTQ2MWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYgpAQCAtOSw3ICs5LDcgQEAKIAogUyA9ICIke1dPUktESVJ9L1RpbWVEYXRlLSR7UFZ9IgogCi1pbmhlcml0IGNwYW4KK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYgppbmRleCAzNDk4YTI4Li5mYTlmOTk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjEyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTIuYmIKQEAgLTYsMTggKzYsMjIgQEAKIAogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLVBSID0gInIzIgogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MjI7ZW5kbGluZT0yMjttZDU9OWNhMWE0YTk0MTQ5NmU3ZmVlZGFjNzJjNGZiOGIxMzciCitTUkNOQU1FID0gIlhNTC1OYW1lc3BhY2VTdXBwb3J0IgogCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1AvUEUvUEVSSUdSSU4vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0udGFyLmd6IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzlkOGExMTdlNzYyMGI1YWRmOGQ2OWMyOTYxM2NlYWIiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9QL1BFL1BFUklHUklOLyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgogU1JDX1VSSVttZDVzdW1dID0gImE4OTE2YzZkMDk1YmNmMDczZTExMDhhZjAyZTc4Yzk3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3ZTk5NTg1OWY4ZGQwNDEzYWEzZjIyZDM1MGM0YTYyZGE2NTJlODU0MjY3YWEwNTg2YWU1NDRhZTJiYWU1ZWYiCiAKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlhNTFwtTmFtZXNwYWNlU3VwcG9ydFwtKD9QPHB2ZXI+KFxkK1wuXGQrKSkoPyFfXGQrKS50YXIiCiAKLVMgPSAiJHtXT1JLRElSfS9YTUwtTmFtZXNwYWNlU3VwcG9ydC0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgogCi1pbmhlcml0IGNwYW4KK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS10ZXN0LW1vcmUiCiAKIEJCQ0xBU1NFWFRFTkQ9Im5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOS5iYgppbmRleCBjZDNhNTgwLi5iM2UwMWU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOS5iYgpAQCAtMTksNiArMTksNiBAQAogCiBTID0gIiR7V09SS0RJUn0vWE1MLVNBWC1CYXNlLSR7UFZ9IgogCi1pbmhlcml0IGNwYW4KK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiCmluZGV4IGFkMzFiOWMuLmNkY2JlYmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKQEAgLTIzLDYgKzIzLDExIEBACiAKIFMgPSAiJHtXT1JLRElSfS9YTUwtU0FYLSR7UFZ9IgogCi1pbmhlcml0IGNwYW4KK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXIgJHtCfS90ZXN0ZmlsZXMgJHtEfSR7UFRFU1RfUEFUSH0KKwljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdGZpbGVzCit9CiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3ouaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3ouaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzhmOTA1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6LmluYworKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwYXJhbGxlbCBpbXBsZW1lbnRhdGlvbiBvZiBnemlwIgotREVTQ1JJUFRJT04gPSAicGlneiwgd2hpY2ggc3RhbmRzIGZvciBwYXJhbGxlbCBpbXBsZW1lbnRhdGlvbiBvZiBnemlwLCBpcyBhIFwKLWZ1bGx5IGZ1bmN0aW9uYWwgcmVwbGFjZW1lbnQgZm9yIGd6aXAgdGhhdCBleHBsb2l0cyBtdWx0aXBsZSBwcm9jZXNzb3JzIGFuZCBcCi1tdWx0aXBsZSBjb3JlcyB0byB0aGUgaGlsdCB3aGVuIGNvbXByZXNzaW5nIGRhdGEuIHBpZ3ogd2FzIHdyaXR0ZW4gYnkgTWFyayBcCi1BZGxlciwgYW5kIHVzZXMgdGhlIHpsaWIgYW5kIHB0aHJlYWQgbGlicmFyaWVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly96bGliLm5ldC9waWd6LyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiWmxpYiAmIEFwYWNoZS0yLjAiCi0KLVBST1ZJREVTX2NsYXNzLW5hdGl2ZSArPSAiZ3ppcC1uYXRpdmUiCi0KLURFUEVORFMgPSAiemxpYiIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1kb19pbnN0YWxsX2NsYXNzLXRhcmdldCgpIHsKLQkjIEluc3RhbGwgZmlsZXMgaW50byAvYmluIChGSFMpLCB3aGljaCBpcyB0eXBpY2FsIHBsYWNlIGZvciBnemlwCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQlpbnN0YWxsICR7Qn0vcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vcGlnegotCWxuIC1uc2YgcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vdW5waWd6Ci0JbG4gLW5zZiBwaWd6ICR7RH0ke2Jhc2VfYmluZGlyfS9waWd6Y2F0Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAke0J9L3BpZ3ogJHtEfSR7YmluZGlyfS9nemlwCi0JbG4gLW5zZiBnemlwICR7RH0ke2JpbmRpcn0vZ3VuemlwCi0JbG4gLW5zZiBnemlwICR7RH0ke2JpbmRpcn0vemNhdAotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImd1bnppcCBnemlwIHpjYXQiCi1BTFRFUk5BVElWRV8ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2d1bnppcF0gPSAiJHtiYXNlX2JpbmRpcn0vZ3VuemlwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2d6aXBdID0gIiR7YmFzZV9iaW5kaXJ9L2d6aXAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbemNhdF0gPSAiJHtiYXNlX2JpbmRpcn0vemNhdCIKLUFMVEVSTkFUSVZFX1RBUkdFVCA9ICIke2Jhc2VfYmluZGlyfS9waWd6IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ4MzJkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgcGlnei5pbmMKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BpZ3ouYztiZWdpbmxpbmU9NztlbmRsaW5lPTIxO21kNT1hMjFkNDA3NWNiMDBhYjRjYTE3ZmNlNWU3NTM0Y2E5NSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly96bGliLm5ldC8ke0JQTn0vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGlnei0oP1A8cHZlcj4uKilcLnRhciIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL21hZGxlci9waWd6L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjMTA5MDU3MDUwYjE1ZWRmM2ViOWJiNGQwODA1MjM1ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NjNmMmZkYjIwM2FhMGI3YjY0MGU2MzM4NWUzOGU1ZGQ0ZTVhYWEwNDFiYzhlNDJhYTk2ZjJlZjE1NmIwNmU4IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTZkYTljCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi40LmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiQSBwYXJhbGxlbCBpbXBsZW1lbnRhdGlvbiBvZiBnemlwIgorREVTQ1JJUFRJT04gPSAicGlneiwgd2hpY2ggc3RhbmRzIGZvciBwYXJhbGxlbCBpbXBsZW1lbnRhdGlvbiBvZiBnemlwLCBpcyBhIFwKK2Z1bGx5IGZ1bmN0aW9uYWwgcmVwbGFjZW1lbnQgZm9yIGd6aXAgdGhhdCBleHBsb2l0cyBtdWx0aXBsZSBwcm9jZXNzb3JzIGFuZCBcCittdWx0aXBsZSBjb3JlcyB0byB0aGUgaGlsdCB3aGVuIGNvbXByZXNzaW5nIGRhdGEuIHBpZ3ogd2FzIHdyaXR0ZW4gYnkgTWFyayBcCitBZGxlciwgYW5kIHVzZXMgdGhlIHpsaWIgYW5kIHB0aHJlYWQgbGlicmFyaWVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly96bGliLm5ldC9waWd6LyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiWmxpYiAmIEFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9waWd6LmM7bWQ1PTlhZTZkZWU4Y2ViYTk2MTA1OTZlZDBhZGE0OTNkMTQyO2JlZ2lubGluZT03O2VuZGxpbmU9MjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3psaWIubmV0LyR7QlBOfS9mb3NzaWxzLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZWYyZjZlMTlkOWQ4MjMxNDQ1YWRjMTM0OWQzNDZkZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNGY4MTYyMjJhN2I0MjY5YmQyMzI2ODA1OTBiNTc5Y2NjNzI1OTFmMWJiNWFkYWZjZDcyMDhjYTc3ZTE0ZjczIgorIyBQb2ludCB0aGlzIGF0IHRoZSBob21lcGFnZSBpbiBjYXNlIC9mb3NzaWxzLyBpc24ndCB1cGRhdGVkCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3psaWIubmV0LyR7QlBOfS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwaWd6LSg/UDxwdmVyPi4qKVwudGFyIgorCitERVBFTkRTID0gInpsaWIiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitkb19pbnN0YWxsKCkgeworCSMgSW5zdGFsbCBmaWxlcyBpbnRvIC9iaW4gKEZIUyksIHdoaWNoIGlzIHR5cGljYWwgcGxhY2UgZm9yIGd6aXAKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCWluc3RhbGwgJHtCfS9waWd6ICR7RH0ke2Jhc2VfYmluZGlyfS9waWd6CisJbG4gLW5zZiBwaWd6ICR7RH0ke2Jhc2VfYmluZGlyfS91bnBpZ3oKKwlsbiAtbnNmIHBpZ3ogJHtEfSR7YmFzZV9iaW5kaXJ9L3BpZ3pjYXQKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIKaW5kZXggYWRhYmQ3NS4uZWNmMjE1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEyLmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJTeXN0ZW0gYW5kIHByb2Nlc3MgbW9uaXRvcmluZyB1dGlsaXRpZXMiCiBERVNDUklQVElPTiA9ICJQcm9jcHMgY29udGFpbnMgYSBzZXQgb2Ygc3lzdGVtIHV0aWxpdGllcyB0aGF0IHByb3ZpZGUgc3lzdGVtIGluZm9ybWF0aW9uIGFib3V0IHByb2Nlc3NlcyB1c2luZyBcCiB0aGUgL3Byb2MgZmlsZXN5c3RlbS4gVGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIHByb2dyYW1zIHBzLCB0b3AsIHZtc3RhdCwgdywga2lsbCwgYW5kIHNraWxsLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0b3Jpb3VzLm9yZy9wcm9jcHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5jb20vcHJvY3BzLW5nL3Byb2NwcyIKIFNFQ1RJT04gPSAiYmFzZSIKIExJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU09ImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCkBAIC0yMyw4ICsyMyw2IEBACiAKIEVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1za2lsbCAtLWRpc2FibGUtbW9kZXJuLXRvcCIKIAotQ1BQRkxBR1MgKz0gIi1JJHtTfSIKLQogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CiAJWyAiJHtiaW5kaXJ9IiAhPSAiJHtiYXNlX2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpOyBkb25lCkBAIC00NCw3ICs0Miw3IEBACiAKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c2N0bC5jb25mIgogCi1iaW5kaXJfcHJvZ3MgPSAiZnJlZSBwa2lsbCBwbWFwIHBncmVwIHB3ZHggc2tpbGwgc25pY2UgdG9wIHVwdGltZSIKK2JpbmRpcl9wcm9ncyA9ICJmcmVlIHBraWxsIHBtYXAgcGdyZXAgcHdkeCBza2lsbCBzbmljZSB0b3AgdXB0aW1lIHciCiBiYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKIGJhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9maWxlcy8wMDAxLVR5cG8taW4tZnVzZXItbWFrZXMtTS1vbi1hbGwtdGhlLXRpbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9maWxlcy8wMDAxLVR5cG8taW4tZnVzZXItbWFrZXMtTS1vbi1hbGwtdGhlLXRpbWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1N2Q2MGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAzNjM4Y2M1NWI0ZDA4ODUxZmFiYTQ2NjM1ZDczN2IyNGQwMTY2NjViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQnJhZCBKb3JzY2ggPGFub21pZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiBGcmksIDI4IEZlYiAyMDE0IDIxOjU1OjAyICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFR5cG8gaW4gZnVzZXIgbWFrZXMgLU0gb24gYWxsIHRoZSB0aW1lCi0KLUJyYWQgZm91bmQgdGhhdCBmdXNlciBoYWQgdGhlIC1NIG9wdGlvbiBvbiBhbGwgdGhlIHRpbWUuCi1BIHNpbXBsZSBidXQgc2lnbmlmaWNhbnQgdHlwbyBjYXVzZWQgdGhpcywgdGhhbmtzIHRoZSB0aGUgcGF0Y2guCi0KLUJ1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNzQwMjc1Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ3JhaWcgU21hbGwgPGNzbWFsbEBlbmMuY29tLmF1PgotLS0tCi0gQ2hhbmdlTG9nICAgfCA0ICsrKysKLSBzcmMvZnVzZXIuYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCBmZDFjY2NmLi5lNWY3ODRjIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsNyBAQAotK0NoYW5nZXMgaW4gMjIuMjIKLSs9PT09PT09PT09PT09PT09Ci0rCSogRml4ZWQgdHlwbyBpbiBmdXNlciB3aGljaCBoYXMgLU0gb24gRGViaWFuICM3NDAyNzUKLSsKLSBDaGFuZ2VzIGluIDIyLjIxCi0gPT09PT09PT09PT09PT09PQotIAkqIE1pc3NpbmcgY29tbWEgaW4gZnVzZXIoMSkgYWRkZWQgRGViaWFuICM3MDIzOTEKLWRpZmYgLS1naXQgYS9zcmMvZnVzZXIuYyBiL3NyYy9mdXNlci5jCi1pbmRleCBiNDg1ZjY1Li4zODliMzAyIDEwMDY0NAotLS0tIGEvc3JjL2Z1c2VyLmMKLSsrKyBiL3NyYy9mdXNlci5jCi1AQCAtMTE3NCw3ICsxMTc0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCXVzYWdlKF8oIk5vIHByb2Nlc3Mgc3BlY2lmaWNhdGlvbiBnaXZlbiIpKTsKLSAKLSAJLyogQ2hlY2sgaWYgLU0gZmxhZyB3YXMgdXNlZCBhbmQgaWYgc28gY2hlY2sgbW91bnRzICovCi0tCWlmIChvcHRzICogT1BUX0lTTU9VTlRQT0lOVCkgewotKwlpZiAob3B0cyAmIE9QVF9JU01PVU5UUE9JTlQpIHsKLSAJICAgIGNoZWNrX21vdW50cG9pbnRzKCZtb3VudHMsICZuYW1lc19oZWFkLCAmbmFtZXNfdGFpbCk7Ci0gCX0KLSAKLS0tIAotMS44LjQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9maWxlcy8wMDAyLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhhZmNhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9maWxlcy8wMDAyLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBhYTY2YWZlY2Q4YmE5Y2M0MTM5ZjI1YWIxNWVjMzE1MTczNDEzYTdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBCYXJrZXIgPHBhdWxAcGF1bGJhcmtlci5tZS51az4KLURhdGU6IFdlZCwgMjAgQXVnIDIwMTQgMTA6MzE6MzcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSA8bGltaXRzLmg+IGZvciBQQVRIX01BWAotCi1XaGVuIGJ1aWxkaW5nIGFnYWluc3QgbXVzbCBsaWJjLCBQQVRIX01BWCBpcyBkZWZpbmVkIGluIDxsaW1pdHMuaD4uCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYXVsQHBhdWxiYXJrZXIubWUudWs+Ci0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgKFNob3VsZCBiZSBpbiBuZXh0IHJlbGVhc2UgYWZ0ZXIgMjIuMjEpCi0tLS0KLSBzcmMvcHN0cmVlLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy9wc3RyZWUuYyBiL3NyYy9wc3RyZWUuYwotaW5kZXggMDcxZTZjNC4uMGQyODI2MCAxMDA2NDQKLS0tLSBhL3NyYy9wc3RyZWUuYwotKysrIGIvc3JjL3BzdHJlZS5jCi1AQCAtNDEsNiArNDEsNyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotIAotICNpbmNsdWRlICJpMThuLmgiCi0gI2luY2x1ZGUgImNvbW0uaCIKLS0tIAotMi4wLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKaW5kZXggNjZhNzg0Yi4uODJlZjk0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jCkBAIC0xNiw2ICsxNiwxNSBAQAogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CiAKKyMgVXBzdHJlYW0gaGFzIGEgY3VzdG9tIGF1dG9nZW4uc2ggd2hpY2ggaW52b2tlcyBwby91cGRhdGUtcG90ZmlsZXMgYXMgdGhleSAKKyMgZG9uJ3Qgc2hpcCBhIHBvL1BPVEZJTEVTLmluICh3aGljaCBpcyBzaWxseSkuICBXaXRob3V0IHRoYXQgZmlsZSBnZXR0ZXh0IAorIyBkb2Vzbid0IGJlbGlldmUgcG8vIGlzIGEgZ2V0dGV4dCBkaXJlY3RvcnkgYW5kIHdvbid0IGdlbmVyYXRlIHBvL01ha2VmaWxlLgorRVhUUkFfQVVUT1JFQ09ORl9yZW1vdmUgPSAiLS1leGNsdWRlPWF1dG9wb2ludCIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICggY2QgJHtTfSAmJiBwby91cGRhdGUtcG90ZmlsZXMgKQorfQorCisKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgogUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ0NDQ5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAyODU4NzdiNzc2MWQ3NDczNmFjYTI2ODdlZDliZWYyZjc4YjgyYzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIgTm92IDIwMTcgMTY6MjE6MjIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGNyZWF0ZSBzcmMgZGlyZWN0b3J5IGJlZm9yZSBhdHRlbXB0aW5nIHRvIHdyaXRlCisgdGhlcmUKKworT3RoZXJ3aXNlIG91dCBvZiB0cmVlIGJ1aWxkcyB3aWxsIGZhaWwuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDlmNjFhYjQuLmI0Y2VkN2YgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC03OSw3ICs3OSw3IEBAIEVYVFJBX0RJU1QgPSBzcmMvc2lnbmFtZXMuYyBSRUFETUUubWQKKyBDTEVBTkZJTEVTID0gc3JjL3NpZ25hbWVzLmgKKyAKKyBzcmMvc2lnbmFtZXMuaDogc3JjL3NpZ25hbWVzLmMgTWFrZWZpbGUKKy0JCWV4cG9ydCBMQ19BTEw9QyA7IFwKKysJCWV4cG9ydCBMQ19BTEw9QyA7IG1rZGlyIC1wIHNyYyA7IFwKKyAJCUBDUFBAIC1kTSAkPCB8XAorIAkJdHIgLXMgJ1x0ICcgJyAnIHwgc29ydCAtbiAtayAzIHwgc2VkIFwKKyAJJ3M6I2RlZmluZSBTSUdcKFtBLVpdW0EtWl0qWzAtOV0qXCkgXChbMC05XVswLTldKlwpLiokXDp7XCBcMiwiXDEiIH0sOnA7ZCcgfCBcCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjIuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjIuMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNjQ3M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSBwc21pc2MuaW5jCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MzVjMGZkNmViMjA4Mjg4MjYyYjM4NWZhNjU2ZjFiZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzMyM2NhZDYxOTIxMDg0NWI2OTZkN2Q3MjJjMzgzODUyYjJhY2I1YzQ5YjViMDg1MmM0ZjI5Yzc3YTgxNDVhIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wc21pc2MvcHNtaXNjLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVR5cG8taW4tZnVzZXItbWFrZXMtTS1vbi1hbGwtdGhlLXRpbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1VSU5UUFRSX01BWC1pbnN0ZWFkLW9mLV9fV09SRFNJWkUucGF0Y2ggXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMDdmNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMC5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIHBzbWlzYy5pbmMKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuY29tL3BzbWlzYy9wc21pc2MuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVVJTlRQVFJfTUFYLWluc3RlYWQtb2YtX19XT1JEU0laRS5wYXRjaCBcCisJICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaMKgXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiNjdiMWRhMjY4ZjRjMGNlNjg1OTk4MGUzZGZjZmFlYzViMjQ0OGU4MCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRG8tbm90LWFjY2lkZW50YWx5LW92ZXJyaWRlLWNvbW1hbmRsaW5lLXBhc3NlZC1DRkxBRy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMS1Eby1ub3QtYWNjaWRlbnRhbHktb3ZlcnJpZGUtY29tbWFuZGxpbmUtcGFzc2VkLUNGTEFHLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWRkNDcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMS1Eby1ub3QtYWNjaWRlbnRhbHktb3ZlcnJpZGUtY29tbWFuZGxpbmUtcGFzc2VkLUNGTEFHLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA3NzY3NTdhMjNlOTkzMDU4ODk1MGM3ZmNiYzc4MjdlYzdhM2U1MWM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1RvbT1DMz1BMT1DNT1BMT0yMENodj1DMz1BMXRhbD89IDx0Y2h2YXRhbEBzdXNlLmNvbT4KLURhdGU6IE1vbiwgNCBKYW4gMjAxNiAxNTo0ODoxOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgYWNjaWRlbnRhbHkgb3ZlcnJpZGUgY29tbWFuZGxpbmUgcGFzc2VkIENGTEFHUy4KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBUb23DocWhIENodsOhdGFsIDx0Y2h2YXRhbEBzdXNlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggM2JhMTM4Ni4uMTU1MmMxNSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTMsNyArNTMsNyBAQCBBU19JRihbdGVzdCAieCR7cHJlZml4fSIgPSAieE5PTkUiXSwgWwotICMgPT09PT09PT09PT09PT09PQotICMgQ2hlY2sgZm9yIGNmbGFncwotICMgPT09PT09PT09PT09PT09PQotLUNGTEFHUz0iLURfR05VX1NPVVJDRSAtV2FsbCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKLStDRkxBR1M9IiRDRkxBR1MgLURfR05VX1NPVVJDRSAtV2FsbCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKLSBBQ19BUkdfRU5BQkxFKFt3ZXJyb3JdLAotICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXdlcnJvcl0sIFtUcmVhdCBhbGwgd2FybmluZ3MgYXMgZXJyb3JzLCB1c2VmdWwgZm9yIGRldmVsb3BtZW50XSldLAotICAgICBbZW5hYmxlX3dlcnJvcj0iJGVuYWJsZXZhbCJdLAotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMS1GaXgtYnVpbGQtd2l0aC1kaXNhYmxlZC1sZGFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzllNDc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMS1GaXgtYnVpbGQtd2l0aC1kaXNhYmxlZC1sZGFwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotRnJvbSAzOWZkMzBjZTU3ZTNjMzRjMzY0OTg2NmJmOTM0NWE3MWYwYjc4NjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLURhdGU6IE1vbiwgNCBKYW4gMjAxNiAxNToxMDo1MyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBkaXNhYmxlZCBsZGFwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotUmVwb3J0ZWQtYnk6IFRvbWFzIENodmF0YWwgPHRjaHZhdGFsQHN1c2UuY29tPgotU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gd2FybnF1b3RhLmMgfCAzNiArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS93YXJucXVvdGEuYyBiL3dhcm5xdW90YS5jCi1pbmRleCAzNzM0ZjBlLi5lOTg2OGMxIDEwMDY0NAotLS0tIGEvd2FybnF1b3RhLmMKLSsrKyBiL3dhcm5xdW90YS5jCi1AQCAtMTA5LDEzICsxMDksMTMgQEAgc3RydWN0IGNvbmZpZ3BhcmFtcyB7Ci0gCWNoYXIgKnVzZXJfc2lnbmF0dXJlOwotIAljaGFyICpncm91cF9tZXNzYWdlOwotIAljaGFyICpncm91cF9zaWduYXR1cmU7Ci0rCXRpbWVfdCBjY19iZWZvcmU7Ci0rI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCWludCB1c2VfbGRhcF9tYWlsOyAvKiAwICovCi0rCWludCBsZGFwX2lzX3NldHVwOyAvKiAwICovCi0gCWludCBsZGFwX3N0YXJ0dGxzOyAvKiAwICovCi0gCWludCBsZGFwX3RsczsgLyogTERBUF9PUFRfWF9UTFNfTkVWRVIgKi8KLSAJaW50IGxkYXBfdmVyczsgLyogTERBUF9WRVJTSU9OMyAqLwotLQl0aW1lX3QgY2NfYmVmb3JlOwotLSNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotLQlpbnQgbGRhcF9pc19zZXR1cDsgLyogMCAqLwotIAljaGFyIGxkYXBfaG9zdFtDTkZfQlVGRkVSXTsKLSAJaW50IGxkYXBfcG9ydDsKLSAJY2hhciBsZGFwX3VyaVtDTkZfQlVGRkVSXTsKLUBAIC03MjksMTMgKzcyOSwxMyBAQCBzdGF0aWMgaW50IHJlYWRjb25maWdmaWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgY29uZmlncGFyYW1zICpjb25maWcpCi0gCX0KLSAJbWFpbGRldlswXSA9IDA7Ci0gCWNvbmZpZy0+dXNlcl9zaWduYXR1cmUgPSBjb25maWctPnVzZXJfbWVzc2FnZSA9IGNvbmZpZy0+Z3JvdXBfc2lnbmF0dXJlID0gY29uZmlnLT5ncm91cF9tZXNzYWdlID0gTlVMTDsKLSsJY29uZmlnLT5jY19iZWZvcmUgPSAtMTsKLSsKLSsjaWZkZWYgVVNFX0xEQVBfTUFJTF9MT09LVVAKLSAJY29uZmlnLT51c2VfbGRhcF9tYWlsID0gMDsKLSAJY29uZmlnLT5sZGFwX3N0YXJ0dGxzID0gMDsKLSAJY29uZmlnLT5sZGFwX3RscyA9IExEQVBfT1BUX1hfVExTX05FVkVSOwotIAljb25maWctPmxkYXBfdmVycyA9IExEQVBfVkVSU0lPTjM7Ci0tCWNvbmZpZy0+Y2NfYmVmb3JlID0gLTE7Ci0tCi0tI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCWNvbmZpZy0+bGRhcF9wb3J0ID0gY29uZmlnLT5sZGFwX2lzX3NldHVwID0gMDsKLSAJY29uZmlnLT5sZGFwX2hvc3RbMF0gPSAwOwotIAljb25maWctPmxkYXBfdXJpWzBdID0gMDsKLUBAIC04MjAsNiArODIwLDE4IEBAIHN0YXRpYyBpbnQgcmVhZGNvbmZpZ2ZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBjb25maWdwYXJhbXMgKmNvbmZpZykKLSAJCQkJY3JlYXRlX2VvbG4oY29uZmlnLT5ncm91cF9zaWduYXR1cmUpOwotIAkJCQl2ZXJpZnlfZm9ybWF0KGNvbmZpZy0+Z3JvdXBfc2lnbmF0dXJlLCAiR1JPVVBfU0lHTkFUVVJFIik7Ci0gCQkJfQotKwkJCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiQ0NfQkVGT1JFIikpIHsKLSsJCQkJaW50IG51bTsKLSsJCQkJY2hhciB1bml0WzEwXTsKLSsKLSsJCQkJaWYgKHNzY2FuZih2YWx1ZSwgIiVkJXMiLCAmbnVtLCB1bml0KSAhPSAyKQotKwkJCQkJZ290byBjY19wYXJzZV9lcnI7Ci0rCQkJCWlmIChzdHIydGltZXVuaXRzKG51bSwgdW5pdCwgJmNvbmZpZy0+Y2NfYmVmb3JlKSA8IDApIHsKLStjY19wYXJzZV9lcnI6Ci0rCQkJCQlkaWUoMSwgXygiQ2Fubm90IHBhcnNlIHRpbWUgYXQgQ0NfQkVGT1JFIHZhcmlhYmxlIChsaW5lICVkKS5cbiIpLCBsaW5lKTsKLSsJCQkJfQotKwkJCX0KLSsjaWZkZWYgVVNFX0xEQVBfTUFJTF9MT09LVVAKLSAJCQllbHNlIGlmICghc3RyY21wKHZhciwgIkxEQVBfTUFJTCIpKSB7Ci0gCQkJCWlmKHN0cmNhc2VjbXAodmFsdWUsICJ0cnVlIikgPT0gMCkgCi0gCQkJCQljb25maWctPnVzZV9sZGFwX21haWwgPSAxOwotQEAgLTg0NiwxOCArODU4LDYgQEAgc3RhdGljIGludCByZWFkY29uZmlnZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IGNvbmZpZ3BhcmFtcyAqY29uZmlnKQotIAkJCQllbHNlCi0gCQkJCQljb25maWctPmxkYXBfc3RhcnR0bHMgPSAwOwotIAkJCX0KLS0JCQllbHNlIGlmICghc3RyY21wKHZhciwgIkNDX0JFRk9SRSIpKSB7Ci0tCQkJCWludCBudW07Ci0tCQkJCWNoYXIgdW5pdFsxMF07Ci0tCi0tCQkJCWlmIChzc2NhbmYodmFsdWUsICIlZCVzIiwgJm51bSwgdW5pdCkgIT0gMikKLS0JCQkJCWdvdG8gY2NfcGFyc2VfZXJyOwotLQkJCQlpZiAoc3RyMnRpbWV1bml0cyhudW0sIHVuaXQsICZjb25maWctPmNjX2JlZm9yZSkgPCAwKSB7Ci0tY2NfcGFyc2VfZXJyOgotLQkJCQkJZGllKDEsIF8oIkNhbm5vdCBwYXJzZSB0aW1lIGF0IENDX0JFRk9SRSB2YXJpYWJsZSAobGluZSAlZCkuXG4iKSwgbGluZSk7Ci0tCQkJCX0KLS0JCQl9Ci0tI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJMREFQX0hPU1QiKSkKLSAJCQkJc3N0cm5jcHkoY29uZmlnLT5sZGFwX2hvc3QsIHZhbHVlLCBDTkZfQlVGRkVSKTsKLSAJCQllbHNlIGlmICghc3RyY21wKHZhciwgIkxEQVBfUE9SVCIpKQotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtVXNlLU5HUk9VUFNfTUFYLWluc3RlYWQtb2YtTkdST1VQUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMS1Vc2UtTkdST1VQU19NQVgtaW5zdGVhZC1vZi1OR1JPVVBTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmIyZGFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMS1Vc2UtTkdST1VQU19NQVgtaW5zdGVhZC1vZi1OR1JPVVBTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSBmZWNhNmQyZTU1ZDk5MmJiZTE3NmVlOGZhYTczNGMxMDVlYjFiMmUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLURhdGU6IFR1ZSwgMjkgTWFyIDIwMTYgMjA6NDg6MDUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIE5HUk9VUFNfTUFYIGluc3RlYWQgb2YgTkdST1VQUwotCi1OR1JST1VQU19NQVggaXMgd2hhdCBpcyBkZWZpbmVkIGJ5IFN1U3YzOyBOR1JPVVBTIGlzIG5vdCBndWFyYW50ZWVkIGJ5Ci1hbnkgc3RhbmRhcmQsIGJ1dCBpcyBqdXN0IGFuIGFuY2llbnQgQlNEJ2lzbS4gIFNpbmNlIEFuZHJvaWQncyBiaW9uaWMKLWxpYmMgaGFzIHRoZSBmb3JtZXIgYnV0IG5vdCB0aGUgbGF0dGVyLCBsZXQncyB1c2UgTkdST1VQU19NQVggaW5zdGVhZC4KLQotU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLVNpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci0tLS0KLSBxdW90YS5jICAgIHwgNSArKystLQotIHF1b3Rhb3BzLmMgfCA1ICsrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9xdW90YS5jIGIvcXVvdGEuYwotaW5kZXggMDQ5ZGFjNC4uZTE5NWVhZCAxMDA2NDQKLS0tLSBhL3F1b3RhLmMKLSsrKyBiL3F1b3RhLmMKLUBAIC00OCw2ICs0OCw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2lmZGVmIFJQQwotICNpbmNsdWRlIDxycGMvcnBjLmg+Ci0gI2luY2x1ZGUgInJxdW90YS5oIgotQEAgLTI5Niw3ICsyOTcsNyBAQCBzdGF0aWMgaW50IHNob3dxdW90YXMoaW50IHR5cGUsIHFpZF90IGlkLCBpbnQgbW50Y250LCBjaGFyICoqbW50KQotIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSB7Ci0gCWludCBuZ3JvdXBzOwotLQlnaWRfdCBnaWRzZXRbTkdST1VQU10sICpnaWRzZXRwOwotKwlnaWRfdCBnaWRzZXRbTkdST1VQU19NQVhdLCAqZ2lkc2V0cDsKLSAJaW50IGksIHJldDsKLSAJc3RydWN0IG9wdGlvbiBsb25nX29wdHNbXSA9IHsKLSAJCXsgImhlbHAiLCAwLCBOVUxMLCAnaCcgfSwKLUBAIC00MDUsNyArNDA2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXJldCB8PSBzaG93cXVvdGFzKFVTUlFVT1RBLCBnZXR1aWQoKSwgYXJnYywgYXJndik7Ci0gCQlpZiAoZmxhZ3MgJiBGTF9HUk9VUCkgewotIAkJCW5ncm91cHMgPSBzeXNjb25mKF9TQ19OR1JPVVBTX01BWCk7Ci0tCQkJaWYgKG5ncm91cHMgPiBOR1JPVVBTKSB7Ci0rCQkJaWYgKG5ncm91cHMgPiBOR1JPVVBTX01BWCkgewotIAkJCQlnaWRzZXRwID0gbWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKLSAJCQkJaWYgKCFnaWRzZXRwKQotIAkJCQkJZGllKDEsIF8oIkdpZCBzZXQgYWxsb2NhdGlvbiAoJWQpOiAlc1xuIiksIG5ncm91cHMsIHN0cmVycm9yKGVycm5vKSk7Ci1kaWZmIC0tZ2l0IGEvcXVvdGFvcHMuYyBiL3F1b3Rhb3BzLmMKLWluZGV4IDEzNmFlYzMuLjU5MGRjMWIgMTAwNjQ0Ci0tLS0gYS9xdW90YW9wcy5jCi0rKysgYi9xdW90YW9wcy5jCi1AQCAtNTEsNiArNTEsNyBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaWYgZGVmaW5lZChSUEMpCi0gI2luY2x1ZGUgInJxdW90YS5oIgotQEAgLTk3LDcgKzk4LDcgQEAgc3RydWN0IGRxdW90ICpnZXRwcml2cyhxaWRfdCBpZCwgc3RydWN0IHF1b3RhX2hhbmRsZSAqKmhhbmRsZXMsIGludCBxdWlldCkKLSAjaWYgZGVmaW5lZChCU0RfQkVIQVZJT1VSKQotIAlpbnQgaiwgbmdyb3VwczsKLSAJdWlkX3QgZXVpZDsKLS0JZ2lkX3QgZ2lkc2V0W05HUk9VUFNdLCAqZ2lkc2V0cDsKLSsJZ2lkX3QgZ2lkc2V0W05HUk9VUFNfTUFYXSwgKmdpZHNldHA7Ci0gI2VuZGlmCi0gCi0gCWZvciAoaSA9IDA7IGhhbmRsZXNbaV07IGkrKykgewotQEAgLTExNSw3ICsxMTYsNyBAQCBzdHJ1Y3QgZHF1b3QgKmdldHByaXZzKHFpZF90IGlkLCBzdHJ1Y3QgcXVvdGFfaGFuZGxlICoqaGFuZGxlcywgaW50IHF1aWV0KQotIAkJCQlpZiAoZ2V0ZXVpZCgpID09IDApCi0gCQkJCQlicmVhazsKLSAJCQkJbmdyb3VwcyA9IHN5c2NvbmYoX1NDX05HUk9VUFNfTUFYKTsKLS0JCQkJaWYgKG5ncm91cHMgPiBOR1JPVVBTKSB7Ci0rCQkJCWlmIChuZ3JvdXBzID4gTkdST1VQU19NQVgpIHsKLSAJCQkJCWdpZHNldHAgPSBtYWxsb2Mobmdyb3VwcyAqIHNpemVvZihnaWRfdCkpOwotIAkJCQkJaWYgKCFnaWRzZXRwKSB7Ci0gCQkJCQkJZ2lkMmdyb3VwKGlkLCBuYW1lKTsKLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDItQWxsb3ctYnVpbGRpbmctb24tc3lzdGVtcy10aGF0LWRvLW5vdC1oYXZlLXJwYy1oZWFkZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNlYTU0OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDItQWxsb3ctYnVpbGRpbmctb24tc3lzdGVtcy10aGF0LWRvLW5vdC1oYXZlLXJwYy1oZWFkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi1Gcm9tIGYzMGUxYWRhODMyNjQ2M2NjMGFmMDQ4YWZhMDU4YmMyZjFkYzkzNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgotRGF0ZTogVHVlLCAyOSBNYXIgMjAxNiAyMDo0ODowNCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBBbGxvdyBidWlsZGluZyBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUgcnBjIGhlYWRlciBmaWxlcwotCi1BbmRyb2lkJ3MgYmlvbmljIEMgbGlicmFyeSBkb2Vzbid0IGhhdmUgU3VuIFJQQyBzdXBwb3J0LgotCi1TaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgotU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLS0tLQotIE1ha2VmaWxlLmFtIHwgMzAgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gcXVvdGFvcHMuYyAgfCAgMiArKwotIHNldHF1b3RhLmMgIHwgIDIgKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggNmQ3ZWEwZS4uODJkYjk5ZiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTEsNyArMSw1IEBACi0gQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKLSAKLS1CVUlMVF9TT1VSQ0VTID0gcnF1b3RhLmggcnF1b3RhLmMgcnF1b3RhX2NsbnQuYwotLQotIGRvY2RpciA9ICQoZGF0YWRpcikvZG9jL0BQQUNLQUdFQAotIGRvY19EQVRBID0gXAotIAlSRUFETUUubWFpbHNlcnZlciBcCi1AQCAtMTIsMTEgKzEwLDYgQEAgZG9jX0RBVEEgPSBcCi0gCWRvYy9xdW90YXMucHJlZm9ybWF0ZWQgXAotIAlkb2MvcXVvdGFzLTEuZXBzCi0gCi0tcnBjc3ZjZGlyID0gJChpbmNsdWRlZGlyKS9ycGNzdmMKLS1ycGNzdmNfREFUQSA9IFwKLS0JcnF1b3RhLmggXAotLQlycXVvdGEueAotLQotIHN5c2NvbmZfREFUQSA9IFwKLSAJd2FybnF1b3RhLmNvbmYgXAotIAlxdW90YXRhYiBcCi1AQCAtMzUsMTUgKzI4LDEyIEBAIG1hbl9NQU5TID0gXAotIAlxdW90YS4xIFwKLSAJcXVvdC44IFwKLSAJcmVwcXVvdGEuOCBcCi0tCXJwYy5ycXVvdGFkLjggXAotIAlycXVvdGEuMyBcCi0gCXNldHF1b3RhLjggXAotIAl3YXJucXVvdGEuY29uZi41IFwKLSAJd2FybnF1b3RhLjggXAotIAl4cW1zdGF0cy44Ci0gCi0tQ0xFQU5GSUxFUyA9IHJxdW90YS5jIHJxdW90YS5oIHJxdW90YV9jbG50LmMKLS0KLSBTVUJESVJTID0gcG8KLSAKLSBFWFRSQV9ESVNUID0gXAotQEAgLTU1LDkgKzQ1LDE1IEBAIEVYVFJBX0RJU1QgPSBcCi0gCUNoYW5nZWxvZyBcCi0gCWxkYXAtc2NyaXB0cwotIAotLW5vaW5zdF9MSUJSQVJJRVMgPSBcCi0tCWxpYnF1b3RhLmEgXAotLQlsaWJycGNjbGllbnQuYQotK25vaW5zdF9MSUJSQVJJRVMgPSBsaWJxdW90YS5hCi0rCi0raWYgV0lUSF9SUEMKLStycGNzdmNkaXIgPSAkKGluY2x1ZGVkaXIpL3JwY3N2YwotK3JwY3N2Y19EQVRBID0gXAotKwlycXVvdGEuaCBcCi0rCXJxdW90YS54Ci0rCi0rbm9pbnN0X0xJQlJBUklFUyArPSBsaWJycGNjbGllbnQuYQotIAotIGxpYnJwY2NsaWVudF9hX1NPVVJDRVMgPSBcCi0gCXJxdW90YS5jIFwKLUBAIC02Nyw4ICs2MywxMCBAQCBsaWJycGNjbGllbnRfYV9TT1VSQ0VTID0gXAotIAlycXVvdGFfY2xudC5jCi0gbGlicnBjY2xpZW50X2FfQ0ZMQUdTID0gLVduby11bnVzZWQKLSAKLS1pZiBXSVRIX1JQQwotIFJQQ0xJQlMgPSBsaWJycGNjbGllbnQuYQotK0JVSUxUX1NPVVJDRVMgPSBycXVvdGEuaCBycXVvdGEuYyBycXVvdGFfY2xudC5jCi0rQ0xFQU5GSUxFUyA9IHJxdW90YS5jIHJxdW90YS5oIHJxdW90YV9jbG50LmMKLSttYW5fTUFOUyArPSBycGMucnF1b3RhZC44Ci0gZW5kaWYKLSAKLSBsaWJxdW90YV9hX1NPVVJDRVMgPSBcCi1AQCAtMjE3LDYgKzIxNSw3IEBAIGNvbnZlcnRxdW90YV9MREFERCA9IFwKLSAJbGlicXVvdGEuYSBcCi0gCSQoUlBDTElCUykKLSAKLStpZiBXSVRIX1JQQwotIHJwY19ycXVvdGFkX1NPVVJDRVMgPSBcCi0gCXJxdW90YV9zZXJ2ZXIuYyBcCi0gCXJxdW90YV9zdmMuYyBcCi1AQCAtMjI1LDYgKzIyNCw3IEBAIHJwY19ycXVvdGFkX0xEQUREID0gXAotIAlsaWJxdW90YS5hIFwKLSAJJChXUkFQX0xJQlMpIFwKLSAJJChSUENMSUJTKQotK2VuZGlmCi0gCi0gcXVvdGFfbmxkX1NPVVJDRVMgPSBxdW90YV9ubGQuYwotIHF1b3RhX25sZF9DRkxBR1MgPSBcCi1AQCAtMjM2LDYgKzIzNiw3IEBAIHF1b3RhX25sZF9MREFERCA9IFwKLSAJJChEQlVTX0xJQlMpIFwKLSAJJChMSUJOTDNfTElCUykKLSAKLStpZiBXSVRIX1JQQwotICMgLS0tLS0tLS0tLS0tLS0tLS0tCi0gIyBScGNnZW4gY29udmVyc2lvbnMKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLQotQEAgLTI1MCw2ICsyNTEsNyBAQCBxdW90YV9ubGRfTERBREQgPSBcCi0gcnF1b3RhX2NsbnQuYzogcnF1b3RhLngKLSAJQHJtIC1mICRACi0gCUAkKFJQQ0dFTikgLWwgLW8gJEAgJDwKLStlbmRpZgotIAotICMgLS0tLS0tLS0KLSAjIFF1b3Rhb2ZmCi1kaWZmIC0tZ2l0IGEvcXVvdGFvcHMuYyBiL3F1b3Rhb3BzLmMKLWluZGV4IDQ3ZWY5YTcuLjEzNmFlYzMgMTAwNjQ0Ci0tLS0gYS9xdW90YW9wcy5jCi0rKysgYi9xdW90YW9wcy5jCi1AQCAtMzQsNyArMzQsOSBAQAotIAotICNpbmNsdWRlICJjb25maWcuaCIKLSAKLSsjaWYgZGVmaW5lZChSUEMpCi0gI2luY2x1ZGUgPHJwYy9ycGMuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci1kaWZmIC0tZ2l0IGEvc2V0cXVvdGEuYyBiL3NldHF1b3RhLmMKLWluZGV4IDUxZDdiM2MuLjhlY2Q5YzMgMTAwNjQ0Ci0tLS0gYS9zZXRxdW90YS5jCi0rKysgYi9zZXRxdW90YS5jCi1AQCAtNyw3ICs3LDkgQEAKLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0rI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlIDxycGMvcnBjLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotLS0gCi0yLjYuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMy1Eb24tdC1idWlsZC1ycGMucnF1b3RhZC13aGVuLWRpc2FibGUtcnBjLXdhcy1yZXF1ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDU1Mzg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMy1Eb24tdC1idWlsZC1ycGMucnF1b3RhZC13aGVuLWRpc2FibGUtcnBjLXdhcy1yZXF1ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSBjN2E3NjIzN2U3YTUxYTY5ZDAyMzZlYmZjMTkxZTQ2MmY4MDVjZjRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGFycyBXZW5kbGVyIDxwb2x5bm9taWFsLWNAZ2VudG9vLm9yZz4KLURhdGU6IE1vbiwgMTUgRmViIDIwMTYgMTQ6NDI6MTQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgYnVpbGQgcnBjLnJxdW90YWQgd2hlbiAtLWRpc2FibGUtcnBjIHdhcyByZXF1ZXN0ZWQuCi0KLVRoaXMgZml4ZXMgYSBidWNoIG9mIHVuZGVmaW5lZCByZWZlcmVuY2VzOgotCi14ODZfNjQtcGMtbGludXgtZ251LWdjYyAgLW1hcmNoPW5hdGl2ZSAtbXR1bmU9bmF0aXZlIC1PMiAtcGlwZSAtRF9HTlVfU09VUkNFIC1XYQotbGwgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLWZQSUMgLXBpZSAtV2wsLU8xIC1XbCwtLWhhc2gtc3QKLXlsZT1nbnUgLVdsLC0tc29ydC1jb21tb24gLVdsLC0tYXMtbmVlZGVkIC1vIHJwYy5ycXVvdGFkIHJxdW90YV9zZXJ2ZXIubyBycXVvdGFfCi1zdmMubyBzdmNfc29ja2V0Lm8gbGlicXVvdGEuYQotcnF1b3RhX3N2Yy5vOiBJbiBmdW5jdGlvbiBgcnF1b3RhcHJvZ18yJzoKLXJxdW90YV9zdmMuYzooLnRleHQrMHgxZDMpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHgxZGEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZXh0X3NldHF1b3RhX2FyZ3MnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MmIyKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX3NldHF1b3RhX3JzbHQnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MmI5KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2V4dF9zZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDJmZik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9nZXRxdW90YV9yc2x0JwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDMwNik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9leHRfZ2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzMWEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzMjEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZXh0X2dldHF1b3RhX2FyZ3MnCi1ycXVvdGFfc3ZjLm86IEluIGZ1bmN0aW9uIGBycXVvdGFwcm9nXzEnOgotcnF1b3RhX3N2Yy5jOigudGV4dCsweDNmMyk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9zZXRxdW90YV9yc2x0JwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDNmYSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9zZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDRkMik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9zZXRxdW90YV9yc2x0JwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDRkOSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9zZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDUxZik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9nZXRxdW90YV9yc2x0JwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDUyNik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9nZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDUzYSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9nZXRxdW90YV9yc2x0JwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDU0MSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9nZXRxdW90YV9hcmdzJwotY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi1NYWtlZmlsZTo5MDE6IHJlY2lwZSBmb3IgdGFyZ2V0ICdycGMucnF1b3RhZCcgZmFpbGVkCi0KLVNpZ25lZC1vZmYtYnk6IExhcnMgV2VuZGxlciA8cG9seW5vbWlhbC1jQGdlbnRvby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgotLS0tCi0gTWFrZWZpbGUuYW0gfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggNzdmODQwMC4uNmQ3ZWEwZSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTExNiw4ICsxMTYsMTEgQEAgc2Jpbl9QUk9HUkFNUyA9IFwKLSAJeHFtc3RhdHMgXAotIAllZHF1b3RhIFwKLSAJc2V0cXVvdGEgXAotLQljb252ZXJ0cXVvdGEgXAotKwljb252ZXJ0cXVvdGEKLStpZiBXSVRIX1JQQwotK3NiaW5fUFJPR1JBTVMgKz0gXAotIAlycGMucnF1b3RhZAotK2VuZGlmCi0gaWYgV0lUSF9ORVRMSU5LCi0gc2Jpbl9QUk9HUkFNUyArPSBcCi0gCXF1b3RhX25sZAotLS0gCi0yLjYuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDQtRml4LXdhcm5pbmdzLWR1ZS10by1taXNzaW5nLXN0ZGxpYi5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRiNGNlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDQtRml4LXdhcm5pbmdzLWR1ZS10by1taXNzaW5nLXN0ZGxpYi5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSBjNGI1NmVlNThiOWI3NmQyNTk4NTM1Y2Y2MTA5YTI3YjIyZTYwYWJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLURhdGU6IFdlZCwgMzAgTWFyIDIwMTYgMTA6MjE6MTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHdhcm5pbmdzIGR1ZSB0byBtaXNzaW5nIHN0ZGxpYi5oCi0KLVdoZW4gY29tcGlsaW5nIHdpdGhvdXQgUlBDLCB3ZSBkbyBub3QgZ2V0IHN0ZGxpYi5oIGF1dG9tYXRpY2FsbHkKLWluY2x1ZGVkIHZpYSBvdGhlciBpbmNsdWRlcyBhbmQgdGh1cyBtaXNzIHNvbWUgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCi1JbmNsdWRlIHN0ZGxpYi5oIGV4cGxpY2l0ZWx5LgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgotLS0tCi0gcXVvdGFvcHMuYyB8IDEgKwotIHNldHF1b3RhLmMgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcXVvdGFvcHMuYyBiL3F1b3Rhb3BzLmMKLWluZGV4IDU5MGRjMWIuLjU2Y2Y2MjIgMTAwNjQ0Ci0tLS0gYS9xdW90YW9wcy5jCi0rKysgYi9xdW90YW9wcy5jCi1AQCAtNTIsNiArNTIsNyBAQAotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAKLSAjaWYgZGVmaW5lZChSUEMpCi0gI2luY2x1ZGUgInJxdW90YS5oIgotZGlmZiAtLWdpdCBhL3NldHF1b3RhLmMgYi9zZXRxdW90YS5jCi1pbmRleCA4ZWNkOWMzLi40MjE2MzFlIDEwMDY0NAotLS0tIGEvc2V0cXVvdGEuYwotKysrIGIvc2V0cXVvdGEuYwotQEAgLTE3LDYgKzE3LDcgQEAKLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0gI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlICJycXVvdGEuaCIKLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL3JlcGxhY2VfZ2V0cnBjYnludW1iZXJfci5wYXRjaAppbmRleCA5Y2EyZmZjLi40Njg3Y2EwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL3JlcGxhY2VfZ2V0cnBjYnludW1iZXJfci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhL3JlcGxhY2VfZ2V0cnBjYnludW1iZXJfci5wYXRjaApAQCAtMSwyMCArMSwzMiBAQAotUmVwbGFjZSBnZXRycGNieW51bWJlcl9yIHdpdGggZ2V0cnBjYnludW1iZXIKK0Zyb20gYTM4MDhmZDE2NTg0NzI5OGQwMjU5NzFlYjNjN2JlN2QxMWNhYmE5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDggTm92IDIwMTcgMTE6NTY6NTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSBnZXRycGNieW51bWJlcl9yIHdpdGggZ2V0cnBjYnludW1iZXIKKwogbXVzbCBhbmQgdWNsaWJjIGRvbnQgaW1wbGVtZW50IGl0CiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IHF1b3RhLXRvb2xzL3N2Y19zb2NrZXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHF1b3RhLXRvb2xzLm9yaWcvc3ZjX3NvY2tldC5jCi0rKysgcXVvdGEtdG9vbHMvc3ZjX3NvY2tldC5jCi1AQCAtNTUsNyArNTUsOCBAQCBzdGF0aWMgaW50IHN2Y19zb2NrZXQgKHVfbG9uZyBudW1iZXIsIGluCi0gCWFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIHN2Y19zb2NrZXQuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3ZjX3NvY2tldC5jIGIvc3ZjX3NvY2tldC5jCitpbmRleCA4YTQ0NjA0Li41YmRhYWEwIDEwMDY0NAorLS0tIGEvc3ZjX3NvY2tldC5jCisrKysgYi9zdmNfc29ja2V0LmMKK0BAIC0zNiw3ICszNiw4IEBAIHN0YXRpYyBpbnQgZ2V0X3NlcnZpY2VfcG9ydCh1X2xvbmcgbnVtYmVyLCBjb25zdCBjaGFyICpwcm90bykKKyAJc3RydWN0IHNlcnZlbnQgc2VydmJ1ZiwgKnNlcnZwID0gTlVMTDsKKyAJaW50IHJldDsKICAKLSAJaWYgKCFwb3J0KSB7Ci0tCQlyZXQgPSBnZXRycGNieW51bWJlcl9yKG51bWJlciwgJnJwY2J1ZiwgcnBjZGF0YSwgc2l6ZW9mKHJwY2RhdGEpLCAmcnBjcCk7Ci0rCQlycGNwID0gZ2V0cnBjYnludW1iZXIobnVtYmVyKTsKLSsJCXJldCA9IDA7Ci0gCQlpZiAocmV0ID09IDAgJiYgcnBjcCAhPSBOVUxMKSB7Ci0gCQkJLyogRmlyc3QgdHJ5IG5hbWUgKi8KLSAJCQlyZXQgPSBnZXRzZXJ2YnluYW1lX3IocnBjcC0+cl9uYW1lLCBwcm90bywgJnNlcnZidWYsIHNlcnZkYXRhLAorLQlyZXQgPSBnZXRycGNieW51bWJlcl9yKG51bWJlciwgJnJwY2J1ZiwgcnBjZGF0YSwgc2l6ZW9mKHJwY2RhdGEpLCAmcnBjcCk7CisrICAgIHJwY3AgPSBnZXRycGNieW51bWJlcihudW1iZXIpOworKyAgICByZXQgPSAwOworIAlpZiAocmV0ID09IDAgJiYgcnBjcCAhPSBOVUxMKSB7CisgCQkvKiBGaXJzdCB0cnkgbmFtZSAqLworIAkJcmV0ID0gZ2V0c2VydmJ5bmFtZV9yKHJwY3AtPnJfbmFtZSwgcHJvdG8sICZzZXJ2YnVmLCBzZXJ2ZGF0YSwKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjAzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGIzODU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgZm9yIG1vbml0b3JpbmcgJiBsaW1pdGluZyB1c2VyIGRpc2sgdXNhZ2UgcGVyIGZpbGVzeXN0ZW0iCi1TRUNUSU9OID0gImJhc2UiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4cXVvdGEvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE4MTM2JmF0aWQ9MTE4MTM2IgotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9xdW90YS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzM7bWQ1PTMzMWM3ZDc3NzQ0YmZlMGFkMjQwMjdmMDY1MTAyOGVjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JxdW90YV9zZXJ2ZXIuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mZTdlMGQ3ZTExYzZmODIwZjhmYTYyYTVhZjcxMjMwZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdmNfc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9MjRkNWE4NzkyZGE0NTkxMDc4NmVlYWM3NTBiZThjZWIiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvbGludXhxdW90YS9xdW90YS10b29scy8ke1BWfS9xdW90YS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1kaXNhYmxlZC1sZGFwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWFjY2lkZW50YWx5LW92ZXJyaWRlLWNvbW1hbmRsaW5lLXBhc3NlZC1DRkxBRy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9mY250bC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmVfbm9uX3Bvc2l4X3R5cGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLU5HUk9VUFNfTUFYLWluc3RlYWQtb2YtTkdST1VQUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1Eb24tdC1idWlsZC1ycGMucnF1b3RhZC13aGVuLWRpc2FibGUtcnBjLXdhcy1yZXF1ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LXdhcm5pbmdzLWR1ZS10by1taXNzaW5nLXN0ZGxpYi5oLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YjA5ZjljOTM1MTVjMjVhNTI4YmU1NzU0Y2RmYjZmNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzZjNGQ5YWU3YmYzMDUwNmRkMmFhM2Q4MDU2YzRmZjJmOGQwODc5MzBkN2M3MjE2MTZmNWMwOTNiZGM2NzRiIgotCi1DVkVfUFJPRFVDVCA9ICJsaW51eF9kaXNrcXVvdGEiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4cXVvdGEvZmlsZXMvcXVvdGEtdG9vbHMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3F1b3RhLXRvb2xzLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgZTJmc3Byb2dzIGxpYm5sIGRidXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1DRkxBR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JwYycsICctSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjJywgJycsIGQpfSIKLUxERkxBR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JwYycsICctbHRpcnBjJywgJycsIGQpfSIKLUFTTkVFREVEID0gIiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyBycGMgYnNkIgotUEFDS0FHRUNPTkZJR19saWJjLW11c2wgPSAidGNwLXdyYXBwZXJzIHJwYyIKLQotUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0tZW5hYmxlLWxpYndyYXAsLS1kaXNhYmxlLWxpYndyYXAsdGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1tycGNdID0gIi0tZW5hYmxlLXJwYywtLWRpc2FibGUtcnBjLGxpYnRpcnBjIgotUEFDS0FHRUNPTkZJR1tic2RdID0gIi0tZW5hYmxlLWJzZF9iZWhhdmlvdXI9eWVzLC0tZW5hYmxlLWJzZF9iZWhhdmlvdXI9bm8sIgotUEFDS0FHRUNPTkZJR1tsZGFwbWFpbF0gPSAiLS1lbmFibGUtbGRhcG1haWwsLS1kaXNhYmxlLWxkYXBtYWlsLG9wZW5sZGFwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjA0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjA0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZjM3NjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhXzQuMDQuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJUb29scyBmb3IgbW9uaXRvcmluZyAmIGxpbWl0aW5nIHVzZXIgZGlzayB1c2FnZSBwZXIgZmlsZXN5c3RlbSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGludXhxdW90YS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgxMzYmYXRpZD0xMTgxMzYiCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3F1b3RhLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zMzttZDU9MzMxYzdkNzc3NDRiZmUwYWQyNDAyN2YwNjUxMDI4ZWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcnF1b3RhX3NlcnZlci5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlN2UwZDdlMTFjNmY4MjBmOGZhNjJhNWFmNzEyMzBmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N2Y19zb2NrZXQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT0yNGQ1YTg3OTJkYTQ1OTEwNzg2ZWVhYzc1MGJlOGNlYiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9saW51eHF1b3RhL3F1b3RhLXRvb2xzLyR7UFZ9L3F1b3RhLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9mY250bC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmVfbm9uX3Bvc2l4X3R5cGVzLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNDZmM2IwYjUxNDFmMDMyZjI1Njg0MDA1ZGFjNDlkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzViZTE4ODdlN2Y1MWY1NDE2NWU3NzhhZTQzZmM4NTljMDRlNDRkODg4MzRlY2IyZjQ3MGU5MWQ0ZWY4ZWRmIgorCitDVkVfUFJPRFVDVCA9ICJsaW51eF9kaXNrcXVvdGEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4cXVvdGEvZmlsZXMvcXVvdGEtdG9vbHMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL3F1b3RhLXRvb2xzLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgZTJmc3Byb2dzIGxpYm5sIGRidXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IHBrZ2NvbmZpZworCitDRkxBR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JwYycsICctSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjJywgJycsIGQpfSIKK0xERkxBR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JwYycsICctbHRpcnBjJywgJycsIGQpfSIKK0FTTkVFREVEID0gIiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyBycGMgYnNkIgorUEFDS0FHRUNPTkZJR19saWJjLW11c2wgPSAidGNwLXdyYXBwZXJzIHJwYyIKKworUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0tZW5hYmxlLWxpYndyYXAsLS1kaXNhYmxlLWxpYndyYXAsdGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1tycGNdID0gIi0tZW5hYmxlLXJwYywtLWRpc2FibGUtcnBjLGxpYnRpcnBjIgorUEFDS0FHRUNPTkZJR1tic2RdID0gIi0tZW5hYmxlLWJzZF9iZWhhdmlvdXI9eWVzLC0tZW5hYmxlLWJzZF9iZWhhdmlvdXI9bm8sIgorUEFDS0FHRUNPTkZJR1tsZGFwbWFpbF0gPSAiLS1lbmFibGUtbGRhcG1haWwsLS1kaXNhYmxlLWxkYXBtYWlsLG9wZW5sZGFwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMjNlZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9wbWFwcHJvY19kdW1wLUZpeGVkLXR5cG8taW4tbWVtb3J5LWxlYWstcGF0Y2gucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBjNDlhN2VhNjM5ZWI3MDA4MjNlMTc0ZmQ2MDViYmJlMTgzZTIyOWFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3RldmUgRGlja3NvbiA8c3RldmVkQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDE3IE1heSAyMDE3IDEwOjUyOjI1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBtYXBwcm9jX2R1bXA6IEZpeGVkIHR5cG8gaW4gbWVtb3J5IGxlYWsgcGF0Y2gKKworY29tbWl0IDdlYTM2ZWVlIGludHJvZHVjZSBhIHR5cG8gdGhhdCBjYXVzZWQKK05JUyAoYWthIHlwYmluZCkgdG8gZmFpbC4KKworU2lnbmVkLW9mZi1ieTogU3RldmUgRGlja3NvbiA8c3RldmVkQHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9wbWFwX3N2Yy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogcnBjYmluZC0wLjIuNC9zcmMvcG1hcF9zdmMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHJwY2JpbmQtMC4yLjQub3JpZy9zcmMvcG1hcF9zdmMuYworKysrIHJwY2JpbmQtMC4yLjQvc3JjL3BtYXBfc3ZjLmMKK0BAIC0zODQsNyArMzg0LDcgQEAgcG1hcHByb2NfZHVtcChzdHJ1Y3Qgc3ZjX3JlcSAqcnFzdHAgLypfXworIAl9CisgCisgZG9uZToKKy0JaWYgKCFzdmNfZnJlZWFyZ3MoeHBydCwgKHhkcnByb2NfdCkgeGRyX3BtYXAsIChjaGFyICopTlVMTCkpIHsKKysJaWYgKCFzdmNfZnJlZWFyZ3MoeHBydCwgKHhkcnByb2NfdCkgeGRyX3ZvaWQsIChjaGFyICopTlVMTCkpIHsKKyAJCWlmIChkZWJ1Z2dpbmcpIHsKKyAJCQkvKih2b2lkKSB4bG9nKExPR19ERUJVRywgInVuYWJsZSB0byBmcmVlIGFyZ3VtZW50c1xuIik7Ki8KKyAJCQlpZiAoZG9hYm9ydCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYnByb2NfY2FsbGl0X2NvbS1TdG9wLWZyZWVpbmctYS1zdGF0aWMtcG9pbnRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWEwMDBkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gN2M3NTkwYWQ1MzZjMGUyNGJlZjc5MGNiMWU2NTcwMmZjNTRkYjU2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAxMToyNzoyMiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBycGNicHJvY19jYWxsaXRfY29tOiBTdG9wIGZyZWVpbmcgYSBzdGF0aWMgcG9pbnRlcgorCitjb21taXQgN2VhMzZlZSBpbnRyb2R1Y2VkIGEgc3ZjX2ZyZWVhcmdzKCkgY2FsbAordGhhdCBlbmRlZCB1cCBmcmVlaW5nIHN0YXRpYyBwb2ludGVyLgorCitJdCB0dXJucyBvdXQgdGhlIGFsbG9jYXRpb25zIGZvciB0aGUgcm10X2FyZ3MKK2lzIG5vdCBuZWNlc3NhcnkgLiBUaGUgeGRyIHJvdXRpbmVzICh4ZHJfYnl0ZXMpIHdpbGwKK2hhbmRsZSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHRoZSBsYXJnZXN0Citwb3NzaWJsZSBtZXNzYWdlIHNpemUgaXMgVURQTVNHU0laRSAoZHVlIHRvIFVEUCBvbmx5KQord2hpY2ggaXMgc21hbGxlciB0aGFuIFJQQ19CVUZfTUFYCisKK1NpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcnBjYl9zdmNfY29tLmMgfCAzOSArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9ycGNiX3N2Y19jb20uYyBiL3NyYy9ycGNiX3N2Y19jb20uYworaW5kZXggY2I2M2FmZC4uMWZjMjIyOSAxMDA2NDQKKy0tLSBhL3NyYy9ycGNiX3N2Y19jb20uYworKysrIGIvc3JjL3JwY2Jfc3ZjX2NvbS5jCitAQCAtNjEyLDkgKzYxMiw5IEBAIHJwY2Jwcm9jX2NhbGxpdF9jb20oc3RydWN0IHN2Y19yZXEgKnJxc3RwLCBTVkNYUFJUICp0cmFuc3AsCisgCXN0cnVjdCBuZXRjb25maWcgKm5jb25mOworIAlzdHJ1Y3QgbmV0YnVmICpjYWxsZXI7CisgCXN0cnVjdCByX3JtdGNhbGxfYXJncyBhOworLQljaGFyICpidWZfYWxsb2MgPSBOVUxMLCAqb3V0YnVmcDsKKysJY2hhciAqb3V0YnVmcDsKKyAJY2hhciAqb3V0YnVmX2FsbG9jID0gTlVMTDsKKy0JY2hhciBidWZbUlBDX0JVRl9NQVhdLCBvdXRidWZbUlBDX0JVRl9NQVhdOworKwljaGFyICBvdXRidWZbUlBDX0JVRl9NQVhdOworIAlzdHJ1Y3QgbmV0YnVmICpuYSA9IChzdHJ1Y3QgbmV0YnVmICopIE5VTEw7CisgCXN0cnVjdCBycGNfbXNnIGNhbGxfbXNnOworIAlpbnQgb3V0bGVuOworQEAgLTYzNSwzNiArNjM1LDEwIEBAIHJwY2Jwcm9jX2NhbGxpdF9jb20oc3RydWN0IHN2Y19yZXEgKnJxc3RwLCBTVkNYUFJUICp0cmFuc3AsCisgCX0KKyAJaWYgKHNpLnNpX3NvY2t0eXBlICE9IFNPQ0tfREdSQU0pCisgCQlyZXR1cm47CS8qIE9ubHkgZGF0YWdyYW0gdHlwZSBhY2NlcHRlZCAqLworLQlzZW5kc3ogPSBfX3JwY19nZXRfdF9zaXplKHNpLnNpX2FmLCBzaS5zaV9wcm90bywgVURQTVNHU0laRSk7CistCWlmIChzZW5kc3ogPT0gMCkgewkvKiBkYXRhIHRyYW5zZmVyIG5vdCBzdXBwb3J0ZWQgKi8KKy0JCWlmIChyZXBseV90eXBlID09IFJQQ0JQUk9DX0lORElSRUNUKQorLQkJCXN2Y2Vycl9zeXN0ZW1lcnIodHJhbnNwKTsKKy0JCXJldHVybjsKKy0JfQorLQkvKgorLQkgKiBTaG91bGQgYmUgbXVsdGlwbGUgb2YgNCBmb3IgWERSLgorLQkgKi8KKy0Jc2VuZHN6ID0gKChzZW5kc3ogKyAzKSAvIDQpICogNDsKKy0JaWYgKHNlbmRzeiA+IFJQQ19CVUZfTUFYKSB7CistI2lmZGVmCW5vdHlldAorLQkJYnVmX2FsbG9jID0gYWxsb2NhKHNlbmRzeik7CQkvKiBub3QgaW4gSURSMj8gKi8KKy0jZWxzZQorLQkJYnVmX2FsbG9jID0gbWFsbG9jKHNlbmRzeik7CistI2VuZGlmCS8qIG5vdHlldCAqLworLQkJaWYgKGJ1Zl9hbGxvYyA9PSBOVUxMKSB7CistCQkJaWYgKGRlYnVnZ2luZykKKy0JCQkJeGxvZyhMT0dfREVCVUcsCistCQkJCQkicnBjYnByb2NfY2FsbGl0X2NvbTogIE5vIE1lbW9yeSFcbiIpOworLQkJCWlmIChyZXBseV90eXBlID09IFJQQ0JQUk9DX0lORElSRUNUKQorLQkJCQlzdmNlcnJfc3lzdGVtZXJyKHRyYW5zcCk7CistCQkJcmV0dXJuOworLQkJfQorLQkJYS5ybXRfYXJncy5hcmdzID0gYnVmX2FsbG9jOworLQl9IGVsc2UgeworLQkJYS5ybXRfYXJncy5hcmdzID0gYnVmOworLQl9CisrCXNlbmRzeiA9IFVEUE1TR1NJWkU7CisgCisgCWNhbGxfbXNnLnJtX3hpZCA9IDA7CS8qIEZvciBlcnJvciBjaGVja2luZyBwdXJwb3NlcyAqLworKwltZW1zZXQoJmEsIDAsIHNpemVvZihhKSk7IC8qIFplcm8gb3V0IHRoZSBpbnB1dCBidWZmZXIgKi8KKyAJaWYgKCFzdmNfZ2V0YXJncyh0cmFuc3AsICh4ZHJwcm9jX3QpIHhkcl9ybXRjYWxsX2FyZ3MsIChjaGFyICopICZhKSkgeworIAkJaWYgKHJlcGx5X3R5cGUgPT0gUlBDQlBST0NfSU5ESVJFQ1QpCisgCQkJc3ZjZXJyX2RlY29kZSh0cmFuc3ApOworQEAgLTcwNCw3ICs2NzgsOCBAQCBycGNicHJvY19jYWxsaXRfY29tKHN0cnVjdCBzdmNfcmVxICpycXN0cCwgU1ZDWFBSVCAqdHJhbnNwLAorIAlpZiAocmJsID09IChycGNibGlzdF9wdHIpTlVMTCkgeworICNpZmRlZiBSUENCSU5EX0RFQlVHCisgCQlpZiAoZGVidWdnaW5nKQorLQkJCXhsb2coTE9HX0RFQlVHLCAibm90IGZvdW5kXG4iKTsKKysJCQl4bG9nKExPR19ERUJVRywgInByb2cgJWx1IHZlcnMgJWx1OiBub3QgZm91bmRcbiIsIAorKwkJCQlhLnJtdF9wcm9nLCBhLnJtdF92ZXJzKTsKKyAjZW5kaWYKKyAJCWlmIChyZXBseV90eXBlID09IFJQQ0JQUk9DX0lORElSRUNUKQorIAkJCXN2Y2Vycl9ub3Byb2codHJhbnNwKTsKK0BAIC05MzcsOCArOTEyLDYgQEAgb3V0OgorIAl9CisgCWlmIChsb2NhbF91YWRkcikKKyAJCWZyZWUobG9jYWxfdWFkZHIpOworLQlpZiAoYnVmX2FsbG9jKQorLQkJZnJlZShidWZfYWxsb2MpOworIAlpZiAob3V0YnVmX2FsbG9jKQorIAkJZnJlZShvdXRidWZfYWxsb2MpOworIAlpZiAobmEpIHsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYgppbmRleCA2MGU0NmVkLi5kY2RlZTZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYgpAQCAtMTYsNiArMTYsOCBAQAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZC5zb2NrZXQgXAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcnBjYmluZC1wYWlyLWFsbC1zdmNfZ2V0YXJncy1jYWxscy13aXRoLXN2Y19mcmVlYXJncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wbWFwcHJvY19kdW1wLUZpeGVkLXR5cG8taW4tbWVtb3J5LWxlYWstcGF0Y2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnBjYnByb2NfY2FsbGl0X2NvbS1TdG9wLWZyZWVpbmctYS1zdGF0aWMtcG9pbnRlci5wYXRjaCBcCiAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImNmMTBjZDQxZWQ4MjI4ZmM1NGMzMTYxOTFjMWYwN2ZlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3NGE5YTUzMGRjN2MxMWUwZDkwNWFhNTliY2IwODQ3YzAwOTMxM2YwMmU5OGQzZDc5OGFhOTU2OGY0MTRjNjYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaAppbmRleCBlOGRiMTJjLi4xMjc0YjI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2gKQEAgLTksNyArOSw4IEBACiBXZSByYXJlbHkgdXNlICJ5ZXM7IiB0byBuYW1lIGJ1aWxkIGRpciwgc28gcy95ZXMveWVzOy9nCiBjb3VsZCBmaXggdGhlIGlzc3VlCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAoraHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L3NjcmVlbi5naXQvY29tbWl0Lz9oPXNjcmVlbi12NCZpZD04YzJiNDA2MWQxNjc1NmVlMmVkMzdmMDhkYjA2M2I4MjE1NjU2OTQzCiAKIFNpZ25lZC1vZmYtYnk6IEppYW4gS2FuZyA8amlhbi5rYW5nQHdpbmRyaXZlci5jb20+CiAtLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoCmluZGV4IGI1ZDcxY2MuLmEwMWRjMjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaApAQCAtMTUsMTkgKzE1LDE2IEBACiAgc3JjL01ha2VmaWxlLmluIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmluIGIvc3JjL01ha2VmaWxlLmluCi1pbmRleCBlNzkxZTc5Li5kNGY3YzBiIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMTEzLDcgKzExMyw3IEBAIHRlcm0uaDogdGVybS5jIHRlcm0uc2gKLSAKLSBrbWFwZGVmLmM6IHRlcm0uaAorSW5kZXg6IHNjcmVlbi00LjYuMS9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNjcmVlbi00LjYuMS5vcmlnL01ha2VmaWxlLmluCisrKysgc2NyZWVuLTQuNi4xL01ha2VmaWxlLmluCitAQCAtMTMzLDcgKzEzMyw3IEBAIGttYXBkZWYuYzogdGVybS5oCisgdHR5LmM6CXR0eS5zaCAKKyAJc2ggJChzcmNkaXIpL3R0eS5zaCB0dHkuYwogIAogLWNvbW0uaDogY29tbS5jIGNvbW0uc2ggY29uZmlnLmgKICtjb21tLmg6IGNvbW0uYyBjb21tLnNoIGNvbmZpZy5oIHRlcm0uaAogIAlBV0s9JChBV0spIENDPSIkKENDKSAkKENGTEFHUykiIHNyY2Rpcj0ke3NyY2Rpcn0gc2ggJChzcmNkaXIpL2NvbW0uc2gKICAKLSBkb2NzOgotLS0gCi0yLjQuMQotCisgb3NkZWYuaDogb3NkZWYuc2ggY29uZmlnLmggb3NkZWYuaC5pbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2Q4M2EyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiTXVsdGlwbGV4aW5nIHRlcm1pbmFsIG1hbmFnZXIiCi1ERVNDUklQVElPTiA9ICJTY3JlZW4gaXMgYSBmdWxsLXNjcmVlbiB3aW5kb3cgbWFuYWdlciBcCi10aGF0IG11bHRpcGxleGVzIGEgcGh5c2ljYWwgdGVybWluYWwgYmV0d2VlbiBzZXZlcmFsIFwKLXByb2Nlc3NlcywgdHlwaWNhbGx5IGludGVyYWN0aXZlIHNoZWxscy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2Z1bmM9YWRkaXRlbSZncm91cD1zY3JlZW4iCi0KLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW4uaDtlbmRsaW5lPTI2O21kNT0zOTcxMTQyOTg5Mjg5YTgxOThhNTQ0MjIwNzAzYzJiZiIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIFwKLSAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL1JlbW92ZS1yZWR1bmRhbnQtY29tcGlsZXItc2FuaXR5LWNoZWNrcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Qcm92aWRlLWNyb3NzLWNvbXBpbGUtYWx0ZXJuYXRpdmVzLWZvci1BQ19UUllfUlVOLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1NraXAtaG9zdC1maWxlLXN5c3RlbS1jaGVja3Mtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQXZvaWQtbWlzLWlkZW50aWZ5aW5nLXN5c3RlbXMtYXMtU1ZSNC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTMyYzg5M2FhYmZhZjIwMjAwNzQ3OTAyMTVjOGNhY2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWJhOWFmNjZjYjYyNjE1NWQ2YWJjZTQ3MDNmNDVjY2UwZTMwYTUxMTRhMzY4YmQ2Mzg3Yzk2NmNiYmJiN2M2NCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSBcCi0gICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgotCWZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi19Ci0KLXBrZ19wb3N0cm1fJHtQTn0gKCkgewotCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMzNjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjIuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKK0RFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKK3RoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAorcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PTM5NzExNDI5ODkyODlhODE5OGE1NDQyMjA3MDNjMmJmIgorCitERVBFTkRTID0gIm5jdXJzZXMgXAorICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSA9ICJiYXNlLWZpbGVzIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2NyZWVuL3NjcmVlbi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdmaWxlOi8vc2NyZWVuLnBhbScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLXJlZHVuZGFudC1jb21waWxlci1zYW5pdHktY2hlY2tzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1Byb3ZpZGUtY3Jvc3MtY29tcGlsZS1hbHRlcm5hdGl2ZXMtZm9yLUFDX1RSWV9SVU4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vU2tpcC1ob3N0LWZpbGUtc3lzdGVtLWNoZWNrcy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Bdm9pZC1taXMtaWRlbnRpZnlpbmctc3lzdGVtcy1hcy1TVlI0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMGY1MjlkMzMzM2IxMjhkZmFhMzI0ZDk3OGJhNzNhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjY5MjI1MjBlNmEwY2U1ZTI4NzY4ZDYyMGIwZjY0MGE2NjMxMzk3Zjk1Y2NiMDQzYjcwYjkxYmI1MDNmYTNhIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXB0eS1tb2RlPTA2MjAgLS13aXRoLXB0eS1ncm91cD01IFwKKyAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbScsICctLWRpc2FibGUtcGFtJywgZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc2NyZWVuLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc2NyZWVuCisJZmkKK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlncmVwIC1xICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAke2JpbmRpcn0vc2NyZWVuID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KKworcGtnX3Bvc3RybV8ke1BOfSAoKSB7CisJcHJpbnRmICIkKGdyZXAgLXYgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscylcbiIgPiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKaW5kZXggZTMxYmVjMi4uZjEwZTM2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgpAQCAtNDIsNiArNDIsMTIgQEAKIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9CisJc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKIH0KIAogUlBST1ZJREVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJy9iaW4vc2VkJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCmluZGV4IGNjMTg5NjQuLjY3MzIwN2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYwpAQCAtNiw4ICs2LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkODBmZjFjMmI0MDg0M2NmNTc2OGU1MjI5Y2YxNmU1IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wYXNzd2QuYztiZWdpbmxpbmU9ODtlbmRsaW5lPTMwO21kNT1kODM4ODhlYTE0YWU2MTk1MTk4MmQ3NzEyNTk0NzY2MSIKIAotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgotREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAiIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2NyeXB0IgogCiBTUkNfVVJJID0gImh0dHA6Ly9wa2ctc2hhZG93LmFsaW90aC5kZWJpYW4ub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vc2hhZG93LTQuMS4zLWRvdHMtaW4tdXNlcm5hbWVzLnBhdGNoIFwKQEAgLTE5MCw3ICsxODksNyBAQAogQUxURVJOQVRJVkVfTElOS19OQU1FW25vbG9naW4uOF0gPSAiJHttYW5kaXJ9L21hbjgvbm9sb2dpbi44IgogCiBQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInNoYWRvdy1uYXRpdmUiCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgeworcGtnX3Bvc3RpbnN0XyR7UE59X2NsYXNzLXRhcmdldCAoKSB7CiAJaWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgogCSAgcm9vdGFyZz0iLS1yb290ICREIgogCWVsc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMWEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ODVjMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMWEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBzaGFyZWQgbGlicmFyeSBmb3IgdGhlIFMtTGFuZyBleHRlbnNpb24gbGFuZ3VhZ2UiCi0KLURFU0NSSVBUSU9OID0gIlMtTGFuZyBpcyBhbiBpbnRlcnByZXRlZCBsYW5ndWFnZSBhbmQgYSBwcm9ncmFtbWluZyBsaWJyYXJ5LiAgVGhlIFwKLVMtTGFuZyBsYW5ndWFnZSB3YXMgZGVzaWduZWQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5IGVtYmVkZGVkIGludG8gXAotYSBwcm9ncmFtIHRvIHByb3ZpZGUgdGhlIHByb2dyYW0gd2l0aCBhIHBvd2VyZnVsIGV4dGVuc2lvbiBsYW5ndWFnZS4gXAotVGhlIFMtTGFuZyBsaWJyYXJ5LCBwcm92aWRlZCBpbiB0aGlzIHBhY2thZ2UsIHByb3ZpZGVzIHRoZSBTLUxhbmcgXAotZXh0ZW5zaW9uIGxhbmd1YWdlLiAgUy1MYW5nJ3Mgc3ludGF4IHJlc2VtYmxlcyBDLCB3aGljaCBtYWtlcyBpdCBlYXN5IFwKLXRvIHJlY29kZSBTLUxhbmcgcHJvY2VkdXJlcyBpbiBDIGlmIHlvdSBuZWVkIHRvLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9zbGFuZy8iCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9saWJpY29udiIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE1MmExOGE0NzJkNGY3ZTQ1NDc5YjA2NTYzNzE3YzAyIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbm8teC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LWxpbmstdG8taG9zdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWFkZC1vdXRwdXQtaW4tdGhlLWZvcm1hdC1yZXN1bHQtdGVzdG5hbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVybWluZm9fZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTIzNTMxMzA0MmVkMGU3MWVjNzA4ZjdiODVlYzI0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NGYwYzMwMDdmZGU5MTgwMzljMDU4OTY1ZGZmZGZkNmM1YWVjMGJhZDBmNDIyNzE5MmNjNDg2MDIxZjA4YzM2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8iCi1QUkVNSVJST1JTX2FwcGVuZCA9ICJcbiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nLy4qIGh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvb2xkLyBcbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0Ci1DTEVBTkJST0tFTiA9ICIxIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LW9uaWciCi0jIFRoZXJlJ3Mgbm8gd2F5IHRvIHR1cm4gb2ZmIHJwYXRocyBhbmQgc2xhbmcgd2lsbCAtcnBhdGggdG8gdGhlIGRlZmF1bHQgc2VhcmNoCi0jIHBhdGguIFVuc2V0IFJQQVRIIHRvIHN0b3AgdGhpcy4KLUVYVFJBX09FTUFLRSA9ICJSUEFUSD0nJyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmUiCi1QQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXBjcmUscGNyZSIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLXdpdGgtcG5nPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXosemxpYiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgY2QgJHtTfS9hdXRvY29uZgotICAgICMgc2xhbmcga2VlcHMgY29uZmlndXJlLmFjIGFuZCByZXN0IG9mIGF1dG9jb25mIGZpbGVzIGluIGF1dG9jb25mLyBkaXJlY3RvcnkKLSAgICAjIHdlIGhhdmUgdG8gZ28gdGhlcmUgdG8gYmUgYWJsZSB0byBydW4gZ251LWNvbmZpZ2l6ZSBjYXVzZSBpdCBleHBlY3RzIGNvbmZpZ3VyZS57aW4sYWN9Ci0gICAgIyB0byBiZSBwcmVzZW50LiBSZXN1bHRpbmcgZmlsZXMgbGFuZCBpbiBhdXRvY29uZi9hdXRvY29uZi8gc28gd2UgbmVlZCB0byBtb3ZlIHRoZW0uCi0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICYmIG12IGF1dG9jb25mL2NvbmZpZy4qIC4KLSAgICAjIEZvciB0aGUgc2FtZSByZWFzb24gd2UgYWxzbyBuZWVkIHRvIHJ1biBhdXRvY29uZiBtYW51YWxseS4KLSAgICBhdXRvY29uZiAmJiBtdiBjb25maWd1cmUgLi4KLSAgICBjZCAke0J9Ci19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyBzcmMgc3RhdGljCi0Jb2VfcnVubWFrZSAtQyBzcmMvdGVzdCBzbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlta2RpciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JZm9yIGYgaW4gTWFrZWZpbGUgc2x0ZXN0IHJ1bnRlc3RzLnNoICouc2wgKi5pbmM7IGRvCi0JCWNwICR7U30vc3JjL3Rlc3QvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KLQlkb25lCi0Jc2VkIC1lICdzL1wgXCQoVEVTVF9QR00pXC5jXCBhc3NvY1wuY1wgbGlzdFwuY1wgXCQoU0xBTkdMSUIpXC9saWJzbGFuZ1wuYS8vJyBcCi0JICAgIC1lICcvXCQoQ0MpLiooVEVTVF9QR00pL2QnIFwKLQkgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9NYWtlZmlsZQotCi0JY3AgJHtTfS9zbHNoL2xpYi9yZXF1aXJlLnNsICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCi0Jc2VkIC1pICdzL1wuXC5cL1wuXC5cL3Nsc2hcL2xpYlwvcmVxdWlyZVwuc2wvcmVxdWlyZVwuc2wvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L3JlcS5zbAotCi0JY3AgJHtTfS9kb2MvdGV4dC9zbGFuZ2Z1bi50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KLQlzZWQgLWkgJ3MvXC5cLlwvXC5cLlwvZG9jXC90ZXh0XC9zbGFuZ2Z1blwudHh0L3NsYW5nZnVuXC50eHQvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2RvY2Z1bi5zbAotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS92Mi9tb2R1bGVzLyAke2RhdGFkaXJ9L3Nsc2gvIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLVBBUkFMTEVMX01BS0VJTlNUID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2ZkNDFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMi5iYgpAQCAtMCwwICsxLDgxIEBACitTVU1NQVJZID0gIlRoZSBzaGFyZWQgbGlicmFyeSBmb3IgdGhlIFMtTGFuZyBleHRlbnNpb24gbGFuZ3VhZ2UiCisKK0RFU0NSSVBUSU9OID0gIlMtTGFuZyBpcyBhbiBpbnRlcnByZXRlZCBsYW5ndWFnZSBhbmQgYSBwcm9ncmFtbWluZyBsaWJyYXJ5LiAgVGhlIFwKK1MtTGFuZyBsYW5ndWFnZSB3YXMgZGVzaWduZWQgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5IGVtYmVkZGVkIGludG8gXAorYSBwcm9ncmFtIHRvIHByb3ZpZGUgdGhlIHByb2dyYW0gd2l0aCBhIHBvd2VyZnVsIGV4dGVuc2lvbiBsYW5ndWFnZS4gXAorVGhlIFMtTGFuZyBsaWJyYXJ5LCBwcm92aWRlZCBpbiB0aGlzIHBhY2thZ2UsIHByb3ZpZGVzIHRoZSBTLUxhbmcgXAorZXh0ZW5zaW9uIGxhbmd1YWdlLiAgUy1MYW5nJ3Mgc3ludGF4IHJlc2VtYmxlcyBDLCB3aGljaCBtYWtlcyBpdCBlYXN5IFwKK3RvIHJlY29kZSBTLUxhbmcgcHJvY2VkdXJlcyBpbiBDIGlmIHlvdSBuZWVkIHRvLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9zbGFuZy8iCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9saWJpY29udiIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE1MmExOGE0NzJkNGY3ZTQ1NDc5YjA2NTYzNzE3YzAyIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbm8teC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWxpbmstdG8taG9zdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LWFkZC1vdXRwdXQtaW4tdGhlLWZvcm1hdC1yZXN1bHQtdGVzdG5hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVybWluZm9fZml4ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMmQ1YTdhYTAyNDY2MjdkYTQ5MGJlNGUzOTljODdjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYzllM2IwZmM0ZjY3YzNjMWY2ZDQzYzkwYzE2YTVjNDJkMTE3YjhlMjg0NTdjNWI0NjgzMWI4YjVkM2FlMzFhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8iCitQUkVNSVJST1JTX2FwcGVuZCA9ICJcbiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nLy4qIGh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvb2xkLyBcbiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CitDTEVBTkJST0tFTiA9ICIxIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LW9uaWciCisjIFRoZXJlJ3Mgbm8gd2F5IHRvIHR1cm4gb2ZmIHJwYXRocyBhbmQgc2xhbmcgd2lsbCAtcnBhdGggdG8gdGhlIGRlZmF1bHQgc2VhcmNoCisjIHBhdGguIFVuc2V0IFJQQVRIIHRvIHN0b3AgdGhpcy4KK0VYVFJBX09FTUFLRSA9ICJSUEFUSD0nJyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXBjcmUscGNyZSIKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItLXdpdGgtcG5nPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXBuZyxsaWJwbmciCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXosemxpYiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgY2QgJHtTfS9hdXRvY29uZgorICAgICMgc2xhbmcga2VlcHMgY29uZmlndXJlLmFjIGFuZCByZXN0IG9mIGF1dG9jb25mIGZpbGVzIGluIGF1dG9jb25mLyBkaXJlY3RvcnkKKyAgICAjIHdlIGhhdmUgdG8gZ28gdGhlcmUgdG8gYmUgYWJsZSB0byBydW4gZ251LWNvbmZpZ2l6ZSBjYXVzZSBpdCBleHBlY3RzIGNvbmZpZ3VyZS57aW4sYWN9CisgICAgIyB0byBiZSBwcmVzZW50LiBSZXN1bHRpbmcgZmlsZXMgbGFuZCBpbiBhdXRvY29uZi9hdXRvY29uZi8gc28gd2UgbmVlZCB0byBtb3ZlIHRoZW0uCisgICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICYmIG12IGF1dG9jb25mL2NvbmZpZy4qIC4KKyAgICAjIEZvciB0aGUgc2FtZSByZWFzb24gd2UgYWxzbyBuZWVkIHRvIHJ1biBhdXRvY29uZiBtYW51YWxseS4KKyAgICBhdXRvY29uZiAmJiBtdiBjb25maWd1cmUgLi4KKyAgICBjZCAke0J9Cit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyBzcmMgc3RhdGljCisJb2VfcnVubWFrZSAtQyBzcmMvdGVzdCBzbHRlc3QKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlta2RpciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJZm9yIGYgaW4gTWFrZWZpbGUgc2x0ZXN0IHJ1bnRlc3RzLnNoICouc2wgKi5pbmM7IGRvCisJCWNwICR7U30vc3JjL3Rlc3QvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KKwlkb25lCisJc2VkIC1lICdzL1wgXCQoVEVTVF9QR00pXC5jXCBhc3NvY1wuY1wgbGlzdFwuY1wgXCQoU0xBTkdMSUIpXC9saWJzbGFuZ1wuYS8vJyBcCisJICAgIC1lICcvXCQoQ0MpLiooVEVTVF9QR00pL2QnIFwKKwkgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9NYWtlZmlsZQorCisJY3AgJHtTfS9zbHNoL2xpYi9yZXF1aXJlLnNsICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJc2VkIC1pICdzL1wuXC5cL1wuXC5cL3Nsc2hcL2xpYlwvcmVxdWlyZVwuc2wvcmVxdWlyZVwuc2wvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L3JlcS5zbAorCisJY3AgJHtTfS9kb2MvdGV4dC9zbGFuZ2Z1bi50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KKwlzZWQgLWkgJ3MvXC5cLlwvXC5cLlwvZG9jXC90ZXh0XC9zbGFuZ2Z1blwudHh0L3NsYW5nZnVuXC50eHQvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2RvY2Z1bi5zbAorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS92Mi9tb2R1bGVzLyAke2RhdGFkaXJ9L3Nsc2gvIgorCitQQVJBTExFTF9NQUtFID0gIiIKK1BBUkFMTEVMX01BS0VJTlNUID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0LTMuMy9maXgtZXJyb3ItcmV0dXJuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzI5OTVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0LTMuMy9maXgtZXJyb3ItcmV0dXJuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotVGhpcyBwYXRjaCBmaXhpZXMgdGhlIHdyb25nIHJldHVybiBjb2RlIG9mIHN0YXQgLWguCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogWmhhbmdsZSBZYW5nIDx6aGFuZ2xlLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tIHN0YXQtMy4zL3N0YXQuYy5vcmlnCTIwMTMtMDgtMjIgMTA6NDk6NDUuMDAwMDAwMDAwICswODAwCi0rKysgc3RhdC0zLjMvc3RhdC5jCTIwMTMtMDgtMjIgMTA6NTA6MzEuMDAwMDAwMDAwICswODAwCi1AQCAtODQ1LDcgKzg0NSw3IEBACi0gICAgIGZwcmludGYoc3RkZXJyLCAiXHRcdCUlUyAtIFNlY3VyaXR5IElEIGluIFNFLUxpbnV4XG4iKTsKLSAgICAgZnByaW50ZihzdGRlcnIsICJcdFx0JSVDIC0gU2VjdXJpdHkgY29udGV4dCBpbiBTRS1MaW51eFxuIik7Ci0gICAgIGZwcmludGYoc3RkZXJyLCAiXHRcdCUlZCAtIEZyZWUgZmlsZSBub2RlcyBpbiBmaWxlIHN5c3RlbVxuIik7Ci0tICAgIGV4aXQoMSk7Ci0rICAgIGV4aXQoMCk7Ci0gfQotICAgCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0LTMuMy9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzAxZWQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0LTMuMy9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotc3RhdDogRml4aW5nIHNlY3VyaXR5IGZvcm1hdHRpbmcgaXNzdWVzCi0KLUZpeCBzZWN1cml0eSBmb3JtYXR0aW5nIGlzc3VlcyByZWxhdGVkIHRvIHByaW50ZiB3aXRob3V0IE5VTEwgYXJndW1lbnQgCi0KLXN0YXQuYzogSW4gZnVuY3Rpb24gJ3ByaW50X2h1bWFuX2FjY2Vzcyc6Ci1zdGF0LmM6MjkyOjEzOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLSAgICAgcHJpbnRmIChhY2Nlc3MpOwotICAgICAgICAgICAgIF4KLXN0YXQuYzogSW4gZnVuY3Rpb24gJ3ByaW50X2h1bWFuX3RpbWUnOgotc3RhdC5jOjI5OTo1NzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICBpZiAoc3RyZnRpbWUoc3RyLCA0MCwgIiVjIiwgbG9jYWx0aW1lKHQpKSA+IDApIHByaW50ZihzdHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotc3RhdC5jOiBJbiBmdW5jdGlvbiAncHJpbnRfaXQnOgotc3RhdC5jOjYxMzo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLSAgICAgIHByaW50ZihiKTsKLSAgICAgIF4KLXN0YXQuYzo2NDI6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICAgICBwcmludGYoYik7Ci0gICAgICBeCi0KLVtZT0NUTyAjOTU1MF0KLVtodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTBdCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvc3RhdC5jIGIvc3RhdC5jCi1pbmRleCAxZWQwN2E5Li4yYmU2ZjYyIDEwMDY0NAotLS0tIGEvc3RhdC5jCi0rKysgYi9zdGF0LmMKLUBAIC0yODksMTUgKzI4OSwxNSBAQCB2b2lkIHByaW50X2h1bWFuX2FjY2VzcyhzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZikKLSAgICAgZGVmYXVsdDoKLSAgICAgICBhY2Nlc3NbMF0gPSAnPyc7Ci0gICAgIH0KLS0gICAgcHJpbnRmIChhY2Nlc3MpOwotKyAgICBmcHV0cyhhY2Nlc3Msc3Rkb3V0KTsKLSB9Ci0gCi0gdm9pZCBwcmludF9odW1hbl90aW1lKHRpbWVfdCAqdCkKLSB7Ci0gICBjaGFyIHN0cls0MF07Ci0gICAKLS0gIGlmIChzdHJmdGltZShzdHIsIDQwLCAiJWMiLCBsb2NhbHRpbWUodCkpID4gMCkgcHJpbnRmKHN0cik7Ci0tICBlbHNlIHByaW50ZigiQ2Fubm90IGNhbGN1bGF0ZSBodW1hbiByZWFkYWJsZSB0aW1lLCBzb3JyeSIpOwotKyAgaWYgKHN0cmZ0aW1lKHN0ciwgNDAsICIlYyIsIGxvY2FsdGltZSh0KSkgPiAwKSBmcHV0cyhzdHIsc3Rkb3V0KTsKLSsgIGVsc2UgZnB1dHMoIkNhbm5vdCBjYWxjdWxhdGUgaHVtYW4gcmVhZGFibGUgdGltZSwgc29ycnkiLHN0ZG91dCk7Ci0gfQotIAotIC8qIHByaW50IHN0YXRmcyBpbmZvICovCi1AQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgcHJpbnRfaXQoY2hhciAqbWFzdGVyZm9ybWF0LCBjaGFyICpmaWxlbmFtZSwKLSAJewotIAkgICAgc3RyY3B5IChwZm9ybWF0LCAiJSIpOwotIAkgICAgKm0rKyA9ICdcMCc7Ci0tCSAgICBwcmludGYoYik7Ci0rCSAgICBmcHV0cyhiLHN0ZG91dCk7Ci0gCi0gCSAgICAvKiBjb3B5IGFsbCBmb3JtYXQgc3BlY2lmaWVycyB0byBvdXIgZm9ybWF0IHN0cmluZyAqLwotIAkgICAgd2hpbGUgKGlzZGlnaXQoKm0pIHx8IHN0cmNocigiIzAtKy4gSSIsICptKSkKLUBAIC02MzksNyArNjM5LDcgQEAgdm9pZCBwcmludF9pdChjaGFyICptYXN0ZXJmb3JtYXQsIGNoYXIgKmZpbGVuYW1lLAotIAl9Ci0gCWVsc2UKLSAJewotLQkgICAgcHJpbnRmKGIpOwotKwkgICAgZnB1dHMoYixzdGRvdXQpOwotIAkgICAgYiA9IE5VTEw7Ci0gCX0KLSAgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWM4ZTg5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIGZpbGUgc3RhdHVzIGRpc3BsYXkgdXRpbGl0eSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L3V0aWxzL2ZpbGUvIgotREVTQ1JJUFRJT04gPSAiRGlzcGxheXMgYWxsIGluZm9ybWF0aW9uIGFib3V0IGEgZmlsZSB0aGF0IHRoZSBzdGF0KCkgY2FsbCBwcm92aWRlcyBhbmQgYWxsIGluZm9ybWF0aW9uIGFib3V0IGEgZmlsZXN5c3RlbSB0aGF0IHN0YXRmcygpIHByb3ZpZGVzLiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTM5ODg2YjA3N2ZkMDcyZTg3NmU1YzRjMTYzMTBiNjMxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0dQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvdXRpbHMvZmlsZS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZXJyb3ItcmV0dXJuLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzdlMjQ3ZThlNDAwYWQ5MjA1ZjFiMDUwMGI3MjhmZDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzA3MWYwMzg0YTQyM2E5MzhkZDU0MmMxZjA4NTQ3YTAyODI0ZjYzNTlhY2QzZWYzZjk0NGIyYzRjMmQxZWUwOSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW4xCi0JaW5zdGFsbCAtbSA3NTUgc3RhdCAke0R9JHtiYXNlX2JpbmRpcn0vc3RhdC5zdGF0Ci0JaW5zdGFsbCAtbSA2NDQgc3RhdC4xICR7RH0ke21hbmRpcn0vbWFuMQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAic3RhdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3N0YXRdID0gIjIwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdGF0XSA9ICIke2Jhc2VfYmluZGlyfS9zdGF0IgotQUxURVJOQVRJVkVfVEFSR0VUW3N0YXRdID0gIiR7YmFzZV9iaW5kaXJ9L3N0YXQuc3RhdCIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gInN0YXQuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdGF0LjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0YXQuMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwppbmRleCA4MGVjMGFlLi4zNjJiZDNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCkBAIC00LDggKzQsOCBAQAogQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LnN1ZG8ud3MvYnVncy8iCiBTRUNUSU9OID0gImFkbWluIgogTElDRU5TRSA9ICJJU0MgJiBCU0QgJiBabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0xJQ0VOU0U7bWQ1PTY1MmZiNDMzNGMxM2I1MTE1OTdkNzk0MGVmOGIzMzIzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BsdWdpbnMvc3Vkb2Vycy9yZWRibGFjay5jO2JlZ2lubGluZT0xO2VuZGxpbmU9NDE7bWQ1PWNmZTQxMTEyZjk2YzE5YTA3NDkzNGQxMjhmNDVjNjkzIFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT03NzY1YTNkNzg3Y2I0ZmVkM2NjYzNjOWNlZTAzMGFmOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQxO21kNT04MDU3ODJhODQ2Njk3NTcxNmY4Mzc2YjJiZTlhZWRkZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9yZWFsbG9jYXJyYXkuYztiZWdpbmxpbmU9MztlbmRsaW5lPTE2O21kNT04NWIwOTA1Yjc5NWQ0ZDU4YmYyZTAwNjM1NjQ5ZWVjNiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9mbm1hdGNoLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yNzttZDU9NjdmODNlZTliZDQ1NjU1NzM5NzA4MmY4ZjFiZTBlZmQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2V0Y3dkLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0yNzttZDU9NDQ5YWY0Y2M1N2ZjN2Q0NmY0MjA5MDYwOGJhM2U2ODEgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjBwMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYyNGIzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjBwMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXJlcXVpcmUgc3Vkby5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLnN1ZG8ud3Mvc3Vkby9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwM2RhOGU3MTFjYWNhNmZkOTNlNTc3NTFiZmI3NGFkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDQyYWUxMDU5ZTkzNWY3OTVjNjllYTk3YjNkZTA5ZmU5NDEwYTU4YTc0YjVkNWU2ODM2ZWI1MDY3YTQ0NWQ5IgotCi1ERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCi0gICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KLQlmaQotCi0JY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KLQljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQotCSMgRXhwbGljaXRseSByZW1vdmUgdGhlICR7bG9jYWxzdGF0ZWRpcn0vcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgotCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zdWRvCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTUwMTc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIyLmJiCkBAIC0wLDAgKzEsMzYgQEAKK3JlcXVpcmUgc3Vkby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLnN1ZG8ud3Mvc3Vkby9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3Vkby5wYW0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNGFiZGVhNDhkYjRjNWFiY2Q0MTAxNjdjODAxY2M4YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MjU2Y2IyN2MyMDg4M2IxNDM2MGVkZGJkMTdmOTg5MjIwNzNkMTA0YjIxNGNmNjVhZWFjZjFkOWM5YjlmZDAyIgorCitERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCisgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KKwlmaQorCisJY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KKwljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKKworCSMgRXhwbGljaXRseSByZW1vdmUgdGhlICR7bG9jYWxzdGF0ZWRpcn0vcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgorCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zdWRvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaAppbmRleCAwMGZiYTcxLi5kNDI2YzgzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby1zdHJpcC1pbnN0YWxsLnBhdGNoCkBAIC0xLDEwICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKLUluZGV4OiBzeXNrbG9nZC0xLjUvTWFrZWZpbGUKK0luZGV4OiBzeXNrbG9nZC0xLjUuMS9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c2tsb2dkLTEuNS5vcmlnL01ha2VmaWxlCTIwMDktMDYtMDkgMTM6MDI6NDEuMDAwMDAwMDAwICswMjAwCi0rKysgc3lza2xvZ2QtMS41L01ha2VmaWxlCTIwMDktMDYtMDkgMTM6MDM6MDYuMDAwMDAwMDAwICswMjAwCi1AQCAtMTI3LDggKzEyNyw4IEBACistLS0gc3lza2xvZ2QtMS41LjEub3JpZy9NYWtlZmlsZQorKysrIHN5c2tsb2dkLTEuNS4xL01ha2VmaWxlCitAQCAtMTI3LDggKzEyNyw4IEBAIGNsb2JiZXI6IGNsZWFuCiAgCXJtIC1mIHN5c2xvZ2Qga2xvZ2Qga3N5bSBzeXNsb2dfdHN0IG9vcHNfdGVzdCBUQUdTIHRzeXNsb2dkIHRrbG9nZAogIAogIGluc3RhbGxfZXhlYzogc3lzbG9nZCBrbG9nZApAQCAtMTQsNCArMTQsNCBAQAogKwkke0lOU1RBTEx9IC1tIDUwMCBrbG9nZCAke0JJTkRJUn0va2xvZ2QKICAKICBpbnN0YWxsX21hbjoKLSAJJHtJTlNUQUxMfSAtbSAke01BTl9QRVJNU30gc3lza2xvZ2QuOCAke01BTkRJUn0vbWFuOC9zeXNrbG9nZC44CisgCSR7SU5TVEFMTH0gLW8gJHtNQU5fVVNFUn0gLWcgJHtNQU5fR1JPVVB9IC1tICR7TUFOX1BFUk1TfSBzeXNrbG9nZC44ICR7TUFORElSfS9tYW44L3N5c2tsb2dkLjgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2gKaW5kZXggYzEyNjUyMy4uMWI2MzI5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQvMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2gKQEAgLTIxLDEwICsyMSwxMCBAQAogIHNhX2NvbW1vbi5jIHwgMSArCiAgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL2NvbW1vbi5jIGIvY29tbW9uLmMKLWluZGV4IGEyMzE1NWIuLmFkODY0NDYgMTAwNjQ0Ci0tLS0gYS9jb21tb24uYwotKysrIGIvY29tbW9uLmMKK0luZGV4OiBzeXNzdGF0LTExLjcuMS9jb21tb24uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c3N0YXQtMTEuNy4xLm9yaWcvY29tbW9uLmMKKysrKyBzeXNzdGF0LTExLjcuMS9jb21tb24uYwogQEAgLTIwLDYgKzIwLDcgQEAKICAgKi8KICAKQEAgLTMyLDExICszMiwxMSBAQAogKyNpbmNsdWRlIDxsaW1pdHMuaD4KICAjaW5jbHVkZSA8c3RyaW5nLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci1kaWZmIC0tZ2l0IGEvaW9jb25mLmMgYi9pb2NvbmYuYwotaW5kZXggN2Q4OGM1ZC4uNmQ2NzY5MSAxMDA2NDQKLS0tLSBhL2lvY29uZi5jCi0rKysgYi9pb2NvbmYuYworICNpbmNsdWRlIDxzdGRhcmcuaD4KK0luZGV4OiBzeXNzdGF0LTExLjcuMS9pb2NvbmYuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c3N0YXQtMTEuNy4xLm9yaWcvaW9jb25mLmMKKysrKyBzeXNzdGF0LTExLjcuMS9pb2NvbmYuYwogQEAgLTI3LDYgKzI3LDcgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8ZGlyZW50Lmg+CkBAIC00NSwxMCArNDUsMTAgQEAKICAKICAjaW5jbHVkZSAiaW9jb25mLmgiCiAgI2luY2x1ZGUgImNvbW1vbi5oIgotZGlmZiAtLWdpdCBhL3NhX2NvbW1vbi5jIGIvc2FfY29tbW9uLmMKLWluZGV4IGI3MzUxZDkuLmM5ZTMyOTkgMTAwNjQ0Ci0tLS0gYS9zYV9jb21tb24uYwotKysrIGIvc2FfY29tbW9uLmMKK0luZGV4OiBzeXNzdGF0LTExLjcuMS9zYV9jb21tb24uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c3N0YXQtMTEuNy4xLm9yaWcvc2FfY29tbW9uLmMKKysrKyBzeXNzdGF0LTExLjcuMS9zYV9jb21tb24uYwogQEAgLTIwLDYgKzIwLDcgQEAKICAgKi8KICAKQEAgLTU2LDcgKzU2LDQgQEAKICsjaW5jbHVkZSA8bGltaXRzLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotLS0gCi0yLjUuMgotCisgI2luY2x1ZGUgPHN0ZGludC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmFmOTMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBzeXNzdGF0LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMjNhNzRiM2Y0Y2FmOTYxNjIzMDc4OWQ5NDIxN2FjYiIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGY0YTVkMGRlMjlmMTA1NjE1M2UyNWU3YTljNTE4ZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGEzOGVmYWEwY2E4NWVlNTQ4NGQwNDZiZDQyNzAxMjk3OTI2NGZlZjE3ZjA3ZmQ3ODU1ODYwZTU5MjgxOTQ4MiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjczOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNy4xLmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSBzeXNzdGF0LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMjNhNzRiM2Y0Y2FmOTYxNjIzMDc4OWQ5NDIxN2FjYiIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmRjZGE3YzkwNDhjN2MyMmZiMWYzMGY3NTI4NWQxM2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzAzYTU5NWIxYWYwMzMwYjE4M2EwZjFmZWJmY2NmODlmMTgzYjk1NzVhZTA1NjJiOTFmZGI4NzZmM2VmMWZlYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9DVkUtMjAxNi02MzIxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL0NWRS0yMDE2LTYzMjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMzViY2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL0NWRS0yMDE2LTYzMjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1Gcm9tIDczNDBmNjdiOTg2MGVhMDUzMWMxNDUwZTVhYTI2MWM1MGY2NzE2NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QFBlbmd1aW4uQ1MuVUNMQS5FRFU+Ci1EYXRlOiBTYXQsIDI5IE9jdCAyMDE2IDIxOjA0OjQwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFdoZW4gZXh0cmFjdGluZywgc2tpcCAiLi4iIG1lbWJlcnMKLQotKiBORVdTOiBEb2N1bWVudCB0aGlzLgotKiBzcmMvZXh0cmFjdC5jIChleHRyYWN0X2FyY2hpdmUpOiBTa2lwIG1lbWJlcnMgd2hvc2UgbmFtZXMKLWNvbnRhaW4gIi4uIi4KLQotQ1ZFOiBDVkUtMjAxNi02MzIxCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQ6IDczNDBmNjcgV2hlbiBleHRyYWN0aW5nLCBza2lwICIuLiIgbWVtYmVycwotCi1TaWduZWQtb2ZmLWJ5OiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLS0tLQotIE5FV1MgICAgICAgICAgfCA4ICsrKysrKystCi0gc3JjL2V4dHJhY3QuYyB8IDggKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCi1pbmRleCA1MDExNjRhLi5mYzk3Y2ZjIDEwMDY0NAotLS0tIGEvTkVXUwotKysrIGIvTkVXUwotQEAgLTEsNiArMSwxMiBAQAotLUdOVSB0YXIgTkVXUyAtIFVzZXIgdmlzaWJsZSBjaGFuZ2VzLiAyMDE2LTA1LTE2Ci0rR05VIHRhciBORVdTIC0gVXNlciB2aXNpYmxlIGNoYW5nZXMuIDIwMTYtMTAtMjkKLSBQbGVhc2Ugc2VuZCBHTlUgdGFyIGJ1ZyByZXBvcnRzIHRvIDxidWctdGFyQGdudS5vcmc+Ci0gCi0rKiBNZW1iZXIgbmFtZXMgY29udGFpbmluZyAnLi4nIGNvbXBvbmVudHMgYXJlIG5vdyBza2lwcGVkIHdoZW4gZXh0cmFjdGluZy4KLSsKLStUaGlzIGZpeGVzIHRhcidzIGJlaGF2aW9yIHRvIG1hdGNoIGl0cyBkb2N1bWVudGF0aW9uLCBhbmQgaXMgYSBiaXQKLStzYWZlciB3aGVuIGV4dHJhY3RpbmcgdW50cnVzdGVkIGFyY2hpdmVzIG92ZXIgb2xkIGZpbGVzIChhbiB1bnNhZmUKLStwcmFjdGljZSB0aGF0IHRoZSB0YXIgbWFudWFsIGhhcyBsb25nIHJlY29tbWVuZGVkIGFnYWluc3QpLgotKwotIAwKLSB2ZXJzaW9uIDEuMjkgLSBTZXJnZXkgUG96bnlha29mZiwgMjAxNi0wNS0xNgotIAotZGlmZiAtLWdpdCBhL3NyYy9leHRyYWN0LmMgYi9zcmMvZXh0cmFjdC5jCi1pbmRleCBmOTgyNDMzLi43OTA0MTQ4IDEwMDY0NAotLS0tIGEvc3JjL2V4dHJhY3QuYwotKysrIGIvc3JjL2V4dHJhY3QuYwotQEAgLTE2MjksMTIgKzE2MjksMjAgQEAgZXh0cmFjdF9hcmNoaXZlICh2b2lkKQotIHsKLSAgIGNoYXIgdHlwZWZsYWc7Ci0gICB0YXJfZXh0cmFjdG9yX3QgZnVuOwotKyAgYm9vbCBza2lwX2RvdGRvdF9uYW1lOwotIAotICAgZmF0YWxfZXhpdF9ob29rID0gZXh0cmFjdF9maW5pc2g7Ci0gCi0gICBzZXRfbmV4dF9ibG9ja19hZnRlciAoY3VycmVudF9oZWFkZXIpOwotIAotKyAgc2tpcF9kb3Rkb3RfbmFtZSA9ICghYWJzb2x1dGVfbmFtZXNfb3B0aW9uCi0rCQkgICAgICAmJiBjb250YWluc19kb3RfZG90IChjdXJyZW50X3N0YXRfaW5mby5vcmlnX2ZpbGVfbmFtZSkpOwotKyAgaWYgKHNraXBfZG90ZG90X25hbWUpCi0rICAgIEVSUk9SICgoMCwgMCwgXygiJXM6IE1lbWJlciBuYW1lIGNvbnRhaW5zICcuLiciKSwKLSsJICAgIHF1b3RlYXJnX2NvbG9uIChjdXJyZW50X3N0YXRfaW5mby5vcmlnX2ZpbGVfbmFtZSkpKTsKLSsKLSAgIGlmICghY3VycmVudF9zdGF0X2luZm8uZmlsZV9uYW1lWzBdCi0rICAgICAgfHwgc2tpcF9kb3Rkb3RfbmFtZQotICAgICAgIHx8IChpbnRlcmFjdGl2ZV9vcHRpb24KLSAJICAmJiAhY29uZmlybSAoImV4dHJhY3QiLCBjdXJyZW50X3N0YXRfaW5mby5maWxlX25hbWUpKSkKLSAgICAgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvbXVzbF9kaXJlbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvbXVzbF9kaXJlbnQucGF0Y2gKaW5kZXggYjBkYzE2Yy4uMmQ5OGVkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL211c2xfZGlyZW50LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9tdXNsX2RpcmVudC5wYXRjaApAQCAtMTQsNiArMTQsNiBAQAogLSAgICAgICAgICAgICAgbGludXgqLWdudSopIGdsX2N2X3N0cnVjdF9kaXJlbnRfZF9pbm89Imd1ZXNzaW5nIHllcyIgOzsKICsgICAgICAgICAgICAgIGxpbnV4Ki1nbnUqfGxpbnV4Ki1tdXNsKikKICsgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfaW5vPSJndWVzc2luZyB5ZXMiIDs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyBubyBvbiBuYXRpdmUgV2luZG93cy4KKyAgICAgICAgICAgICAgIG1pbmd3KikgICAgICBnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfaW5vPSJndWVzc2luZyBubyIgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCi0gICAgICAgICAgICAgICAqKSAgICAgICAgICAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubz0iZ3Vlc3Npbmcgbm8iIDs7Ci0gICAgICAgICAgICAgZXNhYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4yOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIyZDljOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgdGFyLmluYwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1wb3NpeC1hY2xzLCAtLXdpdGhvdXQtcG9zaXgtYWNscywgYWNsLCIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLWdldHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL211c2xfZGlyZW50LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi02MzIxLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjk1NWNkNTMzOTU1YWNiMTgwNGI4M2ZkNzAyMThkYTUxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzNmIxMTE5MGMwYTNhNjg4NWJkYjhkNjE0MjRmMmIzNmE1ODcyODY5YWEzZjdmNjk1ZGVhNGI0ODQzYWUyZjIiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKLQlybWRpciAke0R9JHtsaWJkaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NDNhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMC5iYgpAQCAtMCwwICsxLDE4IEBACityZXF1aXJlIHRhci5pbmMKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtcG9zaXgtYWNscywgLS13aXRob3V0LXBvc2l4LWFjbHMsIGFjbCwiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSArPSAiZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9tdXNsX2RpcmVudC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NDA0ZTRjMWZjNWEzMDAwMjI4YWIyYjhhZDY3NGE2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzU5MmI4NmNiMDM3YzU1NDM3NWY1ODY4YmRkM2NjNTc3NDhhZWYzOGQ2Y2I3NDFjODEwNjVmMGJlYWM2M2I3IgorCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7CisJcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCisJcm1kaXIgJHtEfSR7bGliZGlyfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMWUwNWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSA3Zjg4NzhhYzFhYWY0YTE5OTkyZDM5Mzc5Nzk3YzE1MTMwMWJlZGIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT2xla3NpeSBPYml0b3Rza3l5IDxvb2JpdG90c0BjaXNjby5jb20+CitEYXRlOiBNb24sIDUgRmViIDIwMTggMDg6Mjk6MTAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggY2xhbmcKKworRml4ICJlcnJvcjogbm9uLXZvaWQgZnVuY3Rpb24gJ2ZpeF9vcHRpb25zJyBzaG91bGQgcmV0dXJuIGEgdmFsdWUiLgorQWRkIGZ1bmN0aW9uIHByb3RvdHlwZSB0byB0Y3BkLmMgYW5kIG1pc2NkLmMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBPbGVrc2l5IE9iaXRvdHNreXkgPG9vYml0b3RzQGNpc2NvLmNvbT4KKy0tLQorIHYyIC0gYWRkIGZ1bmN0aW9uIHByb3RvdHlwZXMKKworIGZpeF9vcHRpb25zLmMgfCAyICstCisgbWlzY2QuYyAgICAgICB8IDQgKysrKworIHRjcGQuYyAgICAgICAgfCA0ICsrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZml4X29wdGlvbnMuYyBiL2ZpeF9vcHRpb25zLmMKK2luZGV4IGI1ZTgxYjguLjk5NThmZjQgMTAwNjQ0CistLS0gYS9maXhfb3B0aW9ucy5jCisrKysgYi9maXhfb3B0aW9ucy5jCitAQCAtMjksNyArMjksNyBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpIGZpeF9vcHRpb25zLmMgMS42IDk3LzA0LzA4IDAyOjI5OjE5IjsKKyAKKyAvKiBmaXhfb3B0aW9ucyAtIGdldCByaWQgb2YgSVAtbGV2ZWwgc29ja2V0IG9wdGlvbnMgKi8KKyAKKy1maXhfb3B0aW9ucyhyZXF1ZXN0KQorK3ZvaWQgZml4X29wdGlvbnMocmVxdWVzdCkKKyBzdHJ1Y3QgcmVxdWVzdF9pbmZvICpyZXF1ZXN0OworIHsKKyAjaWZkZWYgSVBfT1BUSU9OUworZGlmZiAtLWdpdCBhL21pc2NkLmMgYi9taXNjZC5jCitpbmRleCAxYWI4MzVjLi43MjNiODNhIDEwMDY0NAorLS0tIGEvbWlzY2QuYworKysrIGIvbWlzY2QuYworQEAgLTQwLDYgKzQwLDEwIEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIykgbWlzY2QuYyAxLjEwIDk2LzAyLzExIDE3OjAxOjMwIjsKKyAjaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgorICNpbmNsdWRlICJ0Y3BkLmgiCisgCisrI2lmZGVmIEtJTExfSVBfT1BUSU9OUworK3ZvaWQgZml4X29wdGlvbnMoc3RydWN0IHJlcXVlc3RfaW5mbyAqKTsKKysjZW5kaWYKKysKKyBpbnQgICAgIGFsbG93X3NldmVyaXR5ID0gU0VWRVJJVFk7CS8qIHJ1bi10aW1lIGFkanVzdGFibGUgKi8KKyBpbnQgICAgIGRlbnlfc2V2ZXJpdHkgPSBMT0dfV0FSTklORzsJLyogZGl0dG8gKi8KKyAKK2RpZmYgLS1naXQgYS90Y3BkLmMgYi90Y3BkLmMKK2luZGV4IGQ4NjViOWMuLmExNzk4OTEgMTAwNjQ0CistLS0gYS90Y3BkLmMKKysrKyBiL3RjcGQuYworQEAgLTM4LDYgKzM4LDEwIEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIykgdGNwZC5jIDEuMTAgOTYvMDIvMTEgMTc6MDE6MzIiOworICNpbmNsdWRlICJwYXRjaGxldmVsLmgiCisgI2luY2x1ZGUgInRjcGQuaCIKKyAKKysjaWZkZWYgS0lMTF9JUF9PUFRJT05TCisrdm9pZCBmaXhfb3B0aW9ucyhzdHJ1Y3QgcmVxdWVzdF9pbmZvICopOworKyNlbmRpZgorKworIGludCAgICAgYWxsb3dfc2V2ZXJpdHkgPSBTRVZFUklUWTsJLyogcnVuLXRpbWUgYWRqdXN0YWJsZSAqLworIGludCAgICAgZGVueV9zZXZlcml0eSA9IExPR19XQVJOSU5HOwkvKiBkaXR0byAqLworIAorLS0gCisyLjEwLjMuZGlydHkKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzEyX21ha2VmaWxlX2NvbmZpZy5wYXRjaAppbmRleCBlODI4OWU0Li5kNDczZmI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzEyX21ha2VmaWxlX2NvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnMtNy42LzEyX21ha2VmaWxlX2NvbmZpZy5wYXRjaApAQCAtMSw5ICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiAKLWRpZmYgLXJ1TiB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUgdGNwX3dyYXBwZXJzXzcuNi9NYWtlZmlsZQotLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9NYWtlZmlsZQkyMDAzLTA4LTIxIDAxOjQzOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUJMjAwMy0wOC0yMSAwMTo0MzozNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NSw3ICs0NSw3IEBACitJbmRleDogdGNwX3dyYXBwZXJzXzcuNi9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRjcF93cmFwcGVyc183LjYub3JpZy9NYWtlZmlsZQorKysrIHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUKK0BAIC00NSw3ICs0NSw3IEBAIHdoYXQ6CiAgIwogICMgU3lzVi40IFNvbGFyaXMgMi54IE9TRiBBSVgKICAjUkVBTF9EQUVNT05fRElSPS91c3Ivc2JpbgpAQCAtMTIsNyArMTMsNyBAQAogICMgQlNEIDQuNAogICNSRUFMX0RBRU1PTl9ESVI9L3Vzci9saWJleGVjCiAgIwotQEAgLTUxMiw2ICs1MTksNyBAQAorQEAgLTUxMyw2ICs1MTMsNyBAQCBWU1lTTE9HCT0gLUR2c3lzbG9nPW15dnN5c2xvZwogICMgKGV4YW1wbGVzOiBhbGxvdywgZGVueSwgYmFubmVycywgdHdpc3QgYW5kIHNwYXduKS4KICAjIAogICNTVFlMRQk9IC1EUFJPQ0VTU19PUFRJT05TCSMgRW5hYmxlIGxhbmd1YWdlIGV4dGVuc2lvbnMuCkBAIC0yMCw3ICsyMSw3IEBACiAgCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgT3B0aW9uYWw6IENoYW5naW5nIHRoZSBkZWZhdWx0IGRpc3Bvc2l0aW9uIG9mIGxvZ2ZpbGUgcmVjb3JkcwotQEAgLTUzNSw2ICs1NDMsNyBAQAorQEAgLTUzNiw2ICs1MzcsNyBAQCBWU1lTTE9HCT0gLUR2c3lzbG9nPW15dnN5c2xvZwogICMgVGhlIExPR19YWFggbmFtZXMgYmVsb3cgYXJlIHRha2VuIGZyb20gdGhlIC91c3IvaW5jbHVkZS9zeXNsb2cuaCBmaWxlLgogIAogIEZBQ0lMSVRZPSBMT0dfTUFJTAkjIExPR19NQUlMIGlzIHdoYXQgbW9zdCBzZW5kbWFpbCBkYWVtb25zIHVzZQpAQCAtMjgsNyArMjksNyBAQAogIAogICMgVGhlIHN5c2xvZyBwcmlvcml0eSBhdCB3aGljaCBzdWNjZXNzZnVsIGNvbm5lY3Rpb25zIGFyZSBsb2dnZWQuCiAgCi1AQCAtNjMxLDYgKzY0MCw3IEBACitAQCAtNjMyLDYgKzYzNCw3IEBAIFRBQkxFUwk9IC1ESE9TVFNfREVOWT1cIi9ldGMvaG9zdHMuZGVueVwKICAjIGxvb2t1cHMgYWx0b2dldGhlciwgc2VlIHRoZSBuZXh0IHNlY3Rpb24uCiAgCiAgUEFSQU5PSUQ9IC1EUEFSQU5PSUQKQEAgLTM2LDcgKzM3LDcgQEAKICAKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgIyBPcHRpb25hbDogdHVybmluZyBvZmYgaG9zdG5hbWUgbG9va3VwcwotQEAgLTY0NCw2ICs2NTQsNyBAQAorQEAgLTY0NSw2ICs2NDgsNyBAQCBQQVJBTk9JRD0gLURQQVJBTk9JRAogICMgbW9kZSAoc2VlIHByZXZpb3VzIHNlY3Rpb24pIGFuZCBjb21tZW50IG91dCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb24uCiAgCiAgSE9TVE5BTUU9IC1EQUxXQVlTX0hPU1ROQU1FCkBAIC00NCw3ICs0NSw3IEBACiAgCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgIyBPcHRpb25hbDogVHVybmluZyBvbiBob3N0IEFERFJFU1MgY2hlY2tpbmcKLUBAIC02NzAsNiArNjgxLDcgQEAKK0BAIC02NzEsNiArNjc1LDcgQEAgSE9TVE5BTUU9IC1EQUxXQVlTX0hPU1ROQU1FCiAgIyBTb2xhcmlzIDIueCwgYW5kIExpbnV4LiBTZWUgeW91ciBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KICAjCiAgIyBLSUxMX09QVD0gLURLSUxMX0lQX09QVElPTlMKQEAgLTUyLDcgKzUzLDcgQEAKICAKICAjIyBFbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotQEAgLTY3Nyw5ICs2ODksMTAgQEAKK0BAIC02NzgsOSArNjgzLDEwIEBAIEhPU1ROQU1FPSAtREFMV0FZU19IT1NUTkFNRQogICMgUHJvdGVjdGlvbiBhZ2FpbnN0IHdlaXJkIHNoZWxscyBvciB3ZWlyZCBtYWtlIHByb2dyYW1zLgogIAogIFNIRUxMCT0gL2Jpbi9zaApAQCAtNjUsNyArNjYsNyBAQAogIAkkKEJVR1MpICQoU1lTVFlQRSkgJChBVVRIKSAkKFVNQVNLKSBcCiAgCS1EUkVBTF9EQUVNT05fRElSPVwiJChSRUFMX0RBRU1PTl9ESVIpXCIgJChTVFlMRSkgJChLSUxMX09QVCkgXAogIAktRFNFVkVSSVRZPSQoU0VWRVJJVFkpIC1EUkZDOTMxX1RJTUVPVVQ9JChSRkM5MzFfVElNRU9VVCkgXAotQEAgLTcxMiwxMCArNzI1LDExIEBACitAQCAtNzEzLDExICs3MTksMTIgQEAgYWxsIG90aGVyOiBjb25maWctY2hlY2sgdGNwZCB0Y3BkbWF0Y2ggdAogIAogIGNvbmZpZy1jaGVjazoKICAJQHNldCArZTsgdGVzdCAtbiAiJChSRUFMX0RBRU1PTl9ESVIpIiB8fCB7IG1ha2U7IGV4aXQgMTsgfQpAQCAtODEsMyArODIsNCBAQAogKwlAaWYgWyAhIC1kIHNoYXJlZCBdOyB0aGVuIG1rZGlyIHNoYXJlZDsgZmkKICAKICAkKExJQik6CSQoTElCX09CSikKKyAJcm0gLWYgJChMSUIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgppbmRleCAxZWZmZWYxLi4zZWNlOGMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICAgICAgICAgZmlsZTovL3NhZmVfZmluZ2VyLjggXAogICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL211c2wtZGVjbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImU2ZmEyNWY3MTIyNmQwOTBmMzRkZTNmNmIxMjJmYjVhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNThkZjkyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLVNVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBzeXN0ZW0gZm9yIG9uLWxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IgotREVTQ1JJUFRJT04gPSAiVGV4aW5mbyBpcyBhIGRvY3VtZW50YXRpb24gc3lzdGVtIHRoYXQgY2FuIHByb2R1Y2UgYm90aCBcCi1vbmxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IGZyb20gYSBzaW5nbGUgc291cmNlIGZpbGUuIFRoZSBcCi1HTlUgUHJvamVjdCB1c2VzIHRoZSBUZXhpbmZvIGZpbGUgZm9ybWF0IGZvciBtb3N0IG9mIGl0cyBkb2N1bWVudGF0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90ZXhpbmZvLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgotCi1kZWYgY29tcHJlc3NfcGtnKGQpOgotICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2NvbXByZXNzX2RvYycsIGQpOgotICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKLSAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJnemlwIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKLSAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgotICAgICAgICAgICAgIHJldHVybiAieHoiCi0gICAgcmV0dXJuICIiCi0KLVJERVBFTkRTX2luZm8gKz0gIiR7QGNvbXByZXNzX3BrZyhkKX0iCi0KLURFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCi0KLVRBUkdFVF9QQVRDSCA9ICJmaWxlOi8vdXNlX2hvc3RfbWFrZWRvYy5wYXRjaCIKLVRBUkdFVF9QQVRDSF9jbGFzcy1uYXRpdmUgPSAiIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGV4aW5mby8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1uYXRpdmUtdG9vbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGluay16aXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICR7VEFSR0VUX1BBVENIfSBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWIwOGRhY2E5YmY4ZWNjYWU5YjBmODg0YWJhNDFmOWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzAwYTZiYTQ5NThjMmRkNGE2ZDVjZTYwZjBhMzM1ZGFmN2UzNzlmNTM3NGYyNzZmNmJhMzFhMjIxZjAyZjYwNiIKLQotdGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKLQkjIHVwZGF0ZSBwb19kb2N1bWVudC4KLQljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWlmIFsgLWQgdG9vbHMgXTt0aGVuCi0JCW9lX3J1bm1ha2UgLUMgdG9vbHMvZ251bGliL2xpYgotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99Ci0JaW5zdGFsbCAtcCAtbTY0NCAke1N9L2RvYy90ZXhpbmZvLnRleCAke1N9L2RvYy90eGktPz8udGV4ICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99Ci0Jc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS90ZXhpMmFueSAke0R9JHtiaW5kaXJ9L3BvZDJ0ZXhpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlpbnN0YWxsIC1tIDc1NSBpbmZvL21ha2Vkb2MgJHtEfSR7YmluZGlyfQotfQotCi1QQUNLQUdFUyArPSAiaW5mbyBpbmZvLWRvYyIKLQotRklMRVNfaW5mbyA9ICIke2JpbmRpcn0vaW5mbyAke2JpbmRpcn0vaW5mb2tleSAke2JpbmRpcn0vaW5zdGFsbC1pbmZvIgotRklMRVNfaW5mby1kb2MgPSAiJHtpbmZvZGlyfS9pbmZvLmluZm8qICR7aW5mb2Rpcn0vZGlyICR7aW5mb2Rpcn0vaW5mby0qLmluZm8qIFwKLSAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm8uMSogJHttYW5kaXJ9L21hbjUvaW5mby41KiBcCi0gICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZva2V5LjEqICR7bWFuZGlyfS9tYW4xL2luc3RhbGwtaW5mby4xKiIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L21ha2VpbmZvICR7YmluZGlyfS90ZXhpKiAke2JpbmRpcn0vcGRmdGV4aTJkdmkgJHtiaW5kaXJ9L3BvZDJ0ZXhpICR7ZGF0YWRpcn0vdGV4aW5mbyIKLVJERVBFTkRTXyR7UE59ID0gInBlcmwiCi1GSUxFU18ke1BOfS1kb2MgPSAiJHtpbmZvZGlyfS90ZXhpbmZvKiBcCi0gICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCi0gICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCi0KLSMgTGllIGFib3V0IHByb3ZpZGluZyB0aGUgTG9jYWxlOjpnZXR0ZXh0X3hzIG1vZHVsZS4gSXQgaXMgbm90IGFjdHVhbGx5IGJ1aWx0LAotIyBidXQgdGhlIGNvZGUgd2lsbCB0ZXN0IGZvciBpdCBhbmQgaWYgbm90IGZvdW5kIHVzZSBMb2NhbGU6OmdldHRleHRfcHAgaW5zdGVhZC4KLSMgSG93ZXZlciwgdGhpcyBjYXVzZXMgYSBmaWxlIGRlcGVuZGVuY3kgb24gcGVybChMb2NhbGU6OmdldHRleHRfeHMpIHRvIGJlCi0jIGdlbmVyYXRlZCwgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQuCi1SUFJPVklERVNfJHtQTn0gKz0gInBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjY0NTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjUuYmIKQEAgLTAsMCArMSw5MCBAQAorU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIHN5c3RlbSBmb3Igb24tbGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQiCitERVNDUklQVElPTiA9ICJUZXhpbmZvIGlzIGEgZG9jdW1lbnRhdGlvbiBzeXN0ZW0gdGhhdCBjYW4gcHJvZHVjZSBib3RoIFwKK29ubGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQgZnJvbSBhIHNpbmdsZSBzb3VyY2UgZmlsZS4gVGhlIFwKK0dOVSBQcm9qZWN0IHVzZXMgdGhlIFRleGluZm8gZmlsZSBmb3JtYXQgZm9yIG1vc3Qgb2YgaXRzIGRvY3VtZW50YXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RleGluZm8vIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCisKK2RlZiBjb21wcmVzc19wa2coZCk6CisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY29tcHJlc3NfZG9jJywgZCk6CisgICAgICAgICBjb21wcmVzcyA9IGQuZ2V0VmFyKCJET0NfQ09NUFJFU1MiKQorICAgICAgICAgaWYgY29tcHJlc3MgPT0gImd6IjoKKyAgICAgICAgICAgICByZXR1cm4gImd6aXAiCisgICAgICAgICBlbGlmIGNvbXByZXNzID09ICJiejIiOgorICAgICAgICAgICAgIHJldHVybiAiYnppcDIiCisgICAgICAgICBlbGlmIGNvbXByZXNzID09ICJ4eiI6CisgICAgICAgICAgICAgcmV0dXJuICJ4eiIKKyAgICByZXR1cm4gIiIKKworUkRFUEVORFNfaW5mbyArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKKworREVQRU5EUyA9ICJ6bGliIG5jdXJzZXMgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSBuY3Vyc2VzLW5hdGl2ZSIKKworVEFSR0VUX1BBVENIID0gImZpbGU6Ly91c2VfaG9zdF9tYWtlZG9jLnBhdGNoIgorVEFSR0VUX1BBVENIX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90ZXhpbmZvLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly90ZXhpbmZvLTQuMTItemxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLW5hdGl2ZS10b29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saW5rLXppcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgJHtUQVJHRVRfUEFUQ0h9IFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NGU4ZjcxNDk4NzY3OTMwMzBlNTUxOGRkOGQ2ZTk1NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzQyNzJlNDA0MmM0NjE4NmRkY2Q2NmJkNWQ5ODBjMGNhMTRmZjczNDQ0NDY4NmNjZjgxMzFmNmVjOGIxNDI3IgorCit0ZXhfdGV4aW5mbyA9ICJ0ZXhtZi90ZXgvdGV4aW5mbyIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scworCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dudWxpYi9tNCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKKwkjIHVwZGF0ZSBwb19kb2N1bWVudC4KKwljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWlmIFsgLWQgdG9vbHMgXTt0aGVuCisJCW9lX3J1bm1ha2UgLUMgdG9vbHMvZ251bGliL2xpYgorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJaW5zdGFsbCAtcCAtbTY0NCAke1N9L2RvYy90ZXhpbmZvLnRleCAke1N9L2RvYy90eGktPz8udGV4ICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS90ZXhpMmFueSAke0R9JHtiaW5kaXJ9L3BvZDJ0ZXhpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlpbnN0YWxsIC1tIDc1NSBpbmZvL21ha2Vkb2MgJHtEfSR7YmluZGlyfQorfQorCitQQUNLQUdFUyArPSAiaW5mbyBpbmZvLWRvYyIKKworRklMRVNfaW5mbyA9ICIke2JpbmRpcn0vaW5mbyAke2JpbmRpcn0vaW5mb2tleSAke2JpbmRpcn0vaW5zdGFsbC1pbmZvIgorRklMRVNfaW5mby1kb2MgPSAiJHtpbmZvZGlyfS9pbmZvLmluZm8qICR7aW5mb2Rpcn0vZGlyICR7aW5mb2Rpcn0vaW5mby0qLmluZm8qIFwKKyAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm8uMSogJHttYW5kaXJ9L21hbjUvaW5mby41KiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZva2V5LjEqICR7bWFuZGlyfS9tYW4xL2luc3RhbGwtaW5mby4xKiIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L21ha2VpbmZvICR7YmluZGlyfS90ZXhpKiAke2JpbmRpcn0vcGRmdGV4aTJkdmkgJHtiaW5kaXJ9L3BvZDJ0ZXhpICR7ZGF0YWRpcn0vdGV4aW5mbyIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwiCitGSUxFU18ke1BOfS1kb2MgPSAiJHtpbmZvZGlyfS90ZXhpbmZvKiBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCisgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCisKKyMgTGllIGFib3V0IHByb3ZpZGluZyB0aGUgTG9jYWxlOjpnZXR0ZXh0X3hzIG1vZHVsZS4gSXQgaXMgbm90IGFjdHVhbGx5IGJ1aWx0LAorIyBidXQgdGhlIGNvZGUgd2lsbCB0ZXN0IGZvciBpdCBhbmQgaWYgbm90IGZvdW5kIHVzZSBMb2NhbGU6OmdldHRleHRfcHAgaW5zdGVhZC4KKyMgSG93ZXZlciwgdGhpcyBjYXVzZXMgYSBmaWxlIGRlcGVuZGVuY3kgb24gcGVybChMb2NhbGU6OmdldHRleHRfeHMpIHRvIGJlCisjIGdlbmVyYXRlZCwgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQuCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWUtMS43L2RlYmlhbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLTEuNy9kZWJpYW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzZWEwZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWUtMS43L2RlYmlhbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMDEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0gdGltZS0xLjcub3JpZy9jb25maWd1cmUuaW4KLSsrKyB0aW1lLTEuNy9jb25maWd1cmUuaW4KLUBAIC0xLDExICsxLDggQEAKLSBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KLSBBQ19JTklUKHRpbWUuYykKLS1WRVJTSU9OPTEuNwotLUFDX1NVQlNUKFZFUlNJT04pCi0tUEFDS0FHRT10aW1lCi0tQUNfU1VCU1QoUEFDS0FHRSkKLStBTV9JTklUX0FVVE9NQUtFKHRpbWUsIDEuNykKLSAKLS1BQ19BUkdfUFJPR1JBTQotK0FNX01BSU5UQUlORVJfTU9ERQotIAotIGRubCBDaGVja3MgZm9yIHByb2dyYW1zLgotIEFDX1BST0dfQ0MKLUBAIC0xNSw3ICsxMiw3IEBACi0gZG5sIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgotIEFDX0hFQURFUl9TVERDCi0gQUNfSEVBREVSX1NZU19XQUlUCi0tQUNfQ0hFQ0tfSEVBREVSUyh1bmlzdGQuaCBzdHJpbmcuaCBzeXMvcnVzYWdlLmgpCi0rQUNfQ0hFQ0tfSEVBREVSUyh1bmlzdGQuaCBzdHJpbmcuaCBzeXMvcnVzYWdlLmggc3lzL3Jlc291cmNlLmgpCi0gCi0gZG5sIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCi0gQUNfQ19DT05TVAotLS0tIHRpbWUtMS43Lm9yaWcvdmVyc2lvbi50ZXhpCi0rKysgdGltZS0xLjcvdmVyc2lvbi50ZXhpCi1AQCAtMSwzICsxLDMgQEAKLS1Ac2V0IFVQREFURUQgMTIgSnVuZSAxOTk2Ci0rQHNldCBVUERBVEVEIDkgTWF5IDIwMDIKLSBAc2V0IEVESVRJT04gMS43Ci0gQHNldCBWRVJTSU9OIDEuNwotLS0tIHRpbWUtMS43Lm9yaWcvdGltZS5jCi0rKysgdGltZS0xLjcvdGltZS5jCi1AQCAtMTQ3LDYgKzE0NywxMCBAQAotICAgTlVMTAotIH07Ci0gDAotKwotKy8qIElmIHRydWUsIGRvIG5vdCBzaG93IHRoZSBleGl0IG1lc3NhZ2UgKi8KLStzdGF0aWMgYm9vbGVhbiBxdWlldDsKLSsKLSAvKiBJZiB0cnVlLCBzaG93IGFuIEVuZ2xpc2ggZGVzY3JpcHRpb24gbmV4dCB0byBlYWNoIHN0YXRpc3RpYy4gICovCi0gc3RhdGljIGJvb2xlYW4gdmVyYm9zZTsKLSAKLUBAIC0xNzIsNiArMTc2LDcgQEAKLSAgIHsiaGVscCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnaCd9LAotICAgeyJvdXRwdXQtZmlsZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbyd9LAotICAgeyJwb3J0YWJpbGl0eSIsIG5vX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKyAgeyJxdWlldCIsIG5vX2FyZ3VtZW50LE5VTEwsICdxJ30sCi0gICB7InZlcmJvc2UiLCBub19hcmd1bWVudCwgTlVMTCwgJ3YnfSwKLSAgIHsidmVyc2lvbiIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnVid9LAotICAge05VTEwsIG5vX2FyZ3VtZW50LCBOVUxMLCAwfQotQEAgLTMzMyw3ICszMzgsOCBAQAotICAgZWxzZSBpZiAoV0lGU0lHTkFMRUQgKHJlc3AtPndhaXRzdGF0dXMpKQotICAgICBmcHJpbnRmIChmcCwgIkNvbW1hbmQgdGVybWluYXRlZCBieSBzaWduYWwgJWRcbiIsCi0gCSAgICAgV1RFUk1TSUcgKHJlc3AtPndhaXRzdGF0dXMpKTsKLS0gIGVsc2UgaWYgKFdJRkVYSVRFRCAocmVzcC0+d2FpdHN0YXR1cykgJiYgV0VYSVRTVEFUVVMgKHJlc3AtPndhaXRzdGF0dXMpKQotKyAgZWxzZSBpZiAoV0lGRVhJVEVEIChyZXNwLT53YWl0c3RhdHVzKSAmJiBXRVhJVFNUQVRVUyAocmVzcC0+d2FpdHN0YXR1cykKLSsJICAgJiYgIXF1aWV0KQotICAgICBmcHJpbnRmIChmcCwgIkNvbW1hbmQgZXhpdGVkIHdpdGggbm9uLXplcm8gc3RhdHVzICVkXG4iLAotIAkgICAgIFdFWElUU1RBVFVTIChyZXNwLT53YWl0c3RhdHVzKSk7Ci0gCi1AQCAtNTIzLDYgKzUyOSw3IEBACi0gICBjaGFyICpmb3JtYXQ7CQkJLyogRm9ybWF0IGZvdW5kIGluIGVudmlyb25tZW50LiAgKi8KLSAKLSAgIC8qIEluaXRpYWxpemUgdGhlIG9wdGlvbiBmbGFncy4gICovCi0rICBxdWlldCA9IGZhbHNlOwotICAgdmVyYm9zZSA9IGZhbHNlOwotICAgb3V0ZmlsZSA9IE5VTEw7Ci0gICBvdXRmcCA9IHN0ZGVycjsKLUBAIC01MzYsNyArNTQzLDcgQEAKLSAgIGlmIChmb3JtYXQpCi0gICAgIG91dHB1dF9mb3JtYXQgPSBmb3JtYXQ7Ci0gCi0tICB3aGlsZSAoKG9wdGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgIithZjpvOnB2ViIsIGxvbmdvcHRzLCAoaW50ICopIDApKQotKyAgd2hpbGUgKChvcHRjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICIrYWY6bzpwcXZWIiwgbG9uZ29wdHMsIChpbnQgKikgMCkpCi0gCSAhPSBFT0YpCi0gICAgIHsKLSAgICAgICBzd2l0Y2ggKG9wdGMpCi1AQCAtNTU1LDYgKzU2Miw5IEBACi0gCWNhc2UgJ3AnOgotIAkgIG91dHB1dF9mb3JtYXQgPSBwb3NpeF9mb3JtYXQ7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgJ3EnOgotKwkgIHF1aWV0ID0gdHJ1ZTsKLSsJICBicmVhazsKLSAJY2FzZSAndic6Ci0gCSAgdmVyYm9zZSA9IHRydWU7Ci0gCSAgYnJlYWs7Ci1AQCAtNjQyLDkgKzY1Miw5IEBACi0gICBmZmx1c2ggKG91dGZwKTsKLSAKLSAgIGlmIChXSUZTVE9QUEVEIChyZXMud2FpdHN0YXR1cykpCi0tICAgIGV4aXQgKFdTVE9QU0lHIChyZXMud2FpdHN0YXR1cykpOwotKyAgICBleGl0IChXU1RPUFNJRyAocmVzLndhaXRzdGF0dXMpICsgMTI4KTsKLSAgIGVsc2UgaWYgKFdJRlNJR05BTEVEIChyZXMud2FpdHN0YXR1cykpCi0tICAgIGV4aXQgKFdURVJNU0lHIChyZXMud2FpdHN0YXR1cykpOwotKyAgICBleGl0IChXVEVSTVNJRyAocmVzLndhaXRzdGF0dXMpICsgMTI4KTsKLSAgIGVsc2UgaWYgKFdJRkVYSVRFRCAocmVzLndhaXRzdGF0dXMpKQotICAgICBleGl0IChXRVhJVFNUQVRVUyAocmVzLndhaXRzdGF0dXMpKTsKLSB9Ci1AQCAtNjU3LDcgKzY2Nyw3IEBACi0gICBmcHJpbnRmIChzdHJlYW0sICJcCi0gVXNhZ2U6ICVzIFstYXB2Vl0gWy1mIGZvcm1hdF0gWy1vIGZpbGVdIFstLWFwcGVuZF0gWy0tdmVyYm9zZV1cblwKLSAgICAgICAgWy0tcG9ydGFiaWxpdHldIFstLWZvcm1hdD1mb3JtYXRdIFstLW91dHB1dD1maWxlXSBbLS12ZXJzaW9uXVxuXAotLSAgICAgICBbLS1oZWxwXSBjb21tYW5kIFthcmcuLi5dXG4iLAotKyAgICAgICBbLS1xdWlldF0gWy0taGVscF0gY29tbWFuZCBbYXJnLi4uXVxuIiwKLSAJICAgcHJvZ3JhbV9uYW1lKTsKLSAgIGV4aXQgKHN0YXR1cyk7Ci0gfQotLS0tIHRpbWUtMS43Lm9yaWcvcmVzdXNlLmgKLSsrKyB0aW1lLTEuNy9yZXN1c2UuaAotQEAgLTM2LDE5ICszNiw4IEBACi0gIyBpbmNsdWRlIDxzeXMvcnVzYWdlLmg+Ci0gI2Vsc2UKLSAjIGRlZmluZSBUVl9NU0VDIHR2X3VzZWMgLyAxMDAwCi0tIyBpZiBIQVZFX1dBSVQzCi0rIyBpZiBIQVZFX1NZU19SRVNPVVJDRV9ICi0gIyAgaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0tIyBlbHNlCi0tLyogUHJvY2VzcyByZXNvdXJjZSB1c2FnZSBzdHJ1Y3R1cmUuICAqLwotLXN0cnVjdCBydXNhZ2UKLS17Ci0tICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsJLyogVXNlciB0aW1lIHVzZWQuICAqLwotLSAgc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7CS8qIFN5c3RlbSB0aW1lIHVzZWQuICAqLwotLSAgaW50IHJ1X21heHJzcywgcnVfaXhyc3MsIHJ1X2lkcnNzLCBydV9pc3JzcywKLS0gIHJ1X21pbmZsdCwgcnVfbWFqZmx0LCBydV9uc3dhcCwgcnVfaW5ibG9jaywgCi0tICBydV9vdWJsb2NrLCBydV9tc2dzbmQsIHJ1X21zZ3JjdiwgcnVfbnNpZ25hbHMsCi0tICBydV9udmNzdywgcnVfbml2Y3N3OwotLX07Ci0gIyBlbmRpZgotICNlbmRpZgotIAotLS0tIHRpbWUtMS43Lm9yaWcvdGltZS50ZXhpCi0rKysgdGltZS0xLjcvdGltZS50ZXhpCi1AQCAtMTEsNiArMTEsMTIgQEAKLSBAZmluYWxvdXQKLSBAZW5kIGlmdGV4Ci0gCi0rQGRpcmNhdGVnb3J5IEluZGl2aWR1YWwgdXRpbGl0aWVzCi0rQGRpcmVudHJ5Ci0rKiB0aW1lOiAodGltZSkuICAgICAgICAgICAgICAgICAgICAgUnVuIHByb2dyYW1zIGFuZCBzdW1tYXJpemUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gcmVzb3VyY2UgdXNhZ2UuCi0rQGVuZCBkaXJlbnRyeQotKwotIEBpZmluZm8KLSBUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSB0aGUgR05VIEBjb2Rle3RpbWV9IGNvbW1hbmQgZm9yIHJ1bm5pbmcgcHJvZ3JhbXMKLSBhbmQgc3VtbWFyaXppbmcgdGhlIHN5c3RlbSByZXNvdXJjZXMgdGhleSB1c2UuCi1AQCAtMTg1LDYgKzE5MSwxMCBAQAotIHN5cyAlUwotIEBlbmQgZXhhbXBsZQotIAotK0BpdGVtIC1xCi0rQGl0ZW14IC0tcXVpZXQKLStTdXBwcmVzcyBub24temVybyBlcnJvciBjb2RlIGZyb20gdGhlIGV4ZWN1dGVkIHByb2dyYW0uCi0rCi0gQGl0ZW0gLXYKLSBAaXRlbXggLS12ZXJib3NlCi0gQGNpbmRleCBmb3JtYXQKLS0tLSB0aW1lLTEuNy5vcmlnL3RpbWUuaW5mbwotKysrIHRpbWUtMS43L3RpbWUuaW5mbwotQEAgLTEsNSArMSwxMCBAQAotLVRoaXMgaXMgSW5mbyBmaWxlIC4vdGltZS5pbmZvLCBwcm9kdWNlZCBieSBNYWtlaW5mby0xLjU1IGZyb20gdGhlIGlucHV0Ci0tZmlsZSB0aW1lLnRleGkuCi0rVGhpcyBpcyB0aW1lLmluZm8sIHByb2R1Y2VkIGJ5IG1ha2VpbmZvIHZlcnNpb24gNC4xIGZyb20gdGltZS50ZXhpLgotKwotK0lORk8tRElSLVNFQ1RJT04gSW5kaXZpZHVhbCB1dGlsaXRpZXMKLStTVEFSVC1JTkZPLURJUi1FTlRSWQotKyogdGltZTogKHRpbWUpLiAgICAgICAgICAgICAgICAgICAgIFJ1biBwcm9ncmFtcyBhbmQgc3VtbWFyaXplCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHJlc291cmNlIHVzYWdlLgotK0VORC1JTkZPLURJUi1FTlRSWQotIAotICAgIFRoaXMgZmlsZSBkb2N1bWVudHMgdGhlIHRoZSBHTlUgYHRpbWUnIGNvbW1hbmQgZm9yIHJ1bm5pbmcgcHJvZ3JhbXMKLSBhbmQgc3VtbWFyaXppbmcgdGhlIHN5c3RlbSByZXNvdXJjZXMgdGhleSB1c2UuCi1AQCAtMzEsNyArMzYsNyBAQAotIAotICogUmVzb3VyY2UgTWVhc3VyZW1lbnQ6OiAgTWVhc3VyaW5nIHByb2dyYW0gcmVzb3VyY2UgdXNlLgotIAotLSAtLSBUaGUgRGV0YWlsZWQgTm9kZSBMaXN0aW5nIC0tCi0rIC0tLSBUaGUgRGV0YWlsZWQgTm9kZSBMaXN0aW5nIC0tLQotIAotIE1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZQotIAotQEAgLTU4LDE0ICs2MywxNCBAQAotICAgIFRoZSBgdGltZScgY29tbWFuZCBydW5zIGFub3RoZXIgcHJvZ3JhbSwgdGhlbiBkaXNwbGF5cyBpbmZvcm1hdGlvbgotIGFib3V0IHRoZSByZXNvdXJjZXMgdXNlZCBieSB0aGF0IHByb2dyYW0sIGNvbGxlY3RlZCBieSB0aGUgc3lzdGVtIHdoaWxlCi0gdGhlIHByb2dyYW0gd2FzIHJ1bm5pbmcuICBZb3UgY2FuIHNlbGVjdCB3aGljaCBpbmZvcm1hdGlvbiBpcyByZXBvcnRlZAotLWFuZCB0aGUgZm9ybWF0IGluIHdoaWNoIGl0IGlzIHNob3duICgqbm90ZSBTZXR0aW5nIEZvcm1hdDo6LiksIG9yIGhhdmUKLSthbmQgdGhlIGZvcm1hdCBpbiB3aGljaCBpdCBpcyBzaG93biAoKm5vdGUgU2V0dGluZyBGb3JtYXQ6OiksIG9yIGhhdmUKLSBgdGltZScgc2F2ZSB0aGUgaW5mb3JtYXRpb24gaW4gYSBmaWxlIGluc3RlYWQgb2YgZGlzcGxheWluZyBpdCBvbiB0aGUKLS1zY3JlZW4gKCpub3RlIFJlZGlyZWN0aW5nOjouKS4KLStzY3JlZW4gKCpub3RlIFJlZGlyZWN0aW5nOjopLgotIAotICAgIFRoZSByZXNvdXJjZXMgdGhhdCBgdGltZScgY2FuIHJlcG9ydCBvbiBmYWxsIGludG8gdGhlIGdlbmVyYWwKLSBjYXRlZ29yaWVzIG9mIHRpbWUsIG1lbW9yeSwgYW5kIEkvTyBhbmQgSVBDIGNhbGxzLiAgU29tZSBzeXN0ZW1zIGRvIG5vdAotIHByb3ZpZGUgbXVjaCBpbmZvcm1hdGlvbiBhYm91dCBwcm9ncmFtIHJlc291cmNlIHVzZTsgYHRpbWUnIHJlcG9ydHMKLS11bmF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhcyB6ZXJvIHZhbHVlcyAoKm5vdGUgQWNjdXJhY3k6Oi4pLgotK3VuYXZhaWxhYmxlIGluZm9ybWF0aW9uIGFzIHplcm8gdmFsdWVzICgqbm90ZSBBY2N1cmFjeTo6KS4KLSAKLSAgICBUaGUgZm9ybWF0IG9mIHRoZSBgdGltZScgY29tbWFuZCBpczoKLSAKLUBAIC0xMzIsNiArMTM3LDEwIEBACi0gICAgICAgICAgIHVzZXIgJVUKLSAgICAgICAgICAgc3lzICVTCi0gCi0rYC1xJwotK2AtLXF1aWV0JwotKyAgICAgU3VwcHJlc3Mgbm9uLXplcm8gZXJyb3IgY29kZSBmcm9tIHRoZSBleGVjdXRlZCBwcm9ncmFtLgotKwotIGAtdicKLSBgLS12ZXJib3NlJwotICAgICAgVXNlIHRoZSBidWlsdC1pbiB2ZXJib3NlIGZvcm1hdCwgd2hpY2ggZGlzcGxheXMgZWFjaCBhdmFpbGFibGUKLUBAIC0xNzQsNyArMTgzLDcgQEAKLSAgICBUaGUgcmVzb3VyY2Ugc3BlY2lmaWVycywgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhvc2UgcmVjb2duaXplZCBieQotIHRoZSBgdGNzaCcgYnVpbHRpbiBgdGltZScgY29tbWFuZCwgYXJlIGxpc3RlZCBiZWxvdy4gIE5vdCBhbGwgcmVzb3VyY2VzCi0gYXJlIG1lYXN1cmVkIGJ5IGFsbCB2ZXJzaW9ucyBvZiBVbml4LCBzbyBzb21lIG9mIHRoZSB2YWx1ZXMgbWlnaHQgYmUKLS1yZXBvcnRlZCBhcyB6ZXJvICgqbm90ZSBBY2N1cmFjeTo6LikuCi0rcmVwb3J0ZWQgYXMgemVybyAoKm5vdGUgQWNjdXJhY3k6OikuCi0gCi0gKiBNZW51OgotIAotQEAgLTMwOCwxMSArMzE3LDExIEBACi0gYC1vIEZJTEUnCi0gYC0tb3V0cHV0PUZJTEUnCi0gICAgICBXcml0ZSB0aGUgcmVzb3VyY2UgdXNlIHN0YXRpc3RpY3MgdG8gRklMRS4gIEJ5IGRlZmF1bHQsIHRoaXMKLS0gICAgICpvdmVyd3JpdGVzKiB0aGUgZmlsZSwgZGVzdHJveWluZyB0aGUgZmlsZSdzIHByZXZpb3VzIGNvbnRlbnRzLgotKyAgICAgX292ZXJ3cml0ZXNfIHRoZSBmaWxlLCBkZXN0cm95aW5nIHRoZSBmaWxlJ3MgcHJldmlvdXMgY29udGVudHMuCi0gCi0gYC1hJwotIGAtLWFwcGVuZCcKLS0gICAgICpBcHBlbmQqIHRoZSByZXNvdXJjZSB1c2UgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQKLSsgICAgIF9BcHBlbmRfIHRoZSByZXNvdXJjZSB1c2UgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQKLSAgICAgIG9mIG92ZXJ3cml0aW5nIGl0LiAgVGhpcyBvcHRpb24gaXMgb25seSB1c2VmdWwgd2l0aCB0aGUgYC1vJyBvcgotICAgICAgYC0tb3V0cHV0JyBvcHRpb24uCi0gCi1AQCAtNDM3LDcgKzQ0Niw3IEBACi0gCi0gYC1hJwotIGAtLWFwcGVuZCcKLS0gICAgICpBcHBlbmQqIHRoZSByZXNvdXJjZSB1c2UgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQKLSsgICAgIF9BcHBlbmRfIHRoZSByZXNvdXJjZSB1c2UgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQKLSAgICAgIG9mIG92ZXJ3cml0aW5nIGl0LgotIAotIGAtZiBGT1JNQVQnCi1AQCAtNDYyLDE3ICs0NzEsMTcgQEAKLSAKLSAfCi0gVGFnIFRhYmxlOgotLU5vZGU6IFRvcH85MzQKLS1Ob2RlOiBSZXNvdXJjZSBNZWFzdXJlbWVudH8xNzI1Ci0tTm9kZTogU2V0dGluZyBGb3JtYXR/MzY3OAotLU5vZGU6IEZvcm1hdCBTdHJpbmd/NDkwNwotLU5vZGU6IFRpbWUgUmVzb3VyY2VzfzYyMTQKLS1Ob2RlOiBNZW1vcnkgUmVzb3VyY2VzfzY4NDQKLS1Ob2RlOiBJL08gUmVzb3VyY2Vzfzc1NDkKLS1Ob2RlOiBDb21tYW5kIEluZm9/ODc0NwotLU5vZGU6IFJlZGlyZWN0aW5nfzg5NjQKLS1Ob2RlOiBFeGFtcGxlc385NzU0Ci0tTm9kZTogQWNjdXJhY3l/MTIwNjQKLS1Ob2RlOiBJbnZva2luZyB0aW1lfzEzNTg2Ci0rTm9kZTogVG9wfzExMTUKLStOb2RlOiBSZXNvdXJjZSBNZWFzdXJlbWVudH8xOTA4Ci0rTm9kZTogU2V0dGluZyBGb3JtYXR/Mzg1OAotK05vZGU6IEZvcm1hdCBTdHJpbmd/NTE2NAotK05vZGU6IFRpbWUgUmVzb3VyY2VzfzY0NzAKLStOb2RlOiBNZW1vcnkgUmVzb3VyY2VzfzcxMDAKLStOb2RlOiBJL08gUmVzb3VyY2Vzfzc4MDUKLStOb2RlOiBDb21tYW5kIEluZm9/OTAwMwotK05vZGU6IFJlZGlyZWN0aW5nfzkyMjAKLStOb2RlOiBFeGFtcGxlc38xMDAxMAotK05vZGU6IEFjY3VyYWN5fzEyMzIwCi0rTm9kZTogSW52b2tpbmcgdGltZX8xMzg0MgotIB8KLSBFbmQgVGFnIFRhYmxlCi0tLS0gdGltZS0xLjcub3JpZy90aW1lLmh0bWwKLSsrKyB0aW1lLTEuNy90aW1lLmh0bWwKLUBAIC0wLDAgKzEsMTAyMSBAQAotKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCi0rICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAvbG9vc2UuZHRkIj4KLSs8SFRNTD4KLSs8IS0tIENyZWF0ZWQgb24gU2VwdGVtYmVyLCAxIDIwMDMgYnkgdGV4aTJodG1sIDEuNjYgLS0+Ci0rPCEtLQotK1dyaXR0ZW4gYnk6IExpb25lbCBDb25zIDxMaW9uZWwuQ29uc0BjZXJuLmNoPiAob3JpZ2luYWwgYXV0aG9yKQotKyAgICAgICAgICAgIEthcmwgQmVycnkgIDxrYXJsQGZyZWVmcmllbmRzLm9yZz4KLSsgICAgICAgICAgICBPbGFmIEJhY2htYW5uIDxvYmFjaG1hbkBtYXRoZW1hdGlrLnVuaS1rbC5kZT4KLSsgICAgICAgICAgICBhbmQgbWFueSBvdGhlcnMuCi0rTWFpbnRhaW5lZCBieTogTWFueSBjcmVhdGl2ZSBwZW9wbGUgPGRldkB0ZXhpMmh0bWwuY3ZzaG9tZS5vcmc+Ci0rU2VuZCBidWdzIGFuZCBzdWdnZXN0aW9ucyB0byA8dXNlcnNAdGV4aTJodG1sLmN2c2hvbWUub3JnPgotKwotKy0tPgotKzxIRUFEPgotKzxUSVRMRT5NZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L1RJVExFPgotKwotKzxNRVRBIE5BTUU9ImRlc2NyaXB0aW9uIiBDT05URU5UPSJNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UiPgotKzxNRVRBIE5BTUU9ImtleXdvcmRzIiBDT05URU5UPSJNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UiPgotKzxNRVRBIE5BTUU9InJlc291cmNlLXR5cGUiIENPTlRFTlQ9ImRvY3VtZW50Ij4KLSs8TUVUQSBOQU1FPSJkaXN0cmlidXRpb24iIENPTlRFTlQ9Imdsb2JhbCI+Ci0rPE1FVEEgTkFNRT0iR2VuZXJhdG9yIiBDT05URU5UPSJ0ZXhpMmh0bWwgMS42NiI+Ci0rCi0rPC9IRUFEPgotKwotKzxCT0RZIExBTkc9ImVuIiBCR0NPTE9SPSIjRkZGRkZGIiBURVhUPSIjMDAwMDAwIiBMSU5LPSIjMDAwMEZGIiBWTElOSz0iIzgwMDA4MCIgQUxJTks9IiNGRjAwMDAiPgotKwotKzxBIE5BTUU9IlNFQ19Ub3AiPjwvQT4KLSs8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgotKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgxPk1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZTwvSDE+Ci0rCi0rPFA+Ci0rCi0rVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdGhlIEdOVSA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kIGZvciBydW5uaW5nIHByb2dyYW1zCi0rYW5kIHN1bW1hcml6aW5nIHRoZSBzeXN0ZW0gcmVzb3VyY2VzIHRoZXkgdXNlLgotK1RoaXMgaXMgZWRpdGlvbiAxLjcsIGZvciB2ZXJzaW9uIDEuNy4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxUQUJMRSBCT1JERVI9IjAiIENFTExTUEFDSU5HPSIwIj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzEiPjEuIE1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZTwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPk1lYXN1cmluZyBwcm9ncmFtIHJlc291cmNlIHVzZS48L1REPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPgotKzwvVEg+PC9UUj4KLSs8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+IC0tIFRoZSBEZXRhaWxlZCBOb2RlIExpc3RpbmcgLS0tCi0rPC9USD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPk1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZQotKzwvVEg+PC9UUj4KLSs8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+Ci0rPC9USD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+MS4xIFNldHRpbmcgdGhlIE91dHB1dCBGb3JtYXQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5TZWxlY3RpbmcgdGhlIGluZm9ybWF0aW9uIHJlcG9ydGVkIGJ5IDxDT0RFPnRpbWU8L0NPREU+LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzMiPjEuMiBUaGUgRm9ybWF0IFN0cmluZzwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlRoZSBpbmZvcm1hdGlvbiA8Q09ERT50aW1lPC9DT0RFPiBjYW4gcmVwb3J0LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzgiPjEuMyBSZWRpcmVjdGluZyBPdXRwdXQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5Xcml0aW5nIHRoZSBpbmZvcm1hdGlvbiB0byBhIGZpbGUuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+MS40IEV4YW1wbGVzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+RXhhbXBsZXMgb2YgdXNpbmcgPENPREU+dGltZTwvQ09ERT4uPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPkxpbWl0YXRpb25zIG9uIHRoZSBhY2N1cmFjeSBvZiA8Q09ERT50aW1lPC9DT0RFPiBvdXRwdXQuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTEiPjEuNiBSdW5uaW5nIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBDb21tYW5kPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+U3VtbWFyeSBvZiB0aGUgb3B0aW9ucyB0byB0aGUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZC48L1REPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPgotKzwvVEg+PC9UUj4KLSs8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+VGhlIEZvcm1hdCBTdHJpbmcKLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPgotKzwvVEg+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzQiPjEuMi4xIFRpbWUgUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+MS4yLjIgTWVtb3J5IFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzYiPjEuMi4zIEkvTyBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4xLjIuNCBDb21tYW5kIEluZm88L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPC9UQUJMRT4KLSs8UD4KLSsKLSs8SFIgU0laRT0xPgotKzxBIE5BTUU9IlNFQzEiPjwvQT4KLSs8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgotKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiAmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzIiPiAmZ3Q7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmx0OyZsdDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEEgTkFNRT0iUmVzb3VyY2UgTWVhc3VyZW1lbnQiPjwvQT4KLSs8SDE+IDEuIE1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZSA8L0gxPgotKzwhLS1kb2NpZDo6U0VDMTo6LS0+Ci0rPFA+Ci0rCi0rVGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQgcnVucyBhbm90aGVyIHByb2dyYW0sIHRoZW4gZGlzcGxheXMgaW5mb3JtYXRpb24KLSthYm91dCB0aGUgcmVzb3VyY2VzIHVzZWQgYnkgdGhhdCBwcm9ncmFtLCBjb2xsZWN0ZWQgYnkgdGhlIHN5c3RlbSB3aGlsZQotK3RoZSBwcm9ncmFtIHdhcyBydW5uaW5nLiAgWW91IGNhbiBzZWxlY3Qgd2hpY2ggaW5mb3JtYXRpb24gaXMgcmVwb3J0ZWQKLSthbmQgdGhlIGZvcm1hdCBpbiB3aGljaCBpdCBpcyBzaG93biAoc2VlIHNlY3Rpb24gPEEgSFJFRj0idGltZS5odG1sI1NFQzIiPjEuMSBTZXR0aW5nIHRoZSBPdXRwdXQgRm9ybWF0PC9BPiksIG9yIGhhdmUKLSs8Q09ERT50aW1lPC9DT0RFPiBzYXZlIHRoZSBpbmZvcm1hdGlvbiBpbiBhIGZpbGUgaW5zdGVhZCBvZiBkaXNwbGF5aW5nIGl0IG9uIHRoZQotK3NjcmVlbiAoc2VlIHNlY3Rpb24gPEEgSFJFRj0idGltZS5odG1sI1NFQzgiPjEuMyBSZWRpcmVjdGluZyBPdXRwdXQ8L0E+KS4KLSs8L1A+Ci0rPFA+Ci0rCi0rVGhlIHJlc291cmNlcyB0aGF0IDxDT0RFPnRpbWU8L0NPREU+IGNhbiByZXBvcnQgb24gZmFsbCBpbnRvIHRoZSBnZW5lcmFsCi0rY2F0ZWdvcmllcyBvZiB0aW1lLCBtZW1vcnksIGFuZCBJL08gYW5kIElQQyBjYWxscy4gIFNvbWUgc3lzdGVtcyBkbyBub3QKLStwcm92aWRlIG11Y2ggaW5mb3JtYXRpb24gYWJvdXQgcHJvZ3JhbSByZXNvdXJjZSB1c2U7IDxDT0RFPnRpbWU8L0NPREU+Ci0rcmVwb3J0cyB1bmF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhcyB6ZXJvIHZhbHVlcyAoc2VlIHNlY3Rpb24gPEEgSFJFRj0idGltZS5odG1sI1NFQzEwIj4xLjUgQWNjdXJhY3k8L0E+KS4KLSs8L1A+Ci0rPFA+Ci0rCi0rVGhlIGZvcm1hdCBvZiB0aGUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCBpczoKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPnRpbWUgW29wdGlvbjxzbWFsbD4uLi48L3NtYWxsPl0gPFZBUj5jb21tYW5kPC9WQVI+IFs8VkFSPmFyZzwvVkFSPjxzbWFsbD4uLi48L3NtYWxsPl0KLSs8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KLSsKLSs8QSBOQU1FPSJJRFgxIj48L0E+Ci0rPENPREU+dGltZTwvQ09ERT4gcnVucyB0aGUgcHJvZ3JhbSA8VkFSPmNvbW1hbmQ8L1ZBUj4sIHdpdGggYW55IGdpdmVuIGFyZ3VtZW50cwotKzxWQVI+YXJnPC9WQVI+PHNtYWxsPi4uLjwvc21hbGw+LiAgV2hlbiA8VkFSPmNvbW1hbmQ8L1ZBUj4gZmluaXNoZXMsIDxDT0RFPnRpbWU8L0NPREU+IGRpc3BsYXlzCi0raW5mb3JtYXRpb24gYWJvdXQgcmVzb3VyY2VzIHVzZWQgYnkgPFZBUj5jb21tYW5kPC9WQVI+LgotKzwvUD4KLSs8UD4KLSsKLStIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgPENPREU+dGltZTwvQ09ERT4gdG8gbWVhc3VyZSB0aGUgdGltZSBhbmQgb3RoZXIKLStyZXNvdXJjZXMgdXNlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtIDxDT0RFPmdyZXA8L0NPREU+OgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+ZWckIHRpbWUgZ3JlcCBub2JvZHkgL2V0Yy9hbGlhc2VzCi0rbm9ib2R5Oi9kZXYvbnVsbAotK2V0Yy1maWxlczpub2JvZHkKLSttaXNjLWdyb3VwOm5vYm9keQotKzAuMDd1c2VyIDAuNTBzeXN0ZW0gMDowNi42OWVsYXBzZWQgOCVDUFUgKDBhdmd0ZXh0KzQ4OWF2Z2RhdGEgMzI0bWF4cmVzaWRlbnQpawotKzQ2aW5wdXRzKzdvdXRwdXRzICg0M21ham9yKzI1MW1pbm9yKXBhZ2VmYXVsdHMgMHN3YXBzCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rTWFpbCBzdWdnZXN0aW9ucyBhbmQgYnVnIHJlcG9ydHMgZm9yIEdOVSA8Q09ERT50aW1lPC9DT0RFPiB0bwotKzxDT0RFPmJ1Zy1nbnUtdXRpbHNAcHJlcC5haS5taXQuZWR1PC9DT0RFPi4gIFBsZWFzZSBpbmNsdWRlIHRoZSB2ZXJzaW9uIG9mCi0rPENPREU+dGltZTwvQ09ERT4sIHdoaWNoIHlvdSBjYW4gZ2V0IGJ5IHJ1bm5pbmcgYDxTQU1QPnRpbWUgLS12ZXJzaW9uPC9TQU1QPicsIGFuZCB0aGUKLStvcGVyYXRpbmcgc3lzdGVtIGFuZCBDIGNvbXBpbGVyIHlvdSB1c2VkLgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEUgQk9SREVSPSIwIiBDRUxMU1BBQ0lORz0iMCI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4xLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdDwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlNlbGVjdGluZyB0aGUgaW5mb3JtYXRpb24gcmVwb3J0ZWQgYnkgPENPREU+dGltZTwvQ09ERT4uPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMyI+MS4yIFRoZSBGb3JtYXQgU3RyaW5nPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+VGhlIGluZm9ybWF0aW9uIDxDT0RFPnRpbWU8L0NPREU+IGNhbiByZXBvcnQuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+MS4zIFJlZGlyZWN0aW5nIE91dHB1dDwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPldyaXRpbmcgdGhlIGluZm9ybWF0aW9uIHRvIGEgZmlsZS48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM5Ij4xLjQgRXhhbXBsZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5FeGFtcGxlcyBvZiB1c2luZyA8Q09ERT50aW1lPC9DT0RFPi48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+TGltaXRhdGlvbnMgb24gdGhlIGFjY3VyYWN5IG9mIDxDT0RFPnRpbWU8L0NPREU+IG91dHB1dC48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMSI+MS42IFJ1bm5pbmcgdGhlIDxDT0RFPnRpbWU8L0NPREU+IENvbW1hbmQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5TdW1tYXJ5IG9mIHRoZSBvcHRpb25zIHRvIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kLjwvVEQ+PC9UUj4KLSs8L1RBQkxFPgotKzxQPgotKwotKzxBIE5BTUU9IlNldHRpbmcgRm9ybWF0Ij48L0E+Ci0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQzIiPjwvQT4KLSs8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgotKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzMiPiAmZ3Q7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDI+IDEuMSBTZXR0aW5nIHRoZSBPdXRwdXQgRm9ybWF0IDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUMyOjotLT4KLSs8UD4KLSsKLSs8Q09ERT50aW1lPC9DT0RFPiB1c2VzIGEgPEVNPmZvcm1hdCBzdHJpbmc8L0VNPiB0byBkZXRlcm1pbmUgd2hpY2ggaW5mb3JtYXRpb24gdG8KLStkaXNwbGF5IGFib3V0IHRoZSByZXNvdXJjZXMgdXNlZCBieSB0aGUgY29tbWFuZCBpdCBydW5zLiAgU2VlIHNlY3Rpb24gPEEgSFJFRj0idGltZS5odG1sI1NFQzMiPjEuMiBUaGUgRm9ybWF0IFN0cmluZzwvQT4sIGZvciB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGZvcm1hdCBzdHJpbmcgY29udGVudHMuCi0rPC9QPgotKzxQPgotKwotK1lvdSBjYW4gc3BlY2lmeSBhIGZvcm1hdCBzdHJpbmcgd2l0aCB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbnMgbGlzdGVkCi0rYmVsb3cuICBJZiBubyBmb3JtYXQgaXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCB0aGUKLSs8Q09ERT5USU1FPC9DT0RFPiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIGl0cyB2YWx1ZSBpcyB1c2VkIGFzIHRoZSBmb3JtYXQKLStzdHJpbmcuICBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IGZvcm1hdCBidWlsdCBpbnRvIDxDT0RFPnRpbWU8L0NPREU+IGlzIHVzZWQ6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT4lVXVzZXIgJVNzeXN0ZW0gJUVlbGFwc2VkICVQQ1BVICglWHRleHQrJURkYXRhICVNbWF4KWsKLSslSWlucHV0cyslT291dHB1dHMgKCVGbWFqb3IrJVJtaW5vcilwYWdlZmF1bHRzICVXc3dhcHMKLSs8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KLSsKLStUaGUgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gc2V0IHRoZSBmb3JtYXQgYXJlOgotKzwvUD4KLSs8UD4KLSsKLSs8L1A+Ci0rPERMIENPTVBBQ1Q+Ci0rPERUPjxDT0RFPi1mIDxWQVI+Zm9ybWF0PC9WQVI+PC9DT0RFPgotKzxERD48RFQ+PENPREU+LS1mb3JtYXQ9PFZBUj5mb3JtYXQ8L1ZBUj48L0NPREU+Ci0rPEREPlVzZSA8VkFSPmZvcm1hdDwvVkFSPiBhcyB0aGUgZm9ybWF0IHN0cmluZy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi1wPC9DT0RFPgotKzxERD48RFQ+PENPREU+LS1wb3J0YWJpbGl0eTwvQ09ERT4KLSs8REQ+VXNlIHRoZSBmb2xsb3dpbmcgZm9ybWF0IHN0cmluZywgZm9yIGNvbmZvcm1hbmNlIHdpdGggUE9TSVggc3RhbmRhcmQKLSsxMDAzLjI6Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPnJlYWwgJWUKLSt1c2VyICVVCi0rc3lzICVTCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tcTwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tcXVpZXQ8L0NPREU+Ci0rPEREPlN1cHByZXNzIG5vbi16ZXJvIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbS4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi12PC9DT0RFPgotKzxERD48RFQ+PENPREU+LS12ZXJib3NlPC9DT0RFPgotKzxERD48QSBOQU1FPSJJRFgyIj48L0E+Ci0rVXNlIHRoZSBidWlsdC1pbiB2ZXJib3NlIGZvcm1hdCwgd2hpY2ggZGlzcGxheXMgZWFjaCBhdmFpbGFibGUgcGllY2Ugb2YKLStpbmZvcm1hdGlvbiBvbiB0aGUgcHJvZ3JhbSdzIHJlc291cmNlIHVzZSBvbiBpdHMgb3duIGxpbmUsIHdpdGggYW4KLStFbmdsaXNoIGRlc2NyaXB0aW9uIG9mIGl0cyBtZWFuaW5nLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iRm9ybWF0IFN0cmluZyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUMzIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjIgVGhlIEZvcm1hdCBTdHJpbmcgPC9IMj4KLSs8IS0tZG9jaWQ6OlNFQzM6Oi0tPgotKzxQPgotKwotKzxBIE5BTUU9IklEWDMiPjwvQT4KLSs8QSBOQU1FPSJJRFg0Ij48L0E+Ci0rVGhlIDxFTT5mb3JtYXQgc3RyaW5nPC9FTT4gY29udHJvbHMgdGhlIGNvbnRlbnRzIG9mIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBvdXRwdXQuCi0rSXQgY29uc2lzdHMgb2YgPEVNPnJlc291cmNlIHNwZWNpZmllcnM8L0VNPiBhbmQgPEVNPmVzY2FwZXM8L0VNPiwgaW50ZXJzcGVyc2VkCi0rd2l0aCBwbGFpbiB0ZXh0LgotKzwvUD4KLSs8UD4KLSsKLStBIGJhY2tzbGFzaCBpbnRyb2R1Y2VzIGFuIDxFTT5lc2NhcGU8L0VNPiwgd2hpY2ggaXMgdHJhbnNsYXRlZAotK2ludG8gYSBzaW5nbGUgcHJpbnRpbmcgY2hhcmFjdGVyIHVwb24gb3V0cHV0LiAgVGhlIHZhbGlkIGVzY2FwZXMgYXJlCi0rbGlzdGVkIGJlbG93LiAgQW4gaW52YWxpZCBlc2NhcGUgaXMgb3V0cHV0IGFzIGEgcXVlc3Rpb24gbWFyayBmb2xsb3dlZAotK2J5IGEgYmFja3NsYXNoLgotKzwvUD4KLSs8UD4KLSsKLSs8L1A+Ci0rPERMIENPTVBBQ1Q+Ci0rPERUPjxDT0RFPlx0PC9DT0RFPgotKzxERD5hIHRhYiBjaGFyYWN0ZXIKLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPlxuPC9DT0RFPgotKzxERD5hIG5ld2xpbmUKLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPlxcPC9DT0RFPgotKzxERD5hIGxpdGVyYWwgYmFja3NsYXNoCi0rPC9ETD4KLSs8UD4KLSsKLSs8Q09ERT50aW1lPC9DT0RFPiBhbHdheXMgcHJpbnRzIGEgbmV3bGluZSBhZnRlciBwcmludGluZyB0aGUgcmVzb3VyY2UgdXNlCi0raW5mb3JtYXRpb24sIHNvIG5vcm1hbGx5IGZvcm1hdCBzdHJpbmdzIGRvIG5vdCBlbmQgd2l0aCBhIG5ld2xpbmUKLStjaGFyYWN0ZXIgKG9yIGA8U0FNUD5cbjwvU0FNUD4nKS4KLSs8L1A+Ci0rPFA+Ci0rCi0rQSByZXNvdXJjZSBzcGVjaWZpZXIgY29uc2lzdHMgb2YgYSBwZXJjZW50IHNpZ24gZm9sbG93ZWQgYnkgYW5vdGhlcgotK2NoYXJhY3Rlci4gIEFuIGludmFsaWQgcmVzb3VyY2Ugc3BlY2lmaWVyIGlzIG91dHB1dCBhcyBhIHF1ZXN0aW9uIG1hcmsKLStmb2xsb3dlZCBieSB0aGUgaW52YWxpZCBjaGFyYWN0ZXIuICBVc2UgYDxTQU1QPiUlPC9TQU1QPicgdG8gb3V0cHV0IGEgbGl0ZXJhbAotK3BlcmNlbnQgc2lnbi4KLSs8L1A+Ci0rPFA+Ci0rCi0rVGhlIHJlc291cmNlIHNwZWNpZmllcnMsIHdoaWNoIGFyZSBhIHN1cGVyc2V0IG9mIHRob3NlIHJlY29nbml6ZWQgYnkgdGhlCi0rPENPREU+dGNzaDwvQ09ERT4gYnVpbHRpbiA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kLCBhcmUgbGlzdGVkIGJlbG93LiAgTm90IGFsbAotK3Jlc291cmNlcyBhcmUgbWVhc3VyZWQgYnkgYWxsIHZlcnNpb25zIG9mIFVuaXgsIHNvIHNvbWUgb2YgdGhlIHZhbHVlcwotK21pZ2h0IGJlIHJlcG9ydGVkIGFzIHplcm8gKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPikuCi0rPC9QPgotKzxQPgotKwotKzxUQUJMRSBCT1JERVI9IjAiIENFTExTUEFDSU5HPSIwIj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzQiPjEuMi4xIFRpbWUgUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+MS4yLjIgTWVtb3J5IFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzYiPjEuMi4zIEkvTyBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4xLjIuNCBDb21tYW5kIEluZm88L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPC9UQUJMRT4KLSs8UD4KLSsKLSs8QSBOQU1FPSJUaW1lIFJlc291cmNlcyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM0Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM1Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgzPiAxLjIuMSBUaW1lIFJlc291cmNlcyA8L0gzPgotKzwhLS1kb2NpZDo6U0VDNDo6LS0+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT5FPC9DT0RFPgotKzxERD5FbGFwc2VkIHJlYWwgKHdhbGwgY2xvY2spIHRpbWUgdXNlZCBieSB0aGUgcHJvY2VzcywgaW4KLStbaG91cnM6XW1pbnV0ZXM6c2Vjb25kcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPmU8L0NPREU+Ci0rPEREPkVsYXBzZWQgcmVhbCAod2FsbCBjbG9jaykgdGltZSB1c2VkIGJ5IHRoZSBwcm9jZXNzLCBpbgotK3NlY29uZHMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5TPC9DT0RFPgotKzxERD5Ub3RhbCBudW1iZXIgb2YgQ1BVLXNlY29uZHMgdXNlZCBieSB0aGUgc3lzdGVtIG9uIGJlaGFsZiBvZiB0aGUgcHJvY2VzcwotKyhpbiBrZXJuZWwgbW9kZSksIGluIHNlY29uZHMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5VPC9DT0RFPgotKzxERD5Ub3RhbCBudW1iZXIgb2YgQ1BVLXNlY29uZHMgdGhhdCB0aGUgcHJvY2VzcyB1c2VkIGRpcmVjdGx5IChpbiB1c2VyCi0rbW9kZSksIGluIHNlY29uZHMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5QPC9DT0RFPgotKzxERD5QZXJjZW50YWdlIG9mIHRoZSBDUFUgdGhhdCB0aGlzIGpvYiBnb3QuICBUaGlzIGlzIGp1c3QgdXNlciArIHN5c3RlbQotK3RpbWVzIGRpdmllZCBieSB0aGUgdG90YWwgcnVubmluZyB0aW1lLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iTWVtb3J5IFJlc291cmNlcyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM1Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgzPiAxLjIuMiBNZW1vcnkgUmVzb3VyY2VzIDwvSDM+Ci0rPCEtLWRvY2lkOjpTRUM1OjotLT4KLSs8UD4KLSsKLSs8L1A+Ci0rPERMIENPTVBBQ1Q+Ci0rPERUPjxDT0RFPk08L0NPREU+Ci0rPEREPk1heGltdW0gcmVzaWRlbnQgc2V0IHNpemUgb2YgdGhlIHByb2Nlc3MgZHVyaW5nIGl0cyBsaWZldGltZSwgaW4KLStLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT50PC9DT0RFPgotKzxERD5BdmVyYWdlIHJlc2lkZW50IHNldCBzaXplIG9mIHRoZSBwcm9jZXNzLCBpbiBLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5LPC9DT0RFPgotKzxERD5BdmVyYWdlIHRvdGFsIChkYXRhK3N0YWNrK3RleHQpIG1lbW9yeSB1c2Ugb2YgdGhlIHByb2Nlc3MsIGluIEtpbG9ieXRlcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPkQ8L0NPREU+Ci0rPEREPkF2ZXJhZ2Ugc2l6ZSBvZiB0aGUgcHJvY2VzcydzIHVuc2hhcmVkIGRhdGEgYXJlYSwgaW4gS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+cDwvQ09ERT4KLSs8REQ+QXZlcmFnZSBzaXplIG9mIHRoZSBwcm9jZXNzJ3MgdW5zaGFyZWQgc3RhY2ssIGluIEtpbG9ieXRlcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPlg8L0NPREU+Ci0rPEREPkF2ZXJhZ2Ugc2l6ZSBvZiB0aGUgcHJvY2VzcydzIHNoYXJlZCB0ZXh0LCBpbiBLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5aPC9DT0RFPgotKzxERD5TeXN0ZW0ncyBwYWdlIHNpemUsIGluIGJ5dGVzLiAgVGhpcyBpcyBhIHBlci1zeXN0ZW0gY29uc3RhbnQsIGJ1dAotK3ZhcmllcyBiZXR3ZWVuIHN5c3RlbXMuCi0rPC9ETD4KLSs8UD4KLSsKLSs8QSBOQU1FPSJJL08gUmVzb3VyY2VzIj48L0E+Ci0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQzYiPjwvQT4KLSs8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgotKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzUiPiAmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzciPiAmZ3Q7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDM+IDEuMi4zIEkvTyBSZXNvdXJjZXMgPC9IMz4KLSs8IS0tZG9jaWQ6OlNFQzY6Oi0tPgotKzxQPgotKwotKzwvUD4KLSs8REwgQ09NUEFDVD4KLSs8RFQ+PENPREU+RjwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIG1ham9yLCBvciBJL08tcmVxdWlyaW5nLCBwYWdlIGZhdWx0cyB0aGF0IG9jY3VycmVkIHdoaWxlIHRoZQotK3Byb2Nlc3Mgd2FzIHJ1bm5pbmcuICBUaGVzZSBhcmUgZmF1bHRzIHdoZXJlIHRoZSBwYWdlIGhhcyBhY3R1YWxseQotK21pZ3JhdGVkIG91dCBvZiBwcmltYXJ5IG1lbW9yeS4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPlI8L0NPREU+Ci0rPEREPk51bWJlciBvZiBtaW5vciwgb3IgcmVjb3ZlcmFibGUsIHBhZ2UgZmF1bHRzLiAgVGhlc2UgYXJlIHBhZ2VzIHRoYXQgYXJlCi0rbm90IHZhbGlkIChzbyB0aGV5IGZhdWx0KSBidXQgd2hpY2ggaGF2ZSBub3QgeWV0IGJlZW4gY2xhaW1lZCBieSBvdGhlcgotK3ZpcnR1YWwgcGFnZXMuICBUaHVzIHRoZSBkYXRhIGluIHRoZSBwYWdlIGlzIHN0aWxsIHZhbGlkIGJ1dCB0aGUgc3lzdGVtCi0rdGFibGVzIG11c3QgYmUgdXBkYXRlZC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPlc8L0NPREU+Ci0rPEREPk51bWJlciBvZiB0aW1lcyB0aGUgcHJvY2VzcyB3YXMgc3dhcHBlZCBvdXQgb2YgbWFpbiBtZW1vcnkuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5jPC9DT0RFPgotKzxERD5OdW1iZXIgb2YgdGltZXMgdGhlIHByb2Nlc3Mgd2FzIGNvbnRleHQtc3dpdGNoZWQgaW52b2x1bnRhcmlseSAoYmVjYXVzZQotK3RoZSB0aW1lIHNsaWNlIGV4cGlyZWQpLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+dzwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHRpbWVzIHRoYXQgdGhlIHByb2dyYW0gd2FzIGNvbnRleHQtc3dpdGNoZWQgdm9sdW50YXJpbHksIGZvcgotK2luc3RhbmNlIHdoaWxlIHdhaXRpbmcgZm9yIGFuIEkvTyBvcGVyYXRpb24gdG8gY29tcGxldGUuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5JPC9DT0RFPgotKzxERD5OdW1iZXIgb2YgZmlsZSBzeXN0ZW0gaW5wdXRzIGJ5IHRoZSBwcm9jZXNzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+TzwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIGZpbGUgc3lzdGVtIG91dHB1dHMgYnkgdGhlIHByb2Nlc3MuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5yPC9DT0RFPgotKzxERD5OdW1iZXIgb2Ygc29ja2V0IG1lc3NhZ2VzIHJlY2VpdmVkIGJ5IHRoZSBwcm9jZXNzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+czwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHNvY2tldCBtZXNzYWdlcyBzZW50IGJ5IHRoZSBwcm9jZXNzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+azwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHNpZ25hbHMgZGVsaXZlcmVkIHRvIHRoZSBwcm9jZXNzLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iQ29tbWFuZCBJbmZvIj48L0E+Ci0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQzciPjwvQT4KLSs8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgotKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzYiPiAmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzgiPiAmZ3Q7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDM+IDEuMi40IENvbW1hbmQgSW5mbyA8L0gzPgotKzwhLS1kb2NpZDo6U0VDNzo6LS0+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT5DPC9DT0RFPgotKzxERD5OYW1lIGFuZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9mIHRoZSBjb21tYW5kIGJlaW5nIHRpbWVkLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+eDwvQ09ERT4KLSs8REQ+RXhpdCBzdGF0dXMgb2YgdGhlIGNvbW1hbmQuCi0rPC9ETD4KLSs8UD4KLSsKLSs8QSBOQU1FPSJSZWRpcmVjdGluZyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM4Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM5Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjMgUmVkaXJlY3RpbmcgT3V0cHV0IDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUM4OjotLT4KLSs8UD4KLSsKLStCeSBkZWZhdWx0LCA8Q09ERT50aW1lPC9DT0RFPiB3cml0ZXMgdGhlIHJlc291cmNlIHVzZSBzdGF0aXN0aWNzIHRvIHRoZQotK3N0YW5kYXJkIGVycm9yIHN0cmVhbS4gIFRoZSBvcHRpb25zIGJlbG93IG1ha2UgaXQgd3JpdGUgdGhlIHN0YXRpc3RpY3MKLSt0byBhIGZpbGUgaW5zdGVhZC4gIERvaW5nIHRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB0aGUgcHJvZ3JhbSB5b3UncmUKLStydW5uaW5nIHdyaXRlcyB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3IgeW91J3JlIHJ1bm5pbmcgPENPREU+dGltZTwvQ09ERT4KLStub25pbnRlcmFjdGl2ZWx5IG9yIGluIHRoZSBiYWNrZ3JvdW5kLgotKzwvUD4KLSs8UD4KLSsKLSs8L1A+Ci0rPERMIENPTVBBQ1Q+Ci0rPERUPjxDT0RFPi1vIDxWQVI+ZmlsZTwvVkFSPjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tb3V0cHV0PTxWQVI+ZmlsZTwvVkFSPjwvQ09ERT4KLSs8REQ+V3JpdGUgdGhlIHJlc291cmNlIHVzZSBzdGF0aXN0aWNzIHRvIDxWQVI+ZmlsZTwvVkFSPi4gIEJ5IGRlZmF1bHQsIHRoaXMKLSs8RU0+b3ZlcndyaXRlczwvRU0+IHRoZSBmaWxlLCBkZXN0cm95aW5nIHRoZSBmaWxlJ3MgcHJldmlvdXMgY29udGVudHMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tYTwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tYXBwZW5kPC9DT0RFPgotKzxERD48RU0+QXBwZW5kPC9FTT4gdGhlIHJlc291cmNlIHVzZSBpbmZvcm1hdGlvbiB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZAotK29mIG92ZXJ3cml0aW5nIGl0LiAgVGhpcyBvcHRpb24gaXMgb25seSB1c2VmdWwgd2l0aCB0aGUgYDxTQU1QPi1vPC9TQU1QPicgb3IKLStgPFNBTVA+LS1vdXRwdXQ8L1NBTVA+JyBvcHRpb24uCi0rPC9ETD4KLSs8UD4KLSsKLSs8QSBOQU1FPSJFeGFtcGxlcyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM5Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS40IEV4YW1wbGVzIDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUM5OjotLT4KLSs8UD4KLSsKLStSdW4gdGhlIGNvbW1hbmQgYDxTQU1QPndjIC9ldGMvaG9zdHM8L1NBTVA+JyBhbmQgc2hvdyB0aGUgZGVmYXVsdCBpbmZvcm1hdGlvbjoKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCB0aW1lIHdjIC9ldGMvaG9zdHMKLSsgICAgICAzNSAgICAgMTExICAgIDExMzQgL2V0Yy9ob3N0cwotKzAuMDB1c2VyIDAuMDFzeXN0ZW0gMDowMC4wNGVsYXBzZWQgMjUlQ1BVICgwYXZndGV4dCswYXZnZGF0YSAwbWF4cmVzaWRlbnQpawotKzFpbnB1dHMrMW91dHB1dHMgKDBtYWpvciswbWlub3IpcGFnZWZhdWx0cyAwc3dhcHMKLSs8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KLSsKLStSdW4gdGhlIGNvbW1hbmQgYDxTQU1QPmxzIC1GczwvU0FNUD4nIGFuZCBzaG93IGp1c3QgdGhlIHVzZXIsIHN5c3RlbSwgYW5kCi0rd2FsbC1jbG9jayB0aW1lOgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+ZWckIHRpbWUgLWYgJnF1b3Q7XHQlRSByZWFsLFx0JVUgdXNlcixcdCVTIHN5cyZxdW90OyBscyAtRnMKLSt0b3RhbCAxNgotKzEgYWNjb3VudC8gICAgICAxIGRiLyAgICAgICAgICAgMSBtYWlsLyAgICAgICAgIDEgcnVuLwotKzEgYmFja3Vwcy8gICAgICAxIGVtYWNzLyAgICAgICAgMSBtc2dzLyAgICAgICAgIDEgcndoby8KLSsxIGNyYXNoLyAgICAgICAgMSBnYW1lcy8gICAgICAgIDEgcHJlc2VydmUvICAgICAxIHNwb29sLwotKzEgY3Jvbi8gICAgICAgICAxIGxvZy8gICAgICAgICAgMSBxdW90YXMvICAgICAgIDEgdG1wLwotKyAgICAgICAgMDowMC4wMyByZWFsLCAgIDAuMDAgdXNlciwgICAgICAwLjAxIHN5cwotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotK0VkaXQgdGhlIGZpbGUgYDxUVD4uYmFzaHJjPC9UVD4nIGFuZCBoYXZlIDxDT0RFPnRpbWU8L0NPREU+IGFwcGVuZCB0aGUgZWxhcHNlZCB0aW1lCi0rYW5kIG51bWJlciBvZiBzaWduYWxzIHRvIHRoZSBmaWxlIGA8VFQ+bG9nPC9UVD4nLCByZWFkaW5nIHRoZSBmb3JtYXQgc3RyaW5nCi0rZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgPENPREU+VElNRTwvQ09ERT46Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgZXhwb3J0IFRJTUU9JnF1b3Q7XHQlRSxcdCVrJnF1b3Q7ICMgSWYgdXNpbmcgYmFzaCBvciBrc2gKLStlZyQgc2V0ZW52IFRJTUUgJnF1b3Q7XHQlRSxcdCVrJnF1b3Q7ICMgSWYgdXNpbmcgY3NoIG9yIHRjc2gKLStlZyQgdGltZSAtYSAtbyBsb2cgZW1hY3MgLmJhc2hyYwotK2VnJCBjYXQgbG9nCi0rICAgICAgICAwOjE2LjU1LCAgICAgICAgNzI2Ci0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rUnVuIHRoZSBjb21tYW5kIGA8U0FNUD5zbGVlcCA0PC9TQU1QPicgYW5kIHNob3cgYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBpdAotK3ZlcmJvc2VseToKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCB0aW1lIC12IHNsZWVwIDQKLSsgICAgICAgIENvbW1hbmQgYmVpbmcgdGltZWQ6ICZxdW90O3NsZWVwIDQmcXVvdDsKLSsgICAgICAgIFVzZXIgdGltZSAoc2Vjb25kcyk6IDAuMDAKLSsgICAgICAgIFN5c3RlbSB0aW1lIChzZWNvbmRzKTogMC4wNQotKyAgICAgICAgUGVyY2VudCBvZiBDUFUgdGhpcyBqb2IgZ290OiAxJQotKyAgICAgICAgRWxhcHNlZCAod2FsbCBjbG9jaykgdGltZSAoaDptbTpzcyBvciBtOnNzKTogMDowNC4yNgotKyAgICAgICAgQXZlcmFnZSBzaGFyZWQgdGV4dCBzaXplIChrYnl0ZXMpOiAzNgotKyAgICAgICAgQXZlcmFnZSB1bnNoYXJlZCBkYXRhIHNpemUgKGtieXRlcyk6IDI0Ci0rICAgICAgICBBdmVyYWdlIHN0YWNrIHNpemUgKGtieXRlcyk6IDAKLSsgICAgICAgIEF2ZXJhZ2UgdG90YWwgc2l6ZSAoa2J5dGVzKTogNjAKLSsgICAgICAgIE1heGltdW0gcmVzaWRlbnQgc2V0IHNpemUgKGtieXRlcyk6IDMyCi0rICAgICAgICBBdmVyYWdlIHJlc2lkZW50IHNldCBzaXplIChrYnl0ZXMpOiAyNAotKyAgICAgICAgTWFqb3IgKHJlcXVpcmluZyBJL08pIHBhZ2UgZmF1bHRzOiAzCi0rICAgICAgICBNaW5vciAocmVjbGFpbWluZyBhIGZyYW1lKSBwYWdlIGZhdWx0czogMAotKyAgICAgICAgVm9sdW50YXJ5IGNvbnRleHQgc3dpdGNoZXM6IDExCi0rICAgICAgICBJbnZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzOiAwCi0rICAgICAgICBTd2FwczogMAotKyAgICAgICAgRmlsZSBzeXN0ZW0gaW5wdXRzOiAzCi0rICAgICAgICBGaWxlIHN5c3RlbSBvdXRwdXRzOiAxCi0rICAgICAgICBTb2NrZXQgbWVzc2FnZXMgc2VudDogMAotKyAgICAgICAgU29ja2V0IG1lc3NhZ2VzIHJlY2VpdmVkOiAwCi0rICAgICAgICBTaWduYWxzIGRlbGl2ZXJlZDogMQotKyAgICAgICAgUGFnZSBzaXplIChieXRlcyk6IDQwOTYKLSsgICAgICAgIEV4aXQgc3RhdHVzOiAwCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rPEEgTkFNRT0iQWNjdXJhY3kiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDMTAiPjwvQT4KLSs8VEFCTEUgQ0VMTFBBRERJTkc9MSBDRUxMU1BBQ0lORz0xIEJPUkRFUj0wPgotKzxUUj48VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzkiPiAmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzExIj4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjUgQWNjdXJhY3kgPC9IMj4KLSs8IS0tZG9jaWQ6OlNFQzEwOjotLT4KLSs8UD4KLSsKLStUaGUgZWxhcHNlZCB0aW1lIGlzIG5vdCBjb2xsZWN0ZWQgYXRvbWljYWxseSB3aXRoIHRoZSBleGVjdXRpb24gb2YgdGhlCi0rcHJvZ3JhbTsgYXMgYSByZXN1bHQsIGluIGJpemFycmUgY2lyY3Vtc3RhbmNlcyAoaWYgdGhlIDxDT0RFPnRpbWU8L0NPREU+Ci0rY29tbWFuZCBnZXRzIHN0b3BwZWQgb3Igc3dhcHBlZCBvdXQgaW4gYmV0d2VlbiB3aGVuIHRoZSBwcm9ncmFtIGJlaW5nCi0rdGltZWQgZXhpdHMgYW5kIHdoZW4gPENPREU+dGltZTwvQ09ERT4gY2FsY3VsYXRlcyBob3cgbG9uZyBpdCB0b29rIHRvIHJ1biksIGl0Ci0rY291bGQgYmUgbXVjaCBsYXJnZXIgdGhhbiB0aGUgYWN0dWFsIGV4ZWN1dGlvbiB0aW1lLgotKzwvUD4KLSs8UD4KLSsKLStXaGVuIHRoZSBydW5uaW5nIHRpbWUgb2YgYSBjb21tYW5kIGlzIHZlcnkgbmVhcmx5IHplcm8sIHNvbWUgdmFsdWVzCi0rKGUuZy4sIHRoZSBwZXJjZW50YWdlIG9mIENQVSB1c2VkKSBtYXkgYmUgcmVwb3J0ZWQgYXMgZWl0aGVyIHplcm8gKHdoaWNoCi0raXMgd3JvbmcpIG9yIGEgcXVlc3Rpb24gbWFyay4KLSs8L1A+Ci0rPFA+Ci0rCi0rTW9zdCBpbmZvcm1hdGlvbiBzaG93biBieSA8Q09ERT50aW1lPC9DT0RFPiBpcyBkZXJpdmVkIGZyb20gdGhlIDxDT0RFPndhaXQzPC9DT0RFPgotK3N5c3RlbSBjYWxsLiAgVGhlIG51bWJlcnMgYXJlIG9ubHkgYXMgZ29vZCBhcyB0aG9zZSByZXR1cm5lZCBieQotKzxDT0RFPndhaXQzPC9DT0RFPi4gIE1hbnkgc3lzdGVtcyBkbyBub3QgbWVhc3VyZSBhbGwgb2YgdGhlIHJlc291cmNlcyB0aGF0Ci0rPENPREU+dGltZTwvQ09ERT4gY2FuIHJlcG9ydCBvbjsgdGhvc2UgcmVzb3VyY2VzIGFyZSByZXBvcnRlZCBhcyB6ZXJvLiAgVGhlCi0rc3lzdGVtcyB0aGF0IG1lYXN1cmUgbW9zdCBvciBhbGwgb2YgdGhlIHJlc291cmNlcyBhcmUgYmFzZWQgb24gNC4yIG9yCi0rNC4zQlNELiAgTGF0ZXIgQlNEIHJlbGVhc2VzIHVzZSBkaWZmZXJlbnQgbWVtb3J5IG1hbmFnZW1lbnQgY29kZSB0aGF0Ci0rbWVhc3VyZXMgZmV3ZXIgcmVzb3VyY2VzLgotKzwvUD4KLSs8UD4KLSsKLStPbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUgYSA8Q09ERT53YWl0MzwvQ09ERT4gY2FsbCB0aGF0IHJldHVybnMgc3RhdHVzCi0raW5mb3JtYXRpb24sIHRoZSA8Q09ERT50aW1lczwvQ09ERT4gc3lzdGVtIGNhbGwgaXMgdXNlZCBpbnN0ZWFkLiAgSXQgcHJvdmlkZXMKLSttdWNoIGxlc3MgaW5mb3JtYXRpb24gdGhhbiA8Q09ERT53YWl0MzwvQ09ERT4sIHNvIG9uIHRob3NlIHN5c3RlbXMgPENPREU+dGltZTwvQ09ERT4KLStyZXBvcnRzIG1vc3Qgb2YgdGhlIHJlc291cmNlcyBhcyB6ZXJvLgotKzwvUD4KLSs8UD4KLSsKLStUaGUgYDxTQU1QPiVJPC9TQU1QPicgYW5kIGA8U0FNUD4lTzwvU0FNUD4nIHZhbHVlcyBhcmUgYWxsZWdlZGx5IG9ubHkgJnF1b3Q7cmVhbCZxdW90OyBpbnB1dAotK2FuZCBvdXRwdXQgYW5kIGRvIG5vdCBpbmNsdWRlIHRob3NlIHN1cHBsaWVkIGJ5IGNhY2hpbmcgZGV2aWNlcy4gIFRoZQotK21lYW5pbmcgb2YgJnF1b3Q7cmVhbCZxdW90OyBJL08gcmVwb3J0ZWQgYnkgYDxTQU1QPiVJPC9TQU1QPicgYW5kIGA8U0FNUD4lTzwvU0FNUD4nIG1heSBiZQotK211ZGRsZWQgZm9yIHdvcmtzdGF0aW9ucywgZXNwZWNpYWxseSBkaXNrbGVzcyBvbmVzLgotKzwvUD4KLSs8UD4KLSsKLSs8QSBOQU1FPSJJbnZva2luZyB0aW1lIj48L0E+Ci0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQzExIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyBdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDI+IDEuNiBSdW5uaW5nIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBDb21tYW5kIDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUMxMTo6LS0+Ci0rPFA+Ci0rCi0rVGhlIGZvcm1hdCBvZiB0aGUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCBpczoKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPnRpbWUgW29wdGlvbjxzbWFsbD4uLi48L3NtYWxsPl0gPFZBUj5jb21tYW5kPC9WQVI+IFs8VkFSPmFyZzwvVkFSPjxzbWFsbD4uLi48L3NtYWxsPl0KLSs8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KLSsKLSs8QSBOQU1FPSJJRFg1Ij48L0E+Ci0rPENPREU+dGltZTwvQ09ERT4gcnVucyB0aGUgcHJvZ3JhbSA8VkFSPmNvbW1hbmQ8L1ZBUj4sIHdpdGggYW55IGdpdmVuIGFyZ3VtZW50cwotKzxWQVI+YXJnPC9WQVI+PHNtYWxsPi4uLjwvc21hbGw+LiAgV2hlbiA8VkFSPmNvbW1hbmQ8L1ZBUj4gZmluaXNoZXMsIDxDT0RFPnRpbWU8L0NPREU+IGRpc3BsYXlzCi0raW5mb3JtYXRpb24gYWJvdXQgcmVzb3VyY2VzIHVzZWQgYnkgPFZBUj5jb21tYW5kPC9WQVI+IChvbiB0aGUgc3RhbmRhcmQgZXJyb3IKLStvdXRwdXQsIGJ5IGRlZmF1bHQpLiAgSWYgPFZBUj5jb21tYW5kPC9WQVI+IGV4aXRzIHdpdGggbm9uLXplcm8gc3RhdHVzIG9yIGlzCi0rdGVybWluYXRlZCBieSBhIHNpZ25hbCwgPENPREU+dGltZTwvQ09ERT4gZGlzcGxheXMgYSB3YXJuaW5nIG1lc3NhZ2UgYW5kIHRoZQotK2V4aXQgc3RhdHVzIG9yIHNpZ25hbCBudW1iZXIuCi0rPC9QPgotKzxQPgotKwotK09wdGlvbnMgdG8gPENPREU+dGltZTwvQ09ERT4gbXVzdCBhcHBlYXIgb24gdGhlIGNvbW1hbmQgbGluZSBiZWZvcmUKLSs8VkFSPmNvbW1hbmQ8L1ZBUj4uICBBbnl0aGluZyBvbiB0aGUgY29tbWFuZCBsaW5lIGFmdGVyIDxWQVI+Y29tbWFuZDwvVkFSPiBpcwotK3Bhc3NlZCBhcyBhcmd1bWVudHMgdG8gPFZBUj5jb21tYW5kPC9WQVI+LgotKzwvUD4KLSs8UD4KLSsKLSs8L1A+Ci0rPERMIENPTVBBQ1Q+Ci0rPERUPjxDT0RFPi1vIDxWQVI+ZmlsZTwvVkFSPjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tb3V0cHV0PTxWQVI+ZmlsZTwvVkFSPjwvQ09ERT4KLSs8REQ+V3JpdGUgdGhlIHJlc291cmNlIHVzZSBzdGF0aXN0aWNzIHRvIDxWQVI+ZmlsZTwvVkFSPi4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi1hPC9DT0RFPgotKzxERD48RFQ+PENPREU+LS1hcHBlbmQ8L0NPREU+Ci0rPEREPjxFTT5BcHBlbmQ8L0VNPiB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0rb2Ygb3ZlcndyaXRpbmcgaXQuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tZiA8VkFSPmZvcm1hdDwvVkFSPjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tZm9ybWF0PTxWQVI+Zm9ybWF0PC9WQVI+PC9DT0RFPgotKzxERD5Vc2UgPFZBUj5mb3JtYXQ8L1ZBUj4gYXMgdGhlIGZvcm1hdCBzdHJpbmcuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tLWhlbHA8L0NPREU+Ci0rPEREPlByaW50IGEgc3VtbWFyeSBvZiB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gPENPREU+dGltZTwvQ09ERT4gYW5kIGV4aXQuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tcDwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tcG9ydGFiaWxpdHk8L0NPREU+Ci0rPEREPlVzZSB0aGUgUE9TSVggZm9ybWF0LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LXY8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLXZlcmJvc2U8L0NPREU+Ci0rPEREPjxBIE5BTUU9IklEWDYiPjwvQT4KLStVc2UgdGhlIGJ1aWx0LWluIHZlcmJvc2UgZm9ybWF0LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LVY8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLXZlcnNpb248L0NPREU+Ci0rPEREPjxBIE5BTUU9IklEWDciPjwvQT4KLStQcmludCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgPENPREU+dGltZTwvQ09ERT4gYW5kIGV4aXQuCi0rPC9ETD4KLSs8UD4KLSsKLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDX0NvbnRlbnRzIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMT5UYWJsZSBvZiBDb250ZW50czwvSDE+Ci0rPEJMT0NLUVVPVEU+Ci0rPEEgTkFNRT0iVE9DMSIgSFJFRj0idGltZS5odG1sI1NFQzEiPjEuIE1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZTwvQT4KLSs8QlI+Ci0rPEJMT0NLUVVPVEU+Ci0rPEEgTkFNRT0iVE9DMiIgSFJFRj0idGltZS5odG1sI1NFQzIiPjEuMSBTZXR0aW5nIHRoZSBPdXRwdXQgRm9ybWF0PC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0MzIiBIUkVGPSJ0aW1lLmh0bWwjU0VDMyI+MS4yIFRoZSBGb3JtYXQgU3RyaW5nPC9BPgotKzxCUj4KLSs8QkxPQ0tRVU9URT4KLSs8QSBOQU1FPSJUT0M0IiBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+MS4yLjEgVGltZSBSZXNvdXJjZXM8L0E+Ci0rPEJSPgotKzxBIE5BTUU9IlRPQzUiIEhSRUY9InRpbWUuaHRtbCNTRUM1Ij4xLjIuMiBNZW1vcnkgUmVzb3VyY2VzPC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0M2IiBIUkVGPSJ0aW1lLmh0bWwjU0VDNiI+MS4yLjMgSS9PIFJlc291cmNlczwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DNyIgSFJFRj0idGltZS5odG1sI1NFQzciPjEuMi40IENvbW1hbmQgSW5mbzwvQT4KLSs8QlI+Ci0rPC9CTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzgiIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4xLjMgUmVkaXJlY3RpbmcgT3V0cHV0PC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0M5IiBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+MS40IEV4YW1wbGVzPC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0MxMCIgSFJFRj0idGltZS5odG1sI1NFQzEwIj4xLjUgQWNjdXJhY3k8L0E+Ci0rPEJSPgotKzxBIE5BTUU9IlRPQzExIiBIUkVGPSJ0aW1lLmh0bWwjU0VDMTEiPjEuNiBSdW5uaW5nIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBDb21tYW5kPC9BPgotKzxCUj4KLSs8L0JMT0NLUVVPVEU+Ci0rPC9CTE9DS1FVT1RFPgotKzxIUiBTSVpFPTE+Ci0rPEEgTkFNRT0iU0VDX09WRVJWSUVXIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMT5TaG9ydCBUYWJsZSBvZiBDb250ZW50czwvSDE+Ci0rPEJMT0NLUVVPVEU+Ci0rPEEgTkFNRT0iVE9DMSIgSFJFRj0idGltZS5odG1sI1NFQzEiPjEuIE1lYXN1cmluZyBQcm9ncmFtIFJlc291cmNlIFVzZTwvQT4KLSs8QlI+Ci0rCi0rPC9CTE9DS1FVT1RFPgotKzxIUiBTSVpFPTE+Ci0rPEEgTkFNRT0iU0VDX0Fib3V0Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMT5BYm91dCB0aGlzIGRvY3VtZW50PC9IMT4KLStUaGlzIGRvY3VtZW50IHdhcyBnZW5lcmF0ZWQKLStieSAKLSt1c2luZyA8QSBIUkVGPSJodHRwOi8vdGV4aTJodG1sLmN2c2hvbWUub3JnIj48ST50ZXhpMmh0bWw8L0k+PC9BPgotKzxQPjwvUD4KLStUaGUgYnV0dG9ucyBpbiB0aGUgbmF2aWdhdGlvbiBwYW5lbHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmc6Ci0rPFA+PC9QPgotKzx0YWJsZSBib3JkZXIgPSAiMSI+Ci0rPFRSPgotKzxUSD4gQnV0dG9uIDwvVEg+Ci0rPFRIPiBOYW1lIDwvVEg+Ci0rPFRIPiBHbyB0byA8L1RIPgotKzxUSD4gRnJvbSAxLjIuMyBnbyB0bzwvVEg+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbICZsdDsgXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStCYWNrCi0rPC9URD4KLSs8VEQ+Ci0rcHJldmlvdXMgc2VjdGlvbiBpbiByZWFkaW5nIG9yZGVyCi0rPC9URD4KLSs8VEQ+Ci0rMS4yLjIKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgWyAmZ3Q7IF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rRm9yd2FyZAotKzwvVEQ+Ci0rPFREPgotK25leHQgc2VjdGlvbiBpbiByZWFkaW5nIG9yZGVyCi0rPC9URD4KLSs8VEQ+Ci0rMS4yLjQKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgWyAmbHQ7Jmx0OyBdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK0Zhc3RCYWNrCi0rPC9URD4KLSs8VEQ+Ci0rYmVnaW5uaW5nIG9mIHRoaXMgY2hhcHRlciBvciBwcmV2aW91cyBjaGFwdGVyCi0rPC9URD4KLSs8VEQ+Ci0rMQotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbIFVwIF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rVXAKLSs8L1REPgotKzxURD4KLSt1cCBzZWN0aW9uCi0rPC9URD4KLSs8VEQ+Ci0rMS4yCi0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFsgJmd0OyZndDsgXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStGYXN0Rm9yd2FyZAotKzwvVEQ+Ci0rPFREPgotK25leHQgY2hhcHRlcgotKzwvVEQ+Ci0rPFREPgotKzIKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgW1RvcF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rVG9wCi0rPC9URD4KLSs8VEQ+Ci0rY292ZXIgKHRvcCkgb2YgZG9jdW1lbnQKLSs8L1REPgotKzxURD4KLSsgJm5ic3A7IAotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbQ29udGVudHNdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK0NvbnRlbnRzCi0rPC9URD4KLSs8VEQ+Ci0rdGFibGUgb2YgY29udGVudHMKLSs8L1REPgotKzxURD4KLSsgJm5ic3A7IAotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbSW5kZXhdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK0luZGV4Ci0rPC9URD4KLSs8VEQ+Ci0rY29uY2VwdCBpbmRleAotKzwvVEQ+Ci0rPFREPgotKyAmbmJzcDsgCi0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFsgPyBdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK0Fib3V0Ci0rPC9URD4KLSs8VEQ+Ci0rdGhpcyBwYWdlCi0rPC9URD4KLSs8VEQ+Ci0rICZuYnNwOyAKLSs8L1REPgotKzwvVFI+Ci0rPC9UQUJMRT4KLSsgICAgPFA+Ci0rICAgICAgd2hlcmUgdGhlIDxTVFJPTkc+IEV4YW1wbGUgPC9TVFJPTkc+IGFzc3VtZXMgdGhhdCB0aGUgY3VycmVudCBwb3NpdGlvbgotKyAgICAgIGlzIGF0IDxTVFJPTkc+IFN1YnN1YnNlY3Rpb24gT25lLVR3by1UaHJlZSA8L1NUUk9ORz4gb2YgYSBkb2N1bWVudCBvZgotKyAgICAgIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOjwvUD4KLSsgICAgPFVMPgotKyAgICAgIDxMST4gMS4gU2VjdGlvbiBPbmUKLSsgICAgICAgIDxVTD4KLSsgICAgICAgICAgPExJPjEuMSBTdWJzZWN0aW9uIE9uZS1PbmUKLSsgICAgICAgICAgICA8VUw+Ci0rICAgICAgICAgICAgICA8TEk+Li4uPC9MST4KLSsgICAgICAgICAgICA8L1VMPgotKyAgICAgICAgICA8TEk+MS4yIFN1YnNlY3Rpb24gT25lLVR3bwotKyAgICAgICAgICAgIDxVTD4KLSsgICAgICAgICAgICAgIDxMST4xLjIuMSBTdWJzdWJzZWN0aW9uIE9uZS1Ud28tT25lPC9MST4KLSsgICAgICAgICAgICAgIDxMST4xLjIuMiBTdWJzdWJzZWN0aW9uIE9uZS1Ud28tVHdvPC9MST4KLSsgICAgICAgICAgICAgIDxMST4xLjIuMyBTdWJzdWJzZWN0aW9uIE9uZS1Ud28tVGhyZWUgJm5ic3A7ICZuYnNwOwotKyAgICAgICAgICAgICAgICA8U1RST05HPiZsdDs9PSBDdXJyZW50IFBvc2l0aW9uIDwvU1RST05HPjwvTEk+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjQgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLUZvdXI8L0xJPgotKyAgICAgICAgICAgIDwvVUw+Ci0rICAgICAgICAgIDwvTEk+Ci0rICAgICAgICAgIDxMST4xLjMgU3Vic2VjdGlvbiBPbmUtVGhyZWUKLSsgICAgICAgICAgICA8VUw+Ci0rICAgICAgICAgICAgICA8TEk+Li4uPC9MST4KLSsgICAgICAgICAgICA8L1VMPgotKyAgICAgICAgICA8L0xJPgotKyAgICAgICAgICA8TEk+MS40IFN1YnNlY3Rpb24gT25lLUZvdXI8L0xJPgotKyAgICAgICAgPC9VTD4KLSsgICAgICA8L0xJPgotKyAgICA8L1VMPgotKwotKzxIUiBTSVpFPTE+Ci0rPEJSPgotKzxGT05UIFNJWkU9Ii0xIj4KLStUaGlzIGRvY3VtZW50IHdhcyBnZW5lcmF0ZWQKLStieSA8ST5yb290PC9JPiBvbiA8ST5TZXB0ZW1iZXIsIDEgMjAwMzwvST4KLSt1c2luZyA8QSBIUkVGPSJodHRwOi8vdGV4aTJodG1sLmN2c2hvbWUub3JnIj48ST50ZXhpMmh0bWw8L0k+PC9BPgotKzwvRk9OVD4KLSsKLSs8L0JPRFk+Ci0rPC9IVE1MPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjIwZDdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCB0aGF0IG1lYXN1cmVzIENQVSByZXNvdXJjZXMiCi1ERVNDUklQVElPTiA9ICJ0aW1lIG1lYXN1cmVzIG1hbnkgb2YgdGhlIENQVSByZXNvdXJjZXMsIHN1Y2ggYXMgdGltZSBhbmQgXAotbWVtb3J5LCB0aGF0IG90aGVyIHByb2dyYW1zIHVzZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGltZS8iCi1TRUNUSU9OID0gInV0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKLQotaW5oZXJpdCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAidGltZSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWVfMS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWVfMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmM1MzUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgdGltZS5pbmMKLQotUFIgPSAicjIiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90aW1lL3RpbWUtJHtQVn0udGFyLmd6IFwKLQkgICBmaWxlOi8vZGViaWFuLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTM4ZDJiOGIzNGIxY2EyNTljZjdiMDUzY2FhYzMyYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTM3ZWE3OWEyNTNiZjg1YTg1YWRhMmY3YzYzMmMxNGU0ODFhNWZkMjYyYTM2MmY2ZjRmZDU4ZTY4NjAxNDk2ZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjMxNDdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWVfMS44LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiVG9vbCB0aGF0IG1lYXN1cmVzIENQVSByZXNvdXJjZXMiCitERVNDUklQVElPTiA9ICJ0aW1lIG1lYXN1cmVzIG1hbnkgb2YgdGhlIENQVSByZXNvdXJjZXMsIHN1Y2ggYXMgdGltZSBhbmQgXAorbWVtb3J5LCB0aGF0IG90aGVyIHByb2dyYW1zIHVzZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGltZS8iCitTRUNUSU9OID0gInV0aWxzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitpbmhlcml0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ0aW1lIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90aW1lL3RpbWUtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGUwMGRjYjhjM2FiMTFjN2NmNWEwZDY5ODgyOGFjOTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGEyZjU0MDE1NTk2MWEzNWJhOWI4NGFlYzVlNzdlM2FlMzZjNzRjZWNiNDQ4NGRiNDU1OTYwNjAxYjdhMmUxYiIKKworaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMS1GaXgtTWFrZWZpbGUtcXVvdGluZy1idWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0OWZhMDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMS1GaXgtTWFrZWZpbGUtcXVvdGluZy1idWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotRnJvbSBiNTIwZDIwYjgxMjJhNzgzZjk5ZjA4ODc1OGI3OGQ5MjhmNzBlZTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6NDI6NDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IE1ha2VmaWxlIHF1b3RpbmcgYnVnCi0KLVByb2JsZW0gd2l0aCBJTlNUQUxMQVJHUyByZXBvcnRlZCBieSBaZWZyYW0gaW46Ci1odHRwczovL21tLmljYW5uLm9yZy9waXBlcm1haWwvdHovMjAxNy1PY3RvYmVyLzAyNTM2MC5odG1sCi1GaXggc2ltaWxhciBwcm9ibGVtcyB0b28uCi0qIE1ha2VmaWxlIChaSUNfSU5TVEFMTCwgVkFMSURBVEVfRU5WLCBDQywgaW5zdGFsbCkKLShJTlNUQUxMLCB2ZXJzaW9uLCBJTlNUQUxMQVJHUywgcmlnaHRfcG9zaXgsIHBvc2l4X3JpZ2h0KQotKGNoZWNrX3B1YmxpYyk6IFVzZSBhcG9zdHJvcGhlcyB0byBwcmV2ZW50IHVuZGVzaXJhYmxlCi1pbnRlcnByZXRhdGlvbiBvZiBuYW1lcyBieSB0aGUgc2hlbGwuICBXZSBzdGlsbCBkbyBub3Qgc3VwcG9ydAotZGlyZWN0b3J5IG5hbWVzIGNvbnRhaW5pbmcgYXBvc3Ryb3BoZXMgb3IgbmV3bGluZXMsIGJ1dCB0aGlzIGlzCi1nb29kIGVub3VnaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLSogTkVXUzogTWVudGlvbiB0aGlzLgotLS0tCi0gTWFrZWZpbGUgfCA2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gTkVXUyAgICAgfCAgOCArKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBjOTJlZGMwLi45NzY0OWNhIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMzEzLDcgKzMxMyw3IEBAIFpGTEFHUz0KLSAKLSAjIEhvdyB0byB1c2UgemljIHRvIGluc3RhbGwgdHogYmluYXJ5IGZpbGVzLgotIAotLVpJQ19JTlNUQUxMPQkkKFpJQykgLWQgJChERVNURElSKSQoVFpESVIpICQoTEVBUFNFQ09ORFMpCi0rWklDX0lOU1RBTEw9CSQoWklDKSAtZCAnJChERVNURElSKSQoVFpESVIpJyAkKExFQVBTRUNPTkRTKQotIAotICMgVGhlIG5hbWUgb2YgYSBQb3NpeC1jb21wbGlhbnQgJ2F3aycgb24geW91ciBzeXN0ZW0uCi0gQVdLPQkJYXdrCi1AQCAtMzQxLDggKzM0MSw4IEBAIFNHTUxfQ0FUQUxPR19GSUxFUz0gXAotIFZBTElEQVRFID0gbnNnbWxzCi0gVkFMSURBVEVfRkxBR1MgPSAtcyAtQiAtd2FsbCAtd25vLXVudXNlZC1wYXJhbQotIFZBTElEQVRFX0VOViA9IFwKLS0gIFNHTUxfQ0FUQUxPR19GSUxFUz0kKFNHTUxfQ0FUQUxPR19GSUxFUykgXAotLSAgU0dNTF9TRUFSQ0hfUEFUSD0kKFNHTUxfU0VBUkNIX1BBVEgpIFwKLSsgIFNHTUxfQ0FUQUxPR19GSUxFUz0nJChTR01MX0NBVEFMT0dfRklMRVMpJyBcCi0rICBTR01MX1NFQVJDSF9QQVRIPSckKFNHTUxfU0VBUkNIX1BBVEgpJyBcCi0gICBTUF9DSEFSU0VUX0ZJWEVEPVlFUyBcCi0gICBTUF9FTkNPRElORz1VVEYtOAotIAotQEAgLTM5Niw3ICszOTYsNyBAQCBHWklQRkxBR1M9CS05bgotICNNQUtFPQkJbWFrZQotIAotIGNjPQkJY2MKLS1DQz0JCSQoY2MpIC1EVFpESVI9XCIkKFRaRElSKVwiCi0rQ0M9CQkkKGNjKSAtRFRaRElSPSciJChUWkRJUikiJwotIAotIEFSPQkJYXIKLSAKLUBAIC00NzMsMjkgKzQ3MywyOSBAQCBhbGw6CQl0enNlbGVjdCB5ZWFyaXN0eXBlIHppYyB6ZHVtcCBsaWJ0ei5hICQoVEFCREFUQSkKLSBBTEw6CQlhbGwgZGF0ZSAkKEVOQ0hJTEFEQSkKLSAKLSBpbnN0YWxsOglhbGwgJChEQVRBKSAkKFJFRE8pICQoTUFOUykKLS0JCW1rZGlyIC1wICQoREVTVERJUikkKEVUQ0RJUikgJChERVNURElSKSQoVFpESVIpIFwKLS0JCQkkKERFU1RESVIpJChMSUJESVIpIFwKLS0JCQkkKERFU1RESVIpJChNQU5ESVIpL21hbjMgJChERVNURElSKSQoTUFORElSKS9tYW41IFwKLS0JCQkkKERFU1RESVIpJChNQU5ESVIpL21hbjgKLSsJCW1rZGlyIC1wICckKERFU1RESVIpJChFVENESVIpJyAnJChERVNURElSKSQoVFpESVIpJyBcCi0rCQkJJyQoREVTVERJUikkKExJQkRJUiknIFwKLSsJCQknJChERVNURElSKSQoTUFORElSKS9tYW4zJyAnJChERVNURElSKSQoTUFORElSKS9tYW41JyBcCi0rCQkJJyQoREVTVERJUikkKE1BTkRJUikvbWFuOCcKLSAJCSQoWklDX0lOU1RBTEwpIC1sICQoTE9DQUxUSU1FKSAtcCAkKFBPU0lYUlVMRVMpCi0tCQljcCAtZiAkKFRBQkRBVEEpICQoREVTVERJUikkKFRaRElSKS8uCi0tCQljcCB0enNlbGVjdCB6aWMgemR1bXAgJChERVNURElSKSQoRVRDRElSKS8uCi0tCQljcCBsaWJ0ei5hICQoREVTVERJUikkKExJQkRJUikvLgotLQkJJChSQU5MSUIpICQoREVTVERJUikkKExJQkRJUikvbGlidHouYQotLQkJY3AgLWYgbmV3Y3RpbWUuMyBuZXd0enNldC4zICQoREVTVERJUikkKE1BTkRJUikvbWFuMy8uCi0tCQljcCAtZiB0emZpbGUuNSAkKERFU1RESVIpJChNQU5ESVIpL21hbjUvLgotLQkJY3AgLWYgdHpzZWxlY3QuOCB6ZHVtcC44IHppYy44ICQoREVTVERJUikkKE1BTkRJUikvbWFuOC8uCi0rCQljcCAtZiAkKFRBQkRBVEEpICckKERFU1RESVIpJChUWkRJUikvLicKLSsJCWNwIHR6c2VsZWN0IHppYyB6ZHVtcCAnJChERVNURElSKSQoRVRDRElSKS8uJwotKwkJY3AgbGlidHouYSAnJChERVNURElSKSQoTElCRElSKS8uJwotKwkJJChSQU5MSUIpICckKERFU1RESVIpJChMSUJESVIpL2xpYnR6LmEnCi0rCQljcCAtZiBuZXdjdGltZS4zIG5ld3R6c2V0LjMgJyQoREVTVERJUikkKE1BTkRJUikvbWFuMy8uJwotKwkJY3AgLWYgdHpmaWxlLjUgJyQoREVTVERJUikkKE1BTkRJUikvbWFuNS8uJwotKwkJY3AgLWYgdHpzZWxlY3QuOCB6ZHVtcC44IHppYy44ICckKERFU1RESVIpJChNQU5ESVIpL21hbjgvLicKLSAKLSBJTlNUQUxMOglBTEwgaW5zdGFsbCBkYXRlLjEKLS0JCW1rZGlyIC1wICQoREVTVERJUikkKEJJTkRJUikgJChERVNURElSKSQoTUFORElSKS9tYW4xCi0tCQljcCBkYXRlICQoREVTVERJUikkKEJJTkRJUikvLgotLQkJY3AgLWYgZGF0ZS4xICQoREVTVERJUikkKE1BTkRJUikvbWFuMS8uCi0rCQlta2RpciAtcCAnJChERVNURElSKSQoQklORElSKScgJyQoREVTVERJUikkKE1BTkRJUikvbWFuMScKLSsJCWNwIGRhdGUgJyQoREVTVERJUikkKEJJTkRJUikvLicKLSsJCWNwIC1mIGRhdGUuMSAnJChERVNURElSKSQoTUFORElSKS9tYW4xLy4nCi0gCi0gdmVyc2lvbjoJJChWRVJTSU9OX0RFUFMpCi0gCQl7ICh0eXBlIGdpdCkgPi9kZXYvbnVsbCAyPiYxICYmIFwKLSAJCSAgVj1gZ2l0IGRlc2NyaWJlIC0tbWF0Y2ggJ1swLTldWzAtOV1bMC05XVswLTldW2Etel0qJyBcCi0gCQkJCS0tYWJicmV2PTcgLS1kaXJ0eWAgfHwgXAotLQkJICBWPSQoVkVSU0lPTik7IH0gJiYgXAotKwkJICBWPSckKFZFUlNJT04pJzsgfSAmJiBcCi0gCQlwcmludGYgJyVzXG4nICIkJFYiID4kQC5vdXQKLSAJCW12ICRALm91dCAkQAotIAotQEAgLTUyOSwxMiArNTI5LDEyIEBAIGxlYXBzZWNvbmRzOgkkKExFQVBfREVQUykKLSAjIEFyZ3VtZW50cyB0byBwYXNzIHRvIHN1Ym1ha2VzIG9mIGluc3RhbGxfZGF0YS4KLSAjIFRoZXkgY2FuIGJlIG92ZXJyaWRkZW4gYnkgbGF0ZXIgc3VibWFrZSBhcmd1bWVudHMuCi0gSU5TVEFMTEFSR1MgPSBcCi0tIEJBQ0tXQVJEPSQoQkFDS1dBUkQpIFwKLS0gREVTVERJUj0kKERFU1RESVIpIFwKLSsgQkFDS1dBUkQ9JyQoQkFDS1dBUkQpJyBcCi0rIERFU1RESVI9JyQoREVTVERJUiknIFwKLSAgTEVBUFNFQ09ORFM9JyQoTEVBUFNFQ09ORFMpJyBcCi0gIFBBQ0tSQVREQVRBPSckKFBBQ0tSQVREQVRBKScgXAotLSBUWkRJUj0kKFRaRElSKSBcCi0tIFlFQVJJU1RZUEU9JChZRUFSSVNUWVBFKSBcCi0rIFRaRElSPSckKFRaRElSKScgXAotKyBZRUFSSVNUWVBFPSckKFlFQVJJU1RZUEUpJyBcCi0gIFpJQz0nJChaSUMpJwotIAotICMgJ21ha2UgaW5zdGFsbF9kYXRhJyBpbnN0YWxscyBvbmUgc2V0IG9mIHR6IGJpbmFyeSBmaWxlcy4KLUBAIC01NTgsMTYgKzU1OCwxNiBAQCByaWdodF9vbmx5OgotICMgWW91IG11c3QgcmVwbGFjZSBhbGwgb2YgJChUWkRJUikgdG8gc3dpdGNoIGZyb20gbm90IHVzaW5nIGxlYXAgc2Vjb25kcwotICMgdG8gdXNpbmcgdGhlbSwgb3IgdmljZSB2ZXJzYS4KLSByaWdodF9wb3NpeDoJcmlnaHRfb25seQotLQkJcm0gLWZyICQoREVTVERJUikkKFRaRElSKS1sZWFwcwotLQkJbG4gLXMgJChUWkRJUl9CQVNFTkFNRSkgJChERVNURElSKSQoVFpESVIpLWxlYXBzIHx8IFwKLS0JCSAgJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1sZWFwcyByaWdodF9vbmx5Ci0tCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSQoVFpESVIpLXBvc2l4IHBvc2l4X29ubHkKLSsJCXJtIC1mciAnJChERVNURElSKSQoVFpESVIpLWxlYXBzJwotKwkJbG4gLXMgJyQoVFpESVJfQkFTRU5BTUUpJyAnJChERVNURElSKSQoVFpESVIpLWxlYXBzJyB8fCBcCi0rCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JyQoVFpESVIpLWxlYXBzJyByaWdodF9vbmx5Ci0rCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1wb3NpeCcgcG9zaXhfb25seQotIAotIHBvc2l4X3JpZ2h0Oglwb3NpeF9vbmx5Ci0tCQlybSAtZnIgJChERVNURElSKSQoVFpESVIpLXBvc2l4Ci0tCQlsbiAtcyAkKFRaRElSX0JBU0VOQU1FKSAkKERFU1RESVIpJChUWkRJUiktcG9zaXggfHwgXAotLQkJICAkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSQoVFpESVIpLXBvc2l4IHBvc2l4X29ubHkKLS0JCSQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JChUWkRJUiktbGVhcHMgcmlnaHRfb25seQotKwkJcm0gLWZyICckKERFU1RESVIpJChUWkRJUiktcG9zaXgnCi0rCQlsbiAtcyAnJChUWkRJUl9CQVNFTkFNRSknICckKERFU1RESVIpJChUWkRJUiktcG9zaXgnIHx8IFwKLSsJCSAgJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0nJChUWkRJUiktcG9zaXgnIHBvc2l4X29ubHkKLSsJCSQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JyQoVFpESVIpLWxlYXBzJyByaWdodF9vbmx5Ci0gCi0gIyBUaGlzIG9ic29sZXNjZW50IHJ1bGUgaXMgcHJlc2VudCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAotICMgdHogcmVsZWFzZXMgMjAxNGcgdGhyb3VnaCAyMDE1Zy4gIEl0IHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkuCi1AQCAtNzY0LDcgKzc2NCw3IEBAIHNldC10aW1lc3RhbXBzLm91dDogJChFTkNISUxBREEpCi0gCi0gY2hlY2tfcHVibGljOgotIAkJJChNQUtFKSBtYWludGFpbmVyLWNsZWFuCi0tCQkkKE1BS0UpICJDRkxBR1M9JChHQ0NfREVCVUdfRkxBR1MpIiBBTEwKLSsJCSQoTUFLRSkgQ0ZMQUdTPSckKEdDQ19ERUJVR19GTEFHUyknIEFMTAotIAkJbWtkaXIgLXAgcHVibGljLmRpcgotIAkJZm9yIGkgaW4gJChUREFUQSkgdHpkYXRhLnppOyBkbyBcCi0gCQkgICQoemljKSAtdiAtZCBwdWJsaWMuZGlyICQkaSAyPiYxIHx8IGV4aXQ7IFwKLWRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwotaW5kZXggYmQyYmVjMi4uNzVhYjA5NSAxMDA2NDQKLS0tLSBhL05FV1MKLSsrKyBiL05FV1MKLUBAIC0xLDUgKzEsMTMgQEAKLSBOZXdzIGZvciB0aGUgdHogZGF0YWJhc2UKLSAKLStVbnJlbGVhc2VkLCBleHBlcmltZW50YWwgY2hhbmdlcwotKwotKyAgQ2hhbmdlcyB0byBidWlsZCBwcm9jZWR1cmUKLSsKLSsgICAgVGhlIE1ha2VmaWxlIG5vdyBxdW90ZXMgdmFsdWVzIGxpa2UgQkFDS1dBUkQgbW9yZSBjYXJlZnVsbHkgd2hlbgotKyAgICBwYXNzaW5nIHRoZW0gdG8gdGhlIHNoZWxsLiAgKFByb2JsZW0gcmVwb3J0ZWQgYnkgWmVmcmFtLikKLSsKLSsKLSBSZWxlYXNlIDIwMTdjIC0gMjAxNy0xMC0yMCAxNDo0OTozNCAtMDcwMAotIAotICAgQnJpZWZseToKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMi1Qb3J0LXpkdW1wLXRvLUM5MC1zbnByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YWZlNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMi1Qb3J0LXpkdW1wLXRvLUM5MC1zbnByaW50Zi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi1Gcm9tIGUyMzFkYTRmYjJiZWIxN2M2MGI0YjFhNWMyNzYzNjZkNmE2ZTQzM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxNzo1ODozNiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBQb3J0IHpkdW1wIHRvIEM5MCArIHNucHJpbnRmCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVByb2JsZW0gcmVwb3J0ZWQgYnkgSm9uIFNrZWV0IGluOgotaHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTctT2N0b2Jlci8wMjUzNjIuaHRtbAotKiBORVdTOiBNZW50aW9uIHRoaXMuCi0qIHpkdW1wLmMgKG15X3NucHJpbnRmKTogTmV3IG1hY3JvIG9yIGZ1bmN0aW9uLiAgSWYgYSBtYWNybywgaXQgaXMKLWp1c3Qgc25wcmludGYuICBJZiBhIGZ1bmN0aW9uLCBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgb2xkIHNucHJpbnRmCi1zdGF0aWMgZnVuY3Rpb24sIHdpdGggYW4gQVRUUklCVVRFX0ZPUk1BVCB0byBwYWNpZnkgbW9kZXJuIEdDQy4KLUFsbCB1c2VzIG9mIHNucHJpbnRmIGNoYW5nZWQgdG8gdXNlIG15X3NucHJpbnRmLiAgVGhpcyB3YXksCi1pbnN0YWxsZXJzIGRvbuKAmXQgbmVlZCB0byBzcGVjaWZ5IC1ESEFWRV9TTlBSSU5URiBpZiB0aGV5IGFyZSB1c2luZwotYSBwcmUtQzk5IGNvbXBpbGVyIHdpdGggYSBsaWJyYXJ5IHRoYXQgaGFzIHNucHJpbnRmLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gTkVXUyAgICB8ICA0ICsrKysKLSB6ZHVtcC5jIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKLWluZGV4IDc1YWIwOTUuLmRlYTA4YjggMTAwNjQ0Ci0tLS0gYS9ORVdTCi0rKysgYi9ORVdTCi1AQCAtNyw2ICs3LDEwIEBAIFVucmVsZWFzZWQsIGV4cGVyaW1lbnRhbCBjaGFuZ2VzCi0gICAgIFRoZSBNYWtlZmlsZSBub3cgcXVvdGVzIHZhbHVlcyBsaWtlIEJBQ0tXQVJEIG1vcmUgY2FyZWZ1bGx5IHdoZW4KLSAgICAgcGFzc2luZyB0aGVtIHRvIHRoZSBzaGVsbC4gIChQcm9ibGVtIHJlcG9ydGVkIGJ5IFplZnJhbS4pCi0gCi0rICAgIEJ1aWxkZXJzIG5vIGxvbmdlciBuZWVkIHRvIHNwZWNpZnkgLURIQVZFX1NOUFJJTlRGIG9uIHBsYXRmb3JtcwotKyAgICB0aGF0IGhhdmUgc25wcmludGYgYW5kIHVzZSBwcmUtQzk5IGNvbXBpbGVycy4gIChQcm9ibGVtIHJlcG9ydGVkCi0rICAgIGJ5IEpvbiBTa2VldC4pCi0rCi0gCi0gUmVsZWFzZSAyMDE3YyAtIDIwMTctMTAtMjAgMTQ6NDk6MzQgLTA3MDAKLSAKLWRpZmYgLS1naXQgYS96ZHVtcC5jIGIvemR1bXAuYwotaW5kZXggOGUzYmYzZS4uZDRlNjA4NCAxMDA2NDQKLS0tLSBhL3pkdW1wLmMKLSsrKyBiL3pkdW1wLmMKLUBAIC03OTUsMTIgKzc5NSwxNCBAQCBzaG93KHRpbWV6b25lX3QgdHosIGNoYXIgKnpvbmUsIHRpbWVfdCB0LCBib29sIHYpCi0gCQlhYmJyb2soYWJicih0bXApLCB6b25lKTsKLSB9Ci0gCi0tI2lmICFIQVZFX1NOUFJJTlRGCi0rI2lmIEhBVkVfU05QUklOVEYKLSsjIGRlZmluZSBteV9zbnByaW50ZiBzbnByaW50ZgotKyNlbHNlCi0gIyBpbmNsdWRlIDxzdGRhcmcuaD4KLSAKLSAvKiBBIHN1YnN0aXR1dGUgZm9yIHNucHJpbnRmIHRoYXQgaXMgZ29vZCBlbm91Z2ggZm9yIHpkdW1wLiAgKi8KLS1zdGF0aWMgaW50Ci0tc25wcmludGYoY2hhciAqcywgc2l6ZV90IHNpemUsIGNoYXIgY29uc3QgKmZvcm1hdCwgLi4uKQotK3N0YXRpYyBpbnQgQVRUUklCVVRFX0ZPUk1BVCgocHJpbnRmLCAzLCA0KSkKLStteV9zbnByaW50ZihjaGFyICpzLCBzaXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqZm9ybWF0LCAuLi4pCi0gewotICAgaW50IG47Ci0gICB2YV9saXN0IGFyZ3M7Ci1AQCAtODM5LDEwICs4NDEsMTAgQEAgZm9ybWF0X2xvY2FsX3RpbWUoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgc3RydWN0IHRtIGNvbnN0ICp0bSkKLSB7Ci0gICBpbnQgc3MgPSB0bS0+dG1fc2VjLCBtbSA9IHRtLT50bV9taW4sIGhoID0gdG0tPnRtX2hvdXI7Ci0gICByZXR1cm4gKHNzCi0tCSAgPyBzbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQ6JTAyZCIsIGhoLCBtbSwgc3MpCi0rCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQ6JTAyZCIsIGhoLCBtbSwgc3MpCi0gCSAgOiBtbQotLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkIiwgaGgsIG1tKQotLQkgIDogc25wcmludGYoYnVmLCBzaXplLCAiJTAyZCIsIGhoKSk7Ci0rCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkOiUwMmQiLCBoaCwgbW0pCi0rCSAgOiBteV9zbnByaW50ZihidWYsIHNpemUsICIlMDJkIiwgaGgpKTsKLSB9Ci0gCi0gLyogU3RvcmUgaW50byBCVUYsIG9mIHNpemUgU0laRSwgYSBmb3JtYXR0ZWQgVVRDIG9mZnNldCBmb3IgdGhlCi1AQCAtODc3LDEwICs4NzksMTAgQEAgZm9ybWF0X3V0Y19vZmZzZXQoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgc3RydWN0IHRtIGNvbnN0ICp0bSwgdGltZV90IHQpCi0gICBtbSA9IG9mZiAvIDYwICUgNjA7Ci0gICBoaCA9IG9mZiAvIDYwIC8gNjA7Ci0gICByZXR1cm4gKHNzIHx8IDEwMCA8PSBoaAotLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCUwMmQlMDJkIiwgc2lnbiwgaGgsIG1tLCBzcykKLSsJICA/IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkJTAyZCIsIHNpZ24sIGhoLCBtbSwgc3MpCi0gCSAgOiBtbQotLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCUwMmQiLCBzaWduLCBoaCwgbW0pCi0tCSAgOiBzbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkIiwgc2lnbiwgaGgpKTsKLSsJICA/IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkIiwgc2lnbiwgaGgsIG1tKQotKwkgIDogbXlfc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCIsIHNpZ24sIGhoKSk7Ci0gfQotIAotIC8qIFN0b3JlIGludG8gQlVGIChvZiBzaXplIFNJWkUpIGEgcXVvdGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBQLgotQEAgLTk4MywxNSArOTg1LDE2IEBAIGlzdHJmdGltZShjaGFyICpidWYsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICp0aW1lX2ZtdCwKLSAJICAgIGZvciAoYWJwID0gYWI7IGlzX2FscGhhKCphYnApOyBhYnArKykKLSAJICAgICAgY29udGludWU7Ci0gCSAgICBsZW4gPSAoISphYnAgJiYgKmFiCi0tCQkgICA/IHNucHJpbnRmKGIsIHMsICIlcyIsIGFiKQotKwkJICAgPyBteV9zbnByaW50ZihiLCBzLCAiJXMiLCBhYikKLSAJCSAgIDogZm9ybWF0X3F1b3RlZF9zdHJpbmcoYiwgcywgYWIpKTsKLSAJICAgIGlmIChzIDw9IGxlbikKLSAJICAgICAgcmV0dXJuIGZhbHNlOwotIAkgICAgYiArPSBsZW4sIHMgLT0gbGVuOwotIAkgIH0KLS0JICBmb3JtYXR0ZWRfbGVuID0gKHRtLT50bV9pc2RzdAotLQkJCSAgID8gc25wcmludGYoYiwgcywgJiJcdFx0JWQiW3Nob3dfYWJicl0sIHRtLT50bV9pc2RzdCkKLS0JCQkgICA6IDApOwotKwkgIGZvcm1hdHRlZF9sZW4KLSsJICAgID0gKHRtLT50bV9pc2RzdAotKwkgICAgICAgPyBteV9zbnByaW50ZihiLCBzLCAmIlx0XHQlZCJbc2hvd19hYmJyXSwgdG0tPnRtX2lzZHN0KQotKwkgICAgICAgOiAwKTsKLSAJfQotIAlicmVhazsKLSAgICAgICB9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWU5YjcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIG5vdGUgdGhhdCB3ZSBhbGxvdyBmb3IgdXMgdG8gdXNlIGRhdGEgbGF0ZXIgdGhhbiBvdXIgY29kZSB2ZXJzaW9uCi0jCi1TVU1NQVJZID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKLQotU1JDX1VSSSA9IiBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emNvZGUke1BWfS50YXIuZ3o7bmFtZT10emNvZGUgXAotICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEgXAotICAgICAgICAgICAiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi0KLVNSQ19VUklbdHpjb2RlLm1kNXN1bV0gPSAiZTZlMGQ0YjJjZTNmYTY5MDZmMzAzMTU3YmVkMjYxMmUiCi1TUkNfVVJJW3R6Y29kZS5zaGEyNTZzdW1dID0gIjMxZmE3ZmMwZjk0YTZmZjJkNmJjODc4YzBhMzVlOGFiOGI1YWEwZThiMDE0NDVhMWQ0YThmMTQ3NzdkMGU2NjUiCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImM0MTJiMTUzMWFkZWYxYmU3YTY0NWFiNzM0Zjg2YWNjIgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIyODI1YzNlNGI3ZWY1MjBmMjRkMzkzYmNjMDI5NDJmOTc2MmZmZDNlN2ZjOWIyMzg1MDc4OWVkOGYyMjkzM2Y2IgotCi1TID0gIiR7V09SS0RJUn0iCi0KLWluaGVyaXQgbmF0aXZlCi0KLUVYVFJBX09FTUFLRSArPSAiY2M9JyR7Q0N9JyIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgemljICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHpkdW1wICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHR6c2VsZWN0ICR7RH0ke2JpbmRpcn0vCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThkLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4ZC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTMzYTVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4ZC5iYgpAQCAtMCwwICsxLDMwIEBACisjIG5vdGUgdGhhdCB3ZSBhbGxvdyBmb3IgdXMgdG8gdXNlIGRhdGEgbGF0ZXIgdGhhbiBvdXIgY29kZSB2ZXJzaW9uCisjCitTVU1NQVJZID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCitMSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKKworU1JDX1VSSSA9IiBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emNvZGUke1BWfS50YXIuZ3o7bmFtZT10emNvZGUgXAorICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEgXAorICAgICAgICAgICAiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCisKK1NSQ19VUklbdHpjb2RlLm1kNXN1bV0gPSAiOTY2MTJiNGY1ZDdlODgwNGZkOWEwOTgxYzAyMWJlOTAiCitTUkNfVVJJW3R6Y29kZS5zaGEyNTZzdW1dID0gIjdkZTQ0ZTg1YmFhZDc0OGQyMTdlM2ZkNjA3MDZmNTk5ZjlhZWM2OGJjZTYzNTZiMTYzZjUyYjBkYmQ0MGE4ZDkiCitTUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gIjg3MWE3ZWY4MDhlYjQyZWJjNTUxYWNkYjNkNjYxNTU0IgorU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICI1MTA2ZWRkY2ViNWYxYWUzYTkxZGJkMzk2MGUxYjhiMTFiYTBkYzA4NTc5YTMxY2YwNzI0YTc2OTFiMTBjMDU0IgorCitTID0gIiR7V09SS0RJUn0iCisKK2luaGVyaXQgbmF0aXZlCisKK0VYVFJBX09FTUFLRSArPSAiY2M9JyR7Q0N9JyIKKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgemljICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHpkdW1wICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHR6c2VsZWN0ICR7RH0ke2JpbmRpcn0vCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNWVjMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKLQotREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi0KLVNSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiYzQxMmIxNTMxYWRlZjFiZTdhNjQ1YWI3MzRmODZhY2MiCi1TUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjI4MjVjM2U0YjdlZjUyMGYyNGQzOTNiY2MwMjk0MmY5NzYyZmZkM2U3ZmM5YjIzODUwNzg5ZWQ4ZjIyOTMzZjYiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInRpbWV6b25lcyB0aW1lem9uZS1hZnJpY2EgdGltZXpvbmUtYW1lcmljYSB0aW1lem9uZS1hbnRhcmN0aWNhIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1hcmN0aWMgdGltZXpvbmUtYXNpYSB0aW1lem9uZS1hdGxhbnRpYyBcCi0gICAgICAgICAgICAgdGltZXpvbmUtYXVzdHJhbGlhIHRpbWV6b25lLWV1cm9wZSB0aW1lem9uZS1pbmRpYW4gXAotICAgICAgICAgICAgIHRpbWV6b25lLWlzbzMxNjYudGFiIHRpbWV6b25lLXBhY2lmaWMgdGltZXpvbmUtem9uZS50YWIiCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotREVGQVVMVF9USU1FWk9ORSA/PSAiVW5pdmVyc2FsIgotSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgotCi1UWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCi0gICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIHN5c3RlbXYgXAotICAgICAgICAiCi0jIHBhY2lmaWNuZXcgCi0KLWRvX2NvbXBpbGUgKCkgewotICAgICAgICBmb3Igem9uZSBpbiAke1RaT05FU307IGRvIFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8gLUwgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAotICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0IC1MICR7U30vbGVhcHNlY29uZHMgXAotICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCi0gICAgICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8kZXhlY19wcmVmaXggJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLSAgICAgICAgY3AgLXBQUiAke1N9LyRleGVjX3ByZWZpeCAke0R9LwotICAgICAgICAjIGxpYmMgaXMgcmVtb3Zpbmcgem9uZWluZm8gZmlsZXMgZnJvbSBwYWNrYWdlCi0gICAgICAgIGNwIC1wUCAiJHtTfS96b25lLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLSAgICAgICAgY3AgLXBQICIke1N9L3pvbmUxOTcwLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLSAgICAgICAgY3AgLXBQICIke1N9L2lzbzMxNjYudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbwotCi0gICAgICAgICMgSW5zdGFsbCBkZWZhdWx0IHRpbWV6b25lCi0gICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSBdOyB0aGVuCi0gICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgICAgICAgICBpZiBbICIke0lOU1RBTExfVElNRVpPTkVfRklMRX0iID0gIjEiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBlY2hvICR7REVGQVVMVF9USU1FWk9ORX0gPiAke0R9JHtzeXNjb25mZGlyfS90aW1lem9uZQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCi0gICAgICAgICAgICBleGl0IDEKLSAgICAgICAgZmkKLQotICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKLQlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKLQotCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCi0JCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCi0JZmkKLQkKLQlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KLQkJZXhpdCAwCi0JZmkKLQkKLQlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KLQkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKLQkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCi0JCXR6PSJVbml2ZXJzYWwiCi0JCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKLQkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KLQkJCXJtIC1mICIke2V0Y19sdH0iCi0JCWZpCi0JCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgotCWZpCi19Ci0KLSMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKLSMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKLQotUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCi0gICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAotICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCi0KLUZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCi1SUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgotCi1GSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCi1SUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKLQotRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgotCi1GSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKLQotRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKLVJQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKLQotRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCi1SUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKLQotRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKLVJQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCi0KLUZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCi1SUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgotCi1GSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCi1SUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCi0KLUZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgotUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCi0KLUZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgotUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCi0KLQotRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgotUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgotCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFua29rICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUxOTcwLnRhYiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgotCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7QCAiJHtzeXNjb25mZGlyfS90aW1lem9uZSIgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcignSU5TVEFMTF9USU1FWk9ORV9GSUxFJykpIGVsc2UgIiIgfSIKLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdmY2U4MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4ZC5iYgpAQCAtMCwwICsxLDIxNSBAQAorU1VNTUFSWSA9ICJUaW1lem9uZSBkYXRhIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM2NzljOWQ2YjAyYmMyNzU3YjNlYWY4ZjUzYzQzZmJhIgorCitERVBFTkRTID0gInR6Y29kZS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKKworU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICI4NzFhN2VmODA4ZWI0MmViYzU1MWFjZGIzZDY2MTU1NCIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiNTEwNmVkZGNlYjVmMWFlM2E5MWRiZDM5NjBlMWI4YjExYmEwZGMwODU3OWEzMWNmMDcyNGE3NjkxYjEwYzA1NCIKKworaW5oZXJpdCBhbGxhcmNoCisKK1JDT05GTElDVFNfJHtQTn0gPSAidGltZXpvbmVzIHRpbWV6b25lLWFmcmljYSB0aW1lem9uZS1hbWVyaWNhIHRpbWV6b25lLWFudGFyY3RpY2EgXAorICAgICAgICAgICAgIHRpbWV6b25lLWFyY3RpYyB0aW1lem9uZS1hc2lhIHRpbWV6b25lLWF0bGFudGljIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1hdXN0cmFsaWEgdGltZXpvbmUtZXVyb3BlIHRpbWV6b25lLWluZGlhbiBcCisgICAgICAgICAgICAgdGltZXpvbmUtaXNvMzE2Ni50YWIgdGltZXpvbmUtcGFjaWZpYyB0aW1lem9uZS16b25lLnRhYiIKKworUyA9ICIke1dPUktESVJ9IgorCitERUZBVUxUX1RJTUVaT05FID89ICJVbml2ZXJzYWwiCitJTlNUQUxMX1RJTUVaT05FX0ZJTEUgPz0gIjEiCisKK1RaT05FUz0gImFmcmljYSBhbnRhcmN0aWNhIGFzaWEgYXVzdHJhbGFzaWEgZXVyb3BlIG5vcnRoYW1lcmljYSBzb3V0aGFtZXJpY2EgIFwKKyAgICAgICAgIGZhY3RvcnkgZXRjZXRlcmEgYmFja3dhcmQgc3lzdGVtdiBcCisgICAgICAgICIKKyMgcGFjaWZpY25ldyAKKworZG9fY29tcGlsZSAoKSB7CisgICAgICAgIGZvciB6b25lIGluICR7VFpPTkVTfTsgZG8gXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mbyAtTCAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3Bvc2l4IC1MIC9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQgLUwgJHtTfS9sZWFwc2Vjb25kcyBcCisgICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgZG9uZQorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyRleGVjX3ByZWZpeCAke0R9JHtkYXRhZGlyfS96b25laW5mbworICAgICAgICBjcCAtcFBSICR7U30vJGV4ZWNfcHJlZml4ICR7RH0vCisgICAgICAgICMgbGliYyBpcyByZW1vdmluZyB6b25laW5mbyBmaWxlcyBmcm9tIHBhY2thZ2UKKyAgICAgICAgY3AgLXBQICIke1N9L3pvbmUudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworICAgICAgICBjcCAtcFAgIiR7U30vem9uZTE5NzAudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworICAgICAgICBjcCAtcFAgIiR7U30vaXNvMzE2Ni50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisKKyAgICAgICAgIyBJbnN0YWxsIGRlZmF1bHQgdGltZXpvbmUKKyAgICAgICAgaWYgWyAtZSAke0R9JHtkYXRhZGlyfS96b25laW5mby8ke0RFRkFVTFRfVElNRVpPTkV9IF07IHRoZW4KKyAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICAgICAgICAgIGlmIFsgIiR7SU5TVEFMTF9USU1FWk9ORV9GSUxFfSIgPSAiMSIgXTsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gJHtERUZBVUxUX1RJTUVaT05FfSA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RpbWV6b25lCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgbG4gLXMgJHtkYXRhZGlyfS96b25laW5mby8ke0RFRkFVTFRfVElNRVpPTkV9ICR7RH0ke3N5c2NvbmZkaXJ9L2xvY2FsdGltZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBiYmVycm9yICJERUZBVUxUX1RJTUVaT05FIGlzIHNldCB0byBhbiBpbnZhbGlkIHZhbHVlLiIKKyAgICAgICAgICAgIGV4aXQgMQorICAgICAgICBmaQorCisgICAgICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Cit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJZXRjX2x0PSIkRCR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgorCXNyYz0iJEQke3N5c2NvbmZkaXJ9L3RpbWV6b25lIgorCisJaWYgWyAtZSAke3NyY30gXSA7IHRoZW4KKwkJdHo9JChzZWQgLWUgJ3M6Iy4qOjonIC1lICdzOltbOnNwYWNlOl1dKjo6ZycgLWUgJy9eJC9kJyAiJHtzcmN9IikKKwlmaQorCQorCWlmIFsgLXogIiR7dHp9IiBdIDsgdGhlbgorCQlleGl0IDAKKwlmaQorCQorCWlmIFsgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgorCQllY2hvICJZb3UgaGF2ZSBhbiBpbnZhbGlkIFRJTUVaT05FIHNldHRpbmcgaW4gJHtzcmN9IgorCQllY2hvICJZb3VyICR7ZXRjX2x0fSBoYXMgYmVlbiByZXNldCB0byBVbml2ZXJzYWw7IGVuam95ISIKKwkJdHo9IlVuaXZlcnNhbCIKKwkJZWNobyAiVXBkYXRpbmcgJHtldGNfbHR9IHdpdGggJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IgorCQlpZiBbIC1MICR7ZXRjX2x0fSBdIDsgdGhlbgorCQkJcm0gLWYgIiR7ZXRjX2x0fSIKKwkJZmkKKwkJbG4gLXMgIiR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iICIke2V0Y19sdH0iCisJZmkKK30KKworIyBQYWNrYWdlcyBwcmltYXJpbHkgb3JnYW5pemVkIGJ5IGRpcmVjdG9yeSB3aXRoIGEgbWFqb3IgY2l0eQorIyBpbiBtb3N0IHRpbWUgem9uZXMgaW4gdGhlIGJhc2UgcGFja2FnZQorCitQQUNLQUdFUyA9ICJ0emRhdGEgdHpkYXRhLW1pc2MgdHpkYXRhLXBvc2l4IHR6ZGF0YS1yaWdodCB0emRhdGEtYWZyaWNhIFwKKyAgICB0emRhdGEtYW1lcmljYXMgdHpkYXRhLWFudGFyY3RpY2EgdHpkYXRhLWFyY3RpYyB0emRhdGEtYXNpYSBcCisgICAgdHpkYXRhLWF0bGFudGljIHR6ZGF0YS1hdXN0cmFsaWEgdHpkYXRhLWV1cm9wZSB0emRhdGEtcGFjaWZpYyIKKworRklMRVNfdHpkYXRhLWFmcmljYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvKiIKK1JQUk9WSURFU190emRhdGEtYWZyaWNhID0gInR6ZGF0YS1hZnJpY2EiCisKK0ZJTEVTX3R6ZGF0YS1hbWVyaWNhcyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhLyogIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VTLyogICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQnJhemlsLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DYW5hZGEvKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01leGljby8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2hpbGUvKiIKK1JQUk9WSURFU190emRhdGEtYW1lcmljYXMgPSAidHpkYXRhLWFtZXJpY2FzIgorCitGSUxFU190emRhdGEtYW50YXJjdGljYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BbnRhcmN0aWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFudGFyY3RpY2EgPSAidHpkYXRhLWFudGFyY3RpY2EiCisKK0ZJTEVTX3R6ZGF0YS1hcmN0aWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXJjdGljLyoiCitSUFJPVklERVNfdHpkYXRhLWFyY3RpYyA9ICJ0emRhdGEtYXJjdGljIgorCitGSUxFU190emRhdGEtYXNpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9Bc2lhLyogICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0luZGlhbi8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWlkZWFzdC8qIgorUlBST1ZJREVTX3R6ZGF0YS1hc2lhID0gInR6ZGF0YS1hc2lhIgorCitGSUxFU190emRhdGEtYXRsYW50aWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXRsYW50aWMvKiIKK1JQUk9WSURFU190emRhdGEtYXRsYW50aWMgPSAidHpkYXRhLWF0bGFudGljIgorCitGSUxFU190emRhdGEtYXVzdHJhbGlhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hdXN0cmFsaWEgPSAidHpkYXRhLWF1c3RyYWxpYSIKKworRklMRVNfdHpkYXRhLWV1cm9wZSArPSAiJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvKiIKK1JQUk9WSURFU190emRhdGEtZXVyb3BlID0gInR6ZGF0YS1ldXJvcGUiCisKK0ZJTEVTX3R6ZGF0YS1wYWNpZmljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvKiIKK1JQUk9WSURFU190emRhdGEtcGFjaWZpYyA9ICJ0emRhdGEtcGFjaWZpYyIKKworRklMRVNfdHpkYXRhLXBvc2l4ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL3Bvc2l4LyoiCitSUFJPVklERVNfdHpkYXRhLXBvc2l4ID0gInR6ZGF0YS1wb3NpeCIKKworRklMRVNfdHpkYXRhLXJpZ2h0ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0LyoiCitSUFJPVklERVNfdHpkYXRhLXJpZ2h0ID0gInR6ZGF0YS1yaWdodCIKKworCitGSUxFU190emRhdGEtbWlzYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9DdWJhICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FZ3lwdCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FaXJlICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9GYWN0b3J5ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQi1FaXJlICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Ib25na29uZyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JY2VsYW5kICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JcmFuICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Jc3JhZWwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9KYW1haWNhICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9KYXBhbiAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Ld2FqYWxlaW4gICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9MaWJ5YSAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OYXZham8gICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Qb2xhbmQgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Qb3J0dWdhbCAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9TaW5nYXBvcmUgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9UdXJrZXkiCitSUFJPVklERVNfdHpkYXRhLW1pc2MgPSAidHpkYXRhLW1pc2MiCisKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy9Ib25vbHVsdSAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9BbmNob3JhZ2UgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9Mb3NfQW5nZWxlcyAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9EZW52ZXIgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9DaGljYWdvICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9OZXdfWW9yayAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9DYXJhY2FzICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9TYW9fUGF1bG8gICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL0xvbmRvbiAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL1BhcmlzICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhL0NhaXJvICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL01vc2NvdyAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9EdWJhaSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9LYXJhY2hpICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9EaGFrYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9CYW5na29rICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9Ib25nX0tvbmcgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9Ub2t5byAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0RhcndpbiAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0FkZWxhaWRlICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0JyaXNiYW5lICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL1N5ZG5leSAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy9Ob3VtZWEgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ0VUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ1NUNkNEVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRUVUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRVNUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRVNUNUVEVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0IgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UKzAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01ULTAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UMCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR3JlZW53aWNoICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSFNUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTUVUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTVNUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTVNUN01EVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTlogICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTlotQ0hBVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUFJDICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUFNUOFBEVCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUk9DICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUk9LICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVUNUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVRDICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVW5pdmVyc2FsICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVy1TVSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vV0VUICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vWnVsdSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vem9uZS50YWIgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vem9uZTE5NzAudGFiICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vaXNvMzE2Ni50YWIgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXRjLyoiCisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtAICIke3N5c2NvbmZkaXJ9L3RpbWV6b25lIiBpZiBiYi51dGlscy50b19ib29sZWFuKGQuZ2V0VmFyKCdJTlNUQUxMX1RJTUVaT05FX0ZJTEUnKSkgZWxzZSAiIiB9IgorQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC8xMC1jdmUtMjAxNC04MTQwLXRlc3QtY29tcHItZWIucGF0Y2gKaW5kZXggYzk4OWRmMS4uY2E0YWFhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC8xMC1jdmUtMjAxNC04MTQwLXRlc3QtY29tcHItZWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcC8xMC1jdmUtMjAxNC04MTQwLXRlc3QtY29tcHItZWIucGF0Y2gKQEAgLTksOSArOSwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAKLS0tLSBhL2V4dHJhY3QuYwotKysrIGIvZXh0cmFjdC5jCi1AQCAtMjIzMiwxMCArMjIzMiwxNyBAQAorSW5kZXg6IHVuemlwNjAvZXh0cmFjdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdW56aXA2MC5vcmlnL2V4dHJhY3QuYworKysrIHVuemlwNjAvZXh0cmFjdC5jCitAQCAtMjIzMywxMCArMjIzMywxNyBAQCBzdGF0aWMgaW50IHRlc3RfY29tcHJfZWIoX19HX18gZWIsIGViX3NpCiAgICAgIGlmIChjb21wcl9vZmZzZXQgPCA0KSAgICAgICAgICAgICAgICAvKiBmaWVsZCBpcyBub3QgY29tcHJlc3NlZDogKi8KICAgICAgICAgIHJldHVybiBQS19PSzsgICAgICAgICAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgYW5kIHNpZ25hbCBPSyAqLwogIApAQCAtMzAsNSArMzIsNSBAQAogKyAgICAgKChlYl91Y3NpemUgPiAwTCkgJiYgKGViX3NpemUgPD0gKGNvbXByX29mZnNldCArIEVCX0NNUFJIRUFETEVOKSkpKQogKyAgICAgICAgcmV0dXJuIElaX0VGX1RSVU5DOyAgICAgICAgICAgICAvKiBuby9iYWQgY29tcHJlc3NlZCBkYXRhISAqLwogIAotICAgICBpZiAoCi0gI2lmZGVmIElOVF8xNkJJVAorICAgICBtZXRob2QgPSBtYWtld29yZChlYiArIChFQl9IRUFEU0laRSArIGNvbXByX29mZnNldCkpOworICAgICBpZiAoKG1ldGhvZCA9PSBTVE9SRUQpICYmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvMDAwMS13YXRjaGRvZy1yZW1vdmUtaW50ZXJkZXBlbmRlbmNpZXMtb2Ytd2F0Y2hkb2ctYW5kLXdkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOGUwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIGMxZmUxNGZhNWJkMTY4MjkyY2M0NjcwMDM0YmM0OGI5NTRlOWRhYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAxMyBNYXIgMjAxOCAxNDo0OTo1NSArMDIwMAorU3ViamVjdDogW1BBVENIXSB3YXRjaGRvZzogcmVtb3ZlIGludGVyZGVwZW5kZW5jaWVzIG9mIHdhdGNoZG9nIGFuZAorIHdkX2tlZXBhbGl2ZSBzZXJ2aWNlcworCitTaW5jZSB3YXRjaGRvZyBhbmQgd2F0Y2hkb2cta2VlcGFsaXZlIHBhY2thZ2VzIGNhbid0IGJlIGluc3RhbGxlZAordG9nZXRoZXIsIHJlbW92ZSB0aGUgaW50ZXItZGVwZW5kZW5jaWVzIG9mIHdhdGNoZG9nIGFuZCB3ZF9rZWVwYWxpdmUKK3NlcnZpY2VzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZGViaWFuL3dhdGNoZG9nLnNlcnZpY2UgICAgIHwgIDkgKysrLS0tLS0tCisgZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlIHwgMTAgKysrKystLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RlYmlhbi93YXRjaGRvZy5zZXJ2aWNlIGIvZGViaWFuL3dhdGNoZG9nLnNlcnZpY2UKK2luZGV4IDdhMmZjMzYuLmYzMWQxZmUgMTAwNjQ0CistLS0gYS9kZWJpYW4vd2F0Y2hkb2cuc2VydmljZQorKysrIGIvZGViaWFuL3dhdGNoZG9nLnNlcnZpY2UKK0BAIC0xLDE2ICsxLDEzIEBACisgW1VuaXRdCisgRGVzY3JpcHRpb249d2F0Y2hkb2cgZGFlbW9uCistQ29uZmxpY3RzPXdkX2tlZXBhbGl2ZS5zZXJ2aWNlCisgQWZ0ZXI9bXVsdGktdXNlci50YXJnZXQKKy1PbkZhaWx1cmU9d2Rfa2VlcGFsaXZlLnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPWZvcmtpbmcKKyBFbnZpcm9ubWVudEZpbGU9L2V0Yy9kZWZhdWx0L3dhdGNoZG9nCisgRXhlY1N0YXJ0UHJlPS9iaW4vc2ggLWMgJ1sgLXogIiR7d2F0Y2hkb2dfbW9kdWxlfSIgXSB8fCBbICIke3dhdGNoZG9nX21vZHVsZX0iID0gIm5vbmUiIF0gfHwgL3NiaW4vbW9kcHJvYmUgJHdhdGNoZG9nX21vZHVsZScKKy1FeGVjU3RhcnQ9L2Jpbi9zaCAtYyAnWyAkcnVuX3dhdGNoZG9nICE9IDEgXSB8fCBleGVjIC91c3Ivc2Jpbi93YXRjaGRvZyAkd2F0Y2hkb2dfb3B0aW9ucycKKy1FeGVjU3RvcFBvc3Q9L2Jpbi9zaCAtYyAnWyAkcnVuX3dkX2tlZXBhbGl2ZSAhPSAxIF0gfHwgZmFsc2UnCisrRXhlY1N0YXJ0PS9iaW4vc2ggLWMgJ1sgeCRydW5fd2F0Y2hkb2cgIT0geDEgXSB8fCBleGVjIC91c3Ivc2Jpbi93YXRjaGRvZyAkd2F0Y2hkb2dfb3B0aW9ucycKKytQSURGaWxlPS92YXIvcnVuL3dhdGNoZG9nLnBpZAorIAorIFtJbnN0YWxsXQorLVdhbnRlZEJ5PWRlZmF1bHQudGFyZ2V0CistCisrV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKK2RpZmYgLS1naXQgYS9kZWJpYW4vd2Rfa2VlcGFsaXZlLnNlcnZpY2UgYi9kZWJpYW4vd2Rfa2VlcGFsaXZlLnNlcnZpY2UKK2luZGV4IDQ1YjAxOGUuLjdmOGIxZGMgMTAwNjQ0CistLS0gYS9kZWJpYW4vd2Rfa2VlcGFsaXZlLnNlcnZpY2UKKysrKyBiL2RlYmlhbi93ZF9rZWVwYWxpdmUuc2VydmljZQorQEAgLTEsMTMgKzEsMTMgQEAKKyBbVW5pdF0KKyBEZXNjcmlwdGlvbj13YXRjaGRvZyBrZWVwYWxpdmUgZGFlbW9uCistQmVmb3JlPXdhdGNoZG9nLnNlcnZpY2Ugc2h1dGRvd24udGFyZ2V0CistQ29uZmxpY3RzPXdhdGNoZG9nLnNlcnZpY2Ugc2h1dGRvd24udGFyZ2V0CisrQWZ0ZXI9bXVsdGktdXNlci50YXJnZXQKKyAKKyBbU2VydmljZV0KKyBUeXBlPWZvcmtpbmcKKyBFbnZpcm9ubWVudEZpbGU9L2V0Yy9kZWZhdWx0L3dhdGNoZG9nCisgRXhlY1N0YXJ0UHJlPS9iaW4vc2ggLWMgJ1sgLXogIiR7d2F0Y2hkb2dfbW9kdWxlfSIgXSB8fCBbICIke3dhdGNoZG9nX21vZHVsZX0iID0gIm5vbmUiIF0gfHwgL3NiaW4vbW9kcHJvYmUgJHdhdGNoZG9nX21vZHVsZScKKy1FeGVjU3RhcnRQcmU9LS9iaW4vc3lzdGVtY3RsIHJlc2V0LWZhaWxlZCB3YXRjaGRvZy5zZXJ2aWNlCisgRXhlY1N0YXJ0PS91c3Ivc2Jpbi93ZF9rZWVwYWxpdmUgJHdhdGNoZG9nX29wdGlvbnMKKy1FeGVjU3RhcnRQb3N0PS9iaW4vc2ggLWMgJ2xuIC1zIC92YXIvcnVuL3dkX2tlZXBhbGl2ZS5waWQgL3J1bi9zZW5kc2lncy5vbWl0LmQvd2Rfa2VlcGFsaXZlLnBpZCcKKy1FeGVjU3RvcFBvc3Q9L2Jpbi9zaCAtYyAncm0gLWYgL3J1bi9zZW5kc2lncy5vbWl0LmQvd2Rfa2VlcGFsaXZlLnBpZCcKKytQSURGaWxlPS92YXIvcnVuL3dkX2tlZXBhbGl2ZS5waWQKKysKKytbSW5zdGFsbF0KKytXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldAorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmYucGF0Y2gKaW5kZXggZTY4YWQ1NC4uZWM0NGM4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctY29uZi5wYXRjaApAQCAtMSwxNCArMSwxNiBAQAogU2lnbmVkLW9mZi1ieTogRGllZ28gUm9uZGluaSA8ZGllZ28ubWxAem9oby5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAotLS0tIHdhdGNoZG9nLTUuMTMub3JpZy93YXRjaGRvZy5jb25mCTIwMTMtMDItMDEgMTI6MTU6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgd2F0Y2hkb2ctNS4xMy93YXRjaGRvZy5jb25mCTIwMTQtMTEtMTMgMTA6NTk6NDMuMjMzOTQzMDAwICswMTAwCi1AQCAtMjAsNyArMjAsNyBAQAotICN0ZXN0LWJpbmFyeQkJPSAKLSAjdGVzdC10aW1lb3V0CQk9IAorSW5kZXg6IHdhdGNoZG9nLTUuMTUvd2F0Y2hkb2cuY29uZgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdhdGNoZG9nLTUuMTUub3JpZy93YXRjaGRvZy5jb25mCisrKysgd2F0Y2hkb2ctNS4xNS93YXRjaGRvZy5jb25mCitAQCAtMjgsNyArMjgsNyBAQAorICNyZXRyeS10aW1lb3V0CQk9IDYwCisgI3JlcGFpci1tYXhpbXVtCQk9IDEKICAKIC0jd2F0Y2hkb2ctZGV2aWNlCT0gL2Rldi93YXRjaGRvZwogK3dhdGNoZG9nLWRldmljZQk9IC9kZXYvd2F0Y2hkb2cKICAKICAjIERlZmF1bHRzIGNvbXBpbGVkIGludG8gdGhlIGJpbmFyeQotICN0ZW1wZXJhdHVyZS1kZXZpY2UJPQorICN0ZW1wZXJhdHVyZS1zZW5zb3IJPQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCmluZGV4IDNkMGI3MmUuLjM3YjM3YWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKQEAgLTEwLDYgKzEwLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vd2F0Y2hkb2cvd2F0Y2hkb2ctJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1saW51eC1wYXJhbS5oLWZvci1FWEVDX1BBR0VTSVpFLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS13YXRjaGRvZy1yZW1vdmUtaW50ZXJkZXBlbmRlbmNpZXMtb2Ytd2F0Y2hkb2ctYW5kLXdkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3dhdGNoZG9nLWluaXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vd2F0Y2hkb2ctY29uZi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly93ZF9rZWVwYWxpdmUuaW5pdCBcCkBAIC0zNiw3ICszNyw5IEBACiBJTklUU0NSSVBUX05BTUVfJHtQTn0ta2VlcGFsaXZlID0gIndkX2tlZXBhbGl2ZSIKIElOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWtlZXBhbGl2ZSA9ICJzdGFydCAxNSAxIDIgMyA0IDUgLiBzdG9wIDg1IDAgNiAuIgogCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAid2F0Y2hkb2cuc2VydmljZSB3ZF9rZWVwYWxpdmUuc2VydmljZSIKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0ta2VlcGFsaXZlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIndhdGNoZG9nLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0ta2VlcGFsaXZlID0gIndkX2tlZXBhbGl2ZS5zZXJ2aWNlIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CkBAIC01NCw2ICs1Nyw3IEBACiAKIEZJTEVTXyR7UE59LWtlZXBhbGl2ZSA9ICIgXAogICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3dkX2tlZXBhbGl2ZSBcCisgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS93ZF9rZWVwYWxpdmUuc2VydmljZSBcCiAgICAgJHtzYmluZGlyfS93ZF9rZWVwYWxpdmUgXAogIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC5pbmMKaW5kZXggMTI5OWVkYi4uM2NmZjY1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LmluYwpAQCAtMiw3ICsyLDcgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvd2dldC8iCiBTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKIExJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM2Nzg5NTdiMGM4ZTk2NGFhNmM3MGZkNzc2NDFhNzFlIgogREVQRU5EUyA9ICJnbnV0bHMgemxpYiBsaWJwY3JlIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKQEAgLTEwLDYgKzEwLDkgQEAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtc3NsPWdudXRscyAtLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWlyaSBcCiAgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmdudXRscy1wcmVmaXggYWNfY3ZfaGVhZGVyX3V1aWRfdXVpZF9oPW5vIgogCitFWFRSQV9PRU1BS0UgKz0gJ1RPT0xDSEFJTl9PUFRJT05TPSIke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgICAgICAgICAgICAgICBERUJVR19QUkVGSVhfTUFQPSIke0RFQlVHX1BSRUZJWF9NQVB9IicKKwogQUxURVJOQVRJVkVfJHtQTn0gPSAid2dldCIKIEFMVEVSTkFUSVZFXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC8wMDAyLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvMDAwMi1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzgxZGYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvMDAwMi1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIDdmMTM1NzUyOWQyM2IzNTZiNDVmYmIwZGQ3Mzg4NTg4MTYyZTRjYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEwIEphbiAyMDE4IDE0OjQzOjIwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy9NYWtlZmlsZS5hbTogaW1wcm92ZSByZXByb2R1Y2liaWxpdHkKKworUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHRoZSBpbnRlcm5hbGx5CitnZW5lcmF0ZWQgZmlsZSB2ZXJzaW9uLmMuIFRoZSByZWZlcmVuY2VzIGdldCBjb21waWxlZCBpbnRvCitleGVjdXRhYmxlcywgd2hpY2ggbGVhZHMgdG8gbm9uLXJlcHJvZHVjaWJsZSBidWlsZHMuCitUaGUgcmVtb3ZlZCByZWZlcmVuY2VzICgtLXN5c3Jvb3QsIC1mZGVidWctcHJlZml4LW1hcCkgd2VyZQorb25seSB1c2VkIGFzIHBhcnQgb2YgdGhlIGB3Z2V0IC0tdmVyc2lvbicgd2hpY2ggZG8gbm90IGhhdmUKK3NpZGUgZWZmZWN0LgorCisuLi4KKyQgd2dldCAtLXZlcnNpb24KK0dOVSBXZ2V0IDEuMTQgYnVpbHQgb24gbGludXgtZ251LgorCisrZGlnZXN0ICtodHRwcyAraXB2NiAraXJpICtsYXJnZS1maWxlICtubHMgK250bG0gK29waWUgK3NzbC9vcGVuc3NsCisKK1dnZXRyYzoKKyAgICAvZXRjL3dnZXRyYyAoc3lzdGVtKQorTG9jYWxlOiAvdXNyL3NoYXJlL2xvY2FsZQorQ29tcGlsZTogZ2NjIC1ESEFWRV9DT05GSUdfSCAtRFNZU1RFTV9XR0VUUkM9Ii9ldGMvd2dldHJjIgorICAgIC1ETE9DQUxFRElSPSIvdXNyL3NoYXJlL2xvY2FsZSIgLUkuIC1JLi4vbGliIC1JLi4vbGliIC1PMiAtZyAtcGlwZQorICAgIC1XYWxsIC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1mZXhjZXB0aW9ucyAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcKKyAgICAtLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00IC1ncmVjb3JkLWdjYy1zd2l0Y2hlcyAtbTY0IC1tdHVuZT1nZW5lcmljCitMaW5rOiBnY2MgLU8yIC1nIC1waXBlIC1XYWxsIC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1mZXhjZXB0aW9ucworICAgIC1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00CisgICAgLWdyZWNvcmQtZ2NjLXN3aXRjaGVzIC1tNjQgLW10dW5lPWdlbmVyaWMgLWxzc2wgLWxjcnlwdG8KKyAgICAvdXNyL2xpYjY0L2xpYnNzbC5zbyAvdXNyL2xpYjY0L2xpYmNyeXB0by5zbyAvdXNyL2xpYjY0L2xpYnouc28KKyAgICAtbGRsIC1seiAtbHogLWxpZG4gLWx1dWlkIC1scGNyZSBmdHAtb3BpZS5vIG9wZW5zc2wubyBodHRwLW50bG0ubworICAgIC4uL2xpYi9saWJnbnUuYQorLi4uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCAyOGMwYmUyLi40NDA4NGEzIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC04Nyw5ICs4NywxMyBAQCB2ZXJzaW9uLmM6ICAkKHdnZXRfU09VUkNFUykgLi4vbGliL2xpYmdudS5hCisgCWVjaG8gJyNpbmNsdWRlICJ2ZXJzaW9uLmgiJyA+PiAkQAorIAllY2hvICdjb25zdCBjaGFyICp2ZXJzaW9uX3N0cmluZyA9ICJAVkVSU0lPTkAiOycgPj4gJEAKKyAJZWNobyAnY29uc3QgY2hhciAqY29tcGlsYXRpb25fc3RyaW5nID0gIickKENPTVBJTEUpJyI7JyBcCisrCSAgICB8IHNlZCAtZSAicywkKFRPT0xDSEFJTl9PUFRJT05TKSwsZyIgXAorKwkgICAgICAgICAgLWUgInMsJChERUJVR19QUkVGSVhfTUFQKSwsZyIgXAorIAkgICAgfCAkKEVTQ0FQRVFVT1RFKSA+PiAkQAorIAllY2hvICdjb25zdCBjaGFyICpsaW5rX3N0cmluZyA9ICInJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIFwKKyAJJChBTV9MREZMQUdTKSAkKExERkxBR1MpICQoTElCUykgJCh3Z2V0X0xEQUREKSciOycgXAorKwkgICAgfCBzZWQgLWUgInMsJChUT09MQ0hBSU5fT1BUSU9OUyksLGciIFwKKysJICAgICAgICAgIC1lICJzLCQoREVCVUdfUFJFRklYX01BUCksLGciIFwKKyAJICAgIHwgJChFU0NBUEVRVU9URSkgPj4gJEAKKyAKKyBjc3MuYzogJChzcmNkaXIpL2Nzcy5sCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvQ1ZFLTIwMTctNjUwOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0L0NWRS0yMDE3LTY1MDgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YzI5MGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvQ1ZFLTIwMTctNjUwOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gNGQ3MjllMzIyZmFlMzU5YTFhZWZhYWZlYzExNDQ3NjRhNTRlOGFkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9UaW09MjBSPUMzPUJDaHNlbj89IDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1EYXRlOiBNb24sIDYgTWFyIDIwMTcgMTA6MDQ6MjIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IENSTEYgaW5qZWN0aW9uIGluIFdnZXQgaG9zdCBwYXJ0Ci0KLSogc3JjL3VybC5jICh1cmxfcGFyc2UpOiBSZWplY3QgY29udHJvbCBjaGFyYWN0ZXJzIGluIGhvc3QgcGFydCBvZiBVUkwKLQotUmVwb3J0ZWQtYnk6IE9yYW5nZSBUc2FpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC93Z2V0LmdpdC9jb21taXQvP2lkPTRkNzI5ZTMyMmZhZTM1OWExYWVmYWFmZWMxMTQ0NzY0YTU0ZThhZDRdCi0KLUNWRTogQ1ZFLTIwMTctNjUwOAotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvdXJsLmMgfCAxMSArKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvdXJsLmMgYi9zcmMvdXJsLmMKLWluZGV4IDhmOGZmMGIuLjdkMzZiMjcgMTAwNjQ0Ci0tLS0gYS9zcmMvdXJsLmMKLSsrKyBiL3NyYy91cmwuYwotQEAgLTkyNSw2ICs5MjUsMTcgQEAgdXJsX3BhcnNlIChjb25zdCBjaGFyICp1cmwsIGludCAqZXJyb3IsIHN0cnVjdCBpcmkgKmlyaSwgYm9vbCBwZXJjZW50X2VuY29kZSkKLSAgICAgICB1cmxfdW5lc2NhcGUgKHUtPmhvc3QpOwotICAgICAgIGhvc3RfbW9kaWZpZWQgPSB0cnVlOwotIAotKyAgICAgIC8qIGNoZWNrIGZvciBpbnZhbGlkIGNvbnRyb2wgY2hhcmFjdGVycyBpbiBob3N0IG5hbWUgKi8KLSsgICAgICBmb3IgKHAgPSB1LT5ob3N0OyAqcDsgcCsrKQotKyAgICAgICAgewotKyAgICAgICAgICBpZiAoY19pc2NudHJsKCpwKSkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICB1cmxfZnJlZSh1KTsKLSsgICAgICAgICAgICAgIGVycm9yX2NvZGUgPSBQRV9JTlZBTElEX0hPU1RfTkFNRTsKLSsgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKwotICAgICAgIC8qIEFwcGx5IElETkEgcmVnYXJkbGVzcyBvZiBpcmktPnV0ZjhfZW5jb2RlIHN0YXR1cyAqLwotICAgICAgIGlmIChvcHQuZW5hYmxlX2lyaSAmJiBpcmkpCi0gICAgICAgICB7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhiZGU5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS93Z2V0L3dnZXQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNjUwOC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODdjZWEzNmI3MTYxZmQ0M2UzZmQ1MWE0ZThiODk2ODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWU0ZjEyZGEzOGNjNjE2N2QwNzUyZDkzNGFiZTI3YzdiMTU5OWE5YWYyOTRlNzM4MjliZTdhYzdiNWI0ZGE0MCIKLQotcmVxdWlyZSB3Z2V0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzN2Q4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE5LjUuYmIKQEAgLTAsMCArMSw5IEBACitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vd2dldC93Z2V0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjJkYjZmMDNkNjU1MDQxZjgyZWI2NGI4YzhhMWZhN2RhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzOTIxMmFiZTFhNzNmMmIyOGY0YzZjYjIyM2M3Mzg1NTljYWFjOTFkNmU0MTZhNmQ5MWQ0YjlkNTVjOWZhZWUiCisKK3JlcXVpcmUgd2dldC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmOGQxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkJhc2ljIGRlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUveGRnLXV0aWxzLyIKLURFU0NSSVBUSU9OID0gIlRoZSB4ZGctdXRpbHMgcGFja2FnZSBpcyBhIHNldCBvZiBzaW1wbGUgc2NyaXB0cyB0aGF0IHByb3ZpZGUgYmFzaWMgXAotZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMgZm9yIGFueSBGcmVlIERlc2t0b3AsIHN1Y2ggYXMgTGludXguIFwKLVRoZXkgYXJlIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzZXQgb2YgZGVmYWN0byBzdGFuZGFyZHMuIFwKLVRoZSBmb2xsb3dpbmcgc2NyaXB0cyBhcmUgcHJvdmlkZWQgYXQgdGhpcyB0aW1lOiBcCi14ZGctZGVza3RvcC1pY29uIFwKLXhkZy1kZXNrdG9wLW1lbnUgXAoteGRnLWVtYWlsIFwKLXhkZy1pY29uLXJlc291cmNlIFwKLXhkZy1taW1lIFwKLXhkZy1vcGVuIFwKLXhkZy1zY3JlZW5zYXZlciBcCi14ZGctdGVybWluYWwgXAotIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE1MzY3YTkwOTM0MDk4ZDZiMDVhZjNiNzQ2NDA1MDE0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9wb3J0bGFuZC5mcmVlZGVza3RvcC5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlaW5zdGF0ZS14ZGctdGVybWluYWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC10aGUtaW4tc2NyaXB0LW1hbnVhbC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQwYWVjNjAzNzc2OWE1ZjEzOGZmNDA0YjFiYjRiMTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjBkZDYzYTI1NzZlMGJiMTZmMWFhNzhkNmRkZjdkNjc4NDc4NGEwOThkNGRmMTcxNjFjZDZhMTdjN2JjNDEyNSIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAieGRnLXV0aWxzLSg/UDxwdmVyPigoXGQrW1wuXC1fXSopKykoKHJjfGFscGhhfGJldGEpXGQrKT8pXC4odGFyXC5nenx0Z3opIgotCi0jIE5lZWRzIGJyb2tlbnNlcCBhcyB0aGlzIGRvZXNuJ3QgdXNlIGF1dG9tYWtlCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgVGhlIHhwcm9wIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLURFUEVORFMgPSAieG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gKz0gInhwcm9wIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMzkyODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjIuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJCYXNpYyBkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3hkZy11dGlscy8iCitERVNDUklQVElPTiA9ICJUaGUgeGRnLXV0aWxzIHBhY2thZ2UgaXMgYSBzZXQgb2Ygc2ltcGxlIHNjcmlwdHMgdGhhdCBwcm92aWRlIGJhc2ljIFwKK2Rlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIGZvciBhbnkgRnJlZSBEZXNrdG9wLCBzdWNoIGFzIExpbnV4LiBcCitUaGV5IGFyZSBpbnRlbmRlZCB0byBwcm92aWRlIGEgc2V0IG9mIGRlZmFjdG8gc3RhbmRhcmRzLiBcCitUaGUgZm9sbG93aW5nIHNjcmlwdHMgYXJlIHByb3ZpZGVkIGF0IHRoaXMgdGltZTogXAoreGRnLWRlc2t0b3AtaWNvbiBcCit4ZGctZGVza3RvcC1tZW51IFwKK3hkZy1lbWFpbCBcCit4ZGctaWNvbi1yZXNvdXJjZSBcCit4ZGctbWltZSBcCit4ZGctb3BlbiBcCit4ZGctc2NyZWVuc2F2ZXIgXAoreGRnLXRlcm1pbmFsIFwKKyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNTM2N2E5MDkzNDA5OGQ2YjA1YWYzYjc0NjQwNTAxNCIKKworU1JDX1VSSSA9ICJodHRwOi8vcG9ydGxhbmQuZnJlZWRlc2t0b3Aub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWluc3RhdGUteGRnLXRlcm1pbmFsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtdGhlLWluLXNjcmlwdC1tYW51YWwucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjM2MWU3NWViNzZjOTRkMTlmNmY0ZjMzMGQ4ZWU2MjZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1MTk1MmUyYzZiYjIxMjE0ZTBiYjU0ZTBkZmZhMDU3ZDMwZjU1NjMzMDAyMjVjMjRjMTZmYmE4NDYyNThiY2MiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInhkZy11dGlscy0oP1A8cHZlcj4oKFxkK1tcLlwtX10qKSspKChyY3xhbHBoYXxiZXRhKVxkKyk/KVwuKHRhclwuZ3p8dGd6KSIKKworIyBOZWVkcyBicm9rZW5zZXAgYXMgdGhpcyBkb2Vzbid0IHVzZSBhdXRvbWFrZQoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIFRoZSB4cHJvcCByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitERVBFTkRTID0gInhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ICs9ICJ4cHJvcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MDdkMjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI0LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gImxpYnNvdXAtMi40IHdlYmtpdGd0ayBndGsrMyBpc28tY29kZXMgYXZhaGkgbGlibm90aWZ5IGdjciBcCi0JICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnbm9tZS1kZXNrdG9wMyBsaWJ4bWwyLW5hdGl2ZSBcCi0JICAgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGpzb24tZ2xpYiIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEteWVscC5tNC1kcm9wLXRoZS1jaGVjay1mb3ItaXRzdG9vbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1ib29rbWFya3MtQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi1mcmVhZC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImMwMjIxYWVjNmEwODkzNWU2ODU0ZWFhOWRlOTQ1MWVmIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZmVmNTE2NzYzMTBkOWYzN2UxOGM5YjJkNzc4MjU0MjMyZWIxN2NjY2Q5ODhjMmQxZWNmNDJjN2IyOTYzYTE1NCIKLQotRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLWRpc3RyaWJ1dG9yLW5hbWU9JHtESVNUUk99IC0tZW5hYmxlLWRlYnVnPW5vIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgczpoZWxwOjpnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyIKLVJERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjYuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNTBmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjYuNi5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gImxpYnNvdXAtMi40IHdlYmtpdGd0ayBndGsrMyBpc28tY29kZXMgYXZhaGkgbGlibm90aWZ5IGdjciBcCisJICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnbm9tZS1kZXNrdG9wMyBsaWJ4bWwyLW5hdGl2ZSBcCisJICAgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGpzb24tZ2xpYiIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7R05PTUVCTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0dOT01FQk59LSR7UFZ9LnRhci4ke0dOT01FX0NPTVBSRVNTX1RZUEV9O25hbWU9YXJjaGl2ZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI4NDQ5OTY4MzY2YTZmOWFhZmYzYWMyMjhkZGZjN2M2NiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjAxYjE2YWE1NWQzMTJhZTBmMTdkMzEzNmY5MGQ4YzY4YWM3NDg3MTVmMTE5NDEyZmIxOTE3MDIzYzZmNjMwYTgiCisKK0VYVFJBX09FTUVTT04gKz0gIiAtRGRpc3RyaWJ1dG9yX25hbWU9JHtESVNUUk99IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9nbm9tZS1zaGVsbC9zZWFyY2gtcHJvdmlkZXJzIgorUkRFUEVORFNfJHtQTn0gPSAiaXNvLWNvZGVzIGFkd2FpdGEtaWNvbi10aGVtZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS1ib29rbWFya3MtQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi1mcmVhZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS1ib29rbWFya3MtQ2hlY2stZm9yLXJldHVybi12YWx1ZS1vZi1mcmVhZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRjZDM5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGFhMjE3NmJlMzJlZWQyNTc4ZGE4MmYzNGQzMTE0OGY5MzRjMTFjMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAxNzowMzo0NSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBib29rbWFya3M6IENoZWNrIGZvciByZXR1cm4gdmFsdWUgb2YgZnJlYWQoKQotCi1GaXhlcyBiZWxvdyBjb21waWxlciBlcnJvcgotaWdub3JpbmcgcmV0dXJuIHZhbHVlIG9mICdmcmVhZCcsIGRlY2xhcmVkIHdpdGggYXR0cmlidXRlIHdhcm5fdW51c2VkX3Jlc3VsdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYyBiL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCi1pbmRleCBmZjAyMzliLi44NjMzY2U0IDEwMDY0NAotLS0tIGEvc3JjL2Jvb2ttYXJrcy9lcGh5LWJvb2ttYXJrLmMKLSsrKyBiL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCi1AQCAtMjE3LDcgKzIxNyw4IEBAIGVwaHlfYm9va21hcmtfaW5pdCAoRXBoeUJvb2ttYXJrICpzZWxmKQotICAgYnl0ZXMgPSBnX21hbGxvYyAobnVtX2J5dGVzKTsKLSAKLSAgIGZwID0gZm9wZW4gKCIvZGV2L3VyYW5kb20iLCAiciIpOwotLSAgZnJlYWQgKGJ5dGVzLCBzaXplb2YgKGd1aW50OCksIG51bV9ieXRlcywgZnApOwotKyAgaWYgKGZyZWFkIChieXRlcywgc2l6ZW9mIChndWludDgpLCBudW1fYnl0ZXMsIGZwKSAhPSBudW1fYnl0ZXMpCi0rICAgIGdfd2FybmluZygiVW5hYmxlIHRvIHJlYWQgZGF0YSBmcm9tIC9kZXYvdXJhbmRvbVxuIik7Ci0gCi0gICBzZWxmLT5pZCA9IGdfbWFsbG9jMCAoSURfTEVOICsgMSk7Ci0gICBmb3IgKGdzaXplIGkgPSAwOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAxLXllbHAubTQtZHJvcC10aGUtY2hlY2stZm9yLWl0c3Rvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ODVkN2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAxLXllbHAubTQtZHJvcC10aGUtY2hlY2stZm9yLWl0c3Rvb2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDMwZjAzYTI1NmVmZTM3NWE0ZDVjM2EyNGJmNDE2OGViZjM4MGUzYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzAgSnVsIDIwMTUgMTU6MTM6MjMgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0geWVscC5tNDogZHJvcCB0aGUgY2hlY2sgZm9yIGl0c3Rvb2wKLQotSXQgaXNuJ3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gcHJvdmlkZQotaXQgYXMgYSByZWNpcGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdGFyYmFsbC1zcGVjaWZpYyBpc3N1ZV0KLS0tLQotIG00L3llbHAubTQgfCA2IC0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbTQveWVscC5tNCBiL200L3llbHAubTQKLWluZGV4IDVkYjg0N2YuLjFiNmVkZTQgMTAwNjQ0Ci0tLS0gYS9tNC95ZWxwLm00Ci0rKysgYi9tNC95ZWxwLm00Ci1AQCAtMjcsMTIgKzI3LDYgQEAgQUNfQVJHX1dJVEgoW2hlbHAtZGlyXSwKLSBIRUxQX0RJUj0iJHdpdGhfaGVscF9kaXIiCi0gQUNfU1VCU1QoSEVMUF9ESVIpCi0gCi0tQUNfQVJHX1ZBUihbSVRTVE9PTF0sIFtQYXRoIHRvIHRoZSBgaXRzdG9vbGAgY29tbWFuZF0pCi0tQUNfQ0hFQ0tfUFJPRyhbSVRTVE9PTF0sIFtpdHN0b29sXSwgW2l0c3Rvb2xdKQotLWlmIHRlc3QgeCIkSVRTVE9PTCIgPSB4OyB0aGVuCi0tICBBQ19NU0dfRVJST1IoW2l0c3Rvb2wgbm90IGZvdW5kXSkKLS1maQotLQotIEFDX0FSR19WQVIoW1hNTExJTlRdLCBbUGF0aCB0byB0aGUgYHhtbGxpbnRgIGNvbW1hbmRdKQotIEFDX0NIRUNLX1BST0coW1hNTExJTlRdLCBbeG1sbGludF0sIFt4bWxsaW50XSkKLSBpZiB0ZXN0IHgiJFhNTExJTlQiID0geDsgdGhlbgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMi1oZWxwLW1lc29uLmJ1aWxkLWRpc2FibGUtdGhlLXVzZS1vZi15ZWxwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0OTUxN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGZjMzE0ZmMzYTY2YzkyZmU3M2UxYTBjZWE0ZjQ5ZDExYjI5ZTFmNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMzEgSmFuIDIwMTggMTU6NTA6MzggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGhlbHAvbWVzb24uYnVpbGQ6IGRpc2FibGUgdGhlIHVzZSBvZiB5ZWxwCisKK0luIHBhcnRpY3VsYXIgdGhpcyBhdm9pZHMgY2FsbGluZyBpdHN0b29sIHdoaWNoIG9lLWNvcmUgZG9lc24ndCBwcm92aWRlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGhlbHAvbWVzb24uYnVpbGQgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2hlbHAvbWVzb24uYnVpbGQgYi9oZWxwL21lc29uLmJ1aWxkCitpbmRleCBmNzIwYWRkLi5jYmZlYjFlIDEwMDY0NAorLS0tIGEvaGVscC9tZXNvbi5idWlsZAorKysrIGIvaGVscC9tZXNvbi5idWlsZAorQEAgLTQ2LDggKzQ2LDggQEAgaGVscF9saW5ndWFzID0gWworICAgJ3N2JworIF0KKyAKKy1nbm9tZS55ZWxwKG1lc29uLnByb2plY3RfbmFtZSgpLAorLSAgc291cmNlczogaGVscF9maWxlcywKKy0gIG1lZGlhOiBoZWxwX21lZGlhLAorLSAgbGFuZ3VhZ2VzOiBoZWxwX2xpbmd1YXMsCistKQorKyNnbm9tZS55ZWxwKG1lc29uLnByb2plY3RfbmFtZSgpLAorKyMgIHNvdXJjZXM6IGhlbHBfZmlsZXMsCisrIyAgbWVkaWE6IGhlbHBfbWVkaWEsCisrIyAgbGFuZ3VhZ2VzOiBoZWxwX2xpbmd1YXMsCisrIykKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCmluZGV4IDQ0NTBlMTUuLmE2OGUwZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgpAQCAtOCw3ICs4LDcgQEAKIERFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGd0ayszIHAxMS1raXQgZ2xpYi0yLjAgbGliZ2NyeXB0IFwKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJ2xpYnhzbHQtbmF0aXZlJywgJycsIGQpfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgoraW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCiAjIGRlcGVuZHMgb24gZ3RrKzMsIGJ1dCBhbHNvIHgxMSB0aHJvdWdoIGd0aysteDExCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLUZpeC13aXRob3V0LWxpYnRpZmYtbm90LWhhdmluZy1hbi1lZmZlY3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLUZpeC13aXRob3V0LWxpYnRpZmYtbm90LWhhdmluZy1hbi1lZmZlY3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1NGQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtRml4LXdpdGhvdXQtbGlidGlmZi1ub3QtaGF2aW5nLWFuLWVmZmVjdC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDQ2MGJlZmM5OTJhZGIzMjQzNGIwNDA4YjQ1M2JlMzlhNjg2NmNjZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTAgT2N0IDIwMTcgMTQ6MzM6MTggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IC0td2l0aG91dC1saWJ0aWZmIG5vdCBoYXZpbmcgYW4gZWZmZWN0LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODc3MF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAzMTVlMGNjLi45OGU3ODBjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NzYsNyArNjc2LDcgQEAgaWYgdGVzdCB4JGdpb19jYW5fc25pZmYgPSB4OyB0aGVuCisgICBBQ19ERUZJTkUoR0RLX1BJWEJVRl9VU0VfR0lPX01JTUUsIDEsIFtEZWZpbmUgaWYgZ2lvIGNhbiBzbmlmZiBpbWFnZSBkYXRhXSkKKyBmaQorIAorLUFNX0NPTkRJVElPTkFMKEhBVkVfVElGRiwgdGVzdCAieCRsaWJ0aWZmX2ZvdW5kIiAhPSB4KQorK0FNX0NPTkRJVElPTkFMKEhBVkVfVElGRiwgdGVzdCAieCRsaWJ0aWZmX2ZvdW5kIiAhPSB4bm8pCisgQU1fQ09ORElUSU9OQUwoSEFWRV9QTkcsIHRlc3QgIngkTElCUE5HIiAhPSB4KQorIEFNX0NPTkRJVElPTkFMKEhBVkVfSlBFRywgdGVzdCAieCRMSUJKUEVHIiAhPSB4KQorIEFNX0NPTkRJVElPTkFMKEhBVkVfSkFTUEVSLCB0ZXN0ICJ4JExJQkpBU1BFUiIgIT0geCkKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1xdWVyeWxvYWRlcnMtTWFrZS1vdXRwdXQtbW9yZS1yZXByb2R1Y2libGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhMjE0MTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1xdWVyeWxvYWRlcnMtTWFrZS1vdXRwdXQtbW9yZS1yZXByb2R1Y2libGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIDEwNDlmYmQ4ODdlNTJmOTRhZmViMDNmYzc5NDJjMDFjMTQzZWJkZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogRnJpLCA5IEp1biAyMDE3IDEyOjAxOjI1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHF1ZXJ5bG9hZGVyczogTWFrZSBvdXRwdXQgbW9yZSByZXByb2R1Y2libGUKLQotUmVwcm9kdWNpYmxlIGJ1aWxkcyBhcmUgZ29vZDogU29ydCB0aGUgb3V0cHV0IGJ5IG1vZHVsZSBuYW1lIHNvIHRoYXQKLXNhbWUgaW5wdXQgYWx3YXlzIGxlYWRzIHRvIHNhbWUgb3V0cHV0LgotCi1UaGlzIHNob3VsZCBhbHNvIG1ha2UgZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIG91dHB1dCBhbmQKLWdkay1waXhidWYtdGh1bWJuYWlsZXIudGh1bWJuYWlsZXIgcmVwcm9kdWNpYmxlLgotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzNTkyCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYyB8IDEyICsrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYyBiL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKLWluZGV4IDM5NTY3NGEuLjRhYzliMjggMTAwNjQ0Ci0tLS0gYS9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCi0rKysgYi9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCi1AQCAtMzQ2LDYgKzM0Niw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gI2lmZGVmIFVTRV9HTU9EVUxFCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGg7Ci0gICAgICAgICAgICAgICAgIEdEaXIgKmRpcjsKLSsgICAgICAgICAgICAgICAgR0xpc3QgKmwsICptb2R1bGVzID0gTlVMTDsKLSAKLSAgICAgICAgICAgICAgICAgcGF0aCA9IGdfZ2V0ZW52ICgiR0RLX1BJWEJVRl9NT0RVTEVESVIiKTsKLSAjaWZkZWYgR19PU19XSU4zMgotQEAgLTM2NSwxMiArMzY2LDE5IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGxlbiA9IHN0cmxlbiAoZGVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gU09FWFRfTEVOICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY21wIChkZW50ICsgbGVuIC0gU09FWFRfTEVOLCBTT0VYVCkgPT0gMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzID0gZ19saXN0X3ByZXBlbmQgKG1vZHVsZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19zdHJkdXAgKGRlbnQpKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVyeV9tb2R1bGUgKGNvbnRlbnRzLCBwYXRoLCBkZW50KSkKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRkFMU0U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIGdfZGlyX2Nsb3NlIChkaXIpOwotICAgICAgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgICAgIG1vZHVsZXMgPSBnX2xpc3Rfc29ydCAobW9kdWxlcywgKEdDb21wYXJlRnVuYylzdHJjbXApOwotKyAgICAgICAgICAgICAgICBmb3IgKGwgPSBtb2R1bGVzOyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgbC0+ZGF0YSkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRkFMU0U7Ci0rCi0rICAgICAgICAgICAgICAgIGdfbGlzdF9mcmVlX2Z1bGwgKG1vZHVsZXMsIGdfZnJlZSk7Ci0gI2Vsc2UKLSAgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoY29udGVudHMsICIjIGR5bmFtaWMgbG9hZGluZyBvZiBtb2R1bGVzIG5vdCBzdXBwb3J0ZWRcbiIpOwotICNlbmRpZgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi9mYXRhbC1sb2FkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi9mYXRhbC1sb2FkZXIucGF0Y2gKaW5kZXggNzAxNDZjNi4uN2QwZDU0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvZmF0YWwtbG9hZGVyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL2ZhdGFsLWxvYWRlci5wYXRjaApAQCAtMSwxMSArMSwyMCBAQAorRnJvbSBiNmE3YjMwNTIyNDU1Y2FiMzlhMGI5ZWE4NDYzMzEzMzgwMTQ2ZTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMSBBcHIgMjAxNCAxNzoyMzozNiArMDEwMAorU3ViamVjdDogW1BBVENIIDMvNF0gZ2RrLXBpeGJ1ZjogYWRkIGFuIG9wdGlvbiBzbyB0aGF0IGxvYWRlciBlcnJvcnMgYXJlIGZhdGFsCisKIElmIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNwZWNpZmllZCBzZXQgdGhlIHJldHVybiB2YWx1ZSBmcm9tIG1haW4oKSB0bwogbm9uLXplcm8gaWYgdGhlIGxvYWRlciBoYWQgZXJyb3JzIChtaXNzaW5nIGxpYnJhcmllcywgZ2VuZXJhbGx5KS4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBnZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jIHwgMTkgKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYyBiL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKLWluZGV4IGE5Y2EwMTUuLjM5NTY3NGEgMTAwNjQ0CitpbmRleCBhODFjODA0Li4zNTBiZWM4IDEwMDY0NAogLS0tIGEvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYwogKysrIGIvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYwogQEAgLTE0Niw3ICsxNDYsNyBAQCB3cml0ZV9sb2FkZXJfaW5mbyAoR1N0cmluZyAqY29udGVudHMsIGNvbnN0IGNoYXIgKnBhdGgsIEdka1BpeGJ1ZkZvcm1hdCAqaW5mbykKQEAgLTQ3LDE3ICs1NiwxOCBAQAogIAogICNpZmRlZiBHX09TX1dJTjMyCiAgICAgICAgICBnY2hhciAqbGliZGlyOwotQEAgLTM2MCw3ICszNjUsOCBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBsZW4gPSBzdHJsZW4gKGRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IFNPRVhUX0xFTiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNtcCAoZGVudCArIGxlbiAtIFNPRVhUX0xFTiwgU09FWFQpID09IDApIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgZGVudCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgZGVudCkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICBnX2Rpcl9jbG9zZSAoZGlyKTsKLUBAIC0zNzgsNyArMzg0LDggQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0zNzAsNyArMzc1LDkgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBtb2R1bGVzID0gZ19saXN0X3NvcnQgKG1vZHVsZXMsIChHQ29tcGFyZUZ1bmMpc3RyY21wKTsKKyAgICAgICAgICAgICAgICAgZm9yIChsID0gbW9kdWxlczsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkKKy0gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeV9tb2R1bGUgKGNvbnRlbnRzLCBwYXRoLCBsLT5kYXRhKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGwtPmRhdGEpKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZBTFNFOworKworICAgICAgICAgICAgICAgICBnX2xpc3RfZnJlZV9mdWxsIChtb2R1bGVzLCBnX2ZyZWUpOworICNlbHNlCisgICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKGNvbnRlbnRzLCAiIyBkeW5hbWljIGxvYWRpbmcgb2YgbW9kdWxlcyBub3Qgc3VwcG9ydGVkXG4iKTsKK0BAIC0zODUsNyArMzkyLDggQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZpbGVuYW1lID0gZ19sb2NhbGVfdG9fdXRmOCAoaW5maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIE5VTEwsIE5VTEwsIE5VTEwpOwogICNlbmRpZgpAQCAtNjcsNyArNzcsNyBAQAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGdfZnJlZSAoY3dkKTsKICAgICAgICAgIH0KLUBAIC0zOTQsNSArNDAxLDggQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC00MDEsNSArNDA5LDggQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgZ19wcmludCAoIiVzXG4iLCBjb250ZW50cy0+c3RyKTsKICAKQEAgLTc3LDMgKzg3LDYgQEAKICsgICAgICAgIGVsc2UKICsgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgfQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zNi4xMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljODRjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuMTEuYmIKQEAgLTAsMCArMSwxMDIgQEAKK1NVTU1BUlkgPSAiSW1hZ2UgbG9hZGluZyBsaWJyYXJ5IGZvciBHVEsrIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGsub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi5oO2VuZGxpbmU9MjY7bWQ1PTcyYjM5ZGE3Y2JkZGUyZTY2NTMyOWZlZjYxOGUxZDZiIgorCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2RrLXBpeGJ1Zi1uYXRpdmUgc2hhcmVkLW1pbWUtaW5mbyIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2V4dGVuZGluZy1saWJpbnN0YWxsLWRlcGVuZGVuY2llcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZmF0YWwtbG9hZGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYWlsdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXdpdGhvdXQtbGlidGlmZi1ub3QtaGF2aW5nLWFuLWVmZmVjdC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjZlODRlNTQ4NWMxN2NlN2MyNWRmNzdmZTc2ZWIyZDZhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFlNjJhYjg3MjUwNDEzMTU2ZWQ3MmVmNzU2MzQ3YjEwMjA4YzAwZTc2YjIyMmQ4MmQ5ZWQzNjFlZDlkZGUyZjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQorCitMSUJWID0gIjIuMTAuMCIKKworR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKK1BBQ0tBR0VDT05GSUdfbGludXhzdGRiYXNlID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSAke0dES19QSVhCVUZfTE9BREVSU30iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIke0dES19QSVhCVUZfTE9BREVSU30iCisKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItLXdpdGgtbGlicG5nLC0td2l0aG91dC1saWJwbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLXdpdGgtbGlianBlZywtLXdpdGhvdXQtbGlianBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLXdpdGgtbGlidGlmZiwtLXdpdGhvdXQtbGlidGlmZix0aWZmIgorUEFDS0FHRUNPTkZJR1tqcGVnMjAwMF0gPSAiLS13aXRoLWxpYmphc3BlciwtLXdpdGhvdXQtbGliamFzcGVyLGphc3BlciIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14MTEsLS13aXRob3V0LXgxMSx2aXJ0dWFsL2xpYngxMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXhsaWIiCisKKyMgRm9yIEdJTyBpbWFnZSB0eXBlIHNuaWZmaW5nCitSREVQRU5EU18ke1BOfSA9ICJzaGFyZWQtbWltZS1pbmZvIgorCitGSUxFU18ke1BOfS14bGliID0gIiR7bGliZGlyfS8qcGl4YnVmX3hsaWIqJHtTT0xJQlN9IgorQUxMT1dfRU1QVFlfJHtQTn0teGxpYiA9ICIxIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworRklMRVNfJHtQTn0tYmluICs9ICIke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisJJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCisgICAgICAgICR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAorCSR7aW5jbHVkZWRpcn0vKiBcCisJJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy8qLmxhIFwKKyIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmdkay1waXhidWYtbG9hZGVyLS4qIgorUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmUgPSAiIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgcG9zdGluc3RfcGl4YnVmbG9hZGVyID0gZC5nZXRWYXIoInBvc3RpbnN0X3BpeGJ1ZmxvYWRlciIpCisKKyAgICBsb2FkZXJzX3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycycpCisKKyAgICBwYWNrYWdlcyA9ICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxvYWRlcnNfcm9vdCwgJ15saWJwaXhidWZsb2FkZXItKC4qKVwuc28kJywgJ2dkay1waXhidWYtbG9hZGVyLSVzJywgJ0dESyBwaXhidWYgbG9hZGVyIGZvciAlcycpKQorICAgIGQuc2V0VmFyKCdQSVhCVUZfUEFDS0FHRVMnLCBwYWNrYWdlcykKKworICAgICMgVGhlIHRlc3Qgc3VpdGUgZXhlcmNpc2VzIGFsbCB0aGUgbG9hZGVycywgc28gZW5zdXJlIHRoZXkgYXJlIGFsbAorICAgICMgZGVwZW5kZW5jaWVzIG9mIHRoZSBwdGVzdCBwYWNrYWdlLgorICAgIGQuYXBwZW5kVmFyKCJSREVQRU5EU18lcy1wdGVzdCIgJSBkLmdldFZhcignUE4nKSwgIiAiICsgcGFja2FnZXMpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92ZSBnZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgaW50byBsaWJkaXIgc28gaXQgaXMgYWx3YXlzIGF2YWlsYWJsZQorCSMgaW4gbXVsdGlsaWIgYnVpbGRzLgorCW12ICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcXVlcnktbG9hZGVycyAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZSBcCisJCUdES19QSVhCVUZfTU9EVUxFRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMKK30KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zNi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zNi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzM1OTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1TVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9leHRlbmRpbmctbGliaW5zdGFsbC1kZXBlbmRlbmNpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmFpbHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXF1ZXJ5bG9hZGVycy1NYWtlLW91dHB1dC1tb3JlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImUwYWFhMDA2MWViMTI2NjdiMzJiMjc0NzIyMzBiOTYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkNjhlNTI4M2NkYzBiZjliZGE5OWMzZTZhMWQ1MmFkMDdhMDMzNjRmYTE4NmI2YzI2Y2ZjODZmY2QzOTZhMTkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQotCi1MSUJWID0gIjIuMTAuMCIKLQotR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLVBBQ0tBR0VDT05GSUdfbGludXhzdGRiYXNlID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSAke0dES19QSVhCVUZfTE9BREVSU30iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIke0dES19QSVhCVUZfTE9BREVSU30iCi0KLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLXdpdGgtbGlicG5nLC0td2l0aG91dC1saWJwbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLXdpdGgtbGlianBlZywtLXdpdGhvdXQtbGlianBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLXdpdGgtbGlidGlmZiwtLXdpdGhvdXQtbGlidGlmZix0aWZmIgotUEFDS0FHRUNPTkZJR1tqcGVnMjAwMF0gPSAiLS13aXRoLWxpYmphc3BlciwtLXdpdGhvdXQtbGliamFzcGVyLGphc3BlciIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14MTEsLS13aXRob3V0LXgxMSx2aXJ0dWFsL2xpYngxMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXhsaWIiCi0KLSMgRm9yIEdJTyBpbWFnZSB0eXBlIHNuaWZmaW5nCi1SREVQRU5EU18ke1BOfSA9ICJzaGFyZWQtbWltZS1pbmZvIgotCi1GSUxFU18ke1BOfS14bGliID0gIiR7bGliZGlyfS8qcGl4YnVmX3hsaWIqJHtTT0xJQlN9IgotQUxMT1dfRU1QVFlfJHtQTn0teGxpYiA9ICIxIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKLQotRklMRVNfJHtQTn0tYmluICs9ICIke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0JJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCi0JJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0gICAgICAgICR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAotCSR7aW5jbHVkZWRpcn0vKiBcCi0JJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy8qLmxhIFwKLSIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmdkay1waXhidWYtbG9hZGVyLS4qIgotUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmUgPSAiIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgcG9zdGluc3RfcGl4YnVmbG9hZGVyID0gZC5nZXRWYXIoInBvc3RpbnN0X3BpeGJ1ZmxvYWRlciIpCi0KLSAgICBsb2FkZXJzX3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycycpCi0KLSAgICBwYWNrYWdlcyA9ICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxvYWRlcnNfcm9vdCwgJ15saWJwaXhidWZsb2FkZXItKC4qKVwuc28kJywgJ2dkay1waXhidWYtbG9hZGVyLSVzJywgJ0dESyBwaXhidWYgbG9hZGVyIGZvciAlcycpKQotICAgIGQuc2V0VmFyKCdQSVhCVUZfUEFDS0FHRVMnLCBwYWNrYWdlcykKLQotICAgICMgVGhlIHRlc3Qgc3VpdGUgZXhlcmNpc2VzIGFsbCB0aGUgbG9hZGVycywgc28gZW5zdXJlIHRoZXkgYXJlIGFsbAotICAgICMgZGVwZW5kZW5jaWVzIG9mIHRoZSBwdGVzdCBwYWNrYWdlLgotICAgIGQuYXBwZW5kVmFyKCJSREVQRU5EU18lcy1wdGVzdCIgJSBkLmdldFZhcignUE4nKSwgIiAiICsgcGFja2FnZXMpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgTW92ZSBnZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgaW50byBsaWJkaXIgc28gaXQgaXMgYWx3YXlzIGF2YWlsYWJsZQotCSMgaW4gbXVsdGlsaWIgYnVpbGRzLgotCW12ICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcXVlcnktbG9hZGVycyAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZSBcCi0JCUdES19QSVhCVUZfTU9EVUxFRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMKLX0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGIwNzQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA5ZGZhZGEwNmY4ZDJlMDJkN2EwNGY3OTNiYTZlMWQ0YTJhYTVmZmI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDUgT2N0IDIwMTcgMTQ6NTQ6MTcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBsaWJzZWNjb21wIChzeWNhbGwgZmlsdGVyaW5nIG1lY2hhbmlzbSkKKworVXBzdHJlYW0gZm9yZ290IHRvIG1ha2UgaXQgb3B0aW9uYWwsIGFuZCBpdCBpcyBub3QgY3VycmVudGx5IHVzZWQgaW4gWW9jdG8KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMSAtLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODZiY2YxZi4uODkxMWYxOSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTU3LDE3ICsxNTcsNiBAQCBlbHNlCisgZmkKKyAKKyBTRUNDT01QX1BLRz0iIgorLWRubCBDaGVjayBmb3IgYnViYmxld3JhcCBjb21wYXRpYmxlIHBsYXRmb3JtCistY2FzZSAkaG9zdF9vcyBpbgorLSAgbGludXgqKQorLSAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJTRUNDT01QLCBbbGlic2VjY29tcF0pCistICAgIFNFQ0NPTVBfUEtHPSJsaWJzZWNjb21wIgorLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoX0dOVV9TT1VSQ0UsIDEsIFtEZWZpbmUgdG8gaW5jbHVkZSBHTlUgZXh0ZW5zaW9uc10pCistICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0JXUkFQLCAxLCBbRGVmaW5lIHRvIDEgaWYgQnViYmxld3JhcCBzdXBwb3J0IGlzIGF2YWlsYWJsZV0pCistICAgIEFDX0RFRklORShbRU5BQkxFX1NFQ0NPTVBdLCBbMV0sIFtEZWZpbmUgaWYgdXNpbmcgc2VjY29tcF0pCistICAgIEFDX0RFRklORV9VTlFVT1RFRChJTlNUQUxMX1BSRUZJWCwgIiRwcmVmaXgiLCBbUGF0aCB0byBsaWJyYXJ5IGluc3RhbGwgcHJlZml4XSkKKy0gICAgOzsKKy1lc2FjCisgCisgZG5sIHBrZy1jb25maWcgZGVwZW5kZW5jeSBjaGVja3MKKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWFzc3VtZS10aW1lX3QtaXMtbG9uZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWFzc3VtZS10aW1lX3QtaXMtbG9uZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2MxNTJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtYXNzdW1lLXRpbWVfdC1pcy1sb25nLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK0Zyb20gOTA0ODkzOWI3NmIzYmQxMDc4M2FkYjc5ZWQwYWFmNmNkMTM4OTVjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CitEYXRlOiBUdWUsIDEzIERlYyAyMDE2IDIwOjM5OjUxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBnbm9tZS1kZXNrdG9wLXRodW1ibmFpbDogZG9uJ3QgY29udmVydCB0aW1lX3QgdG8gbG9uZworCitFeHBsaWNpdGx5IHVzZSBzdHJmdGltZStzdHJwdGltZSByYXRoZXIgdGhhbiBzbnByaW50ZithdG9sLiBUaGlzIGZpeGVzIHRoZQorYnVpbGQgZm9yIFgzMiwgd2hlcmUgbG9uZydzIHNpemUgZG9lc24ndCBtYXRjaCB0aGF0IG9mIHRpbWVfdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorCisKK01vZGlmeSBwYXRjaCBkZXNjcmliZWQgYWJvdmUgdG8gZWxpbWluYXRlIHJlcGxhY2VtZW50IG9mCisKK2dfc25wcmludGYgKG10aW1lX3N0ciwgMjEsICIlIiBHX0dJTlQ2NF9GT1JNQVQsIChnaW50NjQpIG10aW1lKQorCit3aGljaCBpcyBub3QgbmVjZXNzYXJ5LiAgUmV0YWluIHJlcGxhY2VtZW50IG9mIGF0b2woKS4KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCistLS0KKyBsaWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMgfCAxNiArKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMgYi9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKK2luZGV4IGU1NmMzZDcuLjVkOTZiZjMgMTAwNjQ0CistLS0gYS9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKKysrKyBiL2xpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwuYworQEAgLTEyMCw2ICsxMjAsOCBAQAorICAqIFNpbmNlOiAyLjIKKyAgKi8KKyAKKysjZGVmaW5lIF9YT1BFTl9TT1VSQ0UKKysKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgCisgI2luY2x1ZGUgPGdsaWIuaD4KK0BAIC0xMzE5LDYgKzEzMjYsNyBAQCBnbm9tZV9kZXNrdG9wX3RodW1ibmFpbF9pc192YWxpZCAoR2RrUGl4YnVmICAgICAgICAgICpwaXhidWYsCisgeworICAgY29uc3QgY2hhciAqdGh1bWJfdXJpLCAqdGh1bWJfbXRpbWVfc3RyOworICAgdGltZV90IHRodW1iX210aW1lOworKyAgc3RydWN0IHRtIHRtcF9tdGltZTsKKyAKKyAgIHRodW1iX3VyaSA9IGdka19waXhidWZfZ2V0X29wdGlvbiAocGl4YnVmLCAidEVYdDo6VGh1bWI6OlVSSSIpOworICAgaWYgKGdfc3RyY21wMCAodXJpLCB0aHVtYl91cmkpICE9IDApCitAQCAtMTMyNyw3ICsxMzM1LDExIEBAIGdub21lX2Rlc2t0b3BfdGh1bWJuYWlsX2lzX3ZhbGlkIChHZGtQaXhidWYgICAgICAgICAgKnBpeGJ1ZiwKKyAgIHRodW1iX210aW1lX3N0ciA9IGdka19waXhidWZfZ2V0X29wdGlvbiAocGl4YnVmLCAidEVYdDo6VGh1bWI6Ok1UaW1lIik7CisgICBpZiAoIXRodW1iX210aW1lX3N0cikKKyAgICAgcmV0dXJuIEZBTFNFOworLSAgdGh1bWJfbXRpbWUgPSBhdG9sICh0aHVtYl9tdGltZV9zdHIpOworKyAgaWYgKCFzdHJwdGltZSAodGh1bWJfbXRpbWVfc3RyLCAiJXMiLCAmdG1wX210aW1lKSkKKysgICAgcmV0dXJuIEZBTFNFOworKyAgdGh1bWJfbXRpbWUgPSBta3RpbWUgKCZ0bXBfbXRpbWUpOworKyAgaWYgKCF0aHVtYl9tdGltZSkKKysgICAgcmV0dXJuIEZBTFNFOworICAgaWYgKG10aW1lICE9IHRodW1iX210aW1lKQorICAgICByZXR1cm4gRkFMU0U7CisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1jb252ZXJ0LXRpbWVfdC10by1sb25nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtY29udmVydC10aW1lX3QtdG8tbG9uZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThhMDY5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1jb252ZXJ0LXRpbWVfdC10by1sb25nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSBhZGZhMGM4ZjlmZWMxZmFhYzRiZWE2YTk0ZDk0N2VhMzJlNTg1OTIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLURhdGU6IFR1ZSwgMTMgRGVjIDIwMTYgMjA6Mzk6NTEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ25vbWUtZGVza3RvcC10aHVtYm5haWw6IGRvbid0IGNvbnZlcnQgdGltZV90IHRvIGxvbmcKLQotRXhwbGljaXRseSB1c2Ugc3RyZnRpbWUrc3RycHRpbWUgcmF0aGVyIHRoYW4gc25wcmludGYrYXRvbC4gVGhpcyBmaXhlcyB0aGUKLWJ1aWxkIGZvciBYMzIsIHdoZXJlIGxvbmcncyBzaXplIGRvZXNuJ3QgbWF0Y2ggdGhhdCBvZiB0aW1lX3QuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLS0tLQotIGxpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwuYyB8IDE2ICsrKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwuYyBiL2xpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwuYwotaW5kZXggMzk0NjMwOS4uYjc1NjMzMyAxMDA2NDQKLS0tLSBhL2xpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwuYwotKysrIGIvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jCi1AQCAtMTI2LDYgKzEyNiw4IEBACi0gICogU2luY2U6IDIuMgotICAqLwotIAotKyNkZWZpbmUgX1hPUEVOX1NPVVJDRQotKwotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1AQCAtMTQ4Myw2ICsxNDg1LDcgQEAgc2F2ZV90aHVtYm5haWwgKEdka1BpeGJ1ZiAgKnBpeGJ1ZiwKLSAgIGNoYXIgKnRtcF9wYXRoID0gTlVMTDsKLSAgIGludCB0bXBfZmQ7Ci0gICBjaGFyIG10aW1lX3N0clsyMV07Ci0rICBzdHJ1Y3QgdG0gKnRtcF9tdGltZSA9IE5VTEw7Ci0gICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKLSAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotICAgY29uc3QgY2hhciAqd2lkdGgsICpoZWlnaHQ7Ci1AQCAtMTUwMiw3ICsxNTA1LDExIEBAIHNhdmVfdGh1bWJuYWlsIChHZGtQaXhidWYgICpwaXhidWYsCi0gICAgIGdvdG8gb3V0OwotICAgY2xvc2UgKHRtcF9mZCk7Ci0gCi0tICBnX3NucHJpbnRmIChtdGltZV9zdHIsIDIxLCAiJWxkIiwgIG10aW1lKTsKLSsgIHRtcF9tdGltZSA9IGxvY2FsdGltZSAoJm10aW1lKTsKLSsgIGlmICghdG1wX210aW1lKQotKyAgICBnb3RvIG91dDsKLSsgIHN0cmZ0aW1lIChtdGltZV9zdHIsIDIxLCAiJXMiLCB0bXBfbXRpbWUpOwotKyAgZnJlZSAodG1wX210aW1lKTsKLSAgIHdpZHRoID0gZ2RrX3BpeGJ1Zl9nZXRfb3B0aW9uIChwaXhidWYsICJ0RVh0OjpUaHVtYjo6SW1hZ2U6OldpZHRoIik7Ci0gICBoZWlnaHQgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpJbWFnZTo6SGVpZ2h0Iik7Ci0gCi1AQCAtMTY5NSw2ICsxNzAyLDcgQEAgZ25vbWVfZGVza3RvcF90aHVtYm5haWxfaXNfdmFsaWQgKEdka1BpeGJ1ZiAgICAgICAgICAqcGl4YnVmLAotIHsKLSAgIGNvbnN0IGNoYXIgKnRodW1iX3VyaSwgKnRodW1iX210aW1lX3N0cjsKLSAgIHRpbWVfdCB0aHVtYl9tdGltZTsKLSsgIHN0cnVjdCB0bSB0bXBfbXRpbWU7Ci0gICAKLSAgIHRodW1iX3VyaSA9IGdka19waXhidWZfZ2V0X29wdGlvbiAocGl4YnVmLCAidEVYdDo6VGh1bWI6OlVSSSIpOwotICAgaWYgKCF0aHVtYl91cmkpCi1AQCAtMTcwNSw3ICsxNzEzLDExIEBAIGdub21lX2Rlc2t0b3BfdGh1bWJuYWlsX2lzX3ZhbGlkIChHZGtQaXhidWYgICAgICAgICAgKnBpeGJ1ZiwKLSAgIHRodW1iX210aW1lX3N0ciA9IGdka19waXhidWZfZ2V0X29wdGlvbiAocGl4YnVmLCAidEVYdDo6VGh1bWI6Ok1UaW1lIik7Ci0gICBpZiAoIXRodW1iX210aW1lX3N0cikKLSAgICAgcmV0dXJuIEZBTFNFOwotLSAgdGh1bWJfbXRpbWUgPSBhdG9sICh0aHVtYl9tdGltZV9zdHIpOwotKyAgaWYgKCFzdHJwdGltZSAodGh1bWJfbXRpbWVfc3RyLCAiJXMiLCAmdG1wX210aW1lKSkKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgdGh1bWJfbXRpbWUgPSBta3RpbWUgKCZ0bXBfbXRpbWUpOwotKyAgaWYgKCF0aHVtYl9tdGltZSkKLSsgICAgcmV0dXJuIEZBTFNFOwotICAgaWYgKG10aW1lICE9IHRodW1iX210aW1lKQotICAgICByZXR1cm4gRkFMU0U7Ci0gICAKLS0tIAotMi44LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWMyMTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgbGlicmFyeSBmb3IgcmVhZGluZyAuZGVza3RvcCBmaWxlcyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotQlBOID0gImdub21lLWRlc2t0b3AiCi0KLWluaGVyaXQgZ25vbWUgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImFmN2M2YTI0M2RmN2EzMzVhMDEwYmRjMDViMzRjYTkzIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOGZhMWRlNjZhNmE3NTk2M2JmZmM3OWIwMWE2MDQzNGM3MTIzN2Q0NGM1MWJlY2EwOWMwZjcxNGEwMzJkNzg1ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWNvbnZlcnQtdGltZV90LXRvLWxvbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggXAotIgotCi1ERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnY29uZiB2aXJ0dWFsL2xpYngxMSBndGsrMyBnbGliLTIuMCBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyB1ZGV2IgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBndGstZG9jCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlc2t0b3AtZG9jcyIKLQotUEFDS0FHRVMgPSsgImxpYmdub21lLWRlc2t0b3AzIgotRklMRVNfbGliZ25vbWUtZGVza3RvcDMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtkYXRhZGlyfS9saWJnbm9tZS1kZXNrdG9wKi9wbnAuaWRzICR7ZGF0YWRpcn0vZ25vbWUvKnhtbCIKLQotUlJFQ09NTUVORFNfbGliZ25vbWUtZGVza3RvcDMgKz0gImdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzlkYzlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjYuMi5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCitTRUNUSU9OID0gIngxMS9nbm9tZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCisKK0JQTiA9ICJnbm9tZS1kZXNrdG9wIgorCitpbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2Y2VlMmVjZDY3N2Q4N2VhYTBlYjVlYmZhN2I0NWZiMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImY3NTYxYTdhMzEzZmM0NzRiMmMzOTBjZDk2OTZkZjFmNWMxZTE1NTYwODBlNDNmNGFmZTA0MmIxMDYwZTVmMmEiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtUmVtb3ZlLWdub21lLWNvbW1vbi1tYWNyby1jYWxscy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaCBcCisgICAgICAgICAgICIKKworREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ2NvbmYgdmlydHVhbC9saWJ4MTEgZ3RrKzMgZ2xpYi0yLjAgc3RhcnR1cC1ub3RpZmljYXRpb24geGtleWJvYXJkLWNvbmZpZyBpc28tY29kZXMgdWRldiIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCisKK1BBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKK0ZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCisKK1JSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaAppbmRleCBlN2FjOTdiLi45NmVjOTZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaApAQCAtMSwyOSArMSwyNyBAQAotRnJvbSBkMmI5YWQ4YTgwYmY5MzIwZmUzNWM5YWVlOGY1MmU1NWViZDQwZTA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4OGVkOTk2Y2M5ZTJiMjk2Y2FjZmRiZWVjZTRiZTI4YTkwYmFiNTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTQ6NTU6NDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgdXNlIEFDX0NBTk9OSUNBTF9IT1NUCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBEb24ndCB1c2UgQUNfQ0FOT05JQ0FMX0hPU1QKIAogVGhpcyB3b24ndCB3b3JrIHdoZW4gYnVpbGRpbmcgYWxsYXJjaCAoYW5kIGlzIG9ubHkgdXNlZCB0byBmaW5kIG91dCBpZgogdGFyZ2V0IGlzIHdpbmRvd3MpLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjIHwgMSAtCiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZDg1NWI3YS4uNjkwOGY1OSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCitJbmRleDogYWR3YWl0YS1pY29uLXRoZW1lLTMuMjYuMS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhZHdhaXRhLWljb24tdGhlbWUtMy4yNi4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgYWR3YWl0YS1pY29uLXRoZW1lLTMuMjYuMS9jb25maWd1cmUuYWMKIEBAIC0zLDcgKzMsNiBAQCBBQ19QUkVSRVEoMi41MykKICAKLSBBQ19JTklUKFthZHdhaXRhLWljb24tdGhlbWVdLCBbMy4yNC4wXSwKKyBBQ19JTklUKFthZHdhaXRhLWljb24tdGhlbWVdLCBbMy4yNi4xXSwKICAgICAgICAgIFtodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1hZHdhaXRhLWljb24tdGhlbWVdKQogLUFDX0NBTk9OSUNBTF9IT1NUCiAgQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQogIEFDX0NPTkZJR19TUkNESVIoW2luZGV4LnRoZW1lLmluXSkKICAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzQwNTM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKyBpY29uIHRoZW1lIgotSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvYWR3YWl0YS1pY29uLXRoZW1lLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUnVuLWluc3RhbGxhdGlvbi1jb21tYW5kcy1hcy1zaGVsbC1qb2JzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2NjYWMwZDYwMGZmYzkzNmQyYWRmYjgwZTkyNDViYzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NmNzlmZjNiZDM0MDI1NDczN2NlNGQyOGI4N2YwY2NlZTRiMzM1OGNkM2NkNWNkMTFkYzdiNDJmNDFiMjcyYSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6Ci0gICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgotCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKLQkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKLX0KLQotUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKLQotUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLQotRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKLUZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCi0gICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKLUZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCi0gICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDM3ZDVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yNi4xLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiR1RLKyBpY29uIHRoZW1lIgorSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvYWR3YWl0YS1pY29uLXRoZW1lLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCisKK0xJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUnVuLWluc3RhbGxhdGlvbi1jb21tYW5kcy1hcy1zaGVsbC1qb2JzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2VmODdlNzg5NzExZTUxMzA3OTJkNGI1MzY2YzAwNWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjhiYTczOTJjNzc2MTk5NmVmZDc4MDc3OTE2N2VhNmM5NDBlZWRmYjFiZjM3Y2ZlOWJjY2I3MDIxZjU0ZDc5ZCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6CisgICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgorCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKKwkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKK30KKworUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKKworUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKKworRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCisgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKK0ZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCisgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmYvY3JlYXRlX2NvbmZpZ19kaXJlY3RvcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mL2NyZWF0ZV9jb25maWdfZGlyZWN0b3J5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNzJlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mL2NyZWF0ZV9jb25maWdfZGlyZWN0b3J5LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbiBzb21lIGNpcmN1bXN0YW5jZXMsIGdjb25mIGlzbid0IGFibGUgdG8gc2F2ZSBjb25maWd1cmF0aW9ucworYmVjYXVzZSB+Ly5jb25maWcgZm9sZGVyIGFrYSByb290X2RpciBkb2Vzbid0IGV4aXN0LgorVGhpcyBpc3N1ZSB3YXMgbm90IHNlZW4gYmVmb3JlIGJlY2F1c2Ugfi8uY29uZmlnIGRpcmVjdG9yeSBpcyBzaGFyZWQKK2JldHdlZW4gc2V2ZXJhbCBwYWNrYWdlcyBhbmQgb25lIG9mIHRob3NlIHBhY2thZ2VzIHVzdWFsbHkgY3JlYXRlcyBpdAorYnkgdGhlIHRpbWUgZ2NvbmYgd2FudHMgdG8gdXNlIGl0LgorCitUaGlzIHBhdGNoIG1ha2VzIHN1cmUgdGhhdCBnY29uZiBjcmVhdGVzIHRoZSAuY29uZmlnIGRpcmVjdG9yeSBpZiBpdAorZG9lc24ndCBleGlzdCwgYWxvbmcgd2l0aCB0aGUgZ2NvbmYgZGlyZWN0b3J5IGluc2lkZSBpdC4KKworU2lnbmVkLW9mZi1ieTogSmFld29uIExlZSA8amFld29uLmxlZUB4aWxpbnguY29tPgorU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJAeGlsaW54LmNvbT4KKworCitJbmRleDogR0NvbmYtMy4yLjYvYmFja2VuZHMvbWFya3VwLWJhY2tlbmQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIEdDb25mLTMuMi42Lm9yaWcvYmFja2VuZHMvbWFya3VwLWJhY2tlbmQuYworKysrIEdDb25mLTMuMi42L2JhY2tlbmRzL21hcmt1cC1iYWNrZW5kLmMKK0BAIC0yNzYsNyArMjc2LDcgQEAgcmVzb2x2ZV9hZGRyZXNzIChjb25zdCBjaGFyICphZGRyZXNzLAorICAgICAgIC8qIGRpcl9tb2RlIHdpdGhvdXQgc2VhcmNoIGJpdHMgKi8KKyAgICAgICBmaWxlX21vZGUgPSBkaXJfbW9kZSAmICh+MDExMSk7CisgICAgIH0KKy0gIGVsc2UgaWYgKGdfbWtkaXIgKHJvb3RfZGlyLCBkaXJfbW9kZSkgPCAwKQorKyAgZWxzZSBpZiAoZ19ta2Rpcl93aXRoX3BhcmVudHMgKHJvb3RfZGlyLCBkaXJfbW9kZSkgPCAwKQorICAgICB7CisgICAgICAgLyogRXJyb3Igb3V0IGV2ZW4gb24gRUVYSVNUIC0gc2hvdWxkbid0IGhhcHBlbiBhbnl3YXkgKi8KKyAgICAgICBnY29uZl9zZXRfZXJyb3IgKGVyciwgR0NPTkZfRVJST1JfRkFJTEVELApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZl8zLjIuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIKaW5kZXggOTJmZDEyYy4uMTIwYWUzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZl8zLjIuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mXzMuMi42LmJiCkBAIC0xMSw2ICsxMSw3IEBACiBTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9HQ29uZi8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9L0dDb25mLSR7UFZ9LnRhci54ejtuYW1lPWFyY2hpdmUgXAogICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX3BsdXNfZnJvbV9pbnZhbGlkX2NoYXJhY3RlcnNfbGlzdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91bmFibGUtY29ubmVjdC1kYnVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NyZWF0ZV9jb25maWdfZGlyZWN0b3J5LnBhdGNoIFwKICIKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMmIxNjk5NmQwZTRiMTEyODU2ZWU1YzU5MTMwZTgyMmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYzUyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIGU0OGYxZTE4ZjVlYTQxNjU2ZjBiYTEwZmU2MWQ2OWQyNjA0YjAwNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMyBKYW4gMjAxOCAxNzowMjowMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGFkZCBhIC0tbGliLWRpcnMtZW52dmFyIG9wdGlvbgorCitCeSBkZWZhdWx0IExEX0xJQlJBUllfUEFUSCBpcyBzZXQgdG8gdGhlIGxpc3Qgb2YgdGFyZ2V0IGxpYnJhcnkgcGF0aHM7Cit0aGlzIGJyZWFrcyBkb3duIGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50LCBhcyB3ZSBuZWVkIHRvIHJ1biBhCituYXRpdmUgZW11bGF0aW9uIHdyYXBwZXIgcmF0aGVyIHRoYW4gdGhlIHRhcmdldCBiaW5hcnkgaXRzZWxmLiBUaGlzIHBhdGNoCithbGxvd3MgZXhwb3J0aW5nIHRob3NlIHBhdGhzIHRvIGEgZGlmZmVyZW50IGVudmlyb25tZW50IHZhcmlhYmxlCit3aGljaCBjYW4gYmUgcGlja2VkIHVwIGFuZCB1c2VkIGJ5IHRoZSB3cmFwcGVyLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyBnaXNjYW5uZXIvY2NvbXBpbGVyLnB5ICAgfCA0ICsrLS0KKyBnaXNjYW5uZXIvZHVtcGVyLnB5ICAgICAgfCAzICsrLQorIGdpc2Nhbm5lci9zY2FubmVybWFpbi5weSB8IDMgKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9naXNjYW5uZXIvY2NvbXBpbGVyLnB5IGIvZ2lzY2FubmVyL2Njb21waWxlci5weQoraW5kZXggMjlkZTBlZS4uOTI4ZWFlOCAxMDA2NDQKKy0tLSBhL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKKysrKyBiL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKK0BAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgQ0NvbXBpbGVyKG9iamVjdCk6CisgCisgICAgICAgICAgICAgc2VsZi5fY2ZsYWdzX25vX2RlcHJlY2F0aW9uX3dhcm5pbmdzID0gIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCisgCistICAgIGRlZiBnZXRfaW50ZXJuYWxfbGlua19mbGFncyhzZWxmLCBhcmdzLCBsaWJ0b29sLCBsaWJyYXJpZXMsIGV4dHJhX2xpYnJhcmllcywgbGlicGF0aHMpOgorKyAgICBkZWYgZ2V0X2ludGVybmFsX2xpbmtfZmxhZ3Moc2VsZiwgYXJncywgbGlidG9vbCwgbGlicmFyaWVzLCBleHRyYV9saWJyYXJpZXMsIGxpYnBhdGhzLCBsaWJfZGlyc19lbnZ2YXIpOgorICAgICAgICAgIyBBbiAiaW50ZXJuYWwiIGxpbmsgaXMgd2hlcmUgdGhlIGxpYnJhcnkgdG8gYmUgaW50cm9zcGVjdGVkCisgICAgICAgICAjIGlzIGJlaW5nIGJ1aWx0IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAKK0BAIC0xMTksNyArMTE5LDcgQEAgY2xhc3MgQ0NvbXBpbGVyKG9iamVjdCk6CisgICAgICAgICBpZiBzZWxmLmNoZWNrX2lzX21zdmMoKToKKyAgICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMSUInLCAnUEFUSCddCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCddCisrICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTERfTElCUkFSWV9QQVRIJ10gaWYgbm90IGxpYl9kaXJzX2VudnZhciBlbHNlIFtsaWJfZGlyc19lbnZ2YXJdCisgICAgICAgICAgICAgIyBTZWFyY2ggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZpcnN0CisgICAgICAgICAgICAgIyAoVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgbm9yIG5lZWRlZCBmb3IgVmlzdWFsIEMrKykKKyAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLUwuJykKK2RpZmYgLS1naXQgYS9naXNjYW5uZXIvZHVtcGVyLnB5IGIvZ2lzY2FubmVyL2R1bXBlci5weQoraW5kZXggN2Y3N2JkMi4uZGI5NmRmNiAxMDA2NDQKKy0tLSBhL2dpc2Nhbm5lci9kdW1wZXIucHkKKysrKyBiL2dpc2Nhbm5lci9kdW1wZXIucHkKK0BAIC0yNTksNyArMjU5LDggQEAgY2xhc3MgRHVtcENvbXBpbGVyKG9iamVjdCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlidG9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcmllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4dHJhX2xpYnJhcmllcywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcnlfcGF0aHMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJ5X3BhdGhzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGliX2RpcnNfZW52dmFyKQorICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKHBrZ19jb25maWdfbGlicykKKyAKKyAgICAgICAgIGVsc2U6CitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CitpbmRleCAzOGE0NWMxLi5iNjAzODUwIDEwMDc1NQorLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CisrKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKK0BAIC0xMzAsNiArMTMwLDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgorICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWxkZC13cmFwcGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxkZF93cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCisrICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1saWItZGlycy1lbnZ2YXIiLAorKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ibGliX2RpcnNfZW52dmFyIiwgZGVmYXVsdD1Ob25lLAorKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB3cml0ZSBhIGxpc3Qgb2YgbGlicmFyeSBkaXJlY3RvcmllcyB0byAoZm9yIHJ1bm5pbmcgdGhlIHRyYW5zaWVudCBiaW5hcnkpLCBpbnN0ZWFkIG9mIHN0YW5kYXJkIExEX0xJQlJBUllfUEFUSCIpCisgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2gKaW5kZXggNDhhMGM4NS4uYzY4MmI0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoCkBAIC0zMiwxMCArMzIsMTAgQEAKICB0ZXN0cy9NYWtlZmlsZS5hbSB8ICA1ICsrKystCiAgNCBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBiMDgwYTg5Li5jZThkMjliIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCitJbmRleDogZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEub3JpZy9NYWtlZmlsZS5hbQorKysrIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvTWFrZWZpbGUuYW0KIEBAIC0yMSw3ICsyMSw5IEBAIGluY2x1ZGUgTWFrZWZpbGUtY21waC5hbQogIGluY2x1ZGUgTWFrZWZpbGUtZ2lyZXBvc2l0b3J5LmFtCiAgaW5jbHVkZSBNYWtlZmlsZS1naXNjYW5uZXIuYW0KQEAgLTQ2LDEwICs0NiwxMCBAQAogIGluY2x1ZGUgTWFrZWZpbGUtdG9vbHMuYW0KICBpbmNsdWRlIE1ha2VmaWxlLW1zdmNwcm9qLmFtCiAgCi1kaWZmIC0tZ2l0IGEvY29tbW9uLm1rIGIvY29tbW9uLm1rCi1pbmRleCBlMjZjNjM3Li45ZjNhNjVmIDEwMDY0NAotLS0tIGEvY29tbW9uLm1rCi0rKysgYi9jb21tb24ubWsKK0luZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbW1vbi5taworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEub3JpZy9jb21tb24ubWsKKysrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbW1vbi5tawogQEAgLTYsNiArNiwxNSBAQAogICMgbW9kdWxlIGl0c2VsZi4KICAjCkBAIC0xMzAsMTMgKzEzMCwxMyBAQAogIAogIElOVFJPU1BFQ1RJT05fRE9DVE9PTF9BUkdTID0gXAogICAgICAtLWFkZC1pbmNsdWRlLXBhdGg9JChzcmNkaXIpIFwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDZjOTFmYTUuLjIxMzQwYTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM2MCw2ICszNjAsNDggQEAgZmkKLSAKLSBBQ19TVUJTVChFWFRSQV9MSU5LX0ZMQUdTKQorSW5kZXg6IGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvY29uZmlndXJlLmFjCitAQCAtMzY2LDYgKzM2Niw0OCBAQCBkbmwKKyBBTV9DT05ESVRJT05BTChNU1ZDX0JBU0VfTk9fVE9PTFNFVF9TRVQsIFt0ZXN0IHgkTVNWQ19CQVNFX1RPT0xTRVQgPSB4XSkKKyBBTV9DT05ESVRJT05BTChNU1ZDX05PX1RPT0xTRVRfU0VULCBbdGVzdCB4JE1TVkNfVE9PTFNFVCA9IHhdKQogIAogK0FDX0FSR19FTkFCTEUoW2hvc3QtZ2ldLAogK1tBU19IRUxQX1NUUklORyhbLS1lbmFibGUtaG9zdC1naV0sW1VzZSBnb2JqZWN0IGludHJvc3BlY3Rpb24gdG9vbHMgaW5zdGFsbGVkIGluIHRoZSBob3N0IHN5c3RlbSAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKV0pXSwKQEAgLTE4MywxMCArMTgzLDEwIEBACiAgQUNfQ09ORklHX0ZJTEVTKFsKICBNYWtlZmlsZQogIHRlc3RzL01ha2VmaWxlCi1kaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggYmRkMGZhNy4uNzVkZDNjOSAxMDA2NDQKLS0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorSW5kZXg6IGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvdGVzdHMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xLm9yaWcvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtMSw2ICsxLDkgQEAKICBpbmNsdWRlICQodG9wX3NyY2RpcikvY29tbW9uLm1rCiAgCkBAIC0xOTgsNiArMTk4LDMgQEAKICAKICBFWFRSQV9ESVNUPQogIEJVSUxUX1NPVVJDRVM9Ci0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjUyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmU3MWEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjUyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGQ1Nzc1MzVhMzg5OGUxYWU1ZGJmMGFlMzUwOWE4YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjciCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjUyLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNDE1NzA3Mzk5MWY5ZWViMGVkOTUzMzUxYjY1ZWI2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZWQwYzM4ZDUyZmUxYWE2ZmM0ZGVmMGM4NjhmZTQ4MWNiODdiNTMyZmM2OTQ3NTZiMjZkNmNmYWIyOWZhZmY0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBweXRob24zbmF0aXZlIHFlbXUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0Ci1leHBvcnQgU1RBR0lOR19ESVJfSE9TVAotZXhwb3J0IEIKLQotREVQRU5EU19hcHBlbmQgPSAiIGxpYmZmaSB6bGliIGdsaWItMi4wIHB5dGhvbjMgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi0jIHRhcmdldCBidWlsZCBuZWVkcyBxZW11IHRvIHJ1biB0ZW1wb3JhcnkgaW50cm9zcGVjdGlvbiBiaW5hcmllcyBjcmVhdGVkCi0jIG9uIHRoZSBmbHkgYnkgZy1pci1zY2FubmVyIGFuZCBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGl0c2VsZiB0byBydW4KLSMgbmF0aXZlIHZlcnNpb25zIG9mIGl0cyBvd24gdG9vbHMgZHVyaW5nIGJ1aWxkLgotIyBBbHNvIHByZWxpbmstcnRsZCBpcyB1c2VkIHRvIGZpbmQgb3V0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIGludHJvc3BlY3Rpb24gYmluYXJpZXMKLSMgKHN0YW5kYXJkIGxkZCBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcpLgotREVQRU5EU19jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIHFlbXUtbmF0aXZlIHByZWxpbmstbmF0aXZlIgotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIGctaXItc2Nhbm5lci13cmFwcGVyIGctaXItY29tcGlsZXItd3JhcHBlciBnLWlyLXNjYW5uZXItbGRkd3JhcHBlciBHaW8tMi4wLmdpciBwb3N0aW5zdC1sZHNvY29uZi0ke1BOfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICAjIFR3ZWFrIHRoZSBuYXRpdmUgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIGZ1bGwgcGF0aCBvZiBuYXRpdmUgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQotICAgICAgICAjIFRoaXMgcmVtb3ZlcyB0aGUgcmlzayBvZiBleGNlZWRpbmcgTGludXgga2VybmVsJ3Mgc2hlYmFuZyBsaW5lIGxpbWl0ICgxMjggYnl0ZXMpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgICMgV3JpdGUgb3V0IGEgcWVtdSB3cmFwcGVyIHRoYXQgd2lsbCBiZSBnaXZlbiB0byBnaS1zY2FubmVyIHNvIHRoYXQgaXQKLSAgICAgICAgIyBjYW4gcnVuIHRhcmdldCBoZWxwZXIgYmluYXJpZXMgdGhyb3VnaCB0aGF0LgotICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyRTVEFHSU5HX0RJUl9IT1NUJywgWydcJEdJUl9FWFRSQV9MSUJTX1BBVEgnLCcubGlicycsJyRTVEFHSU5HX0RJUl9IT1NULyR7bGliZGlyfScsJyRTVEFHSU5HX0RJUl9IT1NULyR7YmFzZV9saWJkaXJ9J10pfSIKLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLSMgVXNlIGEgbW9kdWxlcyBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCBzbyB3ZSBkb24ndCBsb2FkIHJhbmRvbSB0aGluZ3MKLSMgd2hpY2ggbWF5IHRoZW4gZ2V0IGRlbGV0ZWQgKG9yIHRoZWlyIGRlcGVuZGVuY2llcykgYW5kIHBvdGVudGlhbGx5IHNlZ2ZhdWx0Ci1leHBvcnQgR0lPX01PRFVMRV9ESVI9JHtTVEFHSU5HX0xJQkRJUn0vZ2lvL21vZHVsZXMtZHVtbXkKLQotJHFlbXVfYmluYXJ5ICJcJEAiCi1pZiBbIFwkPyAtbmUgMCBdOyB0aGVuCi0gICAgZWNobyAiSWYgdGhlIGFib3ZlIGVycm9yIG1lc3NhZ2UgaXMgYWJvdXQgbWlzc2luZyAuc28gbGlicmFyaWVzLCB0aGVuIHNldHRpbmcgdXAgR0lSX0VYVFJBX0xJQlNfUEFUSCBpbiB0aGUgcmVjaXBlIHNob3VsZCBoZWxwLiIKLSAgICBlY2hvICIodHlwaWNhbGx5IGxpa2UgdGhpczogR0lSX0VYVFJBX0xJQlNfUEFUSD1cIiQiIntCfS9zb21ldGhpbmcvLmxpYnNcIiApIgotICAgIGV4aXQgMQotZmkKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1zY2FubmVyIGl0c2VsZiwgd2hpY2ggd2lsbCBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcwotICAgICAgICAjIGZvciBnbGliLWJhc2VkIHBhY2thZ2VzLiBUaGlzIHdyYXBwZXIgY2FsbHMgdGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIHRoZSBzY2FubmVyLCBhbmQgdGVsbHMgaXQgdG8gdXNlCi0gICAgICAgICMgYSBxZW11IHdyYXBwZXIgZm9yIHJ1bm5pbmcgdHJhbnNpZW50IHRhcmdldCBiaW5hcmllcyBwcm9kdWNlZCBieSB0aGUgc2Nhbm5lciwgYW5kIGFuIGluY2x1ZGUgZGlyZWN0b3J5IAotICAgICAgICAjIGZyb20gdGhlIHRhcmdldCBzeXNyb290LgotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi1leHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKLQotZy1pci1zY2FubmVyIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCi0gICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKLSAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLXByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCi0KLSAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCi19Ci0KLSMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCi0jIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQotRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCArPSAiLS1lbmFibGUtaG9zdC1naSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhdGljIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktbGRkLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLS1lbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgJy0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbZG9jdG9vbF0gPSAiLS1lbmFibGUtZG9jdG9vbCwtLWRpc2FibGUtZG9jdG9vbCxweXRob24zLW1ha28sIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKLSAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLSAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCi0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCi19Ci0KLSMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkIAotIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi19Ci0KLSMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKLUZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKLQotIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKLSMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciIKLQotIyBUaGVzZSBhcmUgdXNlZCBieSBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCi0jIHRvIGdlbmVyYXRlIHRyYW5zaWVudCBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvZ2R1bXAuYyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbiIKLQotIyBUaGVzZSBhcmUgdXNlZCBieSBkZXBlbmRlbnQgcGFja2FnZXMgKGUuZy4gcHlnb2JqZWN0KSB0byBidWlsZCB0aGVpcgotIyB0ZXN0c3VpdGVzLgotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouYyBcCi0gICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCi0KLSMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11Ci0jIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcwotU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7YmluZGlyfSIKLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgYmluYXJ5IG5hbWVzIGluIHRoZSBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0Ci0gICAgICAgICMgcGlja3MgdXAgb3VyIHdyYXBwZXJzIHdoaWNoIGRvIHRoZSBjcm9zcy1jb21waWxlIGFuZCBxZW11IG1hZ2ljLgotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xnX2lyX3NjYW5uZXI9Lip8Z19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcnwiIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9jb21waWxlcj0uKnxnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9wa2djb25maWcvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYwotfQotCi0jIE5lZWQgdG8gZW5zdXJlIGxkLnNvLmNvbmYgZXhpc3RzIHNvIHByZWxpbmstbmF0aXZlIHdvcmtzCi0jIGJvdGggYmVmb3JlIHdlIGJ1aWxkIGFuZCBpZiB3ZSBpbnN0YWxsIGZyb20gc3N0YXRlCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlIgotcHl0aG9uIGdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUgKCkgewotICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKLX0KLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZCA9ICIgZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzIgotZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKLQlta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KLQlkZXN0PSR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9wb3N0aW5zdC1sZHNvY29uZi0ke1BOfQotCWVjaG8gIiMhL2Jpbi9zaCIgPiAkZGVzdAotCWVjaG8gIm1rZGlyIC1wICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0iID4+ICRkZXN0Ci0JZWNobyAiZWNobyAke2Jhc2VfbGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0Ci0JZWNobyAiZWNobyAke2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAotCWNobW9kIDc1NSAkZGVzdAotfQotCi0jIFJlbW92ZSB3cmFwcGVyIGZpbGVzIGZyb20gdGhlIHBhY2thZ2UsIG9ubHkgdXNlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gImdpX3BhY2thZ2VfcHJlcHJvY2VzcyIKLWdpX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcgotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjU0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41NC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1YzgwMDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41NC4xLmJiCkBAIC0wLDAgKzEsMTkwIEBACitTVU1NQVJZID0gIk1pZGRsZXdhcmUgbGF5ZXIgYmV0d2VlbiBHT2JqZWN0LXVzaW5nIEMgbGlicmFyaWVzIGFuZCBsYW5ndWFnZSBiaW5kaW5ncyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvYWN0aW9uL3Nob3cvUHJvamVjdHMvR09iamVjdEludHJvc3BlY3Rpb24iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkwZDU3NzUzNWEzODk4ZTFhZTVkYmYwYWUzNTA5YThjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2NvbXBpbGVyLmM7ZW5kbGluZT0yMDttZDU9ZmM1MDA3ZmMyMDAyMjcyMGU2YzBiMGNkZGU0MWZhYmQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lzY2FubmVyL3NvdXJjZXNjYW5uZXIuYztlbmRsaW5lPTIyO21kNT0xOTRkNmUwYzFkMDA2NjJmMzJkMDMwY2U0NGRlOGQzOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXJlcG9zaXRvcnkvZ2lyZWdpc3RlcmVkdHlwZWluZm8uYztlbmRsaW5lPTIxO21kNT02NjE4NDc2MTFhZTY5Nzk0NjU0MTVmMzFhNzU5YmEyNyIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzEuNTQvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldmVydC1hbi1pbmNvbXBsZXRlLXVwc3RyZWFtLWF0dGVtcHQtYXQtY3Jvc3MtY29tcGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMTI2YzI5ZTRkNTRhZGJlZDJlZDRlMmIwNDQ4M2RlNDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjg4ZGVkNWU1ZjA2NGFiNThhOTNhYWRlY2Q2ZDU4ZGIyZWM5ZDk3MDY0ODUzNGM2MzgwN2Q0ZjlhN2JiODc3ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAorZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKK2V4cG9ydCBCCisKK0RFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAorIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCisjIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KKyMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCisjIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KK0RFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQorICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KK30KKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0CisgICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KKyAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCisjIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCisjIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAorZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15CisKKyRxZW11X2JpbmFyeSAiXCRAIgoraWYgWyBcJD8gLW5lIDAgXTsgdGhlbgorICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCisgICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKKyAgICBleGl0IDEKK2ZpCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKKyAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQorICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKKyAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKK2ctaXItc2Nhbm5lciAtLWxpYi1kaXJzLWVudnZhcj1HSVJfRVhUUkFfTElCU19QQVRIIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCisgICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKKyAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKK3ByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCisKKyAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKKyMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCisjIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQorRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCArPSAiLS1lbmFibGUtaG9zdC1naSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhdGljIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktbGRkLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLS1lbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgJy0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbZG9jdG9vbF0gPSAiLS1lbmFibGUtZG9jdG9vbCwtLWRpc2FibGUtZG9jdG9vbCxweXRob24zLW1ha28sIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKKyAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKKyAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCit9CisKKyMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkIAorIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCit9CisKKyMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKKworIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKKyMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciIKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5ybmMiCisKKyMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcworIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcworRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCisKKyMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKKyMgdGVzdHN1aXRlcy4KK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgorCisjIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQorIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKK1NZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCitnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAorICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCisgICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAorICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKK30KKworIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcworIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQorZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKK3B5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKKyAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCit9CisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmQgPSAiIGdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2dpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisJbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9CisJZGVzdD0ke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0KKwllY2hvICIjIS9iaW4vc2giID4gJGRlc3QKKwllY2hvICJta2RpciAtcCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9IiA+PiAkZGVzdAorCWVjaG8gImVjaG8gJHtiYXNlX2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAorCWVjaG8gImVjaG8gJHtsaWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKKwljaG1vZCA3NTUgJGRlc3QKK30KKworIyBSZW1vdmUgd3JhcHBlciBmaWxlcyBmcm9tIHRoZSBwYWNrYWdlLCBvbmx5IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZworUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJnaV9wYWNrYWdlX3ByZXByb2Nlc3MiCitnaV9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7CisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjIyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NGE0ZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjViOTA1NmFiNmVmZjQyYTAxMTdmMjkxMmVkZmY1ZjIwIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMGYwNmM3YmEzNGMzYTk5ZTRkNThiMTA4ODk0OTYxMzNjOWFhYWQ2Njk4ZWEyZDg0MDVkNDgxYzdmMWE3ZWFlMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjFmZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yNC4xLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiR05PTUUgZGVza3RvcC13aWRlIEdTZXR0aW5ncyBzY2hlbWFzIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3OTZiNmFjMWVmZjQ1MDI2MWVkZDUyMWI3MmU3ZmU2ZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjc2YTNmYTMwOWY5ZGU2MDc0ZDY2ODQ4OTg3MjE0ZjBiMTI4MTI0YmE3MTg0Yzk1OGMxNWFjNzhhOGFjN2VlYTciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoCmluZGV4IDFhZTcyOGUuLjllYjdmNmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoCkBAIC0zLDE5ICszLDIwIEBACiBVcGRhdGVkIHRvIGFwcGx5IHRvIGd0aystMi4yNC4xNQogCiBTaWduZWQtb2ZmLWJ5OiBNYXJrbyBMaW5kcXZpc3QgPGNhemZpNzRAZ21haWwuY29tPgotZGlmZiAtTnVyZCBndGsrLTIuMjQuMTUvY29uZmlndXJlLmFjIGd0aystMi4yNC4xNS9jb25maWd1cmUuYWMKLS0tLSBndGsrLTIuMjQuMTUvY29uZmlndXJlLmFjCTIwMTMtMDEtMTIgMjA6NTI6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ3RrKy0yLjI0LjE1L2NvbmZpZ3VyZS5hYwkyMDEzLTAyLTEyIDIxOjMzOjMwLjY4OTkyNTk2NyArMDIwMAotQEAgLTQxNSw3ICs0MTUsNyBAQAorSW5kZXg6IGd0aystMi4yNC4zMS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBndGsrLTIuMjQuMzEub3JpZy9jb25maWd1cmUuYWMKKysrKyBndGsrLTIuMjQuMzEvY29uZmlndXJlLmFjCitAQCAtNDE1LDcgKzQxNSw3IEBAIEFDX01TR19DSEVDS0lORyhbV2hldGhlciB0byB3cml0ZSBkZXBlbmQKICBjYXNlICRlbmFibGVfZXhwbGljaXRfZGVwcyBpbgogICAgYXV0bykKICAgICAgZXhwb3J0IFNFRAogLSAgICBkZXBsaWJzX2NoZWNrX21ldGhvZD1gKC4vbGlidG9vbCAtLWNvbmZpZzsgZWNobyAnZXZhbCBlY2hvIFwiJGRlcGxpYnNfY2hlY2tfbWV0aG9kXCInKSB8IHNoYAogKyAgICBkZXBsaWJzX2NoZWNrX21ldGhvZD1gKC4vJGhvc3RfYWxpYXMtbGlidG9vbCAtLWNvbmZpZzsgZWNobyAnZXZhbCBlY2hvIFwiJGRlcGxpYnNfY2hlY2tfbWV0aG9kXCInKSB8IHNoYAogICAgICBpZiB0ZXN0ICJ4JGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAnIT0nIHhwYXNzX2FsbCB8fCB0ZXN0ICJ4JGVuYWJsZV9zdGF0aWMiID0geHllcyA7IHRoZW4KLSAgICAgICBlbmFibGVfZXhwbGljaXRfZGVwcz15ZXMKKyAgICAgICBlbmFibGVfZXhwbGljaXRfZGVwcz15ZXMgIAogICAgICBlbHNlCi1AQCAtNzc0LDcgKzc3NCw3IEBACitAQCAtNzcyLDcgKzc3Miw3IEBAIGVsc2UKICAgICAgZG5sIE5vdyB3ZSBjaGVjayB0byBzZWUgaWYgb3VyIGxpYnRvb2wgc3VwcG9ydHMgc2hhcmVkIGxpYiBkZXBzCiAgICAgIGRubCAoaW4gYSByYXRoZXIgdWdseSB3YXkgZXZlbikKICAgICAgaWYgJGR5bndvcmtzOyB0aGVuCkBAIC0yNCw3ICsyNSw3IEBACiAgICAgICAgICBtb2R1bGVfZGVwbGlic19jaGVjaz1gJG1vZHVsZV9saWJ0b29sX2NvbmZpZyB8IFwKICAgICAgICAgICAgICBncmVwICdeW1thLXpfXV0qY2hlY2tbW2Etel9dXSpfbWV0aG9kPVtbJ1wnJyJdXScgfCBcCiAgICAgICAgICAgICAgc2VkICdzLy4qW1snXCcnIl1dXCguKlwpW1snXCcnIl1dJC9cMS8nYAotQEAgLTE1NzQsNyArMTU3NCw3IEBACitAQCAtMTU3OSw3ICsxNTc5LDcgQEAgZmkKICAjIFdlIGFyZSB1c2luZyBnbW9kdWxlLW5vLWV4cG9ydCBub3csIGJ1dCBJJ20gbGVhdmluZyB0aGUgc3RyaXBwaW5nCiAgIyBjb2RlIGluIHBsYWNlIGZvciBub3csIHNpbmNlIHBhbmdvIGFuZCBhdGsgc3RpbGwgcmVxdWlyZSBnbW9kdWxlLgogIGV4cG9ydCBTRUQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCmluZGV4IDBhMzU3ZGIuLjQyMGVhZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwpAQCAtMzUsNyArMzUsNiBAQAogICAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGVzIFwKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWN1cHMgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtY29sb3JkIFwKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0gXAogICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICIiLCAiLS1kaXNhYmxlLWd0ay1kb2MiLCBkKX0gXAogICAgICAgICAgICAgICAgICAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKaW5kZXggYWI3YjY1OS4uY2M3ZWRmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJkMjM2MWYyNGJlMWU1MTIwMTA2M2RiYmRhNTcwZGViZTg3MDJiNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIzYTU2MzE1NTQwNjk4MGRmYzhjZjZmN2MyZGE2Y2NlMGFjMzEwZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogRnJpLCAxNiBPY3QgMjAxNSAxNjozNToxNiArMDMwMAogU3ViamVjdDogW1BBVENIIDIvNF0gRG8gbm90IHRyeSB0byBpbml0aWFsaXplIEdMIHdpdGhvdXQgbGliR0wKQEAgLTE1LDI5ICsxNSwyOSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IERlbmllZAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKwogLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgfCA3ICsrKysrKysKKyBjb25maWd1cmUuYWMgICAgICAgICAgICB8IDYgKysrKysrCiAgZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMgfCA1ICsrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGY0M2FjMDkuLjk2NWVlYzkgMTAwNjQ0CitpbmRleCA3NTdmZDdjLi4wYTQ4ODc1IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNDYsNiArMzQ2LDEzIEBAIEFDX0FSR19FTkFCTEUobWlyLWJhY2tlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSB0aGUgTWlyIGdkayBiYWNrZW5kXSldLAotIAkJCSAgICAgIFtiYWNrZW5kX3NldD15ZXNdKQotIAorQEAgLTM1MSw2ICszNTEsMTIgQEAgQUNfQVJHX0VOQUJMRShjbG91ZHByb3ZpZGVycywKKyAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtY2xvdWRwcm92aWRlcnNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgbGliY2xvdWRwcm92aWRlcnMgaW50ZWdyYXRpb25dKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3VkcHJvdmlkZXJzX3NldD15ZXNdKQogK0FDX0FSR19FTkFCTEUoZ2x4LAogKyAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQogK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9nbHgiICE9ICJ4bm8iXSwgWwogKyAgQUNfREVGSU5FKFtIQVZFX0dMWF0sIFtdLCBbR0xYIHdpbGwgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWVdKQogK10pCi0rCisgCiAgaWYgdGVzdCAteiAiJGJhY2tlbmRfc2V0IjsgdGhlbgogICAgaWYgdGVzdCAiJHBsYXRmb3JtX3dpbjMyIiA9IHllczsgdGhlbgotICAgICBlbmFibGVfd2luMzJfYmFja2VuZD15ZXMKIGRpZmYgLS1naXQgYS9nZGsveDExL2dka3Zpc3VhbC14MTEuYyBiL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCiBpbmRleCA4MTQ3OWQ4Li4zYzhjNWMwIDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMKQEAgLTU2LDUgKzU2LDUgQEAKICAKICBnaW50CiAtLSAKLTIuMTIuMAorMi4xNC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKaW5kZXggOWNkZWUwZS4uZDJmMTJkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGEyZTZiN2NiYmQ2ZDc0MWZlZDM4ZDkxYjM3NDJhYTRhMDgzOTVhYmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGRlMzZkZjcwZDg3YmEzNDUzZWQ0ZjJiOTJlOTkwMDIxYzY3MjM4ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxNToxMTozOSArMDMwMAogU3ViamVjdDogW1BBVENIIDMvNF0gQWRkIC0tZGlzYWJsZS1vcGVuZ2wgY29uZmlndXJlIG9wdGlvbgpAQCAtMTksNDEgKzE5LDQwIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRXZpbCBleWUgZXhwZWN0ZWQgZnJvbSB1cHN0cmVhbV0KIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKystLQotIGRlbW9zL2d0ay1kZW1vL2dsYXJlYS5jICAgICAgICAgICB8IDE0ICsrKysrKysrKwotIGRvY3MvdG9vbHMvTWFrZWZpbGUuYW0gICAgICAgICAgICB8ICA5ICsrKystLQotIGRvY3MvdG9vbHMvd2lkZ2V0cy5jICAgICAgICAgICAgICB8ICA0ICsrLQotIGdkay9nZGtkaXNwbGF5LmMgICAgICAgICAgICAgICAgICB8ICA0ICsrLQotIGdkay9nZGtnbC5jICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysKLSBnZGsvZ2RrZ2xjb250ZXh0LmMgICAgICAgICAgICAgICAgfCAgNiArKysrCi0gZ2RrL2dka3dpbmRvdy5jICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrCi0gZ2RrL3gxMS9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgIHwgMzAgKysrKysrKysrKysrKysrKystLS0KLSBnZGsveDExL2dka2Rpc3BsYXkteDExLmMgICAgICAgICAgfCAgNiArKystCi0gZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMgICAgICAgICAgIHwgIDUgKysrKwotIGdkay94MTEvZ2Rrd2luZG93LXgxMS5jICAgICAgICAgICB8ICA0ICsrKwotIGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaCAgICAgICB8ICAyICsrCi0gZ2RrL3gxMS9nZGt4LXdpdGgtZ2wtY29udGV4dC5oICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmggfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RrL3gxMS9nZGt4LmggICAgICAgICAgICAgICAgICAgIHwgNjAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gZ3RrL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KLSBndGsvZ3RrZ2xhcmVhLmMgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrKystCi0gZ3RrL2luc3BlY3Rvci9nZW5lcmFsLmMgICAgICAgICAgIHwgIDYgKysrKwotIHRlc3RzL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0KLSB0ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYyAgfCAgMiArKwotIDIxIGZpbGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25zKCspLCA3NyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RrL3gxMS9nZGt4LXdpdGgtZ2wtY29udGV4dC5oCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKystLQorIGRlbW9zL2d0ay1kZW1vL2dsYXJlYS5jICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrCisgZG9jcy90b29scy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrLS0KKyBkb2NzL3Rvb2xzL3dpZGdldHMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0KKyBnZGsvZ2RrZGlzcGxheS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0KKyBnZGsvZ2RrZ2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysKKyBnZGsvZ2RrZ2xjb250ZXh0LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrCisgZ2RrL2dka3dpbmRvdy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKworIGdkay94MTEvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKystLS0KKyBnZGsveDExL2dka2Rpc3BsYXkteDExLmMgICAgICAgICAgICAgICAgICAgfCAgNiArKystCisgZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMgICAgICAgICAgICAgICAgICAgIHwgIDUgKysrCisgZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMgICAgICAgICAgICAgICAgICAgIHwgIDQgKysrCisgZ2RrL3gxMS9nZGt4LWF1dG9jbGVhbnVwcy5oICAgICAgICAgICAgICAgIHwgIDIgKysKKyBnZGsveDExL3tnZGt4LmggPT4gZ2RreC13aXRoLWdsLWNvbnRleHQuaH0gfCAgMSAtCisgZ2RrL3gxMS9nZGt4LXdpdGhvdXQtZ2wtY29udGV4dC5oICAgICAgICAgIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ3RrL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KKyBndGsvZ3RrZ2xhcmVhLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrLQorIGd0ay9pbnNwZWN0b3IvZ2VuZXJhbC5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysKKyB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrLS0KKyB0ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYyAgICAgICAgICAgfCAgMiArKworIDIwIGZpbGVzIGNoYW5nZWQsIDIwMiBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKKyByZW5hbWUgZ2RrL3gxMS97Z2RreC5oID0+IGdka3gtd2l0aC1nbC1jb250ZXh0Lmh9ICg5OCUpCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaAotIGRlbGV0ZSBtb2RlIDEwMDY0NCBnZGsveDExL2dka3guaAogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5NjVlZWM5Li4wMGJmNTQ0IDEwMDY0NAoraW5kZXggMGE0ODg3NS4uNmYwYTNhNiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQ2LDYgKzM0NiwxNSBAQCBBQ19BUkdfRU5BQkxFKG1pci1iYWNrZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgdGhlIE1pciBnZGsgYmFja2VuZF0pXSwKLSAJCQkgICAgICBbYmFja2VuZF9zZXQ9eWVzXSkKLSAKK0BAIC0zNTEsNiArMzUxLDE1IEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWNsb3VkcHJvdmlkZXJzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmNsb3VkcHJvdmlkZXJzIGludGVncmF0aW9uXSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG91ZHByb3ZpZGVyc19zZXQ9eWVzXSkKICtBQ19BUkdfRU5BQkxFKG9wZW5nbCwKICsgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtb3BlbmdsXSwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbV2hlbiBlbmFibGVkLCBHdGsrIHdpbGwgdXNlIGxpYmVwb3h5IGFuZCBleHBvc2VzIEd0a0dMQXJlYSB3aWRnZXQgXSldKQpAQCAtNjYsMTYgKzY1LDE2IEBACiAgQUNfQVJHX0VOQUJMRShnbHgsCiAgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWdseF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1doZW4gZW5hYmxlZCBHZGsgd2lsbCB0cnkgdG8gaW5pdGlhbGl6ZSBHTFhdKV0pCi1AQCAtMTM1Miw3ICsxMzYxLDcgQEAgQ0ZMQUdTPSIkc2F2ZWRfY2ZsYWdzIgorQEAgLTEzNzIsNyArMTM4MSw3IEBAIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKICBMREZMQUdTPSIkc2F2ZWRfbGRmbGFncyIKICAKICBHREtfUEFDS0FHRVM9IiRQQU5HT19QQUNLQUdFUyBnZGstcGl4YnVmLTIuMCA+PSBnZGtfcGl4YnVmX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8gPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiBjYWlyby1nb2JqZWN0ID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24iCi0tR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiIKLStHREtfUFJJVkFURV9QQUNLQUdFUz0iJEdES19HSU9fUEFDS0FHRSAkWF9QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkTUlSX1BBQ0tBR0VTICRjYWlyb19iYWNrZW5kcyAkRVBPWFlfUEFDS0FHRVMiCistR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiAkQ0xPVURQUk9WSURFUl9QQUNLQUdFUyIKKytHREtfUFJJVkFURV9QQUNLQUdFUz0iJEdES19HSU9fUEFDS0FHRSAkWF9QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkTUlSX1BBQ0tBR0VTICRjYWlyb19iYWNrZW5kcyAkRVBPWFlfUEFDS0FHRVMgJENMT1VEUFJPVklERVJfUEFDS0FHRVMiCiAgCiAgUEtHX0NIRUNLX01PRFVMRVMoR0RLX0RFUCwgJEdES19QQUNLQUdFUyAkR0RLX1BSSVZBVEVfUEFDS0FHRVMpCiAgR0RLX0RFUF9MSUJTPSIkR0RLX0VYVFJBX0xJQlMgJEdES19ERVBfTElCUyAkTUFUSF9MSUIiCi1AQCAtMTM4Niw3ICsxMzk1LDcgQEAgZmkKK0BAIC0xNDA2LDcgKzE0MTUsNyBAQCBmaQogIFBLR19DSEVDS19NT0RVTEVTKEFUSywgJEFUS19QQUNLQUdFUykKICAKICBHVEtfUEFDS0FHRVM9ImF0ayA+PSBhdGtfcmVxdWlyZWRfdmVyc2lvbiBjYWlybyA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIGNhaXJvLWdvYmplY3QgPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiBnZGstcGl4YnVmLTIuMCA+PSBnZGtfcGl4YnVmX3JlcXVpcmVkX3ZlcnNpb24gZ2lvLTIuMCA+PSBnbGliX3JlcXVpcmVkX3ZlcnNpb24iCkBAIC0yMTAsMTAgKzIwOSwxMCBAQAogIAogICAgcmV0dXJuIGluZm87CiBkaWZmIC0tZ2l0IGEvZ2RrL2dka2Rpc3BsYXkuYyBiL2dkay9nZGtkaXNwbGF5LmMKLWluZGV4IDZiMDEyY2EuLjMxMWM3ZjcgMTAwNjQ0CitpbmRleCA0MDIyNWU5Li5jNTVlMWRlIDEwMDY0NAogLS0tIGEvZ2RrL2dka2Rpc3BsYXkuYwogKysrIGIvZ2RrL2dka2Rpc3BsYXkuYwotQEAgLTI0MDksNyArMjQwOSw5IEBAIGdib29sZWFuCitAQCAtMjQwNiw3ICsyNDA2LDkgQEAgZ2Jvb2xlYW4KICBnZGtfZGlzcGxheV9tYWtlX2dsX2NvbnRleHRfY3VycmVudCAoR2RrRGlzcGxheSAgICpkaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtHTENvbnRleHQgKmNvbnRleHQpCiAgewpAQCAtMzQ3LDcgKzM0Niw3IEBACiAgCiAgLyoqCiBkaWZmIC0tZ2l0IGEvZ2RrL2dka3dpbmRvdy5jIGIvZ2RrL2dka3dpbmRvdy5jCi1pbmRleCA2ODlkNjY2Li5mYjg0MjU2IDEwMDY0NAoraW5kZXggYzBlMGE3ZC4uNDM3YWIwMyAxMDA2NDQKIC0tLSBhL2dkay9nZGt3aW5kb3cuYwogKysrIGIvZ2RrL2dka3dpbmRvdy5jCiBAQCAtNDUsNyArNDUsOSBAQApAQCAtMzYwLDcgKzM1OSw3IEBACiAgCiAgLyogZm9yIHRoZSB1c2Ugb2Ygcm91bmQoKSAqLwogICNpbmNsdWRlICJmYWxsYmFjay1jODkuYyIKLUBAIC0yODE5LDYgKzI4MjEsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAorQEAgLTI4MjIsNiArMjgyNCwxMyBAQCBnZGtfd2luZG93X2dldF9wYWludF9nbF9jb250ZXh0IChHZGtXaW5kb3cgICp3aW5kb3csCiAgewogICAgR0Vycm9yICppbnRlcm5hbF9lcnJvciA9IE5VTEw7CiAgCkBAIC0zNzQsNyArMzczLDcgQEAKICAgIGlmIChfZ2RrX2dsX2ZsYWdzICYgR0RLX0dMX0RJU0FCTEUpCiAgICAgIHsKICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwgR0RLX0dMX0VSUk9SLAotQEAgLTI5NTQsNiArMjk2Myw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCitAQCAtMjk1Nyw2ICsyOTY2LDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICAgICAgICAgICAgKndpbmRvdywKICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7CkBAIC0zODIsNyArMzgxLDcgQEAKICAJICBnZGtfZ2xfY29udGV4dF9tYWtlX2N1cnJlbnQgKGNvbnRleHQpOwogICAgICAgICAgICAvKiBXaXRoIGdsIHdlIGFsd2F5cyBuZWVkIGEgc3VyZmFjZSB0byBjb21iaW5lIHRoZSBnbAogICAgICAgICAgICAgICBkcmF3aW5nIHdpdGggdGhlIG5hdGl2ZSBkcmF3aW5nLiAqLwotQEAgLTI5NjgsNiArMjk3OCw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCitAQCAtMjk3MSw2ICsyOTgxLDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICAgICAgICAgICAgKndpbmRvdywKICAgICAgICAgICAgZ2xCbGVuZEZ1bmMgKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7CiAgCiAgICAgICAgICAgIGdsVmlld3BvcnQgKDAsIDAsIHd3LCB3aCk7CkBAIC0zOTAsNyArMzg5LDcgQEAKICAgICAgICAgIH0KICAgICAgfQogIAotQEAgLTMwMzEsNiArMzA0Miw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgKndpbmRvdykKK0BAIC0zMDM0LDYgKzMwNDUsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCiAgCiAgICAgICAgICAgIGdka19nbF9jb250ZXh0X21ha2VfY3VycmVudCAod2luZG93LT5nbF9wYWludF9jb250ZXh0KTsKICAKQEAgLTM5OCw3ICszOTcsNyBAQAogICAgICAgICAgICBpZiAoIWNhaXJvX3JlZ2lvbl9pc19lbXB0eSAob3BhcXVlX3JlZ2lvbikpCiAgICAgICAgICAgICAgZ2RrX2dsX3RleHR1cmVfZnJvbV9zdXJmYWNlICh3aW5kb3ctPmN1cnJlbnRfcGFpbnQuc3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYXF1ZV9yZWdpb24pOwotQEAgLTMwNDEsNiArMzA1Myw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgKndpbmRvdykKK0BAIC0zMDQ0LDYgKzMwNTYsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+Y3VycmVudF9wYWludC5uZWVkX2JsZW5kX3JlZ2lvbik7CiAgICAgICAgICAgICAgICBnbERpc2FibGUoR0xfQkxFTkQpOwogICAgICAgICAgICAgIH0KQEAgLTQ3OSw3ICs0NzgsNyBAQAogKwogIC1pbmNsdWRlICQodG9wX3NyY2RpcikvZ2l0Lm1rCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jIGIvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jCi1pbmRleCBhZDY1ZTI5Li45MTM0NWVlIDEwMDY0NAoraW5kZXggZTlhMjYzZi4uMjgyOWEzMSAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwogKysrIGIvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jCiBAQCAtMzcsNyArMzcsOSBAQApAQCAtNDkyLDcgKzQ5MSw3IEBACiAgI2luY2x1ZGUgImdkay1wcml2YXRlLmgiCiAgCiAgI2luY2x1ZGUgPGdsaWIuaD4KLUBAIC0yOTk0LDcgKzI5OTYsOSBAQCBnZGtfeDExX2Rpc3BsYXlfY2xhc3NfaW5pdCAoR2RrWDExRGlzcGxheUNsYXNzICogY2xhc3MpCitAQCAtMzE2OSw3ICszMTcxLDkgQEAgZ2RrX3gxMV9kaXNwbGF5X2NsYXNzX2luaXQgKEdka1gxMURpc3BsYXlDbGFzcyAqIGNsYXNzKQogICAgZGlzcGxheV9jbGFzcy0+dGV4dF9wcm9wZXJ0eV90b191dGY4X2xpc3QgPSBfZ2RrX3gxMV9kaXNwbGF5X3RleHRfcHJvcGVydHlfdG9fdXRmOF9saXN0OwogICAgZGlzcGxheV9jbGFzcy0+dXRmOF90b19zdHJpbmdfdGFyZ2V0ID0gX2dka194MTFfZGlzcGxheV91dGY4X3RvX3N0cmluZ190YXJnZXQ7CiAgCkBAIC01NTQsNzEgKzU1MywyMSBAQAogIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdka1gxMUtleW1hcCwgZ19vYmplY3RfdW5yZWYpCiAgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR2RrWDExU2NyZWVuLCBnX29iamVjdF91bnJlZikKICBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHZGtYMTFWaXN1YWwsIGdfb2JqZWN0X3VucmVmKQotZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaCBiL2dkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmFlMDVmYTYKLS0tLSAvZGV2L251bGwKK2RpZmYgLS1naXQgYS9nZGsveDExL2dka3guaCBiL2dkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAorc2ltaWxhcml0eSBpbmRleCA5OCUKK3JlbmFtZSBmcm9tIGdkay94MTEvZ2RreC5oCityZW5hbWUgdG8gZ2RrL3gxMS9nZGt4LXdpdGgtZ2wtY29udGV4dC5oCitpbmRleCAxZjY0YmNjLi5hZTA1ZmE2IDEwMDY0NAorLS0tIGEvZ2RrL3gxMS9nZGt4LmgKICsrKyBiL2dkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAotQEAgLTAsMCArMSw1OSBAQAotKy8qIEdESyAtIFRoZSBHSU1QIERyYXdpbmcgS2l0Ci0rICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcgUGV0ZXIgTWF0dGlzLCBTcGVuY2VyIEtpbWJhbGwgYW5kIEpvc2ggTWFjRG9uYWxkCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnkuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsgKi8KLSsKLSsvKgotKyAqIE1vZGlmaWVkIGJ5IHRoZSBHVEsrIFRlYW0gYW5kIG90aGVycyAxOTk3LTIwMDAuICBTZWUgdGhlIEFVVEhPUlMKLSsgKiBmaWxlIGZvciBhIGxpc3Qgb2YgcGVvcGxlIG9uIHRoZSBHVEsrIFRlYW0uICBTZWUgdGhlIENoYW5nZUxvZwotKyAqIGZpbGVzIGZvciBhIGxpc3Qgb2YgY2hhbmdlcy4gIFRoZXNlIGZpbGVzIGFyZSBkaXN0cmlidXRlZCB3aXRoCi0rICogR1RLKyBhdCBmdHA6Ly9mdHAuZ3RrLm9yZy9wdWIvZ3RrLy4KLSsgKi8KLSsKLSsjaWZuZGVmIF9fR0RLX1hfSF9fCi0rI2RlZmluZSBfX0dES19YX0hfXwotKwotKyNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0rCi0rI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0rI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgotKwotKyNkZWZpbmUgX19HREtYX0hfSU5TSURFX18KLSsKLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFhcHBsYXVuY2hjb250ZXh0Lmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExY3Vyc29yLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLWNvcmUuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2UteGkyLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlbWFuYWdlci5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXItY29yZS5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIteGkyLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGlzcGxheS5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXltYW5hZ2VyLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZG5kLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZ2xjb250ZXh0Lmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExa2V5cy5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXByb3BlcnR5Lmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExc2NyZWVuLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExc2VsZWN0aW9uLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdXRpbHMuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTF2aXN1YWwuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTF3aW5kb3cuaD4KLSsKLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4LWF1dG9jbGVhbnVwcy5oPgotKwotKyN1bmRlZiBfX0dES1hfSF9JTlNJREVfXwotKwotKyNlbmRpZiAvKiBfX0dES19YX0hfXyAqLworQEAgLTQ1LDcgKzQ1LDYgQEAKKyAjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkbmQuaD4KKyAjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFnbGNvbnRleHQuaD4KKyAjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFrZXlzLmg+CistI2luY2x1ZGUgPGdkay94MTEvZ2RreDExbW9uaXRvci5oPgorICNpbmNsdWRlIDxnZGsveDExL2dka3gxMXByb3BlcnR5Lmg+CisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExc2NyZWVuLmg+CisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExc2VsZWN0aW9uLmg+CiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt4LXdpdGhvdXQtZ2wtY29udGV4dC5oIGIvZ2RrL3gxMS9nZGt4LXdpdGhvdXQtZ2wtY29udGV4dC5oCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uYzllMjYxNwpAQCAtNjgzLDc3ICs2MzIsMTEgQEAKICsjdW5kZWYgX19HREtYX0hfSU5TSURFX18KICsKICsjZW5kaWYgLyogX19HREtfWF9IX18gKi8KLWRpZmYgLS1naXQgYS9nZGsveDExL2dka3guaCBiL2dkay94MTEvZ2RreC5oCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDFmNjRiY2MuLjAwMDAwMDAKLS0tLSBhL2dkay94MTEvZ2RreC5oCi0rKysgL2Rldi9udWxsCi1AQCAtMSw2MCArMCwwIEBACi0tLyogR0RLIC0gVGhlIEdJTVAgRHJhd2luZyBLaXQKLS0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NyBQZXRlciBNYXR0aXMsIFNwZW5jZXIgS2ltYmFsbCBhbmQgSm9zaCBNYWNEb25hbGQKLS0gKgotLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0tICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0tICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSAqCi0tICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tICoKLS0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0tICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLSAqLwotLQotLS8qCi0tICogTW9kaWZpZWQgYnkgdGhlIEdUSysgVGVhbSBhbmQgb3RoZXJzIDE5OTctMjAwMC4gIFNlZSB0aGUgQVVUSE9SUwotLSAqIGZpbGUgZm9yIGEgbGlzdCBvZiBwZW9wbGUgb24gdGhlIEdUSysgVGVhbS4gIFNlZSB0aGUgQ2hhbmdlTG9nCi0tICogZmlsZXMgZm9yIGEgbGlzdCBvZiBjaGFuZ2VzLiAgVGhlc2UgZmlsZXMgYXJlIGRpc3RyaWJ1dGVkIHdpdGgKLS0gKiBHVEsrIGF0IGZ0cDovL2Z0cC5ndGsub3JnL3B1Yi9ndGsvLgotLSAqLwotLQotLSNpZm5kZWYgX19HREtfWF9IX18KLS0jZGVmaW5lIF9fR0RLX1hfSF9fCi0tCi0tI2luY2x1ZGUgPGdkay9nZGsuaD4KLS0KLS0jaW5jbHVkZSA8WDExL1hsaWIuaD4KLS0jaW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0tCi0tI2RlZmluZSBfX0dES1hfSF9JTlNJREVfXwotLQotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWFwcGxhdW5jaGNvbnRleHQuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFjdXJzb3IuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2UuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2UtY29yZS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS14aTIuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlbWFuYWdlci1jb3JlLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlbWFuYWdlci14aTIuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkaXNwbGF5Lmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGlzcGxheW1hbmFnZXIuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkbmQuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFnbGNvbnRleHQuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFrZXlzLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExbW9uaXRvci5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXByb3BlcnR5Lmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExc2NyZWVuLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExc2VsZWN0aW9uLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdXRpbHMuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTF2aXN1YWwuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTF3aW5kb3cuaD4KLS0KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4LWF1dG9jbGVhbnVwcy5oPgotLQotLSN1bmRlZiBfX0dES1hfSF9JTlNJREVfXwotLQotLSNlbmRpZiAvKiBfX0dES19YX0hfXyAqLwogZGlmZiAtLWdpdCBhL2d0ay9NYWtlZmlsZS5hbSBiL2d0ay9NYWtlZmlsZS5hbQotaW5kZXggNDVmYjdjMi4uY2U4MTAxMSAxMDA2NDQKK2luZGV4IDg0MmMyZjkuLjA5MjFiYzcgMTAwNjQ0CiAtLS0gYS9ndGsvTWFrZWZpbGUuYW0KICsrKyBiL2d0ay9NYWtlZmlsZS5hbQotQEAgLTE0MTEsMTQgKzE0MTEsMTMgQEAgZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy5jOiAkKGd0a19wcml2YXRlX3R5cGVfaF9zb3VyY2VzKSAgZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy4KK0BAIC0xNDE2LDE0ICsxNDE2LDEzIEBAIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYzogJChndGtfcHJpdmF0ZV90eXBlX2hfc291cmNlcykgIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuCiAgCSYmIGNwIHhnZW4tZ3B0YmMgZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy5jICBcCiAgCSYmIHJtIC1mIHhnZW4tZ3B0YmMKICAKQEAgLTkxMyw3ICs3OTYsNyBAQAogICAgaWYgKEdES19JU19XQVlMQU5EX0RJU1BMQVkgKGdka19kaXNwbGF5X2dldF9kZWZhdWx0ICgpKSkKICAgICAgewogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGY4NmMxNjYuLmJhMWFjYWQgMTAwNjQ0CitpbmRleCBlMmRiNmU0Li5lNTFjZjM0IDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtODAsOCArODAsNiBAQCBub2luc3RfUFJPR1JBTVMgPSAgJChURVNUX1BST0dTKQlcCkBAIC05NDksMTcgKzgzMiwxNiBAQAogaW5kZXggMGIzYTUxOS4uMDdiMDk2ZiAxMDA2NDQKIC0tLSBhL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jCiArKysgYi90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwotQEAgLTExNSw4ICsxMTUsMTAgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTExNSw3ICsxMTUsOSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1gxMV9ERVZJQ0VfTUFOQUdFUl9DT1JFICYmCiAgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1gxMV9ERVZJQ0VfTUFOQUdFUl9YSTIgJiYKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0RJU1BMQVlfTUFOQUdFUiAmJgogKyNpZmRlZiBIQVZFX09QRU5HTAogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfR0xfQ09OVEVYVCAmJgotICNlbmRpZgogKyNlbmRpZgorICNlbmRpZgogIAkgIC8qIE5vdCBhbGxvd2VkIHRvIGZpbmFsaXplIGEgR2RrUGl4YnVmTG9hZGVyIHdpdGhvdXQgY2FsbGluZyBnZGtfcGl4YnVmX2xvYWRlcl9jbG9zZSgpICovCiAgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1BJWEJVRl9MT0FERVIgJiYKLSAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfRFJBV0lOR19DT05URVhUICYmCiAtLSAKLTIuMTIuMAorMi4xNC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDA0LWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDA0LWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNhNTVjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDM0ZjRkMzkyOGU4MjA2YTg5YjBhNjAxYmRmNzlkNjE5NGIzY2M3N2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVGh1LCA5IEp1biAyMDE2IDExOjIxOjM2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBjb25maWd1cmUuYWM6IEZpeCB3YXlsYW5kLXByb3RvY29scyBwYXRoCi0KLVRoZSB3YXlsYW5kLXByb3RvY29scyBkaXJlY3RvcnkgaXMgdXNlZCBkdXJpbmcgYnVpbGQ6IEZpeCB0aGUgcGF0aAotdG8gcG9pbnQgdG8gc3lzcm9vdCBzcGVjaWZpZWQgaW4gcmVjaXBlLgotCi1Ob3JtYWxseSBQS0dfQ09ORklHX1NZU1JPT1RfRElSIGNvdWxkIGJlIHVzZWQgaW4gY29uZmlndXJlLmFjIGJ1dCB0aGF0Ci1icmVha3MgbXVsdGlsaWIgZ3RrKyBhcyBpdCB3b3VsZCBwb2ludCB0byBtdWx0aWxpYiBzeXNyb290IHdoZW4gdGhlCi0oYWxsYXJjaCkgd2F5bGFuZC1wcm90b2NvbHMgaXMgYWN0dWFsbHkgaW4gdGhlIG1hY2hpbmUgc3lzcm9vdC4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDAwYmY1NDQuLjU1MTU5MTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQ2NSw3ICs0NjUsNyBAQCBmaQotIGlmIHRlc3QgIiRlbmFibGVfd2F5bGFuZF9iYWNrZW5kIiA9ICJ5ZXMiOyB0aGVuCi0gICAjIEZvciB0aGUgY2Fpcm8gaW1hZ2UgYmFja2VuZAotICAgY2Fpcm9fYmFja2VuZHM9IiRjYWlyb19iYWNrZW5kcyBjYWlybyIKLS0gIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsIGAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotKyAgQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSAgIEdES19CQUNLRU5EUz0iJEdES19CQUNLRU5EUyB3YXlsYW5kIgotICAgR0RLX1dJTkRPV0lORz0iJEdES19XSU5ET1dJTkcKLSAjZGVmaW5lIEdES19XSU5ET1dJTkdfV0FZTEFORCIKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YTU0NjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIGd0ayszLmluYwotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjlmODU0MzBjZjdjZmE4Y2E4ZDA3MDNiYTY1ZGJlMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjMWZiOGYyMjljNjI2YTNkOWMwZTFjZTZlYTEzOGRlN2Y2NGE1YTZiYzc5OWQ0NWZhMjg2ZmU0NjFjMzQzNyIKLQotUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjRlODI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMjguYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSBndGsrMy5pbmMKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUhhcmRjb2RlZC1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhjMWY1YWI5ODdkZGM3ZGFiM2U1OTY2MGY4OWRjZDliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyOTk2MTJiMDE4Y2ZlZDdiMmM2ODkxNjhhYjUyYjY2ODAyMzcwOGUxN2MzMzVlYjU5MjI2MGQxODZmMTVlMWYiCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzMxYmFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMzEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1yZXF1aXJlIGd0aysuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI3O21kNT1jNTllMGI0NDkwZGQxMzVhNTcyNmViZjg1MWY5YjE3ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNzttZDU9MDdkYjI4NWVjMjA4ZmIzZTBiZjdkODYxYjA2MTQyMDIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9Mjc7bWQ1PTI2MmRiNWRiNWY3NzZmOTg2M2U1NmRmMzE0MjNlMjRjIgotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLzIuMjQvZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8veHNldHRpbmdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RvZ2dsZS1mb250LmRpZmY7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgZmlsZTovL2RvYy1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MjZhMTAwODU4NjA5NGEyY2JiNDU5MmZkM2Y5ZWUxMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OGMxOTIyNzMyYzdlZmMwOGRmNDY1NmE1MzY2ZGNjM2FmZGM4NzkxNTEzNDAwZGFjMjc2MDA5YjQwOTU0NjU4IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUteGtiIC0tZGlzYWJsZS1nbGlidGVzdCAtLWRpc2FibGUtY3VwcyAtLWRpc2FibGUteGluZXJhbWEiCi0KLUxJQlYgPSAiMi4xMC4wIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeZ3RrLWltbW9kdWxlLS4qIF5ndGstcHJpbnRiYWNrZW5kLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgZ3RrX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ3RrLTIuMC8ke0xJQlZ9JykKLSAgICBpbW1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAnaW1tb2R1bGVzJykKLSAgICBwcmludG1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAncHJpbnRiYWNrZW5kcycpOwotCi0gICAgZC5zZXRWYXIoJ0dUS0lNTU9EVUxFU19QQUNLQUdFUycsICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGltbW9kdWxlc19yb290LCAnXmltLSguKilcLnNvJCcsICdndGstaW1tb2R1bGUtJXMnLCAnR1RLIGlucHV0IG1vZHVsZSBmb3IgJXMnKSkpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHJpbnRtb2R1bGVzX3Jvb3QsICdebGlicHJpbnRiYWNrZW5kLSguKilcLnNvJCcsICdndGstcHJpbnRiYWNrZW5kLSVzJywgJ0dUSyBwcmludGJhY2tlbmQgbW9kdWxlIGZvciAlcycpCi0KLSAgICBpZiAoZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpKToKLSAgICAgICAgZC5zZXRWYXIoZC5leHBhbmQoJ1BLR18ke1BOfScpLCAnJHtNTFBSRUZJWH1saWJndGstMi4wJykKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNzAzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMyLmJiCkBAIC0wLDAgKzEsMzQgQEAKK3JlcXVpcmUgZ3RrKy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9Mjc7bWQ1PWM1OWUwYjQ0OTBkZDEzNWE1NzI2ZWJmODUxZjliMTdmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI3O21kNT0wN2RiMjg1ZWMyMDhmYjNlMGJmN2Q4NjFiMDYxNDIwMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNzttZDU9MjYyZGI1ZGI1Zjc3NmY5ODYzZTU2ZGYzMTQyM2UyNGMiCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvMi4yNC9ndGsrLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly94c2V0dGluZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdG9nZ2xlLWZvbnQuZGlmZjtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vZG9jLWZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3N0cmljdC1wcm90b3R5cGVzLnBhdGNoIFwKKwkgICIKKworU1JDX1VSSVttZDVzdW1dID0gImQ1NzQyYWE0MjI3NTIwM2E0OTliNTliNGMzODJhNzg0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2YzhhOTNkZGRhNWVhYmUzYmZlZTFlYjM5NjM2YzlhMDNkMmE1NmM3YjYyODI4YjM1OWJmMTk3OTQzYzU4MmUiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS14a2IgLS1kaXNhYmxlLWdsaWJ0ZXN0IC0tZGlzYWJsZS1jdXBzIC0tZGlzYWJsZS14aW5lcmFtYSIKKworTElCViA9ICIyLjEwLjAiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5ndGstaW1tb2R1bGUtLiogXmd0ay1wcmludGJhY2tlbmQtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBndGtfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9ndGstMi4wLyR7TElCVn0nKQorICAgIGltbW9kdWxlc19yb290ID0gb3MucGF0aC5qb2luKGd0a19saWJkaXIsICdpbW1vZHVsZXMnKQorICAgIHByaW50bW9kdWxlc19yb290ID0gb3MucGF0aC5qb2luKGd0a19saWJkaXIsICdwcmludGJhY2tlbmRzJyk7CisKKyAgICBkLnNldFZhcignR1RLSU1NT0RVTEVTX1BBQ0tBR0VTJywgJyAnLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgaW1tb2R1bGVzX3Jvb3QsICdeaW0tKC4qKVwuc28kJywgJ2d0ay1pbW1vZHVsZS0lcycsICdHVEsgaW5wdXQgbW9kdWxlIGZvciAlcycpKSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwcmludG1vZHVsZXNfcm9vdCwgJ15saWJwcmludGJhY2tlbmQtKC4qKVwuc28kJywgJ2d0ay1wcmludGJhY2tlbmQtJXMnLCAnR1RLIHByaW50YmFja2VuZCBtb2R1bGUgZm9yICVzJykKKworICAgIGlmIChkLmdldFZhcignREVCSUFOX05BTUVTJykpOgorICAgICAgICBkLnNldFZhcihkLmV4cGFuZCgnUEtHXyR7UE59JyksICcke01MUFJFRklYfWxpYmd0ay0yLjAnKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzJkODJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLVNVTU1BUlkgPSAiTmF0aXZlIGljb24gdXRpbHMgZm9yIEdUSysiCi1ERVNDUklQVElPTiA9ICJndGstdXBkYXRlLWljb24tY2FjaGUgYW5kIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIGJ1aWx0IGZyb20gR1RLKyBuYXRpdmVseSwgZm9yIGJ1aWxkIHRpbWUgYW5kIG9uLWhvc3QgcG9zdGluc3Qgc2NyaXB0IGV4ZWN1dGlvbi4iCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAtbmF0aXZlIGdkay1waXhidWYtbmF0aXZlIGxpYnJzdmctbmF0aXZlIgotCi1MSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisgJiBMR1BMdjIuMSsiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtR2RrLWRlcGVuZGVuY3ktZnJvbS1ndGstZW5jb2RlLXN5bWJvbGljLXN2Zy5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyOWY4NTQzMGNmN2NmYThjYThkMDcwM2JhNjVkYmUxMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNmMxZmI4ZjIyOWM2MjZhM2Q5YzBlMWNlNmVhMTM4ZGU3ZjY0YTVhNmJjNzk5ZDQ1ZmEyODZmZTQ2MWMzNDM3IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKLQotUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCi0KLWluaGVyaXQgcGtnY29uZmlnIG5hdGl2ZQotCi0jIHZlcnNpb25zID49IDMuOTAgYXJlIGRldmVsb3BtZW50IHZlcnNpb25zLCBvdGhlcndpc2UgbGlrZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlteXGRcLl0oP1A8cHZlcj4zXC4oWzEtOF0/WzAyNDY4XSkrKFwuXGQrKSspXC50YXIiCi0KLVBLR19DT05GSUdfRk9SX0JVSUxEID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wa2ctY29uZmlnLW5hdGl2ZSIKLQotZG9fY29uZmlndXJlKCkgewotCSMgUXVpdGUgdWdseSBidXQgZGVmaW5lcyBlbm91Z2ggdG8gY29tcGlsZSB0aGUgdG9vbHMuCi0JaWYgISB0ZXN0IC1mIGd0ay9jb25maWcuaDsgdGhlbgotCQllY2hvICIjZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSBcImd0azMwXCIiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JCWVjaG8gIiNkZWZpbmUgSEFWRV9GVFdfSCAxIiA+PiBndGsvY29uZmlnLmgKLQlmaQotCWlmICEgdGVzdCAtZiBnZGsvY29uZmlnLmg7IHRoZW4KLQkJdG91Y2ggZ2RrL2NvbmZpZy5oCi0JZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLQkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCi0JCSR7U30vZ3RrL3VwZGF0ZWljb25jYWNoZS5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2RrLXBpeGJ1Zi0yLjApIFwKLQkJLW8gZ3RrLXVwZGF0ZS1pY29uLWNhY2hlCi0KLQkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCi0JCSR7U30vZ3RrL2VuY29kZXN5bWJvbGljLmMgXAotCQkkKCR7UEtHX0NPTkZJR19GT1JfQlVJTER9IC0tY2ZsYWdzIC0tbGlicyBnaW8tMi4wIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyAke0R9JHtiaW5kaXJ9Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstdXBkYXRlLWljb24tY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8yLjEwLjAvbG9hZGVycy5jYWNoZQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDJjMDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjI4LmJiCkBAIC0wLDAgKzEsNjMgQEAKK1NVTU1BUlkgPSAiTmF0aXZlIGljb24gdXRpbHMgZm9yIEdUSysiCitERVNDUklQVElPTiA9ICJndGstdXBkYXRlLWljb24tY2FjaGUgYW5kIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIGJ1aWx0IGZyb20gR1RLKyBuYXRpdmVseSwgZm9yIGJ1aWxkIHRpbWUgYW5kIG9uLWhvc3QgcG9zdGluc3Qgc2NyaXB0IGV4ZWN1dGlvbi4iCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAtbmF0aXZlIGdkay1waXhidWYtbmF0aXZlIGxpYnJzdmctbmF0aXZlIgorCitMSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisgJiBMR1BMdjIuMSsiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtR2RrLWRlcGVuZGVuY3ktZnJvbS1ndGstZW5jb2RlLXN5bWJvbGljLXN2Zy5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YzFmNWFiOTg3ZGRjN2RhYjNlNTk2NjBmODlkY2Q5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjk5NjEyYjAxOGNmZWQ3YjJjNjg5MTY4YWI1MmI2NjgwMjM3MDhlMTdjMzM1ZWI1OTIyNjBkMTg2ZjE1ZTFmIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK2luaGVyaXQgcGtnY29uZmlnIG5hdGl2ZQorCisjIHZlcnNpb25zID49IDMuOTAgYXJlIGRldmVsb3BtZW50IHZlcnNpb25zLCBvdGhlcndpc2UgbGlrZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlteXGRcLl0oP1A8cHZlcj4zXC4oWzEtOF0/WzAyNDY4XSkrKFwuXGQrKSspXC50YXIiCisKK1BLR19DT05GSUdfRk9SX0JVSUxEID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wa2ctY29uZmlnLW5hdGl2ZSIKKworZG9fY29uZmlndXJlKCkgeworCSMgUXVpdGUgdWdseSBidXQgZGVmaW5lcyBlbm91Z2ggdG8gY29tcGlsZSB0aGUgdG9vbHMuCisJaWYgISB0ZXN0IC1mIGd0ay9jb25maWcuaDsgdGhlbgorCQllY2hvICIjZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSBcImd0azMwXCIiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJCWVjaG8gIiNkZWZpbmUgSEFWRV9GVFdfSCAxIiA+PiBndGsvY29uZmlnLmgKKwlmaQorCWlmICEgdGVzdCAtZiBnZGsvY29uZmlnLmg7IHRoZW4KKwkJdG91Y2ggZ2RrL2NvbmZpZy5oCisJZmkKK30KKworZG9fY29tcGlsZSgpIHsKKwkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCisJCSR7U30vZ3RrL3VwZGF0ZWljb25jYWNoZS5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2RrLXBpeGJ1Zi0yLjApIFwKKwkJLW8gZ3RrLXVwZGF0ZS1pY29uLWNhY2hlCisKKwkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCisJCSR7U30vZ3RrL2VuY29kZXN5bWJvbGljLmMgXAorCQkkKCR7UEtHX0NPTkZJR19GT1JfQlVJTER9IC0tY2ZsYWdzIC0tbGlicyBnaW8tMi4wIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyAke0R9JHtiaW5kaXJ9CisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstdXBkYXRlLWljb24tY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8yLjEwLjAvbG9hZGVycy5jYWNoZQorCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTkwMjg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGU3MzMyNDFmYjU4MGYwMzJlZmJiZTY4NGVjMzVkNGM5ZDI3ZjE1OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgOCBTZXAgMjAxNiAxMzozODozOSArMDMwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgZXJyb3Igb3V0IGlmIHBlcmwgaXMgbm90IGZvdW5kIG9yIGl0cyB2ZXJzaW9uIGlzIHRvbwotIG9sZC4KLQotVGhpcyBhbGxvd3MgdXNlIHRvIGF2b2lkIGRlcGVuZGluZyBvbiBwZXJsLW5hdGl2ZSBpZiB3ZSdyZSBub3QgZ29pbmcKLXRvIHVzZSBpdCAod2hlbiBhcGktZG9jcyBhcmUgZGlzYWJsZWQpLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJhNjFkNmUuLjI5NDE1YmQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM2LDcgKzM2LDcgQEAgZG5sIENoZWNrIGZvciBQZXJsLgotIGRubAotIEFDX1BBVEhfUFJPRyhbUEVSTF0sIFtwZXJsXSkKLSBpZiB0ZXN0IC16ICIkUEVSTCI7IHRoZW4KLS0JQUNfTVNHX0VSUk9SKFtwZXJsIG5vdCBmb3VuZF0pCi0rCUFDX01TR19XQVJOKFtwZXJsIG5vdCBmb3VuZF0pCi0gZmkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW2lmIFBlcmwgdmVyc2lvbiA+PSA1LjE4LjBdKQotQEAgLTQ0LDcgKzQ0LDcgQEAgaWYgIiRQRVJMIiAtZSAicmVxdWlyZSB2NS4xOC4wIjsgdGhlbgotIAlBQ19NU0dfUkVTVUxUKFt5ZXNdKQotIGVsc2UKLSAJQUNfTVNHX1JFU1VMVChbbm9dKQotLQlBQ19NU0dfRVJST1IoW3BlcmwgPj0gNS4xOC4wIGlzIHJlcXVpcmVkIGZvciBndGstZG9jXSkKLSsJQUNfTVNHX1dBUk4oW3BlcmwgPj0gNS4xOC4wIGlzIHJlcXVpcmVkIGZvciBndGstZG9jXSkKLSBmaQotIAotIGRubAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2gKaW5kZXggNDc3ZmM5YS4uMmZlM2FiOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNmZhYjgyYjkzYzdiZDMwMWViNDI0NDg1MTViMDJmN2NiMzMwNjg5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTI4MTAyODc0YmMyMzM5YTFkNTdjNmIxNzg4NzdlMGM2MDAyY2IzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogV2VkLCAzMSBBdWcgMjAxNiAxNjo0NDo0NiArMDMwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZG9jb2RlIHBhdGhzIHRvIHBlcmwvcHl0aG9uIGluIHNjcmlwdHMuCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBEbyBub3QgaGFyZG9jb2RlIHBhdGhzIHRvIHBlcmwvcHl0aG9uIGluIHNjcmlwdHMuCiAKIERvaW5nIHNvIHdoZW4gdGhlIGludGVycHJldGVycyBhcmUgc29tZXdoZXJlIGRlZXAgaW4gYSBzeXNyb290IGRpcmVjdG9yeQogY2FuIHJlYWNoIHRoZSBzaGViYW5nIGxpbmUgbGltaXQsIGFuZCByZXN1bHRpbmcgc2NyaXB0cyB3b3VsZG4ndCB3b3JrCkBAIC05LDEzMSArOSwxMzQgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQotIGd0a2RvYy1jaGVjay5pbiAgICAgfCAyICstCi0gZ3RrZG9jLWNvbW1vbi5wbC5pbiB8IDIgKy0KLSBndGtkb2MtZGVwc2Nhbi5pbiAgIHwgMiArLQotIGd0a2RvYy1maXh4cmVmLmluICAgfCAyICstCi0gZ3RrZG9jLW1rZGIuaW4gICAgICB8IDIgKy0KLSBndGtkb2MtbWt0bXBsLmluICAgIHwgMiArLQotIGd0a2RvYy1yZWJhc2UuaW4gICAgfCAyICstCi0gZ3RrZG9jLXNjYW4uaW4gICAgICB8IDIgKy0KLSBndGtkb2Mtc2NhbmdvYmouaW4gIHwgMiArLQotIHRlc3RzL3Rvb2xzLnNoLmluICAgfCA0ICsrLS0KLSAxMCBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKyBndGtkb2MtY2hlY2suaW4gICAgfCAyICstCisgZ3RrZG9jLWRlcHNjYW4uaW4gIHwgMiArLQorIGd0a2RvYy1maXh4cmVmLmluICB8IDIgKy0KKyBndGtkb2MtbWtkYi5pbiAgICAgfCAyICstCisgZ3RrZG9jLW1raHRtbC5pbiAgIHwgMiArLQorIGd0a2RvYy1ta21hbi5pbiAgICB8IDIgKy0KKyBndGtkb2MtbWtwZGYuaW4gICAgfCAyICstCisgZ3RrZG9jLXJlYmFzZS5pbiAgIHwgMiArLQorIGd0a2RvYy1zY2FuLmluICAgICB8IDIgKy0KKyBndGtkb2Mtc2NhbmdvYmouaW4gfCAyICstCisgdGVzdHMvdG9vbHMuc2guaW4gIHwgMiArLQorIDExIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLWNoZWNrLmluIGIvZ3RrZG9jLWNoZWNrLmluCi1pbmRleCA1NjBkNjliLi5iNjA4NTdmIDEwMDc1NQoraW5kZXggOGM4ZTkxNy4uZjZhMjVmNiAxMDA3NTUKIC0tLSBhL2d0a2RvYy1jaGVjay5pbgogKysrIGIvZ3RrZG9jLWNoZWNrLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KLSAjCi0gIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCi1kaWZmIC0tZ2l0IGEvZ3RrZG9jLWNvbW1vbi5wbC5pbiBiL2d0a2RvYy1jb21tb24ucGwuaW4KLWluZGV4IDQ3NDczOTYuLmNmYWRiNzggMTAwNjQ0Ci0tLS0gYS9ndGtkb2MtY29tbW9uLnBsLmluCi0rKysgYi9ndGtkb2MtY29tbW9uLnBsLmluCi1AQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0KICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLWRlcHNjYW4uaW4gYi9ndGtkb2MtZGVwc2Nhbi5pbgotaW5kZXggODNhZjAxYi4uOTE3ZTI0NyAxMDA2NDQKK2luZGV4IDliZmFmMzAuLmFhZGM5NTIgMTAwNjQ0CiAtLS0gYS9ndGtkb2MtZGVwc2Nhbi5pbgogKysrIGIvZ3RrZG9jLWRlcHNjYW4uaW4KIEBAIC0xLDQgKzEsNCBAQAogLSMhQFBZVEhPTkAKLSsjIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCiAgCi0gaW1wb3J0IGd6aXAsIG9zLnBhdGgsIHJlCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogIAogZGlmZiAtLWdpdCBhL2d0a2RvYy1maXh4cmVmLmluIGIvZ3RrZG9jLWZpeHhyZWYuaW4KLWluZGV4IDNkOWU4ZDAuLmQ1NTE5MGIgMTAwNzU1CitpbmRleCAwZWEwMmQ0Li5iZGQ0NDNhIDEwMDc1NQogLS0tIGEvZ3RrZG9jLWZpeHhyZWYuaW4KICsrKyBiL2d0a2RvYy1maXh4cmVmLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbiAtKi0KICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1rZGIuaW4gYi9ndGtkb2MtbWtkYi5pbgotaW5kZXggOGRkNmQ1ZS4uZDgwODc1MCAxMDA3NTUKK2luZGV4IDQyZDU3MzEuLjNhNTZkNTYgMTAwNzU1CiAtLS0gYS9ndGtkb2MtbWtkYi5pbgogKysrIGIvZ3RrZG9jLW1rZGIuaW4KIEBAIC0xLDQgKzEsNCBAQAotLSMhQFBFUkxAIC13Ci0rIyEvdXNyL2Jpbi9lbnYgcGVybAotICMgLSotIGNwZXJsIC0qLQorLSMhQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gcHl0aG9uOyBjb2Rpbmc6IHV0Zi04IC0qLQogICMKICAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KLWRpZmYgLS1naXQgYS9ndGtkb2MtbWt0bXBsLmluIGIvZ3RrZG9jLW1rdG1wbC5pbgotaW5kZXggYzY0ZGZkMy4uMmY0NmMxOCAxMDA3NTUKLS0tLSBhL2d0a2RvYy1ta3RtcGwuaW4KLSsrKyBiL2d0a2RvYy1ta3RtcGwuaW4KK2RpZmYgLS1naXQgYS9ndGtkb2MtbWtodG1sLmluIGIvZ3RrZG9jLW1raHRtbC5pbgoraW5kZXggMGQwYTE1ZC4uOTE0ZmY1NSAxMDA2NDQKKy0tLSBhL2d0a2RvYy1ta2h0bWwuaW4KKysrKyBiL2d0a2RvYy1ta2h0bWwuaW4KIEBAIC0xLDQgKzEsNCBAQAotLSMhQFBFUkxAIC13Ci0rIyEvdXNyL2Jpbi9lbnYgcGVybAotICMgLSotIGNwZXJsIC0qLQorLSMhQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gcHl0aG9uOyBjb2Rpbmc6IHV0Zi04IC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2MtbWttYW4uaW4gYi9ndGtkb2MtbWttYW4uaW4KK2luZGV4IGM1NDQ1Y2QuLjY1ZGI3MWEgMTAwNjQ0CistLS0gYS9ndGtkb2MtbWttYW4uaW4KKysrKyBiL2d0a2RvYy1ta21hbi5pbgorQEAgLTEsNCArMSw0IEBACistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob247IGNvZGluZzogdXRmLTggLSotCisgIworICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgorZGlmZiAtLWdpdCBhL2d0a2RvYy1ta3BkZi5pbiBiL2d0a2RvYy1ta3BkZi5pbgoraW5kZXggZThjMGMwMy4uZjgwNzIzNiAxMDA3NTUKKy0tLSBhL2d0a2RvYy1ta3BkZi5pbgorKysrIGIvZ3RrZG9jLW1rcGRmLmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0KICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLXJlYmFzZS5pbiBiL2d0a2RvYy1yZWJhc2UuaW4KLWluZGV4IDM3NTQ4MmQuLmNmMDViNDUgMTAwNjQ0CitpbmRleCAxN2E3MWMyLi5lYzNmZDI4IDEwMDc1NQogLS0tIGEvZ3RrZG9jLXJlYmFzZS5pbgogKysrIGIvZ3RrZG9jLXJlYmFzZS5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1zY2FuLmluIGIvZ3RrZG9jLXNjYW4uaW4KLWluZGV4IDA0OGU1YzkuLjc4YzYxMzYgMTAwNzU1CitpbmRleCA5NTRjODExLi5mNDYxNTA0IDEwMDc1NQogLS0tIGEvZ3RrZG9jLXNjYW4uaW4KICsrKyBiL2d0a2RvYy1zY2FuLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbiAtKi0KICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLXNjYW5nb2JqLmluIGIvZ3RrZG9jLXNjYW5nb2JqLmluCi1pbmRleCBmYjY2Yjc2Li42N2VlOGY3IDEwMDY0NAoraW5kZXggNGNiZTEzMC4uNTJjMmMyNCAxMDA2NDQKIC0tLSBhL2d0a2RvYy1zY2FuZ29iai5pbgogKysrIGIvZ3RrZG9jLXNjYW5nb2JqLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbiAtKi0KICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvdGVzdHMvdG9vbHMuc2guaW4gYi90ZXN0cy90b29scy5zaC5pbgotaW5kZXggYTExNGE0Mi4uNzA3Mzg4MyAxMDA2NDQKK2luZGV4IDRkMzAxZDAuLjU2NWZjMWUgMTAwNjQ0CiAtLS0gYS90ZXN0cy90b29scy5zaC5pbgogKysrIGIvdGVzdHMvdG9vbHMuc2guaW4KLUBAIC0xMSw3ICsxMSw3IEBAIGVjaG8gIlJ1bm5pbmcgc3VpdGUocyk6IGd0ay1kb2MtJHN1aXRlIjsKLSAKLSAjIHRlc3QgcGVybCBzY3JpcHRzCi0gZm9yIGZpbGUgaW4gZ3RrZG9jLWNoZWNrIGd0a2RvYy1maXh4cmVmIGd0a2RvYy1ta2RiIGd0a2RvYy1ta3RtcGwgZ3RrZG9jLXJlYmFzZSBndGtkb2Mtc2NhbiBndGtkb2Mtc2NhbmdvYmogOyBkbwotLSAgQFBFUkxAIC1jd1QgYHdoaWNoICRmaWxlYAotKyAgcGVybCAtY3dUIGB3aGljaCAkZmlsZWAKLSAgIGlmIHRlc3QgJD8gPSAxIDsgdGhlbiBmYWlsZWQ9YGV4cHIgJGZhaWxlZCArIDFgOyBmaQotICAgdGVzdGVkPWBleHByICR0ZXN0ZWQgKyAxYAorQEAgLTMxLDcgKzMxLDcgQEAgZG9uZQorICMgVE9ETzogdGVzdCBweXRob24gMiBhbmQgMyAocHl0aG9uMyAtbWNvbXBpbGVhbGwgZ3RrZG9jLyoucHkpCisgZm9yIGZpbGUgaW4gZ3RrZG9jLWNoZWNrIGd0a2RvYy1kZXBzY2FuIGd0a2RvYy1maXh4cmVmIGd0a2RvYy1ta2RiIGd0a2RvYy1ta2h0bWwgZ3RrZG9jLW1rbWFuIGd0a2RvYy1ta3BkZiBndGtkb2MtcmViYXNlIGd0a2RvYy1zY2FuZ29iajsgZG8KKyAgICAgZnVsbGZpbGU9YHdoaWNoICRmaWxlYAorLSAgICBAUFlUSE9OQCAtbSBweV9jb21waWxlICRmdWxsZmlsZQorKyAgICBweXRob24zIC1tIHB5X2NvbXBpbGUgJGZ1bGxmaWxlCisgICAgIGlmIHRlc3QgJD8gIT0gMCA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKKyAgICAgdGVzdGVkPWBleHByICR0ZXN0ZWQgKyAxYAogIGRvbmUKLUBAIC0zNCw3ICszNCw3IEBAIGRvbmUKLSAKLSAKLSAjIHRlc3QgcHl0aG9uIHNjcmlwdHMKLS1AUFlUSE9OQCAtbSBweV9jb21waWxlIGB3aGljaCBndGtkb2MtZGVwc2NhbmAKLStweXRob24gLW0gcHlfY29tcGlsZSBgd2hpY2ggZ3RrZG9jLWRlcHNjYW5gCi0gaWYgdGVzdCAkPyAhPSAwIDsgdGhlbiBmYWlsZWQ9YGV4cHIgJGZhaWxlZCArIDFgOyBmaQotIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKLSAKIC0tIAotMi45LjMKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9jb25kaXRpb25hbHRlc3RzLnBhdGNoCmluZGV4IDBjMTgwZjIuLjIxYzJkYjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9jb25kaXRpb25hbHRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9jb25kaXRpb25hbHRlc3RzLnBhdGNoCkBAIC0xLDE0ICsxLDIzIEBACitGcm9tIDc4YmJmMTg1OTM0MTQ3YTY5Y2ViNGI2MTdkNDI0ZTEyZTcwOTk3YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMjE6MDA6NTggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIGd0ay1kb2M6IEhhbmRsZSBmbG9hdGluZyBndGstZG9jIGRlcGVuZGVuY3kKKwogQWxsb3cgdGhlIHRlc3RzIHRvIGJlIGV4cGxpY2l0bHkgZGlzYWJsZWQgdG8gYXZvaWQgZmxvYXRpbmcgZGVwZW5kbmVjeQogaXNzdWVzLiBUaGlzIGlzIG5vdCByZWFsbHkgYW4gaXNzdWUgd2l0aCBSU1MgYnV0IGlzIG9uIHByZXZpb3VzIHJlbGVhc2VzLgogCiBSUCAyMDE3LzYvMjcKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogZ3RrLWRvYy0xLjI1L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGd0ay1kb2MtMS4yNS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGd0ay1kb2MtMS4yNS9jb25maWd1cmUuYWMKLUBAIC0xNjEsNiArMTYxLDExIEBAIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorLS0tCisgY29uZmlndXJlLmFjIHwgMTAgKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDY4NGUyZDEuLmU1ZTNhYWIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE0Niw2ICsxNDYsMTEgQEAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCiAgCWZpCiAgZmkKICAKQEAgLTIwLDcgKzI5LDcgQEAKICBkbmwgaWYgZ2xpYiBpcyBhdmFpbGFibGUgd2UgY2FuIGVuYWJsZSB0aGUgdGVzdHMKICBQS0dfQ0hFQ0tfTU9EVUxFUyhURVNUX0RFUFMsIFtnbGliLTIuMCA+PSAyLjYuMCBnb2JqZWN0LTIuMCA+PSAyLjYuMF0sCiAgCVsJZ2xpYl9wcmVmaXg9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXByZWZpeCBnbGliLTIuMGAiCi1AQCAtMTcxLDYgKzE3NiwxMSBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhURVNUX0RFUFMsIFtnbGliLTIuMCA+CitAQCAtMTU2LDYgKzE2MSwxMSBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhURVNUX0RFUFMsIFtnbGliLTIuMCA+PSAyLjYuMCBnb2JqZWN0LTIuMCA+PSAyLjYuMF0sCiAgCQlidWlsZF90ZXN0cz0ibm8iCiAgCV0KICApCkBAIC0zMCw1ICszOSw4IEBACiArZmkKICsKICBBTV9DT05ESVRJT05BTChHVEtfRE9DX1VTRV9MSUJUT09MLCB0ZXN0IC1uICIkTElCVE9PTCIgLWEgeCRndGtfZG9jX3VzZV9saWJ0b29sID0geHllcyApCi0gZG5sIHRoaXMgZW5hYmxlIHRoZSBydWxlIGluIHRlc3QvTWFrZWZpbGUuYW0KKyBkbmwgdGhpcyBlbmFibGVzIHRoZSBydWxlIGluIHRlc3QvTWFrZWZpbGUuYW0KICBBTV9DT05ESVRJT05BTChCVUlMRF9URVNUUywgdGVzdCB4JGJ1aWxkX3Rlc3RzID0geHllcykKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9uby1jbG9iYmVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL25vLWNsb2JiZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZhMjJiMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9uby1jbG9iYmVyLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0luIG91dC1vZi10cmVlIGJ1aWxkcyBndGstZG9jJ3Mgc2V0dXAtYnVpbGQgdGFyZ2V0IGNvcGllcyBhbGwgdGhlIGNvbnRlbnQgZnJvbSAkc3JjZGlyIHRvICRidWlsZGRpci4KKworSG93ZXZlciwgaWYgc29tZSBvZiB0aGlzIGNvbnRlbnQgaXMgcmVnZW5lcmF0ZWQgYXQgY29uZmlndXJlIHRpbWUgdGhpcyBjYW4gaGFwcGVuOgorCisxKSBjb25maWd1cmUgd3JpdGVzIG5ldyBidWlsZC92ZXJzaW9uLnhtbAorMikgbWFrZSBjb21waWxlIGNvcGllcyBjb250ZW50LCBpbmNsdWRpbmcgdGhlIHRhcmJhbGwncyBzcmMvdmVyc2lvbi54bWwKKyAgIHRvIGJ1aWxkL3ZlcnNpb24ueG1sLCBhbmQgZ2VuZXJhdGVzIGd0ay1kb2MuCiszKSBtYWtlIGluc3RhbGwgbm90aWNlcyBidWlsZC92ZXJzaW9uLnhtbCBpcyBvbGRlciB0aGFuIGNvbmZpZ3VyZS5zdGF0dXMsCisgICBzbyByZWdlbmVyYXRlcyBndGstZG9jLgorCitndGstZG9jIGdlbmVyYXRpb24gaXMgYSBzbG93IHByb2Nlc3MgYXQgdGhlIGJlc3Qgb2YgdGltZXMsIHNvIGRvaW5nIGl0IHR3aWNlIGlzbid0IGdvb2QuCisKK1NvbHZlIHRoaXMgYnkgY2hhbmdpbmcgY3AgLS1mb3JjZSB0byBjcCAtLW5vLWNsb2JiZXIsIHNvIHNldHVwLWJ1aWxkIG9ubHkgY29waWVzCitmaWxlcyB3aGljaCBkb24ndCBhbHJlYWR5IGV4aXN0LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDU3MV0KK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9ndGstZG9jLm1ha2UgYi9ndGstZG9jLm1ha2UKK2luZGV4IGY4N2VhYWIuLjI0NmYzYzAgMTAwNjQ0CistLS0gYS9ndGstZG9jLm1ha2UKKysrKyBiL2d0ay1kb2MubWFrZQorQEAgLTExMywzICsxMTMsMyBAQCBzZXR1cC1idWlsZC5zdGFtcDoKKyAJICAgICAgdGVzdCAtZiAkKGFic19zcmNkaXIpLyQkZmlsZSAmJiBcCistCSAgICAgICAgY3AgLXBmICQoYWJzX3NyY2RpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS8kJGZpbGUgfHwgdHJ1ZTsgXAorKwkgICAgICAgIGNwIC1wbiAkKGFic19zcmNkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvJCRmaWxlIHx8IHRydWU7IFwKKyAJICAgIGRvbmU7IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaAppbmRleCBjNzY4ODcwLi5iZmJjNzc3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL3BrZy1jb25maWctbmF0aXZlLnBhdGNoCkBAIC0xLDI0ICsxLDMyIEBACi1Vc2UgbmF0aXZlIHBrZy1jb25maWcgd2hlbiBsb29raW5nIGZvciBndGstZG9jLgorRnJvbSA1ZjE0NTYyMWI0NzgwY2ZkNmE1NjMyZmNjOTdjNDVmNTcyOTM4ZWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgNSBTZXAgMjAxNiAyMjoyNTo0NCArMDEwMAorU3ViamVjdDogW1BBVENIIDUvNV0gVXNlIG5hdGl2ZSBwa2ctY29uZmlnIHdoZW4gbG9va2luZyBmb3IgZ3RrLWRvYy4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEvZ3RrLWRvYy5tNCBiL2d0ay1kb2MubTQKLWluZGV4IDM2NzU1NDMuLjk0ODgxYWUgMTAwNjQ0Ci0tLS0gYS9ndGstZG9jLm00Ci0rKysgYi9ndGstZG9jLm00Ci1AQCAtMSw2ICsxLDYgQEAKLSBkbmwgLSotIG1vZGU6IGF1dG9jb25mIC0qLQorLS0tCisgZ3RrLWRvYy5tNCB8IDcgKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAorSW5kZXg6IGd0ay1kb2MtMS4yNy9ndGstZG9jLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3RrLWRvYy0xLjI3Lm9yaWcvZ3RrLWRvYy5tNAorKysrIGd0ay1kb2MtMS4yNy9ndGstZG9jLm00CitAQCAtMjUsNyArMjUsNyBAQAorICMgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorICMgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisgCiAtIyBzZXJpYWwgMgogKyMgc2VyaWFsIDIuMQotCisgCiAgZG5sIFVzYWdlOgogIGRubCAgIEdUS19ET0NfQ0hFQ0soW21pbmltdW0tZ3RrLWRvYy12ZXJzaW9uXSkKLUBAIC0xMCwxMSArMTAsMTYgQEAgQUNfREVGVU4oW0dUS19ET0NfQ0hFQ0tdLAorQEAgLTM1LDExICszNSwxNiBAQCBBQ19ERUZVTihbR1RLX0RPQ19DSEVDS10sCiAgICBBQ19CRUZPUkUoW0FDX1BST0dfTElCVE9PTF0sWyQwXSlkbmwgc2V0dXAgbGlidG9vbCBmaXJzdAogICAgQUNfQkVGT1JFKFtBTV9QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKLQorIAogKyAgZ3RrZG9jX3BrZ2NvbmZpZ19zYXZlPSRQS0dfQ09ORklHCiArICBQS0dfQ09ORklHPXBrZy1jb25maWctbmF0aXZlCiArCkBAIC0yNiw3ICszNCw3IEBACiAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBndGstZG9jXSkKICAgIFBLR19DSEVDS19FWElTVFMoWyRndGtfZG9jX3JlcXVpcmVzXSxbaGF2ZV9ndGtfZG9jPXllc10sW2hhdmVfZ3RrX2RvYz1ub10pCiAgICBBQ19NU0dfUkVTVUxUKCRoYXZlX2d0a19kb2MpCi0KKyAKICsgIFBLR19DT05GSUc9JGd0a2RvY19wa2djb25maWdfc2F2ZQogKwogICAgaWYgdGVzdCAiJGhhdmVfZ3RrX2RvYyIgPSAibm8iOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlYjk5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmb3IgZ2xpYi1iYXNlZCBzb2Z0d2FyZSIKLURFU0NSSVBUSU9OID0gIkd0ay1kb2MgaXMgYSBzZXQgb2Ygc2NyaXB0cyB0aGF0IGV4dHJhY3Qgc3BlY2lhbGx5IGZvcm1hdHRlZCBjb21tZW50cyBcCi0gICAgICAgICAgICAgICBmcm9tIGdsaWItYmFzZWQgc29mdHdhcmUgYW5kIHByb2R1Y2UgYSBzZXQgb2YgaHRtbCBkb2N1bWVudGF0aW9uIGZpbGVzIGZyb20gdGhlbSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy9ndGstZG9jLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotaW5oZXJpdCBnbm9tZWJhc2UKLQotIyBDb25maWd1cmUgdGhlIHNjcmlwdHMgY29ycmVjdGx5IChhbmQgYnVpbGQgdGhlaXIgZGVwZW5kZW5jaWVzKSBvbmx5IGlmIHRoZXkgYXJlIGFjdHVhbGx5Ci0jIGdvaW5nIHRvIGJlIHVzZWQ7IG90aGVyaXdzZSB3ZSBuZWVkIG9ubHkgdGhlIG00L21ha2VmaWxlIGluY2x1ZGVzIGZyb20gdGhlIGd0ay1kb2MgdGFyYmFsbC4KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgImFwaS1kb2N1bWVudGF0aW9uIiwgIndvcmtpbmctc2NyaXB0cyIsICIiLCBkKX0iCi0KLSMgVGhpcyB3aWxsIGNhdXNlIHRhcmdldCBndGstZG9jIHRvIGhhcmRjb2RlIHBhdGhzIG9mIG5hdGl2ZSBkZXBlbmRlbmNpZXMKLSMgaW50byBpdHMgc2NyaXB0cy4gVGhpcyBtZWFucyB0aGF0IHRhcmdldCBndGstZG9jIHBhY2thZ2UgaXMgYnJva2VuOwotIyBob3BlZnVsbHkgbm8gb25lIG1pbmRzIGJlY2F1c2UgaXRzIHNjcmlwdHMgYXJlIG5vdCB1c2VkIGZvciBhbnl0aGluZyBkdXJpbmcgYnVpbGQKLSMgYW5kIHNob3VsZG4ndCBiZSB1c2VkIG9uIHRhcmdldHMuCi1QQUNLQUdFQ09ORklHW3dvcmtpbmctc2NyaXB0c10gPSAiLS13aXRoLWhpZ2hsaWdodD1zb3VyY2UtaGlnaGxpZ2h0LC0td2l0aC1oaWdobGlnaHQ9bm8sbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIHNvdXJjZS1oaWdobGlnaHQtbmF0aXZlIHBlcmwtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzLGdsaWItMi4wIgotCi0jIFdlIGNhbm5vdCB1c2UgaG9zdCBwZXJsLCBiZWNhdXNlIGl0IG1heSBiZSB0b28gb2xkIGZvciBndGstZG9jCi1FWFRSQU5BVElWRVBBVEggKz0gInBlcmwtbmF0aXZlIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi14c2x0cHJvYy1pcy1ub3QtZm91bmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi1wZXJsLWlzLW5vdC1mb3VuZC1vci1pdHMtdmVyc2lvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZGl0aW9uYWx0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLnBhdGNoIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIwZGM2NTcwOTUzMTEyYTQ2NGE0MDlmYjk5MjU4Y2NiYyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjFlYTQ2ZWQ0MDBlNjUwMWY5NzVhY2FhZmVhMzE0NzljZWE4ZjMyZjkxMWRjYTRkZmYwMzZmNTllNjQ2NGZkNDIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotIyBEbyBub3QgY2hlY2sgZm9yIFhNTCBjYXRhbG9ncyB3aGVuIGJ1aWxkaW5nIGJlY2F1c2UgdGhhdAotIyBpbmZvcm1hdGlvbiBpcyBub3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkLiBSZWNpcGUKLSMgZGVwZW5kZW5jaWVzIG1ha2Ugc3VyZSB3ZSBoYXZlIGFsbCB0aGUgcmlnaHQgYml0cy4KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICBzZWQgLWkgLWUgJ3MsXkpIX0NIRUNLX1hNTF9DQVRBTE9HLiosLCcgJHtTfS9jb25maWd1cmUuYWMKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vc2dtbCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgotRklMRVNfJHtQTn0tZG9jID0gIiIKLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgotZ3RrZG9jX21ha2VmaWxlc19zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgICAgICMgUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQgYmluYXJpZXMKLSAgICAgICAgIyBpbnN0ZWFkIG9mIGxpYnRvb2wgd3JhcHBlciBvciBydW5uaW5nIHRoZW0gZGlyZWN0bHkKLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8R1RLRE9DX1JVTiA9Lip8R1RLRE9DX1JVTiA9IFwkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyfCIgXAotICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2d0ay1kb2MvZGF0YS9ndGstZG9jKm1ha2UKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NTI4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI3LmJiCkBAIC0wLDAgKzEsNTAgQEAKK1NVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIGdsaWItYmFzZWQgc29mdHdhcmUiCitERVNDUklQVElPTiA9ICJHdGstZG9jIGlzIGEgc2V0IG9mIHNjcmlwdHMgdGhhdCBleHRyYWN0IHNwZWNpYWxseSBmb3JtYXR0ZWQgY29tbWVudHMgXAorICAgICAgICAgICAgICAgZnJvbSBnbGliLWJhc2VkIHNvZnR3YXJlIGFuZCBwcm9kdWNlIGEgc2V0IG9mIGh0bWwgZG9jdW1lbnRhdGlvbiBmaWxlcyBmcm9tIHRoZW0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvZ3RrLWRvYy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK2luaGVyaXQgZ25vbWViYXNlCisKKyMgQ29uZmlndXJlIHRoZSBzY3JpcHRzIGNvcnJlY3RseSAoYW5kIGJ1aWxkIHRoZWlyIGRlcGVuZGVuY2llcykgb25seSBpZiB0aGV5IGFyZSBhY3R1YWxseQorIyBnb2luZyB0byBiZSB1c2VkOyBvdGhlcml3c2Ugd2UgbmVlZCBvbmx5IHRoZSBtNC9tYWtlZmlsZSBpbmNsdWRlcyBmcm9tIHRoZSBndGstZG9jIHRhcmJhbGwuCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJhcGktZG9jdW1lbnRhdGlvbiIsICJ3b3JraW5nLXNjcmlwdHMiLCAiIiwgZCl9IgorCisjIFRoaXMgd2lsbCBjYXVzZSB0YXJnZXQgZ3RrLWRvYyB0byBoYXJkY29kZSBwYXRocyBvZiBuYXRpdmUgZGVwZW5kZW5jaWVzCisjIGludG8gaXRzIHNjcmlwdHMuIFRoaXMgbWVhbnMgdGhhdCB0YXJnZXQgZ3RrLWRvYyBwYWNrYWdlIGlzIGJyb2tlbjsKKyMgaG9wZWZ1bGx5IG5vIG9uZSBtaW5kcyBiZWNhdXNlIGl0cyBzY3JpcHRzIGFyZSBub3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkCisjIGFuZCBzaG91bGRuJ3QgYmUgdXNlZCBvbiB0YXJnZXRzLgorUEFDS0FHRUNPTkZJR1t3b3JraW5nLXNjcmlwdHNdID0gIi0td2l0aC1oaWdobGlnaHQ9c291cmNlLWhpZ2hsaWdodCwtLXdpdGgtaGlnaGxpZ2h0PW5vLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBzb3VyY2UtaGlnaGxpZ2h0LW5hdGl2ZSBweXRob24zLXNpeCIKK1BBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyxnbGliLTIuMCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYjI5OTQ5ZTA5NjQ3NjJlNDc0YjcwNmNlMjIxNzE2MDIiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlMjZiZDNmNzA4MGM3NDliMWNiNjZjNDZjNmJmODIzOWUyZjMyMGE5NDk5NjRmYjljNmQ1NmUxYjBjNmQ5YTZmIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi14c2x0cHJvYy1pcy1ub3QtZm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZGl0aW9uYWx0ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uby1jbG9iYmVyLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBEbyBub3QgY2hlY2sgZm9yIFhNTCBjYXRhbG9ncyB3aGVuIGJ1aWxkaW5nIGJlY2F1c2UgdGhhdAorIyBpbmZvcm1hdGlvbiBpcyBub3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkLiBSZWNpcGUKKyMgZGVwZW5kZW5jaWVzIG1ha2Ugc3VyZSB3ZSBoYXZlIGFsbCB0aGUgcmlnaHQgYml0cy4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICBzZWQgLWkgLWUgJ3MsXkpIX0NIRUNLX1hNTF9DQVRBTE9HLiosLCcgJHtTfS9jb25maWd1cmUuYWMKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vc2dtbCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorRklMRVNfJHtQTn0tZG9jID0gIiIKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ3RrZG9jX21ha2VmaWxlc19zeXNyb290X3ByZXByb2Nlc3MoKSB7CisgICAgICAgICMgUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQgYmluYXJpZXMKKyAgICAgICAgIyBpbnN0ZWFkIG9mIGxpYnRvb2wgd3JhcHBlciBvciBydW5uaW5nIHRoZW0gZGlyZWN0bHkKKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgICAgLWUgInN8R1RLRE9DX1JVTiA9Lip8R1RLRE9DX1JVTiA9IFwkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyfCIgXAorICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2d0ay1kb2MvZGF0YS9ndGstZG9jKm1ha2UKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MDQ2MzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkRlZmF1bHQgaWNvbiB0aGVtZSB0aGF0IGFsbCBpY29uIHRoZW1lcyBhdXRvbWF0aWNhbGx5IGluaGVyaXQgZnJvbSIKLUhPTUVQQUdFID0gImh0dHA6Ly9pY29uLXRoZW1lLmZyZWVkZXNrdG9wLm9yZy93aWtpL0hpY29sb3JUaGVtZSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMDhhNDQ2ODA5OTEzZmM5YjNjNzE4ZjBlYWVhMDQyNiIKLQotU1JDX1VSSSA9ICJodHRwOi8vaWNvbi10aGVtZS5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2YWEyYjM5OTNhODgzZDg1MDE3YzdjYzBjZmMwZmI3MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2M0NWFjMzMxOGMzMTIxMmVhMmQ4Y2I5OWU2NDAyMDczMjM5M2VlNzYzMGZhNmMxODEwYWY1Zjk4NzAzM2NjIgotCi1pbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDY0YjE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJEZWZhdWx0IGljb24gdGhlbWUgdGhhdCBhbGwgaWNvbiB0aGVtZXMgYXV0b21hdGljYWxseSBpbmhlcml0IGZyb20iCitIT01FUEFHRSA9ICJodHRwOi8vaWNvbi10aGVtZS5mcmVlZGVza3RvcC5vcmcvd2lraS9IaWNvbG9yVGhlbWUiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjA4YTQ0NjgwOTkxM2ZjOWIzYzcxOGYwZWFlYTA0MjYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiODRlZWM4ZDZmODEwMjQwYTA2OWM3MzFmMTg3MGI0NzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzE3NDg0MzUyMjcxZDE4Y2JiY2ZhYzM4NjhlYWI3OThkNjdmZmYxYjg0MDJlNzQwYmFhNmZmNDFkNTg4YTlkOCIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjIuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjIuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM1ZDM4MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkpTT04tR0xpYiBpbXBsZW1lbnRzIGEgZnVsbCBKU09OIHBhcnNlciB1c2luZyBHTGliIGFuZCBHT2JqZWN0IgotREVTQ1JJUFRJT04gPSAiVXNlIEpTT04tR0xpYiBpdCBpcyBwb3NzaWJsZSB0byBwYXJzZSBhbmQgZ2VuZXJhdGUgdmFsaWQgSlNPTlwKLSBkYXRhIHN0cnVjdHVyZXMsIHVzaW5nIGEgRE9NLWxpa2UgQVBJLiBKU09OLUdMaWIgYWxzbyBvZmZlcnMgR09iamVjdCBcCi1pbnRlZ3JhdGlvbiwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgR09iamVjdCBcCi1pbnN0YW5jZXMgdG8gYW5kIGZyb20gSlNPTiBkYXRhIHR5cGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9Kc29uR2xpYiIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmZjMxZTdkMDU5NGRmNDQzMThlMTJmYWNkYTNkMDg2ZSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZkNTVhOTAzN2QzOWU3YTEwZjBkYjY0MzA5ZjVmMDI2NWZhMzJlYzk2MmJmODUwNjYwODdiODNhMjgwN2Y0MGEiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdldHRleHQgbGliX3BhY2thZ2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbWFucGFnZXMKLQotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuIC0td2l0aC14bWwtY2F0YWxvZz0ke1NUQUdJTkdfRVRDRElSX05BVElWRX0veG1sL2NhdGFsb2cueG1sLCAtLWRpc2FibGUtbWFuLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWZlM2NjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuNC4yLmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiSlNPTi1HTGliIGltcGxlbWVudHMgYSBmdWxsIEpTT04gcGFyc2VyIHVzaW5nIEdMaWIgYW5kIEdPYmplY3QiCitERVNDUklQVElPTiA9ICJVc2UgSlNPTi1HTGliIGl0IGlzIHBvc3NpYmxlIHRvIHBhcnNlIGFuZCBnZW5lcmF0ZSB2YWxpZCBKU09OXAorIGRhdGEgc3RydWN0dXJlcywgdXNpbmcgYSBET00tbGlrZSBBUEkuIEpTT04tR0xpYiBhbHNvIG9mZmVycyBHT2JqZWN0IFwKK2ludGVncmF0aW9uLCBwcm92aWRpbmcgdGhlIGFiaWxpdHkgdG8gc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBHT2JqZWN0IFwKK2luc3RhbmNlcyB0byBhbmQgZnJvbSBKU09OIGRhdGEgdHlwZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0pzb25HbGliIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjM1MTA3ZTIzYTdiYmJjNzBmMzFjMzRmN2I5YWRmMWMzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMmQ3NzA5YTQ0NzQ5YzczMTg1OTlhNjgyOTMyMmUwODE5MTViZGM3M2Y1YmU1MDQ1ODgyZWQxMjBiYjY4NmRjOCIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK2luaGVyaXQgZ25vbWViYXNlIGxpYl9wYWNrYWdlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGdldHRleHQKKworIyBUaGlzIGJ1aWxkcyBib3RoIEFQSSBkb2NzICh2aWEgZ3RrLWRvYykgYW5kIG1hbnBhZ2VzCitHVEtET0NfRU5BQkxFX0ZMQUcgPSAiLURkb2NzPXRydWUiCitHVEtET0NfRElTQUJMRV9GTEFHID0gIi1EZG9jcz1mYWxzZSIKKworR0lfRU5BQkxFX0ZMQUcgPSAiLURpbnRyb3NwZWN0aW9uPXRydWUiCitHSV9ESVNBQkxFX0ZMQUcgPSAiLURpbnRyb3NwZWN0aW9uPWZhbHNlIgorCitFWFRSQV9PRU1FU09OX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJyR7R1RLRE9DX0VOQUJMRV9GTEFHfScsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke0dUS0RPQ19ESVNBQkxFX0ZMQUd9JywgZCl9ICIKK0VYVFJBX09FTUVTT05fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJyR7R0lfRU5BQkxFX0ZMQUd9JywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7R0lfRElTQUJMRV9GTEFHfScsIGQpfSAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgRklYTUU6IHRoZXNlIG5lZWQgdG8gYmUgcHJvdmlkZWQgdmlhIHB0ZXN0CisgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cyAke0R9JHtsaWJleGVjZGlyfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgQ3VycmVudGx5IGl0J3Mgbm90IHBvc3NpYmxlIHRvIGRpc2FibGUgZ2V0dGV4dCBpbiBNZXNvbiwgc28gd2UgbmVlZCB0byBmb3JjZQorIyB0aGlzIGJhY2sgb24uCitVU0VfTkxTX2NsYXNzLW5hdGl2ZSA9ICJ5ZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDY3OTI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHT2JqZWN0IHdyYXBwZXIgZm9yIGxpYnVkZXYiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYmd1ZGV2IgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTE2YzEwYzUxZWM2MTEzMWUyNDRjMzkzNmJiYjJlMGMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzYjFlZjk5ZDRhODk4NGMzNTA0NDEwM2Q4ZGRmYzNjYzUyYzgwMDM1YzM2YWJhYjJiY2M1ZTM1MzJlMDYzZjk2IgotCi1ERVBFTkRTID0gImdsaWItMi4wIHVkZXYiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdW1vY2tkZXYiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAic3lzdGVtZCAoPD0gMjIwKSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1pbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGliZ3VkZXYvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+KFxkKykpIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWZlOTYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzIuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJHT2JqZWN0IHdyYXBwZXIgZm9yIGxpYnVkZXYiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYmd1ZGV2IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZWU0Y2IyYjljNTczY2RmMzU0ZjZlZDc0NGYwMWIxMTFkNGI1YmVkMzUwM2ZmYTk1NmNlZmZmNTA0ODljNzg2MCIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY5MTQ4NTIzNzcxNTY2NjU1NjdhYmY4YTM4ZDg5MjM2IgorCitERVBFTkRTID0gImdsaWItMi4wIHVkZXYiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdW1vY2tkZXYiCisKK1JDT05GTElDVFNfJHtQTn0gPSAic3lzdGVtZCAoPD0gMjIwKSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitpbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGliZ3VkZXYvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+KFxkKykpIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYTBkYzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgcmVuZGVyaW5nIFNWRyBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnJzdmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JzdmcuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTI0O21kNT0yMGI0MTEzYzQ5MDliYmYwZDY3ZTAwNjc3ODMwMmJjNiIKLQotU0VDVElPTiA9ICJ4MTEvdXRpbHMiCi1ERVBFTkRTID0gImNhaXJvIGdkay1waXhidWYgZ2xpYi0yLjAgbGliY3JvY28gbGlieG1sMiBwYW5nbyIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGd0ay1kb2MgcGl4YnVmY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZ3RrLW9wdGlvbi5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZWFhNWM4YThiYmUyNjAwYWI1MTk0YzBkM2IxYjYyMWIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJiZmM4YzQ4OGM4OWMxZTcyMTJjNDc4YmViOTVjNDFiNDQ3MDE2MzYxMjVhM2U2ZGFiNDExODdmMTQ4NWI1NjRjIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9wYXRoX0dES19QSVhCVUZfUVVFUllMT0FERVJTPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLSMgVGhlIG9sZGVyIGxkICgyLjIyKSBvbiB0aGUgaG9zdCAoQ2VudG9zIDYuNSkgZG9lc24ndCBoYXZlIHRoZQotIyAtQnN5bWJvbGljLWZ1bmN0aW9ucyBvcHRpb24sIHdlIGNhbiBkaXNhYmxlIGl0IGZvciBuYXRpdmUuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1lbmFibGUtQnN5bWJvbGljPWF1dG8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnZGtwaXhidWYiCi0jIFRoZSBnZGstcGl4YnVmIGxvYWRlcgotUEFDS0FHRUNPTkZJR1tnZGtwaXhidWZdID0gIi0tZW5hYmxlLXBpeGJ1Zi1sb2FkZXIsLS1kaXNhYmxlLXBpeGJ1Zi1sb2FkZXIsZ2RrLXBpeGJ1Zi1uYXRpdmUiCi0jIEdUSysgdGVzdCBhcHBsaWNhdGlvbiAocnN2Zy12aWV3KQotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0td2l0aC1ndGszLC0td2l0aG91dC1ndGszLGd0ayszIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIExvYWRhYmxlIG1vZHVsZXMgZG9uJ3QgbmVlZCAuYSBvciAubGEgb24gTGludXgKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovbG9hZGVycy8qLmEgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5sYQotfQotCi1QQUNLQUdFUyA9KyAibGlicnN2Zy1ndGsgcnN2ZyIKLUZJTEVTX3JzdmcgPSAiJHtiaW5kaXJ9L3JzdmcqIFwKLQkgICAgICAke2RhdGFkaXJ9L3BpeG1hcHMvc3ZnLXZpZXdlci5zdmcgXAotCSAgICAgICR7ZGF0YWRpcn0vdGhlbWVzIgotRklMRVNfbGlicnN2Zy1ndGsgPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovKi8qLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vdGh1bWJuYWlsZXJzL2xpYnJzdmcudGh1bWJuYWlsZXIiCi0KLVBJWEJVRl9QQUNLQUdFUyA9ICJsaWJyc3ZnLWd0ayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNzZkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiCkBAIC0wLDAgKzEsNDcgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgcmVuZGVyaW5nIFNWRyBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnJzdmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlZlcnNpb25zIGZyb20gMi40MS4wIHJlcXVpcmVzIFJ1c3QgY29tcGlsZXIgdG8gYnVpbGQgaXQiCisKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JzdmcuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTI0O21kNT0yMGI0MTEzYzQ5MDliYmYwZDY3ZTAwNjc3ODMwMmJjNiIKKworU0VDVElPTiA9ICJ4MTEvdXRpbHMiCitERVBFTkRTID0gImNhaXJvIGdkay1waXhidWYgZ2xpYi0yLjAgbGliY3JvY28gbGlieG1sMiBwYW5nbyIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHBpeGJ1ZmNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2giCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjQ5NDlkMzEzYjBjNWQ5MTYxYTVjMjU5MTA0YWY1NTY4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiY2ZmNGRkM2MzYjc4YmZlOTlkOGZjZmFkM2I4YmExZWVlMzI4OWEwODIzYzBlMTE4ZDc4MTA2YmU2Yjg0YzkyYiIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9HREtfUElYQlVGX1FVRVJZTE9BREVSUz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgorCisjIFRoZSBvbGRlciBsZCAoMi4yMikgb24gdGhlIGhvc3QgKENlbnRvcyA2LjUpIGRvZXNuJ3QgaGF2ZSB0aGUKKyMgLUJzeW1ib2xpYy1mdW5jdGlvbnMgb3B0aW9uLCB3ZSBjYW4gZGlzYWJsZSBpdCBmb3IgbmF0aXZlLgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ2RrcGl4YnVmIgorIyBUaGUgZ2RrLXBpeGJ1ZiBsb2FkZXIKK1BBQ0tBR0VDT05GSUdbZ2RrcGl4YnVmXSA9ICItLWVuYWJsZS1waXhidWYtbG9hZGVyLC0tZGlzYWJsZS1waXhidWYtbG9hZGVyLGdkay1waXhidWYtbmF0aXZlIgorIyBHVEsrIHRlc3QgYXBwbGljYXRpb24gKHJzdmctdmlldykKK1BBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IG5lZWQgLmEgb3IgLmxhIG9uIExpbnV4CisJcm0gLWYgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5hICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyoubGEKK30KKworUEFDS0FHRVMgPSsgImxpYnJzdmctZ3RrIHJzdmciCitGSUxFU19yc3ZnID0gIiR7YmluZGlyfS9yc3ZnKiBcCisJICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N2Zy12aWV3ZXIuc3ZnIFwKKwkgICAgICAke2RhdGFkaXJ9L3RoZW1lcyIKK0ZJTEVTX2xpYnJzdmctZ3RrID0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qLyovKi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9saWJyc3ZnLnRodW1ibmFpbGVyIgorUlJFQ09NTUVORFNfbGlicnN2Zy1ndGsgPSAiZ2RrLXBpeGJ1Zi1iaW4iCisKK1BJWEJVRl9QQUNLQUdFUyA9ICJsaWJyc3ZnLWd0ayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNkZGRjNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1yZXF1aXJlIGNhaXJvLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzNlOTk5ZTBjNzJiNWFjOTAxMjQyNGZhMTU3YWQ3NyIKLQotU1JDX1VSSSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvY2Fpcm8tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZiBcIAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYWlyby1GaXgtQ1ZFLTIwMTctOTgxNC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTQ2ZjVmNGQwYjQ0MzlmYzM3OTJmZDM0NTJiN2IxMmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2U4Nzg3ODY1OGYyYzk5NTFhMTRmYzY0MTE0ZDQ5NThjMGU2NWFjNDc1MzBiOGFjMzA3OGIyY2U0MWI2NmEwOSIKLQotUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCi0KLVNVTU1BUllfJHtQTn0gPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgotREVTQ1JJUFRJT05fJHtQTn0gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAotdmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKLW9mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAotd2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKLW9wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCi1leHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCi1FeHRlbnNpb24uIgotCi1TVU1NQVJZX2NhaXJvLWdvYmplY3QgPSAiVGhlIENhaXJvIGxpYnJhcnkgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkiCi1ERVNDUklQVElPTl9jYWlyby1nb2JqZWN0ID0gIkEgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkgZm9yIHRoZSBDYWlybyBBUEkuIgotCi1TVU1NQVJZX2NhaXJvLXNjcmlwdC1pbnRlcnByZXRlciA9ICJUaGUgQ2Fpcm8gbGlicmFyeSBzY3JpcHQgaW50ZXJwcmV0ZXIiCi1ERVNDUklQVElPTl9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIHNjcmlwdCBpbnRlcnByZXRlciBpbXBsZW1lbnRzIFwKLUNhaXJvU2NyaXB0LiAgQ2Fpcm9TY3JpcHQgaXMgdXNlZCBieSB0cmFjaW5nIHV0aWxpdGllcyB0byBlbmFibGUgdGhlIGFiaWxpdHkgXAotdG8gcmVwbGF5IHJlbmRlcmluZy4iCi0KLURFU0NSSVBUSU9OX2NhaXJvLXBlcmYtdXRpbHMgPSAiVGhlIENhaXJvIGxpYnJhcnkgcGVyZm9ybWFuY2UgdXRpbGl0aWVzIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY2Fpcm8uc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NhaXJvLyouc28iCi1GSUxFU18ke1BOfS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJjYWlyby1nb2JqZWN0LnNvLioiCi1GSUxFU18ke1BOfS1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLXNjcmlwdC1pbnRlcnByZXRlci5zby4qIgotRklMRVNfJHtQTn0tcGVyZi11dGlscyA9ICIke2JpbmRpcn0vY2Fpcm8tdHJhY2UgJHtsaWJkaXJ9L2NhaXJvLyoubGEgJHtsaWJkaXJ9L2NhaXJvL2xpYmNhaXJvLXRyYWNlLnNvLioiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlybSAtcmYgJHtEfSR7YmluZGlyfS9jYWlyby1zcGhpbngKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1mZHIqCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tc3BoaW54KgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1mZHIqCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLXNwaGlueCoKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzVjYTFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEyLmJiCkBAIC0wLDAgKzEsNDYgQEAKK3JlcXVpcmUgY2Fpcm8uaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU3M2U5OTllMGM3MmI1YWM5MDEyNDI0ZmExNTdhZDc3IgorCitTUkNfVVJJID0gImh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZy9yZWxlYXNlcy9jYWlyby0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY2Fpcm8tZ2V0X2JpdG1hcF9zdXJmYWNlLWJzYzEwMzY3ODktQ1ZFLTIwMTctNzQ3NS5kaWZmIFwgCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhaXJvLUZpeC1DVkUtMjAxNy05ODE0LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZjBkYjlkYmZjYTA5NjZiZThhY2Q2ODJlNjM2ZDE2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YzkwZjAwYzUwMGIyMjk5YzBhMzIzZGQ5YmVlYWQyYTAwMzUzNzUyYjIwOTJlYWQ1NTgxMzliZDY3ZjdiZjE2IgorCitQQUNLQUdFUyA9KyAiY2Fpcm8tZ29iamVjdCBjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgY2Fpcm8tcGVyZi11dGlscyIKKworU1VNTUFSWV8ke1BOfSA9ICJUaGUgQ2Fpcm8gMkQgdmVjdG9yIGdyYXBoaWNzIGxpYnJhcnkiCitERVNDUklQVElPTl8ke1BOfSA9ICJDYWlybyBpcyBhIG11bHRpLXBsYXRmb3JtIGxpYnJhcnkgcHJvdmlkaW5nIGFudGktYWxpYXNlZCBcCit2ZWN0b3ItYmFzZWQgcmVuZGVyaW5nIGZvciBtdWx0aXBsZSB0YXJnZXQgYmFja2VuZHMuIFBhdGhzIGNvbnNpc3QgXAorb2YgbGluZSBzZWdtZW50cyBhbmQgY3ViaWMgc3BsaW5lcyBhbmQgY2FuIGJlIHJlbmRlcmVkIGF0IGFueSB3aWR0aCBcCit3aXRoIHZhcmlvdXMgam9pbiBhbmQgY2FwIHN0eWxlcy4gQWxsIGNvbG9ycyBtYXkgYmUgc3BlY2lmaWVkIHdpdGggXAorb3B0aW9uYWwgdHJhbnNsdWNlbmNlIChvcGFjaXR5L2FscGhhKSBhbmQgY29tYmluZWQgdXNpbmcgdGhlIFwKK2V4dGVuZGVkIFBvcnRlci9EdWZmIGNvbXBvc2l0aW5nIGFsZ2VicmEgYXMgZm91bmQgaW4gdGhlIFggUmVuZGVyIFwKK0V4dGVuc2lvbi4iCisKK1NVTU1BUllfY2Fpcm8tZ29iamVjdCA9ICJUaGUgQ2Fpcm8gbGlicmFyeSBHT2JqZWN0IHdyYXBwZXIgbGlicmFyeSIKK0RFU0NSSVBUSU9OX2NhaXJvLWdvYmplY3QgPSAiQSBHT2JqZWN0IHdyYXBwZXIgbGlicmFyeSBmb3IgdGhlIENhaXJvIEFQSS4iCisKK1NVTU1BUllfY2Fpcm8tc2NyaXB0LWludGVycHJldGVyID0gIlRoZSBDYWlybyBsaWJyYXJ5IHNjcmlwdCBpbnRlcnByZXRlciIKK0RFU0NSSVBUSU9OX2NhaXJvLXNjcmlwdC1pbnRlcnByZXRlciA9ICJUaGUgQ2Fpcm8gc2NyaXB0IGludGVycHJldGVyIGltcGxlbWVudHMgXAorQ2Fpcm9TY3JpcHQuICBDYWlyb1NjcmlwdCBpcyB1c2VkIGJ5IHRyYWNpbmcgdXRpbGl0aWVzIHRvIGVuYWJsZSB0aGUgYWJpbGl0eSBcCit0byByZXBsYXkgcmVuZGVyaW5nLiIKKworREVTQ1JJUFRJT05fY2Fpcm8tcGVyZi11dGlscyA9ICJUaGUgQ2Fpcm8gbGlicmFyeSBwZXJmb3JtYW5jZSB1dGlsaXRpZXMiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJjYWlyby5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY2Fpcm8vKi5zbyIKK0ZJTEVTXyR7UE59LWdvYmplY3QgPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLWdvYmplY3Quc28uKiIKK0ZJTEVTXyR7UE59LXNjcmlwdC1pbnRlcnByZXRlciA9ICIke2xpYmRpcn0vbGliY2Fpcm8tc2NyaXB0LWludGVycHJldGVyLnNvLioiCitGSUxFU18ke1BOfS1wZXJmLXV0aWxzID0gIiR7YmluZGlyfS9jYWlyby10cmFjZSAke2xpYmRpcn0vY2Fpcm8vKi5sYSAke2xpYmRpcn0vY2Fpcm8vbGliY2Fpcm8tdHJhY2Uuc28uKiIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXJtIC1yZiAke0R9JHtiaW5kaXJ9L2NhaXJvLXNwaGlueAorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLWZkcioKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1zcGhpbngqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLWZkcioKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tc3BoaW54KgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAvaW5zdGFsbC1leGFtcGxlcy5wYXRjaAppbmRleCAzYjZhNzBlLi5jZTlhYjNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAvaW5zdGFsbC1leGFtcGxlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAvaW5zdGFsbC1leGFtcGxlcy5wYXRjaApAQCAtMywxMSArMywxMSBAQAogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogCi1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvTWFrZWZpbGUuYW0gYi9leGFtcGxlcy9NYWtlZmlsZS5hbQotaW5kZXggNGI5YjQ0OS4uMjMyY2QxOSAxMDA2NDQKLS0tLSBhL2V4YW1wbGVzL01ha2VmaWxlLmFtCi0rKysgYi9leGFtcGxlcy9NYWtlZmlsZS5hbQotQEAgLTM4LDYgKzM4LDcgQEAgQU1fQ1BQRkxBR1MgPSBcCitJbmRleDogY2x1dHRlci0xLjI2LjIvZXhhbXBsZXMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjbHV0dGVyLTEuMjYuMi5vcmlnL2V4YW1wbGVzL01ha2VmaWxlLmFtCisrKysgY2x1dHRlci0xLjI2LjIvZXhhbXBsZXMvTWFrZWZpbGUuYW0KK0BAIC0zMyw3ICszMyw4IEBAIEFNX0NQUEZMQUdTID0gXAogIAktSSQodG9wX3NyY2RpcikvY2x1dHRlciBcCiAgCS1JJCh0b3BfYnVpbGRkaXIpL2NsdXR0ZXIKICAKQEAgLTE2LDMgKzE2LDQgQEAKICtleGFtcGxlX1BST0dSQU1TID0gJChhbGxfZXhhbXBsZXMpCiAgCiAgRVhUUkFfRElTVCA9IHJlZGhhbmQucG5nCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjAuaW5jCmluZGV4IDI2YWU5MWMuLjRjODc3OTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjAuaW5jCkBAIC0xNSw3ICsxNSwzIEBACiBGSUxFU18ke1BOfSAgICAgICAgICArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvbGliKi5zbyIKIEZJTEVTXyR7UE59LWRldiAgICAgICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgogRklMRVNfJHtQTn0tZXhhbXBsZXMgID0gIiR7YmluZGlyfS92aWRlby1wbGF5ZXIgJHtiaW5kaXJ9L3ZpZGVvLXNpbmsiCi0KLSMgTmVlZHMgdG8gYmUgZGlzYWJsZSBkdWUgdG8gYSBkZXBlbmRlbmN5IG9uIGdzdHJlYW1lci1wbHVnaW5zIGludHJvc3BlY3Rpb24gZmlsZXMKLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWd0ay0xLjBfMS44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODA1MGRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWd0ay0xLjBfMS44LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY2x1dHRlci1ndGstMS4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjY5ODIwN2VlNmUzZDVhMWMwZmZjMGEyMzQ0NGUxMmYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkYTI3ZDQ4NjMyNTQ5MGFkM2Y2NWQyYWJmOTQxM2FlYjhiNGE4ZjdiNTU5ZTRiMmY3MzU2N2E1MzQ0YTI2Yjk0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3RrLTEuMF8xLjguNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWd0ay0xLjBfMS44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzMDBjNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWd0ay0xLjBfMS44LjQuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIGNsdXR0ZXItZ3RrLTEuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIzNjNhYzk4NzhlMjMzN2JlODg3YjhlZTllMWRhMDBlIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNTIxNDkzZWMwMzg5NzNjNzdlZGNiOGJjNWVhYzIzZWVkNDE2NDUxMTc4OTRhYWVlNzMwMGIyNDg3Y2I0MmIwNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaAppbmRleCBiZjUyNjM3Li40MGJlYmMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoCkBAIC0xMiwxMSArMTIsMTEgQEAKICBjb25maWd1cmUuYWMgfCAxNCArKysrKysrKysrKystLQogIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlMzA0OGM3Li45MThkMjFkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzcsNiArMTM3LDEyIEBAIEFDX0FSR19FTkFCTEUoaW5zdGFsbC10ZXN0LXByb2dyYW1zLAorSW5kZXg6IGxpYmRybS0yLjQuOTEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliZHJtLTIuNC45MS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmRybS0yLjQuOTEvY29uZmlndXJlLmFjCitAQCAtMTYzLDYgKzE2MywxMiBAQCBBQ19BUkdfRU5BQkxFKGluc3RhbGwtdGVzdC1wcm9ncmFtcywKICAJCSAgW0luc3RhbGwgdGVzdCBwcm9ncmFtcyAoZGVmYXVsdDogbm8pXSksCiAgCQkgIFtJTlNUQUxMX1RFU1RTPSRlbmFibGV2YWxdLCBbSU5TVEFMTF9URVNUUz1ub10pCiAgCkBAIC0yOSw4ICsyOSw4IEBACiAgZG5sID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGRubCBjaGVjayBjb21waWxlciBmbGFncwogIEFDX0RFRlVOKFtMSUJEUk1fQ0NfVFJZX0ZMQUddLCBbCi1AQCAtMzcyLDcgKzM3OCw3IEBAIGlmIHRlc3QgIngkUkFERU9OIiA9IHh5ZXM7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfUkFERU9OLCAxLCBbSGF2ZSByYWRlb24gc3VwcG9ydF0pCitAQCAtNDExLDcgKzQxNyw3IEBAIGVsc2UKKyAJQUNfREVGSU5FKEhBVkVfUkFERU9OLCAwKQogIGZpCiAgCiAtaWYgdGVzdCAieCRBTURHUFUiICE9IHhubzsgdGhlbgpAQCAtMzgsOCArMzgsOCBAQAogIAkjIERldGVjdCBjdW5pdCBsaWJyYXJ5CiAgCVBLR19DSEVDS19NT0RVTEVTKFtDVU5JVF0sIFtjdW5pdCA+PSAyLjFdLCBbaGF2ZV9jdW5pdD15ZXNdLCBbaGF2ZV9jdW5pdD1ub10pCiAgCSMgSWYgcGtnLWNvbmZpZyBkb2VzIG5vdCBmaW5kIGN1bml0LCBjaGVjayBpdCB1c2luZyBBQ19DSEVDS19MSUIuICBXZQotQEAgLTM5OSw3ICs0MDYsMTEgQEAgaWYgdGVzdCAieCRBTURHUFUiID0geHllczsgdGhlbgotIAlBQ19ERUZJTkUoSEFWRV9DVU5JVCwgW3Rlc3QgIngkaGF2ZV9jdW5pdCIgIT0gInhubyJdLCBbRW5hYmxlIENVTklUIEhhdmUgYW1kZ3B1IHN1cHBvcnRdKQorQEAgLTQzNiw3ICs0NDIsMTEgQEAgaWYgdGVzdCAieCRBTURHUFUiID0geHllczsgdGhlbgorIAlBQ19ERUZJTkUoSEFWRV9BTURHUFUsIDEsIFtIYXZlIGFtZGdwdSBzdXBwb3J0XSkKICAKICAJaWYgdGVzdCAieCRoYXZlX2N1bml0IiA9ICJ4bm8iOyB0aGVuCiAtCQlBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgY3VuaXQgbGlicmFyeS4gRGlzYWJsaW5nIGFtZGdwdSB0ZXN0c10pCkBAIC00OSw4ICs0OSw1IEBACiArCQkJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCBmaW5kIGN1bml0IGxpYnJhcnkuIERpc2FibGluZyBhbWRncHUgdGVzdHNdKQogKwkJZmkKICAJZmkKLSBmaQotIAotLS0gCi0yLjEuNAotCisgZWxzZQorIAlBQ19ERUZJTkUoSEFWRV9BTURHUFUsIDApCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjgzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC44My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVjYjc1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjgzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzIgotREVTQ1JJUFRJT04gPSAiVGhlIHJ1bnRpbWUgbGlicmFyeSBmb3IgYWNjZXNzaW5nIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzLiAgRFJNIFwKLXN0YW5kcyBmb3IgXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXJcIiwgd2hpY2ggaXMgdGhlIGtlcm5lbCBwb3J0aW9uIG9mIHRoZSBcCi1cIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmVcIiAoRFJJKS4gIERSSSBpcyByZXF1aXJlZCBmb3IgbWFueSBoYXJkd2FyZSBcCi1hY2NlbGVyYXRlZCBPcGVuR0wgZHJpdmVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAieDExL2Jhc2UiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hmODZkcm0uYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMyO21kNT1jOGEzYjk2MWFmNzY2N2M1MzA4MTY3NjFlOTQ5ZGM3MSIKLVBST1ZJREVTID0gImRybSIKLURFUEVORFMgPSAibGlicHRocmVhZC1zdHVicyBsaWJwY2lhY2Nlc3MiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vaW5zdGFsbHRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjM4MDA5NTNlZDc1NjQ5ODg4NzJlMWU4YzYxZmRlMzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDNhNTI2NjlkYTYwZWFkNjI1NDhhMzViYzQzMGFhZmI2YzJkOGRkMjFlYzlkYmEzYTkwZjk2ZWZmNWZlMzZkNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1hbnBhZ2VzCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWNhaXJvLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN1bml0IFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtb21hcC1leHBlcmltZW50YWwtYXBpIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtZXRuYXZpdi1leHBlcmltZW50YWwtYXBpIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC10ZXN0LXByb2dyYW1zIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZhbGdyaW5kIFwKLSAgICAgICAgICAgICAgICAiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywgLS1kaXNhYmxlLW1hbnBhZ2VzLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCi0KLUFMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAotICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCi0gICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKLQotUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgotCi1GSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgotRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKLUZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCi1GSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCi1GSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKLUZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgotRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCi1GSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiIKLUZJTEVTXyR7UE59LWV0bmF2aXYgPSAiJHtsaWJkaXJ9L2xpYmRybV9ldG5hdml2LnNvLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjkxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC45MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDkwMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC45MS5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIGtlcm5lbCBEUk0gc2VydmljZXMiCitERVNDUklQVElPTiA9ICJUaGUgcnVudGltZSBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIGtlcm5lbCBEUk0gc2VydmljZXMuICBEUk0gXAorc3RhbmRzIGZvciBcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlclwiLCB3aGljaCBpcyB0aGUga2VybmVsIHBvcnRpb24gb2YgdGhlIFwKK1wiRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZVwiIChEUkkpLiAgRFJJIGlzIHJlcXVpcmVkIGZvciBtYW55IGhhcmR3YXJlIFwKK2FjY2VsZXJhdGVkIE9wZW5HTCBkcml2ZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJ4MTEvYmFzZSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veGY4NmRybS5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzI7bWQ1PWM4YTNiOTYxYWY3NjY3YzUzMDgxNjc2MWU5NDlkYzcxIgorUFJPVklERVMgPSAiZHJtIgorREVQRU5EUyA9ICJsaWJwdGhyZWFkLXN0dWJzIGxpYnBjaWFjY2VzcyIKKworU1JDX1VSSSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZy9saWJkcm0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4X09fQ0xPRVhFQ191bmRlY2xhcmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyM2Q4N2NkYTkyNzAwYjcxMGEzN2Q5YjhlZGFhOWY1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzRhMGVkMGNjMWVmZjA2ZjQ4Njc0YjFkYTgxYWFmYTY2MWE5ZjAwMWU3YTRmNDNkZGU4MTA3Njg4NmRjODAwIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbWFucGFnZXMKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtY2Fpcm8tdGVzdHMgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3VuaXQgXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS1vbWFwLWV4cGVyaW1lbnRhbC1hcGkgXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS1ldG5hdml2LWV4cGVyaW1lbnRhbC1hcGkgXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLXRlc3QtcHJvZ3JhbXMgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtdmFsZ3JpbmQgXAorICAgICAgICAgICAgICAgICIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKKworQUxMT1dfRU1QVFlfJHtQTn0tZHJpdmVycyA9ICIxIgorUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzICR7UE59LWRyaXZlcnMgJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCBcCisgICAgICAgICAgICAgJHtQTn0taW50ZWwgJHtQTn0tZXh5bm9zICR7UE59LWttcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKKyAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgorCitSUkVDT01NRU5EU18ke1BOfS1kcml2ZXJzID0gIiR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgJHtQTn0taW50ZWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1leHlub3MgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCisKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn0tcmFkZW9uID0gIiR7bGliZGlyfS9saWJkcm1fcmFkZW9uLnNvLioiCitGSUxFU18ke1BOfS1ub3V2ZWF1ID0gIiR7bGliZGlyfS9saWJkcm1fbm91dmVhdS5zby4qIgorRklMRVNfJHtQTn0tb21hcCA9ICIke2xpYmRpcn0vbGliZHJtX29tYXAuc28uKiIKK0ZJTEVTXyR7UE59LWludGVsID0gIiR7bGliZGlyfS9saWJkcm1faW50ZWwuc28uKiIKK0ZJTEVTXyR7UE59LWV4eW5vcyA9ICIke2xpYmRpcn0vbGliZHJtX2V4eW5vcy5zby4qIgorRklMRVNfJHtQTn0ta21zID0gIiR7bGliZGlyfS9saWJrbXMqLnNvLioiCitGSUxFU18ke1BOfS1mcmVlZHJlbm8gPSAiJHtsaWJkaXJ9L2xpYmRybV9mcmVlZHJlbm8uc28uKiIKK0ZJTEVTXyR7UE59LWFtZGdwdSA9ICIke2xpYmRpcn0vbGliZHJtX2FtZGdwdS5zby4qIgorRklMRVNfJHtQTn0tZXRuYXZpdiA9ICIke2xpYmRpcn0vbGliZHJtX2V0bmF2aXYuc28uKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnLzAwMDEtc3JjLWZjeG1sLmMtYXZvaWQtZG91YmxlLWZyZWUtb2YtZmlsZW5hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZy8wMDAxLXNyYy1mY3htbC5jLWF2b2lkLWRvdWJsZS1mcmVlLW9mLWZpbGVuYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYTlmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZy8wMDAxLXNyYy1mY3htbC5jLWF2b2lkLWRvdWJsZS1mcmVlLW9mLWZpbGVuYW1lLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gYTE2M2M4MWFjNDMwY2RjMjkyYWRkMjAwZjNlNmEwYzA0OGJlNGQ3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBPY3QgMjAxNyAxNzo0MDowOSArMDMwMAorU3ViamVjdDogW1BBVENIXSBzcmMvZmN4bWwuYzogYXZvaWQgZG91YmxlIGZyZWUoKSBvZiBmaWxlbmFtZQorCitJdCdzIGFsc28gZnJlZWQgYWZ0ZXIgYmFpbDEsIHNvIG5vIG5lZWQgdG8gZG8gaXQgaGVyZS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzIyMV0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL2ZjeG1sLmMgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ZjeG1sLmMgYi9zcmMvZmN4bWwuYworaW5kZXggMTljZTk2YS4uZWRiNjA1NCAxMDA2NDQKKy0tLSBhL3NyYy9mY3htbC5jCisrKysgYi9zcmMvZmN4bWwuYworQEAgLTMzOTgsNyArMzM5OCw2IEBAIEZjQ29uZmlnUGFyc2VBbmRMb2FkIChGY0NvbmZpZwkgICAgKmNvbmZpZywKKyAKKyAgICAgZmQgPSBGY09wZW4gKChjaGFyICopIGZpbGVuYW1lLCBPX1JET05MWSk7CisgICAgIGlmIChmZCA9PSAtMSkgeworLQlGY1N0ckZyZWUgKGZpbGVuYW1lKTsKKyAJZ290byBiYWlsMTsKKyAgICAgfQorIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDU4YjM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJpYyBmb250IGNvbmZpZ3VyYXRpb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkZvbnRjb25maWcgaXMgYSBmb250IGNvbmZpZ3VyYXRpb24gYW5kIGN1c3RvbWl6YXRpb24gbGlicmFyeSwgd2hpY2ggXAotZG9lcyBub3QgZGVwZW5kIG9uIHRoZSBYIFdpbmRvdyBTeXN0ZW0uIEl0IGlzIGRlc2lnbmVkIHRvIGxvY2F0ZSBcCi1mb250cyB3aXRoaW4gdGhlIHN5c3RlbSBhbmQgc2VsZWN0IHRoZW0gYWNjb3JkaW5nIHRvIHJlcXVpcmVtZW50cyBcCi1zcGVjaWZpZWQgYnkgYXBwbGljYXRpb25zLiBcCi1Gb250Y29uZmlnIGlzIG5vdCBhIHJhc3Rlcml6YXRpb24gbGlicmFyeSwgbm9yIGRvZXMgaXQgaW1wb3NlIGEgXAotcGFydGljdWxhciByYXN0ZXJpemF0aW9uIGxpYnJhcnkgb24gdGhlIGFwcGxpY2F0aW9uLiBUaGUgWC1zcGVjaWZpYyBcCi1saWJyYXJ5ICdYZnQnIHVzZXMgZm9udGNvbmZpZyBhbG9uZyB3aXRoIGZyZWV0eXBlIHRvIHNwZWNpZnkgYW5kIFwKLXJhc3Rlcml6ZSBmb250cy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZm9udGNvbmZpZy5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PWZvbnRjb25maWciCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlICYgTUlUICYgUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03YTA0NDllOWJjNTM3MDQwMmE5NGMwMDIwNGJlY2EzZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNmcmVldHlwZS5jO2VuZGxpbmU9NDU7bWQ1PTVkOTUxM2UzMTk2YTFmYmZkZmE5NDA1MWMwOWRmYzg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2NhY2hlLmM7YmVnaW5saW5lPTEzNjc7ZW5kbGluZT0xMzgyO21kNT0wMzI2Y2ZlYjRhNzMzM2RkNGRkMjVmYmJjNGI5ZjI3ZiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImV4cGF0IGZyZWV0eXBlIHpsaWIgZ3BlcmYtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mb250Y29uZmlnLm9yZy9yZWxlYXNlL2ZvbnRjb25maWctJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JldmVydC1zdGF0aWMtcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjRmYjAxZmMzZjQxNzYwYzQxYzY5ZTM3Y2M3ODRiNjU4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkNWE2YTY2M2Y0YzRhMDBlMTk2NTIzOTAyNjI2NjU0ZGQwYzRhNzg2ODZjYmM2ZTQ3MmYzMzhlNTBmZGY4MDYiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgd29yayBhcm91bmQgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMjgwCi0gICAgcm0gLWYgJHtTfS9zcmMvZmNvYmpzaGFzaC5oICR7U30vc3JjL2Zjb2Jqc2hhc2guZ3BlcmYKLX0KLQotUEFDS0FHRVMgPSsgImZvbnRjb25maWctdXRpbHMiCi1GSUxFU18ke1BOfSA9KyAiJHtkYXRhZGlyfS94bWwvKiIKLUZJTEVTX2ZvbnRjb25maWctdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLSMgV29yayBhcm91bmQgcGFzdCBicmVha2FnZSBpbiBkZWJpYW4uYmJjbGFzcwotUlBST1ZJREVTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKLVJSRVBMQUNFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1SQ09ORkxJQ1RTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKLURFQklBTl9OT0FVVE9OQU1FX2ZvbnRjb25maWctdXRpbHMgPSAiMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHJlbGF0aXZlX3N5bWxpbmtzCi0KLUZPTlRDT05GSUdfQ0FDSEVfRElSID89ICIke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2ZvbnRjb25maWciCi0KLSMgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBkaXJlY3RvcmllcwotIyAvdXNyL3NoYXJlL2ZvbnRzIGlzIGFscmVhZHkgaW5jbHVkZWQgYnkgZGVmYXVsdCAoeW91IGNhbiBjaGFuZ2UgaXQgd2l0aCAtLXdpdGgtZGVmYXVsdC1mb250cykKLUZPTlRDT05GSUdfRk9OVF9ESVJTID89ICJubyIKLQotRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtZG9jcyAtLXdpdGgtZGVmYXVsdC1mb250cz0ke2RhdGFkaXJ9L2ZvbnRzIC0td2l0aC1jYWNoZS1kaXI9JHtGT05UQ09ORklHX0NBQ0hFX0RJUn0gLS13aXRoLWFkZC1mb250cz0ke0ZPTlRDT05GSUdfRk9OVF9ESVJTfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRjYmNlOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNi5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIkdlbmVyaWMgZm9udCBjb25maWd1cmF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJGb250Y29uZmlnIGlzIGEgZm9udCBjb25maWd1cmF0aW9uIGFuZCBjdXN0b21pemF0aW9uIGxpYnJhcnksIHdoaWNoIFwKK2RvZXMgbm90IGRlcGVuZCBvbiB0aGUgWCBXaW5kb3cgU3lzdGVtLiBJdCBpcyBkZXNpZ25lZCB0byBsb2NhdGUgXAorZm9udHMgd2l0aGluIHRoZSBzeXN0ZW0gYW5kIHNlbGVjdCB0aGVtIGFjY29yZGluZyB0byByZXF1aXJlbWVudHMgXAorc3BlY2lmaWVkIGJ5IGFwcGxpY2F0aW9ucy4gXAorRm9udGNvbmZpZyBpcyBub3QgYSByYXN0ZXJpemF0aW9uIGxpYnJhcnksIG5vciBkb2VzIGl0IGltcG9zZSBhIFwKK3BhcnRpY3VsYXIgcmFzdGVyaXphdGlvbiBsaWJyYXJ5IG9uIHRoZSBhcHBsaWNhdGlvbi4gVGhlIFgtc3BlY2lmaWMgXAorbGlicmFyeSAnWGZ0JyB1c2VzIGZvbnRjb25maWcgYWxvbmcgd2l0aCBmcmVldHlwZSB0byBzcGVjaWZ5IGFuZCBcCityYXN0ZXJpemUgZm9udHMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZvbnRjb25maWcub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1mb250Y29uZmlnIgorCitMSUNFTlNFID0gIk1JVC1zdHlsZSAmIE1JVCAmIFBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2EwNDQ5ZTliYzUzNzA0MDJhOTRjMDAyMDRiZWNhM2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjZnJlZXR5cGUuYztlbmRsaW5lPTQ1O21kNT01ZDk1MTNlMzE5NmExZmJmZGZhOTQwNTFjMDlkZmM4NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNjYWNoZS5jO2JlZ2lubGluZT0xMzY3O2VuZGxpbmU9MTM4MjttZDU9MDMyNmNmZWI0YTczMzNkZDRkZDI1ZmJiYzRiOWYyN2YiCisKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJleHBhdCBmcmVldHlwZSB6bGliIGdwZXJmLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZm9udGNvbmZpZy5vcmcvcmVsZWFzZS9mb250Y29uZmlnLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZXZlcnQtc3RhdGljLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNyYy1mY3htbC5jLWF2b2lkLWRvdWJsZS1mcmVlLW9mLWZpbGVuYW1lLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDBlNzQ4YzY3ZmFkMTFlNzA1N2E3MWVkMzg1ZThiZGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDY0YjllYmYwNjBjOWU3NzAxMTczM2FjOWRjMGUyY2U5Mjg3MGI1NzRjY2EyNDA1ZTExZjUzNTNhNjgzYzMzNCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZm9udGNvbmZpZy0oP1A8cHZlcj5cZCtcLlxkK1wuKD8hOVxkKylcZCspIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIHdvcmsgYXJvdW5kIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI4MAorICAgIHJtIC1mICR7U30vc3JjL2Zjb2Jqc2hhc2guaCAke1N9L3NyYy9mY29ianNoYXNoLmdwZXJmCit9CisKK1BBQ0tBR0VTID0rICJmb250Y29uZmlnLXV0aWxzIgorRklMRVNfJHtQTn0gPSsgIiR7ZGF0YWRpcn0veG1sLyoiCitGSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qIgorCisjIFdvcmsgYXJvdW5kIHBhc3QgYnJlYWthZ2UgaW4gZGViaWFuLmJiY2xhc3MKK1JQUk9WSURFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCitSUkVQTEFDRVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorUkNPTkZMSUNUU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCitERUJJQU5fTk9BVVRPTkFNRV9mb250Y29uZmlnLXV0aWxzID0gIjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyByZWxhdGl2ZV9zeW1saW5rcworCitGT05UQ09ORklHX0NBQ0hFX0RJUiA/PSAiJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9mb250Y29uZmlnIgorCisjIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMKKyMgL3Vzci9zaGFyZS9mb250cyBpcyBhbHJlYWR5IGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHlvdSBjYW4gY2hhbmdlIGl0IHdpdGggLS13aXRoLWRlZmF1bHQtZm9udHMpCitGT05UQ09ORklHX0ZPTlRfRElSUyA/PSAibm8iCisKK0VYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3MgLS13aXRoLWRlZmF1bHQtZm9udHM9JHtkYXRhZGlyfS9mb250cyAtLXdpdGgtY2FjaGUtZGlyPSR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IC0td2l0aC1hZGQtZm9udHM9JHtGT05UQ09ORklHX0ZPTlRfRElSU30iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU4OGU4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJlZXR5cGUgZm9udCByZW5kZXJpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkZyZWVUeXBlIGlzIGEgc29mdHdhcmUgZm9udCBlbmdpbmUgdGhhdCBpcyBkZXNpZ25lZCB0byBiZSBzbWFsbCwgZWZmaWNpZW50LCBcCi1oaWdobHkgY3VzdG9taXphYmxlLCBhbmQgcG9ydGFibGUgd2hpbGUgY2FwYWJsZSBvZiBwcm9kdWNpbmcgaGlnaC1xdWFsaXR5IG91dHB1dCAoZ2x5cGggXAotaW1hZ2VzKS4gSXQgY2FuIGJlIHVzZWQgaW4gZ3JhcGhpY3MgbGlicmFyaWVzLCBkaXNwbGF5IHNlcnZlcnMsIGZvbnQgY29udmVyc2lvbiB0b29scywgdGV4dCBcCi1pbWFnZSBnZW5lcmF0aW9uIHRvb2xzLCBhbmQgbWFueSBvdGhlciBwcm9kdWN0cyBhcyB3ZWxsLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZXR5cGUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5ub25nbnUub3JnL2J1Z3MvP2dyb3VwPWZyZWV0eXBlIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkZyZWVUeXBlIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9MSUNFTlNFLlRYVDttZDU9NGFmNjIyMTUwNmYyMDI3NzRlZjc0ZjY0OTMyODc4YTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9GVEwuVFhUO21kNT0xM2IyNTQxMzI3NGM5YjNiMDliNjNlNDAyODIxNmZmNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0dQTHYyLlRYVDttZDU9OGVmMzgwNDc2ZjY0MmMyMGViZjQwZmVjYjBhZGQyZWMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZyZWV0eXBlL2ZyZWV0eXBlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vdXNlLXJpZ2h0LWxpYnRvb2wucGF0Y2giCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZyZWV0eXBlL2ZpbGVzL2ZyZWV0eXBlMi8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNDEzYWMzZWFmNTA4YWRhMDE5YzYzOTU5ZWE4MWE5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhM2M2MDNlZDg0YzNjMjQ5NWY5YzkzMzFmZTZiYmEzYmIwZWU2NWUwNmVjMzMxZTBhMGZiNTIxNTgyOTFiNDBiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIG11bHRpbGliX2hlYWRlcgotCi0jIEFkYXB0IGF1dG90b29scyB0byB3b3JrIHdpdGggdGhlIG1pbmltYWwgYXV0b2NvbmYgdXNhZ2UgaW4gZnJlZXR5cGUKLUFVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2J1aWxkcy91bml4IgotQ09ORklHVVJFX1NDUklQVCA9ICIke1N9L2NvbmZpZ3VyZSIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hdXRvbWFrZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCi0KLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi0jIGhhcmZidXp6IHJlc3VsdHMgaW4gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHNvIGVuYWJsaW5nIGlzIG5vbi10cml2aWFsCi1QQUNLQUdFQ09ORklHW2hhcmZidXp6XSA9ICItLXdpdGgtaGFyZmJ1enosLS13aXRob3V0LWhhcmZidXp6LGhhcmZidXp6IgotUEFDS0FHRUNPTkZJR1twaXhtYXBdID0gIi0td2l0aC1wbmcsLS13aXRob3V0LXBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICJDQ19CVUlMRD0nJHtCVUlMRF9DQ30nIgotCi1UQVJHRVRfQ1BQRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBmcmVldHlwZTIvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgKLX0KLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9mcmVldHlwZS1jb25maWciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwNTkxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRnJlZXR5cGUgZm9udCByZW5kZXJpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkZyZWVUeXBlIGlzIGEgc29mdHdhcmUgZm9udCBlbmdpbmUgdGhhdCBpcyBkZXNpZ25lZCB0byBiZSBzbWFsbCwgZWZmaWNpZW50LCBcCitoaWdobHkgY3VzdG9taXphYmxlLCBhbmQgcG9ydGFibGUgd2hpbGUgY2FwYWJsZSBvZiBwcm9kdWNpbmcgaGlnaC1xdWFsaXR5IG91dHB1dCAoZ2x5cGggXAoraW1hZ2VzKS4gSXQgY2FuIGJlIHVzZWQgaW4gZ3JhcGhpY3MgbGlicmFyaWVzLCBkaXNwbGF5IHNlcnZlcnMsIGZvbnQgY29udmVyc2lvbiB0b29scywgdGV4dCBcCitpbWFnZSBnZW5lcmF0aW9uIHRvb2xzLCBhbmQgbWFueSBvdGhlciBwcm9kdWN0cyBhcyB3ZWxsLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZXR5cGUub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5ub25nbnUub3JnL2J1Z3MvP2dyb3VwPWZyZWV0eXBlIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkZyZWVUeXBlIHwgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9MSUNFTlNFLlRYVDttZDU9NGFmNjIyMTUwNmYyMDI3NzRlZjc0ZjY0OTMyODc4YTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9GVEwuVFhUO21kNT05ZjM3YjRlNmFmYTNmZWY5ZGJhODkzMmIxNmJkM2Y5NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0dQTHYyLlRYVDttZDU9OGVmMzgwNDc2ZjY0MmMyMGViZjQwZmVjYjBhZGQyZWMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZyZWV0eXBlL2ZyZWV0eXBlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vdXNlLXJpZ2h0LWxpYnRvb2wucGF0Y2giCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZyZWV0eXBlL2ZpbGVzL2ZyZWV0eXBlMi8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmcmVldHlwZS0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MTNjNDAzYzExMDAxNmZkYzdlNTM3MjE2YTY0MmIxZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNmZmYmEzYzhjZWY5M2Y1NTdkMWY3NjdkN2JjM2RlZTg2MGFjN2EzYWFmZjU4OGE1MjFlMDgxYmMzNmY0YzhhIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIG11bHRpbGliX2hlYWRlcgorCisjIEFkYXB0IGF1dG90b29scyB0byB3b3JrIHdpdGggdGhlIG1pbmltYWwgYXV0b2NvbmYgdXNhZ2UgaW4gZnJlZXR5cGUKK0FVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2J1aWxkcy91bml4IgorQ09ORklHVVJFX1NDUklQVCA9ICIke1N9L2NvbmZpZ3VyZSIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hdXRvbWFrZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCisKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCisjIGhhcmZidXp6IHJlc3VsdHMgaW4gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHNvIGVuYWJsaW5nIGlzIG5vbi10cml2aWFsCitQQUNLQUdFQ09ORklHW2hhcmZidXp6XSA9ICItLXdpdGgtaGFyZmJ1enosLS13aXRob3V0LWhhcmZidXp6LGhhcmZidXp6IgorUEFDS0FHRUNPTkZJR1twaXhtYXBdID0gIi0td2l0aC1wbmcsLS13aXRob3V0LXBuZyxsaWJwbmciCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCisKK0VYVFJBX09FQ09ORiA9ICJDQ19CVUlMRD0nJHtCVUlMRF9DQ30nIgorCitUQVJHRVRfQ1BQRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW9lX211bHRpbGliX2hlYWRlciBmcmVldHlwZTIvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgKK30KKworQklOQ09ORklHID0gIiR7YmluZGlyfS9mcmVldHlwZS1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYgppbmRleCA5ZTA5Y2QyLi42OWYyMTc4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCkBAIC04LDcgKzgsNyBAQAogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90ZXN0LXBhbmdvLWdkay5jO2VuZGxpbmU9MjQ7bWQ1PTFlZTc0ZWM4NTFlY2RhNTdlYjdhYzZjYzE4MGY3NjU1IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmFiNzU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmFjMjUxNTU4ZGU2ODVjNmI5NDc4ZDg5YmUzMTQ5YzIiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvZ2xldy9nbGV3LyR7UFZ9L2dsZXctJHtQVn0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmEyY2Q3Yzk4ZjEzODU0ZDJmY2RkYWUwZDJiMjA0MTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzU3MmMzMGE0ZTY0Njg5YzM0MmJhMTYyNDEzMGFjOTg5MzZkN2FmOTBjMzEwM2Y5Y2UxMmI4YTBjNTczNjc2NCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2xldy9maWxlcy9nbGV3IgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dsZXcvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ29wZW5nbCcsICdlZ2wtZ2xlczInLCBkKX0iCi0KLSMgVGhlIG9wZW5nbCBhbmQgZWdsLVhYWCBvcHRpb25zIGFyZSBleGNsdXNpdmUsIGVuYWJsZSBvbmx5IG9uZS4KLVBBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICJTWVNURU09J2xpbnV4JywsdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCBsaWJnbHUgbGlieGV4dCBsaWJ4aSBsaWJ4bXUiCi1QQUNLQUdFQ09ORklHW2VnbC1nbGVzMl0gPSAiU1lTVEVNPSdsaW51eC1lZ2wnIEdMRVdfTk9fR0xVPSctREdMRVdfTk9fR0xVJyBMREZMQUdTLkdMPSctbEVHTCAtbEdMRVN2MicsLHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIiCi0KLUNGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKLSMgT3ZlcnJpZGUgU1lTVEVNICh2aWEgUEFDS0FHRUNPTkZJR19DT05GQVJHUykgdG8gYXZvaWQgY2FsbGluZyBjb25maWcuZ3Vlc3MsCi0jIHdlJ3JlIGNyb3NzLWNvbXBpbGluZy4gUGFzcyBvdXIgQ0ZMQUdTIHZpYSBQT1BUIGFzIHRoYXQncyB0aGUgb3B0aW1pc2F0aW9uCi0jIHZhcmlhYmxlIGFuZCBzYWZlbHkgb3ZlcndyaXR0ZW4uCi1FWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0gICAgICAgICAgICAgICAgQ0M9JyR7Q0N9JyBMRD0nJHtDQ30nIFNUUklQPScnIFwKLSAgICAgICAgICAgICAgICBMREZMQUdTLkVYVFJBPScke0xERkxBR1N9JyBcCi0gICAgICAgICAgICAgICAgUE9QVD0nJHtDRkxBR1N9JyBcCi0gICAgICAgICAgICAgICAgR0xFV19QUkVGSVg9JyR7cHJlZml4fScgQklORElSPScke2JpbmRpcn0nIFwKLSAgICAgICAgICAgICAgICBMSUJESVI9JyR7bGliZGlyfScgSU5DRElSPScke2luY2x1ZGVkaXJ9L0dMJyBQS0dESVI9JyR7bGliZGlyfS9wa2djb25maWcnIgotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwuYWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNzI1ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjEuMC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIk9wZW5HTCBleHRlbnNpb24gbG9hZGluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVGhlIE9wZW5HTCBFeHRlbnNpb24gV3JhbmdsZXIgTGlicmFyeSAoR0xFVykgaXMgYSBjcm9zcy1wbGF0Zm9ybSBvcGVuLXNvdXJjZSBDL0MrKyBleHRlbnNpb24gbG9hZGluZyBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9nbGV3LnNvdXJjZWZvcmdlLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9Njc1ODYiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yYWMyNTE1NThkZTY4NWM2Yjk0NzhkODliZTMxNDljMiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9nbGV3L2dsZXcvJHtQVn0vZ2xldy0ke1BWfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vbm8tc3RyaXAucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMmFiMTIzMzEwMzNkZGZhYTUwZGMzOTM0NTM0Mzk4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNGRlOTFlN2U2NzYzMDM5YmMxMTk0MDA5NWNkOWM3Zjg4MGJhYmE4MjE5NmE3NzY1ZjcyN2FjMDVhOTkzYzk1IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbGV3L2ZpbGVzL2dsZXciCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvZ2xldy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitpbmhlcml0IGxpYl9wYWNrYWdlIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnb3BlbmdsJywgJ2VnbC1nbGVzMicsIGQpfSIKKworIyBUaGUgb3BlbmdsIGFuZCBlZ2wtWFhYIG9wdGlvbnMgYXJlIGV4Y2x1c2l2ZSwgZW5hYmxlIG9ubHkgb25lLgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIlNZU1RFTT0nbGludXgnLCx2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4ZXh0IGxpYnhpIGxpYnhtdSIKK1BBQ0tBR0VDT05GSUdbZWdsLWdsZXMyXSA9ICJTWVNURU09J2xpbnV4LWVnbCcgR0xFV19OT19HTFU9Jy1ER0xFV19OT19HTFUnIExERkxBR1MuR0w9Jy1sRUdMIC1sR0xFU3YyJywsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorIyBPdmVycmlkZSBTWVNURU0gKHZpYSBQQUNLQUdFQ09ORklHX0NPTkZBUkdTKSB0byBhdm9pZCBjYWxsaW5nIGNvbmZpZy5ndWVzcywKKyMgd2UncmUgY3Jvc3MtY29tcGlsaW5nLiBQYXNzIG91ciBDRkxBR1MgdmlhIFBPUFQgYXMgdGhhdCdzIHRoZSBvcHRpbWlzYXRpb24KKyMgdmFyaWFibGUgYW5kIHNhZmVseSBvdmVyd3JpdHRlbi4KK0VYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyAgICAgICAgICAgICAgICBDQz0nJHtDQ30nIExEPScke0NDfScgU1RSSVA9JycgXAorICAgICAgICAgICAgICAgIExERkxBR1MuRVhUUkE9JyR7TERGTEFHU30nIFwKKyAgICAgICAgICAgICAgICBQT1BUPScke0NGTEFHU30nIFwKKyAgICAgICAgICAgICAgICBHTEVXX1BSRUZJWD0nJHtwcmVmaXh9JyBCSU5ESVI9JyR7YmluZGlyfScgXAorICAgICAgICAgICAgICAgIExJQkRJUj0nJHtsaWJkaXJ9JyBJTkNESVI9JyR7aW5jbHVkZWRpcn0vR0wnIFBLR0RJUj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZyciCisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC5hbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS40LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjVlNWEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS40LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgc2hhcGluZyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiSGFyZkJ1enogaXMgYW4gT3BlblR5cGUgdGV4dCBzaGFwaW5nIGVuZ2luZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL0hhcmZCdXp6IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1IYXJmQnV6eiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTAyMWRkNmRkYTZmZjFlNmIxMDQ0MDAyZmM2NjJiOWIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZG4vQ09QWUlORzttZDU9OTk0YmEwZjEyOTVmMTViNGJkYTQ5OTlhNWJiZWRkZWYgXAotIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGNhaXJvIGZvbnRjb25maWcgZnJlZXR5cGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvaGFyZmJ1enovcmVsZWFzZS8ke0JQfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDFhYTQ0NmUxZTY1NzE3MzExYzE1ZDlhYzBjZjMxZWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NlYzQ5MzBmZjBiYjJkMGM0MGFlZTIwMzA3NTQ0Nzk1NGI2NGE4YzI2OTUyMDI0MTNjYzVlNDI4YzkwNzEzMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKLVBBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXdpdGgtY2Fpcm8gXAotICAgIC0td2l0aC1mb250Y29uZmlnIFwKLSAgICAtLXdpdGgtZnJlZXR5cGUgXAotICAgIC0td2l0aC1nbGliIFwKLSAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgotCi1GSUxFU18ke1BOfS1pY3UgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zby4qIgotRklMRVNfJHtQTn0taWN1LWRldiA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvaGFyZmJ1enotaWN1LnBjIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNy41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjcuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTliMDI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjcuNS5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIlRleHQgc2hhcGluZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSGFyZkJ1enogaXMgYW4gT3BlblR5cGUgdGV4dCBzaGFwaW5nIGVuZ2luZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL0hhcmZCdXp6IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1IYXJmQnV6eiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTAyMWRkNmRkYTZmZjFlNmIxMDQ0MDAyZmM2NjJiOWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZG4vQ09QWUlORzttZDU9OTk0YmEwZjEyOTVmMTViNGJkYTQ5OTlhNWJiZWRkZWYgXAorIgorCitERVBFTkRTID0gImdsaWItMi4wIGNhaXJvIGZvbnRjb25maWcgZnJlZXR5cGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvaGFyZmJ1enovcmVsZWFzZS8ke0JQfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTQ2NmFiNTFmYzVhYWE2YWY0MDY1OTM2OTM5Y2VjNjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODQ1NzRlMWIxZjY1Y2E2OTRjYjhmYjY5MDUzMDk2NjVjMDM2OGFmMThhMzEyMzU3ZjhmZjg4NmVlMmYyOTU2MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGgtY2Fpcm8gXAorICAgIC0td2l0aC1mb250Y29uZmlnIFwKKyAgICAtLXdpdGgtZnJlZXR5cGUgXAorICAgIC0td2l0aC1nbGliIFwKKyAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LWljdSAke1BOfS1pY3UtZGV2IgorCitGSUxFU18ke1BOfS1pY3UgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zby4qIgorRklMRVNfJHtQTn0taWN1LWRldiA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvaGFyZmJ1enotaWN1LnBjIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODY0NmQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9MDViYWI3YzdhZDg5OWQ4NWJmYmE2MGRhMWExMjcxZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YjkwYjZkMmI0MTE5ZjllNTgwN2NkMjczZjUyNWQyYWYgXAotIgotREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YjQ5MjNlMjk3YTdlYWEyNTVmMDg1MTEwMTdhODgxOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDk4OTQzYjI3MDM4ODcyN2FlNjFkZTgyYWRlYzczY2Y5ZjBkYmIyNDBiM2JjOGIxNzI1OTVlYmY0MDViNTI4IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1QRT0gIjEiCi0KLSMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZwotUFJPVklERVMgPSAianBlZyIKLVJQUk9WSURFU18ke1BOfSArPSAianBlZyIKLVJSRVBMQUNFU18ke1BOfSArPSAianBlZyIKLVJDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LXNpbWQiCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCi0KLSMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgotCi1QQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCi0KLURFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKLUZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLURFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgotRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYTVhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMy5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT04MTg0YmNjN2M0YWM3YjllZGM2YTdiYzAwZjIzMWQwYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9ZjY3ZDcwZTU0N2EyNjYyYzA3OTc4MWM3MmY4NzdmNzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1jNTllMTk4MTFjMDA2Y2IzOGY4MmQ2NDc3MTM0ZDMxNCBcCisiCitERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjdjODJmMGY2YTMxMzBlYzA2YjhhNGQwYjMyMWNiY2EzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyNDg5MGUyYmI0NmUxMmU3MmE3OWY3ZTk2NWY0MDlmNGUxNjQ2NmQwMGUxZGQxNWQ5M2Q3M2VlNmI1OTI1MjMiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJqcGVnLXR1cmJvL2ZpbGVzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9saWJqcGVnLXR1cmJvL2ZpbGVzLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK1BFPSAiMSIKKworIyBEcm9wLWluIHJlcGxhY2VtZW50IGZvciBqcGVnCitQUk9WSURFUyA9ICJqcGVnIgorUlBST1ZJREVTXyR7UE59ICs9ICJqcGVnIgorUlJFUExBQ0VTXyR7UE59ICs9ICJqcGVnIgorUkNPTkZMSUNUU18ke1BOfSArPSAianBlZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKKyMgQWRkIG5hc20tbmF0aXZlIGRlcGVuZGVuY3kgY29uc2lzdGVudGx5IGZvciBhbGwgYnVpbGQgYXJjaGVzIGlzIGhhcmQKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXdpdGhvdXQtc2ltZCIKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHgzMiBBQkkgc3VwcG9ydAorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgorCisjIFdvcmsgYXJvdW5kIG1pc3Npbmcgbm9uLWZsb2F0aW5nIHBvaW50IEFCSSBzdXBwb3J0IGluIE1JUFMKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiTUlQU1BLR1NGWF9GUFUiLCAiLW5mIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKKworIyBQcm92aWRlIGEgd29ya2Fyb3VuZCBpZiBBbHRpdmVjIHVuaXQgaXMgbm90IHByZXNlbnQgaW4gUFBDCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItLXdpdGhvdXQtc2ltZCIsIGQpfSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGM2NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCisKK2RlZiBnZXRfYnVpbGRfdGltZShkKToKKyAgICBpZiBkLmdldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnKSAhPSBOb25lOgorICAgICAgICBpbXBvcnQgZGF0ZXRpbWUKKyAgICAgICAgcmV0dXJuICIgLS13aXRoLWJ1aWxkLWRhdGU9IisgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChmbG9hdChkLmdldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnKSkpLnN0cmZ0aW1lKCIlWSVtJWQiKQorICAgIHJldHVybiAiIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIke0BnZXRfYnVpbGRfdGltZShkKX0iCisKK1BBQ0tBR0VTID0rICJqcGVnLXRvb2xzIGxpYnR1cmJvanBlZyIKKworREVTQ1JJUFRJT05fanBlZy10b29scyA9ICJUaGUganBlZy10b29scyBwYWNrYWdlIGluY2x1ZGVzIGNsaWVudCBwcm9ncmFtcyB0byBhY2Nlc3MgbGlianBlZyBmdW5jdGlvbmFsaXR5LiAgVGhlc2UgdG9vbHMgYWxsb3cgZm9yIHRoZSBjb21wcmVzc2lvbiwgZGVjb21wcmVzc2lvbiwgdHJhbnNmb3JtYXRpb24gYW5kIGRpc3BsYXkgb2YgSlBFRyBmaWxlcyBhbmQgYmVuY2htYXJraW5nIG9mIHRoZSBsaWJqcGVnIGxpYnJhcnkuIgorRklMRVNfanBlZy10b29scyA9ICIke2JpbmRpcn0vKiIKKworREVTQ1JJUFRJT05fbGlidHVyYm9qcGVnID0gIkEgU0lNRC1hY2NlbGVyYXRlZCBKUEVHIGNvZGVjIHdoaWNoIHByb3ZpZGVzIG9ubHkgVHVyYm9KUEVHIEFQSXMiCitGSUxFU19saWJ0dXJib2pwZWcgPSAiJHtsaWJkaXJ9L2xpYnR1cmJvanBlZy5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmUvZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwNTQ0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoCkBAIC0wLDAgKzEsMTE2IEBACitGcm9tIDc2MWJmOTkzY2E1NTA5NWY0NjM4MGMwMjM4NTgzNzkxYzE3OTcyOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/RGFuaWVsPTIwRD1DMz1BRGF6Pz0gPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+CitEYXRlOiBUdWUsIDExIEp1bCAyMDE3IDE0OjUwOjM3IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0gga21zY3ViZV0gRGV0ZWN0IGdzdF9ib19tYXAvX3VubWFwIGFuZCB1c2UgaXQgKG9yIGF2b2lkIGl0KQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaG9zZSBmdW5jdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUgb24gbGliTWFsaSwgdGh1cyBicmVha2luZworYnVpbGRzIGFuZCBjcmVhdGluZyBoYXZvYy4KKworUmVtb3ZpbmcgdGhlIHNwZWNpZmljIHBhcnRzIG9mIHRoZSBjb2RlIHRoYXQgZGVhbCB3aXRoCitnYm1fYm9fbWFwKCkgYW5kIGdibV9ib191bm1hcCgpIHJlbmRlcnMgdGhlIGttc2N1YmUgdXRpbGl0eQorYSBsaXR0bGUgbGVzcyB1c2VmdWwsIGJ1dCBzdGlsbCB2YWx1YWJsZS4KKworU2lnbmVkLW9mZi1ieTogRGFuaWVsIETDrWF6IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgorQ2M6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBFcmljIEVuZ2VzdHJvbSA8ZXJpYy5lbmdlc3Ryb21AaW1ndGVjLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL21lc2EtZGV2LzIwMTctSnVseS8xNjMwMjAuaHRtbF0KKy0tLQorIE1ha2VmaWxlLmFtICAgfCA1ICsrKystCisgY29uZmlndXJlLmFjICB8IDMgKysrCisgZ3N0LWRlY29kZXIuYyB8IDcgKysrKysrLQorIGttc2N1YmUuYyAgICAgfCA0ICsrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBhMzYwODdkLi5hYjRhZGJmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNDMsNyArNDMsNiBAQCBrbXNjdWJlX1NPVVJDRVMgPSBcCisgCWNvbW1vbi5jIFwKKyAJY29tbW9uLmggXAorIAljdWJlLXNtb290aC5jIFwKKy0JY3ViZS10ZXguYyBcCisgCWRybS1hdG9taWMuYyBcCisgCWRybS1jb21tb24uYyBcCisgCWRybS1jb21tb24uaCBcCitAQCAtNTksMyArNTgsNyBAQCBrbXNjdWJlX0xEQUREICs9ICQoR1NUX0xJQlMpCisga21zY3ViZV9DRkxBR1MgKz0gJChHU1RfQ0ZMQUdTKQorIGttc2N1YmVfU09VUkNFUyArPSBjdWJlLXZpZGVvLmMgZ3N0LWRlY29kZXIuYworIGVuZGlmCisrCisraWYgRU5BQkxFX0dCTV9NQVAKKytrbXNjdWJlX1NPVVJDRVMgKz0gY3ViZS10ZXguYworK2VuZGlmCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA4Mzk3ZjdiLi5jN2YxZjRkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NSw1ICs2NSw4IEBAIGlmIHRlc3QgIngkZW5hYmxlX2dibV9tb2RpZmllcnMiID0geHllczsgdGhlbgorIAlBQ19ERUZJTkUoSEFWRV9HQk1fTU9ESUZJRVJTLCAxLCBbRGVmaW5lIGlmIHlvdSBjYW4gdXNlIEdCTSBwcm9wZXJ0aWVzLl0pCisgZmkKKyAKKytBQ19DSEVDS19MSUIoW2dibV0sIFtnYm1fYm9fbWFwXSwgW0hBVkVfR0JNX0JPX01BUD15ZXNdLCBbXSkKKytBTV9DT05ESVRJT05BTChFTkFCTEVfR0JNX01BUCwgW3Rlc3QgIngkSEFWRV9HQk1fQk9fTUFQIiA9ICJ4eWVzIl0pCisrCisgQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZV0pCisgQUNfT1VUUFVUCitkaWZmIC0tZ2l0IGEvZ3N0LWRlY29kZXIuYyBiL2dzdC1kZWNvZGVyLmMKK2luZGV4IDJkNmQ1ODEuLmI4NDk4MGUgMTAwNjQ0CistLS0gYS9nc3QtZGVjb2Rlci5jCisrKysgYi9nc3QtZGVjb2Rlci5jCitAQCAtMzMyLDYgKzMzMiw3IEBAIHNldF9sYXN0X2ZyYW1lKHN0cnVjdCBkZWNvZGVyICpkZWMsIEVHTEltYWdlIGZyYW1lLCBHc3RTYW1wbGUgKnNhbXApCisgCWRlYy0+bGFzdF9zYW1wID0gc2FtcDsKKyB9CisgCisrI2lmIEhBVkVfR0JNX0JPX01BUAorIC8vIFRPRE8gdGhpcyBjb3VsZCBwcm9iYWJseSBiZSBhIGhlbHBlciByZS11c2VkIGJ5IGN1YmUtdGV4OgorIHN0YXRpYyBpbnQKKyBidWZfdG9fZmQoY29uc3Qgc3RydWN0IGdibSAqZ2JtLCBpbnQgc2l6ZSwgdm9pZCAqcHRyKQorQEAgLTM1Nyw2ICszNTgsNyBAQCBidWZfdG9fZmQoY29uc3Qgc3RydWN0IGdibSAqZ2JtLCBpbnQgc2l6ZSwgdm9pZCAqcHRyKQorIAorIAlyZXR1cm4gZmQ7CisgfQorKyNlbmRpZgorIAorIHN0YXRpYyBFR0xJbWFnZQorIGJ1ZmZlcl90b19pbWFnZShzdHJ1Y3QgZGVjb2RlciAqZGVjLCBHc3RCdWZmZXIgKmJ1ZikKK0BAIC00MTAsMTIgKzQxMiwxNSBAQCBidWZmZXJfdG9faW1hZ2Uoc3RydWN0IGRlY29kZXIgKmRlYywgR3N0QnVmZmVyICpidWYpCisgCisgCWlmIChpc19kbWFidWZfbWVtKSB7CisgCQlkbWFidWZfZmQgPSBkdXAoZ3N0X2RtYWJ1Zl9tZW1vcnlfZ2V0X2ZkKG1lbSkpOworLQl9IGVsc2UgeworKwl9CisrI2lmIEhBVkVfR0JNX0JPX01BUAorKwllbHNlIHsKKyAJCUdzdE1hcEluZm8gbWFwX2luZm87CisgCQlnc3RfYnVmZmVyX21hcChidWYsICZtYXBfaW5mbywgR1NUX01BUF9SRUFEKTsKKyAJCWRtYWJ1Zl9mZCA9IGJ1Zl90b19mZChkZWMtPmdibSwgbWFwX2luZm8uc2l6ZSwgbWFwX2luZm8uZGF0YSk7CisgCQlnc3RfYnVmZmVyX3VubWFwKGJ1ZiwgJm1hcF9pbmZvKTsKKyAJfQorKyNlbmRpZgorIAorIAlpZiAoZG1hYnVmX2ZkIDwgMCkgeworIAkJR1NUX0VSUk9SKCJjb3VsZCBub3Qgb2J0YWluIERNQUJVRiBGRCIpOworZGlmZiAtLWdpdCBhL2ttc2N1YmUuYyBiL2ttc2N1YmUuYworaW5kZXggM2EyYzRkZC4uMjc2ZGM1NSAxMDA2NDQKKy0tLSBhL2ttc2N1YmUuYworKysrIGIva21zY3ViZS5jCitAQCAtMTQyLDcgKzE0MiwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAllbHNlIGlmIChtb2RlID09IFZJREVPKQorIAkJZWdsID0gaW5pdF9jdWJlX3ZpZGVvKGdibSwgdmlkZW8pOworIAllbHNlCisrI2lmIEhBVkVfR0JNX0JPX01BUAorIAkJZWdsID0gaW5pdF9jdWJlX3RleChnYm0sIG1vZGUpOworKyNlbHNlCisrCQlwcmludGYoImdibV9ib19tYXAoKSBzdXBwb3J0IG1pc3NpbmdcbiIpOworKyNlbmRpZgorIAorIAlpZiAoIWVnbCkgeworIAkJcHJpbnRmKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBFR0xcbiIpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKaW5kZXggY2FiNjhmZi4uNWI2NGVkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgpAQCAtNyw4ICs3LDkgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2ttc2N1YmUuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT04YjMwOWQ0ZWU2N2I3MzE1ZmY3MzgxMjcwZGQ2MzFmYiIKIAogU1JDUkVWID0gIjBkOGRlNGNlM2EwM2YzNmFmMTgxN2Y5YjA1ODZkMTMyYWQyYzVkMmUiCi1TUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL21lc2Eva21zY3ViZTticmFuY2g9bWFzdGVyO3Byb3RvY29sPWdpdCIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL2ttc2N1YmU7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1naXQgXAorICAgIGZpbGU6Ly9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaCIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L0FkZC1mYWxsYmFjay1kZWZpbml0aW9uLWZvci1FR0wtQ0FTVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyOTcyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L0FkZC1mYWxsYmFjay1kZWZpbml0aW9uLWZvci1FR0wtQ0FTVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUFkZCBmYWxsYmFjayBkZWZpbml0aW9uIGZvciBFR0xfQ0FTVAotCi1UaGUgRUdMIEFQSSB1cGRhdGUgZnJvbSBkMTExMDRmIGludHJvZHVjZWQgYSBkZXBlbmRlbmN5IG9uIHRoZQotRUdMX0NBU1QoKSBtYWNybywgcHJvdmlkZWQgYnkgYW4gdXBkYXRlZCBlZ2xwbGF0Zm9ybS5oLiBHaXZlbiB0aGF0IHdlCi1kb24ndCBwcm92aWRlIGVnbHBsYXRmb3JtLmgsIGFkZCBhIGZhbGxiYWNrIGRlZmluaXRpb24gZm9yIGlmIHdlJ3JlCi1idWlsZGluZyBhZ2FpbnN0IE1lc2EgMTcuMC54IG9yIHNpbWlsYXIuCi0KLWh0dHBzOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM5MjYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9jb21taXQvZWJlM2E1M2RiMWMwYmIzNGUxY2E5NjNiOTVkMWYyMjIxMTVmOTNmOF0KLQotU2lnbmVkLW9mZi1ieTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgotCi1JbmRleDogbGliZXBveHktMS40LjMvc3JjL2dlbl9kaXNwYXRjaC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmVwb3h5LTEuNC4zLm9yaWcvc3JjL2dlbl9kaXNwYXRjaC5weQkyMDE3LTA2LTA2IDA0OjI0OjEzLjAwMDAwMDAwMCAtMDUwMAotKysrIGxpYmVwb3h5LTEuNC4zL3NyYy9nZW5fZGlzcGF0Y2gucHkJMjAxNy0xMS0wNiAxMjo0NTo0My41OTQ5NjY0NzMgLTA2MDAKLUBAIC00OTEsNiArNDkxLDE1IEBACi0gICAgICAgICAgICAgc2VsZi5vdXRsbignI2luY2x1ZGUgImVwb3h5L2dsLmgiJykKLSAgICAgICAgICAgICBpZiBzZWxmLnRhcmdldCA9PSAiZWdsIjoKLSAgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2luY2x1ZGUgIkVHTC9lZ2xwbGF0Zm9ybS5oIicpCi0rICAgICAgICAgICAgICAgICMgQWNjb3VudCBmb3Igb2xkZXIgZWdscGxhdGZvcm0uaCwgd2hpY2ggZG9lc24ndCBkZWZpbmUKLSsgICAgICAgICAgICAgICAgIyB0aGUgRUdMX0NBU1QgbWFjcm8uCi0rICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpZm5kZWYgRUdMX0NBU1QnKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjaWYgZGVmaW5lZChfX2NwbHVzcGx1cyknKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZGVmaW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpKScpCi0rICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbHNlJykKLSsgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKCh0eXBlKSAodmFsdWUpKScpCi0rICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbmRpZicpCi0rICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNlbmRpZicpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgICMgQWRkIHNvbWUgcmlkaWN1bG91cyBpbnR0eXBlcy5oIHJlZGVmaW5pdGlvbnMgdGhhdCBhcmUKLSAgICAgICAgICAgICAjIGZyb20ga2hycGxhdGZvcm0uaCBhbmQgbm90IGluY2x1ZGVkIGluIHRoZSBYTUwuICBXZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9uby10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvbm8tdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJiNmMxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvbm8tdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorQWRkIG9wdGlvbiB0byBkaXNhYmxlIHRlc3RzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCAoaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9wdWxsLzE1OCkKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCBiMmViYWVmLi45NjMyYzdhIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMjQyLDcgKzI0MiwxMCBAQCBsaWJlcG94eV9pbmMgPSBbCisgCisgc3ViZGlyKCdpbmNsdWRlL2Vwb3h5JykKKyBzdWJkaXIoJ3NyYycpCistc3ViZGlyKCd0ZXN0JykKKysKKytpZiBnZXRfb3B0aW9uKCd0ZXN0cycpCisrICBzdWJkaXIoJ3Rlc3QnKQorK2VuZGlmCisgCisgaWYgZ2V0X29wdGlvbignZG9jcycpCisgICBkb3h5Z2VuID0gZmluZF9wcm9ncmFtKCdkb3h5Z2VuJywgcmVxdWlyZWQ6IGZhbHNlKQorZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKK2luZGV4IGI1ZDdjOTguLmRjMzBlNjggMTAwNjQ0CistLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysrIGIvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0xNSwzICsxNSw3IEBAIG9wdGlvbigneDExJywKKyAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLAorICAgICAgICB2YWx1ZTogdHJ1ZSwKKyAgICAgICAgZGVzY3JpcHRpb246ICdFbmFibGUgWDExIHN1cHBvcnQgKEdMWCBvciBFR0wtWDExKScpCisrb3B0aW9uKCd0ZXN0cycsCisrICAgICAgIHR5cGU6ICdib29sZWFuJywKKysgICAgICAgdmFsdWU6IHRydWUsCisrICAgICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgdGhlIHRlc3Qgc3VpdGUnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNzIzMjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL0FkZC1mYWxsYmFjay1kZWZpbml0aW9uLWZvci1FR0wtQ0FTVC5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjRjM2NlMGZiMTE0M2JkYzRlNDNmODU2OTVhOWJlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjgwOGEwNmM5Njg1YTYyZmNhMzRiNjgwYWJiOGJjN2ZiMmZkYTA3NDQ3OGUzMjliMDYzYzFmODcyYjgyNmY2IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcmVsZWFzZXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyIKLQotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwgLS1kaXNhYmxlLWVnbCwgdmlydHVhbC9lZ2wiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUtZ2x4LCAtLWRpc2FibGUtZ2x4LCB2aXJ0dWFsL2xpYngxMSIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gZWdsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNhMDg2OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjAuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OGVmNGM4MGQ0MDFlMDdiZDllZThiNmI1OGNmNDY0YiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbm8tdGVzdHMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjNmZTM4NDc3ODkyNTgyNTRkY2Q3ZTNmZGI5ZTdmNWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM5NDk5NTM5OGE2ZWJmNjkxNjAwZGRhMmU5Njg1YTBjYWMyNjE0MTQxNzVjMmFkZjQ2NDVjZGZhYjQyYTVkNSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1EZWdsPXllcywgLURlZ2w9bm8sIHZpcnR1YWwvZWdsIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EZ2x4PXllcywgLURnbHg9bm8sIHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IGVnbCIKKworRVhUUkFfT0VNRVNPTiArPSAiLUR0ZXN0cz1mYWxzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtcHJlcGVuZC1vdXItc3lzcm9vdC1wYXRoLXNvLXRoYXQtbWFrZS1maW5kcy1vdXItd2F5bC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtcHJlcGVuZC1vdXItc3lzcm9vdC1wYXRoLXNvLXRoYXQtbWFrZS1maW5kcy1vdXItd2F5bC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZjODQxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGI0NDgwOGU0MzEzMGRjZDEzYjQzZTViOTc4YjliMjRhZWI0YzEzNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIwIE9jdCAyMDE2IDE0OjU3OjUxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHByZXBlbmQgb3VyIHN5c3Jvb3QgcGF0aCBzbyB0aGF0IG1ha2UgZmluZHMgb3VyCi0gd2F5bGFuZC1wcm90b2NvbCBmaWxlcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCA0ICstCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNzI2ZGVkMy4uMzM3NjYwMCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTIwNiw3ICsxMjA2LDcgQEAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXZpZGVvLXdheWxhbmQtcXQtdG91Y2hdLCBbUXRXYXlsYW5kIHNlcnZlciBzdXBwb3J0IGZvcgotICAgICAgICAgICAgICAgICBXQVlMQU5EX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3Mgd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2wgd2F5bGFuZC1jdXJzb3IgeGtiY29tbW9uYAotICAgICAgICAgICAgICAgICBXQVlMQU5EX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyB3YXlsYW5kLWNsaWVudCB3YXlsYW5kLWVnbCB3YXlsYW5kLWN1cnNvciB4a2Jjb21tb25gCi0gICAgICAgICAgICAgICAgIFdBWUxBTkRfU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT13YXlsYW5kX3NjYW5uZXIgd2F5bGFuZC1zY2FubmVyYAotLSAgICAgICAgICAgICAgICBXQVlMQU5EX0NPUkVfUFJPVE9DT0xfRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1jbGllbnRgCi0tICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX0RJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYAotKyAgICAgICAgICAgICAgICBXQVlMQU5EX0NPUkVfUFJPVE9DT0xfRElSPSR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLWNsaWVudGAKLSsgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfRElSPSR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2AKLSAgICAgICAgICAgICAgICAgdmlkZW9fd2F5bGFuZD15ZXMKLSAgICAgICAgICAgICBmaQotICAgICAgICAgZmkKLS0tIAotMi41LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1Bdm9pZC1maW5kaW5nLWJ1aWxkLWhvc3Qtcy13YXlsYW5kLXNjYW5uZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAyLUF2b2lkLWZpbmRpbmctYnVpbGQtaG9zdC1zLXdheWxhbmQtc2Nhbm5lci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgzNzMxNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAyLUF2b2lkLWZpbmRpbmctYnVpbGQtaG9zdC1zLXdheWxhbmQtc2Nhbm5lci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gYWU4NzkwOTFjZjY1Y2I3MDI5M2IzNzVlYzdlNjFlZDEyYTk2ZDhhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMiBEZWMgMjAxNiAwOTozOToyNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBBdm9pZCBmaW5kaW5nIGJ1aWxkIGhvc3QncyB3YXlsYW5kLXNjYW5uZXIKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCAzMzc2NjAwLi4yYWE2ZWQ0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0xMjA0LDcgKzEyMDQsNyBAQCBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtdmlkZW8td2F5bGFuZC1xdC10b3VjaF0sIFtRdFdheWxhbmQgc2VydmVyIHN1cHBvcnQgZm9yCi0gICAgICAgICAgICAgaWYgJFBLR19DT05GSUcgLS1leGlzdHMgd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1zY2FubmVyIHdheWxhbmQtcHJvdG9jb2xzIHdheWxhbmQtZWdsIHdheWxhbmQtY3Vyc29yIGVnbCB4a2Jjb21tb24gOyB0aGVuCi0gICAgICAgICAgICAgICAgIFdBWUxBTkRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyB3YXlsYW5kLWNsaWVudCB3YXlsYW5kLWVnbCB3YXlsYW5kLWN1cnNvciB4a2Jjb21tb25gCi0gICAgICAgICAgICAgICAgIFdBWUxBTkRfTElCUz1gJFBLR19DT05GSUcgLS1saWJzIHdheWxhbmQtY2xpZW50IHdheWxhbmQtZWdsIHdheWxhbmQtY3Vyc29yIHhrYmNvbW1vbmAKLS0gICAgICAgICAgICAgICAgV0FZTEFORF9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXdheWxhbmRfc2Nhbm5lciB3YXlsYW5kLXNjYW5uZXJgCi0rICAgICAgICAgICAgICAgIEFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0pCi0gICAgICAgICAgICAgICAgIFdBWUxBTkRfQ09SRV9QUk9UT0NPTF9ESVI9JHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtY2xpZW50YAotICAgICAgICAgICAgICAgICBXQVlMQU5EX1BST1RPQ09MU19ESVI9JHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYAotICAgICAgICAgICAgICAgICB2aWRlb193YXlsYW5kPXllcwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi9maXgtYnVpbGQtZmFpbHVyZS1vbi1wcGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi9maXgtYnVpbGQtZmFpbHVyZS1vbi1wcGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MjBiY2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvZml4LWJ1aWxkLWZhaWx1cmUtb24tcHBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9oZy5saWJzZGwub3JnL1NETC9yZXYvNTE4NDE4NmQ0MzY2XQotCi1CYWNrcG9ydCBwYXRjaCBmcm9tIHVwc3RyZWFtIHRvIGZpeCBidWlsZCBmYWlsdXJlcyBvbiBwcGMgYW5kIHBwYzY0LgotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciBTYW0gTGFudGluZ2EgPHNsb3VrZW5AbGlic2RsLm9yZz4KLSMgRGF0ZSAxNDc3MTU5MzE1IDI1MjAwCi0jIE5vZGUgSUQgNTE4NDE4NmQ0MzY2MTY5NjE3YjQzNGY1YjcxYzYxOGE3MDM1Y2RlNAotIyBQYXJlbnQgIDcxZDQxNDhlMzJkZTUwODhjNGJjMmYwNGMxZTVkZWQ2NDdhMmJmODIKLUZpeGVkIGJ1ZyAzNDY2IC0gQ2FuJ3QgYnVpbGQgMi4wLjUgb24gcHBjNjQKLQotL2hvbWUvZmVkb3JhL1NETDItMi4wLjUvc3JjL3ZpZGVvL1NETF9ibGl0X04uYzogSW4gZnVuY3Rpb24gJ2NhbGNfc3dpenpsZTMyJzoKLS9ob21lL2ZlZG9yYS9TREwyLTIuMC41L3NyYy92aWRlby9TRExfYmxpdF9OLmM6MTI3OjU6IGVycm9yOiBJU08gQzkwIGZvcmJpZHMgbWl4ZWQgZGVjbGFyYXRpb25zIGFuZCBjb2RlIFstV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudF0KLSAgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcGx1cyA9IFZFQ1VJTlQ4X0xJVEVSQUwoMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLSAgICAgXgotCi1kaWZmIC1yIDcxZDQxNDhlMzJkZSAtciA1MTg0MTg2ZDQzNjYgc3JjL3ZpZGVvL1NETF9ibGl0X04uYwotLS0tIGEvc3JjL3ZpZGVvL1NETF9ibGl0X04uYwlXZWQgT2N0IDE5IDIxOjIyOjQyIDIwMTYgLTA3MDAKLSsrKyBiL3NyYy92aWRlby9TRExfYmxpdF9OLmMJU2F0IE9jdCAyMiAxMTowMTo1NSAyMDE2IC0wNzAwCi1AQCAtMTE4LDEyICsxMTgsNiBAQAotICAgICAgICAgMTYsIDgsIDAsIDI0LAotICAgICAgICAgMCwgTlVMTAotICAgICB9OwotLSAgICBpZiAoIXNyY2ZtdCkgewotLSAgICAgICAgc3JjZm10ID0gJmRlZmF1bHRfcGl4ZWxfZm9ybWF0OwotLSAgICB9Ci0tICAgIGlmICghZHN0Zm10KSB7Ci0tICAgICAgICBkc3RmbXQgPSAmZGVmYXVsdF9waXhlbF9mb3JtYXQ7Ci0tICAgIH0KLSAgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcGx1cyA9IFZFQ1VJTlQ4X0xJVEVSQUwoMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNCwgMHgwNCwgMHgwNCwgMHgwNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwKLUBAIC0xMzYsNiArMTMwLDE0IEBACi0gICAgIFVpbnQzMiBnbWFzayA9IFJFU0hJRlQoc3JjZm10LT5Hc2hpZnQpIDw8IChkc3RmbXQtPkdzaGlmdCk7Ci0gICAgIFVpbnQzMiBibWFzayA9IFJFU0hJRlQoc3JjZm10LT5Cc2hpZnQpIDw8IChkc3RmbXQtPkJzaGlmdCk7Ci0gICAgIFVpbnQzMiBhbWFzazsKLSsKLSsgICAgaWYgKCFzcmNmbXQpIHsKLSsgICAgICAgIHNyY2ZtdCA9ICZkZWZhdWx0X3BpeGVsX2Zvcm1hdDsKLSsgICAgfQotKyAgICBpZiAoIWRzdGZtdCkgewotKyAgICAgICAgZHN0Zm10ID0gJmRlZmF1bHRfcGl4ZWxfZm9ybWF0OwotKyAgICB9Ci0rCi0gICAgIC8qIFVzZSB6ZXJvIGZvciBhbHBoYSBpZiBlaXRoZXIgc3VyZmFjZSBkb2Vzbid0IGhhdmUgYWxwaGEgKi8KLSAgICAgaWYgKGRzdGZtdC0+QW1hc2spIHsKLSAgICAgICAgIGFtYXNrID0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvbGlua2FnZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2xpbmthZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMTg1YjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvbGlua2FnZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVdoZW4gYnVpbGRpbmcgdXNlIHRoZSBsaWJ0b29sIGludGVybWVkaWF0ZSAubG8gZmlsZXMgaW5zdGVhZCBvZiBleHBsaWNpdGx5IHVzaW5nCi10aGUgLm8gZmlsZXMuIFVuZGVyIGxpYnRvb2wgZm9vLmxvIGlzIHRoZSBsaWJ0b29sIGludGVybWVkaWF0ZSB3cmFwcGVyLCBmb28ubyBpcwotYSBzdGF0aWMgYnVpbGQsIGFuZCAubGlicy9mb28ubyBpcyBhIHNoYXJlZCBidWlsZC4KLQotSWYgc3RhdGljIGxpYnJhcmllcyBoYXZlIGJlZW4gZGlzYWJsZWQgZ2xvYmFsbHkgdGhlbiBsaWJ0b29sIHdvbid0IGdlbmVyYXRlIHRoZW0KLWFuZCBleHBsaWNpdCByZWZlcmVuY2VzIHRvIGZvby5vIHdvbid0IGJlIHNhdGlzZmllZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1SUAotMjAxNi8xLzE2Ci0KLQotSW5kZXg6IFNETDItMi4wLjQvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gU0RMMi0yLjAuNC5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIFNETDItMi4wLjQvY29uZmlndXJlLmluCi1AQCAtMzQ2NCwyMyArMzQ2NCwyMyBAQCBkb25lCi0gCi0gVkVSU0lPTl9PQkpFQ1RTPWBlY2hvICRWRVJTSU9OX1NPVVJDRVNgCi0gVkVSU0lPTl9ERVBFTkRTPWBlY2hvICRWRVJTSU9OX1NPVVJDRVNgCi0tVkVSU0lPTl9PQkpFQ1RTPWBlY2hvICIkVkVSU0lPTl9PQkpFQ1RTIiB8IHNlZCAncyxbW14gXV0qL1woW1teIF1dKlwpXC5yYywkKG9iamVjdHMpL1wxLm8sZydgCi0rVkVSU0lPTl9PQkpFQ1RTPWBlY2hvICIkVkVSU0lPTl9PQkpFQ1RTIiB8IHNlZCAncyxbW14gXV0qL1woW1teIF1dKlwpXC5yYywkKG9iamVjdHMpL1wxLmxvLGcnYAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAiJFZFUlNJT05fREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwucmMsXFxcXAotLVxcJChvYmplY3RzKS9cXDIubzogXFwxL1xcMi5yY1xcXFwKLStcXCQob2JqZWN0cykvXFwyLmxvOiBcXDEvXFwyLnJjXFxcXAotIAlcXCQoV0lORFJFUykgXFwkPCBcXCRALGciYAotIAotIFNETE1BSU5fT0JKRUNUUz1gZWNobyAkU0RMTUFJTl9TT1VSQ0VTYAotIFNETE1BSU5fREVQRU5EUz1gZWNobyAkU0RMTUFJTl9TT1VSQ0VTYAotLVNETE1BSU5fT0JKRUNUUz1gZWNobyAiJFNETE1BSU5fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLm8sZydgCi0rU0RMTUFJTl9PQkpFQ1RTPWBlY2hvICIkU0RMTUFJTl9PQkpFQ1RTIiB8IHNlZCAncyxbW14gXV0qL1woW1teIF1dKlwpXC5jLCQob2JqZWN0cykvXDEubG8sZydgCi0gU0RMTUFJTl9ERVBFTkRTPWBlY2hvICIkU0RMTUFJTl9ERVBFTkRTIiB8IHNlZCAicyxcXChbW14gXV0qXFwpL1xcKFtbXiBdXSpcXClcXC5jLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIuY1xcXFwKLStcXCQob2JqZWN0cykvXFwyLmxvOiBcXDEvXFwyLmNcXFxcCi0gCVxcJChSVU5fQ01EX0NDKVxcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSBcXCQoQ0MpIFxcJChDRkxBR1MpIFxcJChFWFRSQV9DRkxBR1MpICRERVBFTkRFTkNZX1RSQUNLSU5HX09QVElPTlMgLWMgXFwkPCAtbyBcXCRALGciYAotIAotIFNETFRFU1RfT0JKRUNUUz1gZWNobyAkU0RMVEVTVF9TT1VSQ0VTYAotIFNETFRFU1RfREVQRU5EUz1gZWNobyAkU0RMVEVTVF9TT1VSQ0VTYAotLVNETFRFU1RfT0JKRUNUUz1gZWNobyAiJFNETFRFU1RfT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLm8sZydgCi0rU0RMVEVTVF9PQkpFQ1RTPWBlY2hvICIkU0RMVEVTVF9PQkpFQ1RTIiB8IHNlZCAncyxbW14gXV0qL1woW1teIF1dKlwpXC5jLCQob2JqZWN0cykvXDEubG8sZydgCi0gU0RMVEVTVF9ERVBFTkRTPWBlY2hvICIkU0RMVEVTVF9ERVBFTkRTIiB8IHNlZCAicyxcXChbW14gXV0qXFwpL1xcKFtbXiBdXSpcXClcXC5jLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIuY1xcXFwKLStcXCQob2JqZWN0cykvXFwyLmxvOiBcXDEvXFwyLmNcXFxcCi0gCVxcJChSVU5fQ01EX0NDKVxcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSBcXCQoQ0MpIFxcJChDRkxBR1MpIFxcJChFWFRSQV9DRkxBR1MpICRERVBFTkRFTkNZX1RSQUNLSU5HX09QVElPTlMgLWMgXFwkPCAtbyBcXCRALGciYAotIAotICMgU2V0IHJ1bnRpbWUgc2hhcmVkIGxpYnJhcnkgcGF0aHMgYXMgbmVlZGVkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmQzYWFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotU1VNTUFSWSA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIgaXMgYSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1lZGlhIFwKLWxpYnJhcnkgZGVzaWduZWQgdG8gcHJvdmlkZSBsb3cgbGV2ZWwgYWNjZXNzIHRvIGF1ZGlvLCBrZXlib2FyZCwgbW91c2UsIFwKLWpveXN0aWNrLCAzRCBoYXJkd2FyZSB2aWEgT3BlbkdMLCBhbmQgMkQgdmlkZW8gZnJhbWVidWZmZXIuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubGlic2RsLm9yZy8iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PWIyMzA0YWQ3ZTkxNzExMDI3NTkwZDNmMTAyYTc1NGI3IgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnNkbDIiCi0KLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3ZpcnR1YWwvbmF0aXZlc2RrLWxpYngxMSBuYXRpdmVzZGstbGlieHJhbmRyIG5hdGl2ZXNkay1saWJ4cmVuZGVyIG5hdGl2ZXNkay1saWJ4ZXh0JywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly93d3cubGlic2RsLm9yZy9yZWxlYXNlL1NETDItJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vbGlua2FnZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtcHJlcGVuZC1vdXItc3lzcm9vdC1wYXRoLXNvLXRoYXQtbWFrZS1maW5kcy1vdXItd2F5bC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItQXZvaWQtZmluZGluZy1idWlsZC1ob3N0LXMtd2F5bGFuZC1zY2FubmVyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LWJ1aWxkLWZhaWx1cmUtb24tcHBjLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L1NETDItJHtQVn0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNDA1NTQyNGQ1NTZiNGE5MDhhYTc2ZmFkNjNhYmQzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NDIwMzhjZjU1OTY1OTY5ZjJmZjA2ZDk3NjAzMTgxM2RlNjQzYWY5YzllZGM5ZTMzMWJkNzYxYzI0MmU4Nzg1IgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtb3NzIC0tZGlzYWJsZS1lc2QgLS1kaXNhYmxlLWFydHMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kaXNrYXVkaW8gLS1kaXNhYmxlLW5hcyAtLWRpc2FibGUtZXNkLXNoYXJlZCAtLWRpc2FibGUtZXNkdGVzdCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpZGVvLWR1bW15IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc2RsLWRsb3BlbiBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICBXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUj0ke1JFQ0lQRV9TWVNST09UfSIKLQotIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCi0jIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgZCl9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIGRpcmVjdGZiIHB1bHNlYXVkaW8geDExJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBnbGVzMicsICcnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICA9ICItLWVuYWJsZS1hbHNhIC0tZGlzYWJsZS1hbHNhdGVzdCwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiwiCi1QQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgID0gIi0tZW5hYmxlLXZpZGVvLWRpcmVjdGZiLC0tZGlzYWJsZS12aWRlby1kaXJlY3RmYixkaXJlY3RmYiIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsZXMsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbGVzLHZpcnR1YWwvbGliZ2xlczIiCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbCwtLWRpc2FibGUtdmlkZW8tb3BlbmdsLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbdHNsaWJdICAgICAgPSAiLS1lbmFibGUtaW5wdXQtdHNsaWIsLS1kaXNhYmxlLWlucHV0LXRzbGliLHRzbGliIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICA9ICItLWVuYWJsZS12aWRlby13YXlsYW5kLC0tZGlzYWJsZS12aWRlby13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGlieGtiY29tbW9uIgotUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICItLWVuYWJsZS12aWRlby14MTEsLS1kaXNhYmxlLXZpZGVvLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhyYW5kciBsaWJ4cmVuZGVyIgotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWluY2x1ZGU9YWNpbmNsdWRlIC0tZXhjbHVkZT1hdXRvaGVhZGVyIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgIyBSZW1vdmUgb2xkIGxpYnRvb2wgbWFjcm9zLgotICAgICAgICBNQUNST1M9ImxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00IgotICAgICAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCi0gICAgICAgICAgICAgICBybSAtZiAke1N9L2FjaW5jbHVkZS8kaQotICAgICAgICBkb25lCi0gICAgICAgIGV4cG9ydCBTWVNST09UPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGNmNzBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjguYmIKQEAgLTAsMCArMSw2NSBAQAorU1VNTUFSWSA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIiCitERVNDUklQVElPTiA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIgaXMgYSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1lZGlhIFwKK2xpYnJhcnkgZGVzaWduZWQgdG8gcHJvdmlkZSBsb3cgbGV2ZWwgYWNjZXNzIHRvIGF1ZGlvLCBrZXlib2FyZCwgbW91c2UsIFwKK2pveXN0aWNrLCAzRCBoYXJkd2FyZSB2aWEgT3BlbkdMLCBhbmQgMkQgdmlkZW8gZnJhbWVidWZmZXIuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubGlic2RsLm9yZy8iCisKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJabGliIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTAyZWUyNjgxNGRkMDQ0YmQ3ODM4YWUyNGUwNWI4ODBmIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnNkbDIiCisKK0RFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3ZpcnR1YWwvbmF0aXZlc2RrLWxpYngxMSBuYXRpdmVzZGstbGlieHJhbmRyIG5hdGl2ZXNkay1saWJ4cmVuZGVyIG5hdGl2ZXNkay1saWJ4ZXh0JywgJycsIGQpfSIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly93d3cubGlic2RsLm9yZy9yZWxlYXNlL1NETDItJHtQVn0udGFyLmd6IFwKKyIKKworUyA9ICIke1dPUktESVJ9L1NETDItJHtQVn0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODAwZDcwNWNlZjc0MmM2YTYzNGYyMDJjMzdmMjYzZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZGM3N2M1NzMwODY2MWQ1NzZlODQzMzQ0ZDg2MzhlMDI1YTc4MThiZmY3M2Y4ZmJmYWIwOWMzYzVmZDA5MmVjIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtb3NzIC0tZGlzYWJsZS1lc2QgLS1kaXNhYmxlLWFydHMgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kaXNrYXVkaW8gLS1kaXNhYmxlLW5hcyAtLWRpc2FibGUtZXNkLXNoYXJlZCAtLWRpc2FibGUtZXNkdGVzdCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpZGVvLWR1bW15IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc2RsLWRsb3BlbiBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKK1BBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZ2xlczInLCAnJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgPSAiLS1lbmFibGUtYWxzYSAtLWRpc2FibGUtYWxzYXRlc3QsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIsIgorUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiwtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCitQQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbGVzLC0tZGlzYWJsZS12aWRlby1vcGVuZ2xlcyx2aXJ0dWFsL2xpYmdsZXMyIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2wsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3RzbGliXSAgICAgID0gIi0tZW5hYmxlLWlucHV0LXRzbGliLC0tZGlzYWJsZS1pbnB1dC10c2xpYix0c2xpYiIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgPSAiLS1lbmFibGUtdmlkZW8td2F5bGFuZCwtLWRpc2FibGUtdmlkZW8td2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYnhrYmNvbW1vbiIKK1BBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUtdmlkZW8teDExLC0tZGlzYWJsZS12aWRlby14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4cmFuZHIgbGlieHJlbmRlciIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1pbmNsdWRlPWFjaW5jbHVkZSAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgICMgUmVtb3ZlIG9sZCBsaWJ0b29sIG1hY3Jvcy4KKyAgICAgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKKyAgICAgICAgZm9yIGkgaW4gJHtNQUNST1N9OyBkbworICAgICAgICAgICAgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvJGkKKyAgICAgICAgZG9uZQorICAgICAgICBleHBvcnQgU1lTUk9PVD0kUEtHX0NPTkZJR19TWVNST09UX0RJUgorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMS44LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDgyYzE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMS44LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgZnJvbSBsaWJ2YSBwcm9qZWN0IgotCi1ERVNDUklQVElPTiA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIFwKLWFuZCBleGFtcGxlcyB0byBleGVyY2lzZSBWQS1BUEkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWJ2YSBcCi1wcm9qZWN0LlZBLUFQSSBpcyBhbiBvcGVuLXNvdXJjZSBsaWJyYXJ5IGFuZCBBUEkgc3BlY2lmaWNhdGlvbiwgXAotd2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgXAotZm9yIHZpZGVvIHByb2Nlc3NpbmcuIEl0IGNvbnNpc3RzIG9mIGEgbWFpbiBsaWJyYXJ5IGFuZCBkcml2ZXItc3BlY2lmaWMgXAotYWNjZWxlcmF0aW9uIGJhY2tlbmRzIGZvciBlYWNoIHN1cHBvcnRlZCBoYXJkd2FyZSB2ZW5kb3IiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS11dGlscy9pc3N1ZXMiCi0KLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMTQ4ZmM4YWRmMTlkYzlhZWMxN2NmOWNkMjlhOWE1ZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLXV0aWxzLmdpdDticmFuY2g9djEuOC1icmFuY2giCi1TUkNSRVYgPSAiMDExYzcwOWI5OGI1MmRiM2IxMGFlYjM2MWRmZWE5ZGE0MzkzMDM2NCIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEtdXRpbHMvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJsaWJ2YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MDE4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMS4wLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBmcm9tIGxpYnZhIHByb2plY3QiCisKK0RFU0NSSVBUSU9OID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgXAorYW5kIGV4YW1wbGVzIHRvIGV4ZXJjaXNlIFZBLUFQSSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxpYnZhIFwKK3Byb2plY3QuVkEtQVBJIGlzIGFuIG9wZW4tc291cmNlIGxpYnJhcnkgYW5kIEFQSSBzcGVjaWZpY2F0aW9uLCBcCit3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNhcGFiaWxpdGllcyBcCitmb3IgdmlkZW8gcHJvY2Vzc2luZy4gSXQgY29uc2lzdHMgb2YgYSBtYWluIGxpYnJhcnkgYW5kIGRyaXZlci1zcGVjaWZpYyBcCithY2NlbGVyYXRpb24gYmFja2VuZHMgZm9yIGVhY2ggc3VwcG9ydGVkIGhhcmR3YXJlIHZlbmRvciIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL2lzc3VlcyIKKworU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxNDhmYzhhZGYxOWRjOWFlYzE3Y2Y5Y2QyOWE5YTVlIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NjQ5YmU3MDM5MDYwNjY1MWNiNjM2MzIwYmZkNDNjNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmE3NzkwYzNkY2M1NjUzNzM3MmM5MGE4MzAzNmEzMTM2MTk0YThiMzk3ZTg0ZTk3YmY5Y2M5MjU0ZmEyYzUxIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL3JlbGVhc2VzIgorCitERVBFTkRTID0gImxpYnZhIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgZGVwZW5kcyBvbiBsaWJ2YSB3aGljaCByZXF1aXJlcyBvcGVuZ2wKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8xLjguMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS44LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZWRhODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8xLjguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiVmlkZW8gQWNjZWxlcmF0aW9uIChWQSkgQVBJIGZvciBMaW51eCIKLURFU0NSSVBUSU9OID0gIlZpZGVvIEFjY2VsZXJhdGlvbiBBUEkgKFZBIEFQSSkgaXMgYSBsaWJyYXJ5IChsaWJWQSkgXAotYW5kIEFQSSBzcGVjaWZpY2F0aW9uIHdoaWNoIGVuYWJsZXMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBcCi1oYXJkd2FyZSAoR1BVKSBhY2NlbGVyYXRpb24gZm9yIHZpZGVvIHByb2Nlc3Npbmcgb24gTGludXggYW5kIFVOSVggXAotYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMuIEFjY2VsZXJhdGVkIHByb2Nlc3NpbmcgaW5jbHVkZXMgdmlkZW8gXAotZGVjb2RpbmcsIHZpZGVvIGVuY29kaW5nLCBzdWJwaWN0dXJlIGJsZW5kaW5nIGFuZCByZW5kZXJpbmcuIFRoZSBcCi1zcGVjaWZpY2F0aW9uIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIGJ5IEludGVsIGZvciBpdHMgR01BIChHcmFwaGljcyBcCi1NZWRpYSBBY2NlbGVyYXRvcikgc2VyaWVzIG9mIEdQVSBoYXJkd2FyZSwgdGhlIEFQSSBpcyBob3dldmVyIG5vdCBcCi1saW1pdGVkIHRvIEdQVXMgb3IgSW50ZWwgc3BlY2lmaWMgaGFyZHdhcmUsIGFzIG90aGVyIGhhcmR3YXJlIGFuZCBcCi1tYW51ZmFjdHVyZXJzIGNhbiBhbHNvIGZyZWVseSB1c2UgdGhpcyBBUEkgZm9yIGhhcmR3YXJlIGFjY2VsZXJhdGVkIFwKLXZpZGVvIGRlY29kaW5nLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhL2lzc3VlcyIKLQotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlNDg5NDBmOTRhY2IwYWY1ODJlNWVmMDM1Mzc4MDBmIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEuZ2l0O3Byb3RvY29sPWh0dHA7YnJhbmNoPXYxLjgtYnJhbmNoICIKLVNSQ1JFViA9ICI0NTc0NzA5ODdjYzlkZjU5NzZjZThjNzJmZmQ0YmZiZDliYWFmMGY5IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiXig/UDxwdmVyPihcZCsoXC5cZCspKykpJCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIHZpcnR1YWwvbGliZ2xlczEgdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2VnbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1FWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcHJvZ19XQVlMQU5EX1NDQU5ORVI9d2F5bGFuZC1zY2FubmVyIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXgxMSAke1BOfS10cGkgJHtQTn0tZ2x4ICR7UE59LWVnbCAke1BOfS13YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfS10cGkgPSsgIiR7UE59IgotUkRFUEVORFNfJHtQTn0teDExID0rICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWdseCA9KyAiJHtQTn0teDExIgotUkRFUEVORFNfJHtQTn0tZWdsID0rICIke1BOfS14MTEiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2RyaS8uZGVidWciCi0KLUZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCi1GSUxFU18ke1BOfS10cGkgPSsgIiR7bGliZGlyfS9saWJ2YS10cGkqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZ2x4ID0rICIke2xpYmRpcn0vbGlidmEtZ2x4KiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWVnbCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWVnbCoke1NPTElCU30iCi1GSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2NmNjMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjEuMC5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKK2FuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAoraGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKK2Jhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKK2RlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAorc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAorTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAorbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAorbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCit2aWRlbyBkZWNvZGluZy4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZDZlNGYxZDM2YzQwNzU2NjM0M2U5ZGRlNWE5NzJiOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmM2ZhOTUzYTExZDMyMTBjM2E0ZWU3OTAzMWFiZGJlMDg2M2Q1Y2UxM2Q5YjNmOTNmMzE1ZjFlZWM2MGE0YjBmIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhL3JlbGVhc2VzIgorCitERVBFTkRTID0gImxpYmRybSB2aXJ0dWFsL21lc2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCisKK1BBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tZ2x4ICR7UE59LXdheWxhbmQiCisKK1JERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKKworRklMRVNfJHtQTn0teDExID0rICIke2xpYmRpcn0vbGlidmEteDExKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCitGSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaAppbmRleCBiZDFlODYzLi5mOTA4ZDQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKQEAgLTIwLDE3ICsyMCwxOCBAQAogCiBleHBsaWN0bHkgYWRkIEVYUEFUX0xJQlMgdG8gaW50ZWwncyBWVUxLQU5fTElCX0RFUFMKIAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21lc2EtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKK2h0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9tZXNhL2NvbW1pdC8/aWQ9MDVmYzYyZDg5ZjU5Y2UxOWExOGJmZDRlNjNhMDk2MjQ5MTBkNmNhZgogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KICBzcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKLWRpZmYgLS1naXQgYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIGIvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQotaW5kZXggMjcxYjBhNS4uOGZiZTJjOCAxMDA2NDQKLS0tLSBhL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLSsrKyBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KK0luZGV4OiBtZXNhLTE3LjMuNi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbWVzYS0xNy4zLjYub3JpZy9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCisrKysgbWVzYS0xNy4zLjYvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQogQEAgLTE0NCw2ICsxNDQsNyBAQCBWVUxLQU5fTElCX0RFUFMgPSBcCiAgCSQoTElCRFJNX0xJQlMpIFwKICAJJChQVEhSRUFEX0xJQlMpIFwKQEAgLTM4LDcgKzM5LDQgQEAKICsJJChFWFBBVF9MSUJTKSBcCiAgCS1sbQogIAotIGlmIEhBVkVfUExBVEZPUk1fWDExCi0tLSAKLTIuNy40Ci0KKyBpZiBIQVZFX1BMQVRGT1JNX0FORFJPSUQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoCmluZGV4IGViNmZmNGYuLjI0NDRiMjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaApAQCAtMTQsMTIgKzE0LDEyIEBACiAgY29uZmlndXJlLmFjIHwgNyArLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA2IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyYzdlNjM2ZmFjLi5kMmIyMzUwNzM5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMTc0LDEyICsyMTc0LDcgQEAgaWYgdGVzdCAieCR3aXRoX3BsYXRmb3JtcyIgIT0geGF1dG87IHRoZW4KLSAgICAgd2l0aF9lZ2xfcGxhdGZvcm1zPSR3aXRoX3BsYXRmb3JtcworSW5kZXg6IG1lc2EtMTcuMy42L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1lc2EtMTcuMy42Lm9yaWcvY29uZmlndXJlLmFjCisrKysgbWVzYS0xNy4zLjYvY29uZmlndXJlLmFjCitAQCAtMTY5NCwxMiArMTY5NCw3IEBAIGlmIHRlc3QgIngkd2l0aF9wbGF0Zm9ybXMiID0geGF1dG87IHRoZW4KKyAgICAgd2l0aF9wbGF0Zm9ybXM9JHdpdGhfZWdsX3BsYXRmb3JtcwogIGZpCiAgCiAtUEtHX0NIRUNLX01PRFVMRVMoW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLApAQCAtMzAsOCArMzAsNSBAQAogLWZpCiArQUNfUEFUSF9QUk9HKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSkKICAKLSAjIERvIHBlci1FR0wgcGxhdGZvcm0gc2V0dXBzIGFuZCBjaGVja3MKLSBlZ2xfcGxhdGZvcm1zPWBJRlM9JywgJzsgZWNobyAkd2l0aF9lZ2xfcGxhdGZvcm1zYAotLS0gCi0yLjEzLjAKLQorIFBLR19DSEVDS19FWElTVFMoW3dheWxhbmQtcHJvdG9jb2xzID49ICRXQVlMQU5EX1BST1RPQ09MU19SRVFVSVJFRF0sIFtoYXZlX3dheWxhbmRfcHJvdG9jb2xzPXllc10sIFtoYXZlX3dheWxhbmRfcHJvdG9jb2xzPW5vXSkKKyBpZiB0ZXN0ICJ4JGhhdmVfd2F5bGFuZF9wcm90b2NvbHMiID0geHllczsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjdhM2JjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWFjLWZpeC1idWlsZC1hZnRlci1MTFZNLTUuMC1TVk4tcjMwMDcxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gOTg2MTQzN2U1OGZkZDBkZTAxMTkzYTEwMjYwOGQzNGU1OTUyOTUzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdG9waCBIYWFnIDxoYWFnY2grbWVzYWRldkBmcmlja2VsLmNsdWI+Ci1EYXRlOiBUaHUsIDIwIEFwciAyMDE3IDEwOjM0OjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBhYzogZml4IGJ1aWxkIGFmdGVyIExMVk0gNS4wIFNWTiByMzAwNzE4Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLXYyOiBwcmV2aW91c2x5IGdldFdpdGhEZXJlZmVyZW5jZWFibGVCeXRlcygpIGV4aXN0cywgYnV0IGFkZEF0dHIoKSBkb2Vzbid0IHRha2UgdGhhdCB0eXBlCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waCBIYWFnIDxoYWFnY2grbWVzYWRldkBmcmlja2VsLmNsdWI+Ci1SZXZpZXdlZC1ieTogTmljb2xhaSBIw6RobmxlIDxuaWNvbGFpLmhhZWhubGVAYW1kLmNvbT4KLVRlc3RlZC1hbmQtcmV2aWV3ZWQtYnk6IE1pa2UgTG90aGlhbiA8bWlrZUBmaXJlYnVybi5jby51az4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gc3JjL2FtZC9jb21tb24vYWNfbGx2bV9oZWxwZXIuY3BwIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FtZC9jb21tb24vYWNfbGx2bV9oZWxwZXIuY3BwIGIvc3JjL2FtZC9jb21tb24vYWNfbGx2bV9oZWxwZXIuY3BwCi1pbmRleCBkOWVhNGIxLi4xMWZhODA5IDEwMDY0NAotLS0tIGEvc3JjL2FtZC9jb21tb24vYWNfbGx2bV9oZWxwZXIuY3BwCi0rKysgYi9zcmMvYW1kL2NvbW1vbi9hY19sbHZtX2hlbHBlci5jcHAKLUBAIC00NCw5ICs0NCwxMyBAQCB0eXBlZGVmIEF0dHJpYnV0ZVNldCBBdHRyaWJ1dGVMaXN0OwotIHZvaWQgYWNfYWRkX2F0dHJfZGVyZWZlcmVuY2VhYmxlKExMVk1WYWx1ZVJlZiB2YWwsIHVpbnQ2NF90IGJ5dGVzKQotIHsKLSAgICBsbHZtOjpBcmd1bWVudCAqQSA9IGxsdm06OnVud3JhcDxsbHZtOjpBcmd1bWVudD4odmFsKTsKLSsjaWYgSEFWRV9MTFZNIDwgMHgwNTAwCi0gICAgbGx2bTo6QXR0ckJ1aWxkZXIgQjsKLSAgICBCLmFkZERlcmVmZXJlbmNlYWJsZUF0dHIoYnl0ZXMpOwotICAgIEEtPmFkZEF0dHIobGx2bTo6QXR0cmlidXRlTGlzdDo6Z2V0KEEtPmdldENvbnRleHQoKSwgQS0+Z2V0QXJnTm8oKSArIDEsICBCKSk7Ci0rI2Vsc2UKLSsgICBBLT5hZGRBdHRyKGxsdm06OkF0dHJpYnV0ZTo6Z2V0V2l0aERlcmVmZXJlbmNlYWJsZUJ5dGVzKEEtPmdldENvbnRleHQoKSwgYnl0ZXMpKTsKLSsjZW5kaWYKLSB9Ci0gCi0gYm9vbCBhY19pc19zZ3ByX3BhcmFtKExMVk1WYWx1ZVJlZiBhcmcpCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1BbHdheXMtY2hlY2stZm9yLWV4cGF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzUzYzQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1BbHdheXMtY2hlY2stZm9yLWV4cGF0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAxZjdkNzUyMTkzZjAyZDE1ZDU5MjNjZWU5OTJlOGY0NmQ0YzZkZjFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjggQXVnIDIwMTcgMTM6NTE6NDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBBbHdheXMgY2hlY2sgZm9yIGV4cGF0Ci0KLWV4cGF0IHdhcyBub3QgY2hlY2tlZCBpZiBkcmkgd2FzIG5vdCBidWlsdCBsZWFkaW5nIHRvIGJ1aWxkIGZhaWx1cmUKLWluIHZ1bGthbiBkcml2ZXI6IGJhY2twb3J0IGEgZml4IChhIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIGNvbW1pdHMKLXRoYXQgc2hvdWxkIGVuZCB1cCBpbiAxNy4zKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDE1ICsrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGZkMzQ2YzhhYTIuLjY2MmZhZWNlZmEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE3NzcsNiArMTc3NywxMiBAQCBpZiB0ZXN0ICJ4JHdpdGhfZHJpX2RyaXZlcnMiID0geG5vOyB0aGVuCi0gICAgIHdpdGhfZHJpX2RyaXZlcnM9JycKLSBmaQotIAotKyMgQ2hlY2sgZm9yIGV4cGF0Ci0rUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhbRVhQQVRdLCBbZXhwYXRdLCwKLSsgICAgW1BLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdDIxXSldCi0rKQotKwotIGRubCBJZiAkd2l0aF9kcmlfZHJpdmVycyBpcyB5ZXMsIGRyaXZlcnMgd2lsbCBiZSBhZGRlZCB0aHJvdWdoCi0gZG5sIHBsYXRmb3JtIGNoZWNrcy4gU2V0IERFRklORVMgYW5kIExJQl9ERVBTCi0gaWYgdGVzdCAieCRlbmFibGVfZHJpIiA9IHh5ZXM7IHRoZW4KLUBAIC0xODEwLDE1ICsxODE2LDYgQEAgaWYgdGVzdCAieCRlbmFibGVfZHJpIiA9IHh5ZXM7IHRoZW4KLSAgICAgICAgIHdpdGhfZHJpX2RyaXZlcnM9Imk5MTUgaTk2NSBub3V2ZWF1IHIyMDAgcmFkZW9uIHN3cmFzdCIKLSAgICAgZmkKLSAKLS0gICAgIyBDaGVjayBmb3IgZXhwYXQKLS0gICAgUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSwgW10sCi0tICAgICAgICAjIGV4cGF0IHZlcnNpb24gMi4wIGFuZCBlYXJsaWVyIGRvIG5vdCBwcm92aWRlIGV4cGF0LnBjCi0tICAgICAgICBbQUNfQ0hFQ0tfSEVBREVSKFtleHBhdC5oXSxbXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbRXhwYXQgaGVhZGVycyByZXF1aXJlZCBmb3IgRFJJIG5vdCBmb3VuZF0pXSkKLS0gICAgICAgICBBQ19DSEVDS19MSUIoW2V4cGF0XSxbWE1MX1BhcnNlckNyZWF0ZV0sW10sCi0tICAgICAgICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbRXhwYXQgbGlicmFyeSByZXF1aXJlZCBmb3IgRFJJIG5vdCBmb3VuZF0pXSkKLS0gICAgICAgICBFWFBBVF9MSUJTPSItbGV4cGF0Il0pCi0tCi0gICAgICMgcHV0IGFsbCB0aGUgbmVjZXNzYXJ5IGxpYnMgdG9nZXRoZXIKLSAgICAgRFJJX0xJQl9ERVBTPSIkRFJJX0xJQl9ERVBTICRTRUxJTlVYX0xJQlMgJExJQkRSTV9MSUJTICRFWFBBVF9MSUJTIC1sbSAkUFRIUkVBRF9MSUJTICRETE9QRU5fTElCUyIKLSBmaQotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtc3QtZHJpLUluaXRpYWxpc2UtbW9kaWZpZXItdG8tSU5WQUxJRC1mb3ItRFJJMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFiYTc4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA0Y2JlY2I2MTY4MmEwZWU0MjZmYWFhMDNkODI0ZmM4ZmQ3YWVmODI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFuaWVsIFN0b25lIDxkYW5pZWxzQGNvbGxhYm9yYS5jb20+CitEYXRlOiBNb24sIDIgQXByIDIwMTggMTM6MjA6MzQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3QvZHJpOiBJbml0aWFsaXNlIG1vZGlmaWVyIHRvIElOVkFMSUQgZm9yIERSSTIKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworV2hlbiBhbGxvY2F0aW5nIGEgYnVmZmVyIGZvciBEUkkyLCBzZXQgdGhlIG1vZGlmaWVyIHRvIElOVkFMSUQgdG8gaW5mb3JtCit0aGUgYmFja2VuZCB0aGF0IHdlIGhhdmUgbm8gc3VwcGxpZWQgbW9kaWZpZXJzIGFuZCBpdCBzaG91bGQgZG8gaXRzIG93bgordGhpbmcuIFRoZSBtaXNzZWQgaW5pdGlhbGlzYXRpb24gZm9yY2VkIGxpbmVhciwgZXZlbiBpZiB0aGUKK2ltcGxlbWVudGF0aW9uIGhhZCBtYWRlIG90aGVyIGRlY2lzaW9ucy4KKworVGhpcyByZXN1bHRlZCBpbiBWQzQgRFJJMiBjbGllbnRzIGZhaWxpbmcgd2l0aDoKKyAgTW9kaWZpZXIgMHgwIHZzLiB0aWxpbmcgKDB4NzAwMDAwMDAwMDAwMDAxKSBtaXNtYXRjaAorCitTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNvbT4KK1JlcG9ydGVkLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorUmV2aWV3ZWQtYnk6IEVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+CitGaXhlczogM2Y4NTEzMTcyZmY2ICgiZ2FsbGl1bS93aW5zeXMvZHJtOiBpbnRyb2R1Y2UgbW9kaWZpZXIgZmllbGQgdG8gd2luc3lzX2hhbmRsZSIpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzFdCisKK1sxXSBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9jb21taXQvP2lkPTRjYmVjYjYxNjgyYTBlZTQyNmZhYWEwM2Q4MjRmYzhmZDdhZWY4MjYKKy0tLQorIHNyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMgYi9zcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jCitpbmRleCAzMWQxN2Q0NmMyLi41OGE2NzU3ZjAzIDEwMDY0NAorLS0tIGEvc3JjL2dhbGxpdW0vc3RhdGVfdHJhY2tlcnMvZHJpL2RyaTIuYworKysrIGIvc3JjL2dhbGxpdW0vc3RhdGVfdHJhY2tlcnMvZHJpL2RyaTIuYworQEAgLTgwNiw2ICs4MDYsNyBAQCBkcmkyX2FsbG9jYXRlX3RleHR1cmVzKHN0cnVjdCBkcmlfY29udGV4dCAqY3R4LAorICAgICAgICAgIHdoYW5kbGUuaGFuZGxlID0gYnVmLT5uYW1lOworICAgICAgICAgIHdoYW5kbGUuc3RyaWRlID0gYnVmLT5waXRjaDsKKyAgICAgICAgICB3aGFuZGxlLm9mZnNldCA9IDA7CisrICAgICAgICAgd2hhbmRsZS5tb2RpZmllciA9IERSTV9GT1JNQVRfTU9EX0lOVkFMSUQ7CisgICAgICAgICAgaWYgKHNjcmVlbi0+Y2FuX3NoYXJlX2J1ZmZlcikKKyAgICAgICAgICAgICB3aGFuZGxlLnR5cGUgPSBEUk1fQVBJX0hBTkRMRV9UWVBFX1NIQVJFRDsKKyAgICAgICAgICBlbHNlCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1nYWxsaXZtLUZpeC1idWlsZC1hZ2FpbnN0LUxMVk0tU1ZOLXIzMDI1ODkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1nYWxsaXZtLUZpeC1idWlsZC1hZ2FpbnN0LUxMVk0tU1ZOLXIzMDI1ODkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjOGNhZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSBhMDJhMGRmZGEyNzEyZDMwYWQ2MmI4ZjA0MjFlYzdiODI0NGJhMmNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP01pY2hlbD0yMEQ9QzM9QTRuemVyPz0gPG1pY2hlbC5kYWVuemVyQGFtZC5jb20+Ci1EYXRlOiBXZWQsIDEwIE1heSAyMDE3IDE3OjI2OjA3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBnYWxsaXZtOiBGaXggYnVpbGQgYWdhaW5zdCBMTFZNIFNWTiA+PSByMzAyNTg5Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWRlcmVnaXN0ZXJFSEZyYW1lcyBkb2Vzbid0IHRha2UgYW55IHBhcmFtZXRlcnMgYW55bW9yZS4KLQotUmV2aWV3ZWQtYnk6IFZlZHJhbiBNaWxldGnEhyA8dmVkcmFuQG1pbGV0aWMubmV0PgotUmV2aWV3ZWQtYnk6IE1hcmVrIE9sxaHDoWsgPG1hcmVrLm9sc2FrQGFtZC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIHNyYy9nYWxsaXVtL2F1eGlsaWFyeS9nYWxsaXZtL2xwX2JsZF9taXNjLmNwcCB8IDEyICsrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAgYi9zcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAKLWluZGV4IDJhMzg4Y2IuLjBlNGE1MzEgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAKLSsrKyBiL3NyYy9nYWxsaXVtL2F1eGlsaWFyeS9nYWxsaXZtL2xwX2JsZF9taXNjLmNwcAotQEAgLTM0MiwxNCArMzQyLDIwIEBAIGNsYXNzIERlbGVnYXRpbmdKSVRNZW1vcnlNYW5hZ2VyIDogcHVibGljIEJhc2VNZW1vcnlNYW5hZ2VyIHsKLSAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFSEZyYW1lcyh1aW50OF90ICpBZGRyLCB1aW50NjRfdCBMb2FkQWRkciwgc2l6ZV90IFNpemUpIHsKLSAgICAgICAgICBtZ3IoKS0+cmVnaXN0ZXJFSEZyYW1lcyhBZGRyLCBMb2FkQWRkciwgU2l6ZSk7Ci0gICAgICAgfQotLSAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7Ci0tICAgICAgICAgbWdyKCktPmRlcmVnaXN0ZXJFSEZyYW1lcyhBZGRyLCBMb2FkQWRkciwgU2l6ZSk7Ci0tICAgICAgfQotICNlbHNlCi0gICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRUhGcmFtZXMobGx2bTo6U3RyaW5nUmVmIFNlY3Rpb25EYXRhKSB7Ci0gICAgICAgICAgbWdyKCktPnJlZ2lzdGVyRUhGcmFtZXMoU2VjdGlvbkRhdGEpOwotICAgICAgIH0KLSAjZW5kaWYKLSsjaWYgSEFWRV9MTFZNID49IDB4MDUwMAotKyAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZ2lzdGVyRUhGcmFtZXMoKSB7Ci0rICAgICAgICAgbWdyKCktPmRlcmVnaXN0ZXJFSEZyYW1lcygpOwotKyAgICAgIH0KLSsjZWxpZiBIQVZFX0xMVk0gPj0gMHgwMzA0Ci0rICAgICAgdmlydHVhbCB2b2lkIGRlcmVnaXN0ZXJFSEZyYW1lcyh1aW50OF90ICpBZGRyLCB1aW50NjRfdCBMb2FkQWRkciwgc2l6ZV90IFNpemUpIHsKLSsgICAgICAgICBtZ3IoKS0+ZGVyZWdpc3RlckVIRnJhbWVzKEFkZHIsIExvYWRBZGRyLCBTaXplKTsKLSsgICAgICB9Ci0rI2VuZGlmCi0gICAgICAgdmlydHVhbCB2b2lkICpnZXRQb2ludGVyVG9OYW1lZEZ1bmN0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEFib3J0T25GYWlsdXJlPXRydWUpIHsKLSAgICAgICAgICByZXR1cm4gbWdyKCktPmdldFBvaW50ZXJUb05hbWVkRnVuY3Rpb24oTmFtZSwgQWJvcnRPbkZhaWx1cmUpOwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL1VzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL1VzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNGFhYmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAxOGMzZTY4NGE4MjU5YTA2NDQyMTRmODhjN2VhZDdmYTMxNTczZmQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMTA6Mjc6NTkgLTAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIFB5dGhvbiAzIHRvIGV4ZWN1dGUgdGhlIHNjcmlwdHMKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK1RoZSBNRVNBIGJ1aWxkIHN5c3RlbSB1c2VzIFB5dGhvbiAyIGJ1dCBhcyBPRS1Db3JlIGhhcyBtb3ZlZCBhd2F5IGZyb20KK2l0LCB3ZSBjaGFuZ2UgaXQgdG8gdXNlIFB5dGhvbiAzIGluc3RlYWQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIGNvbmZpZ3VyYXRpb24gXQorCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiMTA3ZjA0YzJlLi4wNTU1NDYxNDJkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMTQsNyArMTE0LDcgQEAgQUNfUFJPR19DWFgKKyBBTV9QUk9HX0NDX0NfTworIEFNX1BST0dfQVMKKyBBWF9DSEVDS19HTlVfTUFLRQorLUFDX0NIRUNLX1BST0dTKFtQWVRIT04yXSwgW3B5dGhvbjIuNyBweXRob24yIHB5dGhvbl0pCisrQUNfQ0hFQ0tfUFJPR1MoW1BZVEhPTjJdLCBbcHl0aG9uMy41IHB5dGhvbjMgcHl0aG9uXSkKKyBBQ19QUk9HX1NFRAorIEFDX1BST0dfTUtESVJfUAorIAorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaAppbmRleCBhYTMzYTFlLi5mZDc5OTkxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaApAQCAtMSwxOCArMSwyNCBAQAotV2hlbiBidWlsZGluZyBsbHZtIGZyb20gZ2l0IG9yIHN2biBpdCBlbWJlZHMgdGhlIHN2bi9naXQgcmV2aXNpb24gaW50byBpbnRlcm5hbCB2ZXJzaW9uIHN0cmluZworRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KK1N1YmplY3Q6IFtQQVRDSF0gUHJvcGVybHkgZ2V0IExMVk0gdmVyc2lvbiB3aGVuIHVzaW5nIExMVk0gR2l0IHJlbGVhc2VzCiAKLSQgL21udC9hL29lL2J1aWxkL3RtcC93b3JrL2NvcmVpNy02NC1iZWMtbGludXgvbWVzYS8yXzE3LjEuNS1yMC9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xsdm01LjAvbGx2bS1jb25maWctaG9zdCAtLXZlcnNpb24KKyQgbGx2bS1jb25maWctaG9zdCAtLXZlcnNpb24KIDUuMC4wZ2l0LTlhNWMzMzMzODhjCiAKLVdlIG5lZWQgdG8gaWdub3JlIGV2ZXJ5dGhpbmcgYWZ0ZXIgNS4wLjAgd2hpY2ggaXMgd2hhdCB0aGUgY3V0IGNtZCBpcyBkb2luZworV2UgbmVlZCB0byBpZ25vcmUgZXZlcnl0aGluZyBhZnRlciA1LjAuMCB3aGljaCBpcyB3aGF0IHRoZSBjdXQgY21kIGlzCitkb2luZwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgY29uZmlndXJlLmFjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IG1lc2EtMTcuMS41L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1lc2EtMTcuMS41Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgbWVzYS0xNy4xLjUvY29uZmlndXJlLmFjCi1AQCAtOTY3LDcgKzk2Nyw3IEBAIHN0cmlwX3Vud2FudGVkX2xsdm1fZmxhZ3MoKSB7CitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhMDIxNzNmMjQ0Li5iMTA3ZjA0YzJlIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05OTUsNyArOTk1LDcgQEAgc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncygpIHsKICAKICBsbHZtX3NldF9lbnZpcm9ubWVudF92YXJpYWJsZXMoKSB7CiAgICAgIGlmIHRlc3QgIngkTExWTV9DT05GSUciICE9IHhubzsgdGhlbgpAQCAtMjEsMTIgKzI3LDE1IEBACiAgICAgICAgICBMTFZNX0NQUEZMQUdTPWBzdHJpcF91bndhbnRlZF9sbHZtX2ZsYWdzICIkTExWTV9DT05GSUcgLS1jcHBmbGFncyJgCiAgICAgICAgICBMTFZNX0lOQ0xVREVESVI9YCRMTFZNX0NPTkZJRyAtLWluY2x1ZGVkaXJgCiAgICAgICAgICBMTFZNX0xJQkRJUj1gJExMVk1fQ09ORklHIC0tbGliZGlyYAotQEAgLTI1NjAsNyArMjU2MCw3IEBAIGlmIHRlc3QgIngkZW5hYmxlX2xsdm0iID0geHllczsgdGhlbgorQEAgLTI2NDQsNyArMjY0NCw3IEBAIGRldGVjdF9vbGRfYnVnZ3lfbGx2bSgpIHsKKyAgICAgZG5sIG91cnNlbHZlcy4KICAgICAgZG5sIChTZWUgaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD02ODIzKQotICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9sbHZtX3NoYXJlZF9saWJzIiA9IHh5ZXM7IHRoZW4KLSAgICAgICAgIGRubCBXZSBjYW4ndCB1c2UgJExMVk1fVkVSU0lPTiBiZWNhdXNlIGl0IGhhcyAnc3ZuJyBzdHJpcHBlZCBvdXQsCi0tICAgICAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbmAKLSsgICAgICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9ufGN1dCAtYzEtNWAKLSAgICAgICAgIEFTX0lGKFt0ZXN0IC1mICIkTExWTV9MSUJESVIvbGliJExMVk1fU09fTkFNRS4kSU1QX0xJQl9FWFQiXSwgW2xsdm1faGF2ZV9vbmVfc289eWVzXSkKKyAgICAgZG5sIFdlIGNhbid0IHVzZSAkTExWTV9WRVJTSU9OIGJlY2F1c2UgaXQgaGFzICdzdm4nIHN0cmlwcGVkIG91dCwKKy0gICAgTExWTV9TT19OQU1FPUxMVk0tYCRMTFZNX0NPTkZJRyAtLXZlcnNpb25gCisrICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgY3V0IC1jMS01YAorICAgICBBU19JRihbdGVzdCAtZiAiJExMVk1fTElCRElSL2xpYiRMTFZNX1NPX05BTUUuJElNUF9MSUJfRVhUIl0sIFtsbHZtX2hhdmVfb25lX3NvPXllc10pCiAgCi0gICAgICAgICBpZiB0ZXN0ICJ4JGxsdm1faGF2ZV9vbmVfc28iID0geHllczsgdGhlbgorICAgICBpZiB0ZXN0ICJ4JGxsdm1faGF2ZV9vbmVfc28iID0geHllczsgdGhlbgorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9yZXBsYWNlX2dsaWJjX2NoZWNrX3dpdGhfbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyODBlZTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWVuZGlhbm5lc3MgY2hlY2sgaXMgT1Mgd2lkZSBhbmQgbm90IHNwZWNpZmljIHRvIGxpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gc3JjL3V0aWwvdV9lbmRpYW4uaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy91dGlsL3VfZW5kaWFuLmggYi9zcmMvdXRpbC91X2VuZGlhbi5oCi1pbmRleCBiOWQ1NjNkLi4yZDVlYWI5IDEwMDY0NAotLS0tIGEvc3JjL3V0aWwvdV9lbmRpYW4uaAotKysrIGIvc3JjL3V0aWwvdV9lbmRpYW4uaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaWZuZGVmIFVfRU5ESUFOX0gKLSAjZGVmaW5lIFVfRU5ESUFOX0gKLSAKLS0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoQU5EUk9JRCkKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pCi0gI2luY2x1ZGUgPGVuZGlhbi5oPgotIAotICNpZiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy92dWxrYW4tbWtkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWVlNWVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy92dWxrYW4tbWtkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBjNzg5NzlmZDk1YTFjNGY3MzJmN2U2ZWRmMGYzMmM1MjRlNTk1NWI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTc6MTA6MDcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbTogY3JlYXRlIHRhcmdldCBkaXJlY3RvcmllcyB3aGVuCi0gcmVxdWlyZWQKLQotSW4gb3V0LW9mLXRyZWUgYnVpbGRzIHNyYy9pbnRlbC92dWxrYW4gd29uJ3QgZXhpc3QsIHNvIGFsd2F5cyBjcmVhdGUgaXQgYmVmb3JlCi13cml0aW5nIGludG8gaXQuCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBzcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0gYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCi1pbmRleCAzODU3YTVkYzYyLi4yNmU5Y2Q0MTBjIDEwMDY0NAotLS0tIGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQotKysrIGIvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQotQEAgLTQ0LDExICs0NCwxMyBAQCBFWFRSQV9ESVNUICs9IFwKLSAJdnVsa2FuL1RPRE8KLSAKLSB2dWxrYW4vZGV2X2ljZC5qc29uIDogdnVsa2FuL2Rldl9pY2QuanNvbi5pbgotKwkkKE1LRElSX0dFTikKLSAJJChBTV9WX0dFTikgJChTRUQpIFwKLSAJCS1lICJzI0BidWlsZF9saWJkaXJAIyR7YWJzX3RvcF9idWlsZGRpcn0vJHtMSUJfRElSfSMiIFwKLSAJCTwgJChzcmNkaXIpL3Z1bGthbi9kZXZfaWNkLmpzb24uaW4gPiAkQAotIAotIHZ1bGthbi9pbnRlbF9pY2QuQGhvc3RfY3B1QC5qc29uIDogdnVsa2FuL2ludGVsX2ljZC5qc29uLmluCi0rCSQoTUtESVJfR0VOKQotIAkkKEFNX1ZfR0VOKSAkKFNFRCkgXAotIAkJLWUgInMjQGluc3RhbGxfbGliZGlyQCMke2xpYmRpcn0jIiBcCi0gCQk8ICQoc3JjZGlyKS92dWxrYW4vaW50ZWxfaWNkLmpzb24uaW4gPiAkQAotLS0gCi0yLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjMuOC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMS43LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4zLjguYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwppbmRleCA0ZjMxZWQyLi5iNTAxYjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCkBAIC0xNiw5ICsxNiwxNSBAQAogCiBERVBFTkRTID0gImV4cGF0IG1ha2VkZXBlbmQtbmF0aXZlIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSB6bGliIGNocnBhdGgtcmVwbGFjZW1lbnQtbmF0aXZlIgogRVhUUkFOQVRJVkVQQVRIICs9ICJjaHJwYXRoLW5hdGl2ZSIKLVBST1ZJREVTID0gInZpcnR1YWwvbGliZ2wgdmlydHVhbC9saWJnbGVzMSB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIHZpcnR1YWwvbWVzYSIKK1BST1ZJREVTID0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnb3BlbmdsJywgJ3ZpcnR1YWwvbGliZ2wnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnbGVzJywgJ3ZpcnR1YWwvbGliZ2xlczEgdmlydHVhbC9saWJnbGVzMicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd2aXJ0dWFsL2VnbCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dibScsICd2aXJ0dWFsL2xpYmdibScsICcnLCBkKX0gXAorICAgIHZpcnR1YWwvbWVzYSBcCisgICAgIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiAKIEFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIHZ1bGthbiIKIApAQCAtMzQsNyArNDAsNyBAQAogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB2dWxrYW4nLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ29wZW5nbCBlZ2wgZ2xlcyBnYm0gZHJpJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ3gxMScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEgZHJpMycsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHZ1bGthbicsICdkcmkzJywgJycsIGQpfSBcCiAJCSAgICIKIApAQCAtNDUsNyArNTEsNyBAQAogIyAieDExIiByZXF1aXJlcyAib3BlbmdsIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLWdseC10bHMsLS1kaXNhYmxlLWdseCwke1gxMV9ERVBTfSIKIFBBQ0tBR0VDT05GSUdbeHZtY10gPSAiLS1lbmFibGUteHZtYywtLWRpc2FibGUteHZtYyxsaWJ4dm1jIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICIsLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgbGliZHJtIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICIsLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgbGliZHJtIHdheWxhbmQtcHJvdG9jb2xzIgogCiBEUklEUklWRVJTID0gInN3cmFzdCIKIERSSURSSVZFUlNfYXBwZW5kX3g4NiA9ICIscmFkZW9uLHIyMDAsbm91dmVhdSxpOTY1LGk5MTUiCkBAIC01OSw3ICs2NSw3IEBACiBWVUxLQU5fRFJJVkVSUyA9ICIiCiBWVUxLQU5fRFJJVkVSU19hcHBlbmRfeDg2ID0gIixpbnRlbCIKIFZVTEtBTl9EUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiLGludGVsIgotUEFDS0FHRUNPTkZJR1t2dWxrYW5dID0gIi0td2l0aC12dWxrYW4tZHJpdmVycz0ke1ZVTEtBTl9EUklWRVJTfSwgLS13aXRob3V0LXZ1bGthbi1kcml2ZXJzIgorUEFDS0FHRUNPTkZJR1t2dWxrYW5dID0gIi0td2l0aC12dWxrYW4tZHJpdmVycz0ke1ZVTEtBTl9EUklWRVJTfSwgLS13aXRob3V0LXZ1bGthbi1kcml2ZXJzLCBweXRob24zLW1ha28tbmF0aXZlIgogCiBQQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLS1lbmFibGUtb3BlbmdsLCAtLWRpc2FibGUtb3BlbmdsIgogCkBAIC03NywxMyArODMsMTMgQEAKIEdBTExJVU1EUklWRVJTX2FwcGVuZCA9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2lteCcsICcsaW14JywgJycsIGQpfSIKIEdBTExJVU1EUklWRVJTX0xMVk0zMyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyNjAwJywgJ3JhZGVvbnNpLHI2MDAnLCAnJywgZCl9IgogUEFDS0FHRUNPTkZJR1tyNjAwXSA9ICIiCi1HQUxMSVVNRFJJVkVSU19MTFZNMzNfRU5BQkxFRCA9ICIke0BiYXNlX3ZlcnNpb25fbGVzc19vcl9lcXVhbCgnTUVTQV9MTFZNX1JFTEVBU0UnLCAnMy4yJywgRmFsc2UsIGxlbignJHtHQUxMSVVNRFJJVkVSU19MTFZNMzN9JykgPiAwLCBkKX0iCitHQUxMSVVNRFJJVkVSU19MTFZNMzNfRU5BQkxFRCA9ICIke0BvZS51dGlscy52ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ01FU0FfTExWTV9SRUxFQVNFJywgJzMuMicsIEZhbHNlLCBsZW4oJyR7R0FMTElVTURSSVZFUlNfTExWTTMzfScpID4gMCwgZCl9IgogR0FMTElVTURSSVZFUlNfTExWTSA9ICJyMzAwLHN2Z2Esbm91dmVhdSR7QCcsJHtHQUxMSVVNRFJJVkVSU19MTFZNMzN9JyBpZiAke0dBTExJVU1EUklWRVJTX0xMVk0zM19FTkFCTEVEfSBlbHNlICcnfSIKIEdBTExJVU1EUklWRVJTX2FwcGVuZF94ODYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2FsbGl1bS1sbHZtJywgJywke0dBTExJVU1EUklWRVJTX0xMVk19JywgJycsIGQpfSIKIEdBTExJVU1EUklWRVJTX2FwcGVuZF94ODYtNjQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2FsbGl1bS1sbHZtJywgJywke0dBTExJVU1EUklWRVJTX0xMVk19JywgJycsIGQpfSIKICMga2VlcCAtLXdpdGgtZ2FsbGl1bS1kcml2ZXJzIHNlcGFyYXRlLCBiZWNhdXNlIHdoZW4gb25seSBvbmUgb2YgZ2FsbGl1bSB2ZXJzaW9ucyBpcyBlbmFibGVkLCBvdGhlciAyIHdlcmUgYWRkaW5nIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMKIFBBQ0tBR0VDT05GSUdbZ2FsbGl1bV0gICAgICA9ICItLWVuYWJsZS10ZXh0dXJlLWZsb2F0IC0td2l0aC1nYWxsaXVtLWRyaXZlcnM9JHtHQUxMSVVNRFJJVkVSU30sIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMiCi1NRVNBX0xMVk1fUkVMRUFTRSA/PSAiNS4wIgorTUVTQV9MTFZNX1JFTEVBU0UgPz0gIjYuMCIKIFBBQ0tBR0VDT05GSUdbZ2FsbGl1bS1sbHZtXSA9ICItLWVuYWJsZS1sbHZtIC0tZW5hYmxlLWxsdm0tc2hhcmVkLWxpYnMsIC0tZGlzYWJsZS1sbHZtLCBsbHZtJHtNRVNBX0xMVk1fUkVMRUFTRX0gbGx2bS1uYXRpdmUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7QCdlbGZ1dGlscycgaWYgJHtHQUxMSVVNRFJJVkVSU19MTFZNMzNfRU5BQkxFRH0gZWxzZSAnJ30iCiBleHBvcnQgV0FOVF9MTFZNX1JFTEVBU0UgPSAiJHtNRVNBX0xMVk1fUkVMRUFTRX0iCkBAIC05OSw5ICsxMDUsNiBAQAogCiBDRkxBR1NfYXBwZW5kX2FybXY1ID0gIiAtRE1JU1NJTkdfNjRCSVRfQVRPTUlDUyIKIAotIyBNdWx0aXBsZSB2aXJ0dWFsL2dsIHByb3ZpZGVycyBiZWluZyBidWlsdCBicmVha3Mgc3RhZ2luZwotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCi0KICMgUmVtb3ZlIHRoZSBtZXNhIGRlcGVuZGVuY3kgb24gbWVzYS1kZXYsIGFzIG1lc2EgaXMgZW1wdHkKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljZmNlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvbWVzYS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcmVwbGFjZV9nbGliY19jaGVja193aXRoX2xpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItaGFyZHdhcmUtZ2xvYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdnVsa2FuLW1rZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1nYWxsaXZtLUZpeC1idWlsZC1hZ2FpbnN0LUxMVk0tU1ZOLXIzMDI1ODkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BbHdheXMtY2hlY2stZm9yLWV4cGF0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlNDBiYjQyOGEyNjNiZDI4Y2JmNjQ3OGRhZTQ1YjIwNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OWY0NzJhODc0YjExMjI0MDRmYTBiZDEzZTJkNmJmODdlYjNiOWFkOWMyMWQyZjM5ODcyYTk2ZDgzZDllNWY1IgotCi0jYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKLSNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMy44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMy44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkM2ZkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4zLjguYmIKQEAgLTAsMCArMSwyMyBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2ggXAorCSAgIGZpbGU6Ly9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1oYXJkd2FyZS1nbG9hdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3QtZHJpLUluaXRpYWxpc2UtbW9kaWZpZXItdG8tSU5WQUxJRC1mb3ItRFJJMi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjIwM2QxYTc5MTU2YWI2OTI2ZjJkMjUzYjM3N2U5ZDlkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmOWQ5YmYyODFjNDhlNGE4ZjUyMjg4MTY1NzcyNjNiNGM2NTUyNDhkYzc2NjZlNzUwMzRhYjQyMjk1MWE2YjEiCisKKyNiZWNhdXNlIHdlIGNhbm5vdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYWxsIGFwcHMgd2lsbCB1c2UgcGtnY29uZmlnLAorI21ha2UgZWdscGxhdGZvcm0uaCBpbmRlcGVuZGVudCBvZiBNRVNBX0VHTF9OT19YMTFfSEVBREVSCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBzZWQgLWkgLWUgJ3MvXiNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSQvI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAorICAgIGZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoCmluZGV4IDgxMmRhMjEuLjllMTYyNmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoCkBAIC02LDcgKzYsNyBAQAogVGhleSB0YWtlIHByZWNlbmRlbmNlIG92ZXIgb3VyIGN1c3RvbWl6ZWQgbWFjcm9zLCBhbmQgc28KIGludHJvc3BlY3Rpb24gZG9lc24ndCB3b3JrIGNvcnJlY3RseS4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbdXBzdHJlYW0gNWNjZmUwXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBhY2luY2x1ZGUubTQgfCA5NiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExOCw0ICsxMTgsMyBAQAogLV0pCiAtLSAKIDIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmQ5YzY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjE0LmJiCkBAIC0wLDAgKzEsNTAgQEAKK1NVTU1BUlkgPSAiRnJhbWV3b3JrIGZvciBsYXlvdXQgYW5kIHJlbmRlcmluZyBvZiBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IgorREVTQ1JJUFRJT04gPSAiUGFuZ28gaXMgYSBsaWJyYXJ5IGZvciBsYXlpbmcgb3V0IGFuZCByZW5kZXJpbmcgb2YgdGV4dCwgXAord2l0aCBhbiBlbXBoYXNpcyBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbi4gUGFuZ28gY2FuIGJlIHVzZWQgYW55d2hlcmUgXAordGhhdCB0ZXh0IGxheW91dCBpcyBuZWVkZWQsIHRob3VnaCBtb3N0IG9mIHRoZSB3b3JrIG9uIFBhbmdvIHNvIGZhciBoYXMgXAorYmVlbiBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBHVEsrIHdpZGdldCB0b29sa2l0LiBQYW5nbyBmb3JtcyB0aGUgXAorY29yZSBvZiB0ZXh0IGFuZCBmb250IGhhbmRsaW5nIGZvciBHVEsrLTIueC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhbmdvLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtZnJvbS1hY2luY2x1ZGUubTQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtRW5mb3JjZS1yZWNyZWF0aW9uLW9mLWRvY3MtcGFuZ28udHlwZXMtaXQtaXMtYnVpbGQtYy5wYXRjaCBcCisiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIxOGQ3ZWI4ZDUyZTdlNDQ1ZTczM2MxMDlkZGFhN2I3OCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjkwYWYxYmVhYTdiZjllNGM1MmRiMjllYzI1MWVjNGZkMGE4ZjJjYzE4NWQ1MjFhZDFmODhkMDFiM2E2YTE3ZTMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteGZ0LC0td2l0aG91dC14ZnQsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKwkgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyBcCisJICAgICAgICAiCisKK0xFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCitMSUJWID0gIjEuOC4wIgorCisjIFRoaXMgYmluYXJ5IG5lZWRzIHRvIGJlIGNvbXBpbGVkIGZvciB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuICBUaGlzIGlzbid0IHByZXR0eSEKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQltYWtlIENDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIiIExERkxBR1M9IiR7QlVJTERfTERGTEFHU30iIEFNX0NQUEZMQUdTPSIkKHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGdsaWItMi4wKSIgZ2VuX2FsbF91bmljb2RlX0xEQUREPSIkKHBrZy1jb25maWctbmF0aXZlIC0tbGlicyBnbGliLTIuMCkiIC1DICR7Qn0vdGVzdHMgZ2VuLWFsbC11bmljb2RlCisJZmkKK30KKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhbmdvLyR7TElCVn0vbW9kdWxlcy8qLmxhIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZXJhdGlvbi1mb250cyBjYW50YXJlbGwtZm9udHMiCisKK1JQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCisgICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjM2QyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiRnJhbWV3b3JrIGZvciBsYXlvdXQgYW5kIHJlbmRlcmluZyBvZiBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IgotREVTQ1JJUFRJT04gPSAiUGFuZ28gaXMgYSBsaWJyYXJ5IGZvciBsYXlpbmcgb3V0IGFuZCByZW5kZXJpbmcgb2YgdGV4dCwgXAotd2l0aCBhbiBlbXBoYXNpcyBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbi4gUGFuZ28gY2FuIGJlIHVzZWQgYW55d2hlcmUgXAotdGhhdCB0ZXh0IGxheW91dCBpcyBuZWVkZWQsIHRob3VnaCBtb3N0IG9mIHRoZSB3b3JrIG9uIFBhbmdvIHNvIGZhciBoYXMgXAotYmVlbiBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBHVEsrIHdpZGdldCB0b29sa2l0LiBQYW5nbyBmb3JtcyB0aGUgXAotY29yZSBvZiB0ZXh0IGFuZCBmb250IGhhbmRsaW5nIGZvciBHVEsrLTIueC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhbmdvLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtZnJvbS1hY2luY2x1ZGUubTQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRW5mb3JjZS1yZWNyZWF0aW9uLW9mLWRvY3MtcGFuZ28udHlwZXMtaXQtaXMtYnVpbGQtYy5wYXRjaCBcCi0iCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1MDdjNjc0NmZiZjUzZmM5ZDQ4YzU3N2YxZTI2NWRlMyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImNhMTUyYjczODNhMWU5ZjdmZDc0YWU5NjAyM2RjNjc3MGRjNTA0MzQxNDc5M2JmZTc2OGZmMDZiNjc1OWU1NzMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteGZ0LC0td2l0aG91dC14ZnQsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgotCi1FWFRSQV9BVVRPUkVDT05GID0gIiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0JICAgICAgICAtLWRpc2FibGUtZGVidWcgXAotCSAgICAgICAgIgotCi1MRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgotTElCViA9ICIxLjguMCIKLQotIyBUaGlzIGJpbmFyeSBuZWVkcyB0byBiZSBjb21waWxlZCBmb3IgdGhlIGhvc3QgYXJjaGl0ZWN0dXJlLiAgVGhpcyBpc24ndCBwcmV0dHkhCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJbWFrZSBDQz0iJHtCVUlMRF9DQ30iIENGTEFHUz0iIiBMREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IiBBTV9DUFBGTEFHUz0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMCkiIGdlbl9hbGxfdW5pY29kZV9MREFERD0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjApIiAtQyAke0J9L3Rlc3RzIGdlbi1hbGwtdW5pY29kZQotCWZpCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9saWJwYW5nbyoke1NPTElCU30iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wYW5nby8ke0xJQlZ9L21vZHVsZXMvKi5sYSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmVyYXRpb24tZm9udHMgY2FudGFyZWxsLWZvbnRzIgotCi1SUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAotICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCmluZGV4IGQyNzRhOGYuLmI5MzZhZDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgpAQCAtNiwxMCArNiwxMCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1pbnN0YWxsLWJhc2gtY29tcGxldGlvbnMtaW4tdGhlLXJpZ2h0LXBsYWNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtVXNlLUZFX1VQV0FSRC1vbmx5LWlmLWl0cy1kZWZpbmVkLWluLWZlbnYuaC5wYXRjaCBcCiAgICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCi0jIEZyb20gMjAxNy0wNy0wMwotU1JDUkVWID0gImM4ZjRmZDllZWIyOThhMmVmMDg1NTkyN2YyMjYzNGY3OTRlZjNlZmYiCisjIEZyb20gMjAxOC0wMi0yNgorU1JDUkVWID0gIjRjZTA4ODdlMmY3Zjg0OGQyYmUyZTQzNWEyZDBmM2M4MGU0NGVhM2IiCiAjICh3aGVuIFBWIGdvZXMgYWJvdmUgMS4wIHJlbW92ZSB0aGUgdHJhaWxpbmcgcikKIFBWID0gIjEuMCtnaXRyJHtTUkNQVn0iCiAKQEAgLTQwLDE0ICs0MCwxMiBAQAogICAgZmkKIH0KIAotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0gJ0RFU1RESVI9JHtEfScgaW5zdGFsbC9zdHJpcAotfQorT0VDTUFLRV9UQVJHRVRfSU5TVEFMTCA9ICJpbnN0YWxsL3N0cmlwIgogCiBSREVQRU5EU18ke1BOfSA9ICJ3YWZmbGUgcHl0aG9uMyBweXRob24zLW1ha28gcHl0aG9uMy1qc29uIFwKLQlweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1taXNjIHB5dGhvbjMtaW1wb3J0bGliIFwKKwlweXRob24zLW1pc2MgXAogCXB5dGhvbjMtdW5peGFkbWluIHB5dGhvbjMteG1sIHB5dGhvbjMtbXVsdGlwcm9jZXNzaW5nIFwKLQlweXRob24zLXNpeCBweXRob24zLXNoZWxsIHB5dGhvbjMtaW8gcHl0aG9uMy1hcmdwYXJzZSBcCisJcHl0aG9uMy1zaXggcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIFwKIAlweXRob24zLW5ldHNlcnZlciBtZXNhLWRlbW9zIGJhc2ggXAogCSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy90dGYtYml0c3RyZWFtLXZlcmFfMS4xMC5iYgppbmRleCBiMmU0Y2VmLi43MGIzMmNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy90dGYtYml0c3RyZWFtLXZlcmFfMS4xMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy90dGYtYml0c3RyZWFtLXZlcmFfMS4xMC5iYgpAQCAtMTMsMjYgKzEzLDIwIEBACiAKIEZPTlRfUEFDS0FHRVMgPSAiJHtQTn0iCiAKLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L3R0Zi1iaXRzdHJlYW0tdmVyYS8xLjEwL3R0Zi1iaXRzdHJlYW0tdmVyYS0ke1BWfS50YXIuYnoyIiAKLQotZG9faW5zdGFsbCAoKSB7IAotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3ByZWZpeH0vc2hhcmUvZm9udHMvdHRmLyAKLSAgICAgICAgZm9yIGkgaW4gKi50dGY7IGRvIAotICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICRpICR7RH0ke3ByZWZpeH0vc2hhcmUvZm9udHMvdHRmLyR7aX0gCi0gICAgICAgIGRvbmUgCi0KLQkjIGZvbnRjb25maWcgc2hpcHMgdGhpcyB0b28uICBub3Qgc3VyZSB3aGF0IHRvIGRvIGFib3V0IGl0LgotICAgICAgICAjaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9mb250cyAKLSAgICAgICAgI2luc3RhbGwgLW0gNjQ0IGxvY2FsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMvbG9jYWwuY29uZiAKLQotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7cHJlZml4fS9zaGFyZS9kb2MvJHtCUE59LwotICAgICAgICBmb3IgaSBpbiAqLlRYVDsgZG8gCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJGkgJHtEfSR7cHJlZml4fS9zaGFyZS9kb2MvJHtCUE59LyRpCi0gICAgICAgIGRvbmUgCi19IAotCi1GSUxFU18ke1BOfSA9ICIvZXRjICR7ZGF0YWRpcn0vZm9udHMiCi0KK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L3R0Zi1iaXRzdHJlYW0tdmVyYS8xLjEwL3R0Zi1iaXRzdHJlYW0tdmVyYS0ke1BWfS50YXIuYnoyIgogU1JDX1VSSVttZDVzdW1dID0gImJiMjJiZDViNDY3NWY1ZGJlMTdjNjk2M2Q4YzAwZWQ2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiNWIyN2RmN2JiYjMxODAzNmViZGI3NWFjZDNlOThmMWJkNmViNjYwOGZiNzBhNjdkNDc4Y2QyNDNkMTc4ZGMiCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ZvbnRzL3R0ZgorICAgICAgICBmb3IgaSBpbiAqLnR0ZjsgZG8KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAkaSAke0R9JHtkYXRhZGlyfS9mb250cy90dGYKKyAgICAgICAgZG9uZQorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KKyAgICAgICAgZm9yIGkgaW4gKi5UWFQ7IGRvCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJGkgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KKyAgICAgICAgZG9uZQorfQorCitGSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L2ZvbnRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTk2YTRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCi0gICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKLQotU1JDUkVWID0gIjUyYzhkMDZmNWQ2NDk4YWZkNjZkZjk4M2RhMzQ4YTZiMTEyZjEzMTQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NGNiZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4xLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorREVTQ1JJUFRJT04gPSAiT3BlbiBBc3NldCBJbXBvcnQgTGlicmFyeSBpcyBhIHBvcnRhYmxlIE9wZW4gU291cmNlIGxpYnJhcnkgdG8gaW1wb3J0IFwKKyAgICAgICAgICAgICAgIHZhcmlvdXMgd2VsbC1rbm93biAzRCBtb2RlbCBmb3JtYXRzIGluIGEgdW5pZm9ybSBtYW5uZXIuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hc3NpbXAub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjExOWVkZWYwOTE2YjBiZDUxMWNiM2M3MzEwNzYyNzEiCisKK0RFUEVORFMgPSAiemxpYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Fzc2ltcC9hc3NpbXAuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPihcZCsoXC5cZCspKykpIgorCitTUkNSRVYgPSAiODA3OTliZGJmOTBjZTYyNjQ3NTYzNTgxNWVlMTg1Mzc3MThhMDViMSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFID0gIi1EQVNTSU1QX0JVSUxEX0FTU0lNUF9UT09MUz1PRkYgLURBU1NJTVBfQlVJTERfVEVTVFM9T0ZGIC1EQVNTSU1QX0xJQl9JTlNUQUxMX0RJUj0ke2Jhc2VsaWJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKaW5kZXggMGI4OTQzNS4uNWZjOWMyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoIFwKICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogU1JDUkVWID0gIjE4ZGYwMGM3YjQ2NzdiMDg4OTQ4NmUxNjk3Nzg1N2FhOTg3OTQ3ZTIiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJUaGVzZSBhcmUgbm90IHRoZSByZWxlYXNlcyB5b3UncmUgbG9va2luZyBmb3IiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoCmluZGV4IDNjZjI0MWQuLmJjZjg0YTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2gKQEAgLTExLDkgKzExLDExIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogCi0tLS0gYS9kZW1vcy9DTWFrZUxpc3RzLnR4dAotKysrIGIvZGVtb3MvQ01ha2VMaXN0cy50eHQKLUBAIC02MSw0NiArNjEsNiBAQAorSW5kZXg6IGdpdC9kZW1vcy9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2RlbW9zL0NNYWtlTGlzdHMudHh0CisrKysgZ2l0L2RlbW9zL0NNYWtlTGlzdHMudHh0CitAQCAtNjMsNDYgKzYzLDYgQEAgZWxzZWlmKFVOSVgpCiAgZWxzZSgpCiAgZW5kaWYoKQogIApAQCAtNjAsNyArNjIsNyBAQAogIAogIGlmKFdJTjMyKQogICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzICgKLUBAIC0xMTQsNDMgKzc0LDYgQEAKK0BAIC0xMTYsNDMgKzc2LDYgQEAgZW5kaWYoKQogIGFkZF9leGVjdXRhYmxlKCR7QVBJX0xPV0VSQ0FTRX1pbmZvIHZ1bGthbmluZm8uYykKICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtBUElfTE9XRVJDQVNFfWluZm8gJHtMSUJSQVJJRVN9KQogIApAQCAtMTAzLDQgKzEwNSw0IEBACiAtZW5kaWYoKQogIAogIGlmKFVOSVgpCi0gICAgIGluc3RhbGwoVEFSR0VUUyAke0FQSV9MT1dFUkNBU0V9aW5mbyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfSkKKyAgICAgaWYoSU5TVEFMTF9MVkxfRklMRVMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjUxLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjUxLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZTM5YmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC41MS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICIzRCBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgY29tbW9uIGxvYWRlciIKLURFU0NSSVBUSU9OID0gIlZ1bGthbiBpcyBhIG5ldyBnZW5lcmF0aW9uIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBcCi10aGF0IHByb3ZpZGVzIGVmZmljaWVudCBhY2Nlc3MgdG8gbW9kZXJuIEdQVXMuIFRoZXNlIHBhY2thZ2VzIFwKLXByb3ZpZGUgb25seSB0aGUgY29tbW9uIHZlbmRvci1hZ25vc3RpYyBsaWJyYXJ5IGxvYWRlciwgaGVhZGVycyBhbmQgXAotdGhlIHZ1bGthbmluZm8gdXRpbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OTljNjQ3Y2EzZDRmNmE0YjlkODYyOGY3NTdhYWQxNTYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbG9hZGVyL2xvYWRlci5jO2VuZGxpbmU9MjU7bWQ1PWE4N2NkNTQ0MjI5MWMyM2QxZmNlNGVlY2U0Y2ZkZTlkIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycy5naXQ7YnJhbmNoPXNkay0xLjAuNTEgXAotICAgICAgICAgICBmaWxlOi8vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2ggXAotIgotU1JDUkVWID0gIjhkMDIxZTRkNWE5ZjkxNDM2ZjQ0NjJkZjFkYWZiMjIyOTA4ZTI5NmQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAidnVsa2FuIgotCi1pbmhlcml0IGNtYWtlIHB5dGhvbjNuYXRpdmUgbGliX3BhY2thZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfV1NJX01JUl9TVVBQT1JUPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfTEFZRVJTPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIgotCi0jIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnICxkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OIC1EREVNT1NfV1NJX1NFTEVDVElPTj1YQ0IsIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGIC1EREVNT1NfV1NJX1NFTEVDVElPTj1XQVlMQU5ELCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJtZXNhLXZ1bGthbi1kcml2ZXJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC42NS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC42NS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOGE4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjY1LjIuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICIzRCBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgY29tbW9uIGxvYWRlciIKK0RFU0NSSVBUSU9OID0gIlZ1bGthbiBpcyBhIG5ldyBnZW5lcmF0aW9uIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBcCit0aGF0IHByb3ZpZGVzIGVmZmljaWVudCBhY2Nlc3MgdG8gbW9kZXJuIEdQVXMuIFRoZXNlIHBhY2thZ2VzIFwKK3Byb3ZpZGUgb25seSB0aGUgY29tbW9uIHZlbmRvci1hZ25vc3RpYyBsaWJyYXJ5IGxvYWRlciwgaGVhZGVycyBhbmQgXAordGhlIHZ1bGthbmluZm8gdXRpbGl0eS4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OTljNjQ3Y2EzZDRmNmE0YjlkODYyOGY3NTdhYWQxNTYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbG9hZGVyL2xvYWRlci5jO2VuZGxpbmU9MjU7bWQ1PWE4N2NkNTQ0MjI5MWMyM2QxZmNlNGVlY2U0Y2ZkZTlkIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycy5naXQ7YnJhbmNoPXNkay0xLjAuNjUgXAorICAgICAgICAgICBmaWxlOi8vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiNzM0ODZhMWExNjlkODYyZDUyMTBlMmFkNTIwZDk1MzE5YTIzODNmYSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCisKK2luaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBsaWJfcGFja2FnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCisKK0VYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9XU0lfTUlSX1NVUFBPUlQ9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9MQVlFUlM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYiCisKKyMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnICxkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycgLGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04gLURERU1PU19XU0lfU0VMRUNUSU9OPVhDQiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYgLURERU1PU19XU0lfU0VMRUNUSU9OPVdBWUxBTkQsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS41LjIuYmIKaW5kZXggYTUxNzlkYi4uNDNjM2VkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjUuMi5iYgpAQCAtMzUsNiArMzUsMyBAQAogCiAjIEkgc2F5IHZpcnR1YWwvbGliZ2wsIGFjdHVhbGx5IHdhbnRzIGVnbC5wYwogUEFDS0FHRUNPTkZJR1t4MTEtZWdsXSA9ICItRHdhZmZsZV9oYXNfeDExX2VnbD0xLC1Ed2FmZmxlX2hhc194MTFfZWdsPTAsdmlydHVhbC8ke01MUFJFRklYfWxpYmdsIGxpYnhjYiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMvRmluZFdhZmZsZS5jbWFrZSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jbWFrZS9XYWZmbGUvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0LzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY2NzUzOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gNWU4ODY0YzViN2EyZTI1OGVlYTA0MWIwZWY2NmRhYzdmY2FiOWI3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDkgQXVnIDIwMTcgMDk6NDc6MTQgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gdG9vbHM6IEZpeCByYWNlIGluIChhdXRvdG9vbHMpIGluc3RhbGwKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotZXhlYy9kYXRhIGRpc3RpbmN0aW9uIGlzIGRvbmUgYmFzZWQgb24gaW5zdGFsbCBkaXIgc28gY29tcGF0IHNjcmlwdHMKLW11c3QgYmUgbW92ZWQgaW4gZXhlYyBob29rLgotCi1UaGlzIHNob3VsZCBmaXggdGhpcyBvY2Nhc2lvbmFsIGZhaWx1cmU6Ci18wqBpbnN0YWxsOiBjYW5ub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mCi18wqDigJgvdXNyL2Jpbi9saWJpbnB1dC1kZWJ1Zy1ldmVudHMuY29tcGF04oCZOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotLS0tCi0gdG9vbHMvTWFrZWZpbGUuYW0gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5hbSBiL3Rvb2xzL01ha2VmaWxlLmFtCi1pbmRleCAyYzg2NjBiLi43ZWU4YjkwIDEwMDY0NAotLS0tIGEvdG9vbHMvTWFrZWZpbGUuYW0KLSsrKyBiL3Rvb2xzL01ha2VmaWxlLmFtCi1AQCAtNjMsNyArNjMsNyBAQCBlbmRpZgotIAotIEVYVFJBX0RJU1QgPSBtYWtlLXB0cmFjY2VsLWdyYXBocy5zaCBpbnN0YWxsLWNvbXBhdC1zY3JpcHRzLnNoICQoYmluX1NDUklQVFMpCi0gCi0taW5zdGFsbC1kYXRhLWhvb2s6Ci0raW5zdGFsbC1leGVjLWhvb2s6Ci0gCShjZCAkKERFU1RESVIpJChiaW5kaXIpICYmIG12IGxpYmlucHV0LWxpc3QtZGV2aWNlcy5jb21wYXQgbGliaW5wdXQtbGlzdC1kZXZpY2VzKQotIAkoY2QgJChERVNURElSKSQoYmluZGlyKSAmJiBtdiBsaWJpbnB1dC1kZWJ1Zy1ldmVudHMuY29tcGF0IGxpYmlucHV0LWRlYnVnLWV2ZW50cykKLSAKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIxYmFiZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxODRhZWYzOGZmMTM3ZWQzM2NlOWE2M2I5ZDFlYjhmIgotCi1ERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgyNDdmMGJiNjcwNTJmZmIyNzJjNTBjM2NiOWM1OTk4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzNTkwYTkwMzdlNTYxYTU3OTFjOGJkM2IzNGJmZDMwZmFkNWNhY2Q4Y2JlZmMwZDc1ZmFmZTNhNDFkMDcxNDciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCi1QQUNLQUdFQ09ORklHW2xpYndhY29tXSA9ICItLWVuYWJsZS1saWJ3YWNvbSwtLWRpc2FibGUtbGlid2Fjb20sbGlid2Fjb20iCi1QQUNLQUdFQ09ORklHW2d1aV0gPSAiLS1lbmFibGUtZGVidWctZ3VpLC0tZGlzYWJsZS1kZWJ1Zy1ndWksY2Fpcm8gZ3RrKzMiCi0KLVVERVZESVIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC11ZGV2LWRpcj0ke1VERVZESVJ9IC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS10ZXN0cyIKLQotIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCi1SUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCi1SUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTQ5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS45LjQuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmlucHV0LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMTg0YWVmMzhmZjEzN2VkMzNjZTlhNjNiOWQxZWI4ZiIKKworREVQRU5EUyA9ICJsaWJldmRldiB1ZGV2IG10ZGV2IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOGI0M2QwN2QxNjk4ZmIyMDdhMDQ5MmZjNjc1NTRkNGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGJjZGJkNGM0ZTNjMmEyZGIzMjJmYmRmMmVmMzI4NGYyZTZkNmZiN2JlM2FmODBlNmQ4ZGU3NzgzZjY3NTE5MCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliaW5wdXQtKD9QPHB2ZXI+XGQrXC5cZCtcLig/ITlcZCspXGQrKSIKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGxpYl9wYWNrYWdlCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xpYndhY29tXSA9ICItRGxpYndhY29tPXRydWUsLURsaWJ3YWNvbT1mYWxzZSxsaWJ3YWNvbSIKK1BBQ0tBR0VDT05GSUdbZ3VpXSA9ICItRGRlYnVnLWd1aT10cnVlLC1EZGVidWctZ3VpPWZhbHNlLGNhaXJvIGd0ayszIgorCitVREVWRElSID0gImBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YCIKKworRVhUUkFfT0VNRVNPTiArPSAiLUR1ZGV2LWRpcj0ke1VERVZESVJ9IC1EZG9jdW1lbnRhdGlvbj1mYWxzZSAtRHRlc3RzPWZhbHNlIgorCisjIHBhY2thZ2UgbmFtZSBjaGFuZ2VkIGluIDEuOC4xIHVwZ3JhZGU6IG1ha2Ugc3VyZSBwYWNrYWdlIHVwZ3JhZGVzIHdvcmsKK1JQUk9WSURFU18ke1BOfSA9ICJsaWJpbnB1dCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJpbnB1dCIKK1JDT05GTElDVFNfJHtQTn0gPSAibGliaW5wdXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjllOWYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCi1hdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCi1jb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCi1wcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKLXdheWxhbmQtcHJvdG9jb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODRhNzg0NmMyYjZhNmEzZTI2NWZjOWJlMzY0NTNlNjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTcxOWM1MWQ3MzU0ODY0OTgzMTcxYzUwODNlOTNhNzJhYzk5MjI5ZTJiNDYwYzRiYjEwNTEzZGUwODgzOWMwYSIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRVMgPSAiJHtQTn0iCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZjFlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMy5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBXYXlsYW5kIHByb3RvY29scyIKK0RFU0NSSVBUSU9OID0gIldheWxhbmQgcHJvdG9jb2xzIHRoYXQgYWRkIGZ1bmN0aW9uYWxpdHkgbm90IFwKK2F2YWlsYWJsZSBpbiB0aGUgV2F5bGFuZCBjb3JlIHByb3RvY29sLiBTdWNoIHByb3RvY29scyBlaXRoZXIgYWRkIFwKK2NvbXBsZXRlbHkgbmV3IGZ1bmN0aW9uYWxpdHksIG9yIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBzb21lIG90aGVyIFwKK3Byb3RvY29sIGVpdGhlciBpbiBXYXlsYW5kIGNvcmUsIG9yIHNvbWUgb3RoZXIgcHJvdG9jb2wgaW4gXAord2F5bGFuZC1wcm90b2NvbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jN2IxMmI2NzAyZGEzOGNhMDI4YWNlNTRhYWUzZDQ4NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdGFibGUvcHJlc2VudGF0aW9uLXRpbWUvcHJlc2VudGF0aW9uLXRpbWUueG1sO2VuZGxpbmU9MjY7bWQ1PTQ2NDZjZDdkOWVkYzlmYTU1ZGI5NDFmMmQzYTdkYzUzIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOTMxMjE0OWRhZmNkNGEwZTczOWJhOTQ5OTVhNTc0ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzU4YmM4MDA4ZDUzMzJmNDMxYjJhODRmZWE3ZGU2NGQ5NzFjZTI3MGVkMjA4MjA2YTA5OGZmMmViYzY4ZjM4IgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy93YXlsYW5kLXByb3RvY29scy5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMzUyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0ZpeCB3YXlsYW5kLWNsaWVudCBhbmQgd2F5bGFuZC1zY2FubmVyIHBjIGZpbGVzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBGYWJpZW4gTGFob3VkZXJlIDxmYWJpZW4ubGFob3VkZXJlQGNvbGxhYm9yYS5jby51az4KKworSW5kZXg6IHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdheWxhbmQtMS4xNC4wLm9yaWcvc3JjL3dheWxhbmQtY2xpZW50LnBjLmluCisrKysgd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtY2xpZW50LnBjLmluCitAQCAtMSw3ICsxLDcgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACisgZGF0YXJvb3RkaXI9QGRhdGFyb290ZGlyQAorLXBrZ2RhdGFkaXI9QGRhdGFkaXJAL0BQQUNLQUdFQAorK3BrZ2RhdGFkaXI9JHtwY19zeXNyb290ZGlyfUBkYXRhZGlyQC9AUEFDS0FHRUAKKyBsaWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIAorSW5kZXg6IHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLXNjYW5uZXIucGMuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXlsYW5kLTEuMTQuMC5vcmlnL3NyYy93YXlsYW5kLXNjYW5uZXIucGMuaW4KKysrKyB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCitAQCAtMiw3ICsyLDcgQEAgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorIGRhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKKyBwa2dkYXRhZGlyPUBkYXRhZGlyQC9AUEFDS0FHRUAKKy13YXlsYW5kX3NjYW5uZXI9QGJpbmRpckAvd2F5bGFuZC1zY2FubmVyCisrd2F5bGFuZF9zY2FubmVyPXdheWxhbmQtc2Nhbm5lcgorIAorIE5hbWU6IFdheWxhbmQgU2Nhbm5lcgorIERlc2NyaXB0aW9uOiBXYXlsYW5kIHNjYW5uZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkzOTZiNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKLWFzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKLWEgc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAotaW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCi1iZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAotZGlzcGxheSBzZXJ2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCi0KLURFUEVORFMgPSAiZXhwYXQgbGlieG1sMiBsaWJmZmkgd2F5bGFuZC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNhZTE1MmVkOTU2ZGE2ZGU1M2Y5NzI3YmMxYzQ1MDM5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5YjA1MmMwMzFhNjFlODlhZjdjYzg3ODA4OTNkMGRhMWUzMDE0OTIzNTJhYTQ0OWRlZTkzNDUwNDNlNmZlNTEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS13aXRoLWhvc3Qtc2Nhbm5lciIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLWxpYnJhcmllcyIKLQotIyBXYXlsYW5kIGluc3RhbGxzIGEgTTQgbWFjcm8gZm9yIG90aGVyIHByb2plY3RzIHRvIHVzZSwgd2hpY2ggdXNlcyB0aGUgdGFyZ2V0Ci0jIHBrZy1jb25maWcgdG8gZmluZCBmaWxlcy4gIFJlcGxhY2UgcGtnLWNvbmZpZyB3aXRoIHBrZy1jb25maWctbmF0aXZlLgotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICBzZWQgLWUgJ3MsUEtHX0NIRUNLX01PRFVMRVMoLiopLCxnJyBcCi0gICAgICAtZSAncywkUEtHX0NPTkZJRyxwa2ctY29uZmlnLW5hdGl2ZSxnJyBcCi0gICAgICAtaSAke0R9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKLX0KLQotc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0Jcm0gJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKLQljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00ICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS93YXlsYW5kIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5ZmY5OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTQuMC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKK2FzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKK2Egc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAoraW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCitiZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAorZGlzcGxheSBzZXJ2ZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCisKK0RFUEVORFMgPSAiZXhwYXQgbGlieG1sMiBsaWJmZmkgd2F5bGFuZC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKwkgICBmaWxlOi8vZml4cGF0aGlucGNmaWxlcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMjM1ZjYwNzVjMzJjM2JlNjFjZmY5NGZhMGI5ZjEwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZDgwY2FiYzA5NjFhNzU5YTQyMDkyZTJjMzlhYWJmYzFlYzlhMTNjODZjOThiYmUyYjgxMmYwMDhkYTI3YWI4IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0td2l0aC1ob3N0LXNjYW5uZXIiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS1saWJyYXJpZXMiCisKKyMgV2F5bGFuZCBpbnN0YWxscyBhIE00IG1hY3JvIGZvciBvdGhlciBwcm9qZWN0cyB0byB1c2UsIHdoaWNoIHVzZXMgdGhlIHRhcmdldAorIyBwa2ctY29uZmlnIHRvIGZpbmQgZmlsZXMuICBSZXBsYWNlIHBrZy1jb25maWcgd2l0aCBwa2ctY29uZmlnLW5hdGl2ZS4KK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgc2VkIC1lICdzLFBLR19DSEVDS19NT0RVTEVTKC4qKSwsZycgXAorICAgICAgLWUgJ3MsJFBLR19DT05GSUcscGtnLWNvbmZpZy1uYXRpdmUsZycgXAorICAgICAgLWkgJHtEfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Cit9CisKK3N5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00CisJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNGQ3OWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gMWNmYzE0MzRhNWQzODVhNzRkZTU5M2VjNzYwMTY3NGRiYTM5ZTJmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDExIE1heSAyMDE2IDE2OjE2OjMwICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogRml4IHdheWxhbmQtcHJvdG9jb2xzIHBhdGgKLQotVGhlIHdheWxhbmQtcHJvdG9jb2xzIGRpcmVjdG9yeSBpcyB1c2VkIGR1cmluZyBidWlsZDogRml4IHRoZSBwYXRoCi10byBwb2ludCB0byBzeXNyb290IHNwZWNpZmllZCBpbiByZWNpcGUuCi0KLU5vcm1hbGx5IFBLR19DT05GSUdfU1lTUk9PVF9ESVIgY291bGQgYmUgdXNlZCBpbiBjb25maWd1cmUuYWMgYnV0IHRoYXQKLWJyZWFrcyBtdWx0aWxpYiB3ZXN0b24gYXMgaXQgd291bGQgcG9pbnQgdG8gbXVsdGlsaWIgc3lzcm9vdCB3aGVuIHRoZQotKGFsbGFyY2gpIHdheWxhbmQtcHJvdG9jb2xzIGlzIGFjdHVhbGx5IGluIHRoZSBtYWNoaW5lIHN5c3Jvb3QuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gY29uZmlndXJlLmFjIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE4Nyw3ICsxODcsNyBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJJTlBVVF9CQUNLRU5ELCBbbGliCi0gUEtHX0NIRUNLX01PRFVMRVMoQ09NUE9TSVRPUiwgWyRDT01QT1NJVE9SX01PRFVMRVNdKQotIAotIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkRfUFJPVE9DT0xTLCBbd2F5bGFuZC1wcm90b2NvbHMgPj0gMS43XSwKLS0JCSAgW2FjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2BdKQotKwkJICBbYWNfd2F5bGFuZF9wcm90b2NvbHNfcGtnZGF0YWRpcj0ke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgXSkKLSBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCAkYWNfd2F5bGFuZF9wcm90b2NvbHNfcGtnZGF0YWRpcikKLSAKLSBBQ19BUkdfRU5BQkxFKHdheWxhbmQtY29tcG9zaXRvciwgWyAgLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yXSwsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoCmluZGV4IGUyMjEzYWMuLjA2NzFhNDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoCkBAIC0xNiw5ICsxNiwxMSBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvd2VzdG9uLWVycm9yLmgKIAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MCw2ICs2MCw4IEBAIEFDX0NIRUNLX0RFQ0woQ0xPQ0tfTU9OT1RPTklDLFtdLAorSW5kZXg6IHdlc3Rvbi0zLjAuMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZXN0b24tMy4wLjAub3JpZy9jb25maWd1cmUuYWMKKysrKyB3ZXN0b24tMy4wLjAvY29uZmlndXJlLmFjCitAQCAtMTAzLDYgKzEwMyw4IEBAIEFDX0NIRUNLX0RFQ0woQ0xPQ0tfTU9OT1RPTklDLFtdLAogIAkgICAgICBbWyNpbmNsdWRlIDx0aW1lLmg+XV0pCiAgQUNfQ0hFQ0tfSEVBREVSUyhbZXhlY2luZm8uaF0pCiAgCkBAIC0yNiw5ICsyOCwxMSBAQAogKwogIEFDX0NIRUNLX0ZVTkNTKFtta29zdGVtcCBzdHJjaHJudWwgaW5pdGdyb3VwcyBwb3NpeF9mYWxsb2NhdGVdKQogIAotIENPTVBPU0lUT1JfTU9EVUxFUz0id2F5bGFuZC1zZXJ2ZXIgPj0gJFdBWUxBTkRfUFJFUkVRX1ZFUlNJT04gcGl4bWFuLTEgPj0gMC4yNS4yIgorICMgY2hlY2sgZm9yIGxpYmRybSBhcyBhIGJ1aWxkLXRpbWUgZGVwZW5kZW5jeSBvbmx5CitJbmRleDogd2VzdG9uLTMuMC4wL2xpYndlc3Rvbi93ZXN0b24tZXJyb3IuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAotKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oCisrKysgd2VzdG9uLTMuMC4wL2xpYndlc3Rvbi93ZXN0b24tZXJyb3IuaAogQEAgLTAsMCArMSwyMCBAQAogKyNpZm5kZWYgX1dFU1RPTl9FUlJPUl9ICiArI2RlZmluZSBfV0VTVE9OX0VSUk9SX0gKQEAgLTUwLDggKzU0LDEwIEBACiArCiArI2VuZGlmCiArCi0tLS0gYS9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCi0rKysgYi9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCitJbmRleDogd2VzdG9uLTMuMC4wL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZXN0b24tMy4wLjAub3JpZy9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCisrKysgd2VzdG9uLTMuMC4wL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKIEBAIC0zMyw3ICszMyw2IEBACiAgI2luY2x1ZGUgPHBvbGwuaD4KICAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTYwLDcgKzY2LDcgQEAKICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiAgCiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotQEAgLTU5LDYgKzU4LDcgQEAKK0BAIC02MCw2ICs1OSw3IEBACiAgI2VuZGlmCiAgCiAgI2luY2x1ZGUgIndlc3Rvbi1sYXVuY2guaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9maXgtbWlzc2luZy1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVjMGQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK09uIHRoZSBtdXNsIEMgbGlicmFyeSwgdGVzdHMvdGltZXNwZWMtdGV4dC5jIGRvZXMgbm90IGJ1aWxkLCB3aXRoIHRoZQorZm9sbG93aW5nIGVycm9yOgorCisgICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHRlc3RzL3RpbWVzcGVjLXRlc3QuYzozNjowOgorICAgIC4vc2hhcmVkL3RpbWVzcGVjLXV0aWwuaDo0MToyMTogd2FybmluZzog4oCYc3RydWN0IHRpbWVzcGVj4oCZIGRlY2xhcmVkCisgICAgaW5zaWRlIHBhcmFtZXRlciBsaXN0IHdpbGwgbm90IGJlIHZpc2libGUgb3V0c2lkZSBvZiB0aGlzIGRlZmluaXRpb24KKyAgICBvciBkZWNsYXJhdGlvbgorICAgICB0aW1lc3BlY19zdWIoc3RydWN0IHRpbWVzcGVjICpyLAorICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+CisgICBbLi4uXQorCitJbmRlZWQsIHN0cnVjdCB0aW1lc3BlYyBpcyBkZWZpbmVkIGluIHRpbWUuaCwgc28gd2UgbXVzdCBpbmNsdWRlIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmYTQxYmRmYmMwYjk2MmZkNzNiODlmMDFhYWIxYTUzNzBjOWMyOGViXQorCitTaWduZWQtb2ZmLWJ5OiAiWWFubiBFLiBNT1JJTiIgPHlhbm4ubW9yaW4uMTk5OEBmcmVlLmZyPgorUmV2aWV3ZWQtYnk6IFBla2thIFBhYWxhbmVuIDxwZWtrYS5wYWFsYW5lbkBjb2xsYWJvcmEuY28udWs+CisKK0luZGV4OiB3ZXN0b24tMy4wLjAvc2hhcmVkL3RpbWVzcGVjLXV0aWwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlc3Rvbi0zLjAuMC5vcmlnL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKKysrKyB3ZXN0b24tMy4wLjAvc2hhcmVkL3RpbWVzcGVjLXV0aWwuaAorQEAgLTI4LDYgKzI4LDcgQEAKKyAKKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisgCisgI2RlZmluZSBOU0VDX1BFUl9TRUMgMTAwMDAwMDAwMAorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi93ZXN0b24tZ2wtcmVuZGVyZXItU2V0LXBpdGNoLWNvcnJlY3RseS1mb3Itc3Vic2FtcGxlZC10ZXh0dXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlMWQwNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorTXVsdGktcGxhbmUgc3ViLXNhbXBsZWQgdGV4dHVyZXMgaGF2ZSBwYXJ0aWFsIHdpZHRoL2hlaWdodCwgZS5nLgorWVVWNDIwL0k0MjAgaGFzIGEgZnVsbC1zaXplIFkgcGxhbmUsIGZvbGxvd2VkIGJ5IGEgaGFsZi13aWR0aC9oZWlnaHQgVQorcGxhbmUsIGFuZCBhIGhhbGYtd2lkdGgvaGVpZ2h0IFYgcGxhbmUuCisKK3p3cF9saW51eF9kbWFidWZfdjEgYWxsb3dzIGNsaWVudHMgdG8gcGFzcyBhbiBleHBsaWNpdCBwaXRjaCBmb3IgZWFjaAorcGxhbmUsIGJ1dCBmb3Igd2xfc2htIHRoaXMgbXVzdCBiZSBpbmZlcnJlZC4gZ2wtcmVuZGVyZXIgd2FzIGNvcnJlY3RseQorYWNjb3VudGluZyBmb3IgdGhlIHdpZHRoIGFuZCBoZWlnaHQgd2hlbiBzdWJzYW1wbGluZywgYnV0IHRoZSBwaXRjaCB3YXMKK2JlaW5nIHRha2VuIGFzIHRoZSBwaXRjaCBmb3IgdGhlIGZpcnN0IHBsYW5lLgorCitUaGlzIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlbWVudHMgZm9yIEdTdHJlYW1lcidzIHdheWxhbmRzaW5rLCBpbgorcGFydGljdWxhciwgYXMgd2VsbCBhcyBvdGhlciBjbGllbnRzLiBGaXggdGhlIFNITSB1cGxvYWQgcGF0aCB0bworY29ycmVjdGx5IHNldCB0aGUgcGl0Y2ggZm9yIGVhY2ggcGxhbmUsIGFjY29yZGluZyB0byBzdWJzYW1wbGluZy4KKworVGVzdGVkIHdpdGg6CisgICQgZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgd2F5bGFuZHNpbmsKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE4MDc2Ny9dCisKK1NpZ25lZC1vZmYtYnk6IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgorRml4ZXM6IGZkZWVmZTQyNDE4ICgiZ2wtcmVuZGVyZXI6IGFkZCBzdXBwb3J0IG9mIFdMX1NITV9GT1JNQVRfWVVWNDIwIikKK1JlcG9ydGVkLWJ5OiBGYWJpZW4gTGFob3VkZXJlIDxmYWJpZW4ubGFob3VkZXJlQGNvbGxhYm9yYS5jby51az4KK0J1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwNjMKKworLS0tCisgbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMgYi9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYworaW5kZXggMjQ0Y2UzMDkuLjQwYmYwYmI2IDEwMDY0NAorLS0tIGEvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKKysrKyBiL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCitAQCAtMTQ0NSwxNCArMTQ0NSwxMyBAQCBnbF9yZW5kZXJlcl9mbHVzaF9kYW1hZ2Uoc3RydWN0IHdlc3Rvbl9zdXJmYWNlICpzdXJmYWNlKQorIAkJZ290byBkb25lOworIAl9CisgCistCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEhfRVhULCBncy0+cGl0Y2gpOworLQorIAlpZiAoZ3MtPm5lZWRzX2Z1bGxfdXBsb2FkKSB7CisgCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMU19FWFQsIDApOworIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTX0VYVCwgMCk7CisgCQl3bF9zaG1fYnVmZmVyX2JlZ2luX2FjY2VzcyhidWZmZXItPnNobV9idWZmZXIpOworIAkJZm9yIChqID0gMDsgaiA8IGdzLT5udW1fdGV4dHVyZXM7IGorKykgeworIAkJCWdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZ3MtPnRleHR1cmVzW2pdKTsKKysJCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0pOworIAkJCWdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorIAkJCQkgICAgIGdzLT5nbF9mb3JtYXRbal0sCisgCQkJCSAgICAgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0sCitAQCAtMTQ3Nyw2ICsxNDc2LDcgQEAgZ2xfcmVuZGVyZXJfZmx1c2hfZGFtYWdlKHN0cnVjdCB3ZXN0b25fc3VyZmFjZSAqc3VyZmFjZSkKKyAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XU19FWFQsIHIueTEpOworIAkJZm9yIChqID0gMDsgaiA8IGdzLT5udW1fdGV4dHVyZXM7IGorKykgeworIAkJCWdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZ3MtPnRleHR1cmVzW2pdKTsKKysJCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoIC8gZ3MtPmhzdWJbal0pOworIAkJCWdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorIAkJCQkJci54MSAvIGdzLT5oc3ViW2pdLAorIAkJCQkJci55MSAvIGdzLT52c3ViW2pdLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YjA3YmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8yLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi1TVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCi1ERVNDUklQVElPTiA9ICJXZXN0b24gaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFdheWxhbmQgY29tcG9zaXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5ZWU5ZTY2YmIwZjk1ZDMzODZhN2FjYWU3ODBiNzAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlid2VzdG9uL2NvbXBvc2l0b3IuYztlbmRsaW5lPTI2O21kNT1lMzQyZGY3NDkxNzRhOGVlMTEwNjU1ODMxNTdjN2EzOCIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCi0gICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8veHdheWxhbmQud2VzdG9uLXN0YXJ0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMTVmMzg5NDU5NDJiZjJhOTFmZTI2ODcxNDVmYjRjN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjRlNDQ2YWMyN2YxMTgxOTZmMTYwOWRhYjg5YmIzY2IzZTgxNjUyZDk4MTQxNGFkODYwZTczM2IzNTUzNjVkOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVzZXJhZGQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAibGlieGtiY29tbW9uIGdkay1waXhidWYgcGl4bWFuIGNhaXJvIGdsaWItMi4wIGpwZWciCi1ERVBFTkRTICs9ICJ3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmlucHV0IHZpcnR1YWwvZWdsIHBhbmdvIHdheWxhbmQtbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2V0dWlkLWluc3RhbGwgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZHAtY29tcG9zaXRvciBcCi0gICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0gXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4NiA9ICJcCi0JCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKLQkJIgotRVhUUkFfT0VDT05GX2FwcGVuZF9xZW11eDg2LTY0ID0gIlwKLQkJV0VTVE9OX05BVElWRV9CQUNLRU5EPWZiZGV2LWJhY2tlbmQuc28gXAotCQkiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHdheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0gc3lzdGVtZCB4MTEnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGNsaWVudHMgbGF1bmNoIgotIwotIyBDb21wb3NpdG9yIGNob2ljZXMKLSMKLSMgV2VzdG9uIG9uIEtNUwotUEFDS0FHRUNPTkZJR1trbXNdID0gIi0tZW5hYmxlLWRybS1jb21wb3NpdG9yLC0tZGlzYWJsZS1kcm0tY29tcG9zaXRvcixkcm0gdWRldiB2aXJ0dWFsL21lc2EgbXRkZXYiCi0jIFdlc3RvbiBvbiBXYXlsYW5kIChuZXN0ZWQgV2VzdG9uKQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXdheWxhbmQtY29tcG9zaXRvcix2aXJ0dWFsL21lc2EiCi0jIFdlc3RvbiBvbiBYMTEKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEtY29tcG9zaXRvciwtLWRpc2FibGUteDExLWNvbXBvc2l0b3IsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgotIyBIZWFkbGVzcyBXZXN0b24KLVBBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi0tZW5hYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IsLS1kaXNhYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IiCi0jIFdlc3RvbiBvbiBmcmFtZWJ1ZmZlcgotUEFDS0FHRUNPTkZJR1tmYmRldl0gPSAiLS1lbmFibGUtZmJkZXYtY29tcG9zaXRvciwtLWRpc2FibGUtZmJkZXYtY29tcG9zaXRvcix1ZGV2IG10ZGV2IgotIyB3ZXN0b24tbGF1bmNoCi1QQUNLQUdFQ09ORklHW2xhdW5jaF0gPSAiLS1lbmFibGUtd2VzdG9uLWxhdW5jaCwtLWRpc2FibGUtd2VzdG9uLWxhdW5jaCxkcm0iCi0jIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaS1yZWNvcmRlciwtLWRpc2FibGUtdmFhcGktcmVjb3JkZXIsbGlidmEiCi0jIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsIC0tZW5hYmxlLXNpbXBsZS1lZ2wtY2xpZW50cywtLWRpc2FibGUtZWdsIC0tZGlzYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsdmlydHVhbC9lZ2wiCi0jIFdlc3RvbiB3aXRoIGNhaXJvIGdsZXN2MiBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NhaXJvLWdsZXN2Ml0gPSAiLS13aXRoLWNhaXJvLWdsZXN2MiwtLXdpdGgtY2Fpcm89aW1hZ2UsY2Fpcm8iCi0jIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItLWVuYWJsZS1sY21zLC0tZGlzYWJsZS1sY21zLGxjbXMiCi0jIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItLXdpdGgtd2VicCwtLXdpdGhvdXQtd2VicCxsaWJ3ZWJwIgotIyBXZXN0b24gd2l0aCB1bndpbmRpbmcgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKLSMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQtbG9naW4sLS1kaXNhYmxlLXN5c3RlbWQtbG9naW4sc3lzdGVtZCBkYnVzIgotIyBXZXN0b24gd2l0aCBYd2F5bGFuZCBzdXBwb3J0IChyZXF1aXJlcyBYMTEgYW5kIFdheWxhbmQpCi1QQUNLQUdFQ09ORklHW3h3YXlsYW5kXSA9ICItLWVuYWJsZS14d2F5bGFuZCwtLWRpc2FibGUteHdheWxhbmQiCi0jIGNvbG9yZCBDTVMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi0tZW5hYmxlLWNvbG9yZCwtLWRpc2FibGUtY29sb3JkLGNvbG9yZCIKLSMgQ2xpZW50cyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi0tZW5hYmxlLWNsaWVudHMgLS1lbmFibGUtc2ltcGxlLWNsaWVudHMgLS1lbmFibGUtZGVtby1jbGllbnRzLWluc3RhbGwsLS1kaXNhYmxlLWNsaWVudHMgLS1kaXNhYmxlLXNpbXBsZS1jbGllbnRzIgotIyBXZXN0b24gd2l0aCBQQU0gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgV2VzdG9uIGRvZXNuJ3QgbmVlZCB0aGUgLmxhIGZpbGVzIHRvIGxvYWQgbW9kdWxlcywgc28gd2lwZSB0aGVtCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGlid2VzdG9uLTIvKi5sYQotCi0JIyBJZiBYMTEsIHNoaXAgYSBkZXNrdG9wIGZpbGUgdG8gbGF1bmNoIGl0Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi0JCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24uZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLQotCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcwotCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLnBuZyAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJaW5zdGFsbCAtRG0gNjQ0ICR7V09SS0RJUn0veHdheWxhbmQud2VzdG9uLXN0YXJ0ICR7RH0ke2RhdGFkaXJ9L3dlc3Rvbi1zdGFydC94d2F5bGFuZAotCWZpCi19Ci0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICcke1BOfS14d2F5bGFuZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGxpYndlc3Rvbi0yICR7UE59LWV4YW1wbGVzIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd2VzdG9uICR7YmluZGlyfS93ZXN0b24tdGVybWluYWwgJHtiaW5kaXJ9L3dlc3Rvbi1pbmZvICR7YmluZGlyfS93ZXN0b24tbGF1bmNoICR7YmluZGlyfS93Y2FwLWRlY29kZSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS8ke0JQTn0vKi5zbyAke2RhdGFkaXJ9IgotCi1GSUxFU19saWJ3ZXN0b24tMiA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2xpYmRpcn0vbGlid2VzdG9uLTIvKi5zbyIKLVNVTU1BUllfbGlid2VzdG9uLTIgPSAiSGVscGVyIGxpYnJhcnkgZm9yIGltcGxlbWVudGluZyAnd2F5bGFuZCB3aW5kb3cgbWFuYWdlcnMnLiIKLQotRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtiaW5kaXJ9LyoiCi0KLUZJTEVTXyR7UE59LXh3YXlsYW5kID0gIiR7bGliZGlyfS9saWJ3ZXN0b24tMi94d2F5bGFuZC5zbyIKLVJERVBFTkRTXyR7UE59LXh3YXlsYW5kICs9ICJ4c2VydmVyLXhvcmcteHdheWxhbmQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ4a2V5Ym9hcmQtY29uZmlnIgotUlJFQ09NTUVORFNfJHtQTn0gPSAibGliZXJhdGlvbi1mb250cyIKLVJSRUNPTU1FTkRTXyR7UE59LWRldiArPSAid2F5bGFuZC1wcm90b2NvbHMiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSB3ZXN0b24tbGF1bmNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8zLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMy4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQwY2RjMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMy4wLjAuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiV2VzdG9uLCBhIFdheWxhbmQgY29tcG9zaXRvciIKK0RFU0NSSVBUSU9OID0gIldlc3RvbiBpcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIGEgV2F5bGFuZCBjb21wb3NpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzllZTllNjZiYjBmOTVkMzM4NmE3YWNhZTc4MGI3MCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJ3ZXN0b24vY29tcG9zaXRvci5jO2VuZGxpbmU9MjY7bWQ1PWUzNDJkZjc0OTE3NGE4ZWUxMTA2NTU4MzE1N2M3YTM4IgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24ucG5nIFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5kZXNrdG9wIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKKwkgICBmaWxlOi8vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2ggXAorCSAgIGZpbGU6Ly9maXgtbWlzc2luZy1oZWFkZXIucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjljNDJhNGM1MWExYjlmMzVkMDQwZmE5ZDQ1YWRhMzZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkZTFkNTVlOGRkNzBjM2NiYjNkMWVjNzJmNjBlNjAwMDAwNDE1NzljYWExZDZhMjYyYmQ5YzM1ZTkzNzIzYTUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIGRpc3Ryb19mZWF0dXJlc19jaGVjaworIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgorREVQRU5EUyArPSAid2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNldHVpZC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmRwLWNvbXBvc2l0b3IgXAorICAgICAgICAgICAgICAgICIKK0VYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4NiA9ICJcCisJCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKKwkJIgorRVhUUkFfT0VDT05GX2FwcGVuZF9xZW11eDg2LTY0ID0gIlwKKwkJV0VTVE9OX05BVElWRV9CQUNLRU5EPWZiZGV2LWJhY2tlbmQuc28gXAorCQkiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHdheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0gc3lzdGVtZCB4MTEnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGNsaWVudHMgbGF1bmNoIgorIworIyBDb21wb3NpdG9yIGNob2ljZXMKKyMKKyMgV2VzdG9uIG9uIEtNUworUEFDS0FHRUNPTkZJR1trbXNdID0gIi0tZW5hYmxlLWRybS1jb21wb3NpdG9yLC0tZGlzYWJsZS1kcm0tY29tcG9zaXRvcixkcm0gdWRldiB2aXJ0dWFsL21lc2EgbXRkZXYiCisjIFdlc3RvbiBvbiBXYXlsYW5kIChuZXN0ZWQgV2VzdG9uKQorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXdheWxhbmQtY29tcG9zaXRvcix2aXJ0dWFsL21lc2EiCisjIFdlc3RvbiBvbiBYMTEKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEtY29tcG9zaXRvciwtLWRpc2FibGUteDExLWNvbXBvc2l0b3IsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgorIyBIZWFkbGVzcyBXZXN0b24KK1BBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi0tZW5hYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IsLS1kaXNhYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IiCisjIFdlc3RvbiBvbiBmcmFtZWJ1ZmZlcgorUEFDS0FHRUNPTkZJR1tmYmRldl0gPSAiLS1lbmFibGUtZmJkZXYtY29tcG9zaXRvciwtLWRpc2FibGUtZmJkZXYtY29tcG9zaXRvcix1ZGV2IG10ZGV2IgorIyB3ZXN0b24tbGF1bmNoCitQQUNLQUdFQ09ORklHW2xhdW5jaF0gPSAiLS1lbmFibGUtd2VzdG9uLWxhdW5jaCwtLWRpc2FibGUtd2VzdG9uLWxhdW5jaCxkcm0iCisjIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaS1yZWNvcmRlciwtLWRpc2FibGUtdmFhcGktcmVjb3JkZXIsbGlidmEiCisjIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsIC0tZW5hYmxlLXNpbXBsZS1lZ2wtY2xpZW50cywtLWRpc2FibGUtZWdsIC0tZGlzYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsdmlydHVhbC9lZ2wiCisjIFdlc3RvbiB3aXRoIGNhaXJvIGdsZXN2MiBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NhaXJvLWdsZXN2Ml0gPSAiLS13aXRoLWNhaXJvLWdsZXN2MiwtLXdpdGgtY2Fpcm89aW1hZ2UsY2Fpcm8iCisjIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItLWVuYWJsZS1sY21zLC0tZGlzYWJsZS1sY21zLGxjbXMiCisjIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItLXdpdGgtd2VicCwtLXdpdGhvdXQtd2VicCxsaWJ3ZWJwIgorIyBXZXN0b24gd2l0aCB1bndpbmRpbmcgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKKyMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQtbG9naW4sLS1kaXNhYmxlLXN5c3RlbWQtbG9naW4sc3lzdGVtZCBkYnVzIgorIyBXZXN0b24gd2l0aCBYd2F5bGFuZCBzdXBwb3J0IChyZXF1aXJlcyBYMTEgYW5kIFdheWxhbmQpCitQQUNLQUdFQ09ORklHW3h3YXlsYW5kXSA9ICItLWVuYWJsZS14d2F5bGFuZCwtLWRpc2FibGUteHdheWxhbmQiCisjIGNvbG9yZCBDTVMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi0tZW5hYmxlLWNvbG9yZCwtLWRpc2FibGUtY29sb3JkLGNvbG9yZCIKKyMgQ2xpZW50cyBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi0tZW5hYmxlLWNsaWVudHMgLS1lbmFibGUtc2ltcGxlLWNsaWVudHMgLS1lbmFibGUtZGVtby1jbGllbnRzLWluc3RhbGwsLS1kaXNhYmxlLWNsaWVudHMgLS1kaXNhYmxlLXNpbXBsZS1jbGllbnRzIgorIyBXZXN0b24gd2l0aCBQQU0gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2VzdG9uIGRvZXNuJ3QgbmVlZCB0aGUgLmxhIGZpbGVzIHRvIGxvYWQgbW9kdWxlcywgc28gd2lwZSB0aGVtCisJcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGlid2VzdG9uLTMvKi5sYQorCisJIyBJZiBYMTEsIHNoaXAgYSBkZXNrdG9wIGZpbGUgdG8gbGF1bmNoIGl0CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisJCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24uZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKKworCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLnBuZyAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJaW5zdGFsbCAtRG0gNjQ0ICR7V09SS0RJUn0veHdheWxhbmQud2VzdG9uLXN0YXJ0ICR7RH0ke2RhdGFkaXJ9L3dlc3Rvbi1zdGFydC94d2F5bGFuZAorCWZpCit9CisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICcke1BOfS14d2F5bGFuZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGxpYndlc3Rvbi0zICR7UE59LWV4YW1wbGVzIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd2VzdG9uICR7YmluZGlyfS93ZXN0b24tdGVybWluYWwgJHtiaW5kaXJ9L3dlc3Rvbi1pbmZvICR7YmluZGlyfS93ZXN0b24tbGF1bmNoICR7YmluZGlyfS93Y2FwLWRlY29kZSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS8ke0JQTn0vKi5zbyAke2RhdGFkaXJ9IgorCitGSUxFU19saWJ3ZXN0b24tMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2xpYmRpcn0vbGlid2VzdG9uLTMvKi5zbyIKK1NVTU1BUllfbGlid2VzdG9uLTMgPSAiSGVscGVyIGxpYnJhcnkgZm9yIGltcGxlbWVudGluZyAnd2F5bGFuZCB3aW5kb3cgbWFuYWdlcnMnLiIKKworRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtiaW5kaXJ9LyoiCisKK0ZJTEVTXyR7UE59LXh3YXlsYW5kID0gIiR7bGliZGlyfS9saWJ3ZXN0b24tMy94d2F5bGFuZC5zbyIKK1JERVBFTkRTXyR7UE59LXh3YXlsYW5kICs9ICJ4c2VydmVyLXhvcmcteHdheWxhbmQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJ4a2V5Ym9hcmQtY29uZmlnIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGliZXJhdGlvbi1mb250cyIKK1JSRUNPTU1FTkRTXyR7UE59LWRldiArPSAid2F5bGFuZC1wcm90b2NvbHMiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSB3ZXN0b24tbGF1bmNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluCmluZGV4IDMyNGEyNmYuLjg3ZGM0ZjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtLnNlcnZpY2UuaW4KQEAgLTUsNiArNSw3IEBACiBFbnZpcm9ubWVudEZpbGU9L2V0Yy9kZWZhdWx0L3hzZXJ2ZXItbm9kbQogVXNlcj1AVVNFUkAKIEV4ZWNTdGFydD0vZXRjL3hzZXJ2ZXItbm9kbS9Yc2VydmVyCitSZXN0YXJ0PWFsd2F5cwogCiBbSW5zdGFsbF0KIEFsaWFzPWRpc3BsYXktbWFuYWdlci5zZXJ2aWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgppbmRleCAzNDViNTg5Li5hNzdjNTY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdF8zLjAuYmIKQEAgLTYwLDcgKzYwLDcgQEAKICAgICBmaQogfQogCi1SREVQRU5EU18ke1BOfSA9ICJ4aW5pdCAke0BiYXNlX2NvbmRpdGlvbmFsKCdST09UTEVTU19YJywgJzEnLCAneHVzZXItYWNjb3VudCcsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSA9ICJ4aW5pdCAke0BvZS51dGlscy5jb25kaXRpb25hbCgnUk9PVExFU1NfWCcsICcxJywgJ3h1c2VyLWFjY291bnQnLCAnJywgZCl9IgogCiBJTklUU0NSSVBUX05BTUUgPSAieHNlcnZlci1ub2RtIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOSA1IC4gc3RvcCAyMCAwIDEgMiAzIDYgLiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZS94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZS94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lX2dpdC5iYgppbmRleCA3MzNlYmNlLi5hNGFiN2Y2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiCkBAIC0xMSw3ICsxMSw3IEBACiBQViA9ICIwLjEuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn07YnJhbmNoPW1hc3RlciIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXQvZGlzYWJsZS14a2IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXQvZGlzYWJsZS14a2IucGF0Y2gKaW5kZXggOTdkMTNhMy4uYTk3YzdiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0L2Rpc2FibGUteGtiLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHNldC9kaXNhYmxlLXhrYi5wYXRjaApAQCAtNCwxMSArNCwxMSBAQAogCiBSZWJhc2UgZm9yIDEuMi4xIGJ5OiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4MWMzYWU0Li4yNjYwMWJmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01MiwxMSArNTIsMTUgQEAgUEtHX0NIRUNLX01PRFVMRVMoU0VUX1hFWFQsIHhleHQsCitJbmRleDogeHNldC0xLjIuMy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB4c2V0LTEuMi4zLm9yaWcvY29uZmlndXJlLmFjCisrKysgeHNldC0xLjIuMy9jb25maWd1cmUuYWMKK0BAIC01MywxMSArNTMsMTUgQEAgUEtHX0NIRUNLX01PRFVMRVMoU0VUX1hFWFQsIHhleHQsCiAgCUFDX0NIRUNLX0hFQURFUlMoW1gxMS9leHRlbnNpb25zL2RwbXMuaCBYMTEvZXh0ZW5zaW9ucy9NSVRNaXNjLmhdLCwsWyNpbmNsdWRlIDxYMTEvWGxpYi5oPl0pCiAgCUNQUEZMQUdTPSIkU0FWRV9DUFBGTEFHUyJdLFtlY2hvICJub3QgZm91bmQiXSkKICAKQEAgLTIyLDUgKzIyLDUgQEAKICAJQ1BQRkxBR1M9IiRTQVZFX0NQUEZMQUdTIl0sW2VjaG8gIm5vdCBmb3VuZCJdKQogK2ZpCiAgCi0gQUNfQVJHX1dJVEgoeGY4Nm1pc2MsIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQteGY4Nm1pc2NdLFtEaXNhYmxlIHhmODZtaXNjIHN1cHBvcnQuXSksCisgQUNfQVJHX1dJVEgoeGY4Nm1pc2MsIEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQteGY4Nm1pc2NdLFtEaXNhYmxlIHhmODZtaXNjIHN1cHBvcnQuXSksCiAgICAgICAgICAgICAgICAgIFtVU0VfWEY4Nk1JU0M9IiR3aXRodmFsIl0sIFtVU0VfWEY4Nk1JU0M9InllcyJdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiM2VhMTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgeG9yZy1kcml2ZXItaW5wdXQuaW5jCi0KLVNVTU1BUlkgPSAiR2VuZXJpYyBpbnB1dCBkcml2ZXIgZm9yIHRoZSBYLk9yZyBzZXJ2ZXIgYmFzZWQgb24gbGliaW5wdXQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZTZiMjBlYTJlZjk0YTk5ODE0NWYwZWEzZjc4OGVlMCIKLQotREVQRU5EUyArPSAibGliaW5wdXQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNDAwMzEzOTYxNGIyNWNjNzZjOWE0Y2FkMDU5ZGY4OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODlmN2Q1OTFjOWVmMDg0NjNkNDk2NmU2MWY3YzZlYTQzM2Y1ZmNiYjlmNTM3MGZiNjIxZGE2MzlhODRjN2UwIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveG9yZy5jb25mLmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGMzM2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjYuMC5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYworCitTVU1NQVJZID0gIkdlbmVyaWMgaW5wdXQgZHJpdmVyIGZvciB0aGUgWC5Pcmcgc2VydmVyIGJhc2VkIG9uIGxpYmlucHV0IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWU2YjIwZWEyZWY5NGE5OTgxNDVmMGVhM2Y3ODhlZTAiCisKK0RFUEVORFMgKz0gImxpYmlucHV0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGE0N2VmNjJlYWIxZDBlOTIyYThmYTkyOWZmODE3NTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWJjYTU1OGZjMjIyNmYyOTU2OTFmMWNmMzQxMmQ0YzBlZGVhYTQzOWY2NzdjYTI1YjVjOWZhYjMxMGQyMzg3YiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtQWRkLUNvZmZlZWxha2UtUENJLUlEcy1mb3ItUy1Ta3VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtQWRkLUNvZmZlZWxha2UtUENJLUlEcy1mb3ItUy1Ta3VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZWYxMDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDAwMS1BZGQtQ29mZmVlbGFrZS1QQ0ktSURzLWZvci1TLVNrdXMucGF0Y2gKQEAgLTAsMCArMSwxMTYgQEAKK0Zyb20gOTZkNGU4ZTdiOGE2OTlmMGVmNzdmYTdiMjEwZDRkZTVmMWM3MDNkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExpd2VpIFNvbmcgPGxpd2VpLnNvbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjIgTm92IDIwMTcgMDg6NTk6MDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIENvZmZlZWxha2UgUENJIElEcyBmb3IgUyBTa3VzCisKK0FkZCB0aGUgQ29mZmVlbGFrZSBQQ0kgSURzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcga2VybmVsIHBhdGNoZXM6CisKK2NvbW1pdCBiMDU2ZjhmM2Q2YjkwMGU4YWZkMTlmMzEyNzE5MTYwMzQ2ZDI2M2I0CitBdXRob3I6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KK0RhdGU6ICAgVGh1IEp1biA4IDE2OjQxOjA1IDIwMTcgLTA3MDAKKworICAgIGRybS9pOTE1L2NmbDogQWRkIENvZmZlZSBMYWtlIFBDSSBJRHMgZm9yIFMgU2t1cy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAxMzk5MDVdCisKK1NpZ25lZC1vZmYtYnk6IExpd2VpIFNvbmcgPGxpd2VpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9pOTE1X3BjaWlkcy5oICAgICB8ICA3ICsrKysrKysKKyBzcmMvaW50ZWxfbW9kdWxlLmMgICAgfCAxMyArKysrKysrKysrKysrCisgc3JjL3NuYS9nZW45X3JlbmRlci5jIHwgMTIgKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaTkxNV9wY2lpZHMuaCBiL3NyYy9pOTE1X3BjaWlkcy5oCitpbmRleCAwMzcwZjgzMGM1NDEuLjExY2NmYTljMDQ3YSAxMDA2NDQKKy0tLSBhL3NyYy9pOTE1X3BjaWlkcy5oCisrKysgYi9zcmMvaTkxNV9wY2lpZHMuaAorQEAgLTM0MCw0ICszNDAsMTEgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDMxODQsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzMTg1LCBpbmZvKQorIAorKyNkZWZpbmUgSU5URUxfQ0ZMX1NfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFOTAsIGluZm8pLCAvKiBTUlYgR1QxICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFOTMsIGluZm8pLCAvKiBTUlYgR1QxICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFOTEsIGluZm8pLCAvKiBTUlYgR1QyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFOTIsIGluZm8pLCAvKiBTUlYgR1QyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFOTYsIGluZm8pICAvKiBTUlYgR1QyICovCisrCisgI2VuZGlmIC8qIF9JOTE1X1BDSUlEU19IICovCitkaWZmIC0tZ2l0IGEvc3JjL2ludGVsX21vZHVsZS5jIGIvc3JjL2ludGVsX21vZHVsZS5jCitpbmRleCA2YjA0ODU3ZTI4NTMuLjQ4MjdhNjcyNTVmMCAxMDA2NDQKKy0tLSBhL3NyYy9pbnRlbF9tb2R1bGUuYworKysrIGIvc3JjL2ludGVsX21vZHVsZS5jCitAQCAtMTM4LDYgKzEzOCwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2dlbWluaWxha2VfaW5mbyA9IHsKKyAJLmdlbiA9IDAxMTMsCisgfTsKKyAKKytzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2NvZmZlZWxha2VfaW5mbyA9IHsKKysJLmdlbiA9IDAxMTQsCisrfTsKKysKKyBzdGF0aWMgY29uc3QgU3ltVGFiUmVjIGludGVsX2NoaXBzZXRzW10gPSB7CisgCXtQQ0lfQ0hJUF9JODEwLAkJCQkiaTgxMCJ9LAorIAl7UENJX0NISVBfSTgxMF9EQzEwMCwJCQkiaTgxMC1kYzEwMCJ9LAorQEAgLTMwMyw2ICszMDcsMTMgQEAgc3RhdGljIGNvbnN0IFN5bVRhYlJlYyBpbnRlbF9jaGlwc2V0c1tdID0geworIAl7MHg1OTE2LCAiSEQgR3JhcGhpY3MgNjIwIn0sCisgCXsweDU5MUUsICJIRCBHcmFwaGljcyA2MTUifSwKKyAKKysJLypDb2ZmZWVsYWtlKi8KKysJezB4M0U5MCwgIkhEIEdyYXBoaWNzIn0sCisrCXsweDNFOTMsICJIRCBHcmFwaGljcyJ9LAorKwl7MHgzRTkxLCAiSEQgR3JhcGhpY3MifSwKKysJezB4M0U5MiwgIkhEIEdyYXBoaWNzIn0sCisrCXsweDNFOTYsICJIRCBHcmFwaGljcyJ9LAorKworIAkvKiBXaGVuIGFkZGluZyBuZXcgaWRlbnRpZmllcnMsIGFsc28gdXBkYXRlOgorIAkgKiAxLiBpbnRlbF9pZGVudGlmeSgpCisgCSAqIDIuIG1hbi9pbnRlbC5tYW4KK0BAIC0zNjgsNiArMzc5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfaWRfbWF0Y2ggaW50ZWxfZGV2aWNlX21hdGNoW10gPSB7CisgCisgCUlOVEVMX0dMS19JRFMoJmludGVsX2dlbWluaWxha2VfaW5mbyksCisgCisrCUlOVEVMX0NGTF9TX0lEUygmaW50ZWxfY29mZmVlbGFrZV9pbmZvKSwKKysKKyAJSU5URUxfVkdBX0RFVklDRShQQ0lfTUFUQ0hfQU5ZLCAmaW50ZWxfZ2VuZXJpY19pbmZvKSwKKyAjZW5kaWYKKyAKK2RpZmYgLS1naXQgYS9zcmMvc25hL2dlbjlfcmVuZGVyLmMgYi9zcmMvc25hL2dlbjlfcmVuZGVyLmMKK2luZGV4IGU1ZjEyYzcyMzk1Ni4uN2Y0OTA1MmM1ZWMxIDEwMDY0NAorLS0tIGEvc3JjL3NuYS9nZW45X3JlbmRlci5jCisrKysgYi9zcmMvc25hL2dlbjlfcmVuZGVyLmMKK0BAIC0yNDUsNiArMjQ1LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3RfaW5mbyBnbGtfZ3RfaW5mbyA9IHsKKyAJLnVyYiA9IHsgLm1heF92c19lbnRyaWVzID0gMzIwIH0sCisgfTsKKyAKKytzdGF0aWMgY29uc3Qgc3RydWN0IGd0X2luZm8gY2ZsX2d0X2luZm8gPSB7CisrCS5uYW1lID0gIkNvZmZlZWxha2UgKGdlbjkpIiwKKysJLnVyYiA9IHsgLm1heF92c19lbnRyaWVzID0gOTYwIH0sCisrfTsKKysKKyBzdGF0aWMgYm9vbCBpc19za2woc3RydWN0IHNuYSAqc25hKQorIHsKKyAJcmV0dXJuIHNuYS0+a2dlbS5nZW4gPT0gMDExMDsKK0BAIC0yNjUsNiArMjcwLDExIEBAIHN0YXRpYyBib29sIGlzX2dsayhzdHJ1Y3Qgc25hICpzbmEpCisgCXJldHVybiBzbmEtPmtnZW0uZ2VuID09IDAxMTM7CisgfQorIAorK3N0YXRpYyBib29sIGlzX2NmbChzdHJ1Y3Qgc25hICpzbmEpCisreworKwlyZXR1cm4gc25hLT5rZ2VtLmdlbiA9PSAwMTE0OworK30KKysKKyAKKyBzdGF0aWMgaW5saW5lIGJvb2wgdG9vX2xhcmdlKGludCB3aWR0aCwgaW50IGhlaWdodCkKKyB7CitAQCAtNDA0MCw2ICs0MDUwLDggQEAgc3RhdGljIGJvb2wgZ2VuOV9yZW5kZXJfc2V0dXAoc3RydWN0IHNuYSAqc25hKQorIAkJc3RhdGUtPmluZm8gPSAma2JsX2d0X2luZm87CisgCWlmIChpc19nbGsoc25hKSkKKyAJCXN0YXRlLT5pbmZvID0gJmdsa19ndF9pbmZvOworKwlpZiAoaXNfY2ZsKHNuYSkpCisrCQlzdGF0ZS0+aW5mbyA9ICZjZmxfZ3RfaW5mbzsKKyAKKyAJc25hX3N0YXRpY19zdHJlYW1faW5pdCgmZ2VuZXJhbCk7CisgCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYgppbmRleCAxMzhkZmRkLi4yNjIzY2IyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKQEAgLTE2LDYgKzE2LDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9kcml2ZXIveGY4Ni12aWRlby1pbnRlbCBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLXgxMS1kcmkzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2Fsd2F5c19pbmNsdWRlX3hvcmdfc2VydmVyLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtQ29mZmVlbGFrZS1QQ0ktSURzLWZvci1TLVNrdXMucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJmYTE5NmE2NmU1MmMwYzYyNGZlNWQzNTBhZjdhNWU3YiIKQEAgLTM3LDcgKzM4LDcgQEAKIFBBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scyxsaWJ4aW5lcmFtYSBsaWJ4cmFuZHIgbGlieGRhbWFnZSBsaWJ4Zml4ZXMgbGlieGN1cnNvciBsaWJ4dHN0IGxpYnhleHQgbGlieHJlbmRlciIKIAogIyAtLWVuYWJsZS1rbXMtb25seSBvcHRpb24gaXMgcmVxdWlyZWQgYnkgUk9PVExFU1NfWAotRVhUUkFfT0VDT05GICs9ICcke0BiYXNlX2NvbmRpdGlvbmFsKCAiUk9PVExFU1NfWCIsICIxIiwgIiAtLWVuYWJsZS1rbXMtb25seSIsICIiLCBkICl9JworRVhUUkFfT0VDT05GICs9ICcke0BvZS51dGlscy5jb25kaXRpb25hbCggIlJPT1RMRVNTX1giLCAiMSIsICIgLS1lbmFibGUta21zLW9ubHkiLCAiIiwgZCApfScKIAogQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NCkuKi1saW51eCcKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcF8wLjQuNS5iYgppbmRleCBlNjUyMzk0Li5iZWYzNjM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcF8wLjQuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcF8wLjQuNS5iYgpAQCAtMzYsNiArMzYsNiBAQAogCiBweXRob24gKCkgewogICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInb3BlbmdsJyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiJ29wZW5nbCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwppbmRleCBmZTQyZjExLi5iY2EwYWFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCkBAIC0zOCwzICszOCw1IEBACiAKICAgICBwbiA9IGQuZ2V0VmFyKCJQTiIpCiAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwbiwgJyAnICsgYWJpKQorCitTRUNVUklUWV9MREZMQUdTID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNiNjgyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgUENJIGFjY2VzcyBsaWJyYXJ5IGZvciBYIgotCi1ERVNDUklQVElPTiA9ICJsaWJwY2lhY2Nlc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgWCB0byBhY2Nlc3MgdGhlIFwKLVBDSSBidXMgYW5kIGRldmljZXMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAwMDQtRG9uLXQtaW5jbHVkZS1zeXMtaW8uaC1vbi1hcm0ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDgxMGFiMTdlMjRjMTQxOGRlZGY3MjA3ZmIyODQxZDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzUyYzU0ZTliM2MzMTFiNDM0N2NiNTBhZWE4NTY2ZmE0OGVhYjI3NDM0NmVhOGEwNmY3ZjE1ZGUzMjQwYjk5OSIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzdhYWRhNTIyMmI5YTIyZmJmMzQ3MWZmMzY4NzA2OCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NGE1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjE0LmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiR2VuZXJpYyBQQ0kgYWNjZXNzIGxpYnJhcnkgZm9yIFgiCisKK0RFU0NSSVBUSU9OID0gImxpYnBjaWFjY2VzcyBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBYIHRvIGFjY2VzcyB0aGUgXAorUENJIGJ1cyBhbmQgZGV2aWNlcyBpbiBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHdheS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitTUkNfVVJJICs9ICJcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1Eb24tdC1pbmNsdWRlLXN5cy1pby5oLW9uLWFybS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZjQzNmUxNTFkNTEwNmE5Y2ZhYTcxODU3YTA2NmQzMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGY1NDNlMTJhZmQ0MWZlYThlYWM4MTdlNDhjYmZkZTVhZWQ4ODE3YjgxNjcwYTRlOWU0OTNiYjJmNWJmMmE0IgorCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3N2FhZGE1MjIyYjlhMjJmYmYzNDcxZmYzNjg3MDY4IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwdGhyZWFkLXN0dWJzXzAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIKaW5kZXggYTY5OTg0MS4uZmZhMWM4NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwdGhyZWFkLXN0dWJzXzAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC40LmJiCkBAIC03LDE3ICs3LDExIEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlZGMxZmVhMDNkOTU5ZjBjMmQ3NDNmZTVjYTc0NmFkIgogCi0jREVQRU5EUyA9ICJ4Y2ItcHJvdG8geHByb3RvIGxpYnhhdSBsaWJ4c2x0LW5hdGl2ZSIKLSMgREVQRU5EUyArPSAieHNsdHByb2MtbmF0aXZlIGdwZXJmLW5hdGl2ZSIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0L2xpYnB0aHJlYWQtc3R1YnMtJHtQVn0udGFyLmJ6MiIKLQorU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0LyR7QlB9LnRhci5iejIiCiBTUkNfVVJJW21kNXN1bV0gPSAiNDhjMTU0NDg1NGE5NGRiMGU1MTQ5OWNjM2FmZDc5N2YiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTRkMDU5MTFhMzE2NWQzYjE4MzIxY2MwNjdmZGQyZjAyM2YwNjQzNmUzOTFjNmEyOGRmZjYxOGE3OGQyZTczMyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scwogCiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgogUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLmluYwppbmRleCBiMDRlYWZiLi40YWY0MGFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEuaW5jCkBAIC0zNSw3ICszNSwzIEBACiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEvWEtleXN5bURCICR7ZGF0YWRpcn0vWDExL1hFcnJvckRCICR7ZGF0YWRpcn0vWDExL1hjbXMudHh0IgogRklMRVNfJHtQTn0teGNiICs9ICIke2xpYmRpcn0vbGliWDExLXhjYi5zby4qIgogRklMRVNfJHtQTn0tbG9jYWxlICs9ICIke2RhdGFkaXJ9L1gxMS9sb2NhbGUgJHtsaWJkaXJ9L1gxMS9sb2NhbGUiCi0KLSMgTXVsdGlwbGUgbGlieDExIGRlcml2YXRpdmVzIGZyb20gZnJvbSB0aGlzIGZpbGUgYW5kIGFyZSBzZWxlY3RlZCBieSB2aXJ0dWFsL2xpYngxMQotIyBBIHdvcmxkIGJ1aWxkIHNob3VsZCBvbmx5IGJ1aWxkIHRoZSBjb3JyZWN0IHZlcnNpb24sIG5vdCBhbGwgb2YgdGhlbS4KLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKaW5kZXggN2M3ZmEzZC4uMGZlNjUzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiCkBAIC0xNiw3ICsxNiw3IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvbGliL2xpYlhDYWxpYnJhdGUgXAogICAgICAgICAgICBmaWxlOi8vZml4LXhjYi5wYXRjaCIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYi9kaXNhYmxlLWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvZGlzYWJsZS1jaGVjay5wYXRjaAppbmRleCA1NjQxYzBmLi5jMGVmYmRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYi9kaXNhYmxlLWNoZWNrLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL2Rpc2FibGUtY2hlY2sucGF0Y2gKQEAgLTksMTcgKzksMTcgQEAKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNmQ3YzlhNS4uMjJjY2ViOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjEsNyArMjEsOCBAQCBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKLSAKLSBBTV9QQVRIX1BZVEhPTihbMi42XSkKK0luZGV4OiBsaWJ4Y2ItMS4xMi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ4Y2ItMS4xMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYnhjYi0xLjEyL2NvbmZpZ3VyZS5hYworQEAgLTM2LDcgKzM2LDggQEAgaWYgdGVzdCB4IiRIQVZFX0RPVCIgPSB4bm87IHRoZW4KKyAgICAgQUNfTVNHX1dBUk4oW2RvdCBub3QgZm91bmQgLSBkb3h5Z2VuIHRhcmdldHMgd2lsbCBiZSBza2lwcGVkXSkKKyBmaQogIAogLVBLR19DSEVDS19NT0RVTEVTKENIRUNLLCBbY2hlY2sgPj0gMC45LjRdLCBbSEFWRV9DSEVDSz15ZXNdLCBbSEFWRV9DSEVDSz1ub10pCiArZG5sIFBLR19DSEVDS19NT0RVTEVTKENIRUNLLCBbY2hlY2sgPj0gMC45LjRdLCBbSEFWRV9DSEVDSz15ZXNdLCBbSEFWRV9DSEVDSz1ub10pCiArSEFWRV9DSEVDSz1ubwogIEFNX0NPTkRJVElPTkFMKEhBVkVfQ0hFQ0ssIHRlc3QgeCRIQVZFX0NIRUNLID0geHllcykKICAKLSBBQ19DT05GSUdfSEVBREVSUyhbc3JjL2NvbmZpZy5oXSkKKyBYU0xUUFJPQz1ubwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NjI5MDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiWGN1cnNvcjogWCBDdXJzb3IgbWFuYWdlbWVudCBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJYY3Vyc29yIGlzIGEgc2ltcGxlIGxpYnJhcnkgZGVzaWduZWQgdG8gaGVscCBsb2NhdGUgYW5kIFwKLWxvYWQgY3Vyc29ycy4gQ3Vyc29ycyBjYW4gYmUgbG9hZGVkIGZyb20gZmlsZXMgb3IgbWVtb3J5LiBBIGxpYnJhcnkgb2YgXAotY29tbW9uIGN1cnNvcnMgZXhpc3RzIHdoaWNoIG1hcCB0byB0aGUgc3RhbmRhcmQgWCBjdXJzb3IgbmFtZXMuIEN1cnNvcnMgXAotY2FuIGV4aXN0IGluIHNldmVyYWwgc2l6ZXMgYW5kIHRoZSBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgcGlja3MgdGhlIGJlc3QgXAotc2l6ZS4iCi0KLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg5MDJlNjY0M2Y3YmNkNzc5M2IyM2RjZDVkODAzMWE0IgotCi1ERVBFTkRTICs9ICJsaWJ4cmVuZGVyIGxpYnhmaXhlcyIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEUgPSAiMSIKLQotWE9SR19QTiA9ICJsaWJYY3Vyc29yIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWU3YzE3YWZiYmNlODNlMjIxNTkxNzA0N2M1N2QxYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWJjNmFjYjIxY2ExNGRhNTFiZGE1YmM5MTJjODk1NWJjNmU1ZTQzM2YwYWIwMGM1ZThiZWY4NDI1OTZjMzNkZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjOWFmMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE1LmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiWGN1cnNvcjogWCBDdXJzb3IgbWFuYWdlbWVudCBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJYY3Vyc29yIGlzIGEgc2ltcGxlIGxpYnJhcnkgZGVzaWduZWQgdG8gaGVscCBsb2NhdGUgYW5kIFwKK2xvYWQgY3Vyc29ycy4gQ3Vyc29ycyBjYW4gYmUgbG9hZGVkIGZyb20gZmlsZXMgb3IgbWVtb3J5LiBBIGxpYnJhcnkgb2YgXAorY29tbW9uIGN1cnNvcnMgZXhpc3RzIHdoaWNoIG1hcCB0byB0aGUgc3RhbmRhcmQgWCBjdXJzb3IgbmFtZXMuIEN1cnNvcnMgXAorY2FuIGV4aXN0IGluIHNldmVyYWwgc2l6ZXMgYW5kIHRoZSBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgcGlja3MgdGhlIGJlc3QgXAorc2l6ZS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitMSUNFTlNFID0gIk1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg5MDJlNjY0M2Y3YmNkNzc5M2IyM2RjZDVkODAzMWE0IgorCitERVBFTkRTICs9ICJsaWJ4cmVuZGVyIGxpYnhmaXhlcyIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEUgPSAiMSIKKworWE9SR19QTiA9ICJsaWJYY3Vyc29yIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNThmZTM1MTRlMWU3MTM1Y2YzNjQxMDFlNzE0ZDFhMTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk0ZTY3MGRkMzdjZDIzOTk1ZTY5YWFlNjI2NjI5ZDRhMmRmZTU3MDg4NTFiYmMxM2QwMzI0MDFiN2EzZGY2YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udDJfMi4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZmIyOTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udDJfMi4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIlhGb250MjogWCBGb250IHJhc3RlcmlzYXRpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibGliWGZvbnQyIHByb3ZpZGVzIHZhcmlvdXMgc2VydmljZXMgZm9yIFggc2VydmVycywgbW9zdCBcCi1ub3RhYmx5IGZvbnQgc2VsZWN0aW9uIGFuZCByYXN0ZXJpc2F0aW9uICh0aHJvdWdoIGV4dGVybmFsIGxpYnJhcmllcyBcCi1zdWNoIGFzIGZyZWV0eXBlKS4iCi0KLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE0NmM4MDQwZjJmNzM3YmNkMGM0MzVmZWIyYWIxYzJjIgotCi1ERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgZm9udHNwcm90byBsaWJmb250ZW5jIHpsaWIiCi0KLVhPUkdfUE4gPSAibGliWGZvbnQyIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjBkOWY2ZGQ5YzIzYmY0YmNiZmIwMDUwNGI1NjZiYWY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU5ZmJiYjQ3NWRkZDE3MWIzYTZhNTRiOTg5Y2JhZGUxZjZmODc0ZmMzNWQ1MDVlYmM1YmU0MjZiYzZlNGRiN2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udDJfMi4wLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYyN2E1NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4zLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiWEZvbnQyOiBYIEZvbnQgcmFzdGVyaXNhdGlvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJsaWJYZm9udDIgcHJvdmlkZXMgdmFyaW91cyBzZXJ2aWNlcyBmb3IgWCBzZXJ2ZXJzLCBtb3N0IFwKK25vdGFibHkgZm9udCBzZWxlY3Rpb24gYW5kIHJhc3RlcmlzYXRpb24gKHRocm91Z2ggZXh0ZXJuYWwgbGlicmFyaWVzIFwKK3N1Y2ggYXMgZnJlZXR5cGUpLiIKKworcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTQ2YzgwNDBmMmY3MzdiY2QwYzQzNWZlYjJhYjFjMmMiCisKK0RFUEVORFMgKz0gImZyZWV0eXBlIHh0cmFucyBmb250c3Byb3RvIGxpYmZvbnRlbmMgemxpYiIKKworWE9SR19QTiA9ICJsaWJYZm9udDIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjdjYTg3ZGZhZmViNTIwNWIyOGExZTkxYWMzZWZlODUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGU4YWI3ZmQ3MzdjY2RmZTg3ZTFmMDJiNTVmMjIxZjBiZDQ1MDNhMWM1ZjI4YmU0ZWQ2YTU0NTg2YmFjOWM0ZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMWRkYTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiWEZvbnQ6IFggRm9udCByYXN0ZXJpc2F0aW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gImxpYlhmb250IHByb3ZpZGVzIHZhcmlvdXMgc2VydmljZXMgZm9yIFggc2VydmVycywgbW9zdCBcCi1ub3RhYmx5IGZvbnQgc2VsZWN0aW9uIGFuZCByYXN0ZXJpc2F0aW9uICh0aHJvdWdoIGV4dGVybmFsIGxpYnJhcmllcyBcCi1zdWNoIGFzIGZyZWV0eXBlKS4iCi0KLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE0NmM4MDQwZjJmNzM3YmNkMGM0MzVmZWIyYWIxYzJjIgotCi1ERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgZm9udHNwcm90byBsaWJmb250ZW5jIHpsaWIiCi1QUk9WSURFUyA9ICJ4Zm9udCIKLQotUEUgPSAiMSIKLQotWE9SR19QTiA9ICJsaWJYZm9udCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNTRlZTQyYmQxNzhkMThlYmM3YTczYWFjZmRlN2Y3OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjk0NWVhNjhkYTQ0NzEwMmYzZTZjMmI4OTZjMWQyMDYxZmQxMTVkZTk5NDA0ZmFjYzJhY2EzYWQ3MDEwZDcxIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWY3N2ZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuNC5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlhGb250OiBYIEZvbnQgcmFzdGVyaXNhdGlvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJsaWJYZm9udCBwcm92aWRlcyB2YXJpb3VzIHNlcnZpY2VzIGZvciBYIHNlcnZlcnMsIG1vc3QgXAorbm90YWJseSBmb250IHNlbGVjdGlvbiBhbmQgcmFzdGVyaXNhdGlvbiAodGhyb3VnaCBleHRlcm5hbCBsaWJyYXJpZXMgXAorc3VjaCBhcyBmcmVldHlwZSkuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKKworREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgorUFJPVklERVMgPSAieGZvbnQiCisKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWGZvbnQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTZlYWYxNTZlZGQ3OWI2ODAzOGI2YTdjNDRhYTllOWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWE3Zjc0OTA3NzRjODdmMjA1MmQxNDZkMWUwZTY0NTE4ZDMyZTY4NDgxODRhMTg2NTRlOGQwYmI1Nzg4MzI0MiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFkZjFkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJpYyBYS0Iga2V5bWFwIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJsaWJ4a2Jjb21tb24gaXMgYSBrZXltYXAgY29tcGlsZXIgYW5kIHN1cHBvcnQgbGlicmFyeSB3aGljaCBcCi1wcm9jZXNzZXMgYSByZWR1Y2VkIHN1YnNldCBvZiBrZXltYXBzIGFzIGRlZmluZWQgYnkgdGhlIFhLQiBzcGVjaWZpY2F0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueGtiY29tbW9uLm9yZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1MjVlZDk4MDllMWY4YTA3Y2Y0YmNlOGIwOWU4Yjg3IgotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NDdiYTYwOWNiMDIzOWI5NDYyMTI3ZDVjZjg5MDhlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYTU5MzA1ZDJlMTllNDdjMjdlYTA2NWMyZTBkZjk2ZWJhYzZhM2M2ZTk3ZTI4YWU1NjIwMDczYjYwODRlNjhiIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTBkMGI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjAuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJHZW5lcmljIFhLQiBrZXltYXAgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gImxpYnhrYmNvbW1vbiBpcyBhIGtleW1hcCBjb21waWxlciBhbmQgc3VwcG9ydCBsaWJyYXJ5IHdoaWNoIFwKK3Byb2Nlc3NlcyBhIHJlZHVjZWQgc3Vic2V0IG9mIGtleW1hcHMgYXMgZGVmaW5lZCBieSB0aGUgWEtCIHNwZWNpZmljYXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54a2Jjb21tb24ub3JnIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTUyNWVkOTgwOWUxZjhhMDdjZjRiY2U4YjA5ZThiODciCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKKworREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjdkMGU0YzRhMTM3ZDBhYzQ1YmY2YjMyOGM4NGMzYTgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4MjkyNjVkYjA0ZTBhZWJmYjA1OTFiNmRjMzM3N2I2NDU5OTU1ODE2Nzg0NmMzZjVlZTVjNWU1MzY0MWZlNmQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3MiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSxsaWJ4Y2IgeGtleWJvYXJkLWNvbmZpZywiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4wLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMDRjNDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJYUmVzOiBYIFJlc291cmNlIGV4dGVuc2lvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJsaWJYUmVzIHByb3ZpZGVzIGFuIFggV2luZG93IFN5c3RlbSBjbGllbnQgaW50ZXJmYWNlIHRvIFwKLXRoZSBSZXNvdXJjZSBleHRlbnNpb24gdG8gdGhlIFggcHJvdG9jb2wuICBUaGUgUmVzb3VyY2UgZXh0ZW5zaW9uIGFsbG93cyBcCi1mb3IgWCBjbGllbnRzIHRvIHNlZSBhbmQgbW9uaXRvciB0aGUgWCByZXNvdXJjZSB1c2FnZSBvZiB2YXJpb3VzIGNsaWVudHMgXAotKHBpeG1hcHMsIGV0IGFsKS4iCi0KLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjODk0NDFhOGRmMjYxYmRjNTY1ODc0NjVlMTNjN2ZhIgotCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IHJlc291cmNlcHJvdG8iCi0KLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWHJlcyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ1ZWYyOTIwNmE2YjU4MjU0YzgxYmVhMjhlYzZjOTVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2ODk5MDU0YWE4N2Y4MWIxN2JlY2M2OGU4NjQ1YjI0MGYxNDA0NjRjZjkwYzQyNjE2ZWJiMjYzZWM1ZmEwZTUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMzNGU0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlc18xLjIuMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIlhSZXM6IFggUmVzb3VyY2UgZXh0ZW5zaW9uIGxpYnJhcnkiCisKK0RFU0NSSVBUSU9OID0gImxpYlhSZXMgcHJvdmlkZXMgYW4gWCBXaW5kb3cgU3lzdGVtIGNsaWVudCBpbnRlcmZhY2UgdG8gXAordGhlIFJlc291cmNlIGV4dGVuc2lvbiB0byB0aGUgWCBwcm90b2NvbC4gIFRoZSBSZXNvdXJjZSBleHRlbnNpb24gYWxsb3dzIFwKK2ZvciBYIGNsaWVudHMgdG8gc2VlIGFuZCBtb25pdG9yIHRoZSBYIHJlc291cmNlIHVzYWdlIG9mIHZhcmlvdXMgY2xpZW50cyBcCisocGl4bWFwcywgZXQgYWwpLiIKKworcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGM4OTQ0MWE4ZGYyNjFiZGM1NjU4NzQ2NWUxM2M3ZmEiCisKK0RFUEVORFMgKz0gImxpYnhleHQgcmVzb3VyY2Vwcm90byIKKworUEUgPSAiMSIKKworWE9SR19QTiA9ICJsaWJYcmVzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWQ2ZDQ0M2QxYWJjOGUxZjZmYzFjNTdmYjI3NzI5YmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmY3NWMxNjQzNDg4ZTY0YTdjZmJjZWQyNzQ4NmYwZjk0NDgwMTMxOWM4NGMxOGQzYmQzZGE2YmYyOGM4MTJkNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlL2V4dGVuc2lvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZS9leHRlbnNpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYzllMDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZS9leHRlbnNpb25zLnBhdGNoCkBAIC0wLDAgKzEsMTcgQEAKK1dpdGggZ2xpYmMgMi4yNyBtZW1mZF9jcmVhdGUgaXMgYmVoaW5kIGEgX0dOVV9TT1VSQ0UgZ3VhcmQsIHNvIGNhbGwKK0FDX1VTRV9TWVNURU1fRVhURU5TSU9OUyB0byBnZXQgdGhhdCBkZWZpbmVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMGM5ODg3NS4uZWJmNGRlZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjksNCArMjksNiBAQCBBQ19DT05GSUdfU1JDRElSKFtNYWtlZmlsZS5hbV0pCisgQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKKyAKKytBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKKysKKyAjIEluaXRpYWxpemUgQXV0b21ha2UKKyBBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIGRpc3QtYnppcDJdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4yLmJiCmluZGV4IGFlMzRiMWYuLjFkZjA2OGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjIuYmIKQEAgLTEzLDUgKzEzLDcgQEAKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCitTUkNfVVJJICs9ICJmaWxlOi8vZXh0ZW5zaW9ucy5wYXRjaCIKKwogU1JDX1VSSVttZDVzdW1dID0gIjY2NjYyZTc2ODk5MTEyYzBmOTllMjJmMmZjNzc1YTdlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyMWIyZDFmZDc4YzFlZmJlMWYyYzE2ZGFlMWNiMjNmOGZkMjMxZGNmODkxNDY1YjhkZWJlNjM2YTkwNTRiMGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWE1MWFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJLZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFdpbmRvdyIKLQotREVTQ1JJUFRJT04gPSAiVGhlIG5vbi1hcmNoIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggXAotV2luZG93LiAgVGhlIGdvYWwgaXMgdG8gcHJvdmlkZSB0aGUgY29uc2lzdGVudCwgd2VsbC1zdHJ1Y3R1cmVkLCBcCi1mcmVxdWVudGx5IHJlbGVhc2VkIG9wZW4gc291cmNlIG9mIFgga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhIGZvciBYIFwKLVdpbmRvdyBTeXN0ZW0gaW1wbGVtZW50YXRpb25zLiAgVGhlIHByb2plY3QgaXMgdGFyZ2V0ZWQgdG8gWEtCLWJhc2VkIFwKLXN5c3RlbXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvWEtleWJvYXJkQ29uZmlnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD14a2V5Ym9hcmQtY29uZmlnIgotCi1MSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBlN2YyMWNhN2RiOTc1YzYzNDY3ZDJlNzYyNGExMmY5IgotCi1TUkNfVVJJID0gIiR7WE9SR19NSVJST1J9L2luZGl2aWR1YWwvZGF0YS94a2V5Ym9hcmQtY29uZmlnLyR7QlBOfS0ke1BWfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImFmOTQ5OGU4OTU0OTA3ZDBhNDdmMGY3YjNkMjFlMWVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwYzE3MDQ5ZmFlMTI5ZmMxNDg3NTY1NmRhOWFhMzA5OWUzMDMxZDZjZTBlZTFkNzdhYWUxOTBmZDllZGNlYzUiCi0KLVNFQ1RJT04gPSAieDExL2xpYnMiCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSB1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKLSAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZkODk0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIyLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCisKK0RFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKK1dpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAorZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCitXaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCitzeXN0ZW1zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKKworU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gImViNjFmYjNmZDQxOWU4MTdkZjU3MmIwYzhkOTRhODgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlYWVjOTk4OWZiYzQ0MzM1OGI0Mzg2NDQzN2I3YjZkMzljYWZmMDc4OTBhNGE4MDU1MTA1Y2U5ZmNhYTU5YmQiCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSB1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKKyAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCmluZGV4IDNhOTg5MjYuLmViNGI0MjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgpAQCAtMTcsNSArMTcsNSBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQveG9yZy9wcm90by9jYWxpYnJhdGVwcm90byBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgucGF0Y2g7YXBwbHk9eWVzIgogUyA9ICIke1dPUktESVJ9L2dpdCIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvL25vLXB5dGhvbi1uYXRpdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvL25vLXB5dGhvbi1uYXRpdmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YjYwODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotVXBzdHJlYW0gdXNlcyBBTV9QQVRIX1BZVEhPTiB0byBmaW5kIGEgcHl0aG9uIGJpbmFyeSBhbmQgYXNrIGl0IHdoZXJlIHRvIGluc3RhbGwKLWxpYnJhcmllcy4gIFRoaXMgbWVhbnMgd2UgZWl0aGVyIG5lZWQgdG8gZGVwZW5kIG9uIHB5dGhvbi1uYXRpdmUgKGxhcmdlIGJ1aWxkCi1kZXBlbmRlbmN5LCBlYXJseSBpbiB0aGUgYnVpbGQpIG9yIHVzZSB0aGUgaG9zdCBweXRob24gKHB5dGhvbmRpciByZWZsZWN0cyB0aGUKLWhvc3QgYW5kIG5vdCB0aGUgdGFyZ2V0LCBicmVha3MgYnVpbGRzKS4KLQotVGhlIHRoaXJkIG9wdGlvbiBpcyB0byBqdXN0IGhhcmRjb2RlIHRoZSBwYXRoIHdoZXJlIHRoZSBtb2R1bGUgZ29lcywgYXMgbW9zdAotY2FsbGVycyBvZiB0aGUgY29kZSB1c2UgcGtnLWNvbmZpZyB0byBmaW5kIHdoZXJlIGl0IHdhcyBpbnN0YWxsZWQgYW55d2F5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGQxNDBiZmUuLmM3YjY4ZGEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE0LDcgKzE0LDEwIEBAIGlmIHRlc3QgIiRYTUxMSU5UIiA9ICJubyI7IHRoZW4KLSAgICBBQ19NU0dfV0FSTihbeG1sbGludCBub3QgZm91bmQ7IHVuYWJsZSB0byB2YWxpZGF0ZSBhZ2FpbnN0IHNjaGVtYS5dKQotIGZpCi0KLS1BTV9QQVRIX1BZVEhPTihbMi41XSkKLStweXRob25kaXI9IiR7bGliZGlyfS94Y2ItcHJvdG8iCi0rQUNfU1VCU1QocHl0aG9uZGlyKQotK1BZVEhPTj0icHl0aG9uMyIKLStBQ19TVUJTVChQWVRIT04pCi0KLSB4Y2JpbmNsdWRlZGlyPScke2RhdGFkaXJ9L3hjYicKLSBBQ19TVUJTVCh4Y2JpbmNsdWRlZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEyLmJiCmluZGV4IGJjMDRiYzQuLjI1YTgzNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvXzEuMTIuYmIKQEAgLTExLDggKzExLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3NjNiMDgxY2IxMGMyMjM0MzViMDFlMDBkYzBhYmE3IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9kcmkyLnhtbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTI4O21kNT1mODc2M2IxM2ZmNDMyZTg1OTdlMGQ2MTBjZjU5OGU2NSIKIAotU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0L3hjYi1wcm90by0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL25vLXB5dGhvbi1uYXRpdmUucGF0Y2ggXAorU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0LyR7QlB9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXdoaXRlc3BhY2UtdXNlLWNvbnNpc3RlbnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1wcmludC1pcy1hLWZ1bmN0aW9uLWFuZC1uZWVkcy1wYXJlbnRoZXNlcy5wYXRjaCBcCiAgICAgICAgICAgICIKQEAgLTIxLDYgKzIwLDEwIEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCisjIEZvcmNlIHRoZSB1c2Ugb2YgUHl0aG9uIDMgYW5kIGEgc3BlY2lmaWMgbGlicmFyeSBwYXRoIHNvIHdlIGRvbid0IG5lZWQgdG8KKyMgZGVwZW5kIG9uIHB5dGhvbjMtbmF0aXZlCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiUFlUSE9OPXB5dGhvbjMgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0ke2xpYmRpcn0veGNiLXByb3RvIgorCiBQQUNLQUdFUyArPSAicHl0aG9uLXhjYmdlbiIKIAogRklMRVNfJHtQTn0gPSAiIgpAQCAtMzIsOSArMzUsMTkgQEAKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIE1ha2VmaWxlJ3MgZG9faW5zdGFsbCBjcmVhdGVzIC5weWMgZmlsZXMgZm9yIHB5dGhvbjMsIG5vdyBhbHNvIGNyZWF0ZQotICAgICMgdGhlbSBmb3IgcHl0aG9uMiBzbyB0aGF0IHRoZXkgd2lsbCBiZSByZWNvcmRlZCBieSBtYW5pZmVzdCwgYW5kIGNhbiBiZQotICAgICMgY2xlYW5lZCBjb3JyZWN0bHkuCi0gICAgcHl0aG9uIC1tIHB5X2NvbXBpbGUgJHtEfSR7bGliZGlyfS94Y2ItcHJvdG8veGNiZ2VuLyoucHkKKyMgTmVlZCB0byBkbyB0aGlzIGRhbmNlIGJlY2F1c2Ugd2UncmUgZm9yY2luZyB0aGUgdXNlIG9mIGhvc3QgUHl0aG9uIGFib3ZlIGFuZAorIyBpZiB4Y2ItcHJvdG8gaXMgYnVpbHQgd2l0aCBQeTMuNSBhbmQgdGhlbiByZS11c2VkIGZyb20gc3N0YXRlIG9uIGEgaG9zdCB3aXRoCisjIFB5My42IHRoZSBzZWNvbmQgYnVpbGQgd2lsbCB3cml0ZSBuZXcgY2FjaGUgZmlsZXMgaW50byB0aGUgc3lzcm9vdCB3aGljaCB3b24ndAorIyBiZSBsaXN0ZWQgaW4gdGhlIG1hbmlmZXN0IHNvIHdvbid0IGJlIGRlbGV0ZWQsIHJlc3VsdGluZyBpbiBhbiBlcnJvciBvbgorIyByZWJ1aWxkcy4gIFNvbHZlIHRoaXMgYnkgZGVsZXRpbmcgdGhlIGVudGlyZSBjYWNoZSBkaXJlY3Rvcnkgd2hlbiB0aGlzIHBhY2thZ2UKKyMgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzeXNyb290LgorU1NUQVRFUE9TVElOU1RGVU5DUyArPSAieGNiX3NzdGF0ZV9wb3N0aW5zdCIKK3hjYl9zc3RhdGVfcG9zdGluc3QoKSB7CisJaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3QiIC1vICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgXQorCXRoZW4KKwkJY2F0IDw8RU9GID4ke1NTVEFURV9JTlNUX1BPU1RSTX0KKyMhL2Jpbi9zaAorcm0gLXJmICR7bGliZGlyfS94Y2ItcHJvdG8veGNiZ2VuL19fcHljYWNoZV9fCitFT0YKKwlmaQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvL3hwcm90b19maXhfZm9yX3gzMi5wYXRjaAppbmRleCA4YTVmZjU4Li40ZjllZDk5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvL3hwcm90b19maXhfZm9yX3gzMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvL3hwcm90b19maXhfZm9yX3gzMi5wYXRjaApAQCAtMTAsMTMgKzEwLDE1IEBACiBSZWNlaXZlZCB0aGlzIHBhdGNoIGZyb20gSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMTIvMQogCi0tLS0geHByb3RvLTcuMC4yMi9YbWQuaC54MzIJMjAwOS0wNy0xMSAwNDoxOTo1MC4wMDAwMDAwMDAgLTA3MDAKLSsrKyB4cHJvdG8tNy4wLjIyL1htZC5oCTIwMTEtMTEtMzAgMTc6MTQ6MTkuMjkwMzk1ODkzIC0wODAwCitJbmRleDogeHByb3RvLTcuMC4zMS9YbWQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHhwcm90by03LjAuMzEub3JpZy9YbWQuaAorKysrIHhwcm90by03LjAuMzEvWG1kLmgKIEBAIC02Miw3ICs2Miw2IEBAIFNPRlRXQVJFLgogICAgICAgZGVmaW5lZChfX2lhNjRfXykgfHwgZGVmaW5lZChpYTY0KSB8fCBcCiAgICAgICBkZWZpbmVkKF9fc3BhcmM2NF9fKSB8fCBcCiAgICAgICBkZWZpbmVkKF9fczM5MHhfXykgfHwgXAogLSAgICAgZGVmaW5lZChfX2FtZDY0X18pIHx8IGRlZmluZWQoYW1kNjQpIHx8IFwKICAgICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAjICBkZWZpbmUgTE9ORzY0CQkJCS8qIDMyLzY0LWJpdCBhcmNoaXRlY3R1cmUgKi8KLSAjIGVuZGlmCisgIyAgaWYgIWRlZmluZWQoX19JTFAzMl9fKSAvKiBhbWQ2NC14MzIgaXMgMzJiaXQgKi8KKyAjICAgZGVmaW5lIExPTkc2NAkJCQkvKiAzMi82NC1iaXQgYXJjaGl0ZWN0dXJlICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiCmluZGV4IDRjNDQyYmMuLjU0MjBiN2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiCkBAIC0xMCw3ICsxMCw2IEBACiBTID0gIiR7V09SS0RJUn0iCiAKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L1gxMS94b3JnLmNvbmYiCi1DT05GRklMRVNfJHtQTn1fYXBwZW5kX2xpYmMtbXVzbCA9ICIgJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mLmQvMTAtcHJlbG9hZC1tb2R1bGVzLmNvbmYiCiAKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKaW5kZXggODYzZDgwYy4uY2YyMjg2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCkBAIC0xMTcsNyArMTE3LDYgQEAKICAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPS9ldGMvWDExIFwKICAgICAgICAgICAgICAgICAgLS1sb2NhbHN0YXRlZGlyPS92YXIgXAogICAgICAgICAgICAgICAgICAtLXdpdGgteGtiLW91dHB1dD0vdmFyL2xpYi94a2IgXAotICAgICAgICAgICAgICAgICBXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUj0ke1JFQ0lQRV9TWVNST09UfSBcCiAiCiAKIE9QRU5HTF9QS0dDT05GSUdTID0gImRyaSBnbHggZ2xhbW9yIGRyaTMgeHNobWZlbmNlIgpAQCAtMTMzLDcgKzEzMiw3IEBACiAjIERSSTMgcmVxdWlyZXMgeHNobWZlbmNlIHRvIGFsc28gYmUgZW5hYmxlZAogUEFDS0FHRUNPTkZJR1tkcmkzXSA9ICItLWVuYWJsZS1kcmkzLC0tZGlzYWJsZS1kcmkzLGRyaTNwcm90byIKIFBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCxnbHByb3RvIHZpcnR1YWwvbGliZ2wgdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHW2dsYW1vcl0gPSAiLS1lbmFibGUtZ2xhbW9yLC0tZGlzYWJsZS1nbGFtb3IsbGliZXBveHksbGliZWdsIgorUEFDS0FHRUNPTkZJR1tnbGFtb3JdID0gIi0tZW5hYmxlLWdsYW1vciwtLWRpc2FibGUtZ2xhbW9yLGxpYmVwb3h5IHZpcnR1YWwvbGliZ2JtLGxpYmVnbCIKIFBBQ0tBR0VDT05GSUdbdW53aW5kXSA9ICItLWVuYWJsZS1saWJ1bndpbmQsLS1kaXNhYmxlLWxpYnVud2luZCxsaWJ1bndpbmQiCiBQQUNLQUdFQ09ORklHW3hzaG1mZW5jZV0gPSAiLS1lbmFibGUteHNobWZlbmNlLC0tZGlzYWJsZS14c2htZmVuY2UsbGlieHNobWZlbmNlIgogUEFDS0FHRUNPTkZJR1t4bWx0b10gPSAiLS13aXRoLXhtbHRvLCAtLXdpdGhvdXQteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS14Zjg2cGNpQnVzLmMtdXNlLUludGVsLWRkeC1vbmx5LWZvci1wcmUtZ2VuNC1oYXJkd2FyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDVlZWM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIGQ3N2NkYzVlMWVlZTI2ODIxYWI5OGM5NDdhYmVhNTNmYjdiMThmZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPgorRGF0ZTogRnJpLCAxNiBNYXIgMjAxOCAxNzoyMzoxMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSB4Zjg2cGNpQnVzLmM6IHVzZSBJbnRlbCBkZHggb25seSBmb3IgcHJlLWdlbjQgaGFyZHdhcmUKKworVXNlIGludGVsIGRkeCBvbmx5IG9uIHByZS1nZW40IGh3LCBuZXdlciBvbmVzIHdpbGwgZmFsbCBiYWNrIHRvIG1vZGVzZXR0aW5nCitBdXRob3I6IFRpbW8gQWFsdG9uZW4gPHRqYWFsdG9uQGRlYmlhbi5vcmc+CisKK0luc3RlYWQgb2YgZGVmYXVsdGluZyB0byB0aGUgSW50ZWwgZHJpdmVyIGZvciBhbGwgSW50ZWwgaGFyZHdhcmUsIG9ubHkKK2RlZmF1bHQgaXQgZm9yIG9sZGVyIGhhcmR3YXJlIGZvciB3aGljaCBpdCBoYXMgc2hvd24gdG8gYmUgYmV0dGVyIGZvci4KKworT3RoZXJzIGZhbGwgdGhyb3VnaCB0byB0aGUgLW1vZGVzZXR0aW5nIGRlZmF1bHQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbRGViaWFuL0ZlZG9yYSBwYXRjaAoraHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy94b3JnLXgxMS1zZXJ2ZXIvYy9lZTUxNWU0NGIwN2UzNzY4OWFiZjQ4Y2YyZmZmYjQxNTc4ZjNiYzFkXQorCitTaWduZWQtb2ZmLWJ5OiBDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPgorLS0tCisgaHcveGZyZWU4Ni9jb21tb24veGY4NnBjaUJ1cy5jIHwgMTggKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2h3L3hmcmVlODYvY29tbW9uL3hmODZwY2lCdXMuYyBiL2h3L3hmcmVlODYvY29tbW9uL3hmODZwY2lCdXMuYworaW5kZXggZTYxYWUwY2Q0Li5kNzBjOTkxOTcgMTAwNjQ0CistLS0gYS9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMKKysrKyBiL2h3L3hmcmVlODYvY29tbW9uL3hmODZwY2lCdXMuYworQEAgLTExNzMsNyArMTE3MywyMyBAQCB4Zjg2VmlkZW9QdHJUb0RyaXZlckxpc3Qoc3RydWN0IHBjaV9kZXZpY2UgKmRldiwKKyAJCWNhc2UgMHgwYmVmOgorIAkJCS8qIFVzZSBmYmRldi92ZXNhIGRyaXZlciBvbiBPYWt0cmFpbCwgTWVkZmllbGQsIENEViAqLworIAkJCWJyZWFrOworLQkJZGVmYXVsdDoKKysJCS8qIERlZmF1bHQgdG8gaW50ZWwgb25seSBvbiBwcmUtZ2VuNCBjaGlwcyAqLworKwkJY2FzZSAweDM1Nzc6CisrCQljYXNlIDB4MjU2MjoKKysJCWNhc2UgMHgzNTgyOgorKwkJY2FzZSAweDM1OGU6CisrCQljYXNlIDB4MjU3MjoKKysJCWNhc2UgMHgyNTgyOgorKwkJY2FzZSAweDI1OGE6CisrCQljYXNlIDB4MjU5MjoKKysJCWNhc2UgMHgyNzcyOgorKwkJY2FzZSAweDI3YTI6CisrCQljYXNlIDB4MjdhZToKKysJCWNhc2UgMHgyOWIyOgorKwkJY2FzZSAweDI5YzI6CisrCQljYXNlIDB4MjlkMjoKKysJCWNhc2UgMHhhMDAxOgorKwkJY2FzZSAweGEwMTE6CisgCQkJZHJpdmVyTGlzdFswXSA9ICJpbnRlbCI7CisgCQkJYnJlYWs7CisgICAgICAgICB9CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMi1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtc2Nhbm5lci1hbmQtcHJvdG9jb2xzLWxvY2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFmZDA3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMi1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtc2Nhbm5lci1hbmQtcHJvdG9jb2xzLWxvY2F0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA5NjM0MjhmOTE0YzQyMjcwZDMzMTJkNGYwYzA4NDA1NjU1MjE1MzRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTYgTm92IDIwMTYgMDA6NDE6NTEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGNvbmZpZ3VyZS5hYzogRml4IHdheWxhbmQtc2Nhbm5lciBhbmQgcHJvdG9jb2xzIGxvY2F0aW9ucwotCi1XZSB3YW50IHRvIHVzZSB0aGUgd2F5bGFuZC1zY2FubmVyIGluIHBhdGggKG5hdGl2ZSBzeXNyb290KQotaW5zdGVhZCBvZiB1c2luZyBwa2ctY29uZmlnIHdoaWNoIGdpdmVzIHVzIHRhcmdldCBwYXRocy4KLQotVGhlIHByb3RvY29scyBwYXRocyBvbiB0aGUgb3RoZXIgaGFuZCBuZWVkIHRvIGJlIHByZWZpeGVkIHdpdGggdGhlCi0oYWxsYXJjaCkgc3lzcm9vdCBiZWNhdXNlLCBhZ2FpbiwgcGtnLWNvbmZpZyBnaXZlcyB1cyB0YXJnZXQgcGF0aHMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNiArKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1OGYxNTY3Li4zODNhN2RmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yNTI1LDExICsyNTI1LDkgQEAgaWYgdGVzdCAieCRYV0FZTEFORCIgPSB4eWVzOyB0aGVuCi0gCQlBQ19NU0dfRVJST1IoW1h3YXlsYW5kIHJlcXVpcmVzIENMT0NLX01PTk9UT05JQyBzdXBwb3J0Ll0pCi0gCWZpCi0gCi0tCVdBWUxBTkRfUFJFRklYPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXByZWZpeCB3YXlsYW5kLWNsaWVudGAKLS0JQUNfUEFUSF9QUk9HKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSwsCi0tCQkgICAgIFske1dBWUxBTkRfUFJFRklYfS9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSF0pCi0rCUFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0pCi0gCi0tCUFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsIGAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotKwlBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCAke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotIGZpCi0gCi0gCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE3LTEwOTcxLTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYzgwNDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE3LTEwOTcxLTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1Gcm9tIDIxNWY4OTQ5NjVkZjVmYjBiYjQ1YjEwN2Q4NDUyNGU3MDBkMjA3M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWwgU3JiIDxtc3JiQHN1c2UuY29tPgotRGF0ZTogV2VkLCAyNCBNYXkgMjAxNyAxNTo1NDo0MCArMDMwMAotU3ViamVjdDogW1BBVENIXSBkaXg6IERpc2FsbG93IEdlbmVyaWNFdmVudCBpbiBTZW5kRXZlbnQgcmVxdWVzdC4KLQotVGhlIFNlbmRFdmVudCByZXF1ZXN0IGhvbGRzIHhFdmVudCB3aGljaCBpcyBleGFjdGx5IDMyIGJ5dGVzIGxvbmcsIG5vIG1vcmUsCi1ubyBsZXNzLiBCb3RoIFByb2NTZW5kRXZlbnQgYW5kIFNQcm9jU2VuZEV2ZW50IHZlcmlmeSB0aGF0IHRoZSByZWNlaXZlZCBkYXRhCi1leGFjdGx5IG1hdGNoIHRoZSByZXF1ZXN0IHNpemUuIEhvd2V2ZXIgbm90aGluZyBzdG9wcyB0aGUgY2xpZW50IGZyb20gcGFzc2luZwotaW4gZXZlbnQgd2l0aCB4RXZlbnQ6OnR5cGUgPSBHZW5lcmljRXZlbnQgYW5kIGFueSB2YWx1ZSBvZgoteEdlbmVyaWNFdmVudDo6bGVuZ3RoLgotCi1JbiB0aGUgY2FzZSBvZiBQcm9jU2VuZEV2ZW50LCB0aGUgZXZlbnQgd2lsbCBiZSBldmVudHVhbGx5IHBhc3NlZCB0bwotV3JpdGVFdmVudHNUb0NsaWVudCB3aGljaCB3aWxsIHNlZSB0aGF0IGl0IGlzIEdlbmVyaWMgZXZlbnQgYW5kIGNvcHkgdGhlCi1hcmJpdHJhcnkgbGVuZ3RoIGZyb20gdGhlIHJlY2VpdmUgYnVmZmVyIChhbmQgcG9zc2libHkgcGFzdCBpdCkgYW5kIHNlbmQgaXQgdG8KLXRoZSBvdGhlciBjbGllbnQuIFRoaXMgYWxsb3dzIGNsaWVudHMgdG8gY29weSB1bml0aWFsaXplZCBoZWFwIG1lbW9yeSBvdXQgb2YgWAotc2VydmVyIG9yIHRvIGNyYXNoIGl0LgotCi1JbiBjYXNlIG9mIFNQcm9jU2VuZEV2ZW50LCBpdCB3aWxsIGF0dGVtcHQgdG8gc3dhcCB0aGUgaW5jb21pbmcgZXZlbnQgYnkKLWNhbGxpbmcgYSBzd2FwcGluZyBmdW5jdGlvbiBmcm9tIHRoZSBFdmVudFN3YXBWZWN0b3IgYXJyYXkuIFRoZSBzd2FwcGVkIGV2ZW50Ci1pcyB3cml0dGVuIHRvIHRhcmdldCBidWZmZXIsIHdoaWNoIGluIHRoaXMgY2FzZSBpcyBsb2NhbCB4RXZlbnQgdmFyaWFibGUuIFRoZQoteEV2ZW50IHZhcmlhYmxlIGlzIDMyIGJ5dGVzIGxvbmcsIGJ1dCB0aGUgc3dhcHBpbmcgZnVuY3Rpb25zIGZvciBHZW5lcmljRXZlbnRzCi1leHBlY3QgdGhhdCB0aGUgdGFyZ2V0IGJ1ZmZlciBoYXMgc2l6ZSBtYXRjaGluZyB0aGUgc2l6ZSBvZiB0aGUgc291cmNlCi1HZW5lcmljRXZlbnQuIFRoaXMgYWxsb3dzIGNsaWVudHMgdG8gY2F1c2Ugc3RhY2sgYnVmZmVyIG92ZXJmbG93cy4KLQotU2lnbmVkLW9mZi1ieTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLVJldmlld2VkLWJ5OiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLQotQ1ZFOiBDVkUtMjAxNy0xMDk3MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci9jb21taXQvP2lkPTIxNWY4OTQ5NjVkZjVmYjBiYjQ1YjEwN2Q4NDUyNGU3MDBkMjA3M2NdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBkaXgvZXZlbnRzLmMgIHwgICAgNiArKysrKysKLSBkaXgvc3dhcHJlcS5jIHwgICAgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9kaXgvZXZlbnRzLmMgYi9kaXgvZXZlbnRzLmMKLWluZGV4IDNlM2EwMWUuLmQzYTMzZWEgMTAwNjQ0Ci0tLS0gYS9kaXgvZXZlbnRzLmMKLSsrKyBiL2RpeC9ldmVudHMuYwotQEAgLTUzNjYsNiArNTM2NiwxMiBAQCBQcm9jU2VuZEV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gICAgICAgICBjbGllbnQtPmVycm9yVmFsdWUgPSBzdHVmZi0+ZXZlbnQudS51LnR5cGU7Ci0gICAgICAgICByZXR1cm4gQmFkVmFsdWU7Ci0gICAgIH0KLSsgICAgLyogR2VuZXJpYyBldmVudHMgY2FuIGhhdmUgdmFyaWFibGUgc2l6ZSwgYnV0IFNlbmRFdmVudCByZXF1ZXN0IGhvbGRzCi0rICAgICAgIGV4YWN0bHkgMzJCIG9mIGV2ZW50IGRhdGEuICovCi0rICAgIGlmIChzdHVmZi0+ZXZlbnQudS51LnR5cGUgPT0gR2VuZXJpY0V2ZW50KSB7Ci0rICAgICAgICBjbGllbnQtPmVycm9yVmFsdWUgPSBzdHVmZi0+ZXZlbnQudS51LnR5cGU7Ci0rICAgICAgICByZXR1cm4gQmFkVmFsdWU7Ci0rICAgIH0KLSAgICAgaWYgKHN0dWZmLT5ldmVudC51LnUudHlwZSA9PSBDbGllbnRNZXNzYWdlICYmCi0gICAgICAgICBzdHVmZi0+ZXZlbnQudS51LmRldGFpbCAhPSA4ICYmCi0gICAgICAgICBzdHVmZi0+ZXZlbnQudS51LmRldGFpbCAhPSAxNiAmJiBzdHVmZi0+ZXZlbnQudS51LmRldGFpbCAhPSAzMikgewotZGlmZiAtLWdpdCBhL2RpeC9zd2FwcmVxLmMgYi9kaXgvc3dhcHJlcS5jCi1pbmRleCA3MTllOWI4Li42Nzg1MDU5IDEwMDY0NAotLS0tIGEvZGl4L3N3YXByZXEuYwotKysrIGIvZGl4L3N3YXByZXEuYwotQEAgLTI5Miw2ICsyOTIsMTMgQEAgU1Byb2NTZW5kRXZlbnQoQ2xpZW50UHRyIGNsaWVudCkKLSAgICAgc3dhcGwoJnN0dWZmLT5kZXN0aW5hdGlvbik7Ci0gICAgIHN3YXBsKCZzdHVmZi0+ZXZlbnRNYXNrKTsKLSAKLSsgICAgLyogR2VuZXJpYyBldmVudHMgY2FuIGhhdmUgdmFyaWFibGUgc2l6ZSwgYnV0IFNlbmRFdmVudCByZXF1ZXN0IGhvbGRzCi0rICAgICAgIGV4YWN0bHkgMzJCIG9mIGV2ZW50IGRhdGEuICovCi0rICAgIGlmIChzdHVmZi0+ZXZlbnQudS51LnR5cGUgPT0gR2VuZXJpY0V2ZW50KSB7Ci0rICAgICAgICBjbGllbnQtPmVycm9yVmFsdWUgPSBzdHVmZi0+ZXZlbnQudS51LnR5cGU7Ci0rICAgICAgICByZXR1cm4gQmFkVmFsdWU7Ci0rICAgIH0KLSsKLSAgICAgLyogU3dhcCBldmVudCAqLwotICAgICBwcm9jID0gRXZlbnRTd2FwVmVjdG9yW3N0dWZmLT5ldmVudC51LnUudHlwZSAmIDAxNzddOwotICAgICBpZiAoIXByb2MgfHwgcHJvYyA9PSBOb3RJbXBsZW1lbnRlZCkgICAgICAgIC8qIG5vIHN3YXBwaW5nIHByb2M7IGludmFsaWQgZXZlbnQgdHlwZT8gKi8KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Yzk4ODdhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSA4Y2FlZDRkZjM2YjFmODAyYjQ5OTJlZGNmZDI4MmNiZWVlYzM1ZDlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLURhdGU6IFdlZCwgMjQgTWF5IDIwMTcgMTU6NTQ6NDEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gWGk6IFZlcmlmeSBhbGwgZXZlbnRzIGluIFByb2NYU2VuZEV4dGVuc2lvbkV2ZW50LgotCi1UaGUgcmVxdWlyZW1lbnQgaXMgdGhhdCBldmVudHMgaGF2ZSB0eXBlIGluIHJhbmdlCi1FWFRFTlNJT05fRVZFTlRfQkFTRS4ubGFzdEV2ZW50LCBidXQgaXQgd2FzIHRlc3RlZAotb25seSBmb3IgZmlyc3QgZXZlbnQgb2YgYWxsLgotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU3JiIDxtc3JiQHN1c2UuY29tPgotUmV2aWV3ZWQtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci1TaWduZWQtb2ZmLWJ5OiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgotCi1DVkU6IENWRS0yMDE3LTEwOTcxCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL2NvbW1pdC8/aWQ9OGNhZWQ0ZGYzNmIxZjgwMmI0OTkyZWRjZmQyODJjYmVlZWMzNWQ5ZF0KLQotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIFhpL3NlbmRleGV2LmMgfCAgIDEyICsrKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9YaS9zZW5kZXhldi5jIGIvWGkvc2VuZGV4ZXYuYwotaW5kZXggMWNmMTE4YS4uNWU2M2JmYyAxMDA2NDQKLS0tLSBhL1hpL3NlbmRleGV2LmMKLSsrKyBiL1hpL3NlbmRleGV2LmMKLUBAIC0xMTcsNyArMTE3LDcgQEAgU1Byb2NYU2VuZEV4dGVuc2lvbkV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gaW50Ci0gUHJvY1hTZW5kRXh0ZW5zaW9uRXZlbnQoQ2xpZW50UHRyIGNsaWVudCkKLSB7Ci0tICAgIGludCByZXQ7Ci0rICAgIGludCByZXQsIGk7Ci0gICAgIERldmljZUludFB0ciBkZXY7Ci0gICAgIHhFdmVudCAqZmlyc3Q7Ci0gICAgIFhFdmVudENsYXNzICpsaXN0OwotQEAgLTE0MSwxMCArMTQxLDEyIEBAIFByb2NYU2VuZEV4dGVuc2lvbkV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gICAgIC8qIFRoZSBjbGllbnQncyBldmVudCB0eXBlIG11c3QgYmUgb25lIGRlZmluZWQgYnkgYW4gZXh0ZW5zaW9uLiAqLwotIAotICAgICBmaXJzdCA9ICgoeEV2ZW50ICopICZzdHVmZlsxXSk7Ci0tICAgIGlmICghKChFWFRFTlNJT05fRVZFTlRfQkFTRSA8PSBmaXJzdC0+dS51LnR5cGUpICYmCi0tICAgICAgICAgIChmaXJzdC0+dS51LnR5cGUgPCBsYXN0RXZlbnQpKSkgewotLSAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gZmlyc3QtPnUudS50eXBlOwotLSAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICBmb3IgKGkgPSAwOyBpIDwgc3R1ZmYtPm51bV9ldmVudHM7IGkrKykgewotKyAgICAgICAgaWYgKCEoKEVYVEVOU0lPTl9FVkVOVF9CQVNFIDw9IGZpcnN0W2ldLnUudS50eXBlKSAmJgotKyAgICAgICAgICAgIChmaXJzdFtpXS51LnUudHlwZSA8IGxhc3RFdmVudCkpKSB7Ci0rICAgICAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gZmlyc3RbaV0udS51LnR5cGU7Ci0rICAgICAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIGxpc3QgPSAoWEV2ZW50Q2xhc3MgKikgKGZpcnN0ICsgc3R1ZmYtPm51bV9ldmVudHMpOwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE3LTEwOTcxLTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YmE0ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE3LTEwOTcxLTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIGJhMzM2YjI0MDUyMTIyYjEzNjQ4Njk2MWM4MmRlYWM3NmJiZGU0NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWwgU3JiIDxtc3JiQHN1c2UuY29tPgotRGF0ZTogV2VkLCAyNCBNYXkgMjAxNyAxNTo1NDo0MiArMDMwMAotU3ViamVjdDogW1BBVENIXSBYaTogRG8gbm90IHRyeSB0byBzd2FwIEdlbmVyaWNFdmVudC4KLQotVGhlIFNQcm9jWFNlbmRFeHRlbnNpb25FdmVudCBtdXN0IG5vdCBhdHRlbXB0IHRvIHN3YXAgR2VuZXJpY0V2ZW50IGJlY2F1c2UKLWl0IGlzIGFzc3VtaW5nIHRoYXQgdGhlIGV2ZW50IGhhcyBmaXhlZCBzaXplIGFuZCBnaXZlcyB0aGUgc3dhcHBpbmcgZnVuY3Rpb24KLXhFdmVudC1zaXplZCBidWZmZXIuCi0KLUEgR2VuZXJpY0V2ZW50IHdvdWxkIGJlIGxhdGVyIHJlamVjdGVkIGJ5IFByb2NYU2VuZEV4dGVuc2lvbkV2ZW50IGFueXdheS4KLQotU2lnbmVkLW9mZi1ieTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLVJldmlld2VkLWJ5OiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLQotQ1ZFOiBDVkUtMjAxNy0xMDk3MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci9jb21taXQvP2lkPWJhMzM2YjI0MDUyMTIyYjEzNjQ4Njk2MWM4MmRlYWM3NmJiZGU0NTVdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBYaS9zZW5kZXhldi5jIHwgICAxMCArKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvWGkvc2VuZGV4ZXYuYyBiL1hpL3NlbmRleGV2LmMKLWluZGV4IDVlNjNiZmMuLjVjMmUwZmMgMTAwNjQ0Ci0tLS0gYS9YaS9zZW5kZXhldi5jCi0rKysgYi9YaS9zZW5kZXhldi5jCi1AQCAtOTUsOSArOTUsMTcgQEAgU1Byb2NYU2VuZEV4dGVuc2lvbkV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gCi0gICAgIGV2ZW50UCA9ICh4RXZlbnQgKikgJnN0dWZmWzFdOwotICAgICBmb3IgKGkgPSAwOyBpIDwgc3R1ZmYtPm51bV9ldmVudHM7IGkrKywgZXZlbnRQKyspIHsKLSsgICAgICAgIGlmIChldmVudFAtPnUudS50eXBlID09IEdlbmVyaWNFdmVudCkgewotKyAgICAgICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGV2ZW50UC0+dS51LnR5cGU7Ci0rICAgICAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICAgICAgfQotKwotICAgICAgICAgcHJvYyA9IEV2ZW50U3dhcFZlY3RvcltldmVudFAtPnUudS50eXBlICYgMDE3N107Ci0tICAgICAgICBpZiAocHJvYyA9PSBOb3RJbXBsZW1lbnRlZCkgICAgIC8qIG5vIHN3YXBwaW5nIHByb2M7IGludmFsaWQgZXZlbnQgdHlwZT8gKi8KLSsgICAgICAgIC8qIG5vIHN3YXBwaW5nIHByb2M7IGludmFsaWQgZXZlbnQgdHlwZT8gKi8KLSsgICAgICAgIGlmIChwcm9jID09IE5vdEltcGxlbWVudGVkKSB7Ci0rICAgICAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gZXZlbnRQLT51LnUudHlwZTsKLSAgICAgICAgICAgICByZXR1cm4gQmFkVmFsdWU7Ci0rICAgICAgICB9Ci0gICAgICAgICAoKnByb2MpIChldmVudFAsICZldmVudFQpOwotICAgICAgICAgKmV2ZW50UCA9IGV2ZW50VDsKLSAgICAgfQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9tYWNyb190d2Vhay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9tYWNyb190d2Vhay5wYXRjaAppbmRleCBlYzBlZWE2Li5jMzZlNGU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL21hY3JvX3R3ZWFrLnBhdGNoCkBAIC01LDEzICs1LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IFl1IEtlIDxrZS55dUBpbnRlbC5jb20+CiAKLWRpZmYgLS1naXQgYS94b3JnLXNlcnZlci5tNCBiL3hvcmctc2VydmVyLm00Ci1pbmRleCBiZGVjZjYyLi4wNDBmZGI4IDEwMDY0NAotLS0tIGEveG9yZy1zZXJ2ZXIubTQKLSsrKyBiL3hvcmctc2VydmVyLm00CitJbmRleDogeG9yZy1zZXJ2ZXItMS4xOS42L3hvcmctc2VydmVyLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0geG9yZy1zZXJ2ZXItMS4xOS42Lm9yaWcveG9yZy1zZXJ2ZXIubTQKKysrKyB4b3JnLXNlcnZlci0xLjE5LjYveG9yZy1zZXJ2ZXIubTQKIEBAIC0yOCwxMCArMjgsMTIgQEAgZG5sCi0gIyBDaGVja3MgZm9yIHRoZSAkMSBkZWZpbmUgaW4geG9yZy1zZXJ2ZXIuaCAoZnJvbSB0aGUgc2RrKS4gIElmIGl0Ci0gIyBpcyBkZWZpbmVkLCB0aGVuIGFkZCAkMSB0byAkUkVRVUlSRURfTU9EVUxFUy4KKyAjIENoZWNrcyBmb3IgdGhlIE1BQ1JPIGRlZmluZSBpbiB4b3JnLXNlcnZlci5oIChmcm9tIHRoZSBzZGspLiAgSWYgaXQKKyAjIGlzIGRlZmluZWQsIHRoZW4gYWRkIHRoZSBnaXZlbiBQUk9UTyB0byAkUkVRVUlSRURfTU9EVUxFUy4KICAKICttNF9wYXR0ZXJuX2FsbG93KFBLR19DT05GSUdfU1lTUk9PVF9ESVIpCiArCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVlZjZjNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9tdXNsLWFybS1pbmItb3V0Yi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRml4LWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1tb2Rlc2V0dGluZy1GaXgtMTYtYml0LWRlcHRoLWJwcC1tb2RlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLVJlbW92ZS1jaGVjay1mb3ItdXNlU0lHSU8tb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDk3MS0yLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoIFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwMTVkMmZjNGI5ZjJiZmU3YTYyNmVkYjYzYTYyYzY1ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NzdhODE2NmUwMzQ3NDcxOTIzOGRmZTM5NmNlNjczYzQyMzQ3MzU0NjRkNmRhZGYyOTU5YjYwMGQyMGU1YTk4IgotCi0jIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCi0jIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgotCi1SUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgotUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjgwY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuNi5iYgpAQCAtMCwwICsxLDMyIEBACityZXF1aXJlIHhzZXJ2ZXIteG9yZy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL211c2wtYXJtLWluYi1vdXRiLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtY2hlY2stZm9yLUNMT0NLX01PTk9UT05JQy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1tb2Rlc2V0dGluZy1GaXgtMTYtYml0LWRlcHRoLWJwcC1tb2RlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLVJlbW92ZS1jaGVjay1mb3ItdXNlU0lHSU8tb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2ggXAorICAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjNlNDc3NzdmZjAzNGEzMzFhZWQyMzIyYjA3ODY5NGE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3MzI1MDJmMWRiMDAwY2YzNmEzNzZjZDBjMDEwZmZkYmYzMmVjZGQ3ZjFmYTA4YmE3ZjViZGY5NjAxY2MxOTciCisKKyMgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgbm93IGludGVncmF0ZWQgaW50byB0aGUgc2VydmVyLCBzbyBkZWNsYXJlIHRoZSBtaWdyYXRpb24KKyMgcGF0aCBmb3IgaW4tcGxhY2UgdXBncmFkZXMuCisKK1JSRVBMQUNFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCitSUFJPVklERVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHZpZGVvLXRlc3RzL3h2aWRlby10ZXN0c19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiCmluZGV4IDI2NjdkZDguLjFkMjc1YTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHZpZGVvLXRlc3RzL3h2aWRlby10ZXN0c19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LXh2aWRlbyIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZS8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWRldl90LWRlZmluaXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZS8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWRldl90LWRlZmluaXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0YjcxNTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1kZXZfdC1kZWZpbml0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA2YjViYmRmYWFjN2YyMTZmZThhMDJjNGNmMjllNWViMmFlZTVhNDA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTUgU2VwIDIwMTUgMDA6MDE6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgZGV2X3QgZGVmaW5pdGlvbgotCi1Bdm9pZHMgdGhlIGJ1aWxkIGZhaWx1cmVzIHdoZW4gc3lzL3R5cGVzLmggZG9lcyBub3QgZ2V0IGluY2x1ZGVkCi1pbmRpcmVjdGx5IHRocm91Z2ggb3RoZXIgaGVhZGVycy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotIGJsa3RyYWNlLmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2Jsa3RyYWNlLmggYi9ibGt0cmFjZS5oCi1pbmRleCAzODBhZWM3Li45NDRmYzA4IDEwMDY0NAotLS0tIGEvYmxrdHJhY2UuaAotKysrIGIvYmxrdHJhY2UuaAotQEAgLTUsNiArNSw3IEBACi0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxieXRlc3dhcC5oPgotICNpbmNsdWRlIDxlbmRpYW4uaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0gI2luY2x1ZGUgImJsa3RyYWNlX2FwaS5oIgotICNpbmNsdWRlICJyYnRyZWUuaCIKLS0tIAotMi41LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL2xkZmxhZ3MucGF0Y2gKaW5kZXggZGVhMWFhMi4uYWI5MDVjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbGRmbGFncy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZS9sZGZsYWdzLnBhdGNoCkBAIC0xMCw2ICsxMCw4IEBACiAKIFNpZ25lZC1vZmYtYnk6IEZhaGFkIFVzbWFuIDxmYWhhZF91c21hbkBtZW50b3IuY29tPgogCitJbmRleDogZ2l0L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKICsrKyBnaXQvTWFrZWZpbGUKIEBAIC0xLDUgKzEsNiBAQApAQCAtMTksNyArMjEsNyBAQAogIEFMTF9DRkxBR1MgPSAkKENGTEFHUykgLURfR05VX1NPVVJDRSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKICBQUk9HUwk9IGJsa3BhcnNlIGJsa3RyYWNlIHZlcmlmeV9ibGtwYXJzZSBibGtyYXd2ZXJpZnkgYmxraW9tb24KICBMSUJTCT0gLWxwdGhyZWFkCi1AQCAtMjMsMTkgKzI0LDE5IEBAIGJ0cmVwbGF5L2J0cmVwbGF5OgorQEAgLTI2LDE5ICsyNywxOSBAQCBidHJlcGxheS9idHJlcGxheToKICAJJChDQykgLW8gJCoubyAtYyAkKEFMTF9DRkxBR1MpICQ8CiAgCiAgYmxrcGFyc2U6IGJsa3BhcnNlLm8gYmxrcGFyc2VfZm10Lm8gcmJ0cmVlLm8gYWN0X21hc2subwpAQCAtNDQsNiArNDYsOCBAQAogIAogICQoUFJPR1MpOiB8IGRlcGVuZAogIAorSW5kZXg6IGdpdC9idHJlcGxheS9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL2J0cmVwbGF5L01ha2VmaWxlCiArKysgZ2l0L2J0cmVwbGF5L01ha2VmaWxlCiBAQCAtNyw2ICs3LDcgQEAKQEAgLTU1LDggKzU5LDggQEAKICBPQ0ZMQUdTCT0gLVVDT1VOVF9JT1MgLVVERUJVRyAtRE5ERUJVRwogIFhDRkxBR1MJPSAtRF9HTlVfU09VUkNFIC1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NAogQEAgLTMyLDEwICszMywxMCBAQCBjbGVhbjogZG9jc2NsZWFuCi0JJChDQykgJChDRkxBR1MpIC1jIC1vICQqLm8gJDwKLQorIAkkKENDKSAkKENGTEFHUykgLWMgLW8gJCoubyAkPAorIAogIGJ0cmVjb3JkOiBidHJlY29yZC5vCiAtCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCAkKGZpbHRlciAlLm8sJF4pCiArCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCAkKGZpbHRlciAlLm8sJF4pICQoTERGTEFHUykKQEAgLTY3LDYgKzcxLDggQEAKICAKICBkZXBlbmQ6CiAgCUAkKENDKSAtTU0gJChDRkxBR1MpICouYyAxPiAuZGVwZW5kCitJbmRleDogZ2l0L2J0dC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL2J0dC9NYWtlZmlsZQogKysrIGdpdC9idHQvTWFrZWZpbGUKIEBAIC03LDYgKzcsNyBAQApAQCAtODYsMTEgKzkyLDEzIEBACiAgCiAgaWZuZXEgKCQod2lsZGNhcmQgLmRlcGVuZCksKQogIGluY2x1ZGUgLmRlcGVuZAorSW5kZXg6IGdpdC9pb3dhdGNoZXIvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9pb3dhdGNoZXIvTWFrZWZpbGUKICsrKyBnaXQvaW93YXRjaGVyL01ha2VmaWxlCiBAQCAtMSw1ICsxLDYgQEAKLSBDICAgICAgPSBnY2MKLSBDRkxBR1MgID0gLVdhbGwgLU8wIC1nIC1XCisgQ0MgICAgICA9IGdjYworIENGTEFHUyAgPSAtV2FsbCAtTzIgLWcgLVcgLVd1bnVzZWQtcmVzdWx0CiArTERGTEFHUyA9CiAgQUxMX0NGTEFHUyA9ICQoQ0ZMQUdTKSAtRF9HTlVfU09VUkNFIC1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NAogIApAQCAtOTksOCArMTA3LDggQEAKICAJJChDQykgLW8gJCoubyAtYyAkKEFMTF9DRkxBR1MpICQ8CiAgCiAgaW93YXRjaGVyOiBibGtwYXJzZS5vIHBsb3QubyBtYWluLm8gdHJhY2Vycy5vIG1wc3RhdC5vIGZpby5vCi0tCSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKSAtbG0KLSsJJChDQykgJChBTExfQ0ZMQUdTKSAtbyAkQCAkKGZpbHRlciAlLm8sJF4pIC1sbSAkKExERkxBR1MpCistCSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKSAtbG0gLWxydAorKwkkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoZmlsdGVyICUubywkXikgLWxtICQoTERGTEFHUykgLWxydAogIAogIGRlcGVuZDoKICAJQCQoQ0MpIC1NTSAkKEFMTF9DRkxBR1MpICouYyAxPiAuZGVwZW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKaW5kZXggNzcwNTc1Zi4uNjYzZGUyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgpAQCAtNSwxMyArNSwxMiBAQAogCiBERVBFTkRTID0gImxpYmFpbyIKIAotU1JDUkVWID0gIjQzZmM4NzBjZTA0ZTk2M2RlZjQ1ZGZjMGQxZWQ0ZWEyMWVmMTBkNGIiCitTUkNSRVYgPSAiY2NhMTEzZjJmZTA3NTliOTFmZDZhMGUxMGZkY2RhMmMyOGYxOGE3ZSIKIAotUFYgPSAiMS4xLjArZ2l0JHtTUkNQVn0iCitQViA9ICIxLjIuMCtnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLmRrL2Jsa3RyYWNlLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItZGV2X3QtZGVmaW5pdGlvbi5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKaW5kZXggNTUyZWI2YS4uZWQ2ZDBlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOS5iYgpAQCAtOSw2ICs5LDcgQEAKIAogU1JDX1VSSSArPSAiIFwKIGZpbGU6Ly8wMDAxLURpc2FibGUtaW5zdGFsbGluZy1oZWFkZXItZmlsZS1wcm92aWRlZC1ieS1hbm90aGVyLXAucGF0Y2ggXAorZmlsZTovLzAwMDEtaW9jdGwuYy1GaXgtYnVpbGQtd2l0aC1saW51eC00LjEzLnBhdGNoIFwKICIKIAogRVhUUkFfT0VNQUtFPSdLRVJORUxfRElSPSIke1NUQUdJTkdfS0VSTkVMX0RJUn0iIFBSRUZJWD0iJHtEfSInCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCmluZGV4IDUwMzY2ZTcuLmFiMTViYzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCkBAIC0zLDExICszLDkgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAotU1JDX1VSSSA9ICJodHRwOi8vbndsLmNjL3B1Yi9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4IgorU1JDUkVWID0gIjg3ZDk1OWQ5YTI3OWMwNTViMzYxZGU4ZTczMGZhYjZhNzE0NGVkZDciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYjRlMGVkOWU1OTM3NzE2YzdjOGE3YmU4NDg5NWI2ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZjRjMGI0OWIzMGUyNjdkNzc2Zjc5NDU1ZDA5YzcwY2M5YzEyYzg2ZWVlNDAwYTBkMGEwY2QxZDhlNDY3OTUwIgotCi1TID0gIiR7V09SS0RJUn0vY3J5cHRvZGV2LWxpbnV4LSR7UFZ9IgorUyA9ICIke1dPUktESVJ9L2dpdCIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUFkZC10aGUtY29tcGlsZS1hbmQtaW5zdGFsbC1ydWxlcy1mb3ItY3J5cHRvZGV2LXRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoCmluZGV4IDNmMDI5OGIuLjg0ZmQyN2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUFkZC10aGUtY29tcGlsZS1hbmQtaW5zdGFsbC1ydWxlcy1mb3ItY3J5cHRvZGV2LXRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRkLXRoZS1jb21waWxlLWFuZC1pbnN0YWxsLXJ1bGVzLWZvci1jcnlwdG9kZXYtdGVzdC5wYXRjaApAQCAtMTQsMzcgKzE0LDM3IEBACiAgdGVzdHMvTWFrZWZpbGUgfCAgICA4ICsrKysrKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMzFjNGIzZi4uMmVjZjJhOSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTM0LDYgKzM0LDkgQEAgbW9kdWxlc19pbnN0YWxsOgotIAlAZWNobyAiSW5zdGFsbGluZyBjcnlwdG9kZXYuaCBpbiAkKFBSRUZJWCkvdXNyL2luY2x1ZGUvY3J5cHRvIC4uLiIKLSAJQGluc3RhbGwgLUQgY3J5cHRvL2NyeXB0b2Rldi5oICQoUFJFRklYKS91c3IvaW5jbHVkZS9jcnlwdG8vY3J5cHRvZGV2LmgKK0luZGV4OiBnaXQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9NYWtlZmlsZQorKysrIGdpdC9NYWtlZmlsZQorQEAgLTM1LDYgKzM1LDkgQEAgbW9kdWxlc19pbnN0YWxsOgorIAkkKE1BS0UpICQoS0VSTkVMX01BS0VfT1BUUykgbW9kdWxlc19pbnN0YWxsCisgCWluc3RhbGwgLW0gNjQ0IC1EIGNyeXB0by9jcnlwdG9kZXYuaCAkKERFU1RESVIpLyQoaW5jbHVkZWRpcikvY3J5cHRvL2NyeXB0b2Rldi5oCiAgCiAraW5zdGFsbF90ZXN0czoKICsJbWFrZSAtQyB0ZXN0cyBpbnN0YWxsIERFU1RESVI9JChQUkVGSVgpCiArCiAgY2xlYW46Ci0gCW1ha2UgLUMgJChLRVJORUxfRElSKSBTVUJESVJTPWBwd2RgIGNsZWFuCisgCSQoTUFLRSkgJChLRVJORUxfTUFLRV9PUFRTKSBjbGVhbgogIAlybSAtZiAkKGhvc3Rwcm9ncykgKn4KLUBAIC00Miw2ICs0NSw5IEBAIGNsZWFuOgorQEAgLTQzLDYgKzQ2LDkgQEAgY2xlYW46CiAgY2hlY2s6Ci0gCUNGTEFHUz0kKENSWVBUT0RFVl9DRkxBR1MpIEtFUk5FTF9ESVI9JChLRVJORUxfRElSKSBtYWtlIC1DIHRlc3RzIGNoZWNrCisgCUNGTEFHUz0kKENSWVBUT0RFVl9DRkxBR1MpIEtFUk5FTF9ESVI9JChLRVJORUxfRElSKSAkKE1BS0UpIC1DIHRlc3RzIGNoZWNrCiAgCiArdGVzdHByb2dzOgogKwlLRVJORUxfRElSPSQoS0VSTkVMX0RJUikgbWFrZSAtQyB0ZXN0cyB0ZXN0cHJvZ3MKICsKICBDUE9QVFMgPQotIGlmbmVxICgke1NIT1dfVFlQRVN9LCkKKyBpZm5lcSAoJChTSE9XX1RZUEVTKSwpCiAgQ1BPUFRTICs9IC0tc2hvdy10eXBlcwotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZpbGUKLWluZGV4IGM5ZjA0ZTguLmNkMjAyYWYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZQotKysrIGIvdGVzdHMvTWFrZWZpbGUKLUBAIC0xOSw2ICsxOSwxMiBAQCBleGFtcGxlLWFzeW5jLWhtYWMtb2JqcyA6PSBhc3luY19obWFjLm8KLSBleGFtcGxlLWFzeW5jLXNwZWVkLW9ianMgOj0gYXN5bmNfc3BlZWQubwotIGV4YW1wbGUtaGFzaGNyeXB0LXNwZWVkLW9ianMgOj0gaGFzaGNyeXB0X3NwZWVkLmMKK0luZGV4OiBnaXQvdGVzdHMvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0cy9NYWtlZmlsZQorKysrIGdpdC90ZXN0cy9NYWtlZmlsZQorQEAgLTIzLDYgKzIzLDEyIEBAIGJpbmRpciA9ICQoZXhlY3ByZWZpeCkvYmluCisgCisgYWxsOiAkKGhvc3Rwcm9ncykKICAKICtpbnN0YWxsOgogKwlpbnN0YWxsIC1kICAkKERFU1RESVIpL3Vzci9iaW4vdGVzdHNfY3J5cHRvZGV2CkBAIC01NSw5ICs1NSw5IEBACiAgY2hlY2s6ICQoaG9zdHByb2dzKQogIAkuL2NpcGhlcgogIAkuL2htYWMKLUBAIC0yOCw2ICszNCw4IEBAIGNoZWNrOiAkKGhvc3Rwcm9ncykKLSAJLi9jaXBoZXItZ2NtCi0gCS4vY2lwaGVyLWFlYWQKK0BAIC0zOCw2ICs0NCw4IEBAIGluc3RhbGw6CisgCQlpbnN0YWxsIC1tIDc1NSAkJHByb2cgJChERVNURElSKS8kKGJpbmRpcik7IFwKKyAJZG9uZQogIAogK3Rlc3Rwcm9nczogJChob3N0cHJvZ3MpCiArCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1pb2N0bC5jLUZpeC1idWlsZC13aXRoLWxpbnV4LTQuMTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1pb2N0bC5jLUZpeC1idWlsZC13aXRoLWxpbnV4LTQuMTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQxZWZhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLWlvY3RsLmMtRml4LWJ1aWxkLXdpdGgtbGludXgtNC4xMy5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGYwZDY5Nzc0YWZiMjdmZmM2MmJmMzUzNDY1ZmJhMTQ1ZTcwY2I4NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNCBTZXAgMjAxNyAxMTowNTowOCArMDIwMAorU3ViamVjdDogW1BBVENIXSBpb2N0bC5jOiBGaXggYnVpbGQgd2l0aCBsaW51eCA0LjEzCisKK2dpdC9pb2N0bC5jOjExMjc6MzogZXJyb3I6IHBvc2l0aW9uYWwgaW5pdGlhbGl6YXRpb24gb2YgZmllbGQgaW4gJ3N0cnVjdCcgZGVjbGFyZWQgd2l0aCAnZGVzaWduYXRlZF9pbml0JyBhdHRyaWJ1dGUgWy1XZXJyb3I9ZGVzaWduYXRlZC1pbml0XQorICAgezAsIH0sCisgICAgXgorbm90ZTogKG5lYXIgaW5pdGlhbGl6YXRpb24gZm9yICd2ZXJib3NpdHlfY3RsX2RpclsxXScpCitnaXQvaW9jdGwuYzoxMTM2OjM6IGVycm9yOiBwb3NpdGlvbmFsIGluaXRpYWxpemF0aW9uIG9mIGZpZWxkIGluICdzdHJ1Y3QnIGRlY2xhcmVkIHdpdGggJ2Rlc2lnbmF0ZWRfaW5pdCcgYXR0cmlidXRlIFstV2Vycm9yPWRlc2lnbmF0ZWQtaW5pdF0KKyAgIHswLCB9LAorICAgIF4KKworTGludXgga2VybmVsIGhhcyBhZGRlZCAtV2Vycm9yPWRlc2lnbmF0ZWQtaW5pdCBhcm91bmQgNC4xMSAoYzgzNGYwZThhOGIpCit0cmlnZ2VyaW5nIGJ1aWxkIGVycm9ycyB3aXRoIGdjYyA1IGFuZCA2IChidXQgbm90IHdpdGggZ2NjIDQpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBTdG9pY2EgPGNyaXN0aWFuLnN0b2ljYUBueHAuY29tPgorLS0tCisgaW9jdGwuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pb2N0bC5jIGIvaW9jdGwuYworaW5kZXggMDM4NTIwMy4uOGQ0YTE2MiAxMDA2NDQKKy0tLSBhL2lvY3RsLmMKKysrKyBiL2lvY3RsLmMKK0BAIC0xMTI0LDcgKzExMjQsNyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2ZXJib3NpdHlfY3RsX2RpcltdID0geworIAkJLm1vZGUgICAgICAgICAgID0gMDY0NCwKKyAJCS5wcm9jX2hhbmRsZXIgICA9IHByb2NfZG9pbnR2ZWMsCisgCX0sCistCXswLCB9LAorKwl7fSwKKyB9OworIAorIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHZlcmJvc2l0eV9jdGxfcm9vdFtdID0geworQEAgLTExMzMsNyArMTEzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHZlcmJvc2l0eV9jdGxfcm9vdFtdID0geworIAkJLm1vZGUgICAgICAgICAgID0gMDU1NSwKKyAJCS5jaGlsZCAgICAgICAgICA9IHZlcmJvc2l0eV9jdGxfZGlyLAorIAl9LAorLQl7MCwgfSwKKysJe30sCisgfTsKKyBzdGF0aWMgc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKnZlcmJvc2l0eV9zeXNjdGxfaGVhZGVyOworIHN0YXRpYyBpbnQgX19pbml0IGluaXRfY3J5cHRvZGV2KHZvaWQpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMKaW5kZXggZDc1OTk0Ni4uOWE5MGQ0NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMKQEAgLTcsOSArNywxMSBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvZHRjL2R0Yy5naXQgXAogICAgICAgICAgICBmaWxlOi8vbWFrZV9pbnN0YWxsLnBhdGNoIFwKLQkgICIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCi1FWFRSQV9PRU1BS0U9J1BSRUZJWD0iJHtwcmVmaXh9IiBMSUJESVI9IiR7bGliZGlyfSIgREVTVERJUj0iJHtEfSInCitFWFRSQV9PRU1BS0U9J05PX1BZVEhPTj0xIFBSRUZJWD0iJHtwcmVmaXh9IiBMSUJESVI9IiR7bGliZGlyfSIgREVTVERJUj0iJHtEfSInCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTIwLDQgKzIyLDQgQEAKIFBBQ0tBR0VTID0rICIke1BOfS1taXNjIgogRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vY29udmVydC1kdHN2MCAke2JpbmRpcn0vZnRkdW1wICR7YmluZGlyfS9kdGRpZmYiCiAKLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gImJhc2giCitSREVQRU5EU18ke1BOfS1taXNjICs9ICJiYXNoIGRpZmZ1dGlscyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvMDAwMS1jaGVja3MtVXNlLXByb3Blci1mb3JtYXQtbW9kaWZpZXItZm9yLXNpemVfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvMDAwMS1jaGVja3MtVXNlLXByb3Blci1mb3JtYXQtbW9kaWZpZXItZm9yLXNpemVfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWIzODRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy8wMDAxLWNoZWNrcy1Vc2UtcHJvcGVyLWZvcm1hdC1tb2RpZmllci1mb3Itc2l6ZV90LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gYzdhNGMzODE3Nzk2MTA3YmI4MjRhMWYxNzNmYWY5MGZhZTQ1Mzk2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+CitEYXRlOiBXZWQsIDI3IFNlcCAyMDE3IDE1OjA0OjA5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNoZWNrczogVXNlIHByb3BlciBmb3JtYXQgbW9kaWZpZXIgZm9yIHNpemVfdAorCitUaGUgc2l6ZSBvZiBzaXplX3QgY2FuIHZhcnkgYmV0d2VlbiBhcmNoaXRlY3R1cmVzLCBzbyB1c2luZyAlbGQgaXNuJ3QKK2dvaW5nIHRvIHdvcmsgb24gMzItYml0IGJ1aWxkcy4gVXNlIHRoZSAlenUgbW9kaWZpZXIgdG8gbWFrZSBzdXJlIGl0IGlzCithbHdheXMgY29ycmVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KK0Fja2VkLWJ5OiBSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3JnPgorU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNoZWNrcy5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NoZWNrcy5jIGIvY2hlY2tzLmMKK2luZGV4IDkwMmYyZTMuLjA4YTNhMjkgMTAwNjQ0CistLS0gYS9jaGVja3MuYworKysrIGIvY2hlY2tzLmMKK0BAIC05NzIsNyArOTcyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfcHJvcGVydHlfcGhhbmRsZV9hcmdzKHN0cnVjdCBjaGVjayAqYywKKyAJaW50IGNlbGwsIGNlbGxzaXplID0gMDsKKyAKKyAJaWYgKHByb3AtPnZhbC5sZW4gJSBzaXplb2YoY2VsbF90KSkgeworLQkJRkFJTChjLCBkdGksICJwcm9wZXJ0eSAnJXMnIHNpemUgKCVkKSBpcyBpbnZhbGlkLCBleHBlY3RlZCBtdWx0aXBsZSBvZiAlbGQgaW4gbm9kZSAlcyIsCisrCQlGQUlMKGMsIGR0aSwgInByb3BlcnR5ICclcycgc2l6ZSAoJWQpIGlzIGludmFsaWQsIGV4cGVjdGVkIG11bHRpcGxlIG9mICV6dSBpbiBub2RlICVzIiwKKyAJCSAgICAgcHJvcC0+bmFtZSwgcHJvcC0+dmFsLmxlbiwgc2l6ZW9mKGNlbGxfdCksIG5vZGUtPmZ1bGxwYXRoKTsKKyAJCXJldHVybjsKKyAJfQorQEAgLTExNjMsNyArMTE2Myw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2ludGVycnVwdHNfcHJvcGVydHkoc3RydWN0IGNoZWNrICpjLAorIAkJcmV0dXJuOworIAorIAlpZiAoaXJxX3Byb3AtPnZhbC5sZW4gJSBzaXplb2YoY2VsbF90KSkKKy0JCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJWxkIGluIG5vZGUgJXMiLAorKwkJRkFJTChjLCBkdGksICJwcm9wZXJ0eSAnJXMnIHNpemUgKCVkKSBpcyBpbnZhbGlkLCBleHBlY3RlZCBtdWx0aXBsZSBvZiAlenUgaW4gbm9kZSAlcyIsCisgCQkgICAgIGlycV9wcm9wLT5uYW1lLCBpcnFfcHJvcC0+dmFsLmxlbiwgc2l6ZW9mKGNlbGxfdCksCisgCQkgICAgIG5vZGUtPmZ1bGxwYXRoKTsKKyAKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy9tYWtlX2luc3RhbGwucGF0Y2gKaW5kZXggMTEyMDYxNy4uY2NmMTdiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy9tYWtlX2luc3RhbGwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy9tYWtlX2luc3RhbGwucGF0Y2gKQEAgLTIsMTEgKzIsMTEgQEAKIAogSW5kZXg6IGdpdC9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL01ha2VmaWxlCTIwMTEtMTEtMDIgMTQ6NTI6MTcuMjQzMTA0Nzc5IC0wNzAwCi0rKysgZ2l0L01ha2VmaWxlCTIwMTEtMTEtMDIgMTU6MDY6MDEuNTU1MTA0OTgyIC0wNzAwCi1AQCAtMTYxLDggKzE2MSw4IEBACi0gCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQoQklORElSKQotIAkkKElOU1RBTEwpICQoQklOKSAkKFNDUklQVFMpICQoREVTVERJUikkKEJJTkRJUikKKy0tLSBnaXQub3JpZy9NYWtlZmlsZQorKysrIGdpdC9NYWtlZmlsZQorQEAgLTE2OCw4ICsxNjgsOCBAQCBpbnN0YWxsLWJpbjogYWxsICQoU0NSSVBUUykKKyBpbnN0YWxsLWxpYjogYWxsCisgCUAkKFZFQ0hPKSBJTlNUQUxMLUxJQgogIAkkKElOU1RBTEwpIC1kICQoREVTVERJUikkKExJQkRJUikKIC0JJChJTlNUQUxMKSAkKExJQkZEVF9saWIpICQoREVTVERJUikkKExJQkRJUikKIC0JbG4gLXNmICQobm90ZGlyICQoTElCRkRUX2xpYikpICQoREVTVERJUikkKExJQkRJUikvJChMSUJGRFRfc29uYW1lKQpAQCAtMTQsNCArMTQsNCBAQAogKwlsbiAtc2YgJChMSUJGRFRfc29uYW1lKSAkKERFU1RESVIpJChMSUJESVIpLyQobm90ZGlyICQoTElCRkRUX2xpYikpCiAgCWxuIC1zZiAkKExJQkZEVF9zb25hbWUpICQoREVTVERJUikkKExJQkRJUikvbGliZmR0LiQoU0hBUkVETElCX0VYVCkKICAJJChJTlNUQUxMKSAtbSA2NDQgJChMSUJGRFRfYXJjaGl2ZSkgJChERVNURElSKSQoTElCRElSKQotIAkkKElOU1RBTEwpIC1kICQoREVTVERJUikkKElOQ0xVREVESVIpCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFkYjdiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBkdGMuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0dQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotCQkgICAgZmlsZTovL2xpYmZkdC9saWJmZHQuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTUyO21kNT1mYjM2MDk2MzE1MWY4ZWMyZDZjMDZiMDU1YmNiYjY4YyIKLQotU1JDUkVWID0gIjU1OGNkODFiZGQ0MzI3NjliNTliZmYwMTI0MGM0NGY4MmNmYjFhOWQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNDZjZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC41LmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgZHRjLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKwkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTM7ZW5kbGluZT01MjttZDU9ZmIzNjA5NjMxNTFmOGVjMmQ2YzA2YjA1NWJjYmI2OGMiCisKK1NSQ1JFViA9ICIyMmE2NWM1MzMxYzIyOTc5ZDQxNjczOGViNzU2Yjk1NDE2NzJlMDBkIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCmluZGV4IDNhMzk5MmEuLjhjY2Q4Y2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCkBAIC0xMiw2ICsxMiw3IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLXRvb2xzLmdpdCIKIFMgPSAiJHtXT1JLRElSfSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogZG9fY29tcGlsZSgpIHsgCiAJOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjg5YmVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiS2V4ZWMgZmFzdCByZWJvb3QgdG9vbHMiCi1ERVNDUklQVElPTiA9ICJLZXhlYyBpcyBhIGZhc3QgcmVib290IGZlYXR1cmUgdGhhdCBsZXRzIHlvdSByZWJvb3QgdG8gYSBuZXcgTGludXgga2VybmVsIgotQVVUSE9SID0gIkVyaWMgQmllZGVybWFuIgotSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy8iCi1TRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy9rZXhlYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWFmMTBmNmFlNGE4NzE1OTY1ZTY0OGFhNjg3YWQzZTA5IgotREVQRU5EUyA9ICJ6bGliIHh6IgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCi0gICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAotIgotCi1QUiA9ICJyMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qfHBvd2VycGMuKnxtaXBzLiopLShsaW51eHxmcmVlYnNkLiopJwotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgdGhlIHByZXBhY2thZ2VkIGNvbmZpZy5oIGZyb20gdGhlIHNvdXJjZSB0cmVlIGFzIGl0IG92ZXJyaWRlcwotICAgICMgdGhlIHNhbWUgZmlsZSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlIGFuZCBwbGFjZWQgaW4gdGhlIGJ1aWxkIHRyZWUKLSAgICBybSAtZiAke1N9L2luY2x1ZGUvY29uZmlnLmgKLQotICAgICMgUmVtb3ZlIHRoZSAnKi5kJyBmaWxlIHRvIG1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCi0gICAgZm9yIGRlcCBpbiBgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgJyouZCdgOyBkbwotICAgICAgICBkZXBfbm9fZD0iYGVjaG8gJGRlcCB8IHNlZCAncyMuZCQjIydgIgotICAgICAgICAjIFJlbW92ZSBmaWxlLmQgd2hlbiB0aGVyZSBpcyBhIGZpbGUubwotICAgICAgICBpZiBbIC1mICIkZGVwX25vX2QubyIgXTsgdGhlbgotICAgICAgICAgICAgcm0gLWYgJGRlcAotICAgICAgICBmaQotICAgIGRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGU5NGQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDNiYjczZTVlNTY0OWI0NTVlMTVkNWNhM2E3YWQxYTkwYzQ5NjA5NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAxMTo1NDozNiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBhcm02NDogRGlzYWJsZSBQSUMKLQotRml4Ci18IGNjMTogc29ycnksIHVuaW1wbGVtZW50ZWQ6IGNvZGUgbW9kZWwgJ2xhcmdlJyB3aXRoIC1mUElDCi18IG1ha2U6ICoqKiBbTWFrZWZpbGU6MTE4OiBwdXJnYXRvcnkvYXJjaC9hcm02NC9lbnRyeS5vXSBFcnJvciAxCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlIGIvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKLWluZGV4IDYzNmFiZWEuLjgwMDY4Y2EgMTAwNjQ0Ci0tLS0gYS9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZQotKysrIGIvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKLUBAIC0xLDYgKzEsNyBAQAotIAotIGFybTY0X1BVUkdBVE9SWV9FWFRSQV9DRkxBR1MgPSBcCi0gCS1tY21vZGVsPWxhcmdlIFwKLSsJLWZuby1QSUMgXAotIAktZm5vLXN0YWNrLXByb3RlY3RvciBcCi0gCS1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgXAotIAktV3VuZGVmIFwKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEta2V4ZWMtZXhudGVuZC10aGUtc2VtYW50aWNzLW9mLWtleGVjX2lvbWVtX2Zvcl9lYWNoXy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEta2V4ZWMtZXhudGVuZC10aGUtc2VtYW50aWNzLW9mLWtleGVjX2lvbWVtX2Zvcl9lYWNoXy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIyZjI4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1Gcm9tIDAyZWVkMGY4ZjI3NDhmZDc1NzlmNjllNTM3MzQ0NWI1MmIyYjg3NTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogTW9uLCAxNyBPY3QgMjAxNiAxMzo1Njo1OCArMDkwMAotU3ViamVjdDogW1BBVENIIDEvOV0ga2V4ZWM6IGV4bnRlbmQgdGhlIHNlbWFudGljcyBvZiBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lCi0KLVRoZSBjdXJyZW50IGtleGVjX2lvbWVtX2Zvcl9lYWNoX2xpbmUoKSBjb3VudHMgdXAgYWxsIHRoZSBsaW5lcyBmb3Igd2hpY2gKLWEgY2FsbGJhY2sgZnVuY3Rpb24gcmV0dXJucyB6ZXJvKDApIG9yIHBvc2l0aXZlLCBhbmQgb3RoZXJ3aXNlIGl0IHN0b3BzCi1mdXJ0aGVyIHNjYW5uaW5nLgotVGhpcyBiZWhhdmlvciBpcyBpbmNvdmVuaWVudCBpbiBzb21lIGNhc2VzLiBGb3IgaW5zdGFuY2UsIG9uIGFybTY0LCB3ZSB3YW50Ci10byBjb3VudCB1cCAiU3lzdGVtIFJBTSIgZW50cmllcywgYnV0IG5lZWQgdG8gc2tpcCAicmVzZXJ2ZWQiIGVudHJpZXMuCi0KLVNvIHRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgc2VtYW50aWNzIHNvIHRoYXQgd2Ugd2lsbCBjb250aW51ZSB0byBzY2FuCi1zdWNjZWVkaW5nIGVudHJpZXMgYnV0IG5vdCBjb3VudCBsaW5lcyBmb3Igd2hpY2ggYSBjYWxsYmFjayBmdW5jdGlvbgotcmV0dXJucyBwb3NpdGl2ZS4KLQotVGhlIGN1cnJlbnQgdXNlcnMgb2Yga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZSgpLCBhcm0sIHNoIGFuZCB4ODYsIHdpbGwgbm90Ci1iZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSBiZWNhdXNlCi0qIGFybQotICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gb25seSByZXR1cm5zIC0xIG9yIDAsIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mCi0gIGtleGVjX2lvbWVtX2Zvcl9lYWNoX2xpbmUoKSB3aWxsIG5ldmVyIGJlIHVzZWQuCi0qIHNoLCB4ODYKLSAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG1heSByZXR1cm4gKC0xIGZvciBzaCwpIDAgb3IgMSwgYnV0IGFsd2F5cyByZXR1cm5zCi0gIDEgb25jZSB3ZSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgYWxsb3dlZC4KLSAgRXZlbiBzbyB0aGUgY3VycmVudCBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCkgY291bnRzIHRoZW0gdXAuCi0gIFRoaXMgY2hhbmdlIGFjdHVhbGx5IGZpeGVzIHRoaXMgYnVnLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS90YWthaGlyby5ha2FzaGkva2V4ZWMtdG9vbHMuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGtleGVjL2tleGVjLWlvbWVtLmMgfCAxNSArKysrKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tleGVjL2tleGVjLWlvbWVtLmMgYi9rZXhlYy9rZXhlYy1pb21lbS5jCi1pbmRleCA0ODVhMmU4Li4wYTAyNzdhIDEwMDY0NAotLS0tIGEva2V4ZWMva2V4ZWMtaW9tZW0uYwotKysrIGIva2V4ZWMva2V4ZWMtaW9tZW0uYwotQEAgLTE4LDYgKzE4LDkgQEAKLSAgKiBJdGVyYXRlIG92ZXIgZWFjaCBsaW5lIGluIHRoZSBmaWxlIHJldHVybmVkIGJ5IHByb2NfaW9tZW0oKS4gSWYgbWF0Y2ggaXMKLSAgKiBOVUxMIG9yIGlmIHRoZSBsaW5lIG1hdGNoZXMgd2l0aCBvdXIgbWF0Y2gtcGF0dGVybiB0aGVuIGNhbGwgdGhlCi0gICogY2FsbGJhY2sgaWYgbm9uLU5VTEwuCi0rICogSWYgbWF0Y2ggaXMgTlVMTCwgY2FsbGJhY2sgc2hvdWxkIHJldHVybiBhIG5lZ2F0aXZlIGlmIGVycm9yLgotKyAqIE90aGVyd2lzZSB0aGUgaW50ZXJhdGlvbiBnb2VzIG9uLCBpbmNyZW1lbnRpbmcgbnIgYnV0IG9ubHkgaWYgY2FsbGJhY2sKLSsgKiByZXR1cm5zIDAgKG1hdGNoZWQpLgotICAqCi0gICogUmV0dXJuIHRoZSBudW1iZXIgb2YgbGluZXMgbWF0Y2hlZC4KLSAgKi8KLUBAIC0zNyw3ICs0MCw3IEBAIGludCBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKGNoYXIgKm1hdGNoLAotIAljaGFyICpzdHI7Ci0gCWludCBjb25zdW1lZDsKLSAJaW50IGNvdW50OwotLQlpbnQgbnIgPSAwOwotKwlpbnQgbnIgPSAwLCByZXQ7Ci0gCi0gCWZwID0gZm9wZW4oaW9tZW0sICJyIik7Ci0gCWlmICghZnApCi1AQCAtNTAsMTEgKzUzLDEzIEBAIGludCBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKGNoYXIgKm1hdGNoLAotIAkJc3RyID0gbGluZSArIGNvbnN1bWVkOwotIAkJc2l6ZSA9IGVuZCAtIHN0YXJ0ICsgMTsKLSAJCWlmICghbWF0Y2ggfHwgbWVtY21wKHN0ciwgbWF0Y2gsIHN0cmxlbihtYXRjaCkpID09IDApIHsKLS0JCQlpZiAoY2FsbGJhY2sKLS0JCQkgICAgJiYgY2FsbGJhY2soZGF0YSwgbnIsIHN0ciwgc3RhcnQsIHNpemUpIDwgMCkgewotLQkJCQlicmVhazsKLSsJCQlpZiAoY2FsbGJhY2spIHsKLSsJCQkJcmV0ID0gY2FsbGJhY2soZGF0YSwgbnIsIHN0ciwgc3RhcnQsIHNpemUpOwotKwkJCQlpZiAocmV0IDwgMCkKLSsJCQkJCWJyZWFrOwotKwkJCQllbHNlIGlmIChyZXQgPT0gMCkKLSsJCQkJCW5yKys7Ci0gCQkJfQotLQkJCW5yKys7Ci0gCQl9Ci0gCX0KLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS12bWNvcmUtZG1lc2ctRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS12bWNvcmUtZG1lc2ctRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGMyZjZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtdm1jb3JlLWRtZXNnLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gZDgxMTg3NWE0MWI0NjI4MDQwYWJhYWRhM2RhMjliN2I5NTkyZTc1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDkgSmFuIDIwMTYgMTc6MTY6MTYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdm1jb3JlLWRtZXNnOiBEZWZpbmUgX0dOVV9TT1VSQ0UKLQotbG9mZl90IGlzIGd1YXJkZWQgd2l0aCBfR05VX1NPVVJDRSBvbiBzb21lIEMgbGlicmFyeSBpbXBsZW1lbnRhdGlvbnMKLWUuZy4gbXVzbCBzaW5jZSB0aGlzIHR5cGUgaXMgbm90IGRlZmluZWQgYnkgUE9TSVguIERlZmluZSBfR05VX1NPVVJDRSB0bwotaW5jbHVkZSB0aGlzIGRlZmluZSwgaXQgc2hvdWxkIGhlbHAgY29tcGlsaW5nIG9uIG11c2wgd2hpbGUgbm90aGluZwotY2hhbmdlcyBmb3IgZ2xpYmMgYmFzZWQgc3lzdGVtcyBzaW5jZSB0aGVyZSBfR05VX1NPVVJDRSBpcyBhbHJlYWR5Ci1kZWZpbmVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSB2bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYyBiL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYwotaW5kZXggMDM2NDYzNi4uYThmNTZkZiAxMDA2NDQKLS0tLSBhL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYwotKysrIGIvdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jCi1AQCAtMSw0ICsxLDUgQEAKLSAjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwCi0rI2RlZmluZSBfR05VX1NPVVJDRQotICNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgMQotICNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMgNjQKLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEteDg2LXg4Nl82NC1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjAxZjUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEteDg2LXg4Nl82NC1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi0KLUZyb20gMTU1MGY4MWJmMTg4NmFhMDUyMGRhMGI2MTgxY2Q2MWMxYTc1ZDRhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFByYXR5dXNoIEFuYW5kIDxwYW5hbmRAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMTQgTWFyIDIwMTcgMTc6NTk6MjIgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIHg4Ni94ODZfNjQ6IEZpeCBmb3JtYXQgd2FybmluZyB3aXRoIGRpZSgpCi0KLUZlZG9yYSBrb2ppIHVzZXMgZ2NjIHZlcnNpb24gNy4wLjEtMC4xMi5mYzI3LCBhbmQgaXQgZ2VuZXJhdGVzIGEgYnVpbGQKLXdhcm5pbmcKLQotICAga2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi14ODYuYzoyOTk6MzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcKLSAgIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICAgICAgIGRpZShlcnJvcl9tc2cpOwotICAgICAgIF5+fgotICAgIGNjMTogc29tZSB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwotCi1lcnJvcl9tc2cgY2FuIGhhdmUgYSBmb3JtYXQgc3BlY2lmaWVyIGFzIHdlbGwgaW4gc3RyaW5nLiBJbiBzdWNoIGNhc2VzLAotaWYgdGhlcmUgaXMgbm8gb3RoZXIgYXJndW1lbnRzIGZvciB0aGUgZm9ybWF0IHZhcmlhYmxlIHRoZW4gY29kZSB3aWxsCi10cnkgdG8gYWNjZXNzIGEgbm9uIGV4aXN0aW5nIGFyZ3VtZW50LiBUaGVyZWZvcmUsIHVzZSAxc3QgYXJndW1lbnQgYXMKLWZvcm1hdCBzcGVjaWZpZXIgZm9yIHN0cmluZyBwcmludCBhbmQgcGFzcyBlcnJvcl9tc2cgYXMgdGhlIHN0cmluZyB0byBiZQotcHJpbnRlZC4KLQotV2hpbGUgZG9pbmcgdGhhdCxhbHNvIHVzZSBjb25zdCBxdWFsaWZpZXIgYmVmb3JlICJjaGFyICplcnJvcl9tc2ciLgotCi1TaWduZWQtb2ZmLWJ5OiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBTaW1vbiBIb3JtYW4gPGhvcm1zQHZlcmdlLm5ldC5hdT4KLS0tLQotIGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYteDg2LmMgICAgICB8IDQgKystLQotIGtleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi14ODZfNjQuYyB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi14ODYuYyBiL2tleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYteDg2LmMKLWluZGV4IGRlMDBkY2IuLmZlZGYwMzEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXg4Ni5jCi0rKysgYi9rZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXg4Ni5jCi1AQCAtOTEsNyArOTEsNyBAQCBpbnQgZWxmX3g4Nl9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCi0gCWNoYXIgKmNvbW1hbmRfbGluZSA9IE5VTEwsICptb2RpZmllZF9jbWRsaW5lID0gTlVMTDsKLSAJY29uc3QgY2hhciAqYXBwZW5kID0gTlVMTDsKLSAJY2hhciAqdG1wX2NtZGxpbmUgPSBOVUxMOwotLQljaGFyICplcnJvcl9tc2cgPSBOVUxMOwotKwljb25zdCBjaGFyICplcnJvcl9tc2cgPSBOVUxMOwotIAlpbnQgcmVzdWx0OwotIAlpbnQgY29tbWFuZF9saW5lX2xlbjsKLSAJY29uc3QgY2hhciAqcmFtZGlzazsKLUBAIC0yOTYsNiArMjk2LDYgQEAgb3V0OgotIAlmcmVlKGNvbW1hbmRfbGluZSk7Ci0gCWZyZWUobW9kaWZpZWRfY21kbGluZSk7Ci0gCWlmIChlcnJvcl9tc2cpCi0tCQlkaWUoZXJyb3JfbXNnKTsKLSsJCWRpZSgiJXMiLCBlcnJvcl9tc2cpOwotIAlyZXR1cm4gcmVzdWx0OwotIH0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMgYi9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMKLWluZGV4IGFlNjU2OTIuLmFkMjIzMTEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMKLSsrKyBiL2tleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi14ODZfNjQuYwotQEAgLTk5LDcgKzk5LDcgQEAgaW50IGVsZl94ODZfNjRfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAotICNkZWZpbmUgQVJHX1NUWUxFX05PTkUgIDIKLSAJaW50IG9wdDsKLSAJaW50IHJlc3VsdCA9IDA7Ci0tCWNoYXIgKmVycm9yX21zZyA9IE5VTEw7Ci0rCWNvbnN0IGNoYXIgKmVycm9yX21zZyA9IE5VTEw7Ci0gCi0gCS8qIFNlZSBvcHRpb25zLmggYW5kIGFkZCBhbnkgbmV3IG9wdGlvbnMgdGhlcmUgdG9vISAqLwotIAlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci1AQCAtMjc2LDYgKzI3Niw2IEBAIG91dDoKLSAJZnJlZShjb21tYW5kX2xpbmUpOwotIAlmcmVlKG1vZGlmaWVkX2NtZGxpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLWtleGVjLWdlbmVyYWxpemUtYW5kLXJlbmFtZS1nZXRfa2VybmVsX3N0ZXh0X3N5bS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDIta2V4ZWMtZ2VuZXJhbGl6ZS1hbmQtcmVuYW1lLWdldF9rZXJuZWxfc3RleHRfc3ltLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTNmMTNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDIta2V4ZWMtZ2VuZXJhbGl6ZS1hbmQtcmVuYW1lLWdldF9rZXJuZWxfc3RleHRfc3ltLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLUZyb20gZDI5ZjM3YmI2ZTkxMTRhYmE5NmM2MDYxMDNiMTEwZjUxMWJlZTlhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFByYXR5dXNoIEFuYW5kIDxwYW5hbmRAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMiBOb3YgMjAxNiAxNTowNToyNSArMDUzMAotU3ViamVjdDogW1BBVENIIDIvOV0ga2V4ZWM6IGdlbmVyYWxpemUgYW5kIHJlbmFtZSBnZXRfa2VybmVsX3N0ZXh0X3N5bSgpCi0KLWdldF9rZXJuZWxfc3RleHRfc3ltKCkgaGFzIGJlZW4gZGVmaW5lZCBmb3IgYm90aCBhcm0gYW5kIGkzODYuIE90aGVyCi1hcmNoaXRlY3R1cmUgbWlnaHQgbmVlZCBzb21lIG90aGVyIGtlcm5lbCBzeW1ib2wgYWRkcmVzcy4gVGhlcmVmb3JlIHJld3JpdGUKLXRoaXMgZnVuY3Rpb24gYXMgZ2VuZXJpYyBmdW5jdGlvbiB0byBnZXQgYW55IGtlcm5lbCBzeW1ib2wgYWRkcmVzcy4KLQotTW9yZSBvdmVyLCBrYWxsc3ltcyBpcyBub3QgYXJjaCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbiwgdGhlcmVmb3JlIGhhdmUKLWNvbW1vbiBmdW5jdGlvbiBmb3IgYWxsIGFyY2hlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogUHJhdHl1c2ggQW5hbmQgPHBhbmFuZEByZWRoYXQuY29tPgotW2NyZWF0ZWQgc3ltYm9scy5jXQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGtleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYyAgfCA0MCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0ga2V4ZWMvYXJjaC9pMzg2L2NyYXNoZHVtcC14ODYuYyB8IDI5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0ga2V4ZWMva2V4ZWMuaCAgICAgICAgICAgICAgICAgICB8ICAyICsrCi0ga2V4ZWMvc3ltYm9scy5jICAgICAgICAgICAgICAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQga2V4ZWMvc3ltYm9scy5jCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9NYWtlZmlsZSBiL2tleGVjL01ha2VmaWxlCi1pbmRleCAzOWYzNjVmLi4yYjRmYjNkIDEwMDY0NAotLS0tIGEva2V4ZWMvTWFrZWZpbGUKLSsrKyBiL2tleGVjL01ha2VmaWxlCi1AQCAtMjYsNiArMjYsNyBAQCBLRVhFQ19TUkNTX2Jhc2UgKz0ga2V4ZWMva2VybmVsX3ZlcnNpb24uYwotIEtFWEVDX1NSQ1NfYmFzZSArPSBrZXhlYy9sem1hLmMKLSBLRVhFQ19TUkNTX2Jhc2UgKz0ga2V4ZWMvemxpYi5jCi0gS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL2tleGVjLXhlbi5jCi0rS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL3N5bWJvbHMuYwotIAotIEtFWEVDX0dFTkVSQVRFRF9TUkNTICs9ICQoUFVSR0FUT1JZX0hFWF9DKQotIAotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYyBiL2tleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYwotaW5kZXggNGE4OWI1ZS4uMjQ1YzIxYSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYwotKysrIGIva2V4ZWMvYXJjaC9hcm0vY3Jhc2hkdW1wLWFybS5jCi1AQCAtNzMsNDggKzczLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgY3Jhc2hfZWxmX2luZm8gZWxmX2luZm8gPSB7Ci0gCi0gZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2VyX3BhZ2Vfb2Zmc2V0OwotIAotLS8qIFJldHJpZXZlIGtlcm5lbCBfc3RleHQgc3ltYm9sIHZpcnR1YWwgYWRkcmVzcyBmcm9tIC9wcm9jL2thbGxzeW1zICovCi0tc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfa2VybmVsX3N0ZXh0X3N5bSh2b2lkKQotLXsKLS0JY29uc3QgY2hhciAqa2FsbHN5bXMgPSAiL3Byb2Mva2FsbHN5bXMiOwotLQljb25zdCBjaGFyICpzdGV4dCA9ICJfc3RleHQiOwotLQljaGFyIHN5bVsxMjhdOwotLQljaGFyIGxpbmVbMTI4XTsKLS0JRklMRSAqZnA7Ci0tCXVuc2lnbmVkIGxvbmcgbG9uZyB2YWRkciA9IDA7Ci0tCWNoYXIgdHlwZTsKLS0KLS0JZnAgPSBmb3BlbihrYWxsc3ltcywgInIiKTsKLS0JaWYgKCFmcCkgewotLQkJZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgb3BlbiAlc1xuIiwga2FsbHN5bXMpOwotLQkJcmV0dXJuIDA7Ci0tCX0KLS0KLS0Jd2hpbGUoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBmcCkgIT0gTlVMTCkgewotLQkJdW5zaWduZWQgbG9uZyBsb25nIGFkZHI7Ci0tCi0tCQlpZiAoc3NjYW5mKGxpbmUsICIlTHggJWMgJXMiLCAmYWRkciwgJnR5cGUsIHN5bSkgIT0gMykKLS0JCQljb250aW51ZTsKLS0KLS0JCWlmIChzdHJjbXAoc3ltLCBzdGV4dCkgPT0gMCkgewotLQkJCWRiZ3ByaW50Zigia2VybmVsIHN5bWJvbCAlcyB2YWRkciA9ICUjbGx4XG4iLCBzdGV4dCwgYWRkcik7Ci0tCQkJdmFkZHIgPSBhZGRyOwotLQkJCWJyZWFrOwotLQkJfQotLQl9Ci0tCi0tCWZjbG9zZShmcCk7Ci0tCi0tCWlmICh2YWRkciA9PSAwKQotLQkJZnByaW50ZihzdGRlcnIsICJDYW5ub3QgZ2V0IGtlcm5lbCAlcyBzeW1ib2wgYWRkcmVzc1xuIiwgc3RleHQpOwotLQotLQlyZXR1cm4gdmFkZHI7Ci0tfQotLQotIHN0YXRpYyBpbnQgZ2V0X2tlcm5lbF9wYWdlX29mZnNldChzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywKLSAJCXN0cnVjdCBjcmFzaF9lbGZfaW5mbyAqZWxmX2luZm8pCi0gewotLQl1bnNpZ25lZCBsb25nIGxvbmcgc3RleHRfc3ltX2FkZHIgPSBnZXRfa2VybmVsX3N0ZXh0X3N5bSgpOwotKwl1bnNpZ25lZCBsb25nIGxvbmcgc3RleHRfc3ltX2FkZHIgPSBnZXRfa2VybmVsX3N5bSgiX3N0ZXh0Iik7Ci0gCWlmIChzdGV4dF9zeW1fYWRkciA9PSAwKSB7Ci0gCQlpZiAodXNlcl9wYWdlX29mZnNldCAhPSAoLTFVTEwpKSB7Ci0gCQkJZWxmX2luZm8tPnBhZ2Vfb2Zmc2V0ID0gdXNlcl9wYWdlX29mZnNldDsKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jIGIva2V4ZWMvYXJjaC9pMzg2L2NyYXNoZHVtcC14ODYuYwotaW5kZXggYWI4MzNkNC4uYWJmODJhNSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmMKLSsrKyBiL2tleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmMKLUBAIC0xMDIsMzUgKzEwMiw2IEBAIHN0YXRpYyBpbnQgZ2V0X2tlcm5lbF9wYWRkcihzdHJ1Y3Qga2V4ZWNfaW5mbyAqVU5VU0VEKGluZm8pLAotIAlyZXR1cm4gLTE7Ci0gfQotIAotLS8qIFJldHJpZXZlIGtlcm5lbCBzeW1ib2wgdmlydHVhbCBhZGRyZXNzIGZyb20gL3Byb2Mva2FsbHN5bXMgKi8KLS1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGdldF9rZXJuZWxfc3ltKGNvbnN0IGNoYXIgKnN5bWJvbCkKLS17Ci0tCWNvbnN0IGNoYXIgKmthbGxzeW1zID0gIi9wcm9jL2thbGxzeW1zIjsKLS0JY2hhciBzeW1bMTI4XTsKLS0JY2hhciBsaW5lWzEyOF07Ci0tCUZJTEUgKmZwOwotLQl1bnNpZ25lZCBsb25nIGxvbmcgdmFkZHI7Ci0tCWNoYXIgdHlwZTsKLS0KLS0JZnAgPSBmb3BlbihrYWxsc3ltcywgInIiKTsKLS0JaWYgKCFmcCkgewotLQkJZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgb3BlbiAlc1xuIiwga2FsbHN5bXMpOwotLQkJcmV0dXJuIDA7Ci0tCX0KLS0KLS0Jd2hpbGUoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBmcCkgIT0gTlVMTCkgewotLQkJaWYgKHNzY2FuZihsaW5lLCAiJUx4ICVjICVzIiwgJnZhZGRyLCAmdHlwZSwgc3ltKSAhPSAzKQotLQkJCWNvbnRpbnVlOwotLQkJaWYgKHN0cmNtcChzeW0sIHN5bWJvbCkgPT0gMCkgewotLQkJCWRiZ3ByaW50Zigia2VybmVsIHN5bWJvbCAlcyB2YWRkciA9ICUxNmxseFxuIiwgc3ltYm9sLCB2YWRkcik7Ci0tCQkJcmV0dXJuIHZhZGRyOwotLQkJfQotLQl9Ci0tCi0tCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBrZXJuZWwgJXMgc3ltYm9sIGFkZHJlc3NcbiIsIHN5bWJvbCk7Ci0tCXJldHVybiAwOwotLX0KLS0KLSAvKiBSZXRyaWV2ZSBpbmZvIHJlZ2FyZGluZyB2aXJ0dWFsIGFkZHJlc3Mga2VybmVsIGhhcyBiZWVuIGNvbXBpbGVkIGZvciBhbmQKLSAgKiBzaXplIG9mIHRoZSBrZXJuZWwgZnJvbSAvcHJvYy9rY29yZS4gQ3VycmVudCAvcHJvYy9rY29yZSBwYXJzaW5nIGZyb20KLSAgKiBmcm9tIGtleGVjLXRvb2xzIGZhaWxzIGJlY2F1c2Ugb2YgbWFsZm9ybWVkIGVsZiBub3Rlcy4gQSBrZXJuZWwgcGF0Y2ggaGFzCi1kaWZmIC0tZ2l0IGEva2V4ZWMva2V4ZWMuaCBiL2tleGVjL2tleGVjLmgKLWluZGV4IDkxOTRmMWMuLmI0ZmFmYWQgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9rZXhlYy5oCi0rKysgYi9rZXhlYy9rZXhlYy5oCi1AQCAtMzEyLDQgKzMxMiw2IEBAIGludCB4ZW5fa2V4ZWNfbG9hZChzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7Ci0gaW50IHhlbl9rZXhlY191bmxvYWQodWludDY0X3Qga2V4ZWNfZmxhZ3MpOwotIHZvaWQgeGVuX2tleGVjX2V4ZWModm9pZCk7Ci0gCi0rZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfa2VybmVsX3N5bShjb25zdCBjaGFyICp0ZXh0KTsKLSsKLSAjZW5kaWYgLyogS0VYRUNfSCAqLwotZGlmZiAtLWdpdCBhL2tleGVjL3N5bWJvbHMuYyBiL2tleGVjL3N5bWJvbHMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmVhNmUzMjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2tleGVjL3N5bWJvbHMuYwotQEAgLTAsMCArMSw0MSBAQAotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSAia2V4ZWMuaCIKLSsKLSsvKiBSZXRyaWV2ZSBrZXJuZWwgc3ltYm9sIHZpcnR1YWwgYWRkcmVzcyBmcm9tIC9wcm9jL2thbGxzeW1zICovCi0rdW5zaWduZWQgbG9uZyBsb25nIGdldF9rZXJuZWxfc3ltKGNvbnN0IGNoYXIgKnRleHQpCi0rewotKwljb25zdCBjaGFyICprYWxsc3ltcyA9ICIvcHJvYy9rYWxsc3ltcyI7Ci0rCWNoYXIgc3ltWzEyOF07Ci0rCWNoYXIgbGluZVsxMjhdOwotKwlGSUxFICpmcDsKLSsJdW5zaWduZWQgbG9uZyBsb25nIHZhZGRyID0gMDsKLSsJY2hhciB0eXBlOwotKwotKwlmcCA9IGZvcGVuKGthbGxzeW1zLCAiciIpOwotKwlpZiAoIWZwKSB7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBvcGVuICVzXG4iLCBrYWxsc3ltcyk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotKwl3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBmcCkgIT0gTlVMTCkgewotKwkJdW5zaWduZWQgbG9uZyBsb25nIGFkZHI7Ci0rCi0rCQlpZiAoc3NjYW5mKGxpbmUsICIlTHggJWMgJXMiLCAmYWRkciwgJnR5cGUsIHN5bSkgIT0gMykKLSsJCQljb250aW51ZTsKLSsKLSsJCWlmIChzdHJjbXAoc3ltLCB0ZXh0KSA9PSAwKSB7Ci0rCQkJZGJncHJpbnRmKCJrZXJuZWwgc3ltYm9sICVzIHZhZGRyID0gJSNsbHhcbiIsCi0rCQkJCQkJCQl0ZXh0LCBhZGRyKTsKLSsJCQl2YWRkciA9IGFkZHI7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCX0KLSsKLSsJZmNsb3NlKGZwKTsKLSsKLSsJaWYgKHZhZGRyID09IDApCi0rCQlmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBnZXQga2VybmVsICVzIHN5bWJvbCBhZGRyZXNzXG4iLCB0ZXh0KTsKLSsKLSsJcmV0dXJuIHZhZGRyOwotK30KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMi1wcGMtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMi1wcGMtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTFjMDZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDItcHBjLUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gMWM5NTZmYzhjNmI2MzI0ZDhkMzhiYmE1ZjllNjBhMDE4MDUxYzZmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDE2IE1hciAyMDE3IDE1OjM5OjA2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBwcGM6IEZpeCBmb3JtYXQgd2FybmluZyB3aXRoIGRpZSgpCi0KLUVuYWJsZSBjb21waWxpbmcga2V4ZWMtdG9vbHMgZm9yIHBwYyB3aXRoIC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5LgotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW01haWxpbmcgbGlzdF0KLS0tLQotIGtleGVjL2FyY2gvcHBjL2tleGVjLWVsZi1wcGMuYyAgICB8IDIgKy0KLSBrZXhlYy9hcmNoL3BwYy9rZXhlYy11SW1hZ2UtcHBjLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMKLWluZGV4IDI5MWYwNmQuLmFkNDNhZDEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMKLSsrKyBiL2tleGVjL2FyY2gvcHBjL2tleGVjLWVsZi1wcGMuYwotQEAgLTQ1Myw3ICs0NTMsNyBAQCBvdXQ6Ci0gCWlmICghdG1wX2NtZGxpbmUpCi0gCQlmcmVlKGNvbW1hbmRfbGluZSk7Ci0gCWlmIChlcnJvcl9tc2cpCi0tCQlkaWUoZXJyb3JfbXNnKTsKLSsJCWRpZSgiJXMiLCBlcnJvcl9tc2cpOwotIAotIAlyZXR1cm4gcmVzdWx0OwotIH0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL3BwYy9rZXhlYy11SW1hZ2UtcHBjLmMgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy11SW1hZ2UtcHBjLmMKLWluZGV4IDVlZWM2ZTQuLmU4ZjdhZGMgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL3BwYy9rZXhlYy11SW1hZ2UtcHBjLmMKLSsrKyBiL2tleGVjL2FyY2gvcHBjL2tleGVjLXVJbWFnZS1wcGMuYwotQEAgLTMwNiw3ICszMDYsNyBAQCBvdXQ6Ci0gCWlmICghdG1wX2NtZGxpbmUpCi0gCQlmcmVlKGNvbW1hbmRfbGluZSk7Ci0gCWlmIChlcnJvcl9tc2cpCi0tCQlkaWUoZXJyb3JfbXNnKTsKLSsJCWRpZSgiJXMiLCBlcnJvcl9tc2cpOwotIAlyZXR1cm4gcmV0OwotIH0KLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDMtYXJtNjQtaWRlbnRpZnktUEhZU19PRkZTRVQtY29ycmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMy1hcm02NC1pZGVudGlmeS1QSFlTX09GRlNFVC1jb3JyZWN0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMWMzMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMy1hcm02NC1pZGVudGlmeS1QSFlTX09GRlNFVC1jb3JyZWN0bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1Gcm9tIDE2ZGYxNzBhZDQ4MDhkMTJhY2Q1ZTkxOWFjNGY2ZTdmMzNhMjQ3YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogVGh1LCAxIFNlcCAyMDE2IDEwOjU3OjQyICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy85XSBhcm02NDogaWRlbnRpZnkgUEhZU19PRkZTRVQgY29ycmVjdGx5Ci0KLUR1ZSB0byB0aGUga2VybmVsIHBhdGNoLCBjb21taXQgZTdjZDE5MDM4NWQxICgiYXJtNjQ6IG1hcmsgcmVzZXJ2ZWQKLW1lbWJsb2NrIHJlZ2lvbnMgZXhwbGljaXRseSBpbiBpb21lbSIpLCB0aGUgY3VycmVudCBjb2RlIHdpbGwgbm90IGJlIGFibGUKLXRvIGlkZW50aWZ5IHRoZSBjb3JyZWN0IHZhbHVlIG9mIFBIWVNfT0ZGU0VUIGlmIHNvbWUgInJlc2VydmVkIiBtZW1vcnkKLXJlZ2lvbiwgd2hpY2ggaXMgbGlrZWx5IHRvIGJlIFVFRkkgcnVudGltZSBzZXJ2aWNlcyBjb2RlL2RhdGEsIGV4aXN0cyBhdAotYW4gYWRkcmVzcyBiZWxvdyB0aGUgZmlyc3QgIlN5c3RlbSBSQU0iIHJlZ2lvbnMuCi0KLVRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L2lvbWVtLmggICAgICAgfCAgNyArKysrKysrCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jIHwgMTIgKysrKysrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBrZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaCBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjdmZDY2ZWIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotQEAgLTAsMCArMSw3IEBACi0rI2lmbmRlZiBJT01FTV9ICi0rI2RlZmluZSBJT01FTV9ICi0rCi0rI2RlZmluZSBTWVNURU1fUkFNCQkiU3lzdGVtIFJBTVxuIgotKyNkZWZpbmUgSU9NRU1fUkVTRVJWRUQJCSJyZXNlcnZlZFxuIgotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotaW5kZXggMmU4ODM5YS4uOGFjODExZCAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCi1AQCAtMjEsNiArMjEsNyBAQAotICNpbmNsdWRlICJjcmFzaGR1bXAtYXJtNjQuaCIKLSAjaW5jbHVkZSAiZHQtb3BzLmgiCi0gI2luY2x1ZGUgImZzMmR0LmgiCi0rI2luY2x1ZGUgImlvbWVtLmgiCi0gI2luY2x1ZGUgImtleGVjLXN5c2NhbGwuaCIKLSAjaW5jbHVkZSAiYXJjaC9vcHRpb25zLmgiCi0gCi1AQCAtNDc1LDcgKzQ3NiwxNCBAQCBzdGF0aWMgaW50IGdldF9tZW1vcnlfcmFuZ2VzX2lvbWVtX2NiKHZvaWQgKmRhdGEsIGludCBuciwgY2hhciAqc3RyLAotIAkJcmV0dXJuIC0xOwotIAotIAlyID0gKHN0cnVjdCBtZW1vcnlfcmFuZ2UgKilkYXRhICsgbnI7Ci0tCXItPnR5cGUgPSBSQU5HRV9SQU07Ci0rCi0rCWlmICghc3RybmNtcChzdHIsIFNZU1RFTV9SQU0sIHN0cmxlbihTWVNURU1fUkFNKSkpCi0rCQlyLT50eXBlID0gUkFOR0VfUkFNOwotKwllbHNlIGlmICghc3RybmNtcChzdHIsIElPTUVNX1JFU0VSVkVELCBzdHJsZW4oSU9NRU1fUkVTRVJWRUQpKSkKLSsJCXItPnR5cGUgPSBSQU5HRV9SRVNFUlZFRDsKLSsJZWxzZQotKwkJcmV0dXJuIDE7Ci0rCi0gCXItPnN0YXJ0ID0gYmFzZTsKLSAJci0+ZW5kID0gYmFzZSArIGxlbmd0aCAtIDE7Ci0gCi1AQCAtNDk0LDcgKzUwMiw3IEBAIHN0YXRpYyBpbnQgZ2V0X21lbW9yeV9yYW5nZXNfaW9tZW1fY2Iodm9pZCAqZGF0YSwgaW50IG5yLCBjaGFyICpzdHIsCi0gc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc19pb21lbShzdHJ1Y3QgbWVtb3J5X3JhbmdlICphcnJheSwKLSAJdW5zaWduZWQgaW50ICpjb3VudCkKLSB7Ci0tCSpjb3VudCA9IGtleGVjX2lvbWVtX2Zvcl9lYWNoX2xpbmUoIlN5c3RlbSBSQU1cbiIsCi0rCSpjb3VudCA9IGtleGVjX2lvbWVtX2Zvcl9lYWNoX2xpbmUoTlVMTCwKLSAJCWdldF9tZW1vcnlfcmFuZ2VzX2lvbWVtX2NiLCBhcnJheSk7Ci0gCi0gCWlmICghKmNvdW50KSB7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDQtYXJtNjQta2R1bXAtaWRlbnRpZnktbWVtb3J5LXJlZ2lvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA0LWFybTY0LWtkdW1wLWlkZW50aWZ5LW1lbW9yeS1yZWdpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjYwMGYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDQtYXJtNjQta2R1bXAtaWRlbnRpZnktbWVtb3J5LXJlZ2lvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotRnJvbSA0OGE0Yzc4NzRkODI2NGRkYmZhZWMyZTk4NThkNzg2NmEyZDJlYjYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLURhdGU6IFdlZCwgNSBBdWcgMjAxNSAxMzoxNjozMCArMDkwMAotU3ViamVjdDogW1BBVENIIDQvOV0gYXJtNjQ6IGtkdW1wOiBpZGVudGlmeSBtZW1vcnkgcmVnaW9ucwotCi1UaGUgZm9sbG93aW5nIHJlZ2lvbnMgbmVlZCB0byBiZSBpZGVudGlmaWVkIGZvciBsYXRlciB1c2U6Ci0gYSkgbWVtb3J5IHJlZ2lvbnMgd2hpY2ggYmVsb25nIHRvIHRoZSAxc3Qga2VybmVsCi0gYikgdXNhYmxlIG1lbW9yeSByZXNlcnZlZCBmb3IgY3Jhc2ggZHVtcCBrZXJuZWwKLQotV2UgZ28gdGhyb3VnaCAvcHJvYy9pb21lbSB0byBmaW5kIG91dCBhKSBhbmQgYikgd2hpY2ggYXJlIG1hcmtlZAotYXMgIlN5c3RlbSBSQU0iIGFuZCAiQ3Jhc2gga2VybmVsIiwgcmVzcGVjdGl2ZWx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS90YWthaGlyby5ha2FzaGkva2V4ZWMtdG9vbHMuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGtleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUgICAgICAgICAgfCAgIDIgKwotIGtleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIGtleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmggfCAgMTQgKysrKystCi0ga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oICAgICAgICAgICB8ICAgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUgYi9rZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlCi1pbmRleCA3NGI2NzdmLi4yZDRhZTBlIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotQEAgLTYsNiArNiw4IEBAIGFybTY0X0ZTMkRUX0lOQ0xVREUgKz0gXAotIAotIGFybTY0X0RUX09QUyArPSBrZXhlYy9kdC1vcHMuYwotIAotK2FybTY0X01FTV9SRUdJT05TID0ga2V4ZWMvbWVtX3JlZ2lvbnMuYwotKwotIGFybTY0X0NQUEZMQUdTICs9IC1JICQoc3JjZGlyKS9rZXhlYy8KLSAKLSBhcm02NF9LRVhFQ19TUkNTICs9IFwKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotaW5kZXggZDIyNzJjOC4uZGNhY2E0MyAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLUBAIC0xLDUgKzEsMTMgQEAKLSAvKgotICAqIEFSTTY0IGNyYXNoZHVtcC4KLSsgKiAgICAgcGFydGx5IGRlcml2ZWQgZnJvbSBhcm0gaW1wbGVtZW50YXRpb24KLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2IExpbmFybyBMaW1pdGVkCi0rICogQXV0aG9yOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICAqLwotIAotICNkZWZpbmUgX0dOVV9TT1VSQ0UKLUBAIC0xMCwxMiArMTgsMTAyIEBACi0gI2luY2x1ZGUgImtleGVjLmgiCi0gI2luY2x1ZGUgImNyYXNoZHVtcC5oIgotICNpbmNsdWRlICJjcmFzaGR1bXAtYXJtNjQuaCIKLSsjaW5jbHVkZSAiaW9tZW0uaCIKLSAjaW5jbHVkZSAia2V4ZWMtYXJtNjQuaCIKLSAjaW5jbHVkZSAia2V4ZWMtZWxmLmgiCi0rI2luY2x1ZGUgIm1lbV9yZWdpb25zLmgiCi0gCi0tc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnMgPSB7fTsKLSsvKiBtZW1vcnkgcmFuZ2VzIG9uIGNyYXNoZWQga2VybmVsICovCi0rc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfbWVtb3J5X3Jhbmdlc1tDUkFTSF9NQVhfTUVNT1JZX1JBTkdFU107Ci0rc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2VzIGNyYXNoX21lbW9yeV9yZ25zID0gewotKwkuc2l6ZSA9IDAsCi0rCS5tYXhfc2l6ZSA9IENSQVNIX01BWF9NRU1PUllfUkFOR0VTLAotKwkucmFuZ2VzID0gY3Jhc2hfbWVtb3J5X3JhbmdlcywKLSt9OwotKwotKy8qIG1lbW9yeSByYW5nZSByZXNlcnZlZCBmb3IgY3Jhc2hrZXJuZWwgKi8KLStzdHJ1Y3QgbWVtb3J5X3JhbmdlIGNyYXNoX3Jlc2VydmVkX21lbTsKLStzdHJ1Y3QgbWVtb3J5X3JhbmdlcyB1c2FibGVtZW1fcmducyA9IHsKLSsJLnNpemUgPSAwLAotKwkubWF4X3NpemUgPSAxLAotKwkucmFuZ2VzID0gJmNyYXNoX3Jlc2VydmVkX21lbSwKLSt9OwotKwotKy8qCi0rICogaW9tZW1fcmFuZ2VfY2FsbGJhY2soKSAtIGNhbGxiYWNrIGNhbGxlZCBmb3IgZWFjaCBpb21lbSByZWdpb24KLSsgKiBAZGF0YTogbm90IHVzZWQKLSsgKiBAbnI6IG5vdCB1c2VkCi0rICogQHN0cjogbmFtZSBvZiB0aGUgbWVtb3J5IHJlZ2lvbgotKyAqIEBiYXNlOiBzdGFydCBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgcmVnaW9uCi0rICogQGxlbmd0aDogc2l6ZSBvZiB0aGUgbWVtb3J5IHJlZ2lvbgotKyAqCi0rICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBtZW1vcnkgcmVnaW9uIGZvdW5kIGluIC9wcm9jL2lvbWVtLgotKyAqIEl0IGxvY2F0ZXMgc3lzdGVtIFJBTSBhbmQgY3Jhc2hrZXJuZWwgcmVzZXJ2ZWQgbWVtb3J5IGFuZCBwbGFjZXMgdGhlc2UgdG8KLSsgKiB2YXJpYWJsZXMsIHJlc3BlY3RpdmVseSwgY3Jhc2hfbWVtb3J5X3JhbmdlcyBhbmQgY3Jhc2hfcmVzZXJ2ZWRfbWVtLgotKyAqLwotKwotK3N0YXRpYyBpbnQgaW9tZW1fcmFuZ2VfY2FsbGJhY2sodm9pZCAqVU5VU0VEKGRhdGEpLCBpbnQgVU5VU0VEKG5yKSwKLSsJCQkJY2hhciAqc3RyLCB1bnNpZ25lZCBsb25nIGxvbmcgYmFzZSwKLSsJCQkJdW5zaWduZWQgbG9uZyBsb25nIGxlbmd0aCkKLSt7Ci0rCWlmIChzdHJuY21wKHN0ciwgQ1JBU0hfS0VSTkVMLCBzdHJsZW4oQ1JBU0hfS0VSTkVMKSkgPT0gMCkKLSsJCXJldHVybiBtZW1fcmVnaW9uc19hZGQoJnVzYWJsZW1lbV9yZ25zLAotKwkJCQkgICAgICAgYmFzZSwgbGVuZ3RoLCBSQU5HRV9SQU0pOwotKwllbHNlIGlmIChzdHJuY21wKHN0ciwgU1lTVEVNX1JBTSwgc3RybGVuKFNZU1RFTV9SQU0pKSA9PSAwKQotKwkJcmV0dXJuIG1lbV9yZWdpb25zX2FkZCgmY3Jhc2hfbWVtb3J5X3JnbnMsCi0rCQkJCSAgICAgICBiYXNlLCBsZW5ndGgsIFJBTkdFX1JBTSk7Ci0rCi0rCXJldHVybiAwOwotK30KLSAKLSBpbnQgaXNfY3Jhc2hrZXJuZWxfbWVtX3Jlc2VydmVkKHZvaWQpCi0gewotKwlpZiAoIWNyYXNoX3Jlc2VydmVkX21lbS5lbmQpCi0rCQlrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKE5VTEwsIGlvbWVtX3JhbmdlX2NhbGxiYWNrLCBOVUxMKTsKLSsKLSsJcmV0dXJuIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCAhPSBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kOwotK30KLSsKLSsvKgotKyAqIGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKCkgLSByZWFkIHN5c3RlbSBwaHlzaWNhbCBtZW1vcnkKLSsgKgotKyAqIEZ1bmN0aW9uIHJlYWRzIHRocm91Z2ggc3lzdGVtIHBoeXNpY2FsIG1lbW9yeSBhbmQgc3RvcmVzIGZvdW5kIG1lbW9yeQotKyAqIHJlZ2lvbnMgaW4gY3Jhc2hfbWVtb3J5X3Jhbmdlcy4KLSsgKiBSZWdpb25zIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLgotKyAqCi0rICogUmV0dXJucyAwIGluIGNhc2Ugb2Ygc3VjY2VzcyBhbmQgLTEgb3RoZXJ3aXNlIChlcnJubyBpcyBzZXQpLgotKyAqLwotK3N0YXRpYyBpbnQgY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXModm9pZCkKLSt7Ci0rCS8qCi0rCSAqIEZpcnN0IHJlYWQgYWxsIG1lbW9yeSByZWdpb25zIHRoYXQgY2FuIGJlIGNvbnNpZGVyZWQgYXMKLSsJICogc3lzdGVtIG1lbW9yeSBpbmNsdWRpbmcgdGhlIGNyYXNoIGFyZWEuCi0rCSAqLwotKwlpZiAoIXVzYWJsZW1lbV9yZ25zLnNpemUpCi0rCQlrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKE5VTEwsIGlvbWVtX3JhbmdlX2NhbGxiYWNrLCBOVUxMKTsKLSsKLSsJLyogYWxsb3cgb25seSBhIHNpbmdsZSByZWdpb24gZm9yIGNyYXNoIGR1bXAga2VybmVsICovCi0rCWlmICh1c2FibGVtZW1fcmducy5zaXplICE9IDEpIHsKLSsJCWVycm5vID0gRUlOVkFMOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCWRiZ3ByaW50X21lbV9yYW5nZSgiUmVzZXJ2ZWQgbWVtb3J5IHJhbmdlIiwgJmNyYXNoX3Jlc2VydmVkX21lbSwgMSk7Ci0rCi0rCWlmIChtZW1fcmVnaW9uc19leGNsdWRlKCZjcmFzaF9tZW1vcnlfcmducywgJmNyYXNoX3Jlc2VydmVkX21lbSkpIHsKLSsJCWZwcmludGYoc3RkZXJyLAotKwkJCSJFcnJvcjogTnVtYmVyIG9mIGNyYXNoIG1lbW9yeSByYW5nZXMgZXhjZWRlZWQgdGhlIG1heCBsaW1pdFxuIik7Ci0rCQllcnJubyA9IEVOT01FTTsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwkvKgotKwkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgbWVtb3J5IHJlZ2lvbnMgYXJlIHNvcnRlZC4KLSsJICovCi0rCW1lbV9yZWdpb25zX3NvcnQoJmNyYXNoX21lbW9yeV9yZ25zKTsKLSsKLSsJZGJncHJpbnRfbWVtX3JhbmdlKCJDb3JlZHVtcCBtZW1vcnkgcmFuZ2VzIiwKLSsJCQkgICBjcmFzaF9tZW1vcnlfcmducy5yYW5nZXMsIGNyYXNoX21lbW9yeV9yZ25zLnNpemUpOwotKwotIAlyZXR1cm4gMDsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaCBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmgKLWluZGV4IGYzM2M3YTIuLjA3YTBlZDAgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1AQCAtMSwxMiArMSwyMiBAQAotIC8qCi0gICogQVJNNjQgY3Jhc2hkdW1wLgotKyAqCi0rICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMTYgTGluYXJvIExpbWl0ZWQKLSsgKiBBdXRob3I6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci0rICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0rICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gICovCi0gCi0tI2lmICFkZWZpbmVkKENSQVNIRFVNUF9BUk02NF9IKQotKyNpZm5kZWYgQ1JBU0hEVU1QX0FSTTY0X0gKLSAjZGVmaW5lIENSQVNIRFVNUF9BUk02NF9ICi0gCi0gI2luY2x1ZGUgImtleGVjLmgiCi0gCi0rI2RlZmluZSBDUkFTSF9NQVhfTUVNT1JZX1JBTkdFUwkzMgotKwotIGV4dGVybiBzdHJ1Y3QgbWVtb3J5X3JhbmdlcyB1c2FibGVtZW1fcmduczsKLStleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZSBjcmFzaF9yZXNlcnZlZF9tZW07Ci0gCi0tI2VuZGlmCi0rI2VuZGlmIC8qIENSQVNIRFVNUF9BUk02NF9IICovCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oIGIva2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi1pbmRleCA3ZmQ2NmViLi4yMGNkYTg3IDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLUBAIC0yLDYgKzIsNyBAQAotICNkZWZpbmUgSU9NRU1fSAotIAotICNkZWZpbmUgU1lTVEVNX1JBTQkJIlN5c3RlbSBSQU1cbiIKLSsjZGVmaW5lIENSQVNIX0tFUk5FTAkJIkNyYXNoIGtlcm5lbFxuIgotICNkZWZpbmUgSU9NRU1fUkVTRVJWRUQJCSJyZXNlcnZlZFxuIgotIAotICNlbmRpZgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA1LWFybTY0LWtkdW1wLWFkZC1lbGYtY29yZS1oZWFkZXItc2VnbWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDUtYXJtNjQta2R1bXAtYWRkLWVsZi1jb3JlLWhlYWRlci1zZWdtZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTUzNWI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDUtYXJtNjQta2R1bXAtYWRkLWVsZi1jb3JlLWhlYWRlci1zZWdtZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkxICswLDAgQEAKLUZyb20gNzY5ZGEyNTYyN2NlYmIyYTUzY2FlZTVkNWJlNzhhMzJkMzc2YWRjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDUgQXVnIDIwMTUgMTM6NDU6MTUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzldIGFybTY0OiBrZHVtcDogYWRkIGVsZiBjb3JlIGhlYWRlciBzZWdtZW50Ci0KLUVsZiBjb3JlIGhlYWRlciBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IGZvciB0aGUgY29yZWR1bXAgb2YKLXRoZSAxc3Qga2VybmVsLCBpbmNsdWRpbmcgaXRzIHBoeXNjYWwgbWVtb3J5IGxheW91dCBhcyB3ZWxsIGFzIGNwdSByZWdpc3Rlcgotc3RhdGVzIGF0IHRoZSBwYW5pYy4KLVRoZSBzZWdtZW50IGlzIGFsbG9jYXRlZCBpbnNpZGUgdGhlIHJlc2VydmVkIG1lbW9yeSBvZiBjcmFzaCBkdW1wIGtlcm5lbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jIHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oIHwgIDMgKysKLSBrZXhlYy9hcmNoL2FybTY0L2lvbWVtLmggICAgICAgICAgIHwgIDIgKwotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMgfCAxMCArKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLWluZGV4IGRjYWNhNDMuLjgzNDYxMzEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1AQCAtMzksNiArMzksMzkgQEAgc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnMgPSB7Ci0gCS5yYW5nZXMgPSAmY3Jhc2hfcmVzZXJ2ZWRfbWVtLAotIH07Ci0gCi0rc3RydWN0IG1lbW9yeV9yYW5nZSBlbGZjb3JlaGRyX21lbTsKLSsKLStzdGF0aWMgc3RydWN0IGNyYXNoX2VsZl9pbmZvIGVsZl9pbmZvID0gewotKwkuY2xhc3MJCT0gRUxGQ0xBU1M2NCwKLSsjaWYgKF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pCi0rCS5kYXRhCQk9IEVMRkRBVEEyTFNCLAotKyNlbHNlCi0rCS5kYXRhCQk9IEVMRkRBVEEyTVNCLAotKyNlbmRpZgotKwkubWFjaGluZQk9IEVNX0FBUkNINjQsCi0rfTsKLSsKLSsvKgotKyAqIE5vdGU6IFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBjb3JyZWN0IG9ubHkgaWYgIUNPTkZJR19SQU5ET01JWkVfQkFTRS4KLSsgKi8KLStzdGF0aWMgdWludDY0X3QgZ2V0X2tlcm5lbF9wYWdlX29mZnNldCh2b2lkKQotK3sKLSsJaW50IGk7Ci0rCi0rCWlmIChlbGZfaW5mby5rZXJuX3ZhZGRyX3N0YXJ0ID09IFVJTlQ2NF9NQVgpCi0rCQlyZXR1cm4gVUlOVDY0X01BWDsKLSsKLSsJLyogQ3VycmVudCBtYXggdmlydHVhbCBtZW1vcnkgcmFuZ2UgaXMgNDgtYml0cy4gKi8KLSsJZm9yIChpID0gNDg7IGkgPiAwOyBpLS0pCi0rCQlpZiAoIShlbGZfaW5mby5rZXJuX3ZhZGRyX3N0YXJ0ICYgKDFVTCA8PCBpKSkpCi0rCQkJYnJlYWs7Ci0rCi0rCWlmIChpIDw9IDApCi0rCQlyZXR1cm4gVUlOVDY0X01BWDsKLSsJZWxzZQotKwkJcmV0dXJuIFVJTlQ2NF9NQVggPDwgaTsKLSt9Ci0rCi0gLyoKLSAgKiBpb21lbV9yYW5nZV9jYWxsYmFjaygpIC0gY2FsbGJhY2sgY2FsbGVkIGZvciBlYWNoIGlvbWVtIHJlZ2lvbgotICAqIEBkYXRhOiBub3QgdXNlZAotQEAgLTYyLDYgKzk1LDEwIEBAIHN0YXRpYyBpbnQgaW9tZW1fcmFuZ2VfY2FsbGJhY2sodm9pZCAqVU5VU0VEKGRhdGEpLCBpbnQgVU5VU0VEKG5yKSwKLSAJZWxzZSBpZiAoc3RybmNtcChzdHIsIFNZU1RFTV9SQU0sIHN0cmxlbihTWVNURU1fUkFNKSkgPT0gMCkKLSAJCXJldHVybiBtZW1fcmVnaW9uc19hZGQoJmNyYXNoX21lbW9yeV9yZ25zLAotIAkJCQkgICAgICAgYmFzZSwgbGVuZ3RoLCBSQU5HRV9SQU0pOwotKwllbHNlIGlmIChzdHJuY21wKHN0ciwgS0VSTkVMX0NPREUsIHN0cmxlbihLRVJORUxfQ09ERSkpID09IDApCi0rCQllbGZfaW5mby5rZXJuX3BhZGRyX3N0YXJ0ID0gYmFzZTsKLSsJZWxzZSBpZiAoc3RybmNtcChzdHIsIEtFUk5FTF9EQVRBLCBzdHJsZW4oS0VSTkVMX0RBVEEpKSA9PSAwKQotKwkJZWxmX2luZm8ua2Vybl9zaXplID0gYmFzZSArIGxlbmd0aCAtIGVsZl9pbmZvLmtlcm5fcGFkZHJfc3RhcnQ7Ci0gCi0gCXJldHVybiAwOwotIH0KLUBAIC0xMTUsNSArMTUyLDY0IEBAIHN0YXRpYyBpbnQgY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXModm9pZCkKLSAJZGJncHJpbnRfbWVtX3JhbmdlKCJDb3JlZHVtcCBtZW1vcnkgcmFuZ2VzIiwKLSAJCQkgICBjcmFzaF9tZW1vcnlfcmducy5yYW5nZXMsIGNyYXNoX21lbW9yeV9yZ25zLnNpemUpOwotIAotKwkvKgotKwkgKiBGb3IgYWRkaXRpb25hbCBrZXJuZWwgY29kZS9kYXRhIHNlZ21lbnQuCi0rCSAqIGtlcm5fcGFkZHJfc3RhcnQva2Vybl9zaXplIGFyZSBkZXRlcm1pbmVkIGluIGlvbWVtX3JhbmdlX2NhbGxiYWNrCi0rCSAqLwotKwllbGZfaW5mby5rZXJuX3ZhZGRyX3N0YXJ0ID0gZ2V0X2tlcm5lbF9zeW0oIl90ZXh0Iik7Ci0rCWlmICghZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCkKLSsJCWVsZl9pbmZvLmtlcm5fdmFkZHJfc3RhcnQgPSBVSU5UNjRfTUFYOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rLyoKLSsgKiBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cygpIC0gbG9hZCB0aGUgZWxmIGNvcmUgaGVhZGVyCi0rICogQGluZm86IGtleGVjIGluZm8gc3RydWN0dXJlCi0rICoKLSsgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGxvYWRzIGFuIGFkZGl0aW9uYWwgc2VnbWVudCBvZiBlbGYgY29yZSBoZWFkZXIKLSsgOiB3aGljaCBpcyB1c2VkIHRvIGNvbnN0cnVjdCAvcHJvYy92bWNvcmUgb24gY3Jhc2ggZHVtcCBrZXJuZWwuCi0rICoKLSsgKiBSZXR1cm4gMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kIC0xIGluIGNhc2Ugb2YgZXJyb3IuCi0rICovCi0rCi0raW50IGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvKQotK3sKLSsJdW5zaWduZWQgbG9uZyBlbGZjb3JlaGRyOwotKwl1bnNpZ25lZCBsb25nIGJ1ZnN6OwotKwl2b2lkICpidWY7Ci0rCWludCBlcnI7Ci0rCi0rCS8qCi0rCSAqIEZpcnN0IGZldGNoIGFsbCB0aGUgbWVtb3J5IChSQU0pIHJhbmdlcyB0aGF0IHdlIGFyZSBnb2luZyB0bwotKwkgKiBwYXNzIHRvIHRoZSBjcmFzaCBkdW1wIGtlcm5lbCBkdXJpbmcgcGFuaWMuCi0rCSAqLwotKwotKwllcnIgPSBjcmFzaF9nZXRfbWVtb3J5X3JhbmdlcygpOwotKwotKwlpZiAoZXJyKQotKwkJcmV0dXJuIGVycjsKLSsKLSsJZWxmX2luZm8ucGFnZV9vZmZzZXQgPSBnZXRfa2VybmVsX3BhZ2Vfb2Zmc2V0KCk7Ci0rCWRiZ3ByaW50ZigiJXM6IHBhZ2Vfb2Zmc2V0OiAgICUwMTZsbHhcbiIsIF9fZnVuY19fLAotKwkJCWVsZl9pbmZvLnBhZ2Vfb2Zmc2V0KTsKLSsKLSsJZXJyID0gY3Jhc2hfY3JlYXRlX2VsZjY0X2hlYWRlcnMoaW5mbywgJmVsZl9pbmZvLAotKwkJCWNyYXNoX21lbW9yeV9yZ25zLnJhbmdlcywgY3Jhc2hfbWVtb3J5X3JnbnMuc2l6ZSwKLSsJCQkmYnVmLCAmYnVmc3osIEVMRl9DT1JFX0hFQURFUl9BTElHTik7Ci0rCi0rCWlmIChlcnIpCi0rCQlyZXR1cm4gZXJyOwotKwotKwllbGZjb3JlaGRyID0gYWRkX2J1ZmZlcl9waHlzX3ZpcnQoaW5mbywgYnVmLCBidWZzeiwgYnVmc3osIDAsCi0rCQljcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQsIGNyYXNoX3Jlc2VydmVkX21lbS5lbmQsCi0rCQktMSwgMCk7Ci0rCi0rCWVsZmNvcmVoZHJfbWVtLnN0YXJ0ID0gZWxmY29yZWhkcjsKLSsJZWxmY29yZWhkcl9tZW0uZW5kID0gZWxmY29yZWhkciArIGJ1ZnN6IC0gMTsKLSsKLSsJZGJncHJpbnRmKCIlczogZWxmY29yZWhkciAweCVsbHgtMHglbGx4XG4iLCBfX2Z1bmNfXywKLSsJCQllbGZjb3JlaGRyX21lbS5zdGFydCwgZWxmY29yZWhkcl9tZW0uZW5kKTsKLSsKLSAJcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmggYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1pbmRleCAwN2EwZWQwLi5kYTc1YTJkIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotQEAgLTE4LDUgKzE4LDggQEAKLSAKLSBleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnM7Ci0gZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotK2V4dGVybiBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGVsZmNvcmVoZHJfbWVtOwotKwotK2V4dGVybiBpbnQgbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8pOwotIAotICNlbmRpZiAvKiBDUkFTSERVTVBfQVJNNjRfSCAqLwotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaCBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotaW5kZXggMjBjZGE4Ny4uZDQ4NjRiYiAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi1AQCAtMiw2ICsyLDggQEAKLSAjZGVmaW5lIElPTUVNX0gKLSAKLSAjZGVmaW5lIFNZU1RFTV9SQU0JCSJTeXN0ZW0gUkFNXG4iCi0rI2RlZmluZSBLRVJORUxfQ09ERQkJIktlcm5lbCBjb2RlXG4iCi0rI2RlZmluZSBLRVJORUxfREFUQQkJIktlcm5lbCBkYXRhXG4iCi0gI2RlZmluZSBDUkFTSF9LRVJORUwJCSJDcmFzaCBrZXJuZWxcbiIKLSAjZGVmaW5lIElPTUVNX1JFU0VSVkVECQkicmVzZXJ2ZWRcbiIKLSAKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYwotaW5kZXggZGFmOGJmMC4uYzcwYTM3YSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLUBAIC0xMTksNiArMTE5LDE2IEBAIGludCBlbGZfYXJtNjRfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmtlcm5lbF9idWYsCi0gCWRiZ3ByaW50ZigiJXM6IFBFIGZvcm1hdDogICAgICAlc1xuIiwgX19mdW5jX18sCi0gCQkoYXJtNjRfaGVhZGVyX2NoZWNrX3BlX3NpZyhoZWFkZXIpID8gInllcyIgOiAibm8iKSk7Ci0gCi0rCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKSB7Ci0rCQkvKiBjcmVhdGUgYW5kIGluaXRpYWxpemUgZWxmIGNvcmUgaGVhZGVyIHNlZ21lbnQgKi8KLSsJCXJlc3VsdCA9IGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKGluZm8pOwotKwkJaWYgKHJlc3VsdCkgewotKwkJCWRiZ3ByaW50ZigiJXM6IENyZWF0aW5nIGVmbGNvcmVoZHIgZmFpbGVkLlxuIiwKLSsJCQkJCQkJCV9fZnVuY19fKTsKLSsJCQlnb3RvIGV4aXQ7Ci0rCQl9Ci0rCX0KLSsKLSAJLyogbG9hZCB0aGUga2VybmVsICovCi0gCXJlc3VsdCA9IGVsZl9leGVjX2xvYWQoJmVoZHIsIGluZm8pOwotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA2LWFybTY0LWtkdW1wLXNldC11cC1rZXJuZWwtaW1hZ2Utc2VnbWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDYtYXJtNjQta2R1bXAtc2V0LXVwLWtlcm5lbC1pbWFnZS1zZWdtZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTQ5NTUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDYtYXJtNjQta2R1bXAtc2V0LXVwLWtlcm5lbC1pbWFnZS1zZWdtZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLUZyb20gNDA3OWM5M2FjNTQ1M2VmNWY3ODg5YWI2NDkyMGMxZTk0Mjc2OTBlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1EYXRlOiBUdWUsIDE3IEZlYiAyMDE1IDE2OjA2OjU1ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNi85XSBhcm02NDoga2R1bXA6IHNldCB1cCBrZXJuZWwgaW1hZ2Ugc2VnbWVudAotCi1PbiBhcm02NCwgd2UgY2FuIHVzZSB0aGUgc2FtZSBrZXJuZWwgaW1hZ2UgYXMgMXN0IGtlcm5lbCwgYnV0Ci13ZSBoYXZlIHRvIG1vZGlmeSB0aGUgZW50cnkgcG9pbnQgYXMgd2VsbCBhcyBzZWdtZW50cycgYWRkcmVzc2VzCi1pbiB0aGUga2VybmVsJ3MgZWxmIGhlYWRlciBpbiBvcmRlciB0byBsb2FkIHRoZW0gaW50byBjb3JyZWN0IHBsYWNlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jIHwgMjMgKysrKysrKysrKysrKysrKysrKysrKysKLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oIHwgIDEgKwotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyAgICAgfCAyNSArKysrKysrKysrKysrKysrKysrKy0tLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyB8IDEwICsrKysrKysrKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotaW5kZXggODM0NjEzMS4uOTUxNzMyOSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLUBAIC0yMTMsMyArMjEzLDI2IEBAIGludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbykKLSAKLSAJcmV0dXJuIDA7Ci0gfQotKwotKy8qCi0rICogZV9lbnRyeSBhbmQgcF9wYWRkciBhcmUgYWN0dWFsbHkgaW4gdmlydHVhbCBhZGRyZXNzIHNwYWNlLgotKyAqIFRob3NlIHZhbHVlcyB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gcGh5c2NhbCBhZGRyZXNzZXMgYnkKLSsgKiB1c2luZyB2aXJ0X3RvX3BoeXMoKS4KLSsgKiBTbyBsZXQncyBnZXQgcmVhZHkgZm9yIGxhdGVyIHVzZSBzbyB0aGUgbWVtb3J5IGJhc2UgKHBoeXNfb2Zmc2V0KQotKyAqIHdpbGwgYmUgY29ycmVjdGx5IHJlcGxhY2VkIHdpdGggY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0LgotKyAqLwotK3ZvaWQgbW9kaWZ5X2VoZHJfZm9yX2NyYXNoZHVtcChzdHJ1Y3QgbWVtX2VoZHIgKmVoZHIpCi0rewotKwlzdHJ1Y3QgbWVtX3BoZHIgKnBoZHI7Ci0rCWludCBpOwotKwotKwllaGRyLT5lX2VudHJ5ICs9IC0gYXJtNjRfbWVtLnBoeXNfb2Zmc2V0ICsgY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0OwotKwotKwlmb3IgKGkgPSAwOyBpIDwgZWhkci0+ZV9waG51bTsgaSsrKSB7Ci0rCQlwaGRyID0gJmVoZHItPmVfcGhkcltpXTsKLSsJCWlmIChwaGRyLT5wX3R5cGUgIT0gUFRfTE9BRCkKLSsJCQljb250aW51ZTsKLSsJCXBoZHItPnBfcGFkZHIgKz0KLSsJCQkoLWFybTY0X21lbS5waHlzX29mZnNldCArIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCk7Ci0rCX0KLSt9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaCBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmgKLWluZGV4IGRhNzVhMmQuLjM4MmY1NzEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1AQCAtMjEsNSArMjEsNiBAQCBleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZSBjcmFzaF9yZXNlcnZlZF9tZW07Ci0gZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2UgZWxmY29yZWhkcl9tZW07Ci0gCi0gZXh0ZXJuIGludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7Ci0rZXh0ZXJuIHZvaWQgbW9kaWZ5X2VoZHJfZm9yX2NyYXNoZHVtcChzdHJ1Y3QgbWVtX2VoZHIgKmVoZHIpOwotIAotICNlbmRpZiAvKiBDUkFTSERVTVBfQVJNNjRfSCAqLwotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotaW5kZXggOGFjODExZC4uY2VjNGU0MSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCi1AQCAtMzA3LDEyICszMDcsMjcgQEAgdW5zaWduZWQgbG9uZyBhcm02NF9sb2NhdGVfa2VybmVsX3NlZ21lbnQoc3RydWN0IGtleGVjX2luZm8gKmluZm8pCi0gewotIAl1bnNpZ25lZCBsb25nIGhvbGU7Ci0gCi0tCWhvbGUgPSBsb2NhdGVfaG9sZShpbmZvLAotLQkJYXJtNjRfbWVtLnRleHRfb2Zmc2V0ICsgYXJtNjRfbWVtLmltYWdlX3NpemUsCi0tCQlNaUIoMiksIDAsIFVMT05HX01BWCwgMSk7Ci0rCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKSB7Ci0rCQl1bnNpZ25lZCBsb25nIGhvbGVfZW5kOwotKwotKwkJaG9sZSA9IChjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQgPCBtZW1fbWluID8KLSsJCQkJbWVtX21pbiA6IGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCk7Ci0rCQlob2xlID0gX0FMSUdOX1VQKGhvbGUsIE1pQigyKSk7Ci0rCQlob2xlX2VuZCA9IGhvbGUgKyBhcm02NF9tZW0udGV4dF9vZmZzZXQgKyBhcm02NF9tZW0uaW1hZ2Vfc2l6ZTsKLSsKLSsJCWlmICgoaG9sZV9lbmQgPiBtZW1fbWF4KSB8fAotKwkJICAgIChob2xlX2VuZCA+IGNyYXNoX3Jlc2VydmVkX21lbS5lbmQpKSB7Ci0rCQkJZGJncHJpbnRmKCIlczogQ3Jhc2gga2VybmVsIG91dCBvZiByYW5nZVxuIiwgX19mdW5jX18pOwotKwkJCWhvbGUgPSBVTE9OR19NQVg7Ci0rCQl9Ci0rCX0gZWxzZSB7Ci0rCQlob2xlID0gbG9jYXRlX2hvbGUoaW5mbywKLSsJCQlhcm02NF9tZW0udGV4dF9vZmZzZXQgKyBhcm02NF9tZW0uaW1hZ2Vfc2l6ZSwKLSsJCQlNaUIoMiksIDAsIFVMT05HX01BWCwgMSk7Ci0gCi0tCWlmIChob2xlID09IFVMT05HX01BWCkKLS0JCWRiZ3ByaW50ZigiJXM6IGxvY2F0ZV9ob2xlIGZhaWxlZFxuIiwgX19mdW5jX18pOwotKwkJaWYgKGhvbGUgPT0gVUxPTkdfTUFYKQotKwkJCWRiZ3ByaW50ZigiJXM6IGxvY2F0ZV9ob2xlIGZhaWxlZFxuIiwgX19mdW5jX18pOwotKwl9Ci0gCi0gCXJldHVybiBob2xlOwotIH0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYwotaW5kZXggYzcwYTM3YS4uODQyY2UyMSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLUBAIC05LDYgKzksNyBAQAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8bGludXgvZWxmLmg+Ci0gCi0rI2luY2x1ZGUgImNyYXNoZHVtcC1hcm02NC5oIgotICNpbmNsdWRlICJrZXhlYy1hcm02NC5oIgotICNpbmNsdWRlICJrZXhlYy1lbGYuaCIKLSAjaW5jbHVkZSAia2V4ZWMtc3lzY2FsbC5oIgotQEAgLTEwNSw3ICsxMDYsOCBAQCBpbnQgZWxmX2FybTY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICprZXJuZWxfYnVmLAotIAl9Ci0gCi0gCWFybTY0X21lbS52cF9vZmZzZXQgPSBfQUxJR05fRE9XTihlaGRyLmVfZW50cnksIE1pQigyKSk7Ci0tCWFybTY0X21lbS52cF9vZmZzZXQgLT0ga2VybmVsX3NlZ21lbnQgLSBnZXRfcGh5c19vZmZzZXQoKTsKLSsJaWYgKCEoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkpCi0rCQlhcm02NF9tZW0udnBfb2Zmc2V0IC09IGtlcm5lbF9zZWdtZW50IC0gZ2V0X3BoeXNfb2Zmc2V0KCk7Ci0gCi0gCWRiZ3ByaW50ZigiJXM6IGtlcm5lbF9zZWdtZW50OiAlMDE2bHhcbiIsIF9fZnVuY19fLCBrZXJuZWxfc2VnbWVudCk7Ci0gCWRiZ3ByaW50ZigiJXM6IHRleHRfb2Zmc2V0OiAgICAlMDE2bHhcbiIsIF9fZnVuY19fLAotQEAgLTEyNyw2ICsxMjksMTIgQEAgaW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJCQkJCQkJCV9fZnVuY19fKTsKLSAJCQlnb3RvIGV4aXQ7Ci0gCQl9Ci0rCi0rCQkvKgotKwkJICogb2Zmc2V0IGFkZHJlc3NlcyBpbiBvcmRlciB0byBmaXQgdm1saW51eAotKwkJICogKGVsZl9leGVjKSBpbnRvIGNyYXNoIGtlcm5lbCdzIG1lbW9yeQotKwkJICovCi0rCQltb2RpZnlfZWhkcl9mb3JfY3Jhc2hkdW1wKCZlaGRyKTsKLSAJfQotIAotIAkvKiBsb2FkIHRoZSBrZXJuZWwgKi8KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1hcm02NC1rZHVtcC1zZXQtdXAtb3RoZXItc2VnbWVudHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA3LWFybTY0LWtkdW1wLXNldC11cC1vdGhlci1zZWdtZW50cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc0NTQ2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA3LWFybTY0LWtkdW1wLXNldC11cC1vdGhlci1zZWdtZW50cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gMDdhZDE0ZTEyNjY1MjIxZDc1NGZkZThlNDdjMzJhYzE4YzI0NTg2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1EYXRlOiBGcmksIDMxIEp1bCAyMDE1IDIwOjAxOjM5ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNy85XSBhcm02NDoga2R1bXA6IHNldCB1cCBvdGhlciBzZWdtZW50cwotCi1XZSBtYWtlIHN1cmUgdGhhdCBhbGwgdGhlIG90aGVyIHNlZ21lbnRzLCBpbml0cmQgYW5kIGRldmljZS10cmVlIGJsb2IsCi1hbHNvIGJlIGxvYWRlZCBpbnRvIHRoZSByZXNlcnZlZCBtZW1vcnkgb2YgY3Jhc2ggZHVtcCBrZXJuZWwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotaW5kZXggY2VjNGU0MS4uNzhhMDAzNSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCi1AQCAtMzc0LDcgKzM3NCwxMCBAQCBpbnQgYXJtNjRfbG9hZF9vdGhlcl9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywKLSAJLyogUHV0IHRoZSBvdGhlciBzZWdtZW50cyBhZnRlciB0aGUgaW1hZ2UuICovCi0gCi0gCWhvbGVfbWluID0gaW1hZ2VfYmFzZSArIGFybTY0X21lbS5pbWFnZV9zaXplOwotLQlob2xlX21heCA9IFVMT05HX01BWDsKLSsJaWYgKGluZm8tPmtleGVjX2ZsYWdzICYgS0VYRUNfT05fQ1JBU0gpCi0rCQlob2xlX21heCA9IGNyYXNoX3Jlc2VydmVkX21lbS5lbmQ7Ci0rCWVsc2UKLSsJCWhvbGVfbWF4ID0gVUxPTkdfTUFYOwotIAotIAlpZiAoYXJtNjRfb3B0cy5pbml0cmQpIHsKLSAJCWluaXRyZF9idWYgPSBzbHVycF9maWxlKGFybTY0X29wdHMuaW5pdHJkLCAmaW5pdHJkX3NpemUpOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA4LWFybTY0LWtkdW1wLWFkZC1EVC1wcm9wZXJ0aWVzLXRvLWNyYXNoLWR1bXAta2VybmVsLXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA4LWFybTY0LWtkdW1wLWFkZC1EVC1wcm9wZXJ0aWVzLXRvLWNyYXNoLWR1bXAta2VybmVsLXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYzNkODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLUZyb20gMjNiZjdhYzE4OWNjM2I4N2NlYjlkMWQzYjY5YjVjNDgxNTM1NGFkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDI3IEphbiAyMDE2IDEzOjM4OjM5ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggOC85XSBhcm02NDoga2R1bXA6IGFkZCBEVCBwcm9wZXJ0aWVzIHRvIGNyYXNoIGR1bXAga2VybmVsJ3MKLSBkdGIKLQotV2UgcGFzcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdG8gY3Jhc2ggZHVtcCBrZXJuZWw6Ci1saW51eCxlbGZjb3JlaGRyOiBlbGYgY29yZSBoZWFkZXIgc2VnbWVudCwKLQkJICBzYW1lIGFzICJlbGZjb3JlaGRyPSIga2VybmVsIHBhcmFtZXRlciBvbiBvdGhlciBhcmNocwotbGludXgsdXNhYmxlLW1lbW9yeS1yYW5nZTogdXNhYmxlIG1lbW9yeSByZXNlcnZlZCBmb3IgY3Jhc2ggZHVtcCBrZXJuZWwKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgICAgIHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIHwgIDUgLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotaW5kZXggNzhhMDAzNS4uYThmYjY0ZiAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCi1AQCAtMTI4LDkgKzEyOCw2IEBAIGludCBhcmNoX3Byb2Nlc3Nfb3B0aW9ucyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQljYXNlIE9QVF9JTklUUkQ6Ci0gCQkJYXJtNjRfb3B0cy5pbml0cmQgPSBvcHRhcmc7Ci0gCQkJYnJlYWs7Ci0tCQljYXNlIE9QVF9QQU5JQzoKLS0JCQlkaWUoImxvYWQtcGFuaWMgKC1wKSBub3Qgc3VwcG9ydGVkIik7Ci0tCQkJYnJlYWs7Ci0gCQlkZWZhdWx0OgotIAkJCWJyZWFrOyAvKiBJZ25vcmUgY29yZSBhbmQgdW5rbm93biBvcHRpb25zLiAqLwotIAkJfQotQEAgLTI4NSw4ICsyODIsMTIgQEAgb25fc3VjY2VzczoKLSAgKiBzZXR1cF8ybmRfZHRiIC0gU2V0dXAgdGhlIDJuZCBzdGFnZSBrZXJuZWwncyBkdGIuCi0gICovCi0gCi0tc3RhdGljIGludCBzZXR1cF8ybmRfZHRiKHN0cnVjdCBkdGIgKmR0YiwgY2hhciAqY29tbWFuZF9saW5lKQotK3N0YXRpYyBpbnQgc2V0dXBfMm5kX2R0YihzdHJ1Y3QgZHRiICpkdGIsIGNoYXIgKmNvbW1hbmRfbGluZSwgaW50IG9uX2NyYXNoKQotIHsKLSsJY2hhciAqbmV3X2J1ZjsKLSsJaW50IG5ld19zaXplOwotKwlpbnQgbm9kZW9mZnNldDsKLSsJdWludDY0X3QgcmFuZ2VbMl07Ci0gCWludCByZXN1bHQ7Ci0gCi0gCXJlc3VsdCA9IGZkdF9jaGVja19oZWFkZXIoZHRiLT5idWYpOwotQEAgLTI5OCw4ICsyOTksNzIgQEAgc3RhdGljIGludCBzZXR1cF8ybmRfZHRiKHN0cnVjdCBkdGIgKmR0YiwgY2hhciAqY29tbWFuZF9saW5lKQotIAotIAlyZXN1bHQgPSBzZXRfYm9vdGFyZ3MoZHRiLCBjb21tYW5kX2xpbmUpOwotIAotKwkvKiByZW1vdmUgdGhvc2UgYW55d2F5ICovCi0rCW5vZGVvZmZzZXQgPSBmZHRfcGF0aF9vZmZzZXQoZHRiLT5idWYsICIvY2hvc2VuIik7Ci0rCWZkdF9kZWxwcm9wKGR0Yi0+YnVmLCBub2Rlb2Zmc2V0LCAibGludXgsY3Jhc2hrZXJuZWwtYmFzZSIpOwotKwlmZHRfZGVscHJvcChkdGItPmJ1Ziwgbm9kZW9mZnNldCwgImxpbnV4LGNyYXNoa2VybmVsLXNpemUiKTsKLSsKLSsJaWYgKG9uX2NyYXNoKSB7Ci0rCQlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KGR0Yi0+YnVmLCAiL2Nob3NlbiIpOwotKwkJZmR0X2RlbHByb3AoZHRiLT5idWYsIG5vZGVvZmZzZXQsICJsaW51eCxlbGZjb3JlaGRyIik7Ci0rCQlmZHRfZGVscHJvcChkdGItPmJ1Ziwgbm9kZW9mZnNldCwgImxpbnV4LHVzYWJsZS1tZW1vcnktcmFuZ2UiKTsKLSsJCW5ld19zaXplID0gZmR0X3RvdGFsc2l6ZShkdGItPmJ1ZikKLSsJCQkrIDIgKiAoc2l6ZW9mKHN0cnVjdCBmZHRfcHJvcGVydHkpCi0rCQkJCQkrIEZEVF9UQUdBTElHTihzaXplb2YocmFuZ2UpKSkKLSsJCQkrIHN0cmxlbigibGludXgsZWxmY29yZWhkciIpICsgMQotKwkJCSsgc3RybGVuKCJsaW51eCx1c2FibGUtbWVtb3J5LXJhbmdlIikgKyAxOwotKwotKwkJbmV3X2J1ZiA9IHhtYWxsb2MobmV3X3NpemUpOwotKwkJcmVzdWx0ID0gZmR0X29wZW5faW50byhkdGItPmJ1ZiwgbmV3X2J1ZiwgbmV3X3NpemUpOwotKwkJaWYgKHJlc3VsdCkgewotKwkJCWRiZ3ByaW50ZigiJXM6IGZkdF9vcGVuX2ludG8gZmFpbGVkOiAlc1xuIiwgX19mdW5jX18sCi0rCQkJCWZkdF9zdHJlcnJvcihyZXN1bHQpKTsKLSsJCQlyZXN1bHQgPSAtRU5PU1BDOwotKwkJCWdvdG8gb25fZXJyb3I7Ci0rCQl9Ci0rCi0rCQlyYW5nZVswXSA9IGNwdV90b19iZTY0KGVsZmNvcmVoZHJfbWVtLnN0YXJ0KTsKLSsJCXJhbmdlWzFdID0gY3B1X3RvX2JlNjQoZWxmY29yZWhkcl9tZW0uZW5kCi0rCQkJCS0gZWxmY29yZWhkcl9tZW0uc3RhcnQgKyAxKTsKLSsJCW5vZGVvZmZzZXQgPSBmZHRfcGF0aF9vZmZzZXQobmV3X2J1ZiwgIi9jaG9zZW4iKTsKLSsJCXJlc3VsdCA9IGZkdF9zZXRwcm9wKG5ld19idWYsIG5vZGVvZmZzZXQsICJsaW51eCxlbGZjb3JlaGRyIiwKLSsJCQkJKHZvaWQgKilyYW5nZSwgc2l6ZW9mKHJhbmdlKSk7Ci0rCQlpZiAocmVzdWx0KSB7Ci0rCQkJZGJncHJpbnRmKCIlczogZmR0X3NldHByb3AgZmFpbGVkOiAlc1xuIiwgX19mdW5jX18sCi0rCQkJCWZkdF9zdHJlcnJvcihyZXN1bHQpKTsKLSsJCQlyZXN1bHQgPSAtRUlOVkFMOwotKwkJCWdvdG8gb25fZXJyb3I7Ci0rCQl9Ci0rCi0rCQlyYW5nZVswXSA9IGNwdV90b19iZTY0KGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCk7Ci0rCQlyYW5nZVsxXSA9IGNwdV90b19iZTY0KGNyYXNoX3Jlc2VydmVkX21lbS5lbmQKLSsJCQkJLSBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQgKyAxKTsKLSsJCW5vZGVvZmZzZXQgPSBmZHRfcGF0aF9vZmZzZXQobmV3X2J1ZiwgIi9jaG9zZW4iKTsKLSsJCXJlc3VsdCA9IGZkdF9zZXRwcm9wKG5ld19idWYsIG5vZGVvZmZzZXQsCi0rCQkJCSJsaW51eCx1c2FibGUtbWVtb3J5LXJhbmdlIiwKLSsJCQkJKHZvaWQgKilyYW5nZSwgc2l6ZW9mKHJhbmdlKSk7Ci0rCQlpZiAocmVzdWx0KSB7Ci0rCQkJZGJncHJpbnRmKCIlczogZmR0X3NldHByb3AgZmFpbGVkOiAlc1xuIiwgX19mdW5jX18sCi0rCQkJCWZkdF9zdHJlcnJvcihyZXN1bHQpKTsKLSsJCQlyZXN1bHQgPSAtRUlOVkFMOwotKwkJCWdvdG8gb25fZXJyb3I7Ci0rCQl9Ci0rCi0rCQlmZHRfcGFjayhuZXdfYnVmKTsKLSsJCWR0Yi0+YnVmID0gbmV3X2J1ZjsKLSsJCWR0Yi0+c2l6ZSA9IGZkdF90b3RhbHNpemUobmV3X2J1Zik7Ci0rCX0KLSsKLSAJZHVtcF9yZXNlcnZlbWFwKGR0Yik7Ci0gCi0rCi0rCXJldHVybiByZXN1bHQ7Ci0rCi0rb25fZXJyb3I6Ci0rCWZwcmludGYoc3RkZXJyLCAia2V4ZWM6ICVzIGZhaWxlZC5cbiIsIF9fZnVuY19fKTsKLSsJaWYgKG5ld19idWYpCi0rCQlmcmVlKG5ld19idWYpOwotKwotIAlyZXR1cm4gcmVzdWx0OwotIH0KLSAKLUBAIC0zNjYsNyArNDMxLDggQEAgaW50IGFybTY0X2xvYWRfb3RoZXJfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCi0gCQl9Ci0gCX0KLSAKLS0JcmVzdWx0ID0gc2V0dXBfMm5kX2R0YigmZHRiLCBjb21tYW5kX2xpbmUpOwotKwlyZXN1bHQgPSBzZXR1cF8ybmRfZHRiKCZkdGIsIGNvbW1hbmRfbGluZSwKLSsJCQlpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKTsKLSAKLSAJaWYgKHJlc3VsdCkKLSAJCXJldHVybiAtRUZBSUxFRDsKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYwotaW5kZXggODQyY2UyMS4uYjE3YTMxYSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLUBAIC00NywxMSArNDcsNiBAQCBpbnQgZWxmX2FybTY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICprZXJuZWxfYnVmLAotIAlpbnQgcmVzdWx0OwotIAlpbnQgaTsKLSAKLS0JaWYgKGluZm8tPmtleGVjX2ZsYWdzICYgS0VYRUNfT05fQ1JBU0gpIHsKLS0JCWZwcmludGYoc3RkZXJyLCAia2V4ZWM6IGtkdW1wIG5vdCB5ZXQgc3VwcG9ydGVkIG9uIGFybTY0XG4iKTsKLS0JCXJldHVybiAtRUZBSUxFRDsKLS0JfQotLQotIAlyZXN1bHQgPSBidWlsZF9lbGZfZXhlY19pbmZvKGtlcm5lbF9idWYsIGtlcm5lbF9zaXplLCAmZWhkciwgMCk7Ci0gCi0gCWlmIChyZXN1bHQgPCAwKSB7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDktYXJtNjQta2R1bXAtQWRkLXN1cHBvcnQtZm9yLWJpbmFyeS1pbWFnZS1maWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDktYXJtNjQta2R1bXAtQWRkLXN1cHBvcnQtZm9yLWJpbmFyeS1pbWFnZS1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIxYzAxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDVhNDk1OGYwMWE3OTNjM2U3ZjQ0MGY1YmFlNzU2NjZhNDM0OWNjNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE0IE1heSAyMDE1IDExOjI1OjM3ICswNTMwCi1TdWJqZWN0OiBbUEFUQ0ggOS85XSBhcm02NDoga2R1bXA6IEFkZCBzdXBwb3J0IGZvciBiaW5hcnkgaW1hZ2UgZmlsZXMKLQotVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgdG8gdXNlIGJpbmFyeSBpbWFnZSBpZSBhcmNoL2FybTY0L2Jvb3QvSW1hZ2Ugd2l0aAota2R1bXAuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFByYXR5dXNoIEFuYW5kIDxwYW5hbmRAcmVkaGF0LmNvbT4KLVt0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZzogYSBiaXQgcmV3b3JrZWRdCi1TaWduZWQtb2ZmLWJ5OiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtaW1hZ2UtYXJtNjQuYyB8IDEyICsrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMKLWluZGV4IDk2MGVkOTYuLjk4MmU0MzEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtaW1hZ2UtYXJtNjQuYwotQEAgLTQsNyArNCw5IEBACi0gCi0gI2RlZmluZSBfR05VX1NPVVJDRQotIAotKyNpbmNsdWRlICJjcmFzaGR1bXAtYXJtNjQuaCIKLSAjaW5jbHVkZSAia2V4ZWMtYXJtNjQuaCIKLSsjaW5jbHVkZSAia2V4ZWMtc3lzY2FsbC5oIgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSBpbnQgaW1hZ2VfYXJtNjRfcHJvYmUoY29uc3QgY2hhciAqa2VybmVsX2J1Ziwgb2ZmX3Qga2VybmVsX3NpemUpCi1AQCAtNTgsNiArNjAsMTYgQEAgaW50IGltYWdlX2FybTY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICprZXJuZWxfYnVmLAotIAlkYmdwcmludGYoIiVzOiBQRSBmb3JtYXQ6ICAgICAgJXNcbiIsIF9fZnVuY19fLAotIAkJKGFybTY0X2hlYWRlcl9jaGVja19wZV9zaWcoaGVhZGVyKSA/ICJ5ZXMiIDogIm5vIikpOwotIAotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJLyogY3JlYXRlIGFuZCBpbml0aWFsaXplIGVsZiBjb3JlIGhlYWRlciBzZWdtZW50ICovCi0rCQlyZXN1bHQgPSBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhpbmZvKTsKLSsJCWlmIChyZXN1bHQpIHsKLSsJCQlkYmdwcmludGYoIiVzOiBDcmVhdGluZyBlZmxjb3JlaGRyIGZhaWxlZC5cbiIsCi0rCQkJCQkJCQlfX2Z1bmNfXyk7Ci0rCQkJZ290byBleGl0OwotKwkJfQotKwl9Ci0rCi0gCS8qIGxvYWQgdGhlIGtlcm5lbCAqLwotIAlhZGRfc2VnbWVudF9waHlzX3ZpcnQoaW5mbywga2VybmVsX2J1Ziwga2VybmVsX3NpemUsCi0gCQkJa2VybmVsX3NlZ21lbnQgKyBhcm02NF9tZW0udGV4dF9vZmZzZXQsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tleGVjLWFhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy1hYXJjaDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDNmNTgyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tleGVjLWFhcmNoNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MDEgKzAsMCBAQAotRnJvbTogR2VvZmYgTGV2YW5kIDxnZW9mZkBpbmZyYWRlYWQub3JnPgotRGF0ZTogTW9uLCAxNSBKdWwgMjAxMyAyMzozMjozNiArMDAwMCAoLTA3MDApCi1TdWJqZWN0OiBBZGQgYXJtNjQgc3VwcG9ydAotWC1HaXQtVXJsOiBodHRwczovL2dpdC5saW5hcm8ub3JnL2dpdHdlYj9wPXBlb3BsZSUyRmdlb2ZmJTJGa2V4ZWMtdG9vbHMuZ2l0O2E9Y29tbWl0ZGlmZl9wbGFpbjtoPWZiZjVhYzZjMmM3MGVjMGY2ZGEyYjlmZjU2M2U1NzM5OTk3NTJjMDEKLQotQWRkIGFybTY0IHN1cHBvcnQKLQotU2lnbmVkLW9mZi1ieTogR2VvZmYgTGV2YW5kIDxnZW9mZkBpbmZyYWRlYWQub3JnPgotCi1HZXQgcGF0Y2ggZnJvbToKLWh0dHBzOi8vZmVkb3JhcGVvcGxlLm9yZy9+aHJ3L2FhcmNoNjQvZm9yLWZlZG9yYS9rZXhlYy1hYXJjaDY0LnBhdGNoCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotCi0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzIAotIGtleGVjL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgCi0ga2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAxMyArCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyAgICAgIHwgIDMwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGtleGVjL2FyY2gvYXJtNjQvaW5jbHVkZS9hcmNoL29wdGlvbnMuaCB8ICAgMjYgKysKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgICAgICAgICAgfCAgMTc3ICsrKysrKysrKysrKysrKysrKwotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuaCAgICAgICAgICB8ICAgMjAgKysKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jICAgICAgfCAgMTE0ICsrKysrKysrKysrCi0ga2V4ZWMva2V4ZWMtc3lzY2FsbC5oICAgICAgICAgICAgICAgICAgIHwgICAgOSAKLSBrZXhlYy9rZXhlYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyIAotIHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlICAgICAgICAgICB8ICAgIDcgCi0gMTEgZmlsZXMgY2hhbmdlZCwgNjc1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0ga2V4ZWMtdG9vbHMtMi4wLjEwLm9yaWcvY29uZmlndXJlLmFjCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2NvbmZpZ3VyZS5hYwotQEAgLTM2LDYgKzM2LDkgQEAgY2FzZSAkdGFyZ2V0X2NwdSBpbgotIAkJQVJDSD0icHBjNjQiCi0gCQlTVUJBUkNIPSJMRSIKLSAJCTs7Ci0rCWFhcmNoNjQqICkKLSsJCUFSQ0g9ImFybTY0IgotKwkJOzsKLSAJYXJtKiApCi0gCQlBUkNIPSJhcm0iCi0gCQk7OwotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2tleGVjL01ha2VmaWxlCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL01ha2VmaWxlCi1AQCAtNzEsNiArNzEsNyBAQCBLRVhFQ19TUkNTCQkJKz0gJCgkKEFSQ0gpX0ZTMkRUKQotIAotIGluY2x1ZGUgJChzcmNkaXIpL2tleGVjL2FyY2gvYWxwaGEvTWFrZWZpbGUKLSBpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2FybS9NYWtlZmlsZQotK2luY2x1ZGUgJChzcmNkaXIpL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLSBpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUKLSBpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2lhNjQvTWFrZWZpbGUKLSBpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL202OGsvTWFrZWZpbGUKLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlCi1AQCAtMCwwICsxLDEzIEBACi0rCi0rYXJtNjRfS0VYRUNfU1JDUyArPSBcCi0rCWtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyBcCi0rCWtleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMgXAotKwlrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi0rCi0rYXJtNjRfQVJDSF9SRVVTRV9JTklUUkQgPQotK2FybTY0X0FERF9TRUdNRU5UID0KLSthcm02NF9WSVJUX1RPX1BIWVMgPQotKwotK2Rpc3QgKz0gJChhcm02NF9LRVhFQ19TUkNTKSBcCi0rCWtleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUgXAotKwlrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmgKLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1AQCAtMCwwICsxLDMwNSBAQAotKy8qCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gKHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSkuCi0rICovCi0rCi0rI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCi0rI2luY2x1ZGUgIi4uLy4uL2tleGVjLWVsZi5oIgotKyNpbmNsdWRlICIuLi8uLi9jcmFzaGR1bXAuaCIKLSsKLStpbnQgaXNfY3Jhc2hrZXJuZWxfbWVtX3Jlc2VydmVkKHZvaWQpCi0rewotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rI2lmIDAKLSsvKgotKyAqIFVzZWQgdG8gc2F2ZSB2YXJpb3VzIG1lbW9yeSByYW5nZXMvcmVnaW9ucyBuZWVkZWQgZm9yIHRoZSBjYXB0dXJlZAotKyAqIGtlcm5lbCB0byBib290LiAobGltZSBtZW1tYXA9IG9wdGlvbiBpbiBvdGhlciBhcmNocykKLSsgKi8KLStzdGF0aWMgc3RydWN0IG1lbW9yeV9yYW5nZSBjcmFzaF9tZW1vcnlfcmFuZ2VzW0NSQVNIX01BWF9NRU1PUllfUkFOR0VTXTsKLStzdHJ1Y3QgbWVtb3J5X3JhbmdlcyB1c2FibGVtZW1fcmducyA9IHsKLSsgICAgLnNpemUgPSAwLAotKyAgICAucmFuZ2VzID0gY3Jhc2hfbWVtb3J5X3JhbmdlcywKLSt9OwotKwotKy8qIG1lbW9yeSByYW5nZSByZXNlcnZlZCBmb3IgY3Jhc2hrZXJuZWwgKi8KLStzdGF0aWMgc3RydWN0IG1lbW9yeV9yYW5nZSBjcmFzaF9yZXNlcnZlZF9tZW07Ci0rCi0rc3RhdGljIHN0cnVjdCBjcmFzaF9lbGZfaW5mbyBlbGZfaW5mbyA9IHsKLSsJLmNsYXNzCQk9IEVMRkNMQVNTMzIsCi0rCS5kYXRhCQk9IEVMRkRBVEEyTFNCLAotKwkubWFjaGluZQk9IEVNX0FSTSwKLSsJLnBhZ2Vfb2Zmc2V0CT0gUEFHRV9PRkZTRVQsCi0rfTsKLSsKLSt1bnNpZ25lZCBsb25nIHBoeXNfb2Zmc2V0OwotKwotKy8qKgotKyAqIGNyYXNoX3JhbmdlX2NhbGxiYWNrKCkgLSBjYWxsYmFjayBjYWxsZWQgZm9yIGVhY2ggaW9tZW0gcmVnaW9uCi0rICogQGRhdGE6IG5vdCB1c2VkCi0rICogQG5yOiBub3QgdXNlZAotKyAqIEBzdHI6IG5hbWUgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKiBAYmFzZTogc3RhcnQgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IHJlZ2lvbgotKyAqIEBsZW5ndGg6IHNpemUgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggbWVtb3J5IHJlZ2lvbiBmb3VuZCBpbiAvcHJvYy9pb21lbS4gSXQKLSsgKiBsb2NhdGVzIHN5c3RlbSBSQU0gYW5kIGNyYXNoa2VybmVsIHJlc2VydmVkIG1lbW9yeSBhbmQgcGxhY2VzIHRoZXNlIHRvCi0rICogdmFyaWFibGVzOiBAY3Jhc2hfbWVtb3J5X3JhbmdlcyBhbmQgQGNyYXNoX3Jlc2VydmVkX21lbS4gTnVtYmVyIG9mIG1lbW9yeQotKyAqIHJlZ2lvbnMgaXMgcGxhY2VkIGluIEBjcmFzaF9tZW1vcnlfbnJfcmFuZ2VzLgotKyAqLwotK3N0YXRpYyBpbnQgY3Jhc2hfcmFuZ2VfY2FsbGJhY2sodm9pZCAqVU5VU0VEKGRhdGEpLCBpbnQgVU5VU0VEKG5yKSwKLSsJCQkJY2hhciAqc3RyLCB1bnNpZ25lZCBsb25nIGJhc2UsCi0rCQkJCXVuc2lnbmVkIGxvbmcgbGVuZ3RoKQotK3sKLSsJc3RydWN0IG1lbW9yeV9yYW5nZSAqcmFuZ2U7Ci0rCi0rCWlmICh1c2FibGVtZW1fcmducy5zaXplID49IENSQVNIX01BWF9NRU1PUllfUkFOR0VTKQotKwkJcmV0dXJuIDE7Ci0rCi0rCXJhbmdlID0gdXNhYmxlbWVtX3JnbnMucmFuZ2VzICsgdXNhYmxlbWVtX3JnbnMuc2l6ZTsKLSsKLSsJaWYgKHN0cm5jbXAoc3RyLCAiU3lzdGVtIFJBTVxuIiwgMTEpID09IDApIHsKLSsJCXJhbmdlLT5zdGFydCA9IGJhc2U7Ci0rCQlyYW5nZS0+ZW5kID0gYmFzZSArIGxlbmd0aCAtIDE7Ci0rCQlyYW5nZS0+dHlwZSA9IFJBTkdFX1JBTTsKLSsJCXVzYWJsZW1lbV9yZ25zLnNpemUrKzsKLSsJfSBlbHNlIGlmIChzdHJuY21wKHN0ciwgIkNyYXNoIGtlcm5lbFxuIiwgMTMpID09IDApIHsKLSsJCWNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCA9IGJhc2U7Ci0rCQljcmFzaF9yZXNlcnZlZF9tZW0uZW5kID0gYmFzZSArIGxlbmd0aCAtIDE7Ci0rCQljcmFzaF9yZXNlcnZlZF9tZW0udHlwZSA9IFJBTkdFX1JBTTsKLSsJfQotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rLyoqCi0rICogY3Jhc2hfZXhjbHVkZV9yYW5nZSgpIC0gZXhjbHVkZXMgbWVtb3J5IHJlZ2lvbiByZXNlcnZlZCBmb3IgY3Jhc2hrZXJuZWwKLSsgKgotKyAqIEZ1bmN0aW9uIGxvY2F0ZXMgd2hlcmUgY3Jhc2hrZXJuZWwgcmVzZXJ2ZWQgbWVtb3J5IGlzIGFuZCByZW1vdmVzIHRoYXQgcmVnaW9uCi0rICogZnJvbSB0aGUgYXZhaWxhYmxlIG1lbW9yeSByZWdpb25zLgotKyAqLwotK3N0YXRpYyB2b2lkIGNyYXNoX2V4Y2x1ZGVfcmFuZ2Uodm9pZCkKLSt7Ci0rCWNvbnN0IHN0cnVjdCBtZW1vcnlfcmFuZ2UgKnJhbmdlID0gJmNyYXNoX3Jlc2VydmVkX21lbTsKLSsJaW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IGkgPCB1c2FibGVtZW1fcmducy5zaXplOyBpKyspIHsKLSsJCXN0cnVjdCBtZW1vcnlfcmFuZ2UgKnIgPSB1c2FibGVtZW1fcmducy5yYW5nZXMgKyBpOwotKwotKwkJLyoKLSsJCSAqIFdlIGFzc3VtZSB0aGF0IGNyYXNoIGFyZWEgaXMgZnVsbHkgY29udGFpbmVkIGluCi0rCQkgKiBzb21lIGxhcmdlciBtZW1vcnkgYXJlYS4KLSsJCSAqLwotKwkJaWYgKHItPnN0YXJ0IDw9IHJhbmdlLT5zdGFydCAmJiByLT5lbmQgPj0gcmFuZ2UtPmVuZCkgewotKwkJCXN0cnVjdCBtZW1vcnlfcmFuZ2UgKm5ldzsKLSsJCQkvKgotKwkJCSAqIExldCdzIHNwbGl0IHRoaXMgYXJlYSBpbnRvIDIgc21hbGxlciBvbmVzIGFuZAotKwkJCSAqIHJlbW92ZSBleGNsdWRlZCByYW5nZSBmcm9tIGJldHdlZW4uIEZpcnN0IGNyZWF0ZQotKwkJCSAqIG5ldyBlbnRyeSBmb3IgdGhlIHJlbWFpbmluZyBhcmVhLgotKwkJCSAqLwotKwkJCW5ldyA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcyArIHVzYWJsZW1lbV9yZ25zLnNpemU7Ci0rCQkJbmV3LT5zdGFydCA9IHJhbmdlLT5lbmQgKyAxOwotKwkJCW5ldy0+ZW5kID0gci0+ZW5kOwotKwkJCXVzYWJsZW1lbV9yZ25zLnNpemUrKzsKLSsJCQkvKgotKwkJCSAqIE5leHQgdXBkYXRlIHRoaXMgYXJlYSB0byBlbmQgYmVmb3JlIGV4Y2x1ZGVkIHJhbmdlLgotKwkJCSAqLwotKwkJCXItPmVuZCA9IHJhbmdlLT5zdGFydCAtIDE7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCX0KLSt9Ci0rCi0rc3RhdGljIGludCByYW5nZV9jbXAoY29uc3Qgdm9pZCAqYTEsIGNvbnN0IHZvaWQgKmEyKQotK3sKLSsJY29uc3Qgc3RydWN0IG1lbW9yeV9yYW5nZSAqcjEgPSBhMTsKLSsJY29uc3Qgc3RydWN0IG1lbW9yeV9yYW5nZSAqcjIgPSBhMjsKLSsKLSsJaWYgKHIxLT5zdGFydCA+IHIyLT5zdGFydCkKLSsJCXJldHVybiAxOwotKwlpZiAocjEtPnN0YXJ0IDwgcjItPnN0YXJ0KQotKwkJcmV0dXJuIC0xOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rLyoqCi0rICogY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXMoKSAtIHJlYWQgc3lzdGVtIHBoeXNpY2FsIG1lbW9yeQotKyAqCi0rICogRnVuY3Rpb24gcmVhZHMgdGhyb3VnaCBzeXN0ZW0gcGh5c2ljYWwgbWVtb3J5IGFuZCBzdG9yZXMgZm91bmQgbWVtb3J5IHJlZ2lvbnMKLSsgKiBpbiBAY3Jhc2hfbWVtb3J5X3Jhbmdlcy4gTnVtYmVyIG9mIG1lbW9yeSByZWdpb25zIGZvdW5kIGlzIHBsYWNlZCBpbgotKyAqIEBjcmFzaF9tZW1vcnlfbnJfcmFuZ2VzLiBSZWdpb25zIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLgotKyAqCi0rICogUmV0dXJucyAlMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kICUtMSBvdGhlcndpc2UgKGVycm5vIGlzIHNldCkuCi0rICovCi0rc3RhdGljIGludCBjcmFzaF9nZXRfbWVtb3J5X3Jhbmdlcyh2b2lkKQotK3sKLSsJLyoKLSsJICogRmlyc3QgcmVhZCBhbGwgbWVtb3J5IHJlZ2lvbnMgdGhhdCBjYW4gYmUgY29uc2lkZXJlZCBhcwotKwkgKiBzeXN0ZW0gbWVtb3J5IGluY2x1ZGluZyB0aGUgY3Jhc2ggYXJlYS4KLSsJICovCi0rCWtleGVjX2lvbWVtX2Zvcl9lYWNoX2xpbmUoTlVMTCwgY3Jhc2hfcmFuZ2VfY2FsbGJhY2ssIE5VTEwpOwotKwotKwlpZiAodXNhYmxlbWVtX3JnbnMuc2l6ZSA8IDEpIHsKLSsJCWVycm5vID0gRUlOVkFMOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCS8qCi0rCSAqIEV4Y2x1ZGUgbWVtb3J5IHJlc2VydmVkIGZvciBjcmFzaGtlcm5lbCAodGhpcyBtYXkgcmVzdWx0IGEgc3BsaXQgbWVtb3J5Ci0rCSAqIHJlZ2lvbikuCi0rCSAqLwotKwljcmFzaF9leGNsdWRlX3JhbmdlKCk7Ci0rCi0rCS8qCi0rCSAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBtZW1vcnkgcmVnaW9ucyBhcmUgc29ydGVkLgotKwkgKi8KLSsJcXNvcnQodXNhYmxlbWVtX3JnbnMucmFuZ2VzLCB1c2FibGVtZW1fcmducy5zaXplLAotKwkgICAgICBzaXplb2YoKnVzYWJsZW1lbV9yZ25zLnJhbmdlcyksIHJhbmdlX2NtcCk7Ci0rCi0rCXJldHVybiAwOwotK30KLSsKLSsvKioKLSsgKiBjbWRsaW5lX2FkZF9lbGZjb3JlaGRyKCkgLSBhZGRzIGVsZmNvcmVoZHI9IHRvIEBjbWRsaW5lCi0rICogQGNtZGxpbmU6IGJ1ZmZlciB3aGVyZSBwYXJhbWV0ZXIgaXMgcGxhY2VkCi0rICogQGVsZmNvcmVoZHI6IHBoeXNpY2FsIGFkZHJlc3Mgb2YgZWxmY29yZWhkcgotKyAqCi0rICogRnVuY3Rpb24gYXBwZW5kcyAnZWxmY29yZWhkcj1zdGFydCcgYXQgdGhlIGVuZCBvZiB0aGUgY29tbWFuZCBsaW5lIGdpdmVuIGluCi0rICogQGNtZGxpbmUuIE5vdGUgdGhhdCBAY21kbGluZSBtdXN0IGJlIGF0IGxlYXN0ICVDT01NQU5EX0xJTkVfU0laRSBieXRlcyBsb25nCi0rICogKGluY2x1bmRpbmcgJU5VTCkuCi0rICovCi0rc3RhdGljIHZvaWQgY21kbGluZV9hZGRfZWxmY29yZWhkcihjaGFyICpjbWRsaW5lLCB1bnNpZ25lZCBsb25nIGVsZmNvcmVoZHIpCi0rewotKwljaGFyIGJ1ZltDT01NQU5EX0xJTkVfU0laRV07Ci0rCWludCBidWZsZW47Ci0rCi0rCWJ1ZmxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcyBlbGZjb3JlaGRyPSUjbHgiLAotKwkJCSAgY21kbGluZSwgZWxmY29yZWhkcik7Ci0rCWlmIChidWZsZW4gPCAwKQotKwkJZGllKCJGYWlsZWQgdG8gY29uc3RydWN0IGVsZmNvcmVoZHI9IGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJcbiIpOwotKwlpZiAoYnVmbGVuID49IHNpemVvZihidWYpKQotKwkJZGllKCJDb21tYW5kIGxpbmUgb3ZlcmZsb3dcbiIpOwotKwotKwkodm9pZCkgc3RybmNweShjbWRsaW5lLCBidWYsIENPTU1BTkRfTElORV9TSVpFKTsKLSsJY21kbGluZVtDT01NQU5EX0xJTkVfU0laRSAtIDFdID0gJ1wwJzsKLSt9Ci0rCi0rLyoqCi0rICogY21kbGluZV9hZGRfbWVtKCkgLSBhZGRzIG1lbT0gcGFyYW1ldGVyIHRvIGtlcm5lbCBjb21tYW5kIGxpbmUKLSsgKiBAY21kbGluZTogYnVmZmVyIHdoZXJlIHBhcmFtZXRlciBpcyBwbGFjZWQKLSsgKiBAc2l6ZTogc2l6ZSBvZiB0aGUga2VybmVsIHJlc2VydmVkIG1lbW9yeSAoaW4gYnl0ZXMpCi0rICoKLSsgKiBUaGlzIGZ1bmN0aW9uIGFwcGVuZHMgJ21lbT1zaXplJyBhdCB0aGUgZW5kIG9mIHRoZSBjb21tYW5kIGxpbmUgZ2l2ZW4gaW4KLSsgKiBAY21kbGluZS4gTm90ZSB0aGF0IEBjbWRsaW5lIG11c3QgYmUgYXQgbGVhc3QgJUNPTU1BTkRfTElORV9TSVpFIGJ5dGVzIGxvbmcKLSsgKiAoaW5jbHVkaW5nICVOVUwpLgotKyAqLwotK3N0YXRpYyB2b2lkIGNtZGxpbmVfYWRkX21lbShjaGFyICpjbWRsaW5lLCB1bnNpZ25lZCBsb25nIHNpemUpCi0rewotKwljaGFyIGJ1ZltDT01NQU5EX0xJTkVfU0laRV07Ci0rCWludCBidWZsZW47Ci0rCi0rCWJ1ZmxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcyBtZW09JWxkSyIsIGNtZGxpbmUsIHNpemUgPj4gMTApOwotKwlpZiAoYnVmbGVuIDwgMCkKLSsJCWRpZSgiRmFpbGVkIHRvIGNvbnN0cnVjdCBtZW09IGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJcbiIpOwotKwlpZiAoYnVmbGVuID49IHNpemVvZihidWYpKQotKwkJZGllKCJDb21tYW5kIGxpbmUgb3ZlcmZsb3dcbiIpOwotKwotKwkodm9pZCkgc3RybmNweShjbWRsaW5lLCBidWYsIENPTU1BTkRfTElORV9TSVpFKTsKLSsJY21kbGluZVtDT01NQU5EX0xJTkVfU0laRSAtIDFdID0gJ1wwJzsKLSt9Ci0rCi0rc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyByYW5nZV9zaXplKGNvbnN0IHN0cnVjdCBtZW1vcnlfcmFuZ2UgKnIpCi0rewotKwlyZXR1cm4gci0+ZW5kIC0gci0+c3RhcnQgKyAxOwotK30KLSsKLStzdGF0aWMgdm9pZCBkdW1wX21lbW9yeV9yYW5nZXModm9pZCkKLSt7Ci0rCWludCBpOwotKwotKwlpZiAoIWtleGVjX2RlYnVnKQotKwkJcmV0dXJuOwotKwotKwlkYmdwcmludGYoImNyYXNoa2VybmVsOiBbJSNsbHggLSAlI2xseF0gKCVsZE0pXG4iLAotKwkJICBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQsIGNyYXNoX3Jlc2VydmVkX21lbS5lbmQsCi0rCQkgICh1bnNpZ25lZCBsb25nKXJhbmdlX3NpemUoJmNyYXNoX3Jlc2VydmVkX21lbSkgPj4gMjApOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgdXNhYmxlbWVtX3JnbnMuc2l6ZTsgaSsrKSB7Ci0rCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyID0gdXNhYmxlbWVtX3JnbnMucmFuZ2VzICsgaTsKLSsJCWRiZ3ByaW50ZigibWVtb3J5IHJhbmdlOiBbJSNsbHggLSAlI2xseF0gKCVsZE0pXG4iLAotKwkJCSAgci0+c3RhcnQsIHItPmVuZCwgKHVuc2lnbmVkIGxvbmcpcmFuZ2Vfc2l6ZShyKSA+PiAyMCk7Ci0rCX0KLSt9Ci0rCi0rLyoqCi0rICogbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoKSAtIGxvYWRzIGFkZGl0aW9uYWwgc2VnbWVudHMgbmVlZGVkIGZvciBrZHVtcAotKyAqIEBpbmZvOiBrZXhlYyBpbmZvIHN0cnVjdHVyZQotKyAqIEBtb2RfY21kbGluZToga2VybmVsIGNvbW1hbmQgbGluZQotKyAqCi0rICogVGhpcyBmdW5jdGlvbiBsb2FkcyBhZGRpdGlvbmFsIHNlZ21lbnRzIHdoaWNoIGFyZSBuZWVkZWQgZm9yIHRoZSBkdW1wIGNhcHR1cmUKLSsgKiBrZXJuZWwuIEl0IGFsc28gdXBkYXRlcyBrZXJuZWwgY29tbWFuZCBsaW5lIHBhc3NlZCBpbiBAbW9kX2NtZGxpbmUgdG8gaGF2ZQotKyAqIHJpZ2h0IHBhcmFtZXRlcnMgZm9yIHRoZSBkdW1wIGNhcHR1cmUga2VybmVsLgotKyAqCi0rICogUmV0dXJuICUwIGluIGNhc2Ugb2Ygc3VjY2VzcyBhbmQgJS0xIGluIGNhc2Ugb2YgZXJyb3IuCi0rICovCi0raW50IGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvLCBjaGFyICptb2RfY21kbGluZSkKLSt7Ci0rCXVuc2lnbmVkIGxvbmcgZWxmY29yZWhkcjsKLSsJdW5zaWduZWQgbG9uZyBidWZzejsKLSsJdm9pZCAqYnVmOwotKwlpbnQgZXJyOwotKwotKwkvKgotKwkgKiBGaXJzdCBmZXRjaCBhbGwgdGhlIG1lbW9yeSAoUkFNKSByYW5nZXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gcGFzcyB0bwotKwkgKiB0aGUgY3Jhc2hkdW1wIGtlcm5lbCBkdXJpbmcgcGFuaWMuCi0rCSAqLwotKwllcnIgPSBjcmFzaF9nZXRfbWVtb3J5X3JhbmdlcygpOwotKwlpZiAoZXJyKQotKwkJcmV0dXJuIGVycjsKLSsKLSsJLyoKLSsJICogTm93IHRoYXQgd2UgaGF2ZSBtZW1vcnkgcmVnaW9ucyBzb3J0ZWQsIHdlIGNhbiB1c2UgZmlyc3QgbWVtb3J5Ci0rCSAqIHJlZ2lvbiBhcyBQSFlTX09GRlNFVC4KLSsJICovCi0rCXBoeXNfb2Zmc2V0ID0gdXNhYmxlbWVtX3JnbnMucmFuZ2VzLT5zdGFydDsKLSsJZGJncHJpbnRmKCJwaHlzX29mZnNldDogJSNseFxuIiwgcGh5c19vZmZzZXQpOwotKwotKwllcnIgPSBjcmFzaF9jcmVhdGVfZWxmMzJfaGVhZGVycyhpbmZvLCAmZWxmX2luZm8sCi0rCQkJCQkgdXNhYmxlbWVtX3JnbnMucmFuZ2VzLAotKwkJCQkJIHVzYWJsZW1lbV9yZ25zLnNpemUsICZidWYsICZidWZzeiwKLSsJCQkJCSBFTEZfQ09SRV9IRUFERVJfQUxJR04pOwotKwlpZiAoZXJyKQotKwkJcmV0dXJuIGVycjsKLSsKLSsJLyoKLSsJICogV2UgYWxsb2NhdGUgRUxGIGNvcmUgaGVhZGVyIGZyb20gdGhlIGVuZCBvZiB0aGUgbWVtb3J5IGFyZWEgcmVzZXJ2ZWQKLSsJICogZm9yIHRoZSBjcmFzaGtlcm5lbC4gV2UgYWxpZ24gdGhlIGhlYWRlciB0byBTRUNUSU9OX1NJWkUgKHdoaWNoIGlzCi0rCSAqIDFNQikgc28gdGhhdCBhdmFpbGFibGUgbWVtb3J5IHBhc3NlZCBpbiBrZXJuZWwgY29tbWFuZCBsaW5lIHdpbGwgYmUKLSsJICogYWxpZ25lZCB0byAxTUIuIFRoaXMgaXMgYmVjYXVzZSBrZXJuZWwgY3JlYXRlX21hcHBpbmcoKSB3YW50cyBtZW1vcnkKLSsJICogcmVnaW9ucyB0byBiZSBhbGlnbmVkIHRvIFNFQ1RJT05fU0laRS4KLSsJICovCi0rCWVsZmNvcmVoZHIgPSBhZGRfYnVmZmVyX3BoeXNfdmlydChpbmZvLCBidWYsIGJ1ZnN6LCBidWZzeiwgMSA8PCAyMCwKLSsJCQkJCSAgY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0LAotKwkJCQkJICBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kLCAtMSwgMCk7Ci0rCi0rCWRiZ3ByaW50ZigiZWxmY29yZWhkcjogJSNseFxuIiwgZWxmY29yZWhkcik7Ci0rCWNtZGxpbmVfYWRkX2VsZmNvcmVoZHIobW9kX2NtZGxpbmUsIGVsZmNvcmVoZHIpOwotKwotKwkvKgotKwkgKiBBZGQgJ21lbT1zaXplJyBwYXJhbWV0ZXIgdG8gZHVtcCBjYXB0dXJlIGtlcm5lbCBjb21tYW5kIGxpbmUuIFRoaXMKLSsJICogcHJldmVudHMgdGhlIGR1bXAgY2FwdHVyZSBrZXJuZWwgZnJvbSB1c2luZyBhbnkgb3RoZXIgbWVtb3J5IHJlZ2lvbnMKLSsJICogd2hpY2ggYmVsb25nIHRvIHRoZSBwcmltYXJ5IGtlcm5lbC4KLSsJICovCi0rCWNtZGxpbmVfYWRkX21lbShtb2RfY21kbGluZSwgZWxmY29yZWhkciAtIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCk7Ci0rCi0rCWR1bXBfbWVtb3J5X3JhbmdlcygpOwotKwlkYmdwcmludGYoImtlcm5lbCBjb21tYW5kIGxpbmU6IFwiJXNcIlxuIiwgbW9kX2NtZGxpbmUpOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rI2VuZGlmCi0rCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQvaW5jbHVkZS9hcmNoL29wdGlvbnMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2luY2x1ZGUvYXJjaC9vcHRpb25zLmgKLUBAIC0wLDAgKzEsMjYgQEAKLSsjaWZuZGVmIEtFWEVDX0FSQ0hfQVJNNjRfT1BUSU9OU19ICi0rI2RlZmluZSBLRVhFQ19BUkNIX0FSTTY0X09QVElPTlNfSAotKwotKy8vI2RlZmluZSBPUFRfQVJDSF9NQVgJKChPUFRfTUFYKSswKQotKwotKyNkZWZpbmUgT1BUX0FQUEVORAkoKE9QVF9NQVgpKzApCi0rI2RlZmluZSBPUFRfUkFNRElTSwkoKE9QVF9NQVgpKzEpCi0rI2RlZmluZSBPUFRfRFRCCQkoKE9QVF9NQVgpKzIpCi0rCi0rI2RlZmluZSBPUFRfQVJDSF9NQVgJKChPUFRfTUFYKSszKQotKwotKwotKyNkZWZpbmUgS0VYRUNfQVJDSF9PUFRJT05TIFwKLSsJS0VYRUNfT1BUSU9OUyBcCi0rCXsgImFwcGVuZCIsICAgICAgIDEsIE5VTEwsIE9QVF9BUFBFTkQgfSwgXAotKwl7ICJjb21tYW5kLWxpbmUiLCAxLCBOVUxMLCBPUFRfQVBQRU5EIH0sIFwKLSsJeyAiZHRiIiwgICAgICAgICAgMSwgTlVMTCwgT1BUX0RUQiB9LCBcCi0rCXsgImluaXRyZCIsICAgICAgIDEsIE5VTEwsIE9QVF9SQU1ESVNLIH0sIFwKLSsJeyAicmFtZGlzayIsICAgICAgMSwgTlVMTCwgT1BUX1JBTURJU0sgfSwgXAotKwotKyNkZWZpbmUgS0VYRUNfQVJDSF9PUFRfU1RSIEtFWEVDX09QVF9TVFIgLyogT25seSBhY2NlcHQgbG9uZyBhcmNoIG9wdGlvbnMuICovCi0rCi0rI2RlZmluZSBLRVhFQ19BTExfT1BUSU9OUyBLRVhFQ19BUkNIX09QVElPTlMKLSsjZGVmaW5lIEtFWEVDX0FMTF9PUFRfU1RSIEtFWEVDX0FSQ0hfT1BUX1NUUgotKwotKyNlbmRpZiAvKiBLRVhFQ19BUkNIX0FSTTY0X09QVElPTlNfSCAqLwotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCi1AQCAtMCwwICsxLDE3NyBAQAotKy8qCi0rICogQVJNNjQga2V4ZWMgc3VwcG9ydC4KLSsgKi8KLSsKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0rCi0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKy8vI2luY2x1ZGUgPGxpbnV4L2tleGVjLmg+Ci0rCi0rI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCi0rI2luY2x1ZGUgIi4uLy4uL2tleGVjLXN5c2NhbGwuaCIKLSsjaW5jbHVkZSAia2V4ZWMtYXJtNjQuaCIKLSsKLSsKLSt2b2lkIGFyY2hfdXNhZ2Uodm9pZCkKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IC0+XG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwotKwlwcmludGYoCi0rIiAgICAgLS1hcHBlbmQ9U1RSSU5HICAgICAgIFNldCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB0byBTVFJJTkcuXG4iCi0rIiAgICAgLS1jb21tYW5kLWxpbmU9U1RSSU5HIFNldCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB0byBTVFJJTkcuXG4iCi0rIiAgICAgLS1kdGI9RklMRSAgICAgICAgICAgIFVzZSBGSUxFIGFzIHRoZSBkZXZpY2UgdHJlZSBibG9iLlxuIgotKyIgICAgIC0taW5pdHJkPUZJTEUgICAgICAgICBVc2UgRklMRSBhcyB0aGUga2VybmVsIGluaXRpYWwgcmFtZGlzay5cbiIKLSsiICAgICAtLXJhbWRpc2s9RklMRSAgICAgICAgVXNlIEZJTEUgYXMgdGhlIGtlcm5lbCBpbml0aWFsIHJhbWRpc2suXG4iKTsKLSsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogPC1cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rfQotKwotK2ludCBhcmNoX3Byb2Nlc3Nfb3B0aW9ucyhpbnQgVU5VU0VEKGFyZ2MpLCBjaGFyICoqVU5VU0VEKGFyZ3YpKQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCXJldHVybiAwOwotK30KLSsKLStjb25zdCBzdHJ1Y3QgYXJjaF9tYXBfZW50cnkgYXJjaGVzW10gPSB7Ci0rCXsgImFhcmNoNjQiLCBLRVhFQ19BUkNIX0FSTTY0IH0sCi0rCXsgTlVMTCwgMCB9LAotK307Ci0rCi0rdm9pZCBhcmNoX3VwZGF0ZV9wdXJnYXRvcnkoc3RydWN0IGtleGVjX2luZm8gKlVOVVNFRChpbmZvKSkKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IGRvXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotK30KLSsKLSt1bnNpZ25lZCBsb25nIHZpcnRfdG9fcGh5cyh1bnNpZ25lZCBsb25nIGFkZHIpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAlMDE2bHggLT4gJTAxNmx4XG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIGFkZHIsCi0rCQlhZGRyICsgMHgwODAwMDAwMDBVTCk7Ci0rCXJldHVybiBhZGRyICsgMHgwODAwMDAwMDBVTDsKLSt9Ci0rCi0rdm9pZCBhZGRfc2VnbWVudChzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgYnVmc3osCi0rCXVuc2lnbmVkIGxvbmcgYmFzZSwgc2l6ZV90IG1lbXN6KQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogLT5cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCWFkZF9zZWdtZW50X3BoeXNfdmlydChpbmZvLCBidWYsIGJ1ZnN6LCBiYXNlLCBtZW1zeiwgMSk7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IDwtXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotK30KLSsKLStzdGF0aWMgaW50IGdldF9tZW1vcnlfcmFuZ2VzXzEoc3RydWN0IG1lbW9yeV9yYW5nZSAqKnJhbmdlLCBpbnQgKnJhbmdlcywKLSsJCQl1bnNpZ25lZCBsb25nIGtleGVjX2ZsYWdzKQotK3sKLSsJc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2UgbWVtb3J5X3JhbmdlW0tFWEVDX1NFR01FTlRfTUFYXTsKLSsJY29uc3QgY2hhciAqaW9tZW07Ci0rCWludCByYW5nZV9jb3VudCA9IDA7Ci0rCWNoYXIgbGluZVtNQVhfTElORV07Ci0rCUZJTEUgKmZwOwotKwotKwlpb21lbSA9IHByb2NfaW9tZW0oKTsKLSsJZnAgPSBmb3Blbihpb21lbSwgInIiKTsKLSsKLSsJaWYgKCFmcCkgewotKwkJZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgb3BlbiAlczogJXNcbiIsCi0rCQkJaW9tZW0sIHN0cmVycm9yKGVycm5vKSk7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJZGJncHJpbnRmKCJtZW1vcnkgcmFuZ2VzOlxuIik7Ci0rCi0rCXdoaWxlKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IDApIHsKLSsJCXN0cnVjdCBtZW1vcnlfcmFuZ2UgcjsKLSsJCWNoYXIgKnN0cjsKLSsJCWludCBjb25zdW1lZDsKLSsKLSsJCWlmIChyYW5nZV9jb3VudCA+PSBLRVhFQ19TRUdNRU5UX01BWCkKLSsJCQlicmVhazsKLSsKLSsJCWlmIChzc2NhbmYobGluZSwgIiVMeC0lTHggOiAlbiIsICZyLnN0YXJ0LCAmci5lbmQsICZjb25zdW1lZCkKLSsJCQkhPSAyKQotKwkJCWNvbnRpbnVlOwotKwotKwkJc3RyID0gbGluZSArIGNvbnN1bWVkOwotKwkJci5lbmQrKzsKLSsKLSsJCWlmIChtZW1jbXAoc3RyLCAiU3lzdGVtIFJBTVxuIiwgMTEpKSB7Ci0rCQkJZGJncHJpbnRmKCIgU2tpcDogJTAxNkx4IC0gJTAxNkx4IDogJXMiLCByLnN0YXJ0LCByLmVuZCwKLSsJCQkJc3RyKTsKLSsJCQljb250aW51ZTsKLSsJCX0KLSsKLSsJCXIudHlwZSA9IFJBTkdFX1JBTTsKLSsJCW1lbW9yeV9yYW5nZVtyYW5nZV9jb3VudF0gPSByOwotKwkJcmFuZ2VfY291bnQrKzsKLSsKLSsJCWRiZ3ByaW50ZigiIEFkZDogICUwMTZMeCAtICUwMTZMeCA6ICVzIiwgci5zdGFydCwgci5lbmQsIHN0cik7Ci0rCX0KLSsKLSsJZmNsb3NlKGZwKTsKLSsJKnJhbmdlID0gbWVtb3J5X3JhbmdlOwotKwkqcmFuZ2VzID0gcmFuZ2VfY291bnQ7Ci0rCi0rCXJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50IGdldF9tZW1vcnlfcmFuZ2VzXzIoc3RydWN0IG1lbW9yeV9yYW5nZSAqKnJhbmdlLCBpbnQgKnJhbmdlcywKLSsJCSAgICAgIHVuc2lnbmVkIGxvbmcgVU5VU0VEKGtleGVjX2ZsYWdzKSkKLSt7Ci0rCXN0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlIG1lbW9yeV9yYW5nZVsyXTsKLSsKLSsJbWVtb3J5X3JhbmdlWzBdLnN0YXJ0ID0gMHgwODAwMDAwMDA7Ci0rCW1lbW9yeV9yYW5nZVswXS5lbmQgICA9IDB4MTAwMDAwMDAwOwotKwltZW1vcnlfcmFuZ2VbMF0udHlwZSA9IFJBTkdFX1JBTTsKLSsKLSsJbWVtb3J5X3JhbmdlWzFdLnN0YXJ0ID0gMHg5MDAwMDAwMDA7Ci0rCW1lbW9yeV9yYW5nZVsxXS5lbmQgICA9IDB4ODgwMDAwMDAwOwotKwltZW1vcnlfcmFuZ2VbMV0udHlwZSA9IFJBTkdFX1JBTTsKLSsKLSsJKnJhbmdlID0gbWVtb3J5X3JhbmdlOwotKwkqcmFuZ2VzID0gc2l6ZW9mKG1lbW9yeV9yYW5nZSkgLyBzaXplb2YobWVtb3J5X3JhbmdlWzBdKTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotK2ludCBnZXRfbWVtb3J5X3JhbmdlcyhzdHJ1Y3QgbWVtb3J5X3JhbmdlICoqcmFuZ2UsIGludCAqcmFuZ2VzLAotKwkJCXVuc2lnbmVkIGxvbmcga2V4ZWNfZmxhZ3MpCi0rewotKwkvKiBGSVhNRTogU2hvdWxkIGdldCB0aGlzIGluZm8gZnJvbSBkZXZpY2UgdHJlZS4gKi8KLSsJCi0rCXJldHVybiBnZXRfbWVtb3J5X3Jhbmdlc18xKHJhbmdlLCByYW5nZXMsIGtleGVjX2ZsYWdzKTsKLSt9Ci0rCi0rc3RydWN0IGZpbGVfdHlwZSBmaWxlX3R5cGVbXSA9IHsKLSsJeyAiZWxmLWFybTY0IiwgZWxmX2FybTY0X3Byb2JlLCBlbGZfYXJtNjRfbG9hZCwgZWxmX2FybTY0X3VzYWdlIH0sCi0rfTsKLSsKLStpbnQgZmlsZV90eXBlcyA9IHNpemVvZihmaWxlX3R5cGUpIC8gc2l6ZW9mKGZpbGVfdHlwZVswXSk7Ci0rCi0raW50IGFyY2hfY29tcGF0X3RyYW1wb2xpbmUoc3RydWN0IGtleGVjX2luZm8gKmluZm8pCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQgYXJjaF9yZXVzZV9pbml0cmQodm9pZCkKLSt7Ci0rfQotKwotK2ludCBtYWNoaW5lX3ZlcmlmeV9lbGZfcmVsKHN0cnVjdCBtZW1fZWhkciAqZWhkcikKLSt7Ci0rCSh2b2lkKWVoZHI7Ci0rCi0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IGRvXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rdm9pZCBtYWNoaW5lX2FwcGx5X2VsZl9yZWwoc3RydWN0IG1lbV9laGRyICplaGRyLCB1bnNpZ25lZCBsb25nIHJfdHlwZSwKLSsJdm9pZCAqbG9jYXRpb24sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyB2YWx1ZSkKLSt7Ci0rCSh2b2lkKWVoZHI7Ci0rCSh2b2lkKXJfdHlwZTsKLSsJKHZvaWQpbG9jYXRpb247Ci0rCSh2b2lkKWFkZHJlc3M7Ci0rCSh2b2lkKXZhbHVlOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSt9Ci1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmgKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKgotKyAqIEFSTTY0IGtleGVjIHN1cHBvcnQuCi0rICovCi0rCi0rI2lmICFkZWZpbmVkKEtFWEVDX0FSTTY0X0gpCi0rI2RlZmluZSBLRVhFQ19BUk02NF9ICi0rCi0rLyogI2luY2x1ZGUgPGxpbnV4L2tleGVjLmg+IEZJWE1FOiB0aGlzIGlzIGJyb2tlbiAqLwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsKLSsjaW5jbHVkZSAiLi4vLi4va2V4ZWMuaCIKLSsKLSsjZGVmaW5lIEtFWEVDX1NFR01FTlRfTUFYIDE2IC8qIEZJWE1FOiB0aGlzIHNob3VsZCBjb21lIGZyb20gPGxpbnV4L2tleGVjLmg+ICovCi0rCi0raW50IGVsZl9hcm02NF9wcm9iZShjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbik7Ci0raW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCi0rCXN0cnVjdCBrZXhlY19pbmZvICppbmZvKTsKLSt2b2lkIGVsZl9hcm02NF91c2FnZSh2b2lkKTsKLSsKLSsjZW5kaWYKLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLUBAIC0wLDAgKzEsMTE0IEBACi0rLyoKLSsgKiBBUk02NCBrZXhlYyBzdXBwb3J0LgotKyAqLwotKwotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSsKLSsjaW5jbHVkZSA8ZWxmLmg+Ci0rI2luY2x1ZGUgPGdldG9wdC5oPgotKwotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy1zeXNjYWxsLmgiCi0rCi0rI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0rI2luY2x1ZGUgImFyY2gvb3B0aW9ucy5oIgotKwotKyNpZiAhZGVmaW5lZChFTV9BQVJDSDY0KQotKyMgZGVmaW5lIEVNX0FBUkNINjQgMTgzCi0rI2VuZGlmCi0rCi0raW50IGVsZl9hcm02NF9wcm9iZShjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbikKLSt7Ci0rCWludCByZXN1bHQ7Ci0rCXN0cnVjdCBtZW1fZWhkciBlaGRyOwotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJCi0rCXJlc3VsdCA9IGJ1aWxkX2VsZl9leGVjX2luZm8oYnVmLCBsZW4sICZlaGRyLCAwKTsKLSsKLSsJaWYgKHJlc3VsdCA8IDApIHsKLSsJCWRiZ3ByaW50ZigiTm90IGFuIEVMRiBleGVjdXRhYmxlXG4iKTsKLSsJCWdvdG8gb3V0OwotKwl9Ci0rCi0rCWlmIChlaGRyLmVfbWFjaGluZSAhPSBFTV9BQVJDSDY0KSB7Ci0rCQlkYmdwcmludGYoIk5vdCBhbiBBQVJDSDY0IGV4ZWN1dGFibGVcbiIpOwotKwkJcmVzdWx0ID0gLTE7Ci0rCQlnb3RvIG91dDsKLSsJfQotKwotKwlyZXN1bHQgPSAwOwotKwotK291dDoKLSsJZnJlZV9lbGZfaW5mbygmZWhkcik7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IDwtXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlyZXR1cm4gcmVzdWx0OwotK30KLSsKLStpbnQgZWxmX2FybTY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbiwKLSsJCQlzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbykKLSt7Ci0rCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKLSsJCUtFWEVDX0FSQ0hfT1BUSU9OUwotKwkJeyAwIH0KLSsJfTsKLSsJc3RhdGljIGNvbnN0IGNoYXIgc2hvcnRfb3B0aW9uc1tdID0gS0VYRUNfT1BUX1NUUiAiIjsKLSsJY29uc3QgY2hhciAqY29tbWFuZF9saW5lID0gTlVMTDsKLSsJdW5zaWduZWQgaW50IGNvbW1hbmRfbGluZV9sZW4gPSAwOwotKwljb25zdCBjaGFyICpyYW1kaXNrID0gTlVMTDsKLSsJY29uc3QgY2hhciAqZHRiID0gTlVMTDsKLSsJaW50IG9wdDsKLSsJc3RydWN0IG1lbV9laGRyIGVoZHI7Ci0rCWludCByZXN1bHQ7Ci0rCi0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IC0+XG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwotKwl3aGlsZSAoKG9wdCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsIHNob3J0X29wdGlvbnMsIG9wdGlvbnMsIDApKQotKwkJIT0gLTEpIHsKLSsJCXN3aXRjaCAob3B0KSB7Ci0rCQlkZWZhdWx0OgotKwkJCWlmIChvcHQgPCBPUFRfTUFYKSAvKiBJZ25vcmUgY29yZSBvcHRpb25zICovCi0rCQkJCWJyZWFrOwotKwkJY2FzZSBPUFRfQVBQRU5EOgotKwkJCWNvbW1hbmRfbGluZSA9IG9wdGFyZzsKLSsJCQljb21tYW5kX2xpbmVfbGVuID0gc3RybGVuKGNvbW1hbmRfbGluZSkgKyAxOwotKwkJCWJyZWFrOwotKwkJY2FzZSBPUFRfUkFNRElTSzoKLSsJCQlyYW1kaXNrID0gb3B0YXJnOwotKwkJCWJyZWFrOwotKwkJY2FzZSBPUFRfRFRCOgotKwkJCWR0YiA9IG9wdGFyZzsKLSsJCQlicmVhazsKLSsJCX0KLSsJfQotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBjb21tYW5kX2xpbmU6ICVzXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIGNvbW1hbmRfbGluZSk7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IHJhbWRpc2s6ICVzXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIHJhbWRpc2spOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkdGI6ICVzXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIGR0Yik7Ci0rCi0rCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKSB7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgImtleGVjOiBrZHVtcCBub3QgeWV0IHN1cHBvcnRlZCBvbiBhcm02NFxuIik7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJcmVzdWx0ID0gYnVpbGRfZWxmX2V4ZWNfaW5mbyhidWYsIGxlbiwgJmVoZHIsIDApOwotKwotKwlpZiAocmVzdWx0IDwgMCkgewotKwkJZnJlZV9lbGZfaW5mbygmZWhkcik7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBmcmVlX2VsZl9pbmZvIGZhaWxlZFxuIiwgX19mdW5jX18sCi0rCQkJX19MSU5FX18pOwotKwkJcmV0dXJuIHJlc3VsdDsKLSsJfQotKwotKwllbGZfZXhlY19idWlsZF9sb2FkKGluZm8sICZlaGRyLCBidWYsIGxlbiwgMCk7Ci0rCi0rCWluZm8tPmVudHJ5ID0gKHZvaWQqKTB4ODAwODAwMDBVTDsgIC8vIEZJWE1FCi0rCi0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IDwtXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rdm9pZCBlbGZfYXJtNjRfdXNhZ2Uodm9pZCkKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IC0+XG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSt9Ci1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2tleGVjLXN5c2NhbGwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2tleGVjL2tleGVjLXN5c2NhbGwuaAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9rZXhlYy1zeXNjYWxsLmgKLUBAIC0zOSw4ICszOSw4IEBACi0gI2lmZGVmIF9fczM5MF9fCi0gI2RlZmluZSBfX05SX2tleGVjX2xvYWQJCTI3NwotICNlbmRpZgotLSNpZmRlZiBfX2FybV9fCi0tI2RlZmluZSBfX05SX2tleGVjX2xvYWQJCV9fTlJfU1lTQ0FMTF9CQVNFICsgMzQ3ICAKLSsjaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYXJtNjRfXykKLSsjZGVmaW5lIF9fTlJfa2V4ZWNfbG9hZAkJX19OUl9TWVNDQUxMX0JBU0UgKyAzNDcKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAjZGVmaW5lIF9fTlJfa2V4ZWNfbG9hZCAgICAgICAgICAgICAgICA0MzExCi1AQCAtMTA4LDYgKzEwOCw4IEBAIHN0YXRpYyBpbmxpbmUgbG9uZyBrZXhlY19maWxlX2xvYWQoaW50IGsKLSAjZGVmaW5lIEtFWEVDX0FSQ0hfUFBDNjQgICAoMjEgPDwgMTYpCi0gI2RlZmluZSBLRVhFQ19BUkNIX0lBXzY0ICAgKDUwIDw8IDE2KQotICNkZWZpbmUgS0VYRUNfQVJDSF9BUk0gICAgICg0MCA8PCAxNikKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfQVJNNjQgICAoMTgzIDw8IDE2KQotKy8qICNkZWZpbmUgS0VYRUNfQVJDSF9BQVJDSDY0ICgxODMgPDwgMTYpICovCi0gI2RlZmluZSBLRVhFQ19BUkNIX1MzOTAgICAgKDIyIDw8IDE2KQotICNkZWZpbmUgS0VYRUNfQVJDSF9TSCAgICAgICg0MiA8PCAxNikKLSAjZGVmaW5lIEtFWEVDX0FSQ0hfTUlQU19MRSAoMTAgPDwgMTYpCi1AQCAtMTUzLDUgKzE1NSw4IEBAIHN0YXRpYyBpbmxpbmUgbG9uZyBrZXhlY19maWxlX2xvYWQoaW50IGsKLSAjaWZkZWYgX19tNjhrX18KLSAjZGVmaW5lIEtFWEVDX0FSQ0hfTkFUSVZFCUtFWEVDX0FSQ0hfNjhLCi0gI2VuZGlmCi0rI2lmIGRlZmluZWQoX19hcm02NF9fKQotKyNkZWZpbmUgS0VYRUNfQVJDSF9OQVRJVkUJS0VYRUNfQVJDSF9BUk02NAotKyNlbmRpZgotIAotICNlbmRpZiAvKiBLRVhFQ19TWVNDQUxMX0ggKi8KLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMva2V4ZWMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2tleGVjL2tleGVjLmMKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMva2V4ZWMuYwotQEAgLTY2NCw2ICs2NjQsOCBAQCBzdGF0aWMgaW50IG15X2xvYWQoY29uc3QgY2hhciAqdHlwZSwgaW50Ci0gCW1lbXNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKLSAJaW5mby5rZXhlY19mbGFncyA9IGtleGVjX2ZsYWdzOwotIAotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsKLSAJcmVzdWx0ID0gMDsKLSAJaWYgKGFyZ2MgLSBmaWxlaW5kIDw9IDApIHsKLSAJCWZwcmludGYoc3RkZXJyLCAiTm8ga2VybmVsIHNwZWNpZmllZFxuIik7Ci1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCi1AQCAtMCwwICsxLDcgQEAKLSsjCi0rIyBQdXJnYXRvcnkgYXJtNjQKLSsjCi0rCi0rYXJtNjRfUFVSR0FUT1JZX1NSQ1MgPQotKwotK2Rpc3QgKz0gcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUgJChhcm02NF9QVVJHQVRPUllfU1JDUykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY2Mzk4Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1yZXF1aXJlIGtleGVjLXRvb2xzLmluYwotZXhwb3J0IExERkxBR1MgPSAiLUwke1NUQUdJTkdfTElCRElSfSIKLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLXpsaWI9eWVzIgotCi1TUkNfVVJJICs9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICAgZmlsZTovLzAwMDItcG93ZXJwYy1jaGFuZ2UtdGhlLW1lbW9yeS1zaXplLWxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB1cmdhdG9yeS1QYXNzLXItZGlyZWN0bHktdG8tbGlua2VyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZtY29yZS1kbWVzZy1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEta2V4ZWMtZXhudGVuZC10aGUtc2VtYW50aWNzLW9mLWtleGVjX2lvbWVtX2Zvcl9lYWNoXy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1rZXhlYy1nZW5lcmFsaXplLWFuZC1yZW5hbWUtZ2V0X2tlcm5lbF9zdGV4dF9zeW0ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtYXJtNjQtaWRlbnRpZnktUEhZU19PRkZTRVQtY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWFybTY0LWtkdW1wLWlkZW50aWZ5LW1lbW9yeS1yZWdpb25zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWFybTY0LWtkdW1wLWFkZC1lbGYtY29yZS1oZWFkZXItc2VnbWVudC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNi1hcm02NC1rZHVtcC1zZXQtdXAta2VybmVsLWltYWdlLXNlZ21lbnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDctYXJtNjQta2R1bXAtc2V0LXVwLW90aGVyLXNlZ21lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWFybTY0LWtkdW1wLWFkZC1EVC1wcm9wZXJ0aWVzLXRvLWNyYXNoLWR1bXAta2VybmVsLXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDktYXJtNjQta2R1bXAtQWRkLXN1cHBvcnQtZm9yLWJpbmFyeS1pbWFnZS1maWxlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMC1rZXhlYy1BUk0tRml4LWFkZF9idWZmZXJfcGh5c192aXJ0LWFsaWduLWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBwYy1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2tleGVjLXgzMi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaCBcCi0gICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmIyYzVlNmIyOWQ0NjdkNmU5OWQ1ODdmYjZiN2NmNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiM2U2OTUxOWQyYWNjZWQyNTY4NDNiMWU4ZjFlY2ZhMDBkOWI1NGZhMDc0NDllZDc4ZjA1YjkxOTNmMjM5MzcwIgotCi1TRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgotCi1QQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgotCi1GSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgotRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKLSAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCi0iCi0KLUZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAia2R1bXAiCi1JTklUU0NSSVBUX05BTUVfa2R1bXAgPSAia2R1bXAiCi1JTklUU0NSSVBUX1BBUkFNU19rZHVtcCA9ICJzdGFydCA1NiAyIDMgNCA1IC4gc3RvcCA1NiAwIDEgNiAuIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0KLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCi0gICAgICAgIGZpCi0KLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQotICAgICAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYjQ4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTYuYmIKQEAgLTAsMCArMSw4NiBAQAorCitTVU1NQVJZID0gIktleGVjIGZhc3QgcmVib290IHRvb2xzIgorREVTQ1JJUFRJT04gPSAiS2V4ZWMgaXMgYSBmYXN0IHJlYm9vdCBmZWF0dXJlIHRoYXQgbGV0cyB5b3UgcmVib290IHRvIGEgbmV3IExpbnV4IGtlcm5lbCIKK0FVVEhPUiA9ICJFcmljIEJpZWRlcm1hbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvIgorU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMva2V4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hZjEwZjZhZTRhODcxNTk2NWU2NDhhYTY4N2FkM2UwOSIKK0RFUEVORFMgPSAiemxpYiB4eiIKKworUFIgPSAicjEiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8va2R1bXAuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBvd2VycGMtY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB1cmdhdG9yeS1QYXNzLXItZGlyZWN0bHktdG8tbGlua2VyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAta2V4ZWMtQVJNLUZpeC1hZGRfYnVmZmVyX3BoeXNfdmlydC1hbGlnbi1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9rZXhlYy14MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaCBcCisgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MTk4OTY4ZGU3OWI1ZGVkOTZmOTdmM2MyZWE5NjM3YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZjE3ZmM5OWJmNzdjOWIzOWYwNmVlODhhYzBlODZkMDM0OWM0YTBjM2Y4MjE0YTNjYzc4ZWVjZTg3MmY2ZjNhIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKK2V4cG9ydCBMREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC16bGliPXllcyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKKyAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCisgICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCisKKyAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSworICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KKyAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKKyAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KKyAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KKyAgICAgICAgICAgIHJtIC1mICRkZXAKKyAgICAgICAgZmkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKKworICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAKKyAgICAgICAgZmkKKworICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlcgorICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCisgICAgICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCisKK0ZJTEVTX2tleGVjID0gIiR7c2JpbmRpcn0va2V4ZWMiCitGSUxFU19rZHVtcCA9ICIke3NiaW5kaXJ9L2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2tkdW1wLmNvbmYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAgXAorICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlIFwKKyIKKworRklMRVNfdm1jb3JlLWRtZXNnID0gIiR7c2JpbmRpcn0vdm1jb3JlLWRtZXNnIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gImtkdW1wIgorSU5JVFNDUklQVF9OQU1FX2tkdW1wID0gImtkdW1wIgorSU5JVFNDUklQVF9QQVJBTVNfa2R1bXAgPSAic3RhcnQgNTYgMiAzIDQgNSAuIHN0b3AgNTYgMCAxIDYgLiIKKworU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKKworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qfHBvd2VycGMuKnxtaXBzLiopLShsaW51eHxmcmVlYnNkLiopJworCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9kZXBtb2R3cmFwcGVyLWNyb3NzXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2QvZGVwbW9kd3JhcHBlci1jcm9zc18xLjAuYmIKaW5kZXggNDRkMDEzZi4uOWExNzI2NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9kZXBtb2R3cmFwcGVyLWNyb3NzXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2RlcG1vZHdyYXBwZXItY3Jvc3NfMS4wLmJiCkBAIC0xMSw2ICsxMSw3IEBACiBTU1RBVEVfU0NBTl9GSUxFUyArPSAiZGVwbW9kd3JhcHBlciIKIEVYVFJBX1NUQUdJTkdfRklYTUVTICs9ICJQS0dEQVRBX0RJUiIKIAorREVQRU5EUyArPSAia21vZC1uYXRpdmUiCiBkb19wb3B1bGF0ZV9zeXNyb290W2RlcGVuZHNdID0gIiIKIAogZG9faW5zdGFsbCgpIHsKQEAgLTIzLDE3ICsyNCwxMyBAQAogICAgIGVjaG8gIlVzYWdlOiBkZXBtb2R3cmFwcGVyIC1hIC1iIHJvb3RmcyBLRVJORUxfVkVSU0lPTiIgPiYyCiAgICAgZXhpdCAxCiBmaQotaWYgWyAhIC1yICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2Qva2VybmVsLWFiaXZlcnNpb24gXTsgdGhlbgotICAgIGVjaG8gIlVuYWJsZSB0byByZWFkOiAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uIiA+JjIKLWVsc2UKLSAgICBrZXJuZWxhYmk9XCQoY2F0ICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2Qva2VybmVsLWFiaXZlcnNpb24pCi0gICAgaWYgWyAiXCRrZXJuZWxhYmkiICE9ICJcJDQiIF07IHRoZW4KLSAgICAgICAgZWNobyAiRXJyb3I6IEtlcm5lbCB2ZXJzaW9uIFwkNCBkb2VzIG5vdCBtYXRjaCBrZXJuZWwtYWJpdmVyc2lvbiAoXCRrZXJuZWxhYmkpIiA+JjIKLSAgICAgICAgZXhpdCAxCi0gICAgZmkKKwora2VybmVsYWJpPSIiCitpZiBbIC1yICIke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uIiBdOyB0aGVuCisgICAga2VybmVsYWJpPVwkKGNhdCAiJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9rZXJuZWwtYWJpdmVyc2lvbiIpCiBmaQogCi1pZiBbICEgLXIgJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9TeXN0ZW0ubWFwLVwkNCBdOyB0aGVuCitpZiBbICEgLXIgJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9TeXN0ZW0ubWFwLVwkNCBdIHx8IFsgIlwka2VybmVsYWJpIiAhPSAiXCQ0IiBdOyB0aGVuCiAgICAgZWNobyAiVW5hYmxlIHRvIHJlYWQ6ICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC1cJDQiID4mMgogICAgIGV4ZWMgZW52IGRlcG1vZCAiXCQxIiAiXCQyIiAiXCQzIiAiXCQ0IgogZWxzZQpAQCAtNDUsNCArNDIsNSBAQAogCiBTWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCiAKK1BBQ0tBR0VTID0gIiIKIGluaGVyaXQgbm9wYWNrYWdlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMKaW5kZXggN2ZiMTBiNS4uMjk4ODVmYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QuaW5jCkBAIC0xNCw5ICsxNCw5IEBACiAgICAgICAgICAgICAgICAgICAgIgogaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBwa2djb25maWcgbWFucGFnZXMKIAotU1JDUkVWID0gImVmNDI1N2I1OWM0MzA3YjhjNjI3ZDg5ZjNjN2YxZmVlZGIzMjU4MmYiCitTUkNSRVYgPSAiYWNhNGVjYTEwM2Q2Njk5NTQzZjdlZDY2MzMzNWMyOGMyZTk5MDhiYiIKICMgTG9va291dCBmb3IgUFYgYnVtcCB0b28gd2hlbiBTUkNSRVYgaXMgY2hhbmdlZAotUFYgPSAiMjQrZ2l0JHtTUkNQVn0iCitQViA9ICIyNStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2tlcm5lbC9rbW9kL2ttb2QuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2RlcG1vZC1zZWFyY2guY29uZiBcCkBAIC0zNSw5ICszNSw3IEBACiBQQUNLQUdFQ09ORklHW2xvZ2dpbmddID0gIiAtLWVuYWJsZS1sb2dnaW5nLC0tZGlzYWJsZS1sb2dnaW5nIgogUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgogCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIGd0a2RvY2l6ZSAtLWRvY2RpciAke1N9L2xpYmttb2QvZG9jcyAtLXNyY2RpciAke1N9Ci19CitHVEtET0NfRE9DRElSID0gIiR7U30vbGlia21vZC9kb2NzIgogCiBkb19jb25maWd1cmVfYXBwZW5kICgpIHsKIAlzZWQgLWkgJ3MjfWxpYnRvb2wjfSR7VEFSR0VUX1NZU30tbGlidG9vbCMnICR7Qn0vZG9sdGxpYnRvb2wKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAppbmRleCBmZWFmY2I5Li41ZjQ1ZmNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCkBAIC0xMSwxMCArMTEsMTAgQEAKICBjb25maWd1cmUuYWMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGViMGY5ZDEuLmE1Mzk5NjggMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKKysrKyBnaXQvY29uZmlndXJlLmFjCiBAQCAtMTQsNyArMTQsNyBAQCBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKICBBQ19TWVNfTEFSR0VGSUxFCiAgQUNfUFJFRklYX0RFRkFVTFQoWy91c3JdKQpAQCAtMjMsNyArMjMsNCBAQAogK0FNX0lOSVRfQVVUT01BS0UoW2NoZWNrLW5ld3MgZm9yZWlnbiAxLjExIHNpbGVudC1ydWxlcyB0YXItcGF4IG5vLWRpc3QtZ3ppcCBkaXN0LXh6IHN1YmRpci1vYmplY3RzIGNvbG9yLXRlc3RzIHNlcmlhbC10ZXN0c10pCiAgQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKQogIExUX0lOSVQoW2Rpc2FibGUtc3RhdGljIHBpYy1vbmx5XSkKLSAKLS0tIAotMS45LjEKLQorIERPTFQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2ZpeC1PX0NMT0VYRUMucGF0Y2gKaW5kZXggODE2MWQ2MS4uNWQ5ZDQwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2ZpeC1PX0NMT0VYRUMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2ZpeC1PX0NMT0VYRUMucGF0Y2gKQEAgLTE4LDEyICsxOCwxMiBAQAogIGxpYmttb2QvbGlia21vZC1pbnRlcm5hbC5oIHwgICAgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCi1kaWZmIC0tZ2l0IGEvbGlia21vZC9saWJrbW9kLWludGVybmFsLmggYi9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAotaW5kZXggMDE4MDEyNC4uMTAwYjQwZiAxMDA2NDQKLS0tLSBhL2xpYmttb2QvbGlia21vZC1pbnRlcm5hbC5oCi0rKysgYi9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAotQEAgLTksNiArOSwxMCBAQAotICNpbmNsdWRlICJtYWNyby5oIgorSW5kZXg6IGdpdC9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xpYmttb2QvbGlia21vZC1pbnRlcm5hbC5oCisrKysgZ2l0L2xpYmttb2QvbGlia21vZC1pbnRlcm5hbC5oCitAQCAtMTAsNiArMTAsMTAgQEAKKyAKICAjaW5jbHVkZSAibGlia21vZC5oIgogIAogKyNpZm5kZWYgT19DTE9FWEVDCkBAIC0zMyw2ICszMywzIEBACiAgc3RhdGljIF9hbHdheXNfaW5saW5lXyBfcHJpbnRmX2Zvcm1hdF8oMiwgMykgdm9pZAogIAlrbW9kX2xvZ19udWxsKHN0cnVjdCBrbW9kX2N0eCAqY3R4LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikge30KICAKLS0tIAotMS43LjEwLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS8wMDAxLVJlY3RpZnktdGhlLWZ1bmN0aW9uLXNpZ25hdHVyZXMtdG8tZml4LXByb3RvdHlwZS1taXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41LzAwMDEtUmVjdGlmeS10aGUtZnVuY3Rpb24tc2lnbmF0dXJlcy10by1maXgtcHJvdG90eXBlLW1pcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI0ODEzMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41LzAwMDEtUmVjdGlmeS10aGUtZnVuY3Rpb24tc2lnbmF0dXJlcy10by1maXgtcHJvdG90eXBlLW1pcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gZGIxMTI3MzlkYzRmNjA4YTk2OGI4MTA0YjM4Mjk1NWRjM2Q5NmNhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgU2VwIDIwMTUgMDc6NDA6MTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVjdGlmeSB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyB0byBmaXggcHJvdG90eXBlIG1pc21hdGNoZXMKLQotY2xhbmcgaXMgbGVzcyBmb3JnaXZpbmcgd2hlbiBpdCBjb21lcyB0byBjb2Rpbmcgc3RhbmRhcmRzLCBjb3JyZWN0IHRoZQotZnVuY3Rpb24gc2lnbmF0dXJlcyB0byByZWZsZWN0IHRoZSBmdW5jdGlvbiBsb2dpYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGZzeW5jLmMgICAgICB8IDcgKysrKy0tLQotIGxhdGVuY3l0b3AuaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2ZzeW5jLmMgYi9mc3luYy5jCi1pbmRleCA4MmRmZjBlLi41Y2VmYmE5IDEwMDY0NAotLS0tIGEvZnN5bmMuYwotKysrIGIvZnN5bmMuYwotQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IGZzeW5jX2ZpbGVzIHsKLSBzdGF0aWMgR0xpc3QgKmZzeW5jX2RhdGE7Ci0gCi0gCi0tc3RhdGljIGNoYWluX2ZpbGUoc3RydWN0IGZzeW5jX3Byb2Nlc3MgKnByb2MsIGNoYXIgKmZpbGVuYW1lKQotK3N0YXRpYyB2b2lkIGNoYWluX2ZpbGUoc3RydWN0IGZzeW5jX3Byb2Nlc3MgKnByb2MsIGNoYXIgKmZpbGVuYW1lKQotIHsKLSAJc3RydWN0IGZzeW5jX2ZpbGVzICpmaWxlOwotIAlHTGlzdCAqaXRlbTsKLUBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBjaGFpbl9maWxlKHN0cnVjdCBmc3luY19wcm9jZXNzICpwcm9jLCBjaGFyICpmaWxlbmFtZSkKLSAJcHJvYy0+ZmlsZXMgPSBnX2xpc3RfYXBwZW5kKHByb2MtPmZpbGVzLCBmaWxlKTsKLSB9Ci0gCi0tc3RhdGljIHJlcG9ydF9maWxlKGNoYXIgKnByb2Nlc3MsIGNoYXIgKmZpbGUpCi0rc3RhdGljIHZvaWQgcmVwb3J0X2ZpbGUoY2hhciAqcHJvY2VzcywgY2hhciAqZmlsZSkKLSB7Ci0gCXN0cnVjdCBmc3luY19wcm9jZXNzICpwcm9jOwotIAlHTGlzdCAqaXRlbTsKLUBAIC0xNTcsOSArMTU3LDEwIEBAIGludCBlbmFibGVfZnN5bmNfdHJhY2VyKHZvaWQpCi0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvY3VycmVudF90cmFjZXIiLCAiZnN5bmMiKTsJCi0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvaXRlcl9jdHJsIiwgImZ0cmFjZV9wcmludGsiKTsJCi0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19vbiIsICIxIik7Ci0rCXJldHVybiByZXQ7Ci0gfQotIAotLWludCBkaXNhYmxlX2ZzeW5jX3RyYWNlcih2b2lkKQotK3ZvaWQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCkKLSB7Ci0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19vbiIsICIwIik7Ci0gfQotZGlmZiAtLWdpdCBhL2xhdGVuY3l0b3AuaCBiL2xhdGVuY3l0b3AuaAotaW5kZXggNTM5NGQ3My4uOWQxMDdhOCAxMDA2NDQKLS0tLSBhL2xhdGVuY3l0b3AuaAotKysrIGIvbGF0ZW5jeXRvcC5oCi1AQCAtNTQsNSArNTQsNSBAQCBleHRlcm4gY2hhciAqdHJhbnNsYXRlKGNoYXIgKmxpbmUpOwotIGV4dGVybiB2b2lkIGluaXRfdHJhbnNsYXRpb25zKGNoYXIgKmZpbGVuYW1lKTsKLSBleHRlcm4gaW50IGZzeW5jX2Rpc3BsYXkoaW50IGR1cmF0aW9uKTsKLSBleHRlcm4gaW50IGVuYWJsZV9mc3luY190cmFjZXIodm9pZCk7Ci0tZXh0ZXJuIGludCBkaXNhYmxlX2ZzeW5jX3RyYWNlcih2b2lkKTsKLStleHRlcm4gdm9pZCBkaXNhYmxlX2ZzeW5jX3RyYWNlcih2b2lkKTsKLSBleHRlcm4gdm9pZCB1cGRhdGVfbGlzdCh2b2lkKTsKLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLWZzeW5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLWZzeW5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODQ4Y2NmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1mc3luYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLWxpbnV4OiBzeXNmczogdXNlIHRyYWNpbmdfb24gYXMgdHJhY2luZ19lbmFibGVkIGlzIGRlcHJlY2F0ZWQKLQotdHJhY2luZ19lbmFibGVkIHVzZSBpbiB0aGUga2VybmVsIGlzIGJlaW5nIGRlcHJlY2F0ZWQgYXMgcGVyIGNvbW1pdAotNjc1MmFiNGE5YzMwIFt0cmFjaW5nOiBEZXByZWNhdGUgdHJhY2luZ19lbmFibGVkIGZvciB0cmFjaW5nX29uXSBpbgotdGhlIGxpbnV4IG1haW5saW5lIGtlcm5lbC4gdHJhY2luZ19lbmFibGVkIHVzZSB3aWxsIGdlbmVyYXRlIGEgd2FybmluZwotYW5kIG1heSBubyBsb25nZXIgZnVuY3Rpb24gYXMgZXhwZWN0ZWQsIHRoZXJlZm9yZSBtb3ZlIHRvIHVzZSB0cmFjaW5nX29uLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRGVubmlzIEhhbGwgPGRlbm5pcy5oYWxsQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBsYXRlbmN5dG9wLTAuNS9mc3luYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGF0ZW5jeXRvcC0wLjUub3JpZy9mc3luYy5jCTIwMTItMDgtMDMgMTA6NDU6NDkuMDAwMDAwMDAwIC0wNDAwCi0rKysgbGF0ZW5jeXRvcC0wLjUvZnN5bmMuYwkyMDEyLTA4LTAzIDEwOjQ4OjM5LjAwMDAwMDAwMCAtMDQwMAotQEAgLTE0OSwxOSArMTQ5LDE5IEBACi0gICogY2QgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZwotICAqIGVjaG8gZnN5bmMgPiBjdXJyZW50X3RyYWNlcgotICAqIGVjaG8gZnRyYWNlX3ByaW50ayA+IGl0ZXJfY3RybCAKLS0gKiBlY2hvIDEgPiB0cmFjaW5nX2VuYWJsZWQKLSsgKiBlY2hvIDEgPiB0cmFjaW5nX29uCi0gICovCi0gCXJldCA9IHN5c3RlbSgiL2Jpbi9tb3VudCAtdCBkZWJ1Z2ZzIG5vbmUgL3N5cy9rZXJuZWwvZGVidWcvIik7Ci0gCWlmICghcmV0KSAKLSAJCXJldHVybiAtMTsKLSAJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9jdXJyZW50X3RyYWNlciIsICJmc3luYyIpOwkKLSAJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9pdGVyX2N0cmwiLCAiZnRyYWNlX3ByaW50ayIpOwkKLS0Jd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX2VuYWJsZWQiLCAiMSIpOwotKwl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfb24iLCAiMSIpOwotIH0KLSAKLSBpbnQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCkKLSB7Ci0tCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19lbmFibGVkIiwgIjAiKTsKLSsJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX29uIiwgIjAiKTsKLSB9Ci0gCi0gCi1AQCAtMzM5LDggKzMzOSw4IEBACi0gCQlpZiAoY3VyZHVyYXRpb24gPiA1KQotIAkJCWN1cmR1cmF0aW9uID0gNTsKLSAJCS8qIGNsZWFyIHRoZSBmdHJhY2UgYnVmZmVyICovCi0tCQl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfZW5hYmxlZCIsICIwIik7Ci0tCQl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfZW5hYmxlZCIsICIxIik7Ci0rCQl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfb24iLCAiMCIpOwotKwkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX29uIiwgIjEiKTsKLSAJCWtleSA9IHNlbGVjdCgxLCAmcmZkcywgTlVMTCwgTlVMTCwgJmVuZCk7Ci0gCQlwYXJzZV9mdHJhY2UoKTsKLSAJCXByaW50X2dsb2JhbF9saXN0KCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41L2xhdGVuY3l0b3AtbWFrZWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41L2xhdGVuY3l0b3AtbWFrZWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNDdmZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi1TaWduZWQtb2ZmLWJ5OiBKYWNrIE1pdGNoZWxsIDxqYWNrLm1pdGNoZWxsQGRiYnJvYWRjYXN0LmNvLnVrPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5vcmlnIGIvTWFrZWZpbGUKLWluZGV4IDE2YTIzNjkuLmZhNzk3YTIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5vcmlnCi0rKysgYi9NYWtlZmlsZQotQEAgLTEsMTAgKzEsMTEgQEAKLS0jIEZJWE1FOiBVc2UgYXV0b2NvbmYgPwotLUhBU19HVEtfR1VJID0gMQotKyMKLSsjCi0gCi0gREVTVERJUiA9Ci0gU0JJTkRJUiA9IC91c3Ivc2JpbgotIFhDRkxBR1MgPSAtVyAgLWcgYHBrZy1jb25maWcgLS1jZmxhZ3MgZ2xpYi0yLjBgIC1EX0ZPUlRJRllfU09VUkNFPTIgLVduby1zaWduLWNvbXBhcmUKLS1MREYgPSAtV2wsLS1hcy1uZWVkZWQgYHBrZy1jb25maWcgLS1saWJzIGdsaWItMi4wYCAgIC1sbmN1cnNlc3cgCi0rTERGID0gLVdsLC0tYXMtbmVlZGVkIGBwa2ctY29uZmlnIC0tbGlicyBnbGliLTIuMGAgICAtbG5jdXJzZXMgJChMREZMQUdTKQotK0NDID89IGdjYwotIAotIE9CSlM9IGxhdGVuY3l0b3AubyB0ZXh0X2Rpc3BsYXkubyB0cmFuc2xhdGUubyBmc3luYy5vCi0gCi1AQCAtMjYsMTYgKzI3LDE3IEBAIGVuZGlmCi0gCi0gIyBXZSB3cml0ZSBleHBsaWNpdHkgdGhpcyAiaW1wbGljaXQgcnVsZSIKLSAlLm8gOiAlLmMKLS0JZ2NjIC1jICQoQ0ZMQUdTKSAkKFhDRkxBR1MpICQ8IC1vICRACi0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAkKFhDRkxBR1MpICQ8IC1vICRACi0gCi0gbGF0ZW5jeXRvcDogICQoT0JKUykgbGF0ZW5jeXRvcC5oIE1ha2VmaWxlCi0tCWdjYyAkKENGTEFHUykgJChPQkpTKSAkKExERikgLW8gbGF0ZW5jeXRvcCAKLSsJJChDQykgJChDRkxBR1MpICQoT0JKUykgJChMREYpIC1vIGxhdGVuY3l0b3AKLSAKLSBjbGVhbjoKLSAJcm0gLWYgKn4gbGF0ZW5jeXRvcCBERUFESk9FICoubwotIAotIGluc3RhbGw6IGxhdGVuY3l0b3AKLSAJbWtkaXIgLXAgJChERVNURElSKS91c3Ivc2hhcmUvbGF0ZW5jeXRvcAotKwlta2RpciAtcCAkKERFU1RESVIpLyQoU0JJTkRJUikKLSAJaW5zdGFsbCAtbSAwNjQ0IGxhdGVuY3l0b3AudHJhbnMgJChERVNURElSKS91c3Ivc2hhcmUvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLnRyYW5zCi0gCWluc3RhbGwgLW0gMDY0NCAqLnBuZyAkKERFU1RESVIpL3Vzci9zaGFyZS9sYXRlbmN5dG9wLwotIAlpbnN0YWxsIC1tIDA3NTUgbGF0ZW5jeXRvcCAkKERFU1RESVIpJChTQklORElSKS8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcF8wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3BfMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjE5NDcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcF8wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IHRvb2wgZm9yIG1lYXN1cmluZyBhbmQgZml4aW5nIGxhdGVuY3kiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxhdGVuY3l0b3Aub3JnLyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xhdGVuY3l0b3AuYztlbmRsaW5lPTIzO21kNT1lZTllYTliMTQxNTM1NmU1NzM0YWRhZDRhODdkYzdmYSIKLQotaW5oZXJpdCBwa2djb25maWcKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmludGwgbmN1cnNlcyBnbGliLTIuMCIKLQotUFIgPSAicjMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzLyR7QlBOfS8ke0JQfS50YXIuZ3ovNzNiYjMzNzFjNmVlMGIwZTY4ZTI1Mjg5MDI3ZTg2NWMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgIGZpbGU6Ly9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9sYXRlbmN5dG9wLWZzeW5jLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlY3RpZnktdGhlLWZ1bmN0aW9uLXNpZ25hdHVyZXMtdG8tZml4LXByb3RvdHlwZS1taXMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzNiYjMzNzFjNmVlMGIwZTY4ZTI1Mjg5MDI3ZTg2NWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWU3ZjcyZmJlYTdiZDkxOGU3MTIxMmExZWFiYWFkODQ4OGQyYzYwMjIwNWQyZTNjOTVkNjJjZDU3ZTkyMDNlZiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIiwsZ3RrKyIKLQotRVhUUkFfT0VNQUtFX1ggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJ0hBU19HVEtfR1VJPTEnLCAnJywgZCl9IgotCi0jQ0ZMQUdTICs9ICIke0xERkxBR1N9IgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gJHtFWFRSQV9PRU1BS0VfWH0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2ZpbGVzLzAwMDEtTWFrZWZpbGUtQWRkLUxERkxBR1MtdmFyaWFibGUtdG8tU0xERkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OWE3ZjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2ZpbGVzLzAwMDEtTWFrZWZpbGUtQWRkLUxERkxBR1MtdmFyaWFibGUtdG8tU0xERkxBR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDI3MmE4YTA2OWE4ZjVmMDZhMWU1ZGZhMGVmMTJmNWY5Mjk4NDcyOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOb29yIDxub29yX2Foc2FuQG1lbnRvci5jb20+Ci1EYXRlOiBXZWQsIDEyIEF1ZyAyMDE1IDIwOjU0OjAwICswNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBBZGQgTERGTEFHUyB2YXJpYWJsZSB0byBTTERGTEFHUy4KLQotKiBBZGQgTERGTEFHUyB2YXJpYWJsZSB0byBTTERGTEFHUyBzbyB0aGF0IGV4dHJhIGxpbmtlcgotICBmbGFncyBjYW4gYmUgc2VudCB2aWEgdGhpcyB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW3BlcmZtb24yLWxpYnBmbTQtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdCi0KLVNpZ25lZC1vZmYtYnk6IE5vb3IgQWhzYW4gPG5vb3JfYWhzYW5AbWVudG9yLmNvbT4KLS0tLQotIGxpYi9NYWtlZmlsZSB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZQotaW5kZXggMWNjODc2NS4uNGJkOTJlZiAxMDA2NDQKLS0tLSBhL2xpYi9NYWtlZmlsZQotKysrIGIvbGliL01ha2VmaWxlCi1AQCAtMTg3LDcgKzE4Nyw3IEBAIENGTEFHUyArPSAtRENPTkZJR19QRk1MSUJfQ0VMTAotIGVuZGlmCi0gCi0gaWZlcSAoJChTWVMpLExpbnV4KQotLVNMREZMQUdTPS1zaGFyZWQgLVdsLC1zb25hbWUgLVdsLCQoVkxJQlBGTSkKLStTTERGTEFHUz0kKExERkxBR1MpIC1zaGFyZWQgLVdsLC1zb25hbWUgLVdsLCQoVkxJQlBGTSkKLSBTTElCUEZNPWxpYnBmbS5zby4kKFZFUlNJT04pLiQoUkVWSVNJT04pLiQoQUdFKQotIFZMSUJQRk09bGlicGZtLnNvLiQoVkVSU0lPTikKLSBTT0xJQkVYVD1zbwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy9maXgtbWlzbGVhZGluZy1pbmRlbnRhdGlvbi1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy9maXgtbWlzbGVhZGluZy1pbmRlbnRhdGlvbi1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVkNDdlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotRml4IGNvbXBpbGUgZXJyb3I6Ci0KLXwgc3lzdF9jb3VudC5jOjM0NjozOiBlcnJvcjogdGhpcyAnZm9yJyBjbGF1c2UgZG9lcyBub3QgZ3VhcmQuLi4gWy1XZXJyb3I9bWlzbGVhZGluZy1pbmRlbnRhdGlvbl0gCi18ICAgIGZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKSAKLXwgICAgICAgXn5+IAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotZGlmZiAtLWdpdCBhL3BlcmZfZXhhbXBsZXMvc3lzdF9jb3VudC5jIGIvcGVyZl9leGFtcGxlcy9zeXN0X2NvdW50LmMKLWluZGV4IDBkNTMwNzguLjJkZmI5YjkgMTAwNjQ0Ci0tLS0gYS9wZXJmX2V4YW1wbGVzL3N5c3RfY291bnQuYwotKysrIGIvcGVyZl9leGFtcGxlcy9zeXN0X2NvdW50LmMKLUBAIC0zNDMsOCArMzQzLDkgQEAgbWVhc3VyZSh2b2lkKQotIAotIAkJZm9yIChkZWxheSA9IDEgOyBkZWxheSA8PSBvcHRpb25zLmRlbGF5OyBkZWxheSsrKSB7Ci0gCi0tCQlmb3IoYz1jbWluIDsgYyA8IGNtYXg7IGMrKykKLS0JCQlzdGFydF9jcHUoYyk7Ci0rCQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspIHsKLSsJCQkJc3RhcnRfY3B1KGMpOwotKwkJCX0KLSAKLSAJCQlpZiAoMCkgewotIAkJCQl0di50dl9zZWMgPSAwOwotQEAgLTM1Myw4ICszNTQsOSBAQCBtZWFzdXJlKHZvaWQpCi0gCQkJfSBlbHNlCi0gCQkJCXNsZWVwKDEpOwotIAotLQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspCi0tCQkJc3RvcF9jcHUoYyk7Ci0rCQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspIHsKLSsJCQkJc3RvcF9jcHUoYyk7Ci0rCQkJfQotIAotIAkJCWZvcihjID0gY21pbjsgYyA8IGNtYXg7IGMrKykgewotIAkJCQlwcmludGYoIiMgJSdkcyAtLS0tLVxuIiwgZGVsYXkpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vbGlicGZtNF80LjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEzNmVhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vbGlicGZtNF80LjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiTW9uaXRvcmluZyB0b29scyBleHBsb2l0aW5nIHRoZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGV2ZW50cyIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyBhIGxpYnJhcnksIGNhbGxlZCBsaWJwZm00IHdoaWNoIGlzIHVzZWQgdG8gZGV2ZWxvcCBcCi1tb25pdG9yaW5nIHRvb2xzIGV4cGxvaXRpbmcgdGhlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgZXZlbnRzIHN1Y2ggYXMgdGhvc2UgXAotcHJvdmlkZWQgYnkgdGhlIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAoUE1VKSBvZiBtb2Rlcm4gcHJvY2Vzc29ycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vcGVyZm1vbjIuc291cmNlZm9yZ2UubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xNDQ4MjImYXRpZD03NTk5NTMmc291cmNlPW5hdmJhciIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZGU0ODhmM2JkNDQyNGUzMDhlMmUzOTljYjk5Yzc4OCIKLQotU0VDVElPTiA9ICJkZXZlbCIKLQotQ09NUEFUSUJMRV9IT1NUID0gInBvd2VycGM2NCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3BlcmZtb24yLyR7QlBOfS9saWJwZm0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtQWRkLUxERkxBR1MtdmFyaWFibGUtdG8tU0xERkxBR1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUwNzdiOTAyMjQ0MGU0OTUxZDk2ZjJkMGU3M2JkNDg3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhYjFlNWIwNDcyNTUwZjkwMzdhODgwMDgzNGY2YmMzYjkyNzY5MDA3MGY2OWZhYzBiNjcyODRiNGIwNWZkNWYiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3BlcmZtb24yL2ZpbGVzL2xpYnBmbTQvIgotCi1FWFRSQV9PRU1BS0UgPSAiREVTVERJUj1cIiR7RH1cIiBQUkVGSVg9XCIke3ByZWZpeH1cIiBMSUJESVI9XCIke2xpYmRpcn1cIiBMRENPTkZJRz1cInRydWVcIiIKLUVYVFJBX09FTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgQVJDSD1cInBvd2VycGNcIiIKLUVYVFJBX09FTUFLRV9hcHBlbmRfcG93ZXJwYzY0ID0gIiBBUkNIPVwicG93ZXJwY1wiIEJJVE1PREU9XCI2NFwiIgotCi1TID0gIiR7V09SS0RJUn0vbGlicGZtLSR7UFZ9IgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgppbmRleCA5MDU0YjMzLi44ZDZmMmYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCkBAIC0zNyw2ICszNyw3IEBACiAgICAgJiBGaXJtd2FyZS1hdGg5ay1odGMgXAogICAgICYgRmlybXdhcmUtcGhhbmZ3IFwKICAgICAmIEZpcm13YXJlLXFhdCBcCisgICAgJiBGaXJtd2FyZS1xY29tIFwKICAgICAmIEZpcm13YXJlLXFsYTEyODAgXAogICAgICYgRmlybXdhcmUtcWxhMnh4eCBcCiAgICAgJiBGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2sgXApAQCAtOTAsMTIgKzkxLDEzIEBACiAgICAgZmlsZTovL0xJQ0VOQ0UuTWFydmVsbDttZDU9OWRkZWExNzM0YTRiYWYzYzc4ZDg0NTE1MWY0MmEzN2EgXAogICAgIGZpbGU6Ly9MSUNFTkNFLm1veGE7bWQ1PTEwODY2MTQ3NjdkOGNjZjc0NGE5MjMyODlkM2Q0MjYxIFwKICAgICBmaWxlOi8vTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZTttZDU9NDJlMzJmYjg5ZjZiOTU5Y2EyMjJlMjVhYzhkZjhmZWQgXAotICAgIGZpbGU6Ly9MSUNFTkNFLk5ldHJvbm9tZTttZDU9Y2QyYTNlNmVmZmUzY2RmNDI3MzE1NzViOGU5NDc3ZWQgXAorICAgIGZpbGU6Ly9MSUNFTkNFLk5ldHJvbm9tZTttZDU9NGFkZDA4ZjI1NzcwODZkNDQ0NDc5OTY1MDNjZGRmNWYgXAogICAgIGZpbGU6Ly9MSUNFTkNFLm52aWRpYTttZDU9NDQyOGE5MjJlZDNiYTJjZWVjOTVmMDc2YTQ4OGNlMDcgXAogICAgIGZpbGU6Ly9MSUNFTkNFLk9MUEM7bWQ1PTViOTE3ZjlkOGMwNjE5OTFiZTRmNmY1ZjEwODcxOWNkIFwKICAgICBmaWxlOi8vTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZTttZDU9MWIzM2M5ZjRkMTdiYzRkNDU3YmRiMjM3MjcwNDY4MzcgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnBoYW5mdzttZDU9OTU0ZGNlYzBlMDUxZjk0MDk4MTJiNTYxZWE3NDNiZmEgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnFhdF9maXJtd2FyZTttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAorICAgIGZpbGU6Ly9MSUNFTlNFLnFjb207bWQ1PTE2NGUzMzYyYTUzOGViMTFkM2FjNTFlOGUxMzQyOTRiIFwKICAgICBmaWxlOi8vTElDRU5DRS5xbGExMjgwO21kNT1kNjg5NTczMmU2MjJkOTUwNjA5MDkzMjIzYTJjNGY1ZCBcCiAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMnh4eDttZDU9NTA1ODU1ZTkyMWI3NWYxYmU0YTQzN2FkOWI3OWRmZjAgXAogICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrO21kNT1iNWZlMjQ0ZmIyYjUzMjMxMWRlMTQ3MmEzYmMwNmRhNSBcCkBAIC0xMTYsNyArMTE4LDcgQEAKICAgICBmaWxlOi8vTElDRU5DRS54YzQwMDA7bWQ1PTBmZjUxZDJkYzQ5ZmNlMDQ4MTRjOTE1NTA4MTA5MmYwIFwKICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDA7bWQ1PTFlMTcwYzEzMTc1MzIzYzMyYzdmNGQwOTk4ZDUzZjY2IFwKICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDBjO21kNT0xMmIwMmVmYTMwNDlkYjY1ZDUyNGFlYjQxOGRkODdjYSBcCi0gICAgZmlsZTovL1dIRU5DRTttZDU9MDM4ZWRiYzllNzQ0MTcxZDhiNjIzNWUwMjI0MDI4YmEgXAorICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PTZmNDY5ODZmNGU5MTNlZjE2Yjc2NWMyMzE5Y2M1MTQxIFwKICIKIAogIyBUaGVzZSBhcmUgbm90IGNvbW1vbiBsaWNlbnNlcywgc2V0IE5PX0dFTkVSSUNfTElDRU5TRSBmb3IgdGhlbQpAQCAtMTU2LDYgKzE1OCw3IEBACiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoOWstaHRjXSA9ICJMSUNFTkNFLm9wZW4tYXRoOWstaHRjLWZpcm13YXJlIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXBoYW5md10gPSAiTElDRU5DRS5waGFuZnciCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWF0XSA9ICJMSUNFTkNFLnFhdF9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xY29tXSA9ICJMSUNFTlNFLnFjb20iCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWxhMTI4MF0gPSAiTElDRU5DRS5xbGExMjgwIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTJ4eHhdID0gIkxJQ0VOQ0UucWxhMnh4eCIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2tdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCkBAIC0xNzgsMTMgKzE4MSwxMyBAQAogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNTAwMGNdID0gIkxJQ0VOQ0UueGM1MDAwYyIKIE5PX0dFTkVSSUNfTElDRU5TRVtXSEVOQ0VdID0gIldIRU5DRSIKIAotU1JDUkVWID0gImJmMDQyOTEzMDlkMzE2OWMwYWQzYjhkYjUyNTY0MjM1YmJkMDhlMzAiCitTUkNSRVYgPSAiOGZjMmQ0ZTU1Njg1YmY3M2I2Zjc3NTIzODNkYTkwNjc0MDRhNzRiYiIKIFBFID0gIjEiCiBQViA9ICIwLjArZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Zpcm13YXJlL2xpbnV4LWZpcm13YXJlLmdpdCIKIAotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTI0OSwxNCArMjUyLDE5IEBACiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjYwIFwKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjUgXAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NWQgJHtQTn0taXdsd2lmaS04MDAwYyAke1BOfS1pd2x3aWZpLTgyNjUgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktOTAwMCBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1taXNjIFwKICAgICAgICAgICAgICAke1BOfS1pYnQtbGljZW5zZSAke1BOfS1pYnQgJHtQTn0taWJ0LW1pc2MgXAogICAgICAgICAgICAgICR7UE59LWlidC0xMS01ICR7UE59LWlidC0xMi0xNiAke1BOfS1pYnQtaHctMzctNyAke1BOfS1pYnQtaHctMzctOCBcCisgICAgICAgICAgICAgJHtQTn0taWJ0LTE3IFwKICAgICAgICAgICAgICAke1BOfS1pOTE1LWxpY2Vuc2UgJHtQTn0taTkxNSBcCiAgICAgICAgICAgICAgJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAke1BOfS1hZHNwLXNzdCBcCiAgICAgICAgICAgICAgJHtQTn0tYm54Mi1taXBzIFwKICAgICAgICAgICAgICAke1BOfS1uZXRyb25vbWUtbGljZW5zZSAke1BOfS1uZXRyb25vbWUgXAogICAgICAgICAgICAgICR7UE59LXFhdCAke1BOfS1xYXQtbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS1saWNlbnNlIFwKKyAgICAgICAgICAgICAke1BOfS1xY29tLXZlbnVzLTEuOCAke1BOfS1xY29tLXZlbnVzLTQuMiBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCAke1BOfS1xY29tLWFkcmVuby1hNTMwIFwKICAgICAgICAgICAgICAke1BOfS13aGVuY2UtbGljZW5zZSBcCiAgICAgICAgICAgICAgJHtQTn0tbGljZW5zZSBcCiAgICAgICAgICAgICAgIgpAQCAtNTk2LDYgKzYwNCw3IEBACiBMSUNFTlNFXyR7UE59LWl3bHdpZmktNzI2NWQgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWl3bHdpZmktODAwMGMgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWl3bHdpZmktODI2NSAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWl3bHdpZmktOTAwMCAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWl3bHdpZmktbWlzYyAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWl3bHdpZmktbGljZW5zZSAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCiAKQEAgLTYyMiw2ICs2MzEsNyBAQAogRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ZCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjY1RC0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS04MDAwYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MDAwQy0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS04MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTgyNjUtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktOTAwMCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS05MDAwLSoudWNvZGUiCiBGSUxFU18ke1BOfS1pd2x3aWZpLW1pc2MgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktKi51Y29kZSIKIAogUkRFUEVORFNfJHtQTn0taXdsd2lmaS0xMzUtNiAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgpAQCAtNjQ1LDYgKzY1NSw3IEBACiBSREVQRU5EU18ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pd2x3aWZpLTkwMDAgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCiAKICMgLWl3bHdpZmktbWlzYyBpcyBhICJjYXRjaCBhbGwiIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyBhbGwgdGhlIGl3bHdpZmkKQEAgLTY3MCw2ICs2ODEsNyBAQAogTElDRU5TRV8ke1BOfS1pYnQtaHctMzctOCA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWlidC0xMS01ICAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taWJ0LTEyLTE2ICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtMTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pYnQtbWlzYyAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCiAKIEZJTEVTXyR7UE59LWlidC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5pYnRfZmlybXdhcmUiCkBAIC02NzcsMTIgKzY4OSwxNCBAQAogRklMRVNfJHtQTn0taWJ0LWh3LTM3LTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtaHctMzcuOCouYnNlcSIKIEZJTEVTXyR7UE59LWlidC0xMS01ICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuc2ZpIC9saWIvZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuZGRjIgogRklMRVNfJHtQTn0taWJ0LTEyLTE2ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuc2ZpIC9saWIvZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LmRkYyIKK0ZJTEVTXyR7UE59LWlidC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLmRkYyIKIEZJTEVTXyR7UE59LWlidC1taXNjICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaWJ0LSoiCiAKIFJERVBFTkRTXyR7UE59LWlidC1ody0zNy03ID0gIiR7UE59LWlidC1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taWJ0LWh3LTM3LjggPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LTE3ID0gIiR7UE59LWlidC1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taWJ0LW1pc2MgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCiAKIEFMTE9XX0VNUFRZXyR7UE59LWlidD0gIjEiCkBAIC03MDcsNiArNzIxLDE4IEBACiBGSUxFU18ke1BOfS1xYXQgICAgICAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWF0Ki5iaW4iCiBSREVQRU5EU18ke1BOfS1xYXQgICAgICAgID0gIiR7UE59LXFhdC1saWNlbnNlIgogCisjIEZvciBRQ09NIFZQVS9HUFUKK0xJQ0VOU0VfJHtQTn0tcWNvbS1saWNlbnNlID0gIkZpcm13YXJlLXFjb20iCitGSUxFU18ke1BOfS1xY29tLWxpY2Vuc2UgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UucWNvbSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vTk9USUNFLnR4dCIKK0ZJTEVTXyR7UE59LXFjb20tdmVudXMtMS44ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS92ZW51cy0xLjgvKiIKK0ZJTEVTXyR7UE59LXFjb20tdmVudXMtNC4yID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS92ZW51cy00LjIvKiIKK0ZJTEVTXyR7UE59LXFjb20tYWRyZW5vLWEzeHggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL2EzMDBfKi5mdyAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2EzMDBfKi5mdyIKK0ZJTEVTXyR7UE59LXFjb20tYWRyZW5vLWE1MzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL2E1MzAqLioiCitSREVQRU5EU18ke1BOfS1xY29tLXZlbnVzLTEuOCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLXZlbnVzLTQuMiA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hM3h4ID0gIiR7UE59LXFjb20tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjb20tYWRyZW5vLWE1MzAgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorCiAjIEZvciBvdGhlciBmaXJtd2FyZXMKICMgTWF5YmUgc3BsaXQgb3V0IHRvIHNlcGFyYXRlIHBhY2thZ2VzIHdoZW4gbmVlZGVkLgogTElDRU5TRV8ke1BOfSA9ICJcCkBAIC03MzcsNiArNzYzLDcgQEAKICAgICAmIEZpcm13YXJlLWF0aDlrLWh0YyBcCiAgICAgJiBGaXJtd2FyZS1waGFuZncgXAogICAgICYgRmlybXdhcmUtcWF0IFwKKyAgICAmIEZpcm13YXJlLXFjb20gXAogICAgICYgRmlybXdhcmUtcWxhMTI4MCBcCiAgICAgJiBGaXJtd2FyZS1xbGEyeHh4IFwKICAgICAmIEZpcm13YXJlLXI4YTc3OXhfdXNiMyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCmluZGV4IDE2NTdkZjYuLjk5MDNjMDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCkBAIC03OCw3ICs3OCw3IEBACiB9CiAKIGRvX2luc3RhbGxfYXJtbXVsdGlsaWIgKCkgewotCW9lX211bHRpbGliX2hlYWRlciBhc20vYXV4dmVjLmggYXNtL2JpdHNwZXJsb25nLmggYXNtL2J5dGVvcmRlci5oIGFzbS9mY250bC5oIGFzbS9od2NhcC5oIGFzbS9pb2N0bHMuaCBhc20va3ZtLmggYXNtL21tYW4uaCBhc20vcGFyYW0uaCBhc20vcGVyZl9yZWdzLmgKKwlvZV9tdWx0aWxpYl9oZWFkZXIgYXNtL2F1eHZlYy5oIGFzbS9iaXRzcGVybG9uZy5oIGFzbS9ieXRlb3JkZXIuaCBhc20vZmNudGwuaCBhc20vaHdjYXAuaCBhc20vaW9jdGxzLmggYXNtL2t2bS5oIGFzbS9rdm1fcGFyYS5oIGFzbS9tbWFuLmggYXNtL3BhcmFtLmggYXNtL3BlcmZfcmVncy5oIGFzbS9icGZfcGVyZl9ldmVudC5oCiAJb2VfbXVsdGlsaWJfaGVhZGVyIGFzbS9wb3NpeF90eXBlcy5oIGFzbS9wdHJhY2UuaCAgYXNtL3NldHVwLmggIGFzbS9zaWdjb250ZXh0LmggYXNtL3NpZ2luZm8uaCBhc20vc2lnbmFsLmggYXNtL3N0YXQuaCAgYXNtL3N0YXRmcy5oIGFzbS9zd2FiLmggIGFzbS90eXBlcy5oIGFzbS91bmlzdGQuaAogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhiMjQ0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1pZl9ldGhlci1tb3ZlLW11c2xjLWV0aGhkci1wcm90ZWN0aW9uLXRvLXVhcGktZmlsZS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDg5NzczNjE2NmZkNzA5OTA2YTVmZGYxNmViMjNmOGZkZGZmNzcwYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBNYXIgMjAxOCAxODozMTowMSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBpZl9ldGhlcjogbW92ZSBtdXNsYyBldGhoZHIgcHJvdGVjdGlvbiB0byB1YXBpIGZpbGUKKworU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGluY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oIHwgNiArKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCitpbmRleCAxNTNjOWMyLi43YjY5YjczIDEwMDY0NAorLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKKysrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCitAQCAtMTQ5LDYgKzE0OSwxMiBAQAorICAqCVRoaXMgaXMgYW4gRXRoZXJuZXQgZnJhbWUgaGVhZGVyLgorICAqLworIAorKyNpZmRlZiBfTkVUSU5FVF9JRl9FVEhFUl9IIC8qIG11c2wgKi8KKysjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDAKKysjZWxzZSAvKiBnbGliYyB1c2VzIF9fTkVUSU5FVF9JRl9FVEhFUl9ILCBhbmQgaW5jbHVkZXMgdGhlIGtlcm5lbCBoZWFkZXIuICovCisrI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUiAxCisrI2VuZGlmCisrCisgLyogYWxsb3cgbGliY3MgbGlrZSBtdXNsIHRvIGRlYWN0aXZhdGUgdGhpcywgZ2xpYmMgZG9lcyBub3QgaW1wbGVtZW50IHRoaXMuICovCisgI2lmbmRlZiBfX1VBUElfREVGX0VUSEhEUgorICNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIJCTEKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2gKaW5kZXggOGJiNzc1Yy4uMDY0YTM5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoCkBAIC0xMSwxMSArMTEsMTEgQEAKICBpbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaCB8IDI1ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKK0luZGV4OiBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGludXgtNC44LXJjNC5vcmlnL2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCi0rKysgbGludXgtNC44LXJjNC9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotQEAgLTQ4LDEzICs0OCwxMiBAQAorLS0tIGxpbnV4LTQuMTUub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAkyMDE4LTAyLTA1IDE3OjM3OjQ0LjcyNDMxNDM3OSAtMDUwMAorKysrIGxpbnV4LTQuMTUvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzozODowMi4xNDg5MTM4MjAgLTA1MDAKK0BAIC00OSwxMyArNDksMTIgQEAKICAjaWZuZGVmIF9VQVBJX0xJQkNfQ09NUEFUX0gKICAjZGVmaW5lIF9VQVBJX0xJQkNfQ09NUEFUX0gKICAKQEAgLTMzLDcgKzMzLDcgQEAKICAgKiB0aGF0IHdvdWxkIGFscmVhZHkgYmUgZGVmaW5lZC4gKi8KICAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSUZfSUZDT05GIDAKLUBAIC05OCwxNSArOTcsNyBAQAorQEAgLTk5LDE1ICs5OCw3IEBACiAgI2RlZmluZSBfX1VBUElfREVGX0lOX0NMQVNTCQkwCiAgCiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9BRERSCQkwCkBAIC00OSw3ICs0OSw3IEBACiAgI2RlZmluZSBfX1VBUElfREVGX1NPQ0tBRERSX0lONgkJMAogICNkZWZpbmUgX19VQVBJX0RFRl9JUFY2X01SRVEJCTAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSVBQUk9UT19WNgkJMAotQEAgLTExNCwxMCArMTA1LDEwIEBACitAQCAtMTE1LDEwICsxMDYsMTAgQEAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSU42X1BLVElORk8JCTAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSVA2X01UVUlORk8JCTAKICAKQEAgLTYyLDcgKzYyLDcgQEAKICAgKiBfX1VBUElfREVGXyogZGVmaW5lcyBhbmQgYWRqdXN0IGFwcHJvcHJpYXRlbHkuICovCiAgI2RlZmluZSBfX1VBUElfREVGX0lOX0FERFIJCTEKICAjZGVmaW5lIF9fVUFQSV9ERUZfSU5fSVBQUk9UTwkJMQotQEAgLTEyNyw3ICsxMTgsNyBAQAorQEAgLTEyOCw3ICsxMTksNyBAQAogICNkZWZpbmUgX19VQVBJX0RFRl9JTl9DTEFTUwkJMQogIAogICNkZWZpbmUgX19VQVBJX0RFRl9JTjZfQUREUgkJMQpAQCAtNzEsMTggKzcxLDE4IEBACiAgICogY29vcmRpbmF0ZS4gKi8KICAjZGVmaW5lIF9fVUFQSV9ERUZfSU42X0FERFJfQUxUCQkxCiAgI2RlZmluZSBfX1VBUElfREVGX1NPQ0tBRERSX0lONgkJMQotQEAgLTE0OSw3ICsxNDAsNyBAQAotIC8qIElmIHdlIGRpZCBub3Qgc2VlIGFueSBoZWFkZXJzIGZyb20gYW55IHN1cHBvcnRlZCBDIGxpYnJhcmllcywKK0BAIC0xNzAsNyArMTYxLDcgQEAKICAgKiBvciB3ZSBhcmUgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCwgdGhlbiBkZWZpbmUgZXZlcnl0aGluZwotICAqIHRoYXQgd2UgbmVlZC4gKi8KKyAgKiB0aGF0IHdlIG5lZWQuIENoZWNrIGZvciBwcmV2aW91cyBfX1VBUElfKiBkZWZpbml0aW9ucyB0byBnaXZlCisgICogdW5zdXBwb3J0ZWQgQyBsaWJyYXJpZXMgYSB3YXkgdG8gb3B0IG91dCBvZiBhbnkga2VybmVsIGRlZmluaXRpb24uICovCiAtI2Vsc2UgLyogIWRlZmluZWQoX19HTElCQ19fKSAqLwogKyNlbHNlIC8qIF9fS0VSTkVMX18gKi8KICAKICAvKiBEZWZpbml0aW9ucyBmb3IgaWYuaCAqLwotICNkZWZpbmUgX19VQVBJX0RFRl9JRl9JRkNPTkYgMQotQEAgLTE4Miw2ICsxNzMsNiBAQAotIC8qIERlZmluaXRpb25zIGZvciB4YXR0ci5oICovCisgI2lmbmRlZiBfX1VBUElfREVGX0lGX0lGQ09ORgorQEAgLTI2Miw2ICsyNTMsNiBAQAogICNkZWZpbmUgX19VQVBJX0RFRl9YQVRUUgkJMQorICNlbmRpZgogIAogLSNlbmRpZiAvKiBfX0dMSUJDX18gKi8KICsjZW5kaWYgLyogX19LRVJORUxfXyAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKaW5kZXggOGRjMWVkYy4uZmI3ZTFkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoCkBAIC0xMSwzNyArMTEsMTEgQEAKICBpbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaCB8IDYgKysrKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKK0luZGV4OiBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGludXgtNC44LXJjNC5vcmlnL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCi0rKysgbGludXgtNC44LXJjNC9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAotQEAgLTIyLDYgKzIyLDcgQEAKLSAjZGVmaW5lIF9VQVBJX0xJTlVYX0lGX0VUSEVSX0gKLSAKLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSsjaW5jbHVkZSA8bGludXgvbGliYy1jb21wYXQuaD4KLSAKLSAvKgotICAqCUlFRUUgODAyLjMgRXRoZXJuZXQgbWFnaWMgY29uc3RhbnRzLiAgVGhlIGZyYW1lIHNpemVzIG9taXQgdGhlIHByZWFtYmxlCi1AQCAtMTM4LDExICsxMzksMTIgQEAKLSAgKglUaGlzIGlzIGFuIEV0aGVybmV0IGZyYW1lIGhlYWRlci4KLSAgKi8KLSAKLSsjaWYgX19VQVBJX0RFRl9FVEhIRFIKLSBzdHJ1Y3QgZXRoaGRyIHsKLSAJdW5zaWduZWQgY2hhcgloX2Rlc3RbRVRIX0FMRU5dOwkvKiBkZXN0aW5hdGlvbiBldGggYWRkcgkqLwotIAl1bnNpZ25lZCBjaGFyCWhfc291cmNlW0VUSF9BTEVOXTsJLyogc291cmNlIGV0aGVyIGFkZHIJKi8KLSAJX19iZTE2CQloX3Byb3RvOwkJLyogcGFja2V0IHR5cGUgSUQgZmllbGQJKi8KLSB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwotLQotKyNlbmRpZgotIAotICNlbmRpZiAvKiBfVUFQSV9MSU5VWF9JRl9FVEhFUl9IICovCi1JbmRleDogbGludXgtNC44LXJjNC9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotKysrIGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLUBAIC01MCw2ICs1MCwxMiBAQAorLS0tIGxpbnV4LTQuMTUub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAkyMDE4LTAyLTA1IDE3OjQwOjQyLjMzODM3MDczMSAtMDUwMAorKysrIGxpbnV4LTQuMTUvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzo0MDo0Mi4zMzQzNzA2MDMgLTA1MDAKK0BAIC01MSw2ICs1MSwxMiBAQAogIAogICNpZm5kZWYgX19LRVJORUxfXyAvKiB3ZSdyZSB1c2VkIGZyb20gdXNlcnNwYWNlICovCiAgCkBAIC01Miw1ICsyNiw1IEBACiArI2VuZGlmCiArCiAgLyogQ29vcmRpbmF0ZSB3aXRoIGxpYmMgbmV0L2lmLmggaGVhZGVyLiAqLwotICNpZiBkZWZpbmVkKF9ORVRfSUZfSCkgJiYgZGVmaW5lZChfX1VTRV9NSVNDKQorICNpZiBkZWZpbmVkKF9ORVRfSUZfSCkKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBkMGFiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAotICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmM0NTQxNTdlMmQwMjRkNDAxYTYwOTA1ZDY0ODFjNmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQ1YzNiZWNkNGQwOGNlNDExYzE0NjI4YTk0OWQwOGUyNDMzZDhjZGVjYTkyMDM2YzcwMTM5ODBlOTM4NThhYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xNS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjE1LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdkYjRjOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xNS43LmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgbGludXgtbGliYy1oZWFkZXJzLmluYworCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1yZW1vdmUtaW5jbHVzaW9uLW9mLXN5c2luZm8uaC1pbi1rZXJuZWwuaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1tdXNsLV9kb2VzXy1kZWZpbmUtSUZGX0xPV0VSX1VQLURPUk1BTi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2ggXAorICAgIgorCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MTg2Y2U2M2M0ODkxOTliNThiNmE1OGFkMmEyNGE5NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZDQ0ZGY0YjIzYTNlMGVkYzE0YmU2M2RmOTVkNzY4Yjk2MDBiMzFjMzViZTA1ZmI4OWY5MzIyNjkwN2ZjOGM2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKaW5kZXggYzFiNWI3Ny4uOGJiZmEyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCkBAIC02OSw2ICs2OSwxMyBAQAogICAgICAgICAgICAgICAgIGNwICR7Qn0vYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubyAka2VybmVsZGlyL2FyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8KICAgICAgICAgZmkKIAorICAgICAgICAjIFJlbW92ZSBmaXhkZXAvb2JqdG9vbCBhcyB0aGV5IHdvbid0IGJlIHRhcmdldCBiaW5hcmllcworICAgICAgICBmb3IgaSBpbiBmaXhkZXAgb2JqdG9vbDsgZG8KKyAgICAgICAgICAgICAgICBpZiBbIC1lICRrZXJuZWxkaXIvdG9vbHMvb2JqdG9vbC8kaSBdOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBybSAtcmYgJGtlcm5lbGRpci90b29scy9vYmp0b29sLyRpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorCiAgICAgICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9CiB9CiAjIEVuc3VyZSB3ZSBkb24ndCByYWNlIGFnYWluc3QgIm1ha2Ugc2NyaXB0cyIgZHVyaW5nIGNwaW8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgppbmRleCA1ODUyYjQyLi40MjAxZmFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCkBAIC0yOCwxMCArMjgsMTMgQEAKIFNSQ1JFVl9tYWNoaW5lID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgImxpbnV4LXlvY3RvLWRldiIsICIke0FVVE9SRVZ9IiwgIjI5NTk0NDA0ZDdmZTczY2Q4MGVhYTRlZThjNDNkY2M1Mzk3MGM2MGUiLCBkKX0nCiBTUkNSRVZfbWV0YSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjEyLXJjKyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTYtcmMrIgogTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz0gIi15b2N0b2Rldi0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKIENPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdWFybXxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0KSIKIAogS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMzFiZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjEwLjE3IgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgppbmRleCA2NGIxZGExLi41ZWRjMGZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTIuYmIKQEAgLTcsMTcgKzcsMTcgQEAKICMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKICMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCiBweXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKLVNSQ1JFVl9tYWNoaW5lID89ICJkYTc3NWFhOWFhYjQxZThhMmI0ZTliNDRmZmUyNjg0NDZjNTE3NTlmIgotU1JDUkVWX21ldGEgPz0gIjRmODI1ZWViNzgzYTI3OTIxNmVlNDVlZDNiOWE2M2RkNjgzN2Y3ZDciCitTUkNSRVZfbWFjaGluZSA/PSAiNzA1ZDAzNTA3YTBjMTBkY2JmOWNhZDNmZjcwZjVkNjBiNzBmMmQ5OSIKK1NSQ1JFVl9tZXRhID89ICI0NjE3MWRlMTkyMjBjNDlkNjcwNTQ0MDE3Y2ZiZWZmYzFlYzcwZTgwIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMjtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1MSU5VWF9WRVJTSU9OID89ICI0LjEyLjIwIgorTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yNCIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEzMDZhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTQuYmIKQEAgLTAsMCArMSw0MSBAQAorS0JSQU5DSCA/PSAidjQuMTQvc3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCisjIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZworIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgorIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KK3B5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIiBhbmQgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKK30KKworU1JDUkVWX21hY2hpbmUgPz0gIjcyNzJlOTEzMmZkYWFmMGRkNzhiYzk0ZTlmMjk3YWFmNzM0NTI5ODIiCitTUkNSRVZfbWV0YSA/PSAiZWE5MzMwODk0ZWVhNzI3YmQxNjU1NTY5YjE2ZjMzODk3NmI3MjU2MyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE0O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTQuMzAiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK0xJTlVYX0tFUk5FTF9UWVBFID0gInByZWVtcHQtcnQiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdXBwY3xxZW11bWlwcykiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZDNlZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE1LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0tCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCit9CisKK1NSQ1JFVl9tYWNoaW5lID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21ldGEgPz0gIjkzOWQ5MzViMGM5OTJjNmYxZTUxYTdhMWM5ZTRmYmU2ZWYzYzMxNzQiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNTtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjE1LjEzIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitMSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NTM4ZTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCi0jIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZwotIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgotIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCi19Ci0KLVNSQ1JFVl9tYWNoaW5lID89ICJkNWVmZWVlYjkyOGEwMTExZmMxODdmZDFlOGQwM2QyZTRlMzVkNGEwIgotU1JDUkVWX21ldGEgPz0gImIxNDlkMTRjY2FlODM0OWFiMzNlMTAxZjZhZjIzM2ExMmY0YjE3YmEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC40LmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuNDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjQuMTEzIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzAxNmVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiOTBkMWZmYTM2Y2JkMzY3MjI2MzhjOTdjMWJiNDZhNTg3NGRiZTI4ZSIKLVNSQ1JFVl9tZXRhID89ICIwNzc0ZWFjZWEyYTdkM2ExNTA1OTQ1MzNiOGM4MGQwYzBiZmRmZGVkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuOS5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC45LjgyIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyMjM0OTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgotS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTAuMTciCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21ldGEgPz0gIjFkOWE4MjAwMTg0YWYyMmY4OTgxZmEyNGIwZTgyYWY0OWM3OTg4ZGQiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEwO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiCmluZGV4IDBiYmQ4ZTIuLjMxMzA3YTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIKQEAgLTQsMTMgKzQsMTMgQEAKIAogcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjQiCiAKIEtNRVRBID0gImtlcm5lbC1tZXRhIgogS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCiAKLVNSQ1JFVl9tYWNoaW5lID89ICI2MGI2NDk5NzE5NDA3MzdkYzdlM2E3ZjI0N2M2MmZmYmQ3YzgyZTRjIgotU1JDUkVWX21ldGEgPz0gIjRmODI1ZWViNzgzYTI3OTIxNmVlNDVlZDNiOWE2M2RkNjgzN2Y3ZDciCitTUkNSRVZfbWFjaGluZSA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tZXRhID89ICI0NjE3MWRlMTkyMjBjNDlkNjcwNTQ0MDE3Y2ZiZWZmYzFlYzcwZTgwIgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiZWUwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNC5iYgpAQCAtMCwwICsxLDI4IEBACitLQlJBTkNIID89ICJ2NC4xNC9zdGFuZGFyZC90aW55L2NvbW1vbi1wYyIKK0xJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCitLQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xNC4zMCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworU1JDUkVWX21hY2hpbmUgPz0gImFkMzE4OTY2MzBmOGJmNmE0NTkxNjQyNjNhZGMwYThmYWY5ODRkOWUiCitTUkNSRVZfbWV0YSA/PSAiZWE5MzMwODk0ZWVhNzI3YmQxNjU1NTY5YjE2ZjMzODk3NmI3MjU2MyIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE0O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0ZFQVRVUkVTID0gIiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YjljYTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTUuYmIKQEAgLTAsMCArMSwyNSBAQAorS0JSQU5DSCA/PSAidjQuMTUvc3RhbmRhcmQvdGlueS9jb21tb24tcGMiCitMSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgorS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTUuMTMiCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK1NSQ1JFVl9tYWNoaW5lID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21ldGEgPz0gIjkzOWQ5MzViMGM5OTJjNmYxZTUxYTdhMWM5ZTRmYmU2ZWYzYzMxNzQiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNTtkZXN0c3VmZml4PSR7S01FVEF9IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9GRUFUVVJFUyA9ICIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhOTgxODkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIKLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNC40LjExMyIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotU1JDUkVWX21hY2hpbmUgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWV0YSA/PSAiYjE0OWQxNGNjYWU4MzQ5YWIzM2UxMDFmNmFmMjMzYTEyZjRiMTdiYSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjQuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNDY4MDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIKLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNC45LjgyIgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZSA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKLVNSQ1JFVl9tZXRhID89ICIwNzc0ZWFjZWEyYTdkM2ExNTA1OTQ1MzNiOGM4MGQwYzBiZmRmZGVkIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuOS5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRkVBVFVSRVMgPSAiIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKaW5kZXggOWMxZjYxYi4uM2JiODcyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwpAQCAtMTIsOSArMTIsOSBAQAogIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBuZXR3b3JrIGFjY2VzcyByZXF1aXJlZAogIyBieSB0aGUgdXNlIG9mIEFVVE9SRVYgU1JDUkVWcywgd2hpY2ggYXJlIHRoZSBkZWZhdWx0IGZvciB0aGlzIHJlY2lwZS4KIHB5dGhvbiAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9IGQuZ2V0VmFyKCJQTiIpOgorICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSBkLmdldFZhcigiUE4iKToKICAgICAgICAgZC5kZWxWYXIoIkJCX0RPTlRfQ0FDSEUiKQotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byAlcyB0byBlbmFibGUgaXQiICUgKGQuZ2V0VmFyKCJQTiIpKSkKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byAlcyB0byBlbmFibGUgaXQiICUgKGQuZ2V0VmFyKCJQTiIpKSkKIH0KIAogREVQRU5EUyArPSAieHotbmF0aXZlIGJjLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmUzY2NhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLUtCUkFOQ0hfcWVtdWFybTY0ID89ICJzdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJzdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInN0YW5kYXJkL3FlbXVwcGMiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11eDg2LTY0ID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJzdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiYWUxMmUxOWNlY2MxOWFmNjZmNjRhNTA1Mzg5MDljYjFjYWQxODVmOSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJiNzFiODBmZDY3OWExN2RmYjRmNzNiMzUyMjYzYzQ5MjczZjcyMWQ0IgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiOGJiMTM1ZTcxMDM3YzQ2MTc1YmJjYzdhY2YzODczMDliMmUxNzEzMyIKLVNSQ1JFVl9tYWNoaW5lID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21ldGEgPz0gIjFkOWE4MjAwMTg0YWYyMmY4OTgxZmEyNGIwZTgyYWY0OWM3OTg4ZGQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMC5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjEwLjE3IgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIKaW5kZXggZmFiZjBmNS4uOGQ1NjAxMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCkBAIC0xMSwyMCArMTEsMjIgQEAKIEtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKIEtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCiAKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjQyY2Y0ZDZhMWJjODRiOTA2ODFjYjgyYWQ5NWMxMjkzODdkNzZiNGIiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjYwYjY0OTk3MTk0MDczN2RjN2UzYTdmMjQ3YzYyZmZiZDdjODJlNGMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiNTcxMzE1YTU1MjZiOWUyMjI2MmNmOTliYWU3YzBkZDZlNWJkMjA0YyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjYwYjY0OTk3MTk0MDczN2RjN2UzYTdmMjQ3YzYyZmZiZDdjODJlNGMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI2MGI2NDk5NzE5NDA3MzdkYzdlM2E3ZjI0N2M2MmZmYmQ3YzgyZTRjIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNjBiNjQ5OTcxOTQwNzM3ZGM3ZTNhN2YyNDdjNjJmZmJkN2M4MmU0YyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImU3ODg5YmExOGYwNjAzNjhkNGFiMzVlNzBiMDc2NzI4ZDczYmE2MjIiCi1TUkNSRVZfbWFjaGluZSA/PSAiNjBiNjQ5OTcxOTQwNzM3ZGM3ZTNhN2YyNDdjNjJmZmJkN2M4MmU0YyIKLVNSQ1JFVl9tZXRhID89ICI0ZjgyNWVlYjc4M2EyNzkyMTZlZTQ1ZWQzYjlhNjNkZDY4MzdmN2Q3IgorU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNDU4MjRjNjBjYTM3ZjQxNGE1YWM1NzgzZTk3MDMzOGRiOWE1YTJhZiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI2NmY3NDFiMGIzZDA5M2U2YjZkZjBmNDQxMjA5MTNlZjNhMjU5ZTIzIgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJmOWQ2Nzc3N2IwN2FjOTc5NjYxODZjMWI1NmRiNzhhZmUyYTE2ZjkyIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiYzVkODM4YzllMjZiZDY1N2I0OWRmZTI4YjExNWU1YmM0YjU4MDg1MCIKK1NSQ1JFVl9tYWNoaW5lID89ICJmOWQ2Nzc3N2IwN2FjOTc5NjYxODZjMWI1NmRiNzhhZmUyYTE2ZjkyIgorU1JDUkVWX21ldGEgPz0gIjQ2MTcxZGUxOTIyMGM0OWQ2NzA1NDQwMTdjZmJlZmZjMWVjNzBlODAiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMi5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMjtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1MSU5VWF9WRVJTSU9OID89ICI0LjEyLjIwIgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjQiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MTQyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiCkBAIC0wLDAgKzEsNDcgQEAKK0tCUkFOQ0ggPz0gInY0LjE0L3N0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY0LjE0L3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInY0LjE0L3N0YW5kYXJkL3FlbXVhcm02NCIKK0tCUkFOQ0hfcWVtdW1pcHMgPz0gInY0LjE0L3N0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAidjQuMTQvc3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInY0LjE0L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY0LjE0L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInY0LjE0L3N0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJkNjI2OGZjMzQ2MGQzOTA0ZmQ0OTA4N2Y3YTgyMmVmYmFhYjliZmU4IgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJjOTQxODk4NDNiOGFkNjJjYWZlOWEzMDdlN2Y3ZDYwNzQxNjkwNTA1IgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjRhZmQ5MjM0N2IyYjM1ZGM4ZTAwMDY3MTJmOGZhMDBhYzU3ZjJhMzYiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJlOGFmNWM5YjY1YzUxODdkMTQ4ZWNkMTFiZDc5Nzk0ODk0NjBjYTY0IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNzRmNmNkMmI2OTc2ZTM3NDkxNzc5ZmNiMWJjNDk2NmQzYTYxNDkyYyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjc0ZjZjZDJiNjk3NmUzNzQ5MTc3OWZjYjFiYzQ5NjZkM2E2MTQ5MmMiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI5ODYzYjMyN2U3NzBiNDJiOGMxOGRhM2UwY2ZhZjA2ZThmOTlhZTk3IgorU1JDUkVWX21hY2hpbmUgPz0gIjc0ZjZjZDJiNjk3NmUzNzQ5MTc3OWZjYjFiYzQ5NjZkM2E2MTQ5MmMiCitTUkNSRVZfbWV0YSA/PSAiZWE5MzMwODk0ZWVhNzI3YmQxNjU1NTY5YjE2ZjMzODk3NmI3MjU2MyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjE0LjMwIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBiZDcxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmIKQEAgLTAsMCArMSw0NyBAQAorS0JSQU5DSCA/PSAidjQuMTUvc3RhbmRhcmQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcworS0JSQU5DSF9xZW11YXJtICA/PSAidjQuMTUvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCitLQlJBTkNIX3FlbXVhcm02NCA/PSAidjQuMTUvc3RhbmRhcmQvcWVtdWFybTY0IgorS0JSQU5DSF9xZW11bWlwcyA/PSAidjQuMTUvc3RhbmRhcmQvbXRpLW1hbHRhMzIiCitLQlJBTkNIX3FlbXVwcGMgID89ICJ2NC4xNS9zdGFuZGFyZC9xZW11cHBjIgorS0JSQU5DSF9xZW11eDg2ICA/PSAidjQuMTUvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjQuMTUvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjQuMTUvc3RhbmRhcmQvbXRpLW1hbHRhNjQiCisKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjRiNjkwMmI0MmY0NzU5MzkyODExN2IyZmYwOTAwY2Q5NjVjZjY0NDMiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjkxMDg0ZDAzMGJjODQxYzQ4M2MzMWU4NjY0Mjg5Yzc5NDBhYTU1MDYiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiMTliYTJkODQzNzUwZmY2NWQ4ZmU1OTBhY2RmYzk5YWVhNjE1Mzk0NSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjkxMDg0ZDAzMGJjODQxYzQ4M2MzMWU4NjY0Mjg5Yzc5NDBhYTU1MDYiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjk3MDAwYzNmNDY2NDY0M2JhYzc4MjhiYmRjMDQ4ZjdlYzIxNmNjMzEiCitTUkNSRVZfbWFjaGluZSA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tZXRhID89ICI5MzlkOTM1YjBjOTkyYzZmMWU1MWE3YTFjOWU0ZmJlNmVmM2MzMTc0IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE1O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTUuMTMiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YzE2ZDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAic3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAic3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJzdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjQwMGMwZjM5Yjk1NGNkOGZmZmRmNTNlNmVjOTc4NTJiNzNmZWE3YWYiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiZmIwM2E5NDcyMzY3YjZjMTc3NzI5YWM2MzEzMjZhYWZkNWQxN2M5MiIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjI2YjhiYTE4NmE2ZDM5NzI4ZmMxNTEwYmQyMjY0MTEwYzc1ODQyZjUiCi1TUkNSRVZfbWFjaGluZSA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKLVNSQ1JFVl9tZXRhID89ICJiMTQ5ZDE0Y2NhZTgzNDlhYjMzZTEwMWY2YWYyMzNhMTJmNGIxN2JhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWExNjVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInN0YW5kYXJkL3FlbXVhcm02NCIKLUtCUkFOQ0hfcWVtdW1pcHMgPz0gInN0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAic3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICIyMzM2OWViN2UwN2M4MzlmYTczYThjMWU4NWFiYTM3YTA3YmYxNGMxIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gImNhYjllMDU5NDQ3ODc4ZjUzODNmOTFhMDVkYjEyODEzZjY5Y2JmYzEiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJjMmU1ZWY4M2I2MTJkNTBmNTBmYWZlZWQ5OTMwZGJlYTMwMmZiZThjIgotU1JDUkVWX21hY2hpbmUgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCi1TUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuOTtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjkuODIiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ4MWRhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgotREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgotCi1MSUNFTlNFID0gIk1JVCAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vZmlsZXMvYmFiZWx0cmFjZS9iYWJlbHRyYWNlLSR7UFZ9LnRhci5iejIgXAotIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwY2VjMjc0NWFjMzE2NjQ5NzkxYzQzZjQxNmQ3MWVhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMjQ5ZmVlNWJlYmE2NTc3MzFmNWQ2YTg0YzUyOTZjNjUxN2Y1NDRiZmJlNzU3MWJkMWZkN2FmMjM3MjYxMzdjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI5NDAyYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjQuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgorREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgorCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vZmlsZXMvYmFiZWx0cmFjZS9iYWJlbHRyYWNlLSR7UFZ9LnRhci5iejIgXAorIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZThjZGFmZWMzYWMwMzQ2YTM4OTg3MGU4N2JmMTM0NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjQzMDM5OTIzYTBhYmM3NWEyNWIzZDU5NGNlZTAwMTc0MjNiNTdmMTBkMmI2MjVlOTZlZDFlOGQ0ODkxZmMxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYgppbmRleCA2ZTkyYzIyLi45MzYyNmRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYgpAQCAtMjUsNiArMjUsNyBAQAogUEFDS0FHRUNPTkZJR1trbW9kXSA9ICItLWVuYWJsZS1rbW9kLCAtLWRpc2FibGUta21vZCwga21vZCIKIFBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKIFBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJsdHRuZy11c3QiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9yaXNjdjY0ID0gImx0dG5nLXVzdCIKIAogU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy10b29scy9sdHRuZy10b29scy0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL3gzMi5wYXRjaCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaAppbmRleCAwZjE4YzVkLi5iZmY4NTI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2gKQEAgLTYsMTMgKzYsMTIgQEAKIAogU2lnbmVkLW9mZi1ieTogVG9tIFphbnVzc2kgPHRvbS56YW51c3NpQGludGVsLmNvbT4KIAotSW5kZXg6IGRvYy9NYWtlZmlsZS5hbQorSW5kZXg6IGx0dG5nLXVzdC0yLjkuMS9kb2MvTWFrZWZpbGUuYW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2RvYy9NYWtlZmlsZS5hbQotKysrIGIvZG9jL01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKKy0tLSBsdHRuZy11c3QtMi45LjEub3JpZy9kb2MvTWFrZWZpbGUuYW0KKysrKyBsdHRuZy11c3QtMi45LjEvZG9jL01ha2VmaWxlLmFtCitAQCAtMSwzICsxLDMgQEAKIC1TVUJESVJTID0gLiBtYW4gZXhhbXBsZXMKICtTVUJESVJTID0gLiBtYW4KICAKLSBkaXN0X21hbl9NQU5TID0gbWFuL2x0dG5nLWdlbi10cC4xIFwKLSAJbWFuL2x0dG5nLXVzdC4zIFwKKyBkaXN0X2RvY19EQVRBID0gamF2YS1hZ2VudC50eHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL21ha2UtbW9kLXNjcmlwdHMvbWFrZS1tb2Qtc2NyaXB0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9tYWtlLW1vZC1zY3JpcHRzL21ha2UtbW9kLXNjcmlwdHNfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YzU4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9tYWtlLW1vZC1zY3JpcHRzL21ha2UtbW9kLXNjcmlwdHNfMS4wLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiQnVpbGQgdG9vbHMgbmVlZGVkIGJ5IGV4dGVybmFsIG1vZHVsZXMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYiCisKK2luaGVyaXQga2VybmVsLWFyY2gKK2luaGVyaXQgcGtnY29uZmlnCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciBvcGVuc3NsLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9fY29tcGlsZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fY29tcGlsZV9rZXJuZWxtb2R1bGVzIgorCitERVBFTkRTICs9ICJiYy1uYXRpdmUiCisKK0VYVFJBX09FTUFLRSA9ICIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENQUD0iJHtCVUlMRF9DUFB9IiIKKworIyBCdWlsZCBzb21lIGhvc3QgdG9vbHMgdW5kZXIgd29yay1zaGFyZWQuICBDQywgTEQsIGFuZCBBUiBhcmUgcHJvYmFibHkKKyMgbm90IHVzZWQsIGJ1dCB0aGlzIGlzIHRoZSBoaXN0b3JpY2FsIHdheSBvZiBpbnZva2luZyAibWFrZSBzY3JpcHRzIi4KKyMKK2RvX2NvbmZpZ3VyZSgpIHsKKwl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUworCW9lX3J1bm1ha2UgQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgQVI9IiR7S0VSTkVMX0FSfSIgXAorCSAgICAgICAgICAgLUMgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IE89JHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0gc2NyaXB0cyBwcmVwYXJlCisKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIwMTY1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbS1XaWRlIFByb2ZpbGVyIgotREVTQ1JJUFRJT04gPSAiT1Byb2ZpbGUgaXMgYSBzeXN0ZW0td2lkZSBwcm9maWxlciBmb3IgTGludXggc3lzdGVtcywgY2FwYWJsZSBcCi1vZiBwcm9maWxpbmcgYWxsIHJ1bm5pbmcgY29kZSBhdCBsb3cgb3ZlcmhlYWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL29wcm9maWxlLnNvdXJjZWZvcmdlLm5ldC9uZXdzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xNjE5MSZhdGlkPTExNjE5MSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm9wYWdlbnQvb3BhZ2VudC5oO2JlZ2lubGluZT01O2VuZGxpbmU9MjY7bWQ1PTRmMTZmNzJjN2E0OTNkOGE0NzA0YWExOGQwM2QxNWM2IFwKLSAgICAgICAgICAgICAgICAgICAiCi1TRUNUSU9OID0gImRldmVsIgotCi1ERVBFTkRTID0gInBvcHQgYmludXRpbHMiCi1SREVQRU5EU18ke1BOfSA9ICJiaW51dGlscy1zeW1saW5rcyIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC12bWxpbnV4IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vJHtCUE59IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9LyR7QlBOfS9saWIqLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59L2xpYiouYSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYWNpbmNsdWRlLm00IFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3Byb2ZpbGUtY3Jvc3MtY29tcGlsZS10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcm9vdC1ob21lLWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1ybWItZGVmaW5pdGlvbi1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaCBcCi0iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJvcHJvZmlsZS0oP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL29wcm9maWxlL2ZpbGVzL29wcm9maWxlLyIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gLS13aXRob3V0LXggYWNfY3ZfcHJvZ19YU0xUUFJPQz0iCi1kb19jb25maWd1cmUgKCkgewotCWNwICR7V09SS0RJUn0vYWNpbmNsdWRlLm00ICR7U30vCi0JYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZQotfQotCi1FWFRSQV9PRU1BS0UgPSAiU1JDRElSPSR7UFRFU1RfUEFUSH0vbGlidXRpbCsrL3Rlc3RzIgotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIGNoZWNrCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jc3ViZGlycz0ibGliZGIvdGVzdHMgbGlidXRpbCsrL3Rlc3RzIGxpYnJlZ2V4L3Rlc3RzIGxpYnV0aWwvdGVzdHMgbGlib3AvdGVzdHMgbGliZGIvdGVzdHMgIgotCWZvciB0b29sdGVzdCBpbiAke3N1YmRpcnN9Ci0JZG8KLQkJZmluZCAke3Rvb2x0ZXN0fSAtcGVybSAvdT14IC10eXBlIGZ8IGNwaW8gLXB2ZHUgJHtEfSR7UFRFU1RfUEFUSH0KLQlkb25lCi0KLQkjIG5lZWRlZCBieSBzb21lIGxpYm9wIHRlc3RzCi0JY3AgLXIgZXZlbnRzICR7RH0ke1BURVNUX1BBVEh9Ci0KLQkjIG5lZWRlZCBieSBsaWJyZWdleCByZWdleF90ZXN0Ci0JY3AgbGlicmVnZXgvc3RsLnBhdCAke0R9JHtQVEVTVF9QQVRIfS9saWJyZWdleAotCWNwIGxpYnJlZ2V4L3Rlc3RzL21hbmdsZWQtbmFtZSAke0R9JHtQVEVTVF9QQVRIfS9saWJyZWdleC90ZXN0cwotCi0JIyBuZWVkZWQgYnkgbGl0dXRpbCsrIGZpbGVfbWFuaXBfdGVzdHMKLQljcCAke1N9L2xpYnV0aWwrKy90ZXN0cy9maWxlX21hbmlwX3Rlc3RzLmNwcCBcCi0JCWxpYnV0aWwrKy90ZXN0cy9maWxlX21hbmlwX3Rlc3RzLm8gJHtEfSR7UFRFU1RfUEFUSH0vbGlidXRpbCsrL3Rlc3RzCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUFkZC1ybWItZGVmaW5pdGlvbi1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU4NTYyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUFkZC1ybWItZGVmaW5pdGlvbi1mb3ItTklPUzItYXJjaGl0ZWN0dXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAzNGIwZDliMWEzMmZiNDA0YTMwMzI3YTdhZTg5MzFjN2M3NTU4M2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1EYXRlOiBUdWUsIDkgRmViIDIwMTYgMDI6MDA6MjkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIHJtYigpIGRlZmluaXRpb24gZm9yIE5JT1MyIGFyY2hpdGVjdHVyZQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cDovL21hcmMuaW5mby8/bD1vcHJvZmlsZS1saXN0Jm09MTQ1NTAxOTE1OTMxODc0Jnc9MiBdCi0tLS0KLSBsaWJwZXJmX2V2ZW50cy9vcGVyZl91dGlscy5oIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmggYi9saWJwZXJmX2V2ZW50cy9vcGVyZl91dGlscy5oCi1pbmRleCAzMjk1NGNjLi44MjcwZTUzIDEwMDY0NAotLS0tIGEvbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaAotKysrIGIvbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaAotQEAgLTE3OCw2ICsxNzgsMTEgQEAgdm9pZCBvcF9yZWxlYXNlX3Jlc291cmNlcyh2b2lkKTsKLSAjZGVmaW5lIGNwdV9yZWxheCgpCWFzbSB2b2xhdGlsZSgiIiA6OjogIm1lbW9yeSIpCi0gI2VuZGlmCi0gCi0rI2lmZGVmIF9fbmlvczJfXwotKyNkZWZpbmUgcm1iKCkJCWFzbSB2b2xhdGlsZSgiIiA6OjogIm1lbW9yeSIpCi0rI2RlZmluZSBjcHVfcmVsYXgoKQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQotKyNlbmRpZgotKwotICNpZmRlZiBfX3RpbGVfXwotICNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0gI2RlZmluZSBybWIoKQkJX19pbnNuX21mKCkKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzcyZmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMzlkNGQ0NmEwYmQ1MDRhYzcwOGZmZTcyZGY4N2JmNzRjZDEyYWQzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdpbGxpYW0gQ29oZW4gPHdjb2hlbkByZWRoYXQuY29tPgotRGF0ZTogRnJpLCA1IEZlYiAyMDE2IDE3OjMwOjE5IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBGVEJGUyBwcm9ibGVtIHdpdGggR0NDLTYKLQotR0NDLTYgaXMgcGlja2llciBhYm91dCBzb21lIG9mIHRoZSB0eXBlIGNvbnZlcnNpb25zIGNhdXNpbmcgdGhlIEZlZG9yYQotMjQgbWFzcyByZWJ1aWxkIHRoZSBidWlsZCBvZiBvcHJvZmlsZSBmYWlsZWQgd2l0aDoKLQotbWFrZVszXTogRW50ZXJpbmcgZGlyZWN0b3J5ICcvYnVpbGRkaXIvYnVpbGQvQlVJTEQvb3Byb2ZpbGUtMS4xLjAvbGlidXRpbCsrJwotZysrIC1ESEFWRV9DT05GSUdfSCAtSS4gLUkuLiAgLUkgLi4vbGlidXRpbCAtSSAuLi9saWJvcCAtSSAuLi9saWJwcCAgIC1XIC1XYWxsIC1mbm8tY29tbW9uIC1mdGVtcGxhdGUtZGVwdGgtNTAgLU8yIC1nIC1waXBlIC1XYWxsIC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1mZXhjZXB0aW9ucyAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NCAtZ3JlY29yZC1nY2Mtc3dpdGNoZXMgLXNwZWNzPS91c3IvbGliL3JwbS9yZWRoYXQvcmVkaGF0LWhhcmRlbmVkLWNjMSAtbTMyIC1tYXJjaD1pNjg2IC1tdHVuZT1hdG9tIC1mYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWMgLW8gb3BfYmZkLm8gb3BfYmZkLmNwcAotb3BfYmZkLmNwcDogSW4gbWVtYmVyIGZ1bmN0aW9uICd2b2lkIG9wX2JmZDo6Z2V0X3N5bWJvbF9yYW5nZShzeW1ib2xfaW5kZXhfdCwgbG9uZyBsb25nIHVuc2lnbmVkIGludCYsIGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQmKSBjb25zdCc6Ci1vcF9iZmQuY3BwOjUzODo0NzogZXJyb3I6IGNhbm5vdCBjb252ZXJ0ICdzdGQ6Om9zdHJlYW0ge2FrYSBzdGQ6OmJhc2ljX29zdHJlYW08Y2hhcj59JyB0byAnY29uc3QgYm9vbCcgaW4gaW5pdGlhbGl6YXRpb24KLSAgYm9vbCBjb25zdCB2ZXJib3NlID0gY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotb3BfYmZkLmNwcDo1NDY6NzogZXJyb3I6IGluIGFyZ3VtZW50IHRvIHVuYXJ5ICEKLSAgaWYgKCF2ZXJib3NlKQotICAgICAgIF5+fn5+fn4KLQotQXZvaWQgdGhlIGludGVybWVkaWF0ZSBib29sIHR5cGUgdG8gbWFrZSBHQ0MtNiBoYXBweS4KLQotU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBDb2hlbiA8d2NvaGVuQHJlZGhhdC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIGxpYnV0aWwrKy9vcF9iZmQuY3BwIHwgNCArLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlidXRpbCsrL29wX2JmZC5jcHAgYi9saWJ1dGlsKysvb3BfYmZkLmNwcAotaW5kZXggMzg5YzkyMC4uZjJlYjQyYiAxMDA2NDQKLS0tLSBhL2xpYnV0aWwrKy9vcF9iZmQuY3BwCi0rKysgYi9saWJ1dGlsKysvb3BfYmZkLmNwcAotQEAgLTUzNSwxNSArNTM1LDEzIEBAIHZvaWQgb3BfYmZkOjpnZXRfc3ltYm9sX3JhbmdlKHN5bWJvbF9pbmRleF90IHN5bV9pZHgsCi0gewotIAlvcF9iZmRfc3ltYm9sIGNvbnN0ICYgc3ltID0gc3ltc1tzeW1faWR4XTsKLSAKLS0JYm9vbCBjb25zdCB2ZXJib3NlID0gY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKTsKLS0KLSAJaWYgKGFub25fb2JqKQotIAkJc3RhcnQgPSBzeW0udm1hKCk7Ci0gCWVsc2UKLSAJCXN0YXJ0ID0gc3ltLmZpbGVwb3MoKTsKLSAJZW5kID0gc3RhcnQgKyBzeW0uc2l6ZSgpOwotIAotLQlpZiAoIXZlcmJvc2UpCi0rCWlmICghKGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSkpKQotIAkJcmV0dXJuOwotIAotIAlpb19zdGF0ZSBzdGF0ZShjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYWNpbmNsdWRlLm00IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYWNpbmNsdWRlLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWVjZDkxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNAorKysgL2Rldi9udWxsCkBAIC0xLDU4MSArMCwwIEBACi1kbmwgQVhfS0VSTkVMX09QVElPTihvcHRpb24sIGFjdGlvbi1pZi1mb3VuZCwgYWN0aW9uLWlmLW5vdC1mb3VuZCkKLWRubCBzZWUgaWYgYXV0b2NvbmYuaCBkZWZpbmVzIHRoZSBvcHRpb24KLUFDX0RFRlVOKFtBWF9LRVJORUxfT1BUSU9OXSwgWwotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSItSSRLSU5DIC1PMiAtRF9fS0VSTkVMX18iCi1BQ19UUllfQ09NUElMRSggWyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD5dLAotWwotI2lmbmRlZiAkMQotYnJlYWtfbWVfaGFyZChcXFwpOwotI2VuZGlmCi1dLFskMl0sWyQzXSwpCi1DRkxBR1M9JFNBVkVfQ0ZMQUdTCi1dKQotCi1kbmwgSGFuZGxlIHRoZSAyLjQgbW9kdWxlIGluc2lkZSBtb2R1bGUvCi1BQ19ERUZVTihbQVhfQ09ORklHX01PRFVMRV0sCi1bCi1pZiB0ZXN0ICEgLWYgJEtJTkMvbGludXgvYXV0b2NvbmYuaDsgdGhlbgotCUFDX01TR19FUlJPUihbbm8gc3VpdGFibHkgY29uZmlndXJlZCBrZXJuZWwgaW5jbHVkZSB0cmVlIGZvdW5kXSkKLWZpCi0KLWRubCAgLS0tIEdldCBMaW51eCBrZXJuZWwgdmVyc2lvbiBhbmQgY29tcGlsZSBwYXJhbWV0ZXJzIC0tLQotCi1BQ19TVUJTVChLVkVSUykKLUFDX01TR19DSEVDS0lORyhbZm9yIGtlcm5lbCB2ZXJzaW9uXSkKLWRubCBpdCdzIGxpa2UgdGhpcyB0byBoYW5kbGUgbWFuZHJha2UncyBmdWJhciB2ZXJzaW9uLmggLSBidWcgIzQ3MTQ0OAotZXZhbCBLVkVSUz1gZ2NjIC1JJEtJTkMgLUUgLWRNICRLSU5DL2xpbnV4L3ZlcnNpb24uaCB8IGdyZXAgLXcgVVRTX1JFTEVBU0UgfCBhd2sgJ3twcmludCAkW10zfSdgCi1BQ19NU0dfUkVTVUxUKFskS1ZFUlNdKQotY2FzZSAiJEtWRVJTIiBpbgotMi4yLip8Mi40LiopIDs7Ci0qKSBBQ19NU0dfRVJST1IoW1Vuc3VwcG9ydGVkIGtlcm5lbCB2ZXJzaW9uXSkKLWVzYWMKLQotZG5sIENoZWNrIGZvciB0aGUgbWluaW1hbCBrZXJuZWwgdmVyc2lvbiBzdXBwb3J0ZWQKLUFDX01TR19DSEVDS0lORyhba2VybmVsIHZlcnNpb25dKQotQVhfS0VSTkVMX1ZFUlNJT04oMiwgMiwgMTAsIDw9LCBBQ19NU0dfUkVTVUxUKFtva10pLCBBQ19NU0dfRVJST1IoW2NoZWNrIGh0bWwgZG9jdW1lbnRhdGlvbiBpbnN0YWxsIHNlY3Rpb25dKSkKLQotZG5sIGxpbnV4L3NwaW5sb2NrLmggYWRkZWQgYXQgc29tZSBwb2ludCBpbiBwYXN0Ci1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkS0lOQy9saW51eC9zcGlubG9jay5oXSkKLWlmIHRlc3QgLWYgJEtJTkMvbGludXgvc3BpbmxvY2suaDsgdGhlbgotCUVYVFJBX0NGTEFHU19NT0RVTEU9IiRFWFRSQV9DRkxBR1NfTU9EVUxFIC1ESEFWRV9MSU5VWF9TUElOTE9DS19IRUFERVIiCi0JQUNfTVNHX1JFU1VMVChbeWVzXSkKLWVsc2UKLQlBQ19NU0dfUkVTVUxUKFtub10pCi1maQotCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBydGNfbG9ja10pCi1nY2MgLUkkS0lOQyAtRSAkS0lOQy9saW51eC9tYzE0NjgxOHJ0Yy5oIHwgZ3JlcCBydGNfbG9jayA+L2Rldi9udWxsCi1pZiB0ZXN0ICIkPyIgLWVxIDA7IHRoZW4KLQlFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtRFJUQ19MT0NLIgotCUFDX01TR19SRVNVTFQoW3llc10pCi1lbHNlCi0JQUNfTVNHX1JFU1VMVChbbm9dKQotZmkKLQkgCi1hcmNoPSJ1bmtub3duIgotQUNfTVNHX0NIRUNLSU5HKGZvciB4ODYtNjQgYXJjaGl0ZWN0dXJlKQotQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2XzY0LCB4ODY2ND0xLCB4ODY2ND0wKQotQVhfTVNHX1JFU1VMVF9ZTigkeDg2NjQpCi1CVUlMRF9IQU1NRVI9bm8KLWlmIHRlc3QgIiR4ODY2NCIgLWVxIDE7IHRoZW4KLQlhcmNoPSJ4ODYiCi0JQlVJTERfSEFNTUVSPXllcwotZWxzZQotCUFDX01TR19DSEVDS0lORyhmb3IgeDg2IGFyY2hpdGVjdHVyZSkKLQlBWF9LRVJORUxfT1BUSU9OKENPTkZJR19YODYsIHg4Nj0xLCB4ODY9MCkKLQlBWF9LRVJORUxfT1BUSU9OKENPTkZJR19YODZfV1BfV09SS1NfT0ssIHg4Nj0xLCB4ODY9JHg4NikKLQlBWF9NU0dfUkVTVUxUX1lOKCR4ODYpCi0JdGVzdCAiJHg4NiIgPSAxICYmIGFyY2g9Ing4NiIKLQkKLQlpZiB0ZXN0ICIkYXJjaCIgPSAidW5rbm93biI7IHRoZW4KLSAgCQlBQ19NU0dfQ0hFQ0tJTkcoZm9yIGlhNjQgYXJjaGl0ZWN0dXJlKQotICAJCUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX0lBNjQsIGlhNjQ9MSwgaWE2ND0wKQotICAJCUFYX01TR19SRVNVTFRfWU4oJGlhNjQpCi0gIAkJdGVzdCAiJGlhNjQiID0gMSAmJiBhcmNoPSJpYTY0IgotCWZpCi0KLWZpCi1BQ19TVUJTVChCVUlMRF9IQU1NRVIpCi0KLXRlc3QgIiRhcmNoIiA9ICJ1bmtub3duIiAmJiBBQ19NU0dfRVJST1IoVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlKQotCi1kbmwgY2hlY2sgdG8gc2VlIGlmIGtlcm5lbCB2ZXJpb24gYXBwcm9wcmlhdGUgZm9yIGFyY2gKLUFDX01TR19DSEVDS0lORyhhcmNoL2tlcm5lbCB2ZXJzaW9uIGNvbWJpbmF0aW9uKQotY2FzZSAiJGFyY2giIGluCi1pYTY0KQotCUFYX0tFUk5FTF9WRVJTSU9OKDIsIDQsIDE4LCA8LCBBQ19NU0dfUkVTVUxUKFtva10pLAotCQlBQ19NU0dfRVJST1IoW3Vuc3VwcG9ydGVkIGFyY2gva2VybmVsXSkpIDs7Ci0qKSBBQ19NU0dfUkVTVUxUKFtva10pCi1lc2FjCi0KLWRubCBmb3Igbm93IHdlIGRvIG5vdCBzdXBwb3J0IFBSRUVNUFQgcGF0Y2gKLUFDX01TR19DSEVDS0lORyhbZm9yIHByZWVtcHQgcGF0Y2hdKQotQVhfS0VSTkVMX09QVElPTihDT05GSUdfUFJFRU1QVCxwcmVlbXB0PTEscHJlZW1wdD0wKQotQVhfTVNHX1JFU1VMVF9ZTihbJHByZWVtcHRdKQotdGVzdCAiJHByZWVtcHQiID0gMCB8fCBBQ19NU0dfRVJST1IoW3Vuc3VwcG9ydGVkIGtlcm5lbCBjb25maWd1cmF0aW9uIDogQ09ORklHX1BSRUVNUFRdKQotCi1BQ19TVUJTVChLSU5DKQotCi1NT0RJTlNUQUxMRElSPS9saWIvbW9kdWxlcy8kS1ZFUlMKLSAKLU9QUk9GSUxFX01PRFVMRV9BUkNIPSRhcmNoCi1BQ19TVUJTVChPUFJPRklMRV9NT0RVTEVfQVJDSCkKLV0KLSkKLQotZG5sIEFYX01TR19SRVNVTFRfWU4oYSkKLWRubCByZXN1bHRzICJ5ZXMiIGlmZiBhPT0xLCAibm8iIGVsc2UKLUFDX0RFRlVOKFtBWF9NU0dfUkVTVUxUX1lOXSwgW3g9bm8KLXRlc3QgIngkMSIgPSAieDEiICYmIHg9eWVzCi1BQ19NU0dfUkVTVUxUKCR4KV0pCi0KLWRubCBBWF9NQUxMT0NfQVRUUklCVVRFIC0gc2VlIGlmIGdjYyB3aWxsIHRha2UgX19hdHRyaWJ1dGVfXygobWFsbG9jKSkKLUFDX0RFRlVOKFtBWF9NQUxMT0NfQVRUUklCVVRFXSwKLVsKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciBtYWxsb2MgYXR0cmlidXRlIGlzIHVuZGVyc3Rvb2RdKQotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSItV2Vycm9yICRDRkxBR1MiCi1BQ19UUllfQ09NUElMRSgsWwotdm9pZCBtb25rZXkoKSBfX2F0dHJpYnV0ZV9fKChtYWxsb2MpKTsKLV0sQUNfTVNHX1JFU1VMVChbeWVzXSk7IEFDX0RFRklORShNQUxMT0NfQVRUUklCVVRFX09LLCAxLCBbd2hldGhlciBtYWxsb2MgYXR0cmlidXRlIGlzIHVuZGVyc3Rvb2RdKSwgQUNfTVNHX1JFU1VMVChbbm9dKSkKLUNGTEFHUz0kU0FWRV9DRkxBR1MgCi1dCi0pCi0KLWRubCBidWlsdGluX2V4cGVjdCBpcyB1c2VkIGluIG1vZHVsZSB3ZSBjYW4ndCBhZGQgdGhhdCBpbiBjb25maWcuaAotQUNfREVGVU4oW0FYX0JVSUxUSU5fRVhQRUNUXSwKLVsKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciBfX2J1aWx0aW5fZXhwZWN0IGlzIHVuZGVyc3Rvb2RdKQotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSItV2Vycm9yICRDRkxBR1MiCi1BQ19UUllfTElOSygsWwotaW50IGk7Ci1pZiAoX19idWlsdGluX2V4cGVjdChpLCAwKSkgeyB9Ci1dLAotQUNfTVNHX1JFU1VMVChbeWVzXSk7IEVYVFJBX0NGTEFHU19NT0RVTEU9IiRFWFRSQV9DRkxBR1NfTU9EVUxFIC1ERVhQRUNUX09LIiwKLUFDX01TR19SRVNVTFQoW25vXSk7KQotQ0ZMQUdTPSRTQVZFX0NGTEFHUyAKLV0KLSkgCi0KLWRubCBBWF9FWFRSQV9ESVJTIC0gTGV0IHVzZXIgc3BlY2lmeSBleHRyYSBkaXJzIGZvciBpbmNsdWRlL2xpYnMKLUFDX0RFRlVOKFtBWF9FWFRSQV9ESVJTXSwKLVsKLUFDX0FSR19XSVRIKGV4dHJhLWluY2x1ZGVzLAotWyAgLS13aXRoLWV4dHJhLWluY2x1ZGVzPURJUiAgICBhZGQgZXh0cmEgaW5jbHVkZSBwYXRoc10sCi0gIHVzZV9leHRyYV9pbmNsdWRlcz0iJHdpdGh2YWwiLAotICB1c2VfZXh0cmFfaW5jbHVkZXM9Tk8KLSkKLWlmIHRlc3QgLW4gIiR1c2VfZXh0cmFfaW5jbHVkZXMiICYmIFwKLSAgICAgICAgdGVzdCAiJHVzZV9leHRyYV9pbmNsdWRlcyIgIT0gIk5PIjsgdGhlbgotICBhY19zYXZlX2lmcz0kSUZTCi0gIElGUz0nOicKLSAgZm9yIGRpciBpbiAkdXNlX2V4dHJhX2luY2x1ZGVzOyBkbwotICAgIGV4dHJhX2luY2x1ZGVzPSIkZXh0cmFfaW5jbHVkZXMgLUkkZGlyIgotICBkb25lCi0gIElGUz0kYWNfc2F2ZV9pZnMKLSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkZXh0cmFfaW5jbHVkZXMiCi1maQotCi1BQ19BUkdfV0lUSChleHRyYS1saWJzLAotWyAgLS13aXRoLWV4dHJhLWxpYnM9RElSICAgICAgICBhZGQgZXh0cmEgbGlicmFyeSBwYXRoc10sCi0gIHVzZV9leHRyYV9saWJzPSR3aXRodmFsLAotICB1c2VfZXh0cmFfbGlicz1OTwotKQotaWYgdGVzdCAtbiAiJHVzZV9leHRyYV9saWJzIiAmJiBcCi0gICAgICAgIHRlc3QgIiR1c2VfZXh0cmFfbGlicyIgIT0gIk5PIjsgdGhlbgotICAgYWNfc2F2ZV9pZnM9JElGUwotICAgSUZTPSc6JwotICAgZm9yIGRpciBpbiAkdXNlX2V4dHJhX2xpYnM7IGRvCi0gICAgIGV4dHJhX2xpYnJhcmllcz0iJGV4dHJhX2xpYnJhcmllcyAtTCRkaXIiCi0gICBkb25lCi0gICBJRlM9JGFjX3NhdmVfaWZzCi0gICBMREZMQUdTPSIkTERGTEFHUyAkZXh0cmFfbGlicmFyaWVzIgotZmkKLV0KLSkKLQotZG5sIEFYX1BPUFRfQ09OU1QgLSBjaGVjayBwb3B0IHByb3RvdHlwZQotQUNfREVGVU4oW0FYX1BPUFRfQ09OU1RdLAotWwotQUNfTVNHX0NIRUNLSU5HKFtwb3B0IHByb3RvdHlwZV0pCi1TQVZFX0NYWEZMQUdTPSRDWFhGTEFHUwotQ1hYRkxBR1M9Ii1XZXJyb3IgJENYWEZMQUdTIgotQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxwb3B0Lmg+XSwKLVsKLWludCBjOyBjaGFyICoqdjsKLXBvcHRHZXRDb250ZXh0KDAsIGMsIHYsIDAsIDApOwotXSwKLUFDX01TR19SRVNVTFQoW3Rha2VzIGNoYXIgKipdKTssCi1BQ19NU0dfUkVTVUxUKFt0YWtlcyBjb25zdCBjaGFyICoqXSk7IEFDX0RFRklORShDT05TVF9QT1BULCAxLCBbd2hldGhlciBwb3B0IHByb3RvdHlwZSB0YWtlcyBhIGNvbnN0IGNoYXIgKipdKSkKLUNYWEZMQUdTPSIkU0FWRV9DWFhGTEFHUyIKLV0KLSkKLQotZG5sIEFYX0NIRUNLX1NTVFJFQU0gLSBjaGVjayBpZiBsb2NhbCBzc3RyZWFtIGlzIG5lZWRlZCB0byBjb21waWxlIE9LCi1BQ19ERUZVTihbQVhfQ0hFQ0tfU1NUUkVBTV0sCi1bCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIGluY2x1ZGVkIHNzdHJlYW1dKQotQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzc3RyZWFtPl0sIFtdLCAKLUFDX01TR19SRVNVTFQoW25vXSk7LAotQUNfTVNHX1JFU1VMVChbeWVzXSk7IE9QX0NYWEZMQUdTPSIkT1BfQ1hYRkxBR1MgLUlcJHt0b3Bfc3JjZGlyfS9pbmNsdWRlIikKLV0KLSkKLQotZG5sIEFYX0NIRUNLX1RZUEVERUYodHlwZWRlZl9uYW1lLCB0eXBlLCBhY3Rpb24taWYtdHJ1ZSwgYWN0aW9uLWlmLWZhbHNlKQotZG5sIGV4ZWMgYWN0aW9uLWlmLXRydWUgaWYgdHlwZWRlZl9uYW1lIGlzIGEgdHlwZWRlZiB0byB0eXBlIGVsc2UgZXhlYyAKLWRubCBhY3Rpb24taWYtZmFsc2UKLWRubCBjdXJyZW50bHkgd29yayBvbmx5IHdpdGggdHlwZSB0eXBlZGVmJ2VkIGluIHN0ZGRlZi5oCi1BQ19ERUZVTihbQVhfQ0hFQ0tfVFlQRURFRl0sIFsKLWRubCBBQ19MQU5HX1BVU0goQykgbm90IGluIGF1dG9jb25mIDIuMTMKLUFDX0xBTkdfU0FWRQotQUNfTEFOR19DCi1TQVZFX0NGTEFHUz0kQ0ZMQUdTCi1DRkxBR1M9Ii1XZXJyb3IgJENGTEFHUyIKLQotQUNfVFJZX0NPTVBJTEUoCi0gIFsKLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICBdLAotICBbCi0gIHR5cGVkZWYgdm9pZCAoKmZjdDEpKCQxKTsKLSAgdHlwZWRlZiB2b2lkICgqZmN0MikoJDIpOwotICBmY3QxIGYxID0gMDsKLSAgZmN0MiBmMiA9IDA7Ci0gIGlmIChmMSA9PSBmMikge30KLSAgXSwKLVskM10sWyQ0XSkKLQotQ0ZMQUdTPSRTQVZFX0NGTEFHUwotQUNfTEFOR19SRVNUT1JFCi1dKQotCi0KLWRubCBBWF9UWVBFREVGRURfTkFNRSh0eXBlZGVmX25hbWUsIGNhbmRpZGF0ZV9saXN0LCB2YXJfbmFtZSkKLWRubCBzZXQgdmFyX25hbWUgdG8gdGhlIHR5cGVkZWYgbmFtZSBvZiAkMSB3aGljaCBtdXN0IGJlIGluIGNhbmRpdGF0ZV9saXN0Ci1kbmwgZWxzZSBwcm9kdWNlIGEgZmF0YWwgZXJyb3IKLUFDX0RFRlVOKFtBWF9UWVBFREVGRURfTkFNRV0sIFsKLQlBQ19NU0dfQ0hFQ0tJTkcoW3R5cGUgb2YgJDFdKQotCWZvciBmIGluICQyOyBkbwotCQlBWF9DSEVDS19UWVBFREVGKCQxLCAkZiwgJDM9IiRmIiwgJDM9IiIpCi0JCWlmIHRlc3QgLW4gIiR7JDN9IjsgdGhlbgotCQkJYnJlYWsKLQkJZmkKLQlkb25lCi0JaWYgdGVzdCAtbiAiJHskM30iOyB0aGVuCi0JCUFDX01TR19SRVNVTFQoWyR7JDN9XSkKLQllbHNlCi0JCUFDX01TR19FUlJPUihbbm90IGZvdW5kXSkKLQlmaQotXSkKLQotZG5sIGZpbmQgYSBiaW5hcnkgaW4gdGhlIHBhdGgKLUFDX0RFRlVOKFtRVF9GSU5EX1BBVEhdLAotWwotCUFDX01TR19DSEVDS0lORyhbZm9yICQxXSkKLQlBQ19DQUNIRV9WQUwocXRfY3ZfcGF0aF8kMSwKLQlbCi0JCXF0X2N2X3BhdGhfJDE9Ik5PTkUiCi0JCWlmIHRlc3QgLW4gIiQkMiI7IHRoZW4KLQkJCXF0X2N2X3BhdGhfJDE9IiQkMiI7Ci0JCWVsc2UKLQkJCWRpcnM9IiQzIgotCQkJcXRfc2F2ZV9JRlM9JElGUwotCQkJSUZTPSc6JwotCQkJZm9yIGRpciBpbiAkUEFUSDsgZG8KLQkJCQlkaXJzPSIkZGlycyAkZGlyIgotCQkJZG9uZQotCQkJSUZTPSRxdF9zYXZlX0lGUwotIAotCQkJZm9yIGRpciBpbiAkZGlyczsgZG8KLQkJCQlpZiB0ZXN0IC14ICIkZGlyLyQxIjsgdGhlbgotCQkJCQlpZiB0ZXN0IC1uICIkNSI7IHRoZW4KLQkJCQkJCWV2YWxzdHI9IiRkaXIvJDEgJDUgMj4mMSAiCi0JCQkJCQlpZiBldmFsICRldmFsc3RyOyB0aGVuCi0JCQkJCQkJcXRfY3ZfcGF0aF8kMT0iJGRpci8kMSIKLQkJCQkJCQlicmVhawotCQkJCQkJZmkKLQkJCQkJZWxzZQotCQkJCQkJcXRfY3ZfcGF0aF8kMT0iJGRpci8kMSIKLQkJCQkJCWJyZWFrCi0JCQkJCWZpCi0JCQkJZmkKLQkJCWRvbmUKLQkJZmkKLQldKQotIAotCWlmIHRlc3QgLXogIiRxdF9jdl9wYXRoXyQxIiB8fCB0ZXN0ICIkcXRfY3ZfcGF0aF8kMSIgPSAiTk9ORSI7IHRoZW4KLQkJQUNfTVNHX1JFU1VMVChub3QgZm91bmQpCi0JCSQ0Ci0JZWxzZQotCQlBQ19NU0dfUkVTVUxUKCRxdF9jdl9wYXRoXyQxKQotCQkkMj0kcXRfY3ZfcGF0aF8kMQotCWZpCi1dKQotCi1kbmwgRmluZCB0aGUgdWljIGNvbXBpbGVyIG9uIHRoZSBwYXRoIG9yIGluIHF0X2N2X2RpcgotQUNfREVGVU4oW1FUX0ZJTkRfVUlDXSwKLVsKLQlRVF9GSU5EX1BBVEgodWljLCBhY191aWMsICRxdF9jdl9kaXIvYmluKQotCWlmIHRlc3QgLXogIiRhY191aWMiIC1hICIkRkFUQUwiID0gMTsgdGhlbgotCQlBQ19NU0dfRVJST1IoW3VpYyBiaW5hcnkgbm90IGZvdW5kIGluIFwkUEFUSCBvciAkcXRfY3ZfZGlyL2JpbiAhXSkKLQlmaQotXSkKLSAKLWRubCBGaW5kIHRoZSByaWdodCBtb2MgaW4gcGF0aC9xdF9jdl9kaXIKLUFDX0RFRlVOKFtRVF9GSU5EX01PQ10sCi1bCi0JUVRfRklORF9QQVRIKG1vYzIsIGFjX21vYzIsICRxdF9jdl9kaXIvYmluKQotCVFUX0ZJTkRfUEFUSChtb2MsIGFjX21vYzEsICRxdF9jdl9kaXIvYmluKQotCi0JaWYgdGVzdCAtbiAiJGFjX21vYzEiIC1hIC1uICIkYWNfbW9jMiI7IHRoZW4KLQkJZG5sIGZvdW5kIGJvdGguIFByZWZlciBRdDMncyBpZiBpdCBleGlzdHMgZWxzZSBtb2MyCi0JCSRhY19tb2MxIC12IDI+JjEgfCBncmVwICJRdCAzIiA+L2Rldi9udWxsCi0JCWlmIHRlc3QgIiQ/IiA9IDA7IHRoZW4KLQkJCWFjX21vYz0kYWNfbW9jMTsKLQkJZWxzZQotCQkJYWNfbW9jPSRhY19tb2MyOwotCQlmaQotCWVsc2UKLQkJaWYgdGVzdCAtbiAiJGFjX21vYzEiOyB0aGVuCi0JCQlhY19tb2M9JGFjX21vYzE7Ci0JCWVsc2UKLQkJCWFjX21vYz0kYWNfbW9jMjsKLQkJZmkKLQlmaQotCi0JaWYgdGVzdCAteiAiJGFjX21vYyIgIC1hICIkRkFUQUwiID0gMTsgdGhlbgotCQlBQ19NU0dfRVJST1IoW21vYyBiaW5hcnkgbm90IGZvdW5kIGluIFwkUEFUSCBvciAkcXRfY3ZfZGlyL2JpbiAhXSkKLQlmaQotXSkKLQotZG5sIGNoZWNrIGEgcGFydGljdWxhciBsaWJuYW1lCi1BQ19ERUZVTihbUVRfVFJZX0xJTktdLAotWwotCVNBVkVfTElCUz0iJExJQlMiCi0JTElCUz0iJExJQlMgJDEiCi0JQUNfVFJZX0xJTksoWwotCSNpbmNsdWRlIDxxZ2xvYmFsLmg+Ci0JI2luY2x1ZGUgPHFzdHJpbmcuaD4KLQkJXSwKLQlbCi0JUVN0cmluZyBzKCJtYW5nbGVfZmFpbHVyZSIpOwotCSNpZiAoUVRfVkVSU0lPTiA8IDIyMSkKLQlicmVha19tZV8oXFxcKTsKLQkjZW5kaWYKLQldLAotCXF0X2N2X2xpYm5hbWU9JDEsCi0JKQotCUxJQlM9IiRTQVZFX0xJQlMiCi1dKQotIAotZG5sIGNoZWNrIHdlIGNhbiBkbyBhIGNvbXBpbGUKLUFDX0RFRlVOKFtRVF9DSEVDS19DT01QSUxFXSwKLVsKLQlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBRdCBsaWJyYXJ5IG5hbWVdKQotIAotCUFDX0NBQ0hFX1ZBTChxdF9jdl9saWJuYW1lLAotCVsKLQkJQUNfTEFOR19DUExVU1BMVVMKLQkJU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLQkJQ1hYRkxBR1M9IiRDWFhGTEFHUyAkUVRfSU5DTFVERVMgJFFUX0xERkxBR1MiIAotCi0JCWZvciBsaWJuYW1lIGluIC1scXQtbXQgLWxxdDMgLWxxdDIgLWxxdDsKLQkJZG8KLQkJCVFUX1RSWV9MSU5LKCRsaWJuYW1lKQotCQkJaWYgdGVzdCAtbiAiJHF0X2N2X2xpYm5hbWUiOyB0aGVuCi0JCQkJYnJlYWs7Ci0JCQlmaQotCQlkb25lCi0KLQkJQ1hYRkxBR1M9JFNBVkVfQ1hYRkxBR1MKLQldKQotCi0JaWYgdGVzdCAteiAiJHF0X2N2X2xpYm5hbWUiOyB0aGVuCi0JCUFDX01TR19SRVNVTFQoW2ZhaWxlZF0pIAotCQlpZiB0ZXN0ICIkRkFUQUwiID0gMSA7IHRoZW4KLQkJCUFDX01TR19FUlJPUihbQ2Fubm90IGNvbXBpbGUgYSBzaW1wbGUgUXQgZXhlY3V0YWJsZS4gQ2hlY2sgeW91IGhhdmUgdGhlIHJpZ2h0IFwkUVRESVIgIV0pCi0JCWZpCi0JZWxzZQotCQlBQ19NU0dfUkVTVUxUKFskcXRfY3ZfbGlibmFtZV0pCi0JZmkKLV0pCi0KLWRubCBnZXQgUXQgdmVyc2lvbiB3ZSdyZSB1c2luZwotQUNfREVGVU4oW1FUX0dFVF9WRVJTSU9OXSwKLVsKLQlBQ19DQUNIRV9DSEVDSyhbUXQgdmVyc2lvbl0sbHl4X2N2X3F0dmVyc2lvbiwKLQlbCi0JCUFDX0xBTkdfQ1BMVVNQTFVTCi0JCVNBVkVfQ1BQRkxBR1M9JENQUEZMQUdTCi0JCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJFFUX0lOQ0xVREVTIgotCi0JCWNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0jaW5jbHVkZSA8cWdsb2JhbC5oPgotIiUlJSJRVF9WRVJTSU9OX1NUUiIlJSUiCi1FT0YKLQkJbHl4X2N2X3F0dmVyc2lvbj1gKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfCBcCi0JCQlncmVwICdeIiUlJSInICAyPi9kZXYvbnVsbCB8IFwKLQkJCXNlZCAtZSAncy8iJSUlIi8vZycgLWUgJ3MvIi8vZydgCi0JCXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKLQkJQ1BQRkxBR1M9JFNBVkVfQ1BQRkxBR1MKLQldKQotIAotCVFUX1ZFUlNJT049JGx5eF9jdl9xdHZlcnNpb24KLQlBQ19TVUJTVChRVF9WRVJTSU9OKQotXSkKLSAKLWRubCBzdGFydCBoZXJlIAotQUNfREVGVU4oW1FUX0RPX0lUX0FMTF0sCi1bCi0JZG5sIFBsZWFzZSBsZWF2ZSB0aGlzIGFsb25lLiBJIHVzZSB0aGlzIGZpbGUgaW4KLQlkbmwgb3Byb2ZpbGUuCi0JRkFUQUw9MAotCi0JQUNfQVJHX1dJVEgocXQtZGlyLCBbICAtLXdpdGgtcXQtZGlyICAgICAgICAgICB3aGVyZSB0aGUgcm9vdCBvZiBRdCBpcyBpbnN0YWxsZWQgXSwKLQkJWyBxdF9jdl9kaXI9YGV2YWwgZWNobyAiJHdpdGh2YWwiL2AgXSkKLQkgCi0JQUNfQVJHX1dJVEgocXQtaW5jbHVkZXMsIFsgIC0td2l0aC1xdC1pbmNsdWRlcyAgICAgIHdoZXJlIHRoZSBRdCBpbmNsdWRlcyBhcmUuIF0sCi0JCVsgcXRfY3ZfaW5jbHVkZXM9YGV2YWwgZWNobyAiJHdpdGh2YWwiYCBdKQotIAotCUFDX0FSR19XSVRIKHF0LWxpYnJhcmllcywgWyAgLS13aXRoLXF0LWxpYnJhcmllcyAgICAgd2hlcmUgdGhlIFF0IGxpYnJhcnkgaXMgaW5zdGFsbGVkLl0sCi0JCVsgIHF0X2N2X2xpYnJhcmllcz1gZXZhbCBlY2hvICIkd2l0aHZhbCJgIF0pCi0KLQlkbmwgcGF5IGF0dGVudGlvbiB0byAkUVRESVIgdW5sZXNzIG92ZXJyaWRkZW4KLQlpZiB0ZXN0IC16ICIkcXRfY3ZfZGlyIjsgdGhlbgotCQlxdF9jdl9kaXI9JFFURElSCi0JZmkKLSAKLQlkbmwgZGVyaXZlIGluYy9saWIgaWYgbmVlZGVkCi0JaWYgdGVzdCAtbiAiJHF0X2N2X2RpciI7IHRoZW4KLQkJaWYgdGVzdCAteiAiJHF0X2N2X2luY2x1ZGVzIjsgdGhlbgotCQkJcXRfY3ZfaW5jbHVkZXM9JHF0X2N2X2Rpci9pbmNsdWRlCi0JCWZpCi0JCWlmIHRlc3QgLXogIiRxdF9jdl9saWJyYXJpZXMiOyB0aGVuCi0JCQlxdF9jdl9saWJyYXJpZXM9JHF0X2N2X2Rpci9saWIKLQkJZmkKLQlmaQotCi0JZG5sIGZsYWdzIGZvciBjb21waWxhdGlvbgotCVFUX0lOQ0xVREVTPQotCVFUX0xERkxBR1M9Ci0JaWYgdGVzdCAtbiAiJHF0X2N2X2luY2x1ZGVzIjsgdGhlbgotCQlRVF9JTkNMVURFUz0iLUkkcXRfY3ZfaW5jbHVkZXMiCi0JZmkKLQlpZiB0ZXN0IC1uICIkcXRfY3ZfbGlicmFyaWVzIjsgdGhlbgotCQlRVF9MREZMQUdTPSItTCRxdF9jdl9saWJyYXJpZXMiCi0JZmkKLQlBQ19TVUJTVChRVF9JTkNMVURFUykKLQlBQ19TVUJTVChRVF9MREZMQUdTKQotIAotCVFUX0ZJTkRfTU9DCi0JTU9DPSRhY19tb2MKLQlBQ19TVUJTVChNT0MpCi0JUVRfRklORF9VSUMKLQlVSUM9JGFjX3VpYwotCUFDX1NVQlNUKFVJQykKLQotCVFUX0NIRUNLX0NPTVBJTEUKLSAKLQlRVF9MSUI9JHF0X2N2X2xpYm5hbWU7Ci0JQUNfU1VCU1QoUVRfTElCKQotCi0JaWYgdGVzdCAtbiAiJHF0X2N2X2xpYm5hbWUiOyB0aGVuCi0JCVFUX0dFVF9WRVJTSU9OCi0JZmkKLV0pCi0KLWRubCBBWF9DWFhGTEFHU19PUFRJT05TKHZhci1uYW1lLCBvcHRpb24pCi1kbmwgYWRkIG9wdGlvbiB0byB2YXItbmFtZSBpZiAkQ1hYIHN1cHBvcnQgaXQuCi1BQ19ERUZVTihbQVhfQ0hFQ0tfUFJFQ09NUElMRURfSEVBREVSXSwgWwotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyICR7Q1hYfSBzdXBwb3J0IHByZWNvbXBpbGVkIGhlYWRlcl0pCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQ1BMVVNQTFVTCi1TQVZFX0NYWEZMQUdTPSRDWFhGTEFHUwotZG5sIHdlIGNvbnNpZGVyIHRoYW4gaWYgLVdpbnZhbGlkLXBjaCBpcyBhY2NlcHRlZCBwY2ggd2lsbCB3b3JrcyAuLi4KLUNYWEZMQUdTPS1XaW52YWxpZC1wY2gKLWRubCBidXQgd2UgZG9uJ3Qgd2FudCAtV2ludmFsaWQtcGNoIGVsc2UgY29tcGlsYXRpb24gd2lsbCBmYWlsIGR1ZSAtV2Vycm9yIGFuZAotZG5sIHRoZSBmYWN0IHRoYW4gc29tZSBwY2ggd2lsbCBiZSBpbnZhbGlkIGZvciB0aGUgZ2l2ZW4gY29tcGlsYXRpb24gb3B0aW9uCi1BQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gLWluY2x1ZGUgYml0cy9zdGRjKysuaCIsIEFDX01TR19SRVNVTFQoW25vXSkpCi1DWFhGTEFHUz0kU0FWRV9DWFhGTEFHUwotQUNfTEFOR19SRVNUT1JFCi1dKQotCi1kbmwgQVhfQ0hFQ0tfRE9DQk9PSwotQUNfREVGVU4oW0FYX0NIRUNLX0RPQ0JPT0tdLCBbCi0jIEl0J3MganVzdCBydWRlIHRvIGdvIG92ZXIgdGhlIG5ldCB0byBidWlsZAotWFNMVFBST0NfRkxBR1M9LS1ub25ldAotRE9DQk9PS19ST09UPQotaWYgdGVzdCAhIC1mIC9ldGMveG1sL2NhdGFsb2c7IHRoZW4KLQlmb3IgaSBpbiAvdXNyL3NoYXJlL3NnbWwvZG9jYm9vay9zdHlsZXNoZWV0L3hzbC9ud2Fsc2ggL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2sveHNsLXN0eWxlc2hlZXRzLzsKLQlkbwotCQlpZiB0ZXN0IC1kICIkaSI7IHRoZW4KLQkJCURPQ0JPT0tfUk9PVD0kaQotCQlmaQotCWRvbmUKLQotCSMgTGFzdCByZXNvcnQgLSB0cnkgbmV0Ci0JaWYgdGVzdCAteiAiJERPQ0JPT0tfUk9PVCI7IHRoZW4KLQkJWFNMVFBST0NfRkxBR1M9Ci0JZmkKLWVsc2UKLQlYTUxfQ0FUQUxPRz0vZXRjL3htbC9jYXRhbG9nCi0JQ0FUX0VOVFJZX1NUQVJUPSc8IS0tJwotCUNBVF9FTlRSWV9FTkQ9Jy0tPicKLWZpCi0KLUFDX0NIRUNLX1BST0coWFNMVFBST0MseHNsdHByb2MseHNsdHByb2MsKQotWFNMVFBST0NfV09SS1M9bm8KLWlmIHRlc3QgLW4gIiRYU0xUUFJPQyI7IHRoZW4KLQlBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgeHNsdHByb2Mgd29ya3NdKQotCi0JaWYgdGVzdCAtbiAiJFhNTF9DQVRBTE9HIjsgdGhlbgotCQlEQl9GSUxFPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvY3VycmVudC94aHRtbC9kb2Nib29rLnhzbCIKLQllbHNlCi0JCURCX0ZJTEU9IiRET0NCT09LX1JPT1QvZG9jYm9vay54c2wiCi0JZmkKLQotCSRYU0xUUFJPQyAkWFNMVFBST0NfRkxBR1MgJERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxIDw8IEVORAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0nSVNPLTg4NTktMSc/PgotPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjEuMi8vRU4iICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCI+Ci08Ym9vayBpZD0idGVzdCI+Ci08L2Jvb2s+Ci1FTkQKLQlpZiB0ZXN0ICIkPyIgPSAwOyB0aGVuCi0JCVhTTFRQUk9DX1dPUktTPXllcwotCWZpCi0JQUNfTVNHX1JFU1VMVCgkWFNMVFBST0NfV09SS1MpCi1maQotQU1fQ09ORElUSU9OQUwoaGF2ZV94c2x0cHJvYywgdGVzdCAiJFhTTFRQUk9DX1dPUktTIiA9ICJ5ZXMiKQotCi1BQ19TVUJTVChYTUxfQ0FUQUxPRykKLUFDX1NVQlNUKFhTTFRQUk9DX0ZMQUdTKQotQUNfU1VCU1QoRE9DQk9PS19ST09UKQotQUNfU1VCU1QoQ0FUX0VOVFJZX1NUQVJUKQotQUNfU1VCU1QoQ0FUX0VOVFJZX0VORCkKLV0pCi0KLWRubCBBWF9DRkxBR1NfT1BUSU9OUyh2YXItbmFtZSwgb3B0aW9uKQotZG5sIGFkZCBvcHRpb24gdG8gdmFyLW5hbWUgaWYgJENDIHN1cHBvcnQgaXQuCi1BQ19ERUZVTihbQVhfQ0ZMQUdTX09QVElPTl0sIFsKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciAke0NDfSAkMiBpcyB1bmRlcnN0b29kXSkKLUFDX0xBTkdfU0FWRQotQUNfTEFOR19DCi1TQVZFX0NGTEFHUz0kQ0ZMQUdTCi1DRkxBR1M9JDIKLUFDX1RSWV9DT01QSUxFKCxbO10sQUNfTVNHX1JFU1VMVChbeWVzXSk7ICQxPSIkeyQxfSAkMiIsQUNfTVNHX1JFU1VMVChbbm9dKSkKLUNGTEFHUz0kU0FWRV9DRkxBR1MKLUFDX0xBTkdfUkVTVE9SRQotXSkKLQotCi1kbmwgQVhfQ1hYRkxBR1NfT1BUSU9OUyh2YXItbmFtZSwgb3B0aW9uKQotZG5sIGFkZCBvcHRpb24gdG8gdmFyLW5hbWUgaWYgJENYWCBzdXBwb3J0IGl0LgotQUNfREVGVU4oW0FYX0NYWEZMQUdTX09QVElPTl0sIFsKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciAke0NYWH0gJDIgaXMgdW5kZXJzdG9vZF0pCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQ1BMVVNQTFVTCi1TQVZFX0NYWEZMQUdTPSRDWFhGTEFHUwotQ1hYRkxBR1M9JDIKLUFDX1RSWV9DT01QSUxFKCxbO10sQUNfTVNHX1JFU1VMVChbeWVzXSk7ICQxPSIkeyQxfSAkMiIsQUNfTVNHX1JFU1VMVChbbm9dKSkKLUNYWEZMQUdTPSRTQVZFX0NYWEZMQUdTCi1BQ19MQU5HX1JFU1RPUkUKLV0pCi0KLWRubCBBWF9DT1BZX0lGX0NIQU5HRShzb3VyY2UsIGRlc3QpCi1kbmwgY29weSBzb3VyY2UgdG8gZGVzdCBpZiB0aGV5IGRvbid0IGNvbXBhcmUgZXF1YWxseSBvciBpZiBkZXN0IGRvZXNuJ3QgZXhpc3QKLUFDX0RFRlVOKFtBWF9DT1BZX0lGX0NIQU5HRV0sIFsKLWlmIHRlc3QgLXIgJDI7IHRoZW4KLQlpZiBjbXAgJDEgJDIgPiAvZGV2L251bGw7IHRoZW4KLQkJZWNobyAkMiBpcyB1bmNoYW5nZWQKLQllbHNlCi0JCWNwIC1mICQxICQyCi0JZmkKLWVsc2UKLQljcCAtZiAkMSAkMgotZmkKLV0pCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hdXRvbWFrZS1mb3JlaWduLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWJiNmM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2F1dG9tYWtlLWZvcmVpZ24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1vcHJvZmlsZSBkb2Vzbid0IHdhbnQgR05VLWxldmVscyBvZiBhdXRvbWFrZSBzdHJpY3RuZXNzIHNvIHRlbGwgaXQgdG8gYmUgImZvcmVpZ24iLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDU3NDA1ODUuLmNmNmMzMTYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE2ICsxNiBAQCBBQ19DT05GSUdfU1JDRElSKFtsaWJvcC9vcF9jb25maWcuaF0pCi0tQU1fSU5JVF9BVVRPTUFLRQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZGI0MDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZpeCBnbGliYy1pc21zIHNvIHRoYXQgb3Byb2ZpbGUgYnVpbGRzIHdpdGggbXVzbC4KLQotUGF0Y2ggdGFrZW4gZnJvbSBvcGVud3J0IChodHRwczovL2dpdGh1Yi5jb20vb3BlbndydC1taXJyb3Ivb3BlbndydC9ibG9iL21hc3Rlci9wYWNrYWdlL2RldmVsL29wcm9maWxlL3BhdGNoZXMvMTAwLW11c2wucGF0Y2gpCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotLS0tIGEvcGVfcHJvZmlsaW5nL29wZXJmLmNwcAotKysrIGIvcGVfcHJvZmlsaW5nL29wZXJmLmNwcAotQEAgLTg1NywxMSArODU3LDE0IEBAIHN0YXRpYyBpbnQgX19kZWxldGVfb2xkX3ByZXZpb3VzX3NhbXBsZV8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZmxhZyAgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgRlRXICpmdHdidWYgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0gewotKwlpbnQgZXJyOwotKwotIAlpZiAocmVtb3ZlKGZwYXRoKSkgewotKwkJZXJyID0gZXJybm87Ci0gCQlwZXJyb3IoInNhbXBsZSBkYXRhIHJlbW92YWwgZXJyb3IiKTsKLS0JCXJldHVybiBGVFdfU1RPUDsKLSsJCXJldHVybiBlcnI7Ci0gCX0gZWxzZSB7Ci0tCQlyZXR1cm4gRlRXX0NPTlRJTlVFOwotKwkJcmV0dXJuIDA7Ci0gCX0KLSB9Ci0gCi1AQCAtODk2LDcgKzg5OSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfc2FtcGxlX2RhdGEodm9pZCkKLSAJCXJldHVybjsKLSAKLSAJaWYgKCFvcGVyZl9vcHRpb25zOjphcHBlbmQpIHsKLS0gICAgICAgICAgICAgICAgaW50IGZsYWdzID0gRlRXX0RFUFRIIHwgRlRXX0FDVElPTlJFVFZBTDsKLSsgICAgICAgICAgICAgICAgaW50IGZsYWdzID0gRlRXX0RFUFRIOwotIAkJZXJybm8gPSAwOwotIAkJaWYgKG5mdHcocHJldmlvdXNfc2FtcGxlZGlyLmNfc3RyKCksIF9fZGVsZXRlX29sZF9wcmV2aW91c19zYW1wbGVfZGF0YSwgMzIsIGZsYWdzKSAhPTAgJiYKLSAJCQkJZXJybm8gIT0gRU5PRU5UKSB7Ci0tLS0gYS9saWJvcC9vcF9ldmVudHMuYwotKysrIGIvbGlib3Avb3BfZXZlbnRzLmMKLUBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfaGV4KGNoYXIgY29uc3QgKiBzdHIpCi0gc3RhdGljIHU2NCBwYXJzZV9sb25nX2hleChjaGFyIGNvbnN0ICogc3RyKQotIHsKLSAJdTY0IHZhbHVlOwotLQlpZiAoc3NjYW5mKHN0ciwgIiVMeCIsICZ2YWx1ZSkgIT0gMSkKLSsJaWYgKHNzY2FuZihzdHIsICIweCVsbHgiLCAmdmFsdWUpICE9IDEpCi0gCQlwYXJzZV9lcnJvcigiZXhwZWN0ZWQgbG9uZyBoZXhhZGVjaW1hbCB2YWx1ZSIpOwotIAotIAlmZmx1c2goc3RkZXJyKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWZhOTU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1QcmV2ZW50IHJ1bm5pbmcgY2hlY2sgdGVzdHMgb24gaG9zdCBpZiBjcm9zcyBjb21waWxpbmcKLQotVGhpcyBwYXRjaCBlbmFibGVzIHJ1bm5pbmcgdGhlICdtYWtlIGNoZWNrJyB0ZXN0cyBvbiB0aGUgdGFyZ2V0Ci1pbiBhIGNyb3NzLWNvbXBpbGVkIGVudmlyb25tZW50LiBJZiBub3QgY3Jvc3MtY29tcGlsaW5nLCB0aGVuICdtYWtlCi0gY2hlY2snIGJ1aWxkcyBhbmQgZXhlY3V0ZXMgdGhlIHRlc3RzOyBubyBjaGFuZ2UgZnJvbSB0aGlzIHBhdGNoLgotSW4gYSBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnQsIHRoZSBtYWtlIHZhcmlhYmxlIENST1NTX0NPTVBJTEUgaXMKLXNldCB3aGljaCBieXBhc3NlcyBhc3NpZ2luZyB0ZXN0cyB0byB0aGUgbWFrZWtmaWxlIHZhcmlhYmxlIFRFU1RTLgotU2luY2UgVEVTVFMgaXMgZW1wdHksIHRoZSAnbWFrZSBjaGVjaycgcHJvY2VzcyBuZXZlciB0cmllcyB0byBydW4gdGhlCi10ZXN0cyBvbiB0aGUgaG9zdHMuICBPbiB0aGUgdGFyZ2V0LCB0aGUgdGVzdHMgbXVzdCBiZSBydW4gbWFudWFsbHkuCi0KLUFsc28sIGluIHRoZSBsaWJ1dGlsKysgdGVzdHMsIGEgbWFrZWZpbGUgdmFyaWFibGUgU1JDRElSIGlzIHBhc3NlZCBpbnRvCi10aGUgY29tcGlsYXRpb24gcGhhc2UsIHBvaW50aW5nIHRvIHRoZSBydW50aW1lIGxvY2F0aW9uIG9mIHRoZSB0ZXN0Ci0nZmlsZS1tYW5pcC10ZXN0cycuICBUaGUgbWVjaGFuaXNtIHVzZWQgZm9yIGEgaG9zdCB0ZXN0LCBiYXNlZCBvbgotJ3RvcGRpcicgZG9lc24ndCB3b3JrLiAgSW5zdGVhZCwgaWYgQ1JPU1NfQ09NUElMRSBpcyBzZXQsIHRoZQotbWFrZWZpbGUgdGFrZXMgdGhlIHBhdGggb2YgU1JDRElSIGZyb20gdGhlIGJ1aWxkIGVudmlyb25tZW50IGFuZCBub3QKLWZyb20gYW4gZXhwcmVzc2lvbiBiYXNlZCBvbiB0aGUgaG9zdCBwYXRoICd0b3BkaXInLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRGF2ZSBMZXJuZXIgPGRhdmUubGVybmVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQxZWNlNjQuLmNlNWExNmYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM5Miw2ICszOTIsNyBAQCBBQ19BUkdfRU5BQkxFKGFjY291bnQtY2hlY2ssCi0gCWVuYWJsZV9hY2NvdW50X2NoZWNrPSRlbmFibGV2YWwsIGVuYWJsZV9hY2NvdW50X2NoZWNrPXllcykKLSAKLSBBTV9DT05ESVRJT05BTChDSEVDS19BQ0NPVU5ULCB0ZXN0ICJ4JGVuYWJsZV9hY2NvdW50X2NoZWNrIiA9ICJ4eWVzIikKLStBTV9DT05ESVRJT05BTChDUk9TU19DT01QSUxFLCB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSAieHllcyIpCi0gCi0gQUNfU1VCU1QoT1BfQ0ZMQUdTKQotIEFDX1NVQlNUKE9QX0NYWEZMQUdTKQotZGlmZiAtLWdpdCBhL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtIGIvbGliZGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDhhNjkwMDMuLmQ4MjAwOTAgMTAwNjQ0Ci0tLS0gYS9saWJkYi90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvbGliZGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xMyw0ICsxMyw2IEBAIGNoZWNrX1BST0dSQU1TID0gZGJfdGVzdAotIGRiX3Rlc3RfU09VUkNFUyA9IGRiX3Rlc3QuYwotIGRiX3Rlc3RfTERBREQgPSAuLi9saWJvZGIuYSAuLi8uLi9saWJ1dGlsL2xpYnV0aWwuYQotIAotK2lmICEgQ1JPU1NfQ09NUElMRQotIFRFU1RTID0gJHtjaGVja19QUk9HUkFNU30KLStlbmRpZgotZGlmZiAtLWdpdCBhL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlib3AvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDhhNzllYjUuLjZkNDE3YzQgMTAwNjQ0Ci0tLS0gYS9saWJvcC90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvbGlib3AvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0zMyw0ICszMyw2IEBAIGxvYWRfZXZlbnRzX2ZpbGVzX3Rlc3RzX0xEQUREID0gJHtDT01NT05fTElCU30KLSBtYW5nbGVfdGVzdHNfU09VUkNFUyA9IG1hbmdsZV90ZXN0cy5jCi0gbWFuZ2xlX3Rlc3RzX0xEQUREID0gJHtDT01NT05fTElCU30KLSAKLStpZiAhIENST1NTX0NPTVBJTEUKLSBURVNUUyA9ICR7Y2hlY2tfUFJPR1JBTVN9IHV0ZjhfY2hlY2tlci5zaAotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0gYi9saWJyZWdleC90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggNmYxOTgzOC4uMWQxNzZmOSAxMDA2NDQKLS0tLSBhL2xpYnJlZ2V4L3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9saWJyZWdleC90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTE4LDQgKzE4LDYgQEAgamF2YV90ZXN0X0xEQUREID0gXAotIAotIEVYVFJBX0RJU1QgPSBtYW5nbGVkLW5hbWUuaW4KLSAKLStpZiAhIENST1NTX0NPTVBJTEUKLSBURVNUUyA9ICR7Y2hlY2tfUFJPR1JBTVN9Ci0rZW5kaWYKLWRpZmYgLS1naXQgYS9saWJ1dGlsKysvdGVzdHMvTWFrZWZpbGUuYW0gYi9saWJ1dGlsKysvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDUxYWYwMzEuLmEwMWVhMmQgMTAwNjQ0Ci0tLS0gYS9saWJ1dGlsKysvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYnV0aWwrKy90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTEsNyArMSw5IEBACi0gCi0gUkVBTFBBVEg9IHJlYWRsaW5rIC1mCi0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gU1JDRElSIDo9ICQoc2hlbGwgJChSRUFMUEFUSCkgJCh0b3BkaXIpL2xpYnV0aWwrKy90ZXN0cy8gKQotK2VuZGlmCi0gCi0gQU1fQ1BQRkxBR1MgPSBcCi0gCS1JICR7dG9wX3NyY2Rpcn0vbGlidXRpbCsrIC1EIFNSQ0RJUj0iXCIkKFNSQ0RJUikvXCIiIEBPUF9DUFBGTEFHU0AKLUBAIC00Niw0ICs0OCw2IEBAIGNhY2hlZF92YWx1ZV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gdXRpbGl0eV90ZXN0c19TT1VSQ0VTID0gdXRpbGl0eV90ZXN0cy5jcHAKLSB1dGlsaXR5X3Rlc3RzX0xEQUREID0gJHtDT01NT05fTElCU30KLSAKLStpZiAhIENST1NTX0NPTVBJTEUKLSBURVNUUyA9ICR7Y2hlY2tfUFJPR1JBTVN9Ci0rZW5kaWYKLWRpZmYgLS1naXQgYS9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlidXRpbC90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggZGZjZDZlYy4uZTg4MzFiNSAxMDA2NDQKLS0tLSBhL2xpYnV0aWwvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYnV0aWwvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xMiw0ICsxMiw2IEBAIGZpbGVfdGVzdHNfTERBREQgPSAuLi9saWJ1dGlsLmEKLSBzdHJpbmdfdGVzdHNfU09VUkNFUyA9IHN0cmluZ190ZXN0cy5jCi0gc3RyaW5nX3Rlc3RzX0xEQUREID0gLi4vbGlidXRpbC5hCi0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQotK2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9yb290LWhvbWUtZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcm9vdC1ob21lLWRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VhZjZhNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9yb290LWhvbWUtZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotb3Byb2ZpbGU6IERldGVybWluZSB0aGUgcm9vdCBob21lIGRpcmVjdG9yeSBkeW5hbWljYWxseQotCi1UaGlzIGNvbW1pdCBkZXRlY3RzIHRoZSByb290IGhvbWUgZGlyZWN0b3J5IGR5bmFtaWNhbGx5IHdpdGggY2hhbmdlcyB0bwotdGhlIG9wcm9maWxlIGd1aSBhcHAgc291cmNlLgotCi1UaGUgY29tbWl0IHJlcGxhY2VzIGFuIGVhcmxpZXIgZml4IHRoYXQgZGV0ZWN0ZWQgYW5kIGFkanVzdGVkIGEKLSdub24tc3RhbmRhcmQnIHJvb3QgaG9tZSBkaXJlY3RvcnkgYXQgYnVpbGQgdGltZS4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhpcwotcGF0Y2ggaXMgdGhhdCB0aGUgb3Byb2ZpbGUgdG9vbHMgYXJlIGFkanVzdGVkIHRvIHRoZSBjdXJyZW50IHJ1bi10aW1lCi1wYXRoIHRvIH5yb290LCBub3QgdGhlIGJ1aWxkIHRpbWUgcGF0aC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogRGF2ZSBMZXJuZXIgPGRhdmUubGVybmVyQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBvcHJvZmlsZS0xLjAuMC9kb2Mvb3Byb2ZpbGUuaHRtbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wcm9maWxlLTEuMC4wLm9yaWcvZG9jL29wcm9maWxlLmh0bWwJMjAxNC0xMS0wMyAxNzo1NTozMS41MTEwMzQ4NTcgKzAwMDAKLSsrKyBvcHJvZmlsZS0xLjAuMC9kb2Mvb3Byb2ZpbGUuaHRtbAkyMDE0LTExLTAzIDE3OjU3OjI2LjQxNTAzNzk4OCArMDAwMAotQEAgLTE1NjMsOCArMTU2Myw4IEBACi0gCQk8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5tdXN0PC9lbT48L3NwYW4+IHN0b3AgaXQgaW4gYSBjb250cm9sbGVkIG1hbm5lciBpbiBvcmRlciB0byBwcm9jZXNzCi0gCQl0aGUgcHJvZmlsZSBkYXRhIGl0IGhhcyBjb2xsZWN0ZWQuICBVc2UgPGNvZGUgY2xhc3M9ImNvZGUiPmtpbGwgLVNJR0lOVCAmbHQ7b3BlcmYtUElEJmd0OzwvY29kZT4KLSAJCWZvciB0aGlzIHB1cnBvc2UuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgd2hlbiBydW5uaW5nIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPm9wZXJmPC9zdHJvbmc+PC9zcGFuPgotLQkJd2l0aCB0aGlzIG9wdGlvbiwgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNob3VsZCBiZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9yb290PC9jb2RlPiBvciBhIHN1YmRpcmVjdG9yeQotLQkJb2YgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcm9vdDwvY29kZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgotKwkJd2l0aCB0aGlzIG9wdGlvbiwgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNob3VsZCBiZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPn5yb290PC9jb2RlPiBvciBhIHN1YmRpcmVjdG9yeQotKwkJb2YgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5+cm9vdDwvY29kZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgotIAkJPC9wPgotICAgICAgICAgICAgICAgPC9kZD4KLSAgICAgICAgICAgICAgIDxkdD4KLUluZGV4OiBvcHJvZmlsZS0xLjAuMC9kb2Mvb3Byb2ZpbGUueG1sCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Byb2ZpbGUtMS4wLjAub3JpZy9kb2Mvb3Byb2ZpbGUueG1sCTIwMTQtMTEtMDMgMTc6NTU6MzEuNTE1MDM0ODU3ICswMDAwCi0rKysgb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLnhtbAkyMDE0LTExLTAzIDE3OjU4OjAzLjcxOTAzOTAwNSArMDAwMAotQEAgLTY1NCw4ICs2NTQsOCBAQAotIAkJPGVtcGhhc2lzPm11c3Q8L2VtcGhhc2lzPiBzdG9wIGl0IGluIGEgY29udHJvbGxlZCBtYW5uZXIgaW4gb3JkZXIgdG8gcHJvY2VzcwotIAkJdGhlIHByb2ZpbGUgZGF0YSBpdCBoYXMgY29sbGVjdGVkLiAgVXNlIDxjb2RlPmtpbGwgLVNJR0lOVCAmbHQ7b3BlcmYtUElEJmd0OzwvY29kZT4KLSAJCWZvciB0aGlzIHB1cnBvc2UuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgd2hlbiBydW5uaW5nIDxjb21tYW5kPm9wZXJmPC9jb21tYW5kPgotLQkJd2l0aCB0aGlzIG9wdGlvbiwgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNob3VsZCBiZSA8ZmlsZW5hbWU+L3Jvb3Q8L2ZpbGVuYW1lPiBvciBhIHN1YmRpcmVjdG9yeQotLQkJb2YgPGZpbGVuYW1lPi9yb290PC9maWxlbmFtZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgotKwkJd2l0aCB0aGlzIG9wdGlvbiwgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHNob3VsZCBiZSA8ZmlsZW5hbWU+fnJvb3Q8L2ZpbGVuYW1lPiBvciBhIHN1YmRpcmVjdG9yeQotKwkJb2YgPGZpbGVuYW1lPn5yb290PC9maWxlbmFtZT4gdG8gYXZvaWQgc3RvcmluZyBzYW1wbGUgZGF0YSBmaWxlcyBpbiBsb2NhdGlvbnMgYWNjZXNzaWJsZSBieSByZWd1bGFyIHVzZXJzLgotIAkJPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gCTwvdmFybGlzdGVudHJ5PgotIAk8dmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODE0YmU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSMhL2Jpbi9zaAotCi1zYXZlZF9kaXI9JFBXRAotZm9yIGRpciBpbiAqL3Rlc3RzIDsgZG8KLQljZCAkZGlyCi0JZm9yIGF0ZXN0IGluICogOyBkbwotCQlpZiBbIFwoIC14ICRhdGVzdCBcKSAtYSBcKCAtZiAkYXRlc3QgXCkgXSA7IHRoZW4KLQkJCS4vJGF0ZXN0ID4gJHthdGVzdH0uc3Rkb3V0IDI+ICR7YXRlc3R9LnN0ZGVycgotCQkJaWYgWyAkPyA9IDAgXSA7IHRoZW4KLQkJCQllY2hvICJQQVNTOiAkZGlyICRhdGVzdCIKLQkJCQlybSAke2F0ZXN0fS5zdGRvdXQgJHthdGVzdH0uc3RkZXJyCi0JCQllbHNlCi0JCQkJZWNobyAiRkFJTDogJHtkaXJ9LyR7YXRlc3R9IgotCQkJZmkKLQkJZmkKLQlkb25lCi0JY2QgJHNhdmVkX2RpcgotZG9uZQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmE5NGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBvcHJvZmlsZS5pbmMKLQotREVQRU5EUyArPSAidmlydHVhbC9rZXJuZWwiCi1ERVBFTkRTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIGxpYnBmbTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNDhjNGMwNjlmOTQ3NmY0MjdmYTcxOTU1NjNmOTg2NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZjc1OWE2ZGUxYTYwMzNkNWRmYzkzYmRhMTI5YTlmMmUxMjhhZWNjNDIzOGNjNjU3ZmViMDgwMWQxYjAzNjZjIgotCi1TID0gIiR7V09SS0RJUn0vb3Byb2ZpbGUtJHtQVn0iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgppbmRleCBiNzliOTczLi41MWY1NTk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCkBAIC0yMiwxMSArMjIsMTQgQEAKIFBBQ0tBR0VDT05GSUdbc3lzdGVtdGFwXSA9ICIsTk9fU0RUPTEsc3lzdGVtdGFwIgogUEFDS0FHRUNPTkZJR1tqdm10aV0gPSAiLE5PX0pWTVRJPTEiCiAKKyMgbGliYXVkaXQgc3VwcG9ydCB3b3VsZCBuZWVkIHNjcmlwdGluZyB0byBiZSBlbmFibGVkCitQQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICIsTk9fTElCQVVESVQ9MSxhdWRpdCIKKwogREVQRU5EUyA9ICIgXAogICAgIHZpcnR1YWwvJHtNTFBSRUZJWH1saWJjIFwKICAgICAke01MUFJFRklYfWVsZnV0aWxzIFwKICAgICAke01MUFJFRklYfWJpbnV0aWxzIFwKLSAgICBiaXNvbiBmbGV4IHh6IFwKKyAgICBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgeHogXAogICAgIHhtbHRvLW5hdGl2ZSBcCiAgICAgYXNjaWlkb2MtbmF0aXZlIFwKICIKQEAgLTM1LDkgKzM4LDEwIEBACiAKIFBST1ZJREVTID0gInZpcnR1YWwvcGVyZiIKIAotaW5oZXJpdCBsaW51eC1rZXJuZWwtYmFzZSBrZXJuZWwtYXJjaCBweXRob25uYXRpdmUKK2luaGVyaXQgbGludXgta2VybmVsLWJhc2Uga2VybmVsLWFyY2gKIAogIyBuZWVkZWQgZm9yIGJ1aWxkaW5nIHRoZSB0b29scy9wZXJmIFB5dGhvbiBiaW5kaW5ncworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfQogaW5oZXJpdCBweXRob24tZGlyCiBleHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKIApAQCAtNDcsNyArNTEsOCBAQAogZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKIAogIyBuZWVkZWQgZm9yIGJ1aWxkaW5nIHRoZSB0b29scy9wZXJmIFBlcmwgYmluZGluZwotaW5oZXJpdCBwZXJsbmF0aXZlIGNwYW4tYmFzZQoraW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAncGVybG5hdGl2ZScsICcnLCBkKX0KK2luaGVyaXQgY3Bhbi1iYXNlCiAjIEVudiB2YXIgd2hpY2ggdGVsbHMgcGVybCBpZiBpdCBzaG91bGQgdXNlIGhvc3QgKG5vKSBvciB0YXJnZXQgKHllcykgc2V0dGluZ3MKIGV4cG9ydCBQRVJMQ09ORklHVEFSR0VUID0gIiR7QGlzX3RhcmdldChkKX0iCiBleHBvcnQgUEVSTF9JTkMgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9DT1JFIgpAQCAtNTYsNyArNjEsNyBAQAogCiBpbmhlcml0IGtlcm5lbHNyYwogCi1CID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9IgorUyA9ICIke1dPUktESVJ9LyR7QlB9IgogU1BEWF9TID0gIiR7U30vdG9vbHMvcGVyZiIKIAogIyBUaGUgTERGTEFHUyBpcyByZXF1aXJlZCBvciBzb21lIG9sZCBrZXJuZWxzIGZhaWxzIGR1ZSBtaXNzaW5nCkBAIC05Miw2ICs5NywxNyBAQAogICAgICdpbmZvZGlyPSR7QG9zLnBhdGgucmVscGF0aChpbmZvZGlyLCBwcmVmaXgpfScgXAogIgogCitQRVJGX1NSQyA/PSAiTWFrZWZpbGUgXAorICAgICAgICAgICAgIGluY2x1ZGUgXAorICAgICAgICAgICAgIHRvb2xzL2FyY2ggXAorICAgICAgICAgICAgIHRvb2xzL2J1aWxkIFwKKyAgICAgICAgICAgICB0b29scy9pbmNsdWRlIFwKKyAgICAgICAgICAgICB0b29scy9saWIgXAorICAgICAgICAgICAgIHRvb2xzL01ha2VmaWxlIFwKKyAgICAgICAgICAgICB0b29scy9wZXJmIFwKKyAgICAgICAgICAgICB0b29scy9zY3JpcHRzIFwKKyIKKwogUEVSRl9FWFRSQV9MREZMQUdTID0gIiIKIAogIyBNSVBTIE4zMgpAQCAtMTE0LDExICsxMzAsMjIgQEAKIAlmaQogfQogCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgIyBGaXggZm9yIHJlYnVpbGRpbmcKLSAgICBybSAtcmYgJHtCfS8KLSAgICBta2RpciAtcCAke0J9LworZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiY29weV9wZXJmX3NvdXJjZV9mcm9tX2tlcm5lbCIKK3B5dGhvbiBjb3B5X3BlcmZfc291cmNlX2Zyb21fa2VybmVsKCkgeworICAgIHNvdXJjZXMgPSAoZC5nZXRWYXIoIlBFUkZfU1JDIikgb3IgIiIpLnNwbGl0KCkKKyAgICBzcmNfZGlyID0gZC5nZXRWYXIoIlNUQUdJTkdfS0VSTkVMX0RJUiIpCisgICAgZGVzdF9kaXIgPSBkLmdldFZhcigiUyIpCisgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RfZGlyKQorICAgIGZvciBzIGluIHNvdXJjZXM6CisgICAgICAgIHNyYyA9IG9lLnBhdGguam9pbihzcmNfZGlyLCBzKQorICAgICAgICBkZXN0ID0gb2UucGF0aC5qb2luKGRlc3RfZGlyLCBzKQorICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CisgICAgICAgICAgICBvZS5wYXRoLmNvcHloYXJkbGlua3RyZWUoc3JjLCBkZXN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmIudXRpbHMuY29weWZpbGUoc3JjLCBkZXN0KQorfQogCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgIyBJZiBidWlsZGluZyBhIG11bHRsaWIgYmFzZWQgcGVyZiwgdGhlIGluY29ycmVjdCBsaWJyYXJ5IHBhdGggd2lsbCBiZQogICAgICMgZGV0ZWN0ZWQgYnkgcGVyZiwgc2luY2UgaXQgdHJpZ2dlcnMgdmlhOiBpZmVxICgkKEFSQ0gpLHg4Nl82NCkuIEluIGEgMzIgYml0CiAgICAgIyBidWlsZCwgd2l0aCBhIDY0IGJpdCBtdWx0aWxpYiwgdGhlIGFyY2ggd29uJ3QgbWF0Y2ggYW5kIHRoZSBkZXRlY3Rpb24gb2YgYSAKQEAgLTIxNCwyMCArMjQxLDIxIEBACiBSREVQRU5EU18ke1BOfSArPSAiZWxmdXRpbHMgYmFzaCIKIFJERVBFTkRTXyR7UE59LWRvYyArPSAibWFuIgogUkRFUEVORFNfJHtQTn0tYXJjaGl2ZSA9KyAiYmFzaCIKLVJERVBFTkRTXyR7UE59LXB5dGhvbiA9KyAiYmFzaCBweXRob24gcHl0aG9uLW1vZHVsZXMiCitSREVQRU5EU18ke1BOfS1weXRob24gPSsgImJhc2ggcHl0aG9uIHB5dGhvbi1tb2R1bGVzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2F1ZGl0JywgJ2F1ZGl0LXB5dGhvbicsICcnLCBkKX0iCiBSREVQRU5EU18ke1BOfS1wZXJsID0rICJiYXNoIHBlcmwgcGVybC1tb2R1bGVzIgogUkRFUEVORFNfJHtQTn0tdGVzdHMgPSsgInB5dGhvbiIKIAogUlNVR0dFU1RTX1NDUklQVElORyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAnJHtQTn0tcGVybCAke1BOfS1weXRob24nLCAnJyxkKX0iCiBSU1VHR0VTVFNfJHtQTn0gKz0gIiR7UE59LWFyY2hpdmUgJHtQTn0tdGVzdHMgJHtSU1VHR0VTVFNfU0NSSVBUSU5HfSIKIAotI0ZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9L3BlcmYtY29yZSAke2V4ZWNfcHJlZml4fS9saWJleGVjL3BlcmYtY29yZSAvdXNyL2xpYjY0L3RyYWNlZXZlbnQgJHtsaWJkaXJ9L3RyYWNlZXZlbnQiCiBGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUgJHtleGVjX3ByZWZpeH0vbGliZXhlYy9wZXJmLWNvcmUgJHtsaWJkaXJ9L3RyYWNlZXZlbnQiCiBGSUxFU18ke1BOfS1hcmNoaXZlID0gIiR7bGliZGlyfS9wZXJmL3BlcmYtY29yZS9wZXJmLWFyY2hpdmUiCiBGSUxFU18ke1BOfS10ZXN0cyA9ICIke2xpYmRpcn0vcGVyZi9wZXJmLWNvcmUvdGVzdHMgJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUvdGVzdHMiCi1GSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3NjcmlwdHMvcHl0aG9uICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotRklMRVNfJHtQTn0tcHl0aG9uICs9ICIke2xpYmV4ZWNkaXJ9L3BlcmYtY29yZS9zY3JpcHRzL3B5dGhvbi8qIgotRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmRpcn0vcGVyZi9wZXJmLWNvcmUvc2NyaXB0cy9wZXJsIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiBcCisgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUvc2NyaXB0cy9weXRob24gXAorICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1wZXJsID0gIiR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlL3NjcmlwdHMvcGVybCIKIAogCiBJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQ9IjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcC8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wLzAwMDEtaW5jbHVkZS1ycXVpcmVkLWhlYWRlcnMtZm9yLXR5cGVkZWZzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmQ2MzEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wLzAwMDEtaW5jbHVkZS1ycXVpcmVkLWhlYWRlcnMtZm9yLXR5cGVkZWZzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSAwODU2ZDgxNDVkMTg3YTdlNWE0OTYyNTI0N2FiZTQzYTEzZjk1YWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTUgU2VwIDIwMTUgMTk6MzY6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBycXVpcmVkIGhlYWRlcnMgZm9yIHR5cGVkZWZzCi0KLXRpbWV2YWwgc3RydWN0IG5lZWRzIHRvIGluY2x1ZGUgc3lzL3RpbWUuaCBhbmQgc3ByaW50ZigpIHVzYWdlIHJlcXVpcmVzCi10byBpbmNsdWRlIHN0ZGlvLmggaGVhZGVycyBmcm9tIHN5c3RlbQotCi1GaXhlcwotc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwOjE0MToyOiBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnc3ByaW50Zic7IGRpZCB5b3UgbWVhbiAndnN3cHJpbnRmJz8KLXNyYy9kZXZpY2VzL2RldmZyZXEuaDozNToxODogZXJyb3I6IGZpZWxkIGhhcyBpbmNvbXBsZXRlIHR5cGUgJ3N0cnVjdCB0aW1ldmFsJwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9kZXZpY2VzL2RldmZyZXEuaCAgICB8IDEgKwotIHNyYy9wZXJmL3BlcmZfYnVuZGxlLmNwcCB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvZGV2aWNlcy9kZXZmcmVxLmggYi9zcmMvZGV2aWNlcy9kZXZmcmVxLmgKLWluZGV4IDE2YTYwZmIuLjRiZWRlN2MgMTAwNjQ0Ci0tLS0gYS9zcmMvZGV2aWNlcy9kZXZmcmVxLmgKLSsrKyBiL3NyYy9kZXZpY2VzL2RldmZyZXEuaAotQEAgLTI1LDYgKzI1LDcgQEAKLSAjaWZuZGVmIF9JTkNMVURFX0dVQVJEX0RFVkZSRVFfSAotICNkZWZpbmUgX0lOQ0xVREVfR1VBUkRfREVWRlJFUV9ICi0gCi0rI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgImRldmljZS5oIgotICNpbmNsdWRlICIuLi9wYXJhbWV0ZXJzL3BhcmFtZXRlcnMuaCIKLSAKLWRpZmYgLS1naXQgYS9zcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAgYi9zcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAKLWluZGV4IGNmMWFlMTEuLjIzMmY4OTQgMTAwNjQ0Ci0tLS0gYS9zcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAKLSsrKyBiL3NyYy9wZXJmL3BlcmZfYnVuZGxlLmNwcAotQEAgLTI3LDYgKzI3LDcgQEAKLSAjaW5jbHVkZSA8YWxnb3JpdGhtPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLS0gCi0yLjUuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkN2EzZTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJQb3dlciB1c2FnZSB0b29sIgotREVTQ1JJUFRJT04gPSAiTGludXggdG9vbCB0byBkaWFnbm9zZSBpc3N1ZXMgd2l0aCBwb3dlciBjb25zdW1wdGlvbiBhbmQgcG93ZXIgbWFuYWdlbWVudC4iCi1IT01FUEFHRSA9ICJodHRwOi8vMDEub3JnL3Bvd2VydG9wLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxlc3N3YXR0cy5vcmcvIgotREVQRU5EUyA9ICJuY3Vyc2VzIGxpYm5sIHBjaXV0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIgotCi1TUkNfVVJJID0gImh0dHA6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb3dubG9hZHMvcG93ZXJ0b3AvcG93ZXJ0b3AtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1ycXVpcmVkLWhlYWRlcnMtZm9yLXR5cGVkZWZzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImM1NWZlZGI2OTIwM2U0ODA4MDFiMThiZDdiODg2MjQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE4N2I1NjNmNzMxMDZiYWJmYTNlNzRkY2Y5MmYyNTI5MzhjMDYxZTMwOWFjZTIwYTM2MTM1OGJiZmE1NzljNWEiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovLzAxLm9yZy9wb3dlcnRvcC9kb3dubG9hZHMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLSMgd2UgZG8gbm90IHdhbnQgbGlibmN1cnNlc3cgaWYgd2UgY2FuCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIGNvbmZpZ3VyZS5hYyBjaGVja3MgZm9yIGRlbHdpbigpIGluICJuY3Vyc2VzdyBuY3Vyc2VzIiBzbyBsZXQncyBkcm9wIGZpcnN0IG9uZQotICAgIHNlZCAtaSAtZSAicy9uY3Vyc2Vzdy8vZyIgJHtTfS9jb25maWd1cmUuYWMKLSAgICBta2RpciAtcCAke0J9L3NyYy90dW5pbmcvCi19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotQUxURVJOQVRJVkVfJHtQTn0gPSAicG93ZXJ0b3AiCi1BTFRFUk5BVElWRV9UQVJHRVRbcG93ZXJ0b3BdID0gIiR7c2JpbmRpcn0vcG93ZXJ0b3AiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJ0b3BdID0gIiR7c2JpbmRpcn0vcG93ZXJ0b3AiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZlNTQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuOS5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIlBvd2VyIHVzYWdlIHRvb2wiCitERVNDUklQVElPTiA9ICJMaW51eCB0b29sIHRvIGRpYWdub3NlIGlzc3VlcyB3aXRoIHBvd2VyIGNvbnN1bXB0aW9uIGFuZCBwb3dlciBtYW5hZ2VtZW50LiIKK0hPTUVQQUdFID0gImh0dHA6Ly8wMS5vcmcvcG93ZXJ0b3AvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubGVzc3dhdHRzLm9yZy8iCitERVBFTkRTID0gIm5jdXJzZXMgbGlibmwgcGNpdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UiCisKK1NSQ19VUkkgPSAiaHR0cDovLzAxLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL2Rvd25sb2Fkcy9wb3dlcnRvcC9wb3dlcnRvcC12JHtQVn0udGFyLmd6IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjU4MzUxOGM1YzQ0MzRjNmU5YjljNThjMzkyMDk1MGI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhN2ZiN2Q4ZTlhMDBmMDVlN2Q4YTdhMjg2NmQ4NTkyOTc0MWUwZDAzYTViZjQwY2FiMjJkMjAyMWM5NTkyNTAiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovLzAxLm9yZy9wb3dlcnRvcC9kb3dubG9hZHMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwb3dlcnRvcC1bdl0/KD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tdiR7UFZ9IgorCisjIHdlIGRvIG5vdCB3YW50IGxpYm5jdXJzZXN3IGlmIHdlIGNhbgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyBjb25maWd1cmUuYWMgY2hlY2tzIGZvciBkZWx3aW4oKSBpbiAibmN1cnNlc3cgbmN1cnNlcyIgc28gbGV0J3MgZHJvcCBmaXJzdCBvbmUKKyAgICBzZWQgLWkgLWUgInMvbmN1cnNlc3cvL2ciICR7U30vY29uZmlndXJlLmFjCisgICAgbWtkaXIgLXAgJHtCfS9zcmMvdHVuaW5nLworfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBvd2VydG9wIgorQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2VydG9wXSA9ICIke3NiaW5kaXJ9L3Bvd2VydG9wIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2VydG9wXSA9ICIke3NiaW5kaXJ9L3Bvd2VydG9wIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAyZjM1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gMjdkZjUyMWM2OGU3YzhiNWIwNTBkYWIxNWY0MGFhMTVmZDAzNjIzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDQgTWF5IDIwMTYgMTQ6NTg6MjQgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gQXZvaWQgYnVpbGRpbmcgZG9jcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8IDIgKy0KLSBtNC95ZWxwLm00ICB8IDYgLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGI5MTlhM2YuLjNhMzg1MWQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAotLVNVQkRJUlMgPSBkYWVtb24gZGF0YSBoZWxwIGxpYiBwbyBzcmMgdG9vbHMgdGVzdHMKLStTVUJESVJTID0gZGFlbW9uIGRhdGEgbGliIHBvIHNyYyB0b29scyB0ZXN0cwotIAotIEVYVFJBX0RJU1QgPSBBVVRIT1JTIHRhcC10ZXN0IENPUFlJTkcuZ3BsLTIKLSAKLWRpZmYgLS1naXQgYS9tNC95ZWxwLm00IGIvbTQveWVscC5tNAotaW5kZXggNWRiODQ3Zi4uMWI2ZWRlNCAxMDA2NDQKLS0tLSBhL200L3llbHAubTQKLSsrKyBiL200L3llbHAubTQKLUBAIC0yNywxMiArMjcsNiBAQCBBQ19BUkdfV0lUSChbaGVscC1kaXJdLAotIEhFTFBfRElSPSIkd2l0aF9oZWxwX2RpciIKLSBBQ19TVUJTVChIRUxQX0RJUikKLSAKLS1BQ19BUkdfVkFSKFtJVFNUT09MXSwgW1BhdGggdG8gdGhlIGBpdHN0b29sYCBjb21tYW5kXSkKLS1BQ19DSEVDS19QUk9HKFtJVFNUT09MXSwgW2l0c3Rvb2xdLCBbaXRzdG9vbF0pCi0taWYgdGVzdCB4IiRJVFNUT09MIiA9IHg7IHRoZW4KLS0gIEFDX01TR19FUlJPUihbaXRzdG9vbCBub3QgZm91bmRdKQotLWZpCi0tCi0gQUNfQVJHX1ZBUihbWE1MTElOVF0sIFtQYXRoIHRvIHRoZSBgeG1sbGludGAgY29tbWFuZF0pCi0gQUNfQ0hFQ0tfUFJPRyhbWE1MTElOVF0sIFt4bWxsaW50XSwgW3htbGxpbnRdKQotIGlmIHRlc3QgeCIkWE1MTElOVCIgPSB4OyB0aGVuCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURpc2FibGUtY2hlY2stZm9yLXBvbGtpdC1mb3ItVUkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwODUyMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURpc2FibGUtY2hlY2stZm9yLXBvbGtpdC1mb3ItVUkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDc2NWQ1NzgxNDVlMzFkZGM5NDk1YWRmYWI4MDM3YWRlMzNjNmE5Y2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA0IE1heSAyMDE2IDEwOjU5OjM2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgY2hlY2sgZm9yIHBvbGtpdCBmb3IgVUkKLQotVGhlIGNoZWNrIGlzIG5vdCB0ZWNobmljYWxseSByZXF1aXJlZDogc3lzcHJvZiBqdXN0IG5lZWRzCi10byBiZSBhYmxlIHRvIGFjY2VzcyBzeXN0ZW0gcGVyZiBjb3VudGVycyBhdCBydW50aW1lLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4NTU5NTk3Li5lY2Y5M2FkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzEsOCArMTMxLDggQEAgQVNfSUYoW3Rlc3QgIiRlbmFibGVfZ3RrIiA9IGF1dG9dLFsKLSAJQVNfSUYoW3Rlc3QgIiRoYXZlX2d0ayIgPSAieWVzIiAmJiB0ZXN0ICIkaGF2ZV9wb2xraXQiID0gInllcyJdLFtlbmFibGVfZ3RrPXllc10sW2VuYWJsZV9ndGs9bm9dKQotIF0pCi0gQVNfSUYoW3Rlc3QgIiRlbmFibGVfZ3RrIiA9ICJ5ZXMiXSxbCi0tCUFTX0lGKFt0ZXN0ICIkaGF2ZV9ndGsiID0gInllcyIgJiYgdGVzdCAiJGhhdmVfcG9sa2l0IiA9ICJ5ZXMiXSxbXSxbCi0tCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWd0ayByZXF1aXJlcyBndGsrLTMuMCA+PSBndGtfcmVxdWlyZWRfdmVyc2lvbiBhbmQgcG9sa2l0LWdvYmplY3QtMV0pCi0rCUFTX0lGKFt0ZXN0ICIkaGF2ZV9ndGsiID0gInllcyJdLFtdLFsKLSsJCUFDX01TR19FUlJPUihbLS1lbmFibGUtZ3RrIHJlcXVpcmVzIGd0aystMy4wID49IGd0a19yZXF1aXJlZF92ZXJzaW9uXSkKLSAJXSkKLSBdKQotIEFNX0NPTkRJVElPTkFMKEVOQUJMRV9HVEssIHRlc3QgIiRlbmFibGVfZ3RrIiA9ICJ5ZXMiKQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyOGZkY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGMyNDk1YTRjMDQyZTZhNjc1ZGE2OWJhYjIwY2MzNjY5MzkxZThlMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTg6Mzg6MjYgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIERvIG5vdCBidWlsZCBhbnl0aGluZyBpbiBoZWxwLyBhcyBpdCByZXF1aXJlcyBpdHN0b29sLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDRhYzM5MzQuLjhjNDM2OWEgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0xMTYsNyArMTE2LDYgQEAgc3ViZGlyKCd0b29scycpCisgc3ViZGlyKCd0ZXN0cycpCisgCisgc3ViZGlyKCdkYXRhJykKKy1zdWJkaXIoJ2hlbHAnKQorIHN1YmRpcigncG8nKQorIAorIG1lc29uLmFkZF9pbnN0YWxsX3NjcmlwdCgnYnVpbGQtYXV4L21lc29uX3Bvc3RfaW5zdGFsbC5zaCcpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtcG9sa2l0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU4ZDk5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtcG9sa2l0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSAyYjQwMDVkNzJkMzM5MzkzM2E3OTE0YmUxMDJlYTY1NTA1YzUzNmNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLURhdGU6IFRodSwgMjEgSnVsIDIwMTYgMTE6NTM6MzEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBBZGQgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIHBvbGtpdAotCi1DaGFuZ2VzIHRoZSBjb25maWd1cmUgYmVoYXZpb3VyIGZyb20gYXV0b2RldGVjdGluZyB0aGUgcG9sa2l0IGJ5IGRlZmF1bHQKLXRvIGhhdmluZyBhbiBvcHRpb24gdG8gZGlzYWJsZSBpdCBleHBsaWNpdGx5Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDggKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDIyNDZkNWEuLjNkM2ZlMGYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwNCwxMCArMTA0LDE4IEBAIFBLR19DSEVDS19NT0RVTEVTKEdUSywKLSAgICAgICAgICAgICAgICAgICBbZ3RrKy0zLjAgPj0gZ3RrX3JlcXVpcmVkX3ZlcnNpb25dLAotICAgICAgICAgICAgICAgICAgIFtoYXZlX2d0az15ZXNdLAotICAgICAgICAgICAgICAgICAgIFtoYXZlX2d0az1ub10pCi0rQUNfQVJHX0VOQUJMRShbcG9sa2l0XSwKLSsgICAgICAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1wb2xraXRdLCBbRG8gbm90IHVzZSBQb2xraXRdKSwKLSsgICAgICAgICAgICAgICAgICAgW2VuYWJsZV9wb2xraXQ9IiRlbmFibGV2YWwiXSwgW2VuYWJsZV9wb2xraXQ9InllcyJdKQotKwotK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9wb2xraXQiID0gInh5ZXMiXSwgWwotIFBLR19DSEVDS19NT0RVTEVTKFBPTEtJVCwKLSAgICAgICAgICAgICAgICAgICBbcG9sa2l0LWdvYmplY3QtMV0sCi0gICAgICAgICAgICAgICAgICAgW2hhdmVfcG9sa2l0PXllc10sCi0gICAgICAgICAgICAgICAgICAgW2hhdmVfcG9sa2l0PW5vXSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0rQU1fQ09ORElUSU9OQUwoW0hBVkVfUE9MS0lUXSwgW3Rlc3QgIngkZW5hYmxlX3BvbGtpdCIgPSAieHllcyJdKQotKwotIFBLR19DSEVDS19NT0RVTEVTKFNZU1RFTUQsCi0gICAgICAgICAgICAgICAgICAgW2xpYnN5c3RlbWQgPj0gc3lzdGVtZF9yZXF1aXJlZF92ZXJzaW9uXSwKLSAgICAgICAgICAgICAgICAgICBbaGF2ZV9zeXN0ZW1kPXllc10sCi0tLSAKLTIuNC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWEyN2JlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbS13aWRlIFBlcmZvcm1hbmNlIFByb2ZpbGVyIGZvciBMaW51eCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3lzcHJvZi5jb20iCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zcC1hcHBsaWNhdGlvbi5jO2VuZGxpbmU9MTc7bWQ1PTQwZTU1NTc3ZWYxMjJjODhmZTIwMDUyYWNkYTY0ODc1IgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtY2hlY2stZm9yLXBvbGtpdC1mb3ItVUkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Bdm9pZC1idWlsZGluZy1kb2NzLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyYjQ0YWUxZDhjZDg5OTQxNzI5NGE5YzQ1MDlkNzg3MCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjA1NGVlYmUyYWZiNmZlM2MwNmFjOGM0NmJjMDQ1YzQyZjY3NWQ0ZmQ2NGU2ZjE2Y2JjNjAyZDVjN2NlMjdiZWMiCi0KLUFVVE9UT09MU19BVVhESVIgPSAiJHtTfS9idWlsZC1hdXgiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1jb21waWxlLXdhcm5pbmdzIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICcke0dUSzNESVNUUk9GRUFUVVJFU30nLCAnZ3RrJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGssLS1kaXNhYmxlLWd0ayxndGsrMyIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsLS1kaXNhYmxlLXBvbGtpdCxwb2xraXQgZGJ1cyIKLQotU09MSUJTID0gIi5zbyIKLUZJTEVTX1NPTElCU0RFViA9ICIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAnc3lzcHJvZjIuc2VydmljZScsICcnLCBkKX0iCi0KLSMgV2UgZG8gbm90IHlldCB3b3JrIGZvciBhYXJjaDY0LgotQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhYXJjaDY0KS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk4OWI1MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI2LjEuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjZmOWY5NDc5NjBiYTc5YmIxMjY5ZDhlZTQ5YjdkYjc4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZDhiOWQ1YzIyNDY2OTZlNGEzNzc2YTMxMjczMWRjN2MwMTRmYmQzMzQ3OGJiMTRkNTUxMmM2ZjFmMzVhM2IxMSIKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLURlbmFibGVfZ3RrPXRydWUsLURlbmFibGVfZ3RrPWZhbHNlLGd0ayszIgorUEFDS0FHRUNPTkZJR1tzeXNwcm9mZF0gPSAiLUR3aXRoX3N5c3Byb2ZkPWJ1bmRsZWQsLUR3aXRoX3N5c3Byb2ZkPW5vbmUscG9sa2l0IgorCitTT0xJQlMgPSAiLnNvIgorRklMRVNfU09MSUJTREVWID0gIiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N5c3Byb2ZkJywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgorCisjIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAorICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtQWRkZWQtYS1jb3VwbGUtb2Ytc21hbGwtc3lzcm9vdC1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGNlYjVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBhNzE0NjU4NzI3MjA2ZDJhOThhNzE5NGI3ZTZkMjlkYmQzZTI3YjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2aWQgU21pdGggPGRzbWl0aEByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAxOSBNYXIgMjAxOCAxNjo1MDowNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGRlZCBhIGNvdXBsZSBvZiBzbWFsbCBzeXNyb290IGZpeGVzLgorCisqIHRhcHNldHMuY3h4IChkd2FyZl9idWlsZGVyOjpidWlsZCk6IEZpeCBjb21taXQgNGZmZWNkZGY1LgorICAocGF0aF9yZW1vdmVfc3lzcm9vdCk6IEZpeCBleHRyYSAnLycgcHJlc2VudCBhdCBzdGFydCBvZiBwYXRocy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CistLS0KKyB0YXBzZXRzLmN4eCB8IDEwICsrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L3RhcHNldHMuY3h4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGFwc2V0cy5jeHgKKysrKyBnaXQvdGFwc2V0cy5jeHgKK0BAIC0xMzk1LDcgKzEzOTUsOCBAQCBzdHJpbmcgcGF0aF9yZW1vdmVfc3lzcm9vdChjb25zdCBzeXN0ZW10CisgICBzdHJpbmcgcmV0dmFsID0gcGF0aDsKKyAgIGlmICghc2Vzcy5zeXNyb290LmVtcHR5KCkgJiYKKyAgICAgICAocG9zID0gcmV0dmFsLmZpbmQoc2Vzcy5zeXNyb290KSkgIT0gc3RyaW5nOjpucG9zKQorLSAgICByZXR2YWwucmVwbGFjZShwb3MsIHNlc3Muc3lzcm9vdC5sZW5ndGgoKSwgIi8iKTsKKysgICAgcmV0dmFsLnJlcGxhY2UocG9zLCBzZXNzLnN5c3Jvb3QubGVuZ3RoKCksCisrCQkgICAoc2Vzcy5zeXNyb290LmJhY2soKSA9PSAnLycgPyAiLyI6ICIiKSk7CisgICByZXR1cm4gcmV0dmFsOworIH0KKyAKK0BAIC04NDEyLDggKzg0MTMsMTEgQEAgZHdhcmZfYnVpbGRlcjo6YnVpbGQoc3lzdGVtdGFwX3Nlc3Npb24gJgorIAorICAgICAgIC8vIFBSMTMzMzg6IHVucXVvdGUgZ2xvYiByZXN1bHRzCisgICAgICAgbW9kdWxlX25hbWUgPSB1bmVzY2FwZV9nbG9iX2NoYXJzIChtb2R1bGVfbmFtZSk7CistICAgICAgdXNlcl9wYXRoID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfbmFtZSwgIiIsIHNlc3Muc3lzZW52KTsgLy8gY2Fub25pY2FsaXplIGl0CistICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZCh1c2VyX3BhdGgsIHNlc3Muc3lzcm9vdCwgc2Vzcy5zeXNlbnYpKQorKyAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsIHNlc3Muc3lzcm9vdCwgc2Vzcy5zeXNlbnYpOyAvLyBjYW5vbmljYWxpemUgaXQKKysgICAgICAvLyBOb3RlIHdlIGRvbid0IG5lZWQgdG8gcGFzcyB0aGUgc3lzcm9vdCB0bworKyAgICAgIC8vIGlzX2Z1bGx5X3Jlc29sdmVkKCksIHNpbmNlIHdlIGp1c3QgcGFzc2VkIGl0IHRvCisrICAgICAgLy8gZmluZF9leGVjdXRhYmxlKCkuCisrICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZCh1c2VyX3BhdGgsICIiLCBzZXNzLnN5c2VudikpCisgICAgICAgICB0aHJvdyBTRU1BTlRJQ19FUlJPUihfRigiY2Fubm90IGZpbmQgZXhlY3V0YWJsZSAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfcGF0aC50b19zdHJpbmcoKS5jX3N0cigpKSk7CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1EZWxheS1hZGRpbmctc3lzcm9vdC1wYXRoLXRvLW1vZHVsZS1uYW1lLWluLWNhc2Utb2YtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5OTUxYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIDRmZmVjZGRmNTQzM2Q2NWE2ZjAxMjQxOTkwYzlkNTE2NTg2YjFjNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IE1vbiwgMTkgTWFyIDIwMTggMDg6NTM6NTEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGVsYXkgYWRkaW5nIHN5c3Jvb3QgcGF0aCB0byBtb2R1bGUgbmFtZSBpbiBjYXNlIG9mIG5vbgorIGFic29sdXRlIGV4ZWN1dGFibGUKKworQ3VycmVudCBzdGFwIGNvZGUgYWRkcyBzeXNyb290IHByZW1hdHVyZWx5IGZvciBwcm9iZXMgdGhhdCBzcGVjaWZ5IG5vbgorYWJzb2x1dGUgcGF0aCBuYW1lLCBpLmUgbGlrZSAiZm9vIiwgc28gd2hlbiBmaW5kX2V4ZWN1dGFibGUgY2FsbGVkIGl0CityZWNlaXZlcyBmdWxsIHBhdGggYXMgPHN5c3Jvb3Q+L2ZvbyBhbmQgZmluZF9leGVjdXRhYmxlIGRvZXMgbm90IHNlYXJjaAorUEFUSCB3aGlsZSBhcHBseWluZyBzeXNyb290LgorCitGaXggZGVsYXlzIGFkZGluZyBzeXNyb290IHRpbGwgcGF0aCBpbnNpZGUgb2Ygc3lzcm9vdCBpcyBzZWFyY2hlZCBmaXJzdC4KKworQWxzbyBmaXggbWlzc2luZyBzeXNyb290IGFkZGl0aW9uIGluIGdsb2IgZXhwYW5zaW9uIGNhc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgdGFwc2V0cy5jeHggfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC90YXBzZXRzLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3RhcHNldHMuY3h4CisrKysgZ2l0L3RhcHNldHMuY3h4CitAQCAtNzQ2LDcgKzc0Niw3IEBAIGJhc2VfcXVlcnk6OmJhc2VfcXVlcnkoZHdmbHBwICYgZHcsIGxpdGUKKyAgICAgICAgICAgICAgIHBpZF92YWwgPSAwOworICAgICAgICAgICAgICAgZ2V0X3N0cmluZ19wYXJhbShwYXJhbXMsIFRPS19QUk9DRVNTLCBtb2R1bGVfdmFsKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgIG1vZHVsZV92YWwgPSBmaW5kX2V4ZWN1dGFibGUgKG1vZHVsZV92YWwsICIiLCBzZXNzLnN5c2Vudik7CisrICAgICAgICAgIG1vZHVsZV92YWwgPSBmaW5kX2V4ZWN1dGFibGUgKG1vZHVsZV92YWwsIHNlc3Muc3lzcm9vdCwgc2Vzcy5zeXNlbnYpOworICAgICAgICAgICBpZiAoIWlzX2Z1bGx5X3Jlc29sdmVkKG1vZHVsZV92YWwsICIiLCBzZXNzLnN5c2VudikpCisgICAgICAgICAgICAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoImNhbm5vdCBmaW5kIGV4ZWN1dGFibGUgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX3ZhbC50b19zdHJpbmcoKS5jX3N0cigpKSk7CitAQCAtODI4Nyw3ICs4Mjg3LDYgQEAgZHdhcmZfYnVpbGRlcjo6YnVpbGQoc3lzdGVtdGFwX3Nlc3Npb24gJgorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gKHN0cmluZylzZXNzLnN5c3Jvb3QgKyAoc3RyaW5nKW1vZHVsZV9uYW1lOworICAgICAgICAgICAgICAgZmlsbGVkX3BhcmFtZXRlcnNbVE9LX1BST0NFU1NdID0gbmV3IGxpdGVyYWxfc3RyaW5nKG1vZHVsZV9uYW1lKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitAQCAtODMyMSw3ICs4MzIwLDggQEAgZHdhcmZfYnVpbGRlcjo6YnVpbGQoc3lzdGVtdGFwX3Nlc3Npb24gJgorICAgICAgICAgICBhc3NlcnQgKGxpdCk7CisgCisgICAgICAgICAgIC8vIEV2YWx1YXRlIGdsb2IgaGVyZSwgYW5kIGNhbGwgZGVyaXZlX3Byb2JlcyByZWN1cnNpdmVseSB3aXRoIGVhY2ggbWF0Y2guCistICAgICAgICAgIGNvbnN0IGF1dG8mIGdsb2JzID0gZ2xvYl9leGVjdXRhYmxlIChtb2R1bGVfbmFtZSk7CisrICAgICAgICAgIGNvbnN0IGF1dG8mIGdsb2JzID0gZ2xvYl9leGVjdXRhYmxlIChzZXNzLnN5c3Jvb3QKKysJCQkJCSAgICAgICArIHN0cmluZyhtb2R1bGVfbmFtZSkpOworICAgICAgICAgICB1bnNpZ25lZCByZXN1bHRzX3ByZSA9IGZpbmlzaGVkX3Jlc3VsdHMuc2l6ZSgpOworICAgICAgICAgICBmb3IgKGF1dG8gaXQgPSBnbG9icy5iZWdpbigpOyBpdCAhPSBnbG9icy5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgICB7CitAQCAtODQxMyw3ICs4NDEzLDcgQEAgZHdhcmZfYnVpbGRlcjo6YnVpbGQoc3lzdGVtdGFwX3Nlc3Npb24gJgorICAgICAgIC8vIFBSMTMzMzg6IHVucXVvdGUgZ2xvYiByZXN1bHRzCisgICAgICAgbW9kdWxlX25hbWUgPSB1bmVzY2FwZV9nbG9iX2NoYXJzIChtb2R1bGVfbmFtZSk7CisgICAgICAgdXNlcl9wYXRoID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfbmFtZSwgIiIsIHNlc3Muc3lzZW52KTsgLy8gY2Fub25pY2FsaXplIGl0CistICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZCh1c2VyX3BhdGgsICIiLCBzZXNzLnN5c2VudikpCisrICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZCh1c2VyX3BhdGgsIHNlc3Muc3lzcm9vdCwgc2Vzcy5zeXNlbnYpKQorICAgICAgICAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoImNhbm5vdCBmaW5kIGV4ZWN1dGFibGUgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX3BhdGgudG9fc3RyaW5nKCkuY19zdHIoKSkpOworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUZpeC1QUjIyNTUxLWJ5LXVwZGF0aW5nLXRoZS11c2Utb2YtdGltZXJzLWZvci10aGUtNC4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4LVBSMjI1NTEtYnktdXBkYXRpbmctdGhlLXVzZS1vZi10aW1lcnMtZm9yLXRoZS00Li5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjBjM2I3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUZpeC1QUjIyNTUxLWJ5LXVwZGF0aW5nLXRoZS11c2Utb2YtdGltZXJzLWZvci10aGUtNC4ucGF0Y2gKQEAgLTAsMCArMSwyNzcgQEAKK0Zyb20gZmJiMjZlMTdhNGMwMjZmMDVhNDk3ZmM1ZDU4NDUxNmJhZDNiNjk1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhdmlkIFNtaXRoIDxkc21pdGhAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgNiBEZWMgMjAxNyAxNDozNzo0MiAtMDYwMAorU3ViamVjdDogW1BBVENIXSBGaXggUFIyMjU1MSBieSB1cGRhdGluZyB0aGUgdXNlIG9mIHRpbWVycyBmb3IgdGhlIDQuMTUKKyBrZXJuZWwuCisKKyogcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5Lmg6IE5ldyBmaWxlLgorKiBydW50aW1lL3RpbWUuYzogVXBkYXRlIHRpbWVyIGNhbGxiYWNrIGZ1bmN0aW9uIHBhcmFtZXRlciB0eXBlLiBVcGRhdGUKKyAgdGltZXIgaW5pdGlhbGl6YXRpb24uCisqIHJ1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmM6IERpdHRvLgorKiBydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYzogRGl0dG8uCisqIHRhcHNldC10aW1lcnMuY3h4ICh0aW1lcl9kZXJpdmVkX3Byb2JlX2dyb3VwOjplbWl0X21vZHVsZV9kZWNscyk6CisgIERpdHRvLiBIYW5kbGUgb2xkIGFuZCBuZXcgdGltZXIgY2FsbGJhY2sgaW50ZXJmYWNlLgorKiBydW50aW1lL2xpbnV4L3J1bnRpbWUuaDogSW5jbHVkZSB0aW1lcl9jb21wYXRpYmlsaXR5LmggaW5zdGVhZCBvZiB0aW1lci5oLgorKiB0YXBzZXQvbGludXgvc2NzaS5zdHA6IERpdHRvLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKworLS0tCisgcnVudGltZS9saW51eC9ydW50aW1lLmggICAgICAgICAgICAgfCAgMiArLQorIHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oIHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHJ1bnRpbWUvdGltZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKystLQorIHJ1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMgICAgICAgIHwgIDggKystLQorIHJ1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jICAgICAgIHwgMTMgKysrLS0tLQorIHRhcHNldC10aW1lcnMuY3h4ICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKystLQorIHRhcHNldC9saW51eC9zY3NpLnN0cCAgICAgICAgICAgICAgIHwgIDIgKy0KKyA3IGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmgKKworZGlmZiAtLWdpdCBhL3J1bnRpbWUvbGludXgvcnVudGltZS5oIGIvcnVudGltZS9saW51eC9ydW50aW1lLmgKK2luZGV4IDljNTg1YTIuLmRmOWI3NGMgMTAwNjQ0CistLS0gYS9ydW50aW1lL2xpbnV4L3J1bnRpbWUuaAorKysrIGIvcnVudGltZS9saW51eC9ydW50aW1lLmgKK0BAIC0zNCw3ICszNCw3IEBACisgI2luY2x1ZGUgPGxpbnV4L2NvbXBhdC5oPgorICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorICNpbmNsdWRlIDxsaW51eC9tbS5oPgorLSNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorKyNpbmNsdWRlICJ0aW1lcl9jb21wYXRpYmlsaXR5LmgiCisgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisgI2luY2x1ZGUgPGxpbnV4L3Byb2ZpbGUuaD4KKyAjaW5jbHVkZSA8bGludXgvcmN1cGRhdGUuaD4KK2RpZmYgLS1naXQgYS9ydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaCBiL3J1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYWMwM2RlOQorLS0tIC9kZXYvbnVsbAorKysrIGIvcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmgKK0BAIC0wLDAgKzEsNzYgQEAKKysvKgorKyAqIGxpbnV4L3RpbWVyLmggY29tcGF0aWJpbGl0eSBkZWZpbmVzIGFuZCBpbmxpbmVzCisrICogQ29weXJpZ2h0IChDKSAyMDE3IFJlZCBIYXQgSW5jLgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtdGFwLCBhbmQgaXMgZnJlZSBzb2Z0d2FyZS4gIFlvdSBjYW4KKysgKiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsCisrICogUHVibGljIExpY2Vuc2UgKEdQTCk7IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55CisrICogbGF0ZXIgdmVyc2lvbi4KKysgKi8KKysKKysjaWZuZGVmIF9USU1FUl9DT01QQVRJQklMSVRZX0hfCisrI2RlZmluZSBfVElNRVJfQ09NUEFUSUJJTElUWV9IXworKworKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorKworKy8qCisrICogU3RhcnRpbmcgd2l0aCB0aGUgNC4xNSBrZXJuZWwsIHRoZSB0aW1lciBpbnRlcmZhY2UKKysgKiBjaGFuZ2VkLiBPcmlnaW5hbGx5LCB5b3UnZCBkbyBzb21ldGhpbmcgbGlrZToKKysgKgorKyAqICAgc3RhdGljIHZvaWQgdGltZXJfZnVuYyh1bnNpZ25lZCBsb25nIHZhbCk7CisrICoKKysgKiAgIGluaXRfdGltZXIoJnRpbWVyKTsKKysgKiAgIHRpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgU1RQX1JFTEFZX1RJTUVSX0lOVEVSVkFMOworKyAqICAgdGltZXIuZnVuY3Rpb24gPSB0aW1lcl9mdW5jOworKyAqICAgdGltZXIuZGF0YSA9IDA7CisrICogICBhZGRfdGltZXIoJnRpbWVyKTsKKysgKgorKyAqIFRoZSAnZGF0YScgcGFyYW1ldGVyIHdvdWxkIGdldCBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrCisrICogZnVuY3Rpb24uIFN0YXJ0aW5nIHdpdGggNC4xNSwgeW91J2QgZG8gc29tZXRoaW5nIGxpa2UgdGhpczoKKysgKgorKyAqICAgc3RhdGljIHZvaWQgdGltZXJfZnVuYyhzdHJ1Y3QgdGltZXJfbGlzdCAqdmFsKTsKKysgKgorKyAqICAgdGltZXJfc2V0dXAoJnRpbWVyLCB0aW1lcl9mdW5jLCAwKTsKKysgKiAgIHRpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgU1RQX1JFTEFZX1RJTUVSX0lOVEVSVkFMOworKyAqICAgYWRkX3RpbWVyKCZ0aW1lcik7CisrICogICAKKysgKiBXaXRoIHRoZSBuZXcgY29kZSwgdGhlIHRpbWVyIHRoYXQgY2F1c2VkIHRoZSBjYWxsYmFjayBnZXRzIHBhc3NlZAorKyAqIHRvIHRoZSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbi4gVGhlICdkYXRhJyBmaWVsZCBoYXMgYmVlbiByZW1vdmVkLgorKyAqCisrICogU28sIHdlJ3JlIGdvaW5nIHRvIHVzZSB0aGUgbmV3IGludGVyZmFjZS4gVG8gaGlkZSB0aGUgZGlmZmVyZW5jZXMKKysgKiBiZXR3ZWVuIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBwYXJhbWV0ZXIgdHlwZSwgd2UnbGwgZGVmaW5lIGEgbmV3CisrICogdHlwZSwgJ3N0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCcuCisrICoKKysgKiBJZiBjb2RlIG5lZWRzIHRvIGZpZ3VyZSBvdXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb2xkIGFuZCBuZXcKKysgKiBpbnRlcmZhY2UsIGl0IHNob3VsZCB0ZXN0IHRoZSBUSU1FUl9UUkFDRV9GTEFHTUFTSyBkZWZpbmUgKHdoaWNoCisrICogb25seSBleGlzdHMgaW4gdGhlIG5ldyBpbnRlcmZhY2UpLgorKyAqLworKworKyNpZiBkZWZpbmVkKFRJTUVSX1RSQUNFX0ZMQUdNQVNLKSAKKysvKiBUaGlzIGlzIHRoZSA+PSA0LjE1IGtlcm5lbCBpbnRlcmZhY2UuICovCisrCisrdHlwZWRlZiBzdHJ1Y3QgdGltZXJfbGlzdCAqIHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdDsKKysKKysjZWxzZQorKy8qIFRoaXMgaXMgdGhlIDwgNC4xNSBrZXJuZWwgaW50ZXJmYWNlLiAqLworKworK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3Q7CisrCisrLyoqCisrICogdGltZXJfc2V0dXAgLSBwcmVwYXJlIGEgdGltZXIgZm9yIGZpcnN0IHVzZQorKyAqIEB0aW1lcjogdGhlIHRpbWVyIGluIHF1ZXN0aW9uCisrICogQGNhbGxiYWNrOiB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRpbWVyIGV4cGlyZXMKKysgKiBAZmxhZ3M6IGFueSBUSU1FUl8qIGZsYWdzIChub3RlIHRoYXQgYW55dGhpbmcgb3RoZXIgdGhhbiAwIGlzIGFuCisrICogCSAgIGVycm9yLCBzaW5jZSB0aGlzIGNvbXBhdGliaWxpdHkgZnVuY3Rpb24gY2FuJ3Qgc3VwcG9ydCBhbnkKKysgKgkgICBvZiB0aGUgVElNRVJfKiBmbGFncykKKysgKi8KKysjZGVmaW5lIHRpbWVyX3NldHVwKHRpbWVyLCBjYWxsYmFjaywgZmxhZ3MpCQkJXAorKwl7CQkJCQkJCVwKKysJCWluaXRfdGltZXIoKHRpbWVyKSk7CQkJCVwKKysJCSh0aW1lciktPmZ1bmN0aW9uID0gY2FsbGJhY2s7CQkJXAorKwkJKHRpbWVyKS0+ZGF0YSA9IDA7CQkJCVwKKysJCUJVSUxEX0JVR19PTl9aRVJPKChmbGFncykgIT0gMCk7CQlcCisrCX0KKysjZW5kaWYKKysKKysjZW5kaWYgLyogX1RJTUVSX0NPTVBBVElCSUxJVFlfSF8gKi8KK2RpZmYgLS1naXQgYS9ydW50aW1lL3RpbWUuYyBiL3J1bnRpbWUvdGltZS5jCitpbmRleCAyZTY2NmQ1Li45MWNlYWZhIDEwMDY0NAorLS0tIGEvcnVudGltZS90aW1lLmMKKysrKyBiL3J1bnRpbWUvdGltZS5jCitAQCAtMTY4LDEwICsxNjgsMTAgQEAgX19zdHBfdGltZV9zbXBfY2FsbGJhY2sodm9pZCAqdmFsKQorIAorIC8qIFRoZSB0aW1lciBjYWxsYmFjayBpcyBpbiBhIHNvZnRJUlEgLS0gaW50ZXJydXB0cyBlbmFibGVkLiAqLworIHN0YXRpYyB2b2lkCistX19zdHBfdGltZV90aW1lcl9jYWxsYmFjayh1bnNpZ25lZCBsb25nIHZhbCkKKytfX3N0cF90aW1lX3RpbWVyX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpCisgeworICAgICBzdHBfdGltZV90ICp0aW1lID1fX3N0cF90aW1lX2xvY2FsX3VwZGF0ZSgpOworLSAgICAodm9pZCkgdmFsOworKyAgICAodm9pZCkgdW51c2VkOworIAorICAgICAvKiBQUjY0ODE6IG1ha2Ugc3VyZSBJUlFzIGFyZSBlbmFibGVkIGJlZm9yZSByZXNldHRpbmcgdGhlIHRpbWVyCisgICAgICAgIChJUlFzIGFyZSBkaXNhYmxlZCBhbmQgdGhlbiByZWVuYWJsZWQgaW4KK0BAIC0yMDAsOSArMjAwLDggQEAgX19zdHBfaW5pdF90aW1lKHZvaWQgKmluZm8pCisgICAgIHRpbWUtPmZyZXEgPSBfX3N0cF9nZXRfZnJlcSgpOworICAgICBfX3N0cF90aW1lX2xvY2FsX3VwZGF0ZSgpOworIAorLSAgICBpbml0X3RpbWVyKCZ0aW1lLT50aW1lcik7CisrICAgIHRpbWVyX3NldHVwKCZ0aW1lLT50aW1lciwgX19zdHBfdGltZV90aW1lcl9jYWxsYmFjaywgMCk7CisgICAgIHRpbWUtPnRpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgU1RQX1RJTUVfU1lOQ19JTlRFUlZBTDsKKy0gICAgdGltZS0+dGltZXIuZnVuY3Rpb24gPSBfX3N0cF90aW1lX3RpbWVyX2NhbGxiYWNrOworIAorICNpZm5kZWYgU1RBUENPTkZfQUREX1RJTUVSX09OCisgICAgIGFkZF90aW1lcigmdGltZS0+dGltZXIpOworZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMgYi9ydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jCitpbmRleCBmODFkNzVkLi4xMzU5NTFhIDEwMDY0NAorLS0tIGEvcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYworKysrIGIvcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYworQEAgLTMwLDcgKzMwLDcgQEAKKyAjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgorICNpbmNsdWRlIDxsaW51eC9tbS5oPgorICNpbmNsdWRlIDxsaW51eC9yZWxheS5oPgorLSNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorKyNpbmNsdWRlICIuLi9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmgiCisgI2luY2x1ZGUgIi4uL3VpZGdpZF9jb21wYXRpYmlsaXR5LmgiCisgI2luY2x1ZGUgInJlbGF5X2NvbXBhdC5oIgorIAorQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV93YWtldXBfcmVhZGVycyhzdHJ1Y3QgcmNoYW5fYnVmICpidWYpCisgCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJmJ1Zi0+cmVhZF93YWl0KTsKKyB9CisgCistc3RhdGljIHZvaWQgX19zdHBfcmVsYXlfd2FrZXVwX3RpbWVyKHVuc2lnbmVkIGxvbmcgdmFsKQorK3N0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcihzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdW51c2VkKQorIHsKKyAjaWZkZWYgU1RQX0JVTEtNT0RFCisgCWludCBpOworQEAgLTE1MSwxMCArMTUxLDggQEAgc3RhdGljIHZvaWQgX19zdHBfcmVsYXlfd2FrZXVwX3RpbWVyKHVuc2lnbmVkIGxvbmcgdmFsKQorIHN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3RpbWVyX2luaXQodm9pZCkKKyB7CisgCWF0b21pY19zZXQoJl9zdHBfcmVsYXlfZGF0YS53YWtldXAsIDApOworLQlpbml0X3RpbWVyKCZfc3RwX3JlbGF5X2RhdGEudGltZXIpOworKwl0aW1lcl9zZXR1cCgmX3N0cF9yZWxheV9kYXRhLnRpbWVyLCBfX3N0cF9yZWxheV93YWtldXBfdGltZXIsIDApOworIAlfc3RwX3JlbGF5X2RhdGEudGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBTVFBfUkVMQVlfVElNRVJfSU5URVJWQUw7CistCV9zdHBfcmVsYXlfZGF0YS50aW1lci5mdW5jdGlvbiA9IF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcjsKKy0JX3N0cF9yZWxheV9kYXRhLnRpbWVyLmRhdGEgPSAwOworIAlhZGRfdGltZXIoJl9zdHBfcmVsYXlfZGF0YS50aW1lcik7CisgCXNtcF9tYigpOworIH0KK2RpZmYgLS1naXQgYS9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYyBiL3J1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jCitpbmRleCAzNDAwZjIyLi4zMjBmZDE4IDEwMDY0NAorLS0tIGEvcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmMKKysrKyBiL3J1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jCitAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyB2b2lkIF9zdHBfZGV0YWNoKHZvaWQpCisgfQorIAorIAorLXN0YXRpYyB2b2lkIF9zdHBfY3RsX3dvcmtfY2FsbGJhY2sodW5zaWduZWQgbG9uZyB2YWwpOworK3N0YXRpYyB2b2lkIF9zdHBfY3RsX3dvcmtfY2FsbGJhY2soc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90IHVudXNlZCk7CisgCisgLyoKKyAgKiBDYWxsZWQgd2hlbiBzdGFwaW8gb3BlbnMgdGhlIGNvbnRyb2wgY2hhbm5lbC4KK0BAIC0zMjAsMTMgKzMyMCwxMiBAQCBzdGF0aWMgdm9pZCBfc3RwX2F0dGFjaCh2b2lkKQorIHsKKyAJZGJ1Z190cmFucygxLCAiYXR0YWNoXG4iKTsKKyAJX3N0cF9waWQgPSBjdXJyZW50LT5waWQ7CistICBpZiAoX3N0cF9uYW1lc3BhY2VzX3BpZCA8IDEpCistICAgIF9zdHBfbmFtZXNwYWNlc19waWQgPSBfc3RwX3BpZDsKKysJaWYgKF9zdHBfbmFtZXNwYWNlc19waWQgPCAxKQorKwkJX3N0cF9uYW1lc3BhY2VzX3BpZCA9IF9zdHBfcGlkOworIAlfc3RwX3RyYW5zcG9ydF9kYXRhX2ZzX292ZXJ3cml0ZSgwKTsKKy0JaW5pdF90aW1lcigmX3N0cF9jdGxfd29ya190aW1lcik7CisrCisrCXRpbWVyX3NldHVwKCZfc3RwX2N0bF93b3JrX3RpbWVyLCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrLCAwKTsKKyAJX3N0cF9jdGxfd29ya190aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9DVExfVElNRVJfSU5URVJWQUw7CistCV9zdHBfY3RsX3dvcmtfdGltZXIuZnVuY3Rpb24gPSBfc3RwX2N0bF93b3JrX2NhbGxiYWNrOworLQlfc3RwX2N0bF93b3JrX3RpbWVyLmRhdGE9IDA7CisgCWFkZF90aW1lcigmX3N0cF9jdGxfd29ya190aW1lcik7CisgfQorIAorQEAgLTM0MSw3ICszNDAsNyBAQCBzdGF0aWMgdm9pZCBfc3RwX2F0dGFjaCh2b2lkKQorICAqCW5vdGlmaWVkLiBSZXNjaGVkdWxlcyBpdHNlbGYgaWYgc29tZW9uZSBpcyBzdGlsbCBhdHRhY2hlZAorICAqCXRvIHRoZSBjbWQgY2hhbm5lbC4KKyAgKi8KKy1zdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgdmFsKQorK3N0YXRpYyB2b2lkIF9zdHBfY3RsX3dvcmtfY2FsbGJhY2soc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90IHVudXNlZCkKKyB7CisgCWludCBkb19pbyA9IDA7CisgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CitkaWZmIC0tZ2l0IGEvdGFwc2V0LXRpbWVycy5jeHggYi90YXBzZXQtdGltZXJzLmN4eAoraW5kZXggMWE0MGJjZC4uMGFiNGQ2OSAxMDA2NDQKKy0tLSBhL3RhcHNldC10aW1lcnMuY3h4CisrKysgYi90YXBzZXQtdGltZXJzLmN4eAorQEAgLTEyMiw5ICsxMjIsMTMgQEAgdGltZXJfZGVyaXZlZF9wcm9iZV9ncm91cDo6ZW1pdF9tb2R1bGVfZGVjbHMgKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQorICAgcy5vcC0+bmV3bGluZSgtMSkgPDwgIn07IjsKKyAgIHMub3AtPm5ld2xpbmUoKTsKKyAKKy0gIHMub3AtPm5ld2xpbmUoKSA8PCAic3RhdGljIHZvaWQgZW50ZXJfdGltZXJfcHJvYmUgKHVuc2lnbmVkIGxvbmcgdmFsKSB7IjsKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAic3RhdGljIHZvaWQgZW50ZXJfdGltZXJfcHJvYmUgKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB2YWwpIHsiOworKyAgcy5vcC0+bmV3bGluZSgpIDw8ICIjaWYgZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykiOworKyAgcy5vcC0+bmV3bGluZSgxKSA8PCAic3RydWN0IHN0YXBfdGltZXJfcHJvYmUqIHN0cCA9IGNvbnRhaW5lcl9vZih2YWwsIHN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlLCB0aW1lcl9saXN0KTsiOworKyAgcy5vcC0+bmV3bGluZSgtMSkgPDwgIiNlbHNlIjsKKyAgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSAmIHN0YXBfdGltZXJfcHJvYmVzIFt2YWxdOyI7CistICBzLm9wLT5uZXdsaW5lKCkgPDwgImlmICgoYXRvbWljX3JlYWQgKHNlc3Npb25fc3RhdGUoKSkgPT0gU1RBUF9TRVNTSU9OX1NUQVJUSU5HKSB8fCI7CisrICBzLm9wLT5uZXdsaW5lKC0xKSA8PCAiI2VuZGlmIjsKKysgIHMub3AtPm5ld2xpbmUoMSkgPDwgImlmICgoYXRvbWljX3JlYWQgKHNlc3Npb25fc3RhdGUoKSkgPT0gU1RBUF9TRVNTSU9OX1NUQVJUSU5HKSB8fCI7CisgICBzLm9wLT5uZXdsaW5lKCkgPDwgIiAgICAoYXRvbWljX3JlYWQgKHNlc3Npb25fc3RhdGUoKSkgPT0gU1RBUF9TRVNTSU9OX1JVTk5JTkcpKSI7CisgICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJtb2RfdGltZXIgKCYgc3RwLT50aW1lcl9saXN0LCBqaWZmaWVzICsgIjsKKyAgIGVtaXRfaW50ZXJ2YWwgKHMub3ApOworQEAgLTE0OCw5ICsxNTIsMTEgQEAgdGltZXJfZGVyaXZlZF9wcm9iZV9ncm91cDo6ZW1pdF9tb2R1bGVfaW5pdCAoc3lzdGVtdGFwX3Nlc3Npb24mIHMpCisgICBzLm9wLT5uZXdsaW5lKCkgPDwgImZvciAoaT0wOyBpPCIgPDwgcHJvYmVzLnNpemUoKSA8PCAiOyBpKyspIHsiOworICAgcy5vcC0+bmV3bGluZSgxKSA8PCAic3RydWN0IHN0YXBfdGltZXJfcHJvYmUqIHN0cCA9ICYgc3RhcF90aW1lcl9wcm9iZXMgW2ldOyI7CisgICBzLm9wLT5uZXdsaW5lKCkgPDwgInByb2JlX3BvaW50ID0gc3RwLT5wcm9iZS0+cHA7IjsKKy0gIHMub3AtPm5ld2xpbmUoKSA8PCAiaW5pdF90aW1lciAoJiBzdHAtPnRpbWVyX2xpc3QpOyI7CistICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0cC0+dGltZXJfbGlzdC5mdW5jdGlvbiA9ICYgZW50ZXJfdGltZXJfcHJvYmU7IjsKKysKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAidGltZXJfc2V0dXAgKCYgc3RwLT50aW1lcl9saXN0LCBlbnRlcl90aW1lcl9wcm9iZSwgMCk7IjsKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2lmICFkZWZpbmVkKFRJTUVSX1RSQUNFX0ZMQUdNQVNLKSI7CisgICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0cC0+dGltZXJfbGlzdC5kYXRhID0gaTsiOyAvLyBOQjogaW1wb3J0YW50IQorKyAgcy5vcC0+bmV3bGluZSgpIDw8ICIjZW5kaWYiOworICAgLy8gY29weSB0aW1lciByZW5ldyBjYWxjdWxhdGlvbnMgZnJvbSBhYm92ZSA6LSgKKyAgIHMub3AtPm5ld2xpbmUoKSA8PCAic3RwLT50aW1lcl9saXN0LmV4cGlyZXMgPSBqaWZmaWVzICsgIjsKKyAgIGVtaXRfaW50ZXJ2YWwgKHMub3ApOworZGlmZiAtLWdpdCBhL3RhcHNldC9saW51eC9zY3NpLnN0cCBiL3RhcHNldC9saW51eC9zY3NpLnN0cAoraW5kZXggNDRmNjg2Yy4uMzU3Nzk0MiAxMDA2NDQKKy0tLSBhL3RhcHNldC9saW51eC9zY3NpLnN0cAorKysrIGIvdGFwc2V0L2xpbnV4L3Njc2kuc3RwCitAQCAtMTQsNyArMTQsNyBAQAorICNpbmNsdWRlIDxzY3NpL3Njc2lfY21uZC5oPgorICNpbmNsdWRlIDxzY3NpL3Njc2lfZGV2aWNlLmg+CisgI2luY2x1ZGUgPHNjc2kvc2NzaV9ob3N0Lmg+CistI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+CisrI2luY2x1ZGUgImxpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaCIKKyAjaW5jbHVkZSA8bGludXgvYmxrZGV2Lmg+CisgJX0KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUZpeGVzLWZvci1nY2MtOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFiMGJmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2gKQEAgLTAsMCArMSwyMTUgQEAKK0Zyb20gNGZmZTAwZjFkOWVhYzMzMmQ5MjhmN2RjMDFmZTI1MGRjMzJiMWJiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0YW4gQ294IDxzY294QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDEzIEZlYiAyMDE4IDIyOjM4OjAzIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeGVzIGZvciBnY2MgOAorCisqIGluY2x1ZGVzL3N5cy9zZHQuaCAoX19TRFRfQ09ORF9TSUdORUQpOiAgQWRkIENULCBjYXN0IHR5cGUgYXJndW1lbnQKKworQXV0aG9yOiBXaWxsIENvaGVuIDx3Y29oZW4ucmVkaGF0LmNvbT4KKworKiBzdGFwLXNlcnZlcmQuY3h4IChnZW5lcmF0ZV9tb2ssIGhhbmRsZVJlcXVlc3QsIGhhbmRsZV9jb25uZWN0aW9uKToKKyAgQ2F0Y2ggZm9ybWF0IG92ZXJmbG93CisKKyogdHJhbnNsYXRlLmN4eCAodHJhbnNsYXRlX3Bhc3MpOiBVc2UgcmVmIGluIGNhdGNoLgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgaW5jbHVkZXMvc3lzL3NkdC5oIHwgMjAgKysrKysrKystLS0tLS0tLQorIHN0YXAtc2VydmVyZC5jeHggICB8IDY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIHRyYW5zbGF0ZS5jeHggICAgICB8ICAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGVzL3N5cy9zZHQuaCBiL2luY2x1ZGVzL3N5cy9zZHQuaAoraW5kZXggOTQwZjc0NDgzLi5jMGM1YTQ5MmMgMTAwNjQ0CistLS0gYS9pbmNsdWRlcy9zeXMvc2R0LmgKKysrKyBiL2luY2x1ZGVzL3N5cy9zZHQuaAorQEAgLTExOSw4ICsxMTksOCBAQCBzdHJ1Y3QgX19zZHRfdHlwZQorICAgCisgI2RlZmluZSBfX1NEVF9BTFdBWVNfU0lHTkVEKFQpIFwKKyB0ZW1wbGF0ZTw+IHN0cnVjdCBfX3NkdF90eXBlPFQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgX19zZHRfc2lnbmVkID0gdHJ1ZTsgfTsKKy0jZGVmaW5lIF9fU0RUX0NPTkRfU0lHTkVEKFQpIFwKKy10ZW1wbGF0ZTw+IHN0cnVjdCBfX3NkdF90eXBlPFQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgX19zZHRfc2lnbmVkID0gKChUKSgtMSkgPCAxKTsgfTsKKysjZGVmaW5lIF9fU0RUX0NPTkRfU0lHTkVEKFQsQ1QpCQkJCQkJXAorK3RlbXBsYXRlPD4gc3RydWN0IF9fc2R0X3R5cGU8VD4geyBzdGF0aWMgY29uc3QgYm9vbCBfX3NkdF9zaWduZWQgPSAoKENUKSgtMSkgPCAxKTsgfTsKKyBfX1NEVF9BTFdBWVNfU0lHTkVEKHNpZ25lZCBjaGFyKQorIF9fU0RUX0FMV0FZU19TSUdORUQoc2hvcnQpCisgX19TRFRfQUxXQVlTX1NJR05FRChpbnQpCitAQCAtMTQxLDE0ICsxNDEsMTQgQEAgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBzaG9ydCkKKyBfX1NEVF9BTFdBWVNfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGludCkKKyBfX1NEVF9BTFdBWVNfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGxvbmcpCisgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBsb25nIGxvbmcpCistX19TRFRfQ09ORF9TSUdORUQoY2hhcikKKy1fX1NEVF9DT05EX1NJR05FRCh3Y2hhcl90KQorLV9fU0RUX0NPTkRfU0lHTkVEKHZvbGF0aWxlIGNoYXIpCistX19TRFRfQ09ORF9TSUdORUQodm9sYXRpbGUgd2NoYXJfdCkKKy1fX1NEVF9DT05EX1NJR05FRChjb25zdCBjaGFyKQorLV9fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHdjaGFyX3QpCistX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgdm9sYXRpbGUgY2hhcikKKy1fX1NEVF9DT05EX1NJR05FRChjb25zdCB2b2xhdGlsZSB3Y2hhcl90KQorK19fU0RUX0NPTkRfU0lHTkVEKGNoYXIsIGNoYXIpCisrX19TRFRfQ09ORF9TSUdORUQod2NoYXJfdCwgd2NoYXJfdCkKKytfX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSBjaGFyLCBjaGFyKQorK19fU0RUX0NPTkRfU0lHTkVEKHZvbGF0aWxlIHdjaGFyX3QsIHdjaGFyX3QpCisrX19TRFRfQ09ORF9TSUdORUQoY29uc3QgY2hhciwgY2hhcikKKytfX1NEVF9DT05EX1NJR05FRChjb25zdCB3Y2hhcl90LCB3Y2hhcl90KQorK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGNoYXIsIGNoYXIpCisrX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgdm9sYXRpbGUgd2NoYXJfdCwgd2NoYXJfdCkKKyAjaWYgZGVmaW5lZCAoX19HTlVDX18pICYmIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNCkpCisgLyogX19TRFRfQ09ORF9TSUdORUQoY2hhcjE2X3QpICovCisgLyogX19TRFRfQ09ORF9TSUdORUQoY2hhcjMyX3QpICovCitkaWZmIC0tZ2l0IGEvc3RhcC1zZXJ2ZXJkLmN4eCBiL3N0YXAtc2VydmVyZC5jeHgKK2luZGV4IDdjZjc2YzYxNy4uNDFmNzdlZTllIDEwMDY0NAorLS0tIGEvc3RhcC1zZXJ2ZXJkLmN4eAorKysrIGIvc3RhcC1zZXJ2ZXJkLmN4eAorQEAgLTE2MDcsNiArMTYwNyw3IEBAIGdlbmVyYXRlX21vayhzdHJpbmcgJm1va19maW5nZXJwcmludCkKKyAgIGNoYXIgdG1wZGlyW1BBVEhfTUFYXSA9IHsgJ1wwJyB9OworICAgc3RyaW5nIHB1YmxpY19jZXJ0X3BhdGgsIHByaXZhdGVfY2VydF9wYXRoLCBkZXN0ZGlyOworICAgbW9kZV90IG9sZF91bWFzazsKKysgIGludCByZXRsZW47CisgCisgICBtb2tfZmluZ2VycHJpbnQuY2xlYXIgKCk7CisgCitAQCAtMTYzMSw3ICsxNjMyLDE0IEBAIGdlbmVyYXRlX21vayhzdHJpbmcgJm1va19maW5nZXJwcmludCkKKyAgICAgfQorIAorICAgLy8gTWFrZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gc3RvcmUgcmVzdWx0cyBpbi4KKy0gIHNucHJpbnRmICh0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgbW9rX3BhdGguY19zdHIgKCkpOworKyAgcmV0bGVuID0gc25wcmludGYgKHRtcGRpciwgUEFUSF9NQVgsICIlcy9zdGFwLXNlcnZlci5YWFhYWFgiLCBtb2tfcGF0aC5jX3N0ciAoKSk7CisrICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCisrICAgIHsKKysgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJDb3VsZCBub3QgY3JlYXRlICVzIG5hbWUiLCAidGVtcG9yYXJ5IGRpcmVjdG9yeSIpKTsKKysgICAgICB0bXBkaXJbMF0gPSAnXDAnOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorKworICAgaWYgKG1rZHRlbXAgKHRtcGRpcikgPT0gTlVMTCkKKyAgICAgeworICAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSAlczogJXMiLCB0bXBkaXIsIAorQEAgLTE3MDQsNiArMTcxMiw3IEBAIGhhbmRsZVJlcXVlc3QgKGNvbnN0IHN0cmluZyAmcmVxdWVzdERpck5hbWUsIGNvbnN0IHN0cmluZyAmcmVzcG9uc2VEaXJOYW1lLCBzdHJpCisgICB1bnNpZ25lZCB1OworICAgdW5zaWduZWQgaTsKKyAgIEZJTEUqIGY7CisrICBpbnQgcmV0bGVuOworIAorICAgLy8gU2F2ZSB0aGUgc2VydmVyIHZlcnNpb24uIERvIHRoaXMgZWFybHksIHNvIHRoZSBjbGllbnQga25vd3Mgd2hhdCB2ZXJzaW9uIG9mIHRoZSBzZXJ2ZXIKKyAgIC8vIGl0IGlzIGRlYWxpbmcgd2l0aCwgZXZlbiBpZiB0aGUgcmVxdWVzdCBpcyBub3QgZnVsbHkgY29tcGxldGVkLgorQEAgLTE3ODIsNyArMTc5MSwxMiBAQCBoYW5kbGVSZXF1ZXN0IChjb25zdCBzdHJpbmcgJnJlcXVlc3REaXJOYW1lLCBjb25zdCBzdHJpbmcgJnJlc3BvbnNlRGlyTmFtZSwgc3RyaQorICAgICAgIHN0cnVjdCBzdGF0IHN0OworICAgICAgIGNoYXIgKmFyZzsKKyAKKy0gICAgICBzbnByaW50ZiAoc3RhcGFyZ2ZpbGUsIFBBVEhfTUFYLCAiJXMvYXJndiVkIiwgcmVxdWVzdERpck5hbWUuY19zdHIgKCksIGkpOworKyAgICAgIHJldGxlbiA9IHNucHJpbnRmIChzdGFwYXJnZmlsZSwgUEFUSF9NQVgsICIlcy9hcmd2JWQiLCByZXF1ZXN0RGlyTmFtZS5jX3N0ciAoKSwgaSk7CisrICAgICAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICAgICAgeworKyAgICAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInBhdGgiKSk7CisrICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAKKyAgICAgICByYyA9IHN0YXQoc3RhcGFyZ2ZpbGUsICYgc3QpOworICAgICAgIGlmIChyYykgYnJlYWs7CitAQCAtMTg4OCw3ICsxOTAyLDE1IEBAIGhhbmRsZVJlcXVlc3QgKGNvbnN0IHN0cmluZyAmcmVxdWVzdERpck5hbWUsIGNvbnN0IHN0cmluZyAmcmVzcG9uc2VEaXJOYW1lLCBzdHJpCisgICAgIHsKKyAgICAgICBnbG9iX3QgZ2xvYmJlcjsKKyAgICAgICBjaGFyIHBhdHRlcm5bUEFUSF9NQVhdOworLSAgICAgIHNucHJpbnRmIChwYXR0ZXJuLCBQQVRIX01BWCwgIiVzLyoua28iLCBuZXdfc3RhcHRtcGRpci5jX3N0cigpKTsKKysgICAgICBpbnQgcmV0bGVuOworKworKyAgICAgIHJldGxlbiA9IHNucHJpbnRmIChwYXR0ZXJuLCBQQVRIX01BWCwgIiVzLyoua28iLCBuZXdfc3RhcHRtcGRpci5jX3N0cigpKTsKKysgICAgICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCisrICAgICAgICB7CisrICAgICAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAicGF0dGVybiIpKTsKKysgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKworICAgICAgIHJjID0gZ2xvYiAocGF0dGVybiwgR0xPQl9FUlIsIE5VTEwsICZnbG9iYmVyKTsKKyAgICAgICBpZiAocmMpCisgICAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJVbmFibGUgdG8gZmluZCBhIG1vZHVsZSBpbiAlcyIsIG5ld19zdGFwdG1wZGlyLmNfc3RyKCkpKTsKK0BAIC0yMTY0LDYgKzIxODYsNyBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgZm9yIGVhY2ggY29ubmVjdGlvbi4qLworICAgdmVjdG9yPHN0cmluZz4gICAgIGFyZ3Y7CisgICBQUkludDMyICAgICAgICAgICAgYnl0ZXNSZWFkOworKyAgaW50CQkgICAgIHJldGxlbjsKKyAKKyAgIC8qIERldGF0Y2ggdG8gYXZvaWQgYSBtZW1vcnkgbGVhayAqLworICAgaWYobWF4X3RocmVhZHMgPiAwKQorQEAgLTIyMTMsNyArMjIzNiwxMyBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQorICNlbmRpZgorIAorICAgc2VjU3RhdHVzID0gU0VDRmFpbHVyZTsKKy0gIHNucHJpbnRmKHRtcGRpciwgUEFUSF9NQVgsICIlcy9zdGFwLXNlcnZlci5YWFhYWFgiLCBnZXRlbnYoIlRNUERJUiIpID86ICIvdG1wIik7CisrICByZXRsZW4gPSBzbnByaW50Zih0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgZ2V0ZW52KCJUTVBESVIiKSA/OiAiL3RtcCIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJ0ZW1wb3JhcnkgZGlyZWN0b3J5IikpOworKyAgICAgIHRtcGRpclswXT0wOyAvKiBwcmV2ZW50IC9iaW4vcm0gKi8KKysgICAgICBnb3RvIGNsZWFudXA7CisrICAgIH0KKyAgIHJjMSA9IG1rZHRlbXAodG1wZGlyKTsKKyAgIGlmICghIHJjMSkKKyAgICAgeworQEAgLTIyMjMsOSArMjI1MiwyMCBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQorICAgICB9CisgCisgICAvKiBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZXMgbmFtZXMgYW5kIGRpcmVjdG9yaWVzLiAgKi8KKy0gIHNucHJpbnRmIChyZXF1ZXN0RmlsZU5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdC56aXAiLCB0bXBkaXIpOworKyAgcmV0bGVuID0gc25wcmludGYgKHJlcXVlc3RGaWxlTmFtZSwgUEFUSF9NQVgsICIlcy9yZXF1ZXN0LnppcCIsIHRtcGRpcik7CisrICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCisrICAgIHsKKysgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlcXVlc3QuemlwIHBhdGgiKSk7CisrICAgICAgZ290byBjbGVhbnVwOworKyAgICB9CisrCisrICByZXRsZW4gPSBzbnByaW50ZiAocmVxdWVzdERpck5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdCIsIHRtcGRpcik7CisrICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCisrICAgIHsKKysgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlcXVlc3QgZGlyZWN0b3J5IHBhdGgiKSk7CisrICAgICAgZ290byBjbGVhbnVwOworKyAgICB9CisgCistICBzbnByaW50ZiAocmVxdWVzdERpck5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdCIsIHRtcGRpcik7CisgICByYyA9IG1rZGlyKHJlcXVlc3REaXJOYW1lLCAwNzAwKTsKKyAgIGlmIChyYykKKyAgICAgeworQEAgLTIyMzMsNyArMjI3MywxMyBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQorICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgfQorIAorLSAgc25wcmludGYgKHJlc3BvbnNlRGlyTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZSIsIHRtcGRpcik7CisrICByZXRsZW4gPSBzbnByaW50ZiAocmVzcG9uc2VEaXJOYW1lLCBQQVRIX01BWCwgIiVzL3Jlc3BvbnNlIiwgdG1wZGlyKTsKKysgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKKysgICAgeworKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAicmVzcG9uc2UgZGlyZWN0b3J5IHBhdGgiKSk7CisrICAgICAgZ290byBjbGVhbnVwOworKyAgICB9CisrCisgICByYyA9IG1rZGlyKHJlc3BvbnNlRGlyTmFtZSwgMDcwMCk7CisgICBpZiAocmMpCisgICAgIHsKK0BAIC0yMjQzLDcgKzIyODksMTIgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgIC8vIFNldCB0aGlzIGVhcmx5LCBzaW5jZSBpdCBnZXRzIHVzZWQgZm9yIGVycm9ycyB0byBiZSByZXR1cm5lZCB0byB0aGUgY2xpZW50LgorICAgc3RhcHN0ZGVyciA9IHN0cmluZyhyZXNwb25zZURpck5hbWUpICsgIi9zdGRlcnIiOworIAorLSAgc25wcmludGYgKHJlc3BvbnNlRmlsZU5hbWUsIFBBVEhfTUFYLCAiJXMvcmVzcG9uc2UuemlwIiwgdG1wZGlyKTsKKysgIHJldGxlbiA9IHNucHJpbnRmIChyZXNwb25zZUZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3Jlc3BvbnNlLnppcCIsIHRtcGRpcik7CisrICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCisrICAgIHsKKysgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlc3BvbnNlLnppcCBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorIAorICAgLyogUmVhZCBkYXRhIGZyb20gdGhlIHNvY2tldC4KKyAgICAqIElmIHRoZSB1c2VyIGlzIHJlcXVlc3RpbmcvcmVxdWlyaW5nIGF1dGhlbnRpY2F0aW9uLCBhdXRoZW50aWNhdGUKK2RpZmYgLS1naXQgYS90cmFuc2xhdGUuY3h4IGIvdHJhbnNsYXRlLmN4eAoraW5kZXggMTI0MGE4MGVjLi40YWRlMDZmZGQgMTAwNjQ0CistLS0gYS90cmFuc2xhdGUuY3h4CisrKysgYi90cmFuc2xhdGUuY3h4CitAQCAtNzg2MCw3ICs3ODYwLDcgQEAgdHJhbnNsYXRlX3Bhc3MgKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQorIAkgIGlmICh2ZXJzaW9ucy5zaXplKCkgPj0gMyAmJiBzLnZlcmJvc2UgPiAxKQorIAkgICAgY2xvZyA8PCBfRigiaWdub3JpbmcgZXh0cmEgcGFydHMgb2YgY29tcGF0IHZlcnNpb246ICVzIiwgcy5jb21wYXRpYmxlLmNfc3RyKCkpIDw8IGVuZGw7CisgCX0KKy0gICAgICBjYXRjaCAoY29uc3QgcnVudGltZV9lcnJvcikKKysgICAgICBjYXRjaCAoY29uc3QgcnVudGltZV9lcnJvciYpCisgCXsKKyAJICB0aHJvdyBTRU1BTlRJQ19FUlJPUihfRigicGFyc2UgZXJyb3IgaW4gY29tcGF0aWJpbGl0eSB2ZXJzaW9uOiAlcyIsIHMuY29tcGF0aWJsZS5jX3N0cigpKSk7CisgCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1NYWtlLXN1cmUtc3lzcm9vdC1wYXRocy1kb24tdC1lbmQtd2l0aC1hLXNsYXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLU1ha2Utc3VyZS1zeXNyb290LXBhdGhzLWRvbi10LWVuZC13aXRoLWEtc2xhc2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NkOTAzMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1NYWtlLXN1cmUtc3lzcm9vdC1wYXRocy1kb24tdC1lbmQtd2l0aC1hLXNsYXNoLnBhdGNoCkBAIC0wLDAgKzEsMTI4IEBACitGcm9tIDQxZWZhZDA0NzMwYmU4OTg4OWQxNDgzNzE5ZjlhNmM5Mzk2ZGMyNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDE0IE1hciAyMDE4IDE3OjA1OjI1IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2Ugc3VyZSBzeXNyb290IHBhdGhzIGRvbid0IGVuZCB3aXRoIGEgc2xhc2guCisKKyogc2Vzc2lvbi5jeHggKHBhcnNlX2NtZGxpbmUpOiBNYWtlIHN1cmUgYSBzeXNyb290IHBhdGggZG9lcyBub3QgZW5kIHdpdGgKKyAgYSAnLycsIHNpbmNlIHdlIGJ1aWxkIHBhdGhzIGxpa2U6IHN5c3Jvb3QgKyAiL2xpYi9tb2R1bGVzIi4gSWYgdGhlCisgIHN5c3Jvb3QgcGF0aCBlbmRzIHdpdGggYSAnLycsIHdlIGVuZCB1cCB3aXRoIHBhdGhzIGxpa2UKKyAgJy9TWVNST09ULy9saWIvbW9kdWxlcycuCisgIChzZXR1cF9rZXJuZWxfcmVsZWFzZSk6IFRha2UgYSBzdHJpbmcgcGFyYW1ldGVyLCBub3QgYSBjaGFyYWN0ZXIgcG9pbnRlci4KKyogc2Vzc2lvbi5oOiBVcGRhdGUgc2V0dXBfa2VybmVsX3JlbGVhc2UoKSBwcm90b3R5cGUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgc2Vzc2lvbi5jeHggfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgc2Vzc2lvbi5oICAgfCAgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9zZXNzaW9uLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Nlc3Npb24uY3h4CisrKysgZ2l0L3Nlc3Npb24uY3h4CitAQCAtNzIyLDYgKzcyMiw5IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKKyAgIGNsaWVudF9vcHRpb25zX2Rpc2FsbG93ZWRfZm9yX3VucHJpdmlsZWdlZCA9ICIiOworICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IGFkZGl0aW9uYWxfdW53aW5kc3ltX21vZHVsZXM7CisgICBzdHJ1Y3QgcmxpbWl0IG91cl9ybGltaXQ7CisrICBib29sIHN5c3Jvb3Rfb3B0aW9uX3NlZW4gPSBmYWxzZTsKKysgIHN0cmluZyBrZXJuZWxfcmVsZWFzZV92YWx1ZTsKKysKKyAgIHdoaWxlICh0cnVlKQorICAgICB7CisgICAgICAgY2hhciAqIG51bV9lbmRwdHI7CitAQCAtODg3LDcgKzg5MCw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKKyAJICAgIC8vIE5vdGUgdGhhdCAnLScgbXVzdCBjb21lIGxhc3QgaW4gYSByZWdleCBicmFja2V0IGV4cHJlc3Npb24uCisgICAgICAgICAgICAgYXNzZXJ0X3JlZ2V4cF9tYXRjaCgiLXIgcGFyYW1ldGVyIGZyb20gY2xpZW50Iiwgb3B0YXJnLCAiXlthLXowLTlfListXSskIik7CisgCSAgc2VydmVyX2FyZ3MucHVzaF9iYWNrIChzdHJpbmcgKCItIikgKyAoY2hhcilncmMgKyBvcHRhcmcpOworLSAgICAgICAgICBzZXR1cF9rZXJuZWxfcmVsZWFzZShvcHRhcmcpOworKwkgIGtlcm5lbF9yZWxlYXNlX3ZhbHVlID0gb3B0YXJnOworICAgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgIGNhc2UgJ2EnOgorQEAgLTE0NzMsNyArMTQ3Niw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKKyAJICBpZiAoY2xpZW50X29wdGlvbnMpIHsKKyAJICAgICAgY2VyciA8PCBfRigiRVJST1I6ICVzIGludmFsaWQgd2l0aCAlcyIsICItLXN5c3Jvb3QiLCAiLS1jbGllbnQtb3B0aW9ucyIpIDw8IGVuZGw7CisgCSAgICAgIHJldHVybiAxOworLQkgIH0gZWxzZSBpZiAoIXN5c3Jvb3QuZW1wdHkoKSkgeworKwkgIH0gZWxzZSBpZiAoc3lzcm9vdF9vcHRpb25fc2VlbikgeworIAkgICAgICBjZXJyIDw8ICJFUlJPUjogbXVsdGlwbGUgLS1zeXNyb290IG9wdGlvbnMgbm90IHN1cHBvcnRlZCIgPDwgZW5kbDsKKyAJICAgICAgcmV0dXJuIDE7CisgCSAgfSBlbHNlIHsKK0BAIC0xNDg3LDExICsxNDkwLDE3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKKyAKKyAJICAgICAgc3lzcm9vdCA9IHN0cmluZyhzcGF0aCk7CisgCSAgICAgIGZyZWUgKHNwYXRoKTsKKy0JICAgICAgaWYgKHN5c3Jvb3Rbc3lzcm9vdC5zaXplKCkgLSAxXSAhPSAnLycpCistCQkgIHN5c3Jvb3QuYXBwZW5kKCIvIik7CisgCistCSAgICAgIGJyZWFrOworKwkgICAgICAvLyBXZSBkbyBwYXRoIGNyZWF0aW9uIGxpa2UgdGhpczoKKysJICAgICAgLy8gICBzeXNyb290ICsgIi9saWIvbW9kdWxlcyIKKysJICAgICAgLy8gU28sIHdlIGRvbid0IHdhbnQgdGhlIHN5c3Jvb3QgcGF0aCB0byBlbmQgd2l0aCBhICcvJywKKysJICAgICAgLy8gb3RoZXJ3aXNlIHdlJ2xsIGVuZCB1cCB3aXRoICcvZm9vLy9saWIvbW9kdWxlcycuCisrCSAgICAgIGlmIChzeXNyb290LmJhY2soKSA9PSAnLycpIHsKKysJCSAgc3lzcm9vdC5wb3BfYmFjaygpOworKwkgICAgICB9CisgCSAgfQorKwkgIHN5c3Jvb3Rfb3B0aW9uX3NlZW4gPSB0cnVlOworKwkgIGJyZWFrOworIAorIAljYXNlIExPTkdfT1BUX1NZU0VOVjoKKyAJICBpZiAoY2xpZW50X29wdGlvbnMpIHsKK0BAIC0xNTAxLDcgKzE1MTAsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCSAgICAgIHN0cmluZyBzeXNlbnZfc3RyID0gb3B0YXJnOworIAkgICAgICBzdHJpbmcgdmFsdWU7CisgCSAgICAgIHNpemVfdCBwb3M7CistCSAgICAgIGlmIChzeXNyb290LmVtcHR5KCkpIHsKKysJICAgICAgaWYgKCEgc3lzcm9vdF9vcHRpb25fc2VlbikgeworIAkJICBjZXJyIDw8ICJFUlJPUjogLS1zeXNlbnYgbXVzdCBmb2xsb3cgLS1zeXNyb290IiA8PCBlbmRsOworIAkJICByZXR1cm4gMTsKKyAJICAgICAgfQorQEAgLTE2NDYsNiArMTY1NSwxNSBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCX0KKyAgICAgfQorIAorKyAgaWYgKCEga2VybmVsX3JlbGVhc2VfdmFsdWUuZW1wdHkoKSkKKysgIHsKKysgICAgICBzZXR1cF9rZXJuZWxfcmVsZWFzZShrZXJuZWxfcmVsZWFzZV92YWx1ZSk7CisrICB9CisrICBlbHNlIGlmICghIHN5c3Jvb3QuZW1wdHkoKSkKKysgIHsKKysgICAgICBrZXJuZWxfYnVpbGRfdHJlZSA9IHN5c3Jvb3QgKyAiL2xpYi9tb2R1bGVzLyIgKyBrZXJuZWxfcmVsZWFzZSAgKyAiL2J1aWxkIjsKKysgIH0KKysKKyAgIHJldHVybiAwOworIH0KKyAKK0BAIC0yMTUyLDcgKzIxNzAsNyBAQCB2b2lkIHN5c3RlbXRhcF9zZXNzaW9uOjppbnNlcnRfbG9hZGVkX21vCisgfQorIAorIHZvaWQKKy1zeXN0ZW10YXBfc2Vzc2lvbjo6c2V0dXBfa2VybmVsX3JlbGVhc2UgKGNvbnN0IGNoYXIqIGtzdHIpIAorK3N5c3RlbXRhcF9zZXNzaW9uOjpzZXR1cF9rZXJuZWxfcmVsZWFzZSAoY29uc3Qgc3RyaW5nJiBrc3RyKSAKKyB7CisgICAvLyBTb21ldGltZXMgd2UgbWF5IGdldCBkdXBlcyBoZXJlLi4uIGUuZy4gYSBzZXJ2ZXIgbWF5IGhhdmUgYSBmdWxsCisgICAvLyAtciAvcGF0aC90by9rZXJuZWwgZm9sbG93ZWQgYnkgYSBjbGllbnQncyAtciBrZXJuZWwuCitAQCAtMjE4Myw3ICsyMjAxLDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnNldHVwX2tlcm5lbF9yZWxlYXNlCisgICBlbHNlCisgICAgIHsKKyAgICAgICB1cGRhdGVfcmVsZWFzZV9zeXNyb290ID0gdHJ1ZTsKKy0gICAgICBrZXJuZWxfcmVsZWFzZSA9IHN0cmluZyAoa3N0cik7CisrICAgICAga2VybmVsX3JlbGVhc2UgPSBrc3RyOworICAgICAgIGlmICgha2VybmVsX3JlbGVhc2UuZW1wdHkoKSkKKyAgICAgICAgIGtlcm5lbF9idWlsZF90cmVlID0gIi9saWIvbW9kdWxlcy8iICsga2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKKyAKK0luZGV4OiBnaXQvc2Vzc2lvbi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc2Vzc2lvbi5oCisrKysgZ2l0L3Nlc3Npb24uaAorQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CisgCisgICAvLyBOQjogSXQgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIGFsbCBvZiB0aGUgYWJvdmUgKGFuZCBiZWxvdykgZmllbGRzCisgICAvLyB0byBiZSBjbGVhcmVkIGluIHRoZSBzeXN0ZW10YXBfc2Vzc2lvbiBjdG9yIChzZXNzaW9uLmN4eCkuCistICB2b2lkIHNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBjaGFyKiBrc3RyKTsKKysgIHZvaWQgc2V0dXBfa2VybmVsX3JlbGVhc2UgKGNvbnN0IHN0ZDo6c3RyaW5nJiBrc3RyKTsKKyAgIHZvaWQgaW5zZXJ0X2xvYWRlZF9tb2R1bGVzICgpOworIAorICAgLy8gY29tbWFuZCBsaW5lIHBhcnNpbmcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1Vc2Utc3lzcm9vdC13aGVuLWxvb2tpbmctZm9yLXRoZS1TeXN0ZW0ubWFwLWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyODIwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNDM2MDYzZDVlNDczOGE5YjAzNTM1ZDMzMGEyMjQyYmU1MTE4ZTc0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhdmlkIFNtaXRoIDxkc21pdGhAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgOCBNYXIgMjAxOCAxNjowMTo1OCAtMDYwMAorU3ViamVjdDogW1BBVENIXSBVc2Ugc3lzcm9vdCB3aGVuIGxvb2tpbmcgZm9yIHRoZSBTeXN0ZW0ubWFwIGZpbGUuCisKK0FkZCBzeXNyb290IHRvIHN5c3RlbV9tYXBfcGF0aCArICIvYm9vdC9TeXN0ZW0ubWFwIiBjYXNlLiBPdGhlcndpc2UKK3N0YXAgdHJpZXMgdG8gbG9vayBzeW1ib2xzIG9uIGhvc3Qgc3lzdGVtIGFuZCBpdCBwcm9kdWNlIGVycm9yIGxpa2UgdGhpczoKKworPiBLZXJuZWwgc3ltYm9sIHRhYmxlIC9ib290L1N5c3RlbS5tYXAtNC45Ljc4LXlvY3RvLXN0YW5kYXJkIHVuYXZhaWxhYmxlLCAoTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CistLS0KKyBzZXNzaW9uLmN4eCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGdpdC9zZXNzaW9uLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Nlc3Npb24uY3h4CisrKysgZ2l0L3Nlc3Npb24uY3h4CitAQCAtMjAxMyw3ICsyMDEzLDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2tlcm5lbF9mdW5jdGlvbgorIAljbG9nIDw8IF9GKCJLZXJuZWwgc3ltYm9sIHRhYmxlICVzIHVuYXZhaWxhYmxlLCAoJXMpIiwKKyAJCSAgIHN5c3RlbV9tYXBfcGF0aC5jX3N0cigpLCBzdHJlcnJvcihlcnJubykpIDw8IGVuZGw7CisgCistICAgICAgc3lzdGVtX21hcF9wYXRoID0gIi9ib290L1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOworKyAgICAgIHN5c3RlbV9tYXBfcGF0aCA9IHN5c3Jvb3QgKyAiL2Jvb3QvU3lzdGVtLm1hcC0iICsga2VybmVsX3JlbGVhc2U7CisgICAgICAgc3lzdGVtX21hcC5jbGVhcigpOworICAgICAgIHN5c3RlbV9tYXAub3BlbihzeXN0ZW1fbWFwX3BhdGguY19zdHIoKSwgaWZzdHJlYW06OmluKTsKKyAgICAgICBpZiAoISBzeXN0ZW1fbWFwLmlzX29wZW4oKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLV9zdHBfdW1vZHVsZV9yZWxvY2F0ZS1uZWVkcy10YXJnZXQtZmlsZS1wYXRoLW5vdC1ob3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxODFhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMTgzYzdhN2E4MTY3MzMzYzg3MzUyNWY3OTA4OTEzODM3YjhkYzNjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogVHVlLCAyMCBNYXIgMjAxOCAxMjo0MTowNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBfc3RwX3Vtb2R1bGVfcmVsb2NhdGUgbmVlZHMgdGFyZ2V0IGZpbGUgcGF0aCwgbm90IGhvc3QgZmlsZQorIHBhdGgKKworU3RyaXAgb2Ygc3lzcm9vdCBmcm9tIG1vZHVsZSBuYW1lIGlzIHJlcXVpcmVkIHdoZW4gX3N0cF91bW9kdWxlX3JlbG9jYXRlCitjYWxsIGlzIGdlbmVyYXRlZC4gT3RoZXJ3aXNlIHBhdGggd29uJ3QgbWF0Y2ggcGF0aCBvbiB0YXJnZXQgYW5kIGNvdWxkCit3aWxsIGZhaWwgdG8gY2FsY3VsYXRlZCBhZGRyZXNzIHdpdGhpbiB0aGUgZmlsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CistLS0KKyBsb2Myc3RhcC5jeHggfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbG9jMnN0YXAuY3h4IGIvbG9jMnN0YXAuY3h4CitpbmRleCA0ODE4ZWUwLi5lMDk5NTRmIDEwMDY0NAorLS0tIGEvbG9jMnN0YXAuY3h4CisrKysgYi9sb2Myc3RhcC5jeHgKK0BAIC0xNyw2ICsxNyw3IEBACisgCisgI2luY2x1ZGUgImxvYzJzdGFwLmgiCisgI2luY2x1ZGUgImR3ZmxwcC5oIgorKyNpbmNsdWRlICJ0YXBzZXRzLmgiCisgCisgI2lmICEgX0VMRlVUSUxTX1BSRVJFUSgwLCAxNTMpCisgI2RlZmluZSBEV19PUF9HTlVfZW50cnlfdmFsdWUgMHhmMworQEAgLTEwNiw3ICsxMDcsOSBAQCBsb2NhdGlvbl9jb250ZXh0Ojp0cmFuc2xhdGVfYWRkcmVzcyhEd2FyZl9BZGRyIGFkZHIpCisgICAgICAgICAgIGMgPSAiLyogcHJhZ21hOnZtYSAqLyAiCisgICAgICAgICAgICAgICAiKHsgdW5zaWduZWQgbG9uZyBhZGRyID0gMDsgIgorICAgICAgICAgICAgICAgImFkZHIgPSBfc3RwX3Vtb2R1bGVfcmVsb2NhdGUgKFwiIgorLSAgICAgICAgICAgICAgKyByZXNvbHZlX3BhdGgoZHctPm1vZHVsZV9uYW1lLmNfc3RyKCkpICsgIlwiLCAiCisrICAgICAgICAgICAgICArIHBhdGhfcmVtb3ZlX3N5c3Jvb3QoZHctPnNlc3MsCisrCQkJCSAgICByZXNvbHZlX3BhdGgoZHctPm1vZHVsZV9uYW1lLmNfc3RyKCkpKQorKwkgICAgICArICJcIiwgIgorICAgICAgICAgICAgICAgKyBsZXhfY2FzdF9oZXggKGFkZHIpCisgCSAgICAgICsgIiwgY3VycmVudCk7IGFkZHI7IH0pIjsKKyAJfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWRlYnVnaW5mby1sb29rdXAtd2l0aC1zeXNyb290LWNhc2UtZG8tbm90LXJlbW92ZS1zeXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtZGVidWdpbmZvLWxvb2t1cC13aXRoLXN5c3Jvb3QtY2FzZS1kby1ub3QtcmVtb3ZlLXN5cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjA2NDJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWRlYnVnaW5mby1sb29rdXAtd2l0aC1zeXNyb290LWNhc2UtZG8tbm90LXJlbW92ZS1zeXMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBiMjllNDQ4ZTEyMDQwZWQ4ZjRkODM3NDNhMTRkYjBmMTM4YTdjYzY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitEYXRlOiBXZWQsIDE0IE1hciAyMDE4IDE2OjU0OjA4IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGRlYnVnaW5mbyBsb29rdXAgd2l0aCBzeXNyb290IGNhc2UgZG8gbm90IHJlbW92ZSBzeXNyb290IGZyb20KKyBmaWxlX25hbWUKKworSWYgc3lzcm9vdCBvcHRpb24gaXMgcGFzc2VkLCBhbmQgZGVidWcgc3ltYm9scyByZXNpZGUgaW4gc3lzcm9vdCBhbG9uZword2l0aCBleGVjdXRhYmxlIDxmb28+IGluIDxmb29fZGlyPi8uZGVidWcvPGZvb19maWxlPiBkaXJlY3RvcnksCitzdGFwIGZhaWxzIHRvIGZpbmQgZGVidWdpbmZvIGJlY2F1c2UgaXQgc3RyaXBzIG91dCBzeXNyb290IHBhdGgKK2Zyb20gZmlsZV9uYW1lIHNvIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8gZW5kcyB1cCBsb29raW5nIGF0Citob3N0IDxmb29fZGlyPi8uZGVidWcvPGZvb19maWxlPiByYXRoZXIgdGhlbiBjaGVja2luZworPHN5c3Jvb3Q+Lzxmb29fZGlyPi8uZGVidWcvPGZvb19maWxlPi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CistLS0KKyBzZXR1cGR3ZmwuY3h4IHwgMTIgLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXBkd2ZsLmN4eCBiL3NldHVwZHdmbC5jeHgKK2luZGV4IDExZTBiYjIuLjJhODc5ODIgMTAwNjQ0CistLS0gYS9zZXR1cGR3ZmwuY3h4CisrKysgYi9zZXR1cGR3ZmwuY3h4CitAQCAtNjI3LDE4ICs2MjcsNiBAQCBpbnRlcm5hbF9maW5kX2RlYnVnaW5mbyAoRHdmbF9Nb2R1bGUgKm1vZCwKKyAKKyAgIGNhbGxfZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbzoKKyAKKy0gIGlmIChjdXJyZW50X3Nlc3Npb25fZm9yX2ZpbmRfZGVidWdpbmZvKQorLSAgICB7CistICAgICAgc3RyaW5nIHN5c3Jvb3QgPSBjdXJyZW50X3Nlc3Npb25fZm9yX2ZpbmRfZGVidWdpbmZvLT5zeXNyb290ICsgIi8qIjsKKy0gICAgICBpbnQgICAgZm91bmQgICA9IGZubWF0Y2goc3lzcm9vdC5jX3N0cigpLCBmaWxlX25hbWUsIDApOworLQorLSAgICAgIGlmIChmb3VuZCkKKy0JeworLQkgIGZpbGVfbmFtZSA9IGZpbGVfbmFtZQorLQkgICAgKyBjdXJyZW50X3Nlc3Npb25fZm9yX2ZpbmRfZGVidWdpbmZvLT5zeXNyb290Lmxlbmd0aCgpIC0gMTsKKy0JfQorLSAgICB9CistCisgICAvKiBDYWxsIHRoZSBvcmlnaW5hbCBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvICovCisgICByZXR1cm4gZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyhtb2QsIHVzZXJkYXRhLCBtb2RuYW1lLCBiYXNlLAorICAgICAgICAgICAgICAgZmlsZV9uYW1lLCBkZWJ1Z2xpbmtfZmlsZSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLWZvbGxvdy11LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmctZm9sbG93LXUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZlN2Q0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLWZvbGxvdy11LnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gN2UxMWYxMjlmZjM3MGNlNWYzOTgxMmNlMmFlNmNlNDA4MThhMzQ3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAxNjowMjowMiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBzeXNyb290OiBmaXggc2hvcnQgcmVsZWFzZSAtciBvcHRpb24gaGFuZGxpbmcgZm9sbG93IHVwCisKK0luIGNhc2Ugb2Ygc3lzcm9vdCBzZXQgYW5kIHNob3J0IHJlbGVhc2UgLXIgb3B0aW9uIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UKK3RvIHBhc3Mgc2hvcnQgcmVsZWFzZSBuYW1lIGludG8gZHdmbF9saW51eF9rZXJuZWxfcmVwb3J0X29mZmxpbmUKK2Z1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBhd2FyZSBhYm91dCBzeXNyb290IGFuZCBpdCB3b24ndCBsb29rIGZvcgora2VybmVsIG1vZHVsZXMgdW5kZXIgc3lzcm9vdCBkaXJlY3RvcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgc2V0dXBkd2ZsLmN4eCB8IDEwICsrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cGR3ZmwuY3h4IGIvc2V0dXBkd2ZsLmN4eAoraW5kZXggYzQxOWFmYS4uMGNmNTgxMCAxMDA2NDQKKy0tLSBhL3NldHVwZHdmbC5jeHgKKysrKyBiL3NldHVwZHdmbC5jeHgKK0BAIC0zNjcsNyArMzY3LDE1IEBAIHNldHVwX2R3Zmxfa2VybmVsICh1bnNpZ25lZCAqbW9kdWxlc19mb3VuZCwgc3lzdGVtdGFwX3Nlc3Npb24gJnMpCisgICAvLyBoYXJkLWNvZGUgdGhpcyBtYWdpYyBoZXJlLgorICAgc3RyaW5nIGxpYl9wYXRoID0gcy5zeXNyb290ICsgIi9saWIvbW9kdWxlcy8iICsgcy5rZXJuZWxfcmVsZWFzZSArICIvYnVpbGQiOworICAgaWYgKHMua2VybmVsX2J1aWxkX3RyZWUgPT0gbGliX3BhdGgpCistICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfcmVsZWFzZTsKKysgICAgeworKyAgICAgIGlmIChzLnN5c3Jvb3QgIT0gIiIpCisrICAgICAgICAvLyBJZiB3ZSBoYXZlIHN5c3Jvb3Qgc2V0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gcGFzcworKyAgICAgICAgLy8gc2hvcnQgcmVsZWFzZSB0byBkd2ZsLCBpdCB3b24ndCB0YWtlIGEgc3lzcm9vdCBpbnRvCisrICAgICAgICAvLyBhY2NvdW50LiBMZXQncyBjb25zdHJ1Y3QgZnVsbCBwYXRoIGluIHN1Y2ggY2FzZS4KKysJZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzdHJpbmcocy5zeXNyb290ICsgIi9saWIvbW9kdWxlcy8iICsgcy5rZXJuZWxfcmVsZWFzZSk7CisrICAgICAgZWxzZQorKwllbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CisrICAgIH0KKyAgIGVsc2UKKyAgICAgZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9idWlsZF90cmVlOworICAgb2ZmbGluZV9tb2R1bGVzX2ZvdW5kID0gMDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzFkNjI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSBhOWNlODliY2QyZDc4NzI4ZmFlZjU5YmRhNjBlNzU1MTA5NzJjZDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitEYXRlOiBXZWQsIDE0IE1hciAyMDE4IDE3OjA5OjQ0IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c3Jvb3Q6IGZpeCBzaG9ydCByZWxlYXNlIC1yIG9wdGlvbiBoYW5kbGluZworCisqIHNldHVwZHdmbC5jeHggKGRlYnVnaW5mb19wYXRoX2luc2VydF9zeXNyb290KTogQWRkIGEgJy8nIHRvIHRoZSBlbmQgb2YKKyAgdGhlIHN5c3Jvb3QgZm9yIHBhdGhfaW5zZXJ0X3N5c3Jvb3QoKS4KKyAgKHNldHVwX2R3Zmxfa2VybmVsKTogU2ltcGxpZnkgbG9naWMgd2hlbiBmaW5kaW5nIHRoZSBrZXJuZWwgcGF0aCB0byBzZW5kCisgIHRvIGVsZnV0aWxzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHNldHVwZHdmbC5jeHggfCAxOSArKysrKysrKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cGR3ZmwuY3h4IGIvc2V0dXBkd2ZsLmN4eAoraW5kZXggMmE4Nzk4Mi4uZjZjMzE1NyAxMDA2NDQKKy0tLSBhL3NldHVwZHdmbC5jeHgKKysrKyBiL3NldHVwZHdmbC5jeHgKK0BAIC0zMzksNiArMzM5LDEzIEBAIHN0YXRpYyBjaGFyICogcGF0aF9pbnNlcnRfc3lzcm9vdChzdHJpbmcgc3lzcm9vdCwgc3RyaW5nIHBhdGgpCisgCisgdm9pZCBkZWJ1Z2luZm9fcGF0aF9pbnNlcnRfc3lzcm9vdChzdHJpbmcgc3lzcm9vdCkKKyB7CisrICAvLyBGSVhNRTogVGhpcyBpcyBhIHNob3J0LXRlcm0gZml4LCB1bnRpbCB3ZSBleHBlY3Qgc3lzcm9vdCBwYXRocyB0bworKyAgLy8gYWx3YXlzIGVuZCB3aXRoIGEgJy8nIChhbmQgbmV2ZXIgYmUgZW1wdHkpLgorKyAgLy8KKysgIC8vIFRoZSBwYXRoX2luc2VydF9zeXNyb290KCkgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHN5c3Jvb3QgaGFzIGEgJy8nCisrICAvLyBvbiB0aGUgZW5kLiBNYWtlIHN1cmUgdGhhdCBpcyB0cnVlLgorKyAgaWYgKHN5c3Jvb3QuYmFjaygpICE9ICcvJykKKysgICAgc3lzcm9vdC5wdXNoX2JhY2soJy8nKTsKKyAgIGRlYnVnaW5mb19wYXRoID0gcGF0aF9pbnNlcnRfc3lzcm9vdChzeXNyb290LCBkZWJ1Z2luZm9fcGF0aCk7CisgICBkZWJ1Z2luZm9fdXNyX3BhdGggPSBwYXRoX2luc2VydF9zeXNyb290KHN5c3Jvb3QsIGRlYnVnaW5mb191c3JfcGF0aCk7CisgfQorQEAgLTM1OCwxMyArMzY1LDExIEBAIHNldHVwX2R3Zmxfa2VybmVsICh1bnNpZ25lZCAqbW9kdWxlc19mb3VuZCwgc3lzdGVtdGFwX3Nlc3Npb24gJnMpCisgICAvLyBubyB3YXkgdG8gc2V0IHRoZSBkd2ZsX2NhbGxiYWNrLmRlYnVnaW5mb19wYXRoIGFuZCBhbHdheXMKKyAgIC8vIHBhc3NzIHRoZSBwbGFpbiBrZXJuZWxfcmVsZWFzZSBoZXJlLiAgU28gaW5zdGVhZCB3ZSBoYXZlIHRvCisgICAvLyBoYXJkLWNvZGUgdGhpcyBtYWdpYyBoZXJlLgorLSAgIHN0cmluZyBsaWJfcGF0aCA9ICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKKy0gICBpZiAocy5rZXJuZWxfYnVpbGRfdHJlZSA9PSBzdHJpbmcocy5zeXNyb290ICsgbGliX3BhdGgpIHx8CistICAgICAgIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoCistCSYmIHMuc3lzcm9vdCA9PSAiLyIpKQorLSAgICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfcmVsZWFzZTsKKy0gICBlbHNlCistICAgICAgZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9idWlsZF90cmVlOworKyAgc3RyaW5nIGxpYl9wYXRoID0gcy5zeXNyb290ICsgIi9saWIvbW9kdWxlcy8iICsgcy5rZXJuZWxfcmVsZWFzZSArICIvYnVpbGQiOworKyAgaWYgKHMua2VybmVsX2J1aWxkX3RyZWUgPT0gbGliX3BhdGgpCisrICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfcmVsZWFzZTsKKysgIGVsc2UKKysgICAgZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9idWlsZF90cmVlOworICAgb2ZmbGluZV9tb2R1bGVzX2ZvdW5kID0gMDsKKyAKKyAgIC8vIEZpcnN0IHRyeSB0byByZXBvcnQgZnVsbCBwYXRoIG1vZHVsZXMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWhhbmRsZS1zeW1ib2xpYy1saW5rcy13aXRoLWFic29sdXRlLW5hbWUtcmVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhM2QzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSAyMDQxMDg1ZDFhNzAwMjAxZGMwODg5OTFjYTgxMzZlNzkzNWJmNDJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitEYXRlOiBXZWQsIDIxIE1hciAyMDE4IDExOjM1OjI2IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c3Jvb3Q6IGhhbmRsZSBzeW1ib2xpYyBsaW5rcyB3aXRoIGFic29sdXRlIG5hbWUgcmVsYXRpdmUgdG8KKyBzeXNyb290CisKK0luIGNhc2Ugb2Ygc3ltYm9saWMgbGluayBmb3VuZCB1bmRlciBzeXNyb290IHBvaW50IHRvIGFic29sdXRlIHBhdGgsCitpbnN0ZWFkIG9mIHRyeWluZyB0byBsb29rIGZvciBzdWNoIGFic29sdXRlIHBhdGggaW4gaG9zdCBzeXN0ZW0sCithcHBseSBzeXNyb290IHByZWZpeCBmaXJzdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CistLS0KKyB1dGlsLmN4eCB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKQorCitJbmRleDogZ2l0L3V0aWwuY3h4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdXRpbC5jeHgKKysrKyBnaXQvdXRpbC5jeHgKK0BAIC00NDEsNiArNDQxLDY0IEBAIHNwbGl0X2xpbmVzKGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IG4pCisgICByZXR1cm4gbGluZXM7CisgfQorIAorK3N0YXRpYyBzdHJpbmcKKytmb2xsb3dfbGluayhjb25zdCBzdHJpbmcmIG5hbWUsIGNvbnN0IHN0cmluZyYgc3lzcm9vdCkKKyt7CisrICBjaGFyICpsaW5rbmFtZTsKKysgIHNzaXplX3QgcjsKKysgIHN0cmluZyByZXRwYXRoOworKyAgc3RydWN0IHN0YXQgc3Q7CisrCisrICBjb25zdCBjaGFyICpmID0gbmFtZS5jX3N0cigpOworKworKyAgbHN0YXQoZiwgJnN0KTsKKysKKysgIGxpbmtuYW1lID0gKGNoYXIgKikgbWFsbG9jKHN0LnN0X3NpemUgKyAxKTsKKysKKysgIGlmIChsaW5rbmFtZSkKKysgICAgeworKyAgICAgIHIgPSByZWFkbGluayhmLCBsaW5rbmFtZSwgc3Quc3Rfc2l6ZSArIDEpOworKyAgICAgIGxpbmtuYW1lW3N0LnN0X3NpemVdID0gJ1wwJzsKKysgICAgICAvKgorKyAgICAgICAqIElmIHdlIGhhdmUgbm9uLWVtcHR5IHN5c3Jvb3QgYW5kIHdlIGdvdCBsaW5rIHRoYXQKKysgICAgICAgKiBwb2ludHMgdG8gYWJzb2x1dGUgcGF0aCBuYW1lLCB3ZSBuZWVkIHRvIGxvb2sgYXQKKysgICAgICAgKiB0aGlzIHBhdGggcmVsYXRpdmUgdG8gc3lzcm9vdCBpdHNlbGYuIGFjY2VzcyBhbmQKKysgICAgICAgKiBzdGF0IHdpbGwgZm9sbG93IHN5bWJvbGljIGxpbmtzIGNvcnJlY3RseSBvbmx5IGluCisrICAgICAgICogY2FzZSB3aXRoIGVtcHR5IHN5c3Jvb3QuCisrICAgICAgICovCisrICAgICAgd2hpbGUgKHIgIT0gLTEgJiYgbGlua25hbWUgJiYgbGlua25hbWVbMF0gPT0gJy8nKQorKwl7CisrCSAgc3RyaW5nIGZuYW1lMSA9IHN5c3Jvb3QgKyBsaW5rbmFtZTsKKysJICBjb25zdCBjaGFyICpmMSA9IGZuYW1lMS5jX3N0cigpOworKwkgIGlmIChhY2Nlc3MoZjEsIFhfT0spID09IDAKKysJICAgICAgJiYgc3RhdChmMSwgJnN0KSA9PSAwCisrCSAgICAgICYmIFNfSVNSRUcoc3Quc3RfbW9kZSkpCisrCSAgICB7CisrCSAgICAgIHJldHBhdGggPSBmbmFtZTE7CisrCSAgICAgIGJyZWFrOworKwkgICAgfQorKwkgIGVsc2UgaWYgKGxzdGF0KGYxLCAmc3QpID09IDAKKysJCSAgICYmIFNfSVNMTksoc3Quc3RfbW9kZSkpCisrCSAgICB7CisrCSAgICAgIGZyZWUobGlua25hbWUpOworKwkgICAgICBsaW5rbmFtZSA9IChjaGFyICopIG1hbGxvYyhzdC5zdF9zaXplICsgMSk7CisrCSAgICAgIGlmIChsaW5rbmFtZSkKKysJCXsKKysJCSAgciA9IHJlYWRsaW5rKGYxLCBsaW5rbmFtZSwgc3Quc3Rfc2l6ZSArIDEpOworKwkJICBsaW5rbmFtZVtzdC5zdF9zaXplXSA9ICdcMCc7CisrCQl9CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQorKyAgICB9CisrICBmcmVlKGxpbmtuYW1lKTsKKysKKysgIHJldHVybiByZXRwYXRoOworK30KKysKKyAvLyBSZXNvbHZlIGFuIGV4ZWN1dGFibGUgbmFtZSB0byBhIGNhbm9uaWNhbCBmdWxsIHBhdGggbmFtZSwgd2l0aCB0aGUKKyAvLyBzYW1lIHBvbGljeSBhcyBleGVjdnAoKS4gIEEgcHJvZ3JhbSBuYW1lIG5vdCBjb250YWluaW5nIGEgc2xhc2gKKyAvLyB3aWxsIGJlIHNlYXJjaGVkIGFsb25nIHRoZSAkUEFUSC4KK0BAIC00NjUsNiArNTIzLDE0IEBAIHN0cmluZyBmaW5kX2V4ZWN1dGFibGUoY29uc3Qgc3RyaW5nJiBuYW0KKyAgIGlmIChuYW1lLmZpbmQoJy8nKSAhPSBzdHJpbmc6Om5wb3MpIC8vIHNsYXNoIGluIHRoZSBwYXRoIGFscmVhZHk/CisgICAgIHsKKyAgICAgICByZXRwYXRoID0gc3lzcm9vdCArIG5hbWU7CisrCisrICAgICAgY29uc3QgY2hhciAqZiA9IHJldHBhdGguY19zdHIoKTsKKysgICAgICBpZiAoc3lzcm9vdCAhPSAiIgorKwkgICYmIGxzdGF0KGYsICZzdCkgPT0gMAorKwkgICYmIFNfSVNMTksoc3Quc3RfbW9kZSkpCisrCXsKKysJICByZXRwYXRoID0gZm9sbG93X2xpbmsoZiwgc3lzcm9vdCk7CisrCX0KKyAgICAgfQorICAgZWxzZSAvLyBOb3BlLCBzZWFyY2ggJFBBVEguCisgICAgIHsKK0BAIC00OTMsNiArNTU5LDE2IEBAIHN0cmluZyBmaW5kX2V4ZWN1dGFibGUoY29uc3Qgc3RyaW5nJiBuYW0KKyAgICAgICAgICAgICAgICAgICByZXRwYXRoID0gZm5hbWU7CisgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgIGVsc2UgaWYgKHN5c3Jvb3QgIT0gIiIKKysgICAgICAgICAgICAgICAgICAgICAgICYmIGxzdGF0KGYsICZzdCkgPT0gMAorKyAgICAgICAgICAgICAgICAgICAgICAgJiYgU19JU0xOSyhzdC5zdF9tb2RlKSkKKysJCXsKKysJCSAgcmV0cGF0aCA9IGZvbGxvd19saW5rKGYsIHN5c3Jvb3QpOworKwkJICBpZiAocmV0cGF0aCAhPSAiIikKKysJCSAgICB7CisrCQkgICAgICBicmVhazsKKysJCSAgICB9CisrCQl9CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL3N5c3RlbV9tYXBfbG9jYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL3N5c3RlbV9tYXBfbG9jYXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxM2FmNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9zeXN0ZW1fbWFwX2xvY2F0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotc3lzdGVtdGFwOiBDcm9zcyBjb21waWxhdGlvbiBmaXgKLQotVGhpcyBpcyBhIGNyb3NzIGNvbXBpbGF0aW9uIGZpeC4gSXQgYWxsb3dzIHN5c3RlbXRhcCB0byBmaW5kCi10aGUga2VybmVsIG1hcCBmaWxlIGluIHRoZSByaWdodCBwbGFjZSwgaS5lLiBpbiB0aGUga2VybmVsIGJ1aWxkIHRyZWUuCi1XaXRob3V0IHRoaXMgZml4IGl0IHRha2VzIGEgbWFwIGZpbGUgZnJvbSB0aGUgYnVpbGQgaG9zdCwgaWYgYXZhaWxhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWlraGFpbCBEdXJuZXYgPG1pa2hhaWxfZHVybmV2QG1lbnRvci5jb20+Ci0KLUluZGV4OiBnaXQvc2Vzc2lvbi5jeHgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zZXNzaW9uLmN4eAotKysrIGdpdC9zZXNzaW9uLmN4eAotQEAgLTE2MzQsNyArMTYzNCw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9rZXJuZWxfZnVuY3Rpb24KLSAJY2xvZyA8PCBfRigiS2VybmVsIHN5bWJvbCB0YWJsZSAlcyB1bmF2YWlsYWJsZSwgKCVzKSIsCi0gCQkgICBzeXN0ZW1fbWFwX3BhdGguY19zdHIoKSwgc3RyZXJyb3IoZXJybm8pKSA8PCBlbmRsOwotIAotLSAgICAgIHN5c3RlbV9tYXBfcGF0aCA9ICIvYm9vdC9TeXN0ZW0ubWFwLSIgKyBrZXJuZWxfcmVsZWFzZTsKLSsgICAgICBzeXN0ZW1fbWFwX3BhdGggPSBrZXJuZWxfYnVpbGRfdHJlZSArICIvU3lzdGVtLm1hcC0iICsga2VybmVsX3JlbGVhc2U7Ci0gICAgICAgc3lzdGVtX21hcC5jbGVhcigpOwotICAgICAgIHN5c3RlbV9tYXAub3BlbihzeXN0ZW1fbWFwX3BhdGguY19zdHIoKSwgaWZzdHJlYW06OmluKTsKLSAgICAgICBpZiAoISBzeXN0ZW1fbWFwLmlzX29wZW4oKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuYmIKaW5kZXggNDc1YjIwNy4uYjI4MGY1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuYmIKQEAgLTMsOSArMyw3IEBACiAKIHJlcXVpcmUgc3lzdGVtdGFwX2dpdC5pbmMKIAotREVQRU5EUyA9ICJib29zdCBlbGZ1dGlscyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSBiYXNoIHBlcmwiCitERVBFTkRTID0gImVsZnV0aWxzIgogCiBFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJlbGY9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IC0td2l0aG91dC1ycG0gXAogICAgICAgICAgICAgLS13aXRob3V0LW5zcyAtLXdpdGhvdXQtYXZhaGkgLS13aXRob3V0LWR5bmluc3QgXApAQCAtMTgsNyArMTYsOCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIiR7U1RBUF9ET0NTfSAiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJzcWxpdGUgbW9uaXRvciBweXRob24zLXByb2JlcyIKK1BBQ0tBR0VDT05GSUcgPz89ICJ0cmFuc2xhdG9yIHNxbGl0ZSBtb25pdG9yIHB5dGhvbjMtcHJvYmVzIgorUEFDS0FHRUNPTkZJR1t0cmFuc2xhdG9yXSA9ICItLWVuYWJsZS10cmFuc2xhdG9yLC0tZGlzYWJsZS10cmFuc2xhdG9yLGJvb3N0LHB5dGhvbjMtY29yZSBiYXNoIHBlcmwiCiBQQUNLQUdFQ09ORklHW2xpYnZpcnRdID0gIi0tZW5hYmxlLWxpYnZpcnQsLS1kaXNhYmxlLWxpYnZpcnQsbGlidmlydCIKIFBBQ0tBR0VDT05GSUdbc3FsaXRlXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzIgogUEFDS0FHRUNPTkZJR1ttb25pdG9yXSA9ICItLWVuYWJsZS1tb25pdG9yLC0tZGlzYWJsZS1tb25pdG9yLG5jdXJzZXMganNvbi1jIgpAQCAtMjYsNCArMjUsMTIgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlCiAKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgIGlmIFsgISAtZiAke0R9JHtiaW5kaXJ9L3N0YXAgXTsgdGhlbgorICAgICAgIyB0cmFuc2xhdG9yIGRpc2FibGVkIGNhc2UsIG5lZWQgdG8gbGVhdmUgb25seSBtaW5pbWFsIHJ1bnRpbWUKKyAgICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS8ke1BOfQorICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vJHtQTn0vc3RhcC1lbnYKKyAgIGZpCit9CisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCmluZGV4IDNkYzY4OGEuLmUyZjUyMDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKQEAgLTEsMTAgKzEsOSBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotU1JDUkVWID0gIjQ1ZDBlN2EwOWExNWEyMTA3OGQwZWJmMmRiNTE3NWVkOWU4NzAxNGUiCi1QViA9ICIzLjEiCitTUkNSRVYgPSAiNDA1MWM3MGM5MzE4YzgzNzk4MTM4NGNiYjIzZjNlOWViMWJkMDg5MiIKK1BWID0gIjMuMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvc3lzdGVtdGFwLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXN0ZW1fbWFwX2xvY2F0aW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnZpcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8veDMyX2FiaV90aW1lLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL21vbml0b3Itb3B0aW9uLnBhdGNoIFwKQEAgLTEzLDEwICsxMiwyMSBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLXB5dGhvbi1tb2R1bGVzLXRvLWNvcnJlY3QtbGlicmFyeS1kaXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZHJ1bi1yZW1vdmUtcXVvdGVzLWFyb3VuZC1JLWluY2x1ZGUtbGluZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1QUjIyNTUxLWJ5LXVwZGF0aW5nLXRoZS11c2Utb2YtdGltZXJzLWZvci10aGUtNC4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utc3lzcm9vdC13aGVuLWxvb2tpbmctZm9yLXRoZS1TeXN0ZW0ubWFwLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWxheS1hZGRpbmctc3lzcm9vdC1wYXRoLXRvLW1vZHVsZS1uYW1lLWluLWNhc2Utb2YtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkZWQtYS1jb3VwbGUtb2Ytc21hbGwtc3lzcm9vdC1maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLV9zdHBfdW1vZHVsZV9yZWxvY2F0ZS1uZWVkcy10YXJnZXQtZmlsZS1wYXRoLW5vdC1ob3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNyb290LWhhbmRsZS1zeW1ib2xpYy1saW5rcy13aXRoLWFic29sdXRlLW5hbWUtcmVsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaCBcCiAgICAgICAgICAgICIKIAotIyBzeXN0ZW10YXAgZG9lc24ndCBzdXBwb3J0IG1pcHMKLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm18YWFyY2g2NCkuKi1saW51eCcKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm18YWFyY2g2NHxtaWNyb2JsYXplZWx8bWlwcykuKi1saW51eCcKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYwppbmRleCAwMDJlZTY1Li4wYTE3ODljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYwpAQCAtMSwxMSArMSwxMSBAQAotU1JDUkVWID0gIjAyMTcxMGUxMDczZmUyMDMzNDFiNDI3Y2QxYTRiYWM1NzdlYzg5OWMiCi1QViA9ICIyLjYuMSIKK1NSQ1JFViA9ICI3ZDAxNDdiYmJhM2VkMWQ1ZWY2ZWVhNGVlYzNmMGFkNGM5OGYwMmI1IgorUFYgPSAiMi43IgogCiBpbmhlcml0IHBrZ2NvbmZpZwogCiBGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS90cmFjZS1jbWQ6IgogCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yb3N0ZWR0L3RyYWNlLWNtZC5naXQ7YnJhbmNoPXRyYWNlLWNtZC1zdGFibGUtdjIuNiBcCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yb3N0ZWR0L3RyYWNlLWNtZC5naXQgXAogICAgICAgICAgICBmaWxlOi8vYmxrdHJhY2UtYXBpLWNvbXBhdGliaWxpdHkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWxpbWl0cy5oLXNvLXRoYXQtUEFUSF9NQVgtaXMtZGVmaW5lZC1hbi1pc3N1LnBhdGNoIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvQ2hlY2staWYtd29yZGV4cC1mdW5jdGlvbi1pcy1zdXBwb3J0ZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NWU0OGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvQ2hlY2staWYtd29yZGV4cC1mdW5jdGlvbi1pcy1zdXBwb3J0ZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDM0MDhmOGU3ODc3NmIxMmYxMzFlNDMzNzQ5NzIxNjAyZjg3ZTBhNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSG9uZyBILiBQaGFtIiA8aG9uZy5waGFtQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDI5IEF1ZyAyMDE0IDE3OjEzOjU1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGlmIHdvcmRleHAgZnVuY3Rpb24gaXMgc3VwcG9ydGVkCi0KLWVnbGliYyBjb3VsZCBiZSBjb25maWd1cmVkIHRvIGJ1aWxkIHdpdGhvdXQgd29yZGV4cCwgc28gaXQgaXMgbm90IGVub3VnaAotdG8gY2hlY2sgaWYgd29yZGV4cC5oIGV4aXN0cyAodGhlIGhlYWRlciBmaWxlIGNvdWxkIGJlIGluc3RhbGxlZCwgYnV0IGl0J3MKLXBvc3NpYmxlIHRoYXQgdGhlIHdvcmRleHAoKSBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkKS4gIEFuIGFkZGl0aW9uYWwKLWNoZWNrIGlmIHdvcmRleHAoKSBpcyBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbSBDIGxpYnJhcnkgaXMgbmVlZGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmcgSC4gUGhhbSA8aG9uZy5waGFtQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgfCA1ICsrKystCi0gc3JjL3VzZXJmaWxlLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk0OTBkMzkuLmIwOGE5MGEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI5NSw3ICsyOTUsMTAgQEAgZmkKLSBBQ19TVUJTVChBTFNBX0RFUExJQlMpCi0gCi0gZG5sIENoZWNrIGZvciBoZWFkZXJzCi0tQUNfQ0hFQ0tfSEVBREVSUyhbd29yZGV4cC5oIGVuZGlhbi5oIHN5cy9lbmRpYW4uaCBzeXMvc2htLmhdKQotK0FDX0NIRUNLX0hFQURFUlMoW3dvcmRleHAuaCBlbmRpYW4uaCBzeXMvZW5kaWFuLmggc3lzL3NobS5oXSwKLSsgIGRubCBNYWtlIHN1cmUgd29yZGV4cCBpcyBzdXBwb3J0ZWQgYnkgdGhlIEMgbGlicmFyeQotKyAgQUNfQ0hFQ0tfRlVOQ1MoW3dvcmRleHBdKQotKykKLSAKLSBkbmwgQ2hlY2sgZm9yIHJlc21nciBzdXBwb3J0Li4uCi0gQUNfTVNHX0NIRUNLSU5HKGZvciByZXNtZ3Igc3VwcG9ydCkKLWRpZmYgLS1naXQgYS9zcmMvdXNlcmZpbGUuYyBiL3NyYy91c2VyZmlsZS5jCi1pbmRleCA3Mjc3OWRhLi5lOWQxM2U2IDEwMDY0NAotLS0tIGEvc3JjL3VzZXJmaWxlLmMKLSsrKyBiL3NyYy91c2VyZmlsZS5jCi1AQCAtMzIsNyArMzIsNyBAQAotICAqIHN0b3JlcyB0aGUgZmlyc3QgbWF0Y2hpbmUgb25lLiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBzdHJkdXAnZWQuCi0gICovCi0gCi0tI2lmZGVmIEhBVkVfV09SREVYUF9ICi0rI2lmIChkZWZpbmVkKEhBVkVfV09SREVYUF9IKSAmJiBkZWZpbmVkKEhBVkVfV09SREVYUCkpCi0gI2luY2x1ZGUgPHdvcmRleHAuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gaW50IHNuZF91c2VyX2ZpbGUoY29uc3QgY2hhciAqZmlsZSwgY2hhciAqKnJlc3VsdCkKLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q0NDU4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi1Gcm9tIGMyYzEzY2YwYzQ2OTg2MmNkMzliMmE2OTg2MjAwMjMzMWFiN2M4Y2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogVHVlLCA5IEZlYiAyMDE2IDE0OjAxOjE4IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2b2lkIGluY2x1ZGluZyA8c3lzL3BvbGwuaD4gZGlyZWN0bHkKLQotRml4ZXMgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiBidWlsZGluZyB3aXRoIG11c2wgbGliYy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0tLS0KLSBhc2VydmVyL2FzZXJ2ZXIuYyAgICAgICAgIHwgMiArLQotIGluY2x1ZGUvYXNvdW5kbGliLWhlYWQuaCAgfCAyICstCi0gaW5jbHVkZS9hc291bmRsaWIuaCAgICAgICB8IDIgKy0KLSBpbmNsdWRlL2xvY2FsLmggICAgICAgICAgIHwgMiArLQotIHNyYy9jb250cm9sL2NvbnRyb2wuYyAgICAgfCAyICstCi0gc3JjL2NvbnRyb2wvY29udHJvbF9zaG0uYyB8IDIgKy0KLSBzcmMvcGNtL3BjbV9kaXJlY3QuYyAgICAgIHwgMiArLQotIHNyYy9wY20vcGNtX21tYXAuYyAgICAgICAgfCAyICstCi0gc3JjL3BjbS9wY21fc2hhcmUuYyAgICAgICB8IDIgKy0KLSBzcmMvcGNtL3BjbV9zaG0uYyAgICAgICAgIHwgMiArLQotIHNyYy9zZXEvc2VxLmMgICAgICAgICAgICAgfCAyICstCi0gc3JjL3NobWFyZWEuYyAgICAgICAgICAgICB8IDIgKy0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FzZXJ2ZXIvYXNlcnZlci5jIGIvYXNlcnZlci9hc2VydmVyLmMKLWluZGV4IGFjMjA3MDYuLjQ2ZjczMWEgMTAwNjQ0Ci0tLS0gYS9hc2VydmVyL2FzZXJ2ZXIuYwotKysrIGIvYXNlcnZlci9hc2VydmVyLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gCi0gI2luY2x1ZGUgPHN5cy9zaG0uaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy91bi5oPgotICNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc291bmRsaWItaGVhZC5oIGIvaW5jbHVkZS9hc291bmRsaWItaGVhZC5oCi1pbmRleCAxZWM2MTFlLi4yMWUzMmM2IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9hc291bmRsaWItaGVhZC5oCi0rKysgYi9pbmNsdWRlL2Fzb3VuZGxpYi1oZWFkLmgKLUBAIC0zNSw2ICszNSw2IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2Fzb3VuZGxpYi5oIGIvaW5jbHVkZS9hc291bmRsaWIuaAotaW5kZXggM2MyNzY2ZS4uYTU0NjE5NCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYXNvdW5kbGliLmgKLSsrKyBiL2luY2x1ZGUvYXNvdW5kbGliLmgKLUBAIC0zNSw3ICszNSw3IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9sb2NhbC5oIGIvaW5jbHVkZS9sb2NhbC5oCi1pbmRleCAzMTdmMmUzLi42YTQzYTQ3IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9sb2NhbC5oCi0rKysgYi9pbmNsdWRlL2xvY2FsLmgKLUBAIC00Nyw3ICs0Nyw3IEBACi0gI2Vycm9yIEhlYWRlciBkZWZpbmluZyBlbmRpYW5uZXNzIG5vdCBkZWZpbmVkCi0gI2VuZGlmCi0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpZiBkZWZpbmVkKF9fbGludXhfXykKLWRpZmYgLS1naXQgYS9zcmMvY29udHJvbC9jb250cm9sLmMgYi9zcmMvY29udHJvbC9jb250cm9sLmMKLWluZGV4IDZjMDBiOGUuLmZkMGMzMDMgMTAwNjQ0Ci0tLS0gYS9zcmMvY29udHJvbC9jb250cm9sLmMKLSsrKyBiL3NyYy9jb250cm9sL2NvbnRyb2wuYwotQEAgLTkwLDcgKzkwLDcgQEAgSS9PIG9wZXJhdGlvbnMuCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzaWduYWwuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gI2luY2x1ZGUgImNvbnRyb2xfbG9jYWwuaCIKLSAKLWRpZmYgLS1naXQgYS9zcmMvY29udHJvbC9jb250cm9sX3NobS5jIGIvc3JjL2NvbnRyb2wvY29udHJvbF9zaG0uYwotaW5kZXggYmQwN2Q0YS4uOWEyZTI2OCAxMDA2NDQKLS0tLSBhL3NyYy9jb250cm9sL2NvbnRyb2xfc2htLmMKLSsrKyBiL3NyYy9jb250cm9sL2NvbnRyb2xfc2htLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zaG0uaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy91bi5oPgotICNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3BjbS9wY21fZGlyZWN0LmMgYi9zcmMvcGNtL3BjbV9kaXJlY3QuYwotaW5kZXggYzM5MjVjYy4uMThmMWRkNSAxMDA2NDQKLS0tLSBhL3NyYy9wY20vcGNtX2RpcmVjdC5jCi0rKysgYi9zcmMvcGNtL3BjbV9kaXJlY3QuYwotQEAgLTMwLDcgKzMwLDcgQEAKLSAjaW5jbHVkZSA8Z3JwLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zaG0uaD4KLSAjaW5jbHVkZSA8c3lzL3NlbS5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX21tYXAuYyBiL3NyYy9wY20vcGNtX21tYXAuYwotaW5kZXggMTk0ODI4OS4uNGNmMjIwYSAxMDA2NDQKLS0tLSBhL3NyYy9wY20vcGNtX21tYXAuYwotKysrIGIvc3JjL3BjbS9wY21fbW1hcC5jCi1AQCAtMjIsNyArMjIsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxtYWxsb2MuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaWZkZWYgSEFWRV9TWVNfU0hNX0gKLSAjaW5jbHVkZSA8c3lzL3NobS5oPgotZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX3NoYXJlLmMgYi9zcmMvcGNtL3BjbV9zaGFyZS5jCi1pbmRleCA1ZDhhYWYyLi4yMWE1N2ZjIDEwMDY0NAotLS0tIGEvc3JjL3BjbS9wY21fc2hhcmUuYwotKysrIGIvc3JjL3BjbS9wY21fc2hhcmUuYwotQEAgLTM0LDcgKzM0LDcgQEAKLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSAjaW5jbHVkZSAicGNtX2xvY2FsLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3BjbS9wY21fc2htLmMgYi9zcmMvcGNtL3BjbV9zaG0uYwotaW5kZXggYTgxNWFjNi4uNGVlOTU4YyAxMDA2NDQKLS0tLSBhL3NyYy9wY20vcGNtX3NobS5jCi0rKysgYi9zcmMvcGNtL3BjbV9zaG0uYwotQEAgLTM2LDcgKzM2LDcgQEAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zaG0uaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy91bi5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3NlcS9zZXEuYyBiL3NyYy9zZXEvc2VxLmMKLWluZGV4IDkyNzk4MzAuLmQyMDI3Y2IgMTAwNjQ0Ci0tLS0gYS9zcmMvc2VxL3NlcS5jCi0rKysgYi9zcmMvc2VxL3NlcS5jCi1AQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgZXZlbnRfZmlsdGVyKHNuZF9zZXFfdCAqc2VxLCBzbmRfc2VxX2V2ZW50X3QgKmV2KQotIAotICovCi0gCi0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSAic2VxX2xvY2FsLmgiCi0gCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLWRpZmYgLS1naXQgYS9zcmMvc2htYXJlYS5jIGIvc3JjL3NobWFyZWEuYwotaW5kZXggOTg0M2FhOC4uZWFhNzFmMCAxMDA2NDQKLS0tLSBhL3NyYy9zaG1hcmVhLmMKLSsrKyBiL3NyYy9zaG1hcmVhLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPG1hbGxvYy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgImxpc3QuaCIKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZGVhZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MTFmZjg5YThhN2E0YTY5MGE1Yzc4ZWZmZTgxNTk1NDUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvbGliLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vQ2hlY2staWYtd29yZGV4cC1mdW5jdGlvbi1pcy1zdXBwb3J0ZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjI5ZmEzZTY5MTIyZDNjZjNlOGYwZTAxYTBjYjFkMTgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxYmI4NzBjMTRkMWM3YzI2OTIxMzI4NWVlZWQ4NzRmYTNkMjgxMTIwNzdkYjA2MWEzYWY4MDEwZDA4ODViNzYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1yZXF1aXJlIGFsc2EtZnB1LmluYwotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfYWxzYV9mcHVfc2V0dGluZyhiYiwgZCl9ICIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcHl0aG9uIgotCi1QQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgbGliYXNvdW5kIGFsc2EtY29uZiBhbHNhLWRvYyIKLUZJTEVTX2xpYmFzb3VuZCA9ICIke2xpYmRpcn0vbGliYXNvdW5kLnNvLioiCi1GSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKLUZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgotCi1SREVQRU5EU19saWJhc291bmQgPSAiYWxzYS1jb25mIgotCi0jIGFsc2EtbGliIGdldHMgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbHNhLWxpYi1kZXYgZGVwZW5kZW5jaWVzLCBidXQgdGhlCi0jIGFsc2EtbGliIHBhY2thZ2UgZG9lc24ndCBleGlzdC4gbGliYXNvdW5kIGlzIHRoZSByZWFsIGxpYnJhcnkgcGFja2FnZS4KLVJERVBFTkRTXyR7UE59LWRldiA9ICJsaWJhc291bmQiCi0KLSMgdXBncmFkZSBwYXRoCi1SUFJPVklERVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotUlJFUExBQ0VTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJDT05GTElDVFNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotCi1SUFJPVklERVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgotUlJFUExBQ0VTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJDT05GTElDVFNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWJmMTA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjUuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI2O21kNT0xMWZmODlhOGE3YTRhNjkwYTVjNzhlZmZlODE1OTU0NSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMmI0NjVjM2E1MjY1ZDhhNTdmM2ZmMzljNmM0ZmMyOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNGY2OGFkM2M2ZGEzNmIwYjUyNDFhYzNjNzk4YTdhNzFlMGU5N2Q1MWY5NzJlOWY3MjNiM2YyMGE5NjUwYWU2IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworcmVxdWlyZSBhbHNhLWZwdS5pbmMKK0VYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2Fsc2FfZnB1X3NldHRpbmcoYmIsIGQpfSAiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXB5dGhvbiIKKworUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGxpYmFzb3VuZCBhbHNhLWNvbmYgYWxzYS1kb2MiCitGSUxFU19saWJhc291bmQgPSAiJHtsaWJkaXJ9L2xpYmFzb3VuZC5zby4qIgorRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKKworUkRFUEVORFNfbGliYXNvdW5kID0gImFsc2EtY29uZiIKKworIyBhbHNhLWxpYiBnZXRzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxzYS1saWItZGV2IGRlcGVuZGVuY2llcywgYnV0IHRoZQorIyBhbHNhLWxpYiBwYWNrYWdlIGRvZXNuJ3QgZXhpc3QuIGxpYmFzb3VuZCBpcyB0aGUgcmVhbCBsaWJyYXJ5IHBhY2thZ2UuCitSREVQRU5EU18ke1BOfS1kZXYgPSAibGliYXNvdW5kIgorCisjIHVwZ3JhZGUgcGF0aAorUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKKworUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKK1JSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdmNzliNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIFBsdWdpbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi0jIFRoZSBwcmltYXJ5IGxpY2Vuc2Ugb2YgYWxzYS1wbHVnaW5zIGlzIExHUEx2Mi4xLgotIwotIyBtNC9hdHRyaWJ1dGVzLm00IGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKy4gbTQvYXR0cmlidXRlcy5tNCBpcyBwYXJ0IG9mIHRoZQotIyBidWlsZCBzeXN0ZW0sIGFuZCBkb2Vzbid0IGFmZmVjdCB0aGUgbGljZW5zaW5nIG9mIHRoZSBidWlsZCByZXN1bHQuCi0jCi0jIFRoZSBzYW1wbGVyYXRlIHBsdWdpbiBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisgdG8gYmUgY29uc2lzdGVudAotIyB3aXRoIHRoZSBsaWJzYW1wbGVyYXRlIGxpY2Vuc2UuIEhvd2V2ZXIsIGlmIHRoZSBsaWNlbnNlZSBoYXMgYSBjb21tZXJjaWFsCi0jIGxpY2Vuc2UgZm9yIGxpYnNhbXBsZXJhdGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbiBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKLSMgb2YgTEdQTHYyLjEgbGlrZSB0aGUgcmVzdCBvZiB0aGUgcGx1Z2lucy4KLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKLSAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgIGZpbGU6Ly9tNC9hdHRyaWJ1dGVzLm00O2VuZGxpbmU9MzM7bWQ1PWIyNTk1OGRhNDRjMDIyMzFlMzY0MWYxYmNjZWY1M2ViIFwKLSAgICAgICAgZmlsZTovL3JhdGUvcmF0ZV9zYW1wbGVyYXRlLmM7ZW5kbGluZT0zNTttZDU9ZmQ3N2JjZTg1ZjRhMzM4YzBlOGFiMTg0MzBiNjlmYWUgXAotIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9wbHVnaW5zLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiZGU1MTEzMGE3NDQ0Yjc5YjJkZDNjMjVlMjg0MjA3NTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTMwZDFjM2JkYWViMDU4ZjJhMDM2MDdhMzNiOWUxNmVlNTM2OWJmZDMwYTk2YmMwOWJkMmM2OWI0ZGRkMWE4YSIKLQotREVQRU5EUyArPSAiYWxzYS1saWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICAgICBzYW1wbGVyYXRlIFwKLSAgICAgICAgc3BlZXhkc3AgXAotICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1ttYWVtby1wbHVnaW5dID0gIi0tZW5hYmxlLW1hZW1vLXBsdWdpbiwtLWRpc2FibGUtbWFlbW8tcGx1Z2luIgotUEFDS0FHRUNPTkZJR1ttYWVtby1yZXNvdXJjZS1tYW5hZ2VyXSA9ICItLWVuYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLC0tZGlzYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLGRidXMiCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbc2FtcGxlcmF0ZV0gPSAiLS1lbmFibGUtc2FtcGxlcmF0ZSwtLWRpc2FibGUtc2FtcGxlcmF0ZSxsaWJzYW1wbGVyYXRlMCIKLVBBQ0tBR0VDT05GSUdbc3BlZXhkc3BdID0gIi0td2l0aC1zcGVleD1saWIsLS13aXRoLXNwZWV4PW5vLHNwZWV4ZHNwIgotCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdhbHNhLXBsdWdpbnMtcHVsc2VhdWRpby1jb25mJywgJycsIGQpfSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICJebGliYXNvdW5kLW1vZHVsZS0uKiIKLQotIyBUaGUgYWxzYS1wbHVnaW5zIHBhY2thZ2UgZG9lc24ndCBpdHNlbGYgY29udGFpbiBhbnl0aGluZywgaXQganVzdCBkZXBlbmRzIG9uCi0jIGFsbCBidWlsdCBwbHVnaW5zLgotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gJHtEfSR7bGliZGlyfS9hbHNhLWxpYi8qLmxhCi0KLQkjIFdlIHVzZSB0aGUgZXhhbXBsZSBhcyBpcywgc28ganVzdCBkcm9wIHRoZSAuZXhhbXBsZSBzdWZmaXguCi0JaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgotCQltdiAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mLmV4YW1wbGUgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgotCWZpCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewotICAgIHBsdWdpbmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vYWxzYS1saWIvJykKLSAgICBwYWNrYWdlcyA9ICIgIi5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbmRpciwgJ15saWJhc291bmRfbW9kdWxlXyguKilcLnNvJCcsICdsaWJhc291bmQtbW9kdWxlLSVzJywgJ0Fsc2EgcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpKQotICAgIGQuc2V0VmFyKCJSREVQRU5EU19hbHNhLXBsdWdpbnMiLCBwYWNrYWdlcykKLX0KLQotIyBUaGUgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzb21lIHN5bWxpbmtzLiBGb3IgZXhhbXBsZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luCi0jIGNyZWF0ZXMgdGhlc2UgbGlua3MgdG8gdGhlIG1haW4gcGx1Z2luIGZpbGU6Ci0jCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfYmVzdC5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2xpbmVhci5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX21lZGl1bS5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX29yZGVyLnNvCi0jCi0jIFRoZSBvdGhlciByYXRlIHBsdWdpbnMgY3JlYXRlIHNpbWlsYXIgbGlua3MuIFdlIGhhdmUgdG8gYWRkIHRoZSBsaW5rcyB0bwotIyBGSUxFUyBtYW51YWxseSwgYmVjYXVzZSBkb19zcGxpdF9wYWNrYWdlcygpIHNraXBzIHRoZSBsaW5rcyAod2hpY2ggaXMgZ29vZCwKLSMgYmVjYXVzZSB3ZSB3b3VsZG4ndCB3YW50IGRvX3NwbGl0X3BhY2thZ2VzKCkgdG8gY3JlYXRlIHNlcGFyYXRlIHBhY2thZ2VzIGZvcgotIyB0aGUgc3ltbGlua3MpLgotIwotIyBUaGUgc3ltbGlua3MgY2F1c2UgUUEgZXJyb3JzLCBiZWNhdXNlIHVzdWFsbHkgaXQncyBhIGJ1ZyBpZiBhIG5vbgotIyAtZGV2Ly1kYmcvLW5hdGl2ZXNkayBwYWNrYWdlIGNvbnRhaW5zIGxpbmtzIHRvIC5zbyBmaWxlcywgYnV0IGluIHRoaXMgY2FzZQotIyB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHNvIHdlIGRpc2FibGUgdGhlIFFBIGNoZWNrcy4KLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdmNyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfbGF2Y3JhdGVfKi5zbyIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zYW1wbGVyYXRlXyouc28iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zcGVleHJhdGVfKi5zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdmNyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlID0gImRldi1zbyIKLQotIyA1MC1wdWxzZWF1ZGlvLmNvbmYgZGVmaW5lcyBhIGRldmljZSBuYW1lZCAicHVsc2UiIHRoYXQgYXBwbGljYXRpb25zIGNhbiB1c2UKLSMgaWYgdGhleSBleHBsaWNpdGx5IHdhbnQgdG8gdXNlIHRoZSBQdWxzZUF1ZGlvIHBsdWdpbi4KLSMgOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgY29uZmlndXJlcyB0aGUgImRlZmF1bHQiIGRldmljZSB0byB1c2UgdGhlCi0jIFB1bHNlQXVkaW8gcGx1Z2luLgotRklMRVNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAotIgotCi1SREVQRU5EU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jb25mLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jdGwtcHVsc2UgXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLXBjbS1wdWxzZSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJkMGFjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNS5iYgpAQCAtMCwwICsxLDEwMyBAQAorU1VNTUFSWSA9ICJBTFNBIFBsdWdpbnMiCitIT01FUEFHRSA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCisjIFRoZSBwcmltYXJ5IGxpY2Vuc2Ugb2YgYWxzYS1wbHVnaW5zIGlzIExHUEx2Mi4xLgorIworIyBtNC9hdHRyaWJ1dGVzLm00IGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKy4gbTQvYXR0cmlidXRlcy5tNCBpcyBwYXJ0IG9mIHRoZQorIyBidWlsZCBzeXN0ZW0sIGFuZCBkb2Vzbid0IGFmZmVjdCB0aGUgbGljZW5zaW5nIG9mIHRoZSBidWlsZCByZXN1bHQuCisjCisjIFRoZSBzYW1wbGVyYXRlIHBsdWdpbiBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisgdG8gYmUgY29uc2lzdGVudAorIyB3aXRoIHRoZSBsaWJzYW1wbGVyYXRlIGxpY2Vuc2UuIEhvd2V2ZXIsIGlmIHRoZSBsaWNlbnNlZSBoYXMgYSBjb21tZXJjaWFsCisjIGxpY2Vuc2UgZm9yIGxpYnNhbXBsZXJhdGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbiBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyMgb2YgTEdQTHYyLjEgbGlrZSB0aGUgcmVzdCBvZiB0aGUgcGx1Z2lucy4KK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKKyAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgIGZpbGU6Ly9tNC9hdHRyaWJ1dGVzLm00O2VuZGxpbmU9MzM7bWQ1PWIyNTk1OGRhNDRjMDIyMzFlMzY0MWYxYmNjZWY1M2ViIFwKKyAgICAgICAgZmlsZTovL3JhdGUvcmF0ZV9zYW1wbGVyYXRlLmM7ZW5kbGluZT0zNTttZDU9ZmQ3N2JjZTg1ZjRhMzM4YzBlOGFiMTg0MzBiNjlmYWUgXAorIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9wbHVnaW5zLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiZjg5OGIwZTZlOGFjZjNmNmY4MmJjMmEwZjBjODRhOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzk3ZGE1ZjhmNTMzNzlmYmVhMjg4MTdiYzQ2NmRlMTZhZmZkMmMwNzg0OWU4NGYxYWY4ZDVlMjJmN2JiN2YxYyIKKworREVQRU5EUyArPSAiYWxzYS1saWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICAgICBzYW1wbGVyYXRlIFwKKyAgICAgICAgc3BlZXhkc3AgXAorICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyxsaWJhdiIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1ttYWVtby1wbHVnaW5dID0gIi0tZW5hYmxlLW1hZW1vLXBsdWdpbiwtLWRpc2FibGUtbWFlbW8tcGx1Z2luIgorUEFDS0FHRUNPTkZJR1ttYWVtby1yZXNvdXJjZS1tYW5hZ2VyXSA9ICItLWVuYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLC0tZGlzYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLGRidXMiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbc2FtcGxlcmF0ZV0gPSAiLS1lbmFibGUtc2FtcGxlcmF0ZSwtLWRpc2FibGUtc2FtcGxlcmF0ZSxsaWJzYW1wbGVyYXRlMCIKK1BBQ0tBR0VDT05GSUdbc3BlZXhkc3BdID0gIi0td2l0aC1zcGVleD1saWIsLS13aXRoLXNwZWV4PW5vLHNwZWV4ZHNwIgorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdhbHNhLXBsdWdpbnMtcHVsc2VhdWRpby1jb25mJywgJycsIGQpfSIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICJebGliYXNvdW5kLW1vZHVsZS0uKiIKKworIyBUaGUgYWxzYS1wbHVnaW5zIHBhY2thZ2UgZG9lc24ndCBpdHNlbGYgY29udGFpbiBhbnl0aGluZywgaXQganVzdCBkZXBlbmRzIG9uCisjIGFsbCBidWlsdCBwbHVnaW5zLgorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJcm0gJHtEfSR7bGliZGlyfS9hbHNhLWxpYi8qLmxhCisKKwkjIFdlIHVzZSB0aGUgZXhhbXBsZSBhcyBpcywgc28ganVzdCBkcm9wIHRoZSAuZXhhbXBsZSBzdWZmaXguCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgorCQltdiAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mLmV4YW1wbGUgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgorCWZpCit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIHBsdWdpbmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vYWxzYS1saWIvJykKKyAgICBwYWNrYWdlcyA9ICIgIi5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbmRpciwgJ15saWJhc291bmRfbW9kdWxlXyguKilcLnNvJCcsICdsaWJhc291bmQtbW9kdWxlLSVzJywgJ0Fsc2EgcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpKQorICAgIGQuc2V0VmFyKCJSREVQRU5EU19hbHNhLXBsdWdpbnMiLCBwYWNrYWdlcykKK30KKworIyBUaGUgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzb21lIHN5bWxpbmtzLiBGb3IgZXhhbXBsZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luCisjIGNyZWF0ZXMgdGhlc2UgbGlua3MgdG8gdGhlIG1haW4gcGx1Z2luIGZpbGU6CisjCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfYmVzdC5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2xpbmVhci5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX21lZGl1bS5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX29yZGVyLnNvCisjCisjIFRoZSBvdGhlciByYXRlIHBsdWdpbnMgY3JlYXRlIHNpbWlsYXIgbGlua3MuIFdlIGhhdmUgdG8gYWRkIHRoZSBsaW5rcyB0bworIyBGSUxFUyBtYW51YWxseSwgYmVjYXVzZSBkb19zcGxpdF9wYWNrYWdlcygpIHNraXBzIHRoZSBsaW5rcyAod2hpY2ggaXMgZ29vZCwKKyMgYmVjYXVzZSB3ZSB3b3VsZG4ndCB3YW50IGRvX3NwbGl0X3BhY2thZ2VzKCkgdG8gY3JlYXRlIHNlcGFyYXRlIHBhY2thZ2VzIGZvcgorIyB0aGUgc3ltbGlua3MpLgorIworIyBUaGUgc3ltbGlua3MgY2F1c2UgUUEgZXJyb3JzLCBiZWNhdXNlIHVzdWFsbHkgaXQncyBhIGJ1ZyBpZiBhIG5vbgorIyAtZGV2Ly1kYmcvLW5hdGl2ZXNkayBwYWNrYWdlIGNvbnRhaW5zIGxpbmtzIHRvIC5zbyBmaWxlcywgYnV0IGluIHRoaXMgY2FzZQorIyB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHNvIHdlIGRpc2FibGUgdGhlIFFBIGNoZWNrcy4KK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdmNyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfbGF2Y3JhdGVfKi5zbyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zYW1wbGVyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zcGVleHJhdGVfKi5zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdmNyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlID0gImRldi1zbyIKKworIyA1MC1wdWxzZWF1ZGlvLmNvbmYgZGVmaW5lcyBhIGRldmljZSBuYW1lZCAicHVsc2UiIHRoYXQgYXBwbGljYXRpb25zIGNhbiB1c2UKKyMgaWYgdGhleSBleHBsaWNpdGx5IHdhbnQgdG8gdXNlIHRoZSBQdWxzZUF1ZGlvIHBsdWdpbi4KKyMgOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgY29uZmlndXJlcyB0aGUgImRlZmF1bHQiIGRldmljZSB0byB1c2UgdGhlCisjIFB1bHNlQXVkaW8gcGx1Z2luLgorRklMRVNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAorIgorCitSREVQRU5EU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jb25mLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jdGwtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLXBjbS1wdWxzZSBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzLzAwMDEtYXMxMGsxLU1ha2Utb3V0cHV0X3RyYW1fbGluZS1zdGF0aWMtaW5saW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA0OWEzMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzLzAwMDEtYXMxMGsxLU1ha2Utb3V0cHV0X3RyYW1fbGluZS1zdGF0aWMtaW5saW5lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAxZTU5MjZkZjc0YTM1ZmUyY2Q5MGJjNTlmNTI2NGE4NzE1Yzk0MDQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgNyBTZXAgMjAxNSAwODoxNjo1OSArMDAwMAotU3ViamVjdDogW1BBVENIXSBhczEwazE6IE1ha2Ugb3V0cHV0X3RyYW1fbGluZSgpIHN0YXRpYyBpbmxpbmUKLQotVGhlIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIGluIGFueSBvdGhlciBmaWxlLCBpdHMgYmV0dGVyIHRvIG1ha2UgaXQgc3RhdGljCi1pbmxpbmUgc28gY29tcGlsZXIgaGFzIGEgYmV0dGVyIGNoYW5jZSBvZiBvcHRpbWl6aW5nIGhlcmUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBhczEwazEvYXMxMGsxLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9hczEwazEvYXMxMGsxLmMgYi9hczEwazEvYXMxMGsxLmMKLWluZGV4IDk2YWYwYzMuLmQwNzY2ZmQgMTAwNjQ0Ci0tLS0gYS9hczEwazEvYXMxMGsxLmMKLSsrKyBiL2FzMTBrMS9hczEwazEuYwotQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIGFzX2V4aXQoY29uc3QgY2hhciAqbWVzc2FnZSkKLSAJZXhpdCgxKTsKLSB9Ci0gCi0taW5saW5lIHZvaWQgb3V0cHV0X3RyYW1fbGluZSggc3RydWN0IGxpc3RfaGVhZCAqbGluZV9oZWFkLCBpbnQgdHlwZSl7Ci0rc3RhdGljIGlubGluZSB2b2lkIG91dHB1dF90cmFtX2xpbmUoIHN0cnVjdCBsaXN0X2hlYWQgKmxpbmVfaGVhZCwgaW50IHR5cGUpewotICAgICAgICAgCi0gICAgICAgICBzdHJ1Y3QgdHJhbSAqdHJhbV9zeW07Ci0gICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTsKLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2F1dG90b29scy5wYXRjaAppbmRleCAzMTlmMjVkLi4yZTc0OTYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2F1dG90b29scy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2F1dG90b29scy5wYXRjaApAQCAtMjAsNyArMjAsNyBAQAogLS0tIGFsc2EtdG9vbHMtMS4wLjI0LjEtb3JpZy8vTWFrZWZpbGUJMjAxMS0wNy0wNiAxMToyNzo0MC4yMDc2NjUwMDAgKzA4MDAKICsrKyBhbHNhLXRvb2xzLTEuMC4yNC4xL01ha2VmaWxlCTIwMTEtMDctMTQgMTU6MDg6MDguODc3NjY1MDA5ICswODAwCiBAQCAtMSw4ICsxLDggQEAKLSBWRVJTSU9OID0gMS4xLjAKKyBWRVJTSU9OID0gMS4xLjUKICBUT1AgPSAuCiAtU1VCRElSUyA9IGFzMTBrMSBlbnZ5MjRjb250cm9sIGhkc3Bsb2FkZXIgaGRzcGNvbmYgaGRzcG1peGVyIFwKICtTVUJESVJTID0gYXMxMGsxIGVudnkyNGNvbnRyb2wgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL21ha2VmaWxlX25vX2d0ay5wYXRjaAppbmRleCA5YmQ2ODQ4Li41NDM3M2QxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL21ha2VmaWxlX25vX2d0ay5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL21ha2VmaWxlX25vX2d0ay5wYXRjaApAQCAtMTQsNyArMTQsNyBAQAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCiBAQCAtMSw5ICsxLDkgQEAKLSBWRVJTSU9OID0gMS4xLjAKKyBWRVJTSU9OID0gMS4xLjUKICBUT1AgPSAuCiAtU1VCRElSUyA9IGFzMTBrMSBlbnZ5MjRjb250cm9sIFwKIC0JICBtaXhhcnRsb2FkZXIgcGN4aHJsb2FkZXIgcm1lZGlnaWNvbnRyb2wgc2IxNl9jc3Agc2VxIHNzY2FwZV9jdGwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllOTdjMGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiQWR2YW5jZWQgdG9vbHMgZm9yIGNlcnRhaW4gQUxTQSBzb3VuZCBjYXJkIGRyaXZlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIrIgotREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGdsaWItMi4wIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9oZHNwbG9hZGVyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xkMTBrMS9DT1BZSU5HLkxJQjttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3Rvb2xzLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJywgJ2ZpbGU6Ly9tYWtlZmlsZV9ub19ndGsucGF0Y2gnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vZ2l0Y29tcGlsZV9oZGFqYWNrc2Vuc2V0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXMxMGsxLU1ha2Utb3V0cHV0X3RyYW1fbGluZS1zdGF0aWMtaW5saW5lLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjIzZWFhZTY4N2Q1NTQxMGI5MjU4N2MyMDUzYjMwMWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDg4ZjFkY2Q2ODcyMTIxMzgzZWRlZDVmYTI0ZTMyOGU2OGM1NGU1MjdkYjQ1NDdlMTQzNWQ1ZWFiYzJiNjcwOSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1FWFRSQV9PRU1BS0UgKz0gIkdJVENPTVBJTEVfQVJHUz0nLS1ob3N0PSR7SE9TVF9TWVN9IC0tYnVpbGQ9JHtCVUlMRF9TWVN9IC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9IC0tcHJlZml4PSR7cHJlZml4fSciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdndGsrJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZ3RrK10gPSAiLCxndGsrIGd0ayszLCIKLQotIyBjb25maWd1cmUuYWMvLmluIGRvZXNuJ3QgZXhpc3Qgc28gZm9yY2UgY29weQotQVVUT1RPT0xTX0NPUFlBQ0xPQ0FMID0gIjEiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0gICAgI0F1dG9tYWtlIGRpciBpcyBub3QgY29ycmVjdGx5IGRldGVjdGVkIGluIGNyb3NzIGNvbXBpbGF0aW9uIGNhc2UKLSAgICBleHBvcnQgQVVUT01BS0VfRElSPSIkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKSIKLSAgICBleHBvcnQgQUNMT0NBTF9GTEFHUz0iLS1zeXN0ZW0tYWNkaXI9JHtBQ0xPQ0FMRElSfS8gJHtBQ0xPQ0FMRVhUUkFQQVRIfSIKLQotICAgIGNwICR7V09SS0RJUn0vZ2l0Y29tcGlsZV9oZGFqYWNrc2Vuc2V0ZXN0ICR7U30vaGRhamFja3NlbnNldGVzdC9naXRjb21waWxlCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2xkMTBrMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZTQzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS41LmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiQWR2YW5jZWQgdG9vbHMgZm9yIGNlcnRhaW4gQUxTQSBzb3VuZCBjYXJkIGRyaXZlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIrIgorREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGdsaWItMi4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9oZHNwbG9hZGVyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xkMTBrMS9DT1BZSU5HLkxJQjttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3Rvb2xzLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJywgJ2ZpbGU6Ly9tYWtlZmlsZV9ub19ndGsucGF0Y2gnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vZ2l0Y29tcGlsZV9oZGFqYWNrc2Vuc2V0ZXN0IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2FmYjkyZWIxYjRmMmVkYzg2OTE0OThlNTdjM2VjNzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmMzYzY1NjdkZTgzNTIyM2VlN2Q2OTQ4N2I4YzIyZmIzOTVhMmU4YzYxMzM0MWIwYzk2ZTZhNWY2YTJiZDUzNCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitDTEVBTkJST0tFTiA9ICIxIgorCitFWFRSQV9PRU1BS0UgKz0gIkdJVENPTVBJTEVfQVJHUz0nLS1ob3N0PSR7SE9TVF9TWVN9IC0tYnVpbGQ9JHtCVUlMRF9TWVN9IC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9IC0tcHJlZml4PSR7cHJlZml4fSciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdndGsrJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbZ3RrK10gPSAiLCxndGsrIGd0ayszLCIKKworIyBjb25maWd1cmUuYWMvLmluIGRvZXNuJ3QgZXhpc3Qgc28gZm9yY2UgY29weQorQVVUT1RPT0xTX0NPUFlBQ0xPQ0FMID0gIjEiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCAoKSB7CisgICAgI0F1dG9tYWtlIGRpciBpcyBub3QgY29ycmVjdGx5IGRldGVjdGVkIGluIGNyb3NzIGNvbXBpbGF0aW9uIGNhc2UKKyAgICBleHBvcnQgQVVUT01BS0VfRElSPSIkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKSIKKyAgICBleHBvcnQgQUNMT0NBTF9GTEFHUz0iLS1zeXN0ZW0tYWNkaXI9JHtBQ0xPQ0FMRElSfS8gJHtBQ0xPQ0FMRVhUUkFQQVRIfSIKKworICAgIGNwICR7V09SS0RJUn0vZ2l0Y29tcGlsZV9oZGFqYWNrc2Vuc2V0ZXN0ICR7U30vaGRhamFja3NlbnNldGVzdC9naXRjb21waWxlCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2xkMTBrMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjUuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2gKaW5kZXggZTU3OGRmZS4uOTA3Y2E1YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDhjM2UwZWY5NjI1MDY2YzJiYjY3ZWUzZDJiOGNkMzdmZDQ0ZWFkYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGI5ZDQxYjc4NDY1NzE1MmE0YzU2ODNhOTQ1OGRmZmFiNTU3ZjA2ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgogRGF0ZTogRnJpLCAyOSBBdWcgMjAxNCAxODo1ODo1NiArMDMwMAogU3ViamVjdDogW1BBVENIXSBhbHNhY3RsOiBkb24ndCBsZXQgc3lzdGVtZCB1bml0IHJlc3RvcmUgdGhlIHZvbHVtZSB3aGVuCkBAIC0yMiw3ICsyMiw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9hbHNhY3RsL01ha2VmaWxlLmFtIGIvYWxzYWN0bC9NYWtlZmlsZS5hbQotaW5kZXggY2FjODA5NC4uZmY4NjVkYyAxMDA2NDQKK2luZGV4IDkwZmFiOWQuLjE5MDUyNWEgMTAwNjQ0CiAtLS0gYS9hbHNhY3RsL01ha2VmaWxlLmFtCiArKysgYi9hbHNhY3RsL01ha2VmaWxlLmFtCiBAQCAtMzgsOSArMzgsMTAgQEAgaW5zdGFsbC1kYXRhLWhvb2s6CkBAIC00MCwxNyArNDAsMTcgQEAKICAKICBhbHNhLXN0YXRlLnNlcnZpY2U6IGFsc2Etc3RhdGUuc2VydmljZS5pbgogZGlmZiAtLWdpdCBhL2Fsc2FjdGwvYWxzYS1yZXN0b3JlLnNlcnZpY2UuaW4gYi9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluCi1pbmRleCAyODg0MDk4Li5iYWMzY2NjIDEwMDY0NAoraW5kZXggODBmZDVmZC4uNmJlYjM2ZCAxMDA2NDQKIC0tLSBhL2Fsc2FjdGwvYWxzYS1yZXN0b3JlLnNlcnZpY2UuaW4KICsrKyBiL2Fsc2FjdGwvYWxzYS1yZXN0b3JlLnNlcnZpY2UuaW4KLUBAIC04LDYgKzgsNyBAQCBEZXNjcmlwdGlvbj1TYXZlL1Jlc3RvcmUgU291bmQgQ2FyZCBTdGF0ZQorQEAgLTcsNiArNyw3IEBACisgRGVzY3JpcHRpb249U2F2ZS9SZXN0b3JlIFNvdW5kIENhcmQgU3RhdGUKICBDb25kaXRpb25QYXRoRXhpc3RzPSFAZGFlbW9uc3dpdGNoQAogIENvbmRpdGlvblBhdGhFeGlzdHNHbG9iPS9kZXYvc25kL2NvbnRyb2wqCi0gQWZ0ZXI9YWxzYS1zdGF0ZS5zZXJ2aWNlCiArQ29uZGl0aW9uUGF0aEV4aXN0cz1AbG9jYWxzdGF0ZWRpckAvbGliL2Fsc2EvYXNvdW5kLnN0YXRlCiAgCiAgW1NlcnZpY2VdCiAgVHlwZT1vbmVzaG90CiAtLSAKLTIuNy4wLnJjMworMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGY0Yjg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU5NTI2YjA1NWUyNDZiNTU1ODgwOWE1YWUyNWMwYjkiCi1ERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgotCi0jIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KLSMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgotIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKLSMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3Ci0jIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgotUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgotCi1QQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwsdWRldiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAxZTM5MzRjYTViZDIyYTgwYzI3Mjg5ZDFiMGFkY2RjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3ODMxMDQ0ZGU5MmM1YmYzM2JmMzM2NWEzZjM2ZTQ5Mzk3ZjQxOTFlOTM0ZGY0NjBhZTFjYTE1MTM4YzlkOWQiCi0KLSMgT24gYnVpbGQgbWFjaGluZXMgd2l0aCBweXRob24tZG9jdXRpbHMgKG5vdCBweXRob24zLWRvY3V0aWxzICEhKSBpbnN0YWxsZWQKLSMgcnN0Mm1hbiAobm90IHJzdDJtYW4ucHkpIGlzIGRldGVjdGVkIGFuZCBjb21waWxlIGZhaWxzIHdpdGgKLSMgfCBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnYWxzYXVjbS4xJywgbmVlZGVkIGJ5ICdhbGwtYW0nLiAgU3RvcC4KLSMgQXZvaWQgdGhpcyBieSBkaXNhYmxpbmcgZXhwaWNpdGx5Ci1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJzdDJtYW4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIG1hbnBhZ2VzCi0KLSMgVGhpcyBhcmUgYWxsIHBhY2thZ2VzIHRoYXQgd2UgbmVlZCB0byBtYWtlLiBBbHNvLCB0aGUgbm93IGVtcHR5IGFsc2EtdXRpbHMKLSMgaXBrIGRlcGVuZHMgb24gdGhlbS4KLQotQUxTQV9VVElMU19QS0dTID0gIlwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiYXQnLCAnYWxzYS11dGlscy1hbHNhYmF0JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbWl4ZXIgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXRwbGcgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtbWlkaSBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hcGxheSBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWNvbm5lY3QgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtaWVjc2V0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFuZXQgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcWR1bXAgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWN0bCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbG9vcCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdWNtIFwKLSAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKLVJERVBFTkRTXyR7UE59ICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi0KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgPSAiJHtiaW5kaXJ9L2Fsc2FiYXQiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2F0cGxnICAgID0gIiR7YmluZGlyfS9hbHNhdHBsZyIKLUZJTEVTX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5ICR7YmluZGlyfS9hcmVjb3JkIgotRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgotRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgotRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgotRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCi1GSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCi1GSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZCAqLyovdWRldi9ydWxlcy5kICR7c3lzdGVtZF91bml0ZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhICR7ZGF0YWRpcn0vYWxzYS9pbml0LyIKLUZJTEVTX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgPSAiJHtiaW5kaXJ9L2FzZXFkdW1wIgotRklMRVNfYWxzYS11dGlscy1hbHNhbG9vcCAgICA9ICIke2JpbmRpcn0vYWxzYWxvb3AiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2F1Y20gICAgID0gIiR7YmluZGlyfS9hbHNhdWNtIgotCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKLVNVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKLVNVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKLVNVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgotCi1SUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCi0KLUFMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgotCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCi0Jcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCi0Jcm0gLWYgJHtEfSR7c2JpbmRpcn0vYWxzYWJhdC10ZXN0LnNoCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1ZGV2JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KLQkJIyBUaGlzIGlzIHdoZXJlIGFsc2EtdXRpbHMgd2lsbCBpbnN0YWxsIGl0cyBydWxlcyBpZiB3ZSBkb24ndCB0ZWxsIGl0IGFueXRoaW5nIGVsc2UuCi0JCXJtIC1yZiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2Ci0JCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9Ci0JZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMjE1YmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS41LmJiCkBAIC0wLDAgKzEsMTA4IEBACitTVU1NQVJZID0gIkFMU0Egc291bmQgdXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Fsc2FjdGwvdXRpbHMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mZTk1MjZiMDU1ZTI0NmI1NTU4ODA5YTVhZTI1YzBiOSIKK0RFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBsaWJzYW1wbGVyYXRlMCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYiCisKKyMgYWxzYWJhdCBjYW4gYmUgYnVpbHQgYWxzbyB3aXRob3V0IGZmdHcgc3VwcG9ydCAod2l0aCByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkpLgorIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWx3YXlzIGVuYWJsZSBhbHNhYmF0LCBidXQgcHJvdmlkZSBhbiBvcHRpb24gZm9yCisjIGVuYWJsaW5nL2Rpc2FibGluZyBmZnR3LiBUaGUgY29uZmlndXJlIHNjcmlwdCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgaG93ZXZlcgorIyAoYXQgbGVhc3QgaW4gYW55IG9idmlvdXMgd2F5KSwgc28gZm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgYWxzYWJhdCB3aXRoIGZmdHcKKyMgb3Igbm8gYWxzYWJhdCBhdCBhbGwuCitQQUNLQUdFQ09ORklHW2JhdF0gPSAiLS1lbmFibGUtYmF0LC0tZGlzYWJsZS1iYXQsZmZ0d2YiCisKK1BBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kLC0td2l0aC11ZGV2LXJ1bGVzLWRpcj0vdW53YW50ZWQvcnVsZXMuZCx1ZGV2IgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUteG1sdG8sIC0tZGlzYWJsZS14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvdXRpbHMvYWxzYS11dGlscy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWxzYWN0bC1kb24tdC1sZXQtc3lzdGVtZC11bml0LXJlc3RvcmUtdGhlLXZvbHVtZS13aC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGZlNmVhMTQ3YTVlMDdhMDU2OTE5NTkxYzJmNWRhYzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzIwYmQyODVlOTFkYjZlN2ZkN2RiM2M5ZWM2ZjU1YjAyZjM1NDQ5ZmYyNzNjNzg0NDc4MGFjNmE1YTNkZTJlOCIKKworIyBPbiBidWlsZCBtYWNoaW5lcyB3aXRoIHB5dGhvbi1kb2N1dGlscyAobm90IHB5dGhvbjMtZG9jdXRpbHMgISEpIGluc3RhbGxlZAorIyByc3QybWFuIChub3QgcnN0Mm1hbi5weSkgaXMgZGV0ZWN0ZWQgYW5kIGNvbXBpbGUgZmFpbHMgd2l0aAorIyB8IG1ha2VbMV06ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICdhbHNhdWNtLjEnLCBuZWVkZWQgYnkgJ2FsbC1hbScuICBTdG9wLgorIyBBdm9pZCB0aGlzIGJ5IGRpc2FibGluZyBleHBpY2l0bHkKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnN0Mm1hbiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKKworIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscworIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgorCitBTFNBX1VUSUxTX1BLR1MgPSAiXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAorICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKKworRklMRVNfJHtQTn0gPSAiIgorRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgorRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQiCitGSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCitGSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCitGSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgorRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKK0ZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kICovKi91ZGV2L3J1bGVzLmQgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgorRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCitGSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20iCisKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhYmF0ICAgICAgPSAiQ29tbWFuZC1saW5lIHNvdW5kIHRlc3RlciBmb3IgQUxTQSBzb3VuZCBjYXJkIGRyaXZlciIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdHBsZyAgICAgPSAiQ29udmVydHMgdG9wb2xvZ3kgdGV4dCBmaWxlcyBpbnRvIGJpbmFyeSBmb3JtYXQgZm9yIGtlcm5lbCIKK1NVTU1BUllfYWxzYS11dGlscy1hcGxheSAgICAgICAgPSAiUGxheSAoYW5kIHJlY29yZCkgc291bmQgZmlsZXMgdXNpbmcgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hbWl4ZXIgICAgICAgPSAiQ29tbWFuZC1saW5lIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FtaXhlciAgICA9ICJuY3Vyc2VzLWJhc2VkIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgorU1VNTUFSWV9hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ICA9ICJBTFNBIHN1cnJvdW5kIHNwZWFrZXIgdGVzdCB1dGlsaXR5IgorU1VNTUFSWV9hbHNhLXV0aWxzLW1pZGkgICAgICAgICA9ICJNaXNjZWxsYW5lb3VzIE1JREkgdXRpbGl0aWVzIGZvciBBTFNBIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFjb25uZWN0ICAgICA9ICJBTFNBIHNlcXVlbmNlciBjb25uZWN0aW9uIG1hbmFnZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgID0gIk5ldHdvcmsgY2xpZW50L3NlcnZlciBmb3IgQUxTQSBzZXF1ZW5jZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgID0gIkFMU0EgdXRpbGl0eSBmb3Igc2V0dGluZy9zaG93aW5nIElFQzk1OCAoUy9QRElGKSBzdGF0dXMgYml0cyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhY3RsICAgICAgPSAiU2F2ZXMvcmVzdG9yZXMgQUxTQS1zZXR0aW5ncyBpbiAvZXRjL2Fzb3VuZC5zdGF0ZSIKK1NVTU1BUllfYWxzYS11dGlscy1hc2VxZHVtcCAgICAgPSAiU2hvd3MgdGhlIGV2ZW50cyByZWNlaXZlZCBhdCBhbiBBTFNBIHNlcXVlbmNlciBwb3J0IgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2Fsb29wICAgICA9ICJBTFNBIFBDTSBsb29wYmFjayB1dGlsaXR5IgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F1Y20gICAgICA9ICJBTFNBIFVzZSBDYXNlIE1hbmFnZXIiCisKK1JSRUNPTU1FTkRTX2Fsc2EtdXRpbHMtYWxzYWN0bCA9ICJhbHNhLXN0YXRlcyIKKworQUxMT1dfRU1QVFlfYWxzYS11dGlscyA9ICIxIgorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIFdlIGRvbid0IHNoaXAgdGhpcyBoZXJlIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBkZXBlbmRlbmN5IG9uIGJhc2guCisJIyBTZWUgYWxzYS11dGlscy1zY3JpcHRzXyR7UFZ9LmJiCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYWNvbmYKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhLWluZm8uc2gKKwlybSAtZiAke0R9JHtzYmluZGlyfS9hbHNhYmF0LXRlc3Quc2gKKworCSMgSWYgdWRldiBpcyBkaXNhYmxlZCwgd2UgdG9sZCBjb25maWd1cmUgdG8gaW5zdGFsbCB0aGUgcnVsZXMKKwkjIGluIC91bndhbnRlZCwgc28gd2UgY2FuIHJlbW92ZSB0aGVtIG5vdy4gSWYgdWRldiBpcyBlbmFibGVkLAorCSMgdGhlbiAvdW53YW50ZWQgd29uJ3QgZXhpc3QgYW5kIHRoaXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4KKwlybSAtcmYgJHtEfS91bndhbnRlZAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y4MjI0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gZjM0YzU2NzA0NWJlYTVhN2RlZDliY2ZhOGU3ODVjZmQyNGNjN2RkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNoaXZyYWogUGF0aWwgPHNoaXZyYWoucGF0aWxAaW1ndGVjLmNvbT4KLURhdGU6IFR1ZSwgNCBBcHIgMjAxNyAxODo1NjowMSArMDUzMAotU3ViamVjdDogW1BBVENIXSBidWlsZCBmaXggZm9yIG1pcHMKLQotU2lnbmVkLW9mZi1ieTogU2hpdnJhaiBQYXRpbCA8c2hpdnJhai5wYXRpbEBpbWd0ZWMuY29tPgotU2lnbmVkLW9mZi1ieTogUm9uYWxkIFMuIEJ1bHRqZSA8cnNidWx0amVAZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMgfCAzICsrLQotIGxpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYyAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYwotaW5kZXggMzMxY2ZhYzExNS4uZTk4NzY5OGQ2NiAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYwotKysrIGIvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX2luaXRfbWlwcy5jCi1AQCAtMTgsNyArMTgsOCBAQAotICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAgKi8KLSAKLS0jaW5jbHVkZSAibGliYXZjb2RlYy9oZXZjLmgiCi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgotICNpbmNsdWRlICJsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbWlwcy5oIgotIAotICNpZiBIQVZFX01TQQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYwotaW5kZXggNmEzYjI4MTVmZC4uOTYzYzY0Yzg2MSAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYwotKysrIGIvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jCi1AQCAtMTgsNyArMTgsNyBAQAotICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAgKi8KLSAKLS0jaW5jbHVkZSAibGliYXZjb2RlYy9oZXZjLmgiCi0rI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Y2RlYy5oIgotICNpbmNsdWRlICJsaWJhdnV0aWwvbWlwcy9nZW5lcmljX21hY3Jvc19tc2EuaCIKLSAjaW5jbHVkZSAiaGV2Y3ByZWRfbWlwcy5oIgotIAotLS0gCi0yLjEzLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiYWExOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gMTI0ZWIyMDJlNzA2Nzg1Mzk1NDRmNjI2OGVmYzk4MTMxZjE5ZmE0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQotID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNToyOCArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9ybWRlYzogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKLQotRml4ZXM6IGxvb3AuaXZyCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU0Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L3JtZGVjLmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcm1kZWMuYyBiL2xpYmF2Zm9ybWF0L3JtZGVjLmMKLWluZGV4IDE3OGVhZWEuLmQ2ZDdkOWMgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9ybWRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9ybWRlYy5jCi1AQCAtMTIyMyw4ICsxMjIzLDExIEBAIHN0YXRpYyBpbnQgaXZyX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKLSAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJXMgPSAnJXMnXG4iLCBrZXksIHZhbCk7Ci0gICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gNCkgewotICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICIlcyA9ICcweCIsIGtleSk7Ci0tICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKQotKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsZW47IGorKykgewotKyAgICAgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJVgiLCBhdmlvX3I4KHBiKSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICInXG4iKTsKLSAgICAgICAgIH0gZWxzZSBpZiAobGVuID09IDQgJiYgdHlwZSA9PSAzICYmICFzdHJuY21wKGtleSwgIlN0cmVhbUNvdW50IiwgdGxlbikpIHsKLSAgICAgICAgICAgICBuYl9zdHJlYW1zID0gdmFsdWUgPSBhdmlvX3JiMzIocGIpOwotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2QwZDFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA0ZjA1ZTJlMmRjMWE4OWYzOGNkOWYwOTYwYTY1NjEwODNkNzE0ZjFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMDE6MTU6MzAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbXZkZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrCi0KLUZpeGVzOiBsb29wLm12Ci0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU1Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L212ZGVjLmMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXZkZWMuYyBiL2xpYmF2Zm9ybWF0L212ZGVjLmMKLWluZGV4IDBlMTJjOGMuLmY3YWE0Y2IgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9tdmRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9tdmRlYy5jCi1AQCAtMzQyLDYgKzM0Miw4IEBAIHN0YXRpYyBpbnQgbXZfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICphdmN0eCkKLSAgICAgICAgICAgICB1aW50MzJfdCBwb3MgICA9IGF2aW9fcmIzMihwYik7Ci0gICAgICAgICAgICAgdWludDMyX3QgYXNpemUgPSBhdmlvX3JiMzIocGIpOwotICAgICAgICAgICAgIHVpbnQzMl90IHZzaXplID0gYXZpb19yYjMyKHBiKTsKLSsgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICAgICAgYXZpb19za2lwKHBiLCA4KTsKLSAgICAgICAgICAgICBhdl9hZGRfaW5kZXhfZW50cnkoYXN0LCBwb3MsIHRpbWVzdGFtcCwgYXNpemUsIDAsIEFWSU5ERVhfS0VZRlJBTUUpOwotICAgICAgICAgICAgIGF2X2FkZF9pbmRleF9lbnRyeSh2c3QsIHBvcyArIGFzaXplLCBpLCB2c2l6ZSwgMCwgQVZJTkRFWF9LRVlGUkFNRSk7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4OGIzNTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDk2ZjI0ZDFiZWU3ZmU3YmFjMDhlMmI3Yzc0ZGIxYTA0NmM5ZGMwZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTIwYW5kPTIwPUU1PUJDPUEwPUU2PUI0PUFBPUU0PUJBPUFFPTI4Pz0KLSA9P1VURi04P3E/PUU2PTlDPTlCPUU1PTg4PTlEPTI5Pz0gPHRvbnkuc2ggYW5kIHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMDE6MTU6MjkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvcmwyOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjawotCi1GaXhlczogbG9vcC5ybDIKLQotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQwNTYKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvcmwyLmMgfCAxNSArKysrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3JsMi5jIGIvbGliYXZmb3JtYXQvcmwyLmMKLWluZGV4IDBiZWM4ZjEuLmViMTY4MmQgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9ybDIuYwotKysrIGIvbGliYXZmb3JtYXQvcmwyLmMKLUBAIC0xNzAsMTIgKzE3MCwyMSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgcmwyX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKLSAgICAgfQotIAotICAgICAvKiogcmVhZCBvZmZzZXQgYW5kIHNpemUgdGFibGVzICovCi0tICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspCi0rICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgY2h1bmtfc2l6ZVtpXSA9IGF2aW9fcmwzMihwYik7Ci0tICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspCi0rICAgIH0KLSsgICAgZm9yKGk9MDsgaSA8IGZyYW1lX2NvdW50O2krKykgewotKyAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICBjaHVua19vZmZzZXRbaV0gPSBhdmlvX3JsMzIocGIpOwotLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQotKyAgICB9Ci0rICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgYXVkaW9fc2l6ZVtpXSA9IGF2aW9fcmwzMihwYikgJiAweEZGRkY7Ci0rICAgIH0KLSAKLSAgICAgLyoqIGJ1aWxkIHRoZSBzYW1wbGUgaW5kZXggKi8KLSAgICAgZm9yKGk9MDtpPGZyYW1lX2NvdW50O2krKyl7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMDFkMjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDdmOWVjNTU5M2UwNDgyNzI0OWU3YWViNDY2ZGEwNmE5OGEwZDczMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTIwYW5kPTIwPUU1PUJDPUEwPUU2PUI0PUFBPUU0PUJBPUFFPTI4Pz0KLSA9P1VURi04P3E/PUU2PTlDPTlCPUU1PTg4PTlEPTI5Pz0gPHRvbnkuc2ggYW5kIHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTI6Mzc6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvYXNmZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjawotCi1GaXhlczogbG9vcC5hc2YKLQotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQwNTcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvYXNmZGVjX2YuYyB8IDYgKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCi1pbmRleCBiZTA5YTkyLi5mM2FjYmFlIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYwotKysrIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYwotQEAgLTc0OSwxMyArNzQ5LDE1IEBAIHN0YXRpYyBpbnQgYXNmX3JlYWRfbWFya2VyKEFWRm9ybWF0Q29udGV4dCAqcywgaW50NjRfdCBzaXplKQotICAgICBjb3VudCA9IGF2aW9fcmwzMihwYik7ICAgIC8vIG1hcmtlcnMgY291bnQKLSAgICAgYXZpb19ybDE2KHBiKTsgICAgICAgICAgICAvLyByZXNlcnZlZCAyIGJ5dGVzCi0gICAgIG5hbWVfbGVuID0gYXZpb19ybDE2KHBiKTsgLy8gbmFtZSBsZW5ndGgKLS0gICAgZm9yIChpID0gMDsgaSA8IG5hbWVfbGVuOyBpKyspCi0tICAgICAgICBhdmlvX3I4KHBiKTsgLy8gc2tpcCB0aGUgbmFtZQotKyAgICBhdmlvX3NraXAocGIsIG5hbWVfbGVuKTsKLSAKLSAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgIGludDY0X3QgcHJlc190aW1lOwotICAgICAgICAgaW50IG5hbWVfbGVuOwotIAotKyAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rCi0gICAgICAgICBhdmlvX3JsNjQocGIpOyAgICAgICAgICAgICAvLyBvZmZzZXQsIDggYnl0ZXMKLSAgICAgICAgIHByZXNfdGltZSA9IGF2aW9fcmw2NChwYik7IC8vIHByZXNlbnRhdGlvbiB0aW1lCi0gICAgICAgICBwcmVzX3RpbWUgLT0gYXNmLT5oZHIucHJlcm9sbCAqIDEwMDAwOwotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTgwM2NlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotRnJvbSA3ZWM0MTQ4OTJkZGNhZDg4MzEzODQ4NDk0YjZmYzVmNDM3YzljYTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLURhdGU6IFNhdCwgMjYgQXVnIDIwMTcgMDE6MjY6NTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvaGxzOiBGaXggRG9TIGR1ZSB0byBpbmZpbml0ZSBsb29wCi0KLUZpeGVzOiBsb29wLm0zdQotCi1UaGUgZGVmYXVsdCBtYXggaXRlcmF0aW9uIGNvdW50IG9mIDEwMDAgaXMgYXJiaXRyYXJ5IGFuZCBpZGVhcyBmb3IgYSBiZXR0ZXIgc29sdXRpb24gYXJlIHdlbGNvbWUKLQotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLQotUHJldmlvdXMgdmVyc2lvbiByZXZpZXdlZC1ieTogU3RldmVuIExpdSA8bGluZ2ppdWppYW5rZUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGRvYy9kZW11eGVycy50ZXhpIHwgMTggKysrKysrKysrKysrKysrKysrCi0gbGliYXZmb3JtYXQvaGxzLmMgfCAgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9kb2MvZGVtdXhlcnMudGV4aSBiL2RvYy9kZW11eGVycy50ZXhpCi1pbmRleCAyOWEyM2Q0Li43M2RjMGZlIDEwMDY0NAotLS0tIGEvZG9jL2RlbXV4ZXJzLnRleGkKLSsrKyBiL2RvYy9kZW11eGVycy50ZXhpCi1AQCAtMzAwLDYgKzMwMCwyNCBAQCB1c2VkIHRvIGVuZCB0aGUgb3V0cHV0IHZpZGVvIGF0IHRoZSBsZW5ndGggb2YgdGhlIHNob3J0ZXN0IGlucHV0IGZpbGUsCi0gd2hpY2ggaW4gdGhpcyBjYXNlIGlzIEBmaWxle2lucHV0Lm1wNH0gYXMgdGhlIEdJRiBpbiB0aGlzIGV4YW1wbGUgbG9vcHMKLSBpbmZpbml0ZWx5LgotIAotK0BzZWN0aW9uIGhscwotKwotK0hMUyBkZW11eGVyCi0rCi0rSXQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6Ci0rCi0rQHRhYmxlIEBvcHRpb24KLStAaXRlbSBsaXZlX3N0YXJ0X2luZGV4Ci0rc2VnbWVudCBpbmRleCB0byBzdGFydCBsaXZlIHN0cmVhbXMgYXQgKG5lZ2F0aXZlIHZhbHVlcyBhcmUgZnJvbSB0aGUgZW5kKS4KLSsKLStAaXRlbSBhbGxvd2VkX2V4dGVuc2lvbnMKLSsnLCcgc2VwYXJhdGVkIGxpc3Qgb2YgZmlsZSBleHRlbnNpb25zIHRoYXQgaGxzIGlzIGFsbG93ZWQgdG8gYWNjZXNzLgotKwotK0BpdGVtIG1heF9yZWxvYWQKLStNYXhpbXVtIG51bWJlciBvZiB0aW1lcyBhIGluc3VmZmljaWVudCBsaXN0IGlzIGF0dGVtcHRlZCB0byBiZSByZWxvYWRlZC4KLStEZWZhdWx0IHZhbHVlIGlzIDEwMDAuCi0rQGVuZCB0YWJsZQotKwotIEBzZWN0aW9uIGltYWdlMgotIAotIEltYWdlIGZpbGUgZGVtdXhlci4KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9obHMuYyBiL2xpYmF2Zm9ybWF0L2hscy5jCi1pbmRleCAwMTczMWJkLi4wOTk1MzQ1IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvaGxzLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L2hscy5jCi1AQCAtMjA1LDYgKzIwNSw3IEBAIHR5cGVkZWYgc3RydWN0IEhMU0NvbnRleHQgewotICAgICBBVkRpY3Rpb25hcnkgKmF2aW9fb3B0czsKLSAgICAgaW50IHN0cmljdF9zdGRfY29tcGxpYW5jZTsKLSAgICAgY2hhciAqYWxsb3dlZF9leHRlbnNpb25zOwotKyAgICBpbnQgbWF4X3JlbG9hZDsKLSB9IEhMU0NvbnRleHQ7Ci0gCi0gc3RhdGljIGludCByZWFkX2Nob21wX2xpbmUoQVZJT0NvbnRleHQgKnMsIGNoYXIgKmJ1ZiwgaW50IG1heGxlbikKLUBAIC0xMjYzLDYgKzEyNjQsNyBAQCBzdGF0aWMgaW50IHJlYWRfZGF0YSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmJ1ZiwgaW50IGJ1Zl9zaXplKQotICAgICBITFNDb250ZXh0ICpjID0gdi0+cGFyZW50LT5wcml2X2RhdGE7Ci0gICAgIGludCByZXQsIGk7Ci0gICAgIGludCBqdXN0X29wZW5lZCA9IDA7Ci0rICAgIGludCByZWxvYWRfY291bnQgPSAwOwotIAotIHJlc3RhcnQ6Ci0gICAgIGlmICghdi0+bmVlZGVkKQotQEAgLTEyOTQsNiArMTI5Niw5IEBAIHJlc3RhcnQ6Ci0gICAgICAgICByZWxvYWRfaW50ZXJ2YWwgPSBkZWZhdWx0X3JlbG9hZF9pbnRlcnZhbCh2KTsKLSAKLSByZWxvYWQ6Ci0rICAgICAgICByZWxvYWRfY291bnQrKzsKLSsgICAgICAgIGlmIChyZWxvYWRfY291bnQgPiBjLT5tYXhfcmVsb2FkKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0VPRjsKLSAgICAgICAgIGlmICghdi0+ZmluaXNoZWQgJiYKLSAgICAgICAgICAgICBhdl9nZXR0aW1lX3JlbGF0aXZlKCkgLSB2LT5sYXN0X2xvYWRfdGltZSA+PSByZWxvYWRfaW50ZXJ2YWwpIHsKLSAgICAgICAgICAgICBpZiAoKHJldCA9IHBhcnNlX3BsYXlsaXN0KGMsIHYtPnVybCwgdiwgTlVMTCkpIDwgMCkgewotQEAgLTIxNTAsNiArMjE1NSw4IEBAIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBobHNfb3B0aW9uc1tdID0gewotICAgICAgICAgT0ZGU0VUKGFsbG93ZWRfZXh0ZW5zaW9ucyksIEFWX09QVF9UWVBFX1NUUklORywKLSAgICAgICAgIHsuc3RyID0gIjNncCxhYWMsYXZpLGZsYWMsbWt2LG0zdTgsbTRhLG00cyxtNHYsbXBnLG1vdixtcDIsbXAzLG1wNCxtcGVnLG1wZWd0cyxvZ2csb2d2LG9nYSx0cyx2b2Isd2F2In0sCi0gICAgICAgICBJTlRfTUlOLCBJTlRfTUFYLCBGTEFHU30sCi0rICAgIHsibWF4X3JlbG9hZCIsICJNYXhpbXVtIG51bWJlciBvZiB0aW1lcyBhIGluc3VmZmljaWVudCBsaXN0IGlzIGF0dGVtcHRlZCB0byBiZSByZWxvYWRlZCIsCi0rICAgICAgICBPRkZTRVQobWF4X3JlbG9hZCksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSAxMDAwfSwgMCwgSU5UX01BWCwgRkxBR1N9LAotICAgICB7TlVMTH0KLSB9OwotIAotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGZkZTBiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA3ZTgwYjYzZWNkMjU5ZDY5ZDM4MzYyM2U3NWIzMThiZjJiZDQ5MWY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89Ci0gPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjI3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2NpbmVkZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrCi0KLUZpeGVzOiBsb29wLmNpbmUKLQotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQwNTkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvY2luZWRlYy5jIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9jaW5lZGVjLmMgYi9saWJhdmZvcm1hdC9jaW5lZGVjLmMKLWluZGV4IDc2M2I5M2IuLmRlMzRmYjkgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9jaW5lZGVjLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L2NpbmVkZWMuYwotQEAgLTI2Nyw4ICsyNjcsMTIgQEAgc3RhdGljIGludCBjaW5lX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqYXZjdHgpCi0gCi0gICAgIC8qIHBhcnNlIGltYWdlIG9mZnNldHMgKi8KLSAgICAgYXZpb19zZWVrKHBiLCBvZmZJbWFnZU9mZnNldHMsIFNFRUtfU0VUKTsKLS0gICAgZm9yIChpID0gMDsgaSA8IHN0LT5kdXJhdGlvbjsgaSsrKQotKyAgICBmb3IgKGkgPSAwOyBpIDwgc3QtPmR1cmF0aW9uOyBpKyspIHsKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKwotICAgICAgICAgYXZfYWRkX2luZGV4X2VudHJ5KHN0LCBhdmlvX3JsNjQocGIpLCBpLCAwLCAwLCBBVklOREVYX0tFWUZSQU1FKTsKLSsgICAgfQotIAotICAgICByZXR1cm4gMDsKLSB9Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMjg0ZmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDlkMDBmYjlkNzBlZThjMGNjNzAwMmI4OTMxOGM1YmUwMGYxYmJkYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTI4PUU2PTk5PTkzPUU5PUJCPTkxPTI5Pz0KLSA8dG9ueS5zaEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBUdWUsIDI5IEF1ZyAyMDE3IDIzOjU5OjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L214ZmRlYzogRml4IFNpZ24gZXJyb3IgaW4gbXhmX3JlYWRfcHJpbWVyX3BhY2soKQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1GaXhlczogMjAxNzA4MjlCLm14ZgotCi1Dby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQxNjkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvbXhmZGVjLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9teGZkZWMuYyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi1pbmRleCA2YWRiNzdkLi45MTczMWE3IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvbXhmZGVjLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi1AQCAtNTAwLDcgKzUwMCw3IEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfcHJpbWVyX3BhY2sodm9pZCAqYXJnLCBBVklPQ29udGV4dCAqcGIsIGludCB0YWcsIGludCBzaXplLCBVCi0gICAgICAgICBhdnByaXZfcmVxdWVzdF9zYW1wbGUocGIsICJQcmltZXIgcGFjayBpdGVtIGxlbmd0aCAlZCIsIGl0ZW1fbGVuKTsKLSAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsKLSAgICAgfQotLSAgICBpZiAoaXRlbV9udW0gPiA2NTUzNikgewotKyAgICBpZiAoaXRlbV9udW0gPiA2NTUzNiB8fCBpdGVtX251bSA8IDApIHsKLSAgICAgICAgIGF2X2xvZyhteGYtPmZjLCBBVl9MT0dfRVJST1IsICJpdGVtX251bSAlZCBpcyB0b28gbGFyZ2VcbiIsIGl0ZW1fbnVtKTsKLSAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICB9Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NjAxMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDkwMGYzOTY5MmNhMDMzN2E5OGE3Y2YwNDdlNGUyNjExMDcxODEwYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTI4PUU2PTk5PTkzPUU5PUJCPTkxPTI5Pz0KLSA8dG9ueS5zaEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBUdWUsIDI5IEF1ZyAyMDE3IDIzOjU5OjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L214ZmRlYzogRml4IERvUyBpc3N1ZXMgaW4KLSBteGZfcmVhZF9pbmRleF9lbnRyeV9hcnJheSgpCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLUZpeGVzOiAyMDE3MDgyOUEubXhmCi0KLUNvLUF1dGhvcjog5byg5rSq5LquKOacm+WInSkiIDx3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDE3MAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9teGZkZWMuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jIGIvbGliYXZmb3JtYXQvbXhmZGVjLmMKLWluZGV4IGY4ZDBmOWUuLjZhZGI3N2QgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9teGZkZWMuYwotKysrIGIvbGliYXZmb3JtYXQvbXhmZGVjLmMKLUBAIC04OTksNiArODk5LDggQEAgc3RhdGljIGludCBteGZfcmVhZF9pbmRleF9lbnRyeV9hcnJheShBVklPQ29udGV4dCAqcGIsIE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWcKLSAgICAgc2VnbWVudC0+bmJfaW5kZXhfZW50cmllcyA9IGF2aW9fcmIzMihwYik7Ci0gCi0gICAgIGxlbmd0aCA9IGF2aW9fcmIzMihwYik7Ci0rICAgIGlmKHNlZ21lbnQtPm5iX2luZGV4X2VudHJpZXMgJiYgbGVuZ3RoIDwgMTEpCi0rICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAKLSAgICAgaWYgKCEoc2VnbWVudC0+dGVtcG9yYWxfb2Zmc2V0X2VudHJpZXM9YXZfY2FsbG9jKHNlZ21lbnQtPm5iX2luZGV4X2VudHJpZXMsIHNpemVvZigqc2VnbWVudC0+dGVtcG9yYWxfb2Zmc2V0X2VudHJpZXMpKSkgfHwKLSAgICAgICAgICEoc2VnbWVudC0+ZmxhZ19lbnRyaWVzICAgICAgICAgID0gYXZfY2FsbG9jKHNlZ21lbnQtPm5iX2luZGV4X2VudHJpZXMsIHNpemVvZigqc2VnbWVudC0+ZmxhZ19lbnRyaWVzKSkpIHx8Ci1AQCAtOTA5LDYgKzkxMSw4IEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoQVZJT0NvbnRleHQgKnBiLCBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnCi0gICAgIH0KLSAKLSAgICAgZm9yIChpID0gMDsgaSA8IHNlZ21lbnQtPm5iX2luZGV4X2VudHJpZXM7IGkrKykgewotKyAgICAgICAgaWYoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgIHNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzW2ldID0gYXZpb19yOChwYik7Ci0gICAgICAgICBhdmlvX3I4KHBiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogS2V5RnJhbWVPZmZzZXQgKi8KLSAgICAgICAgIHNlZ21lbnQtPmZsYWdfZW50cmllc1tpXSA9IGF2aW9fcjgocGIpOwotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmFlMjA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSBjMjRiY2I1NTM2NTBiOTFlOWVmZjE1ZWY2ZTU0Y2E3M2RlMjQ1M2I3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89Ci0gPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9uc3ZkZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrIGluCi0gbnN2c19maWxlX29mZnNldCBsb29wLgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1GaXhlczogMjAxNzA4MjkubnN2Ci0KLUNvLUF1dGhvcjog5byg5rSq5LquKOacm+WInSkiIDx3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDE3MQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9uc3ZkZWMuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9uc3ZkZWMuYyBiL2xpYmF2Zm9ybWF0L25zdmRlYy5jCi1pbmRleCBjNmRkYjY3Li5kOGNlNjU2IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvbnN2ZGVjLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L25zdmRlYy5jCi1AQCAtMzM1LDggKzMzNSwxMSBAQCBzdGF0aWMgaW50IG5zdl9wYXJzZV9OU1ZmX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCi0gICAgICAgICBpZiAoIW5zdi0+bnN2c19maWxlX29mZnNldCkKLSAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotIAotLSAgICAgICAgZm9yKGk9MDtpPHRhYmxlX2VudHJpZXNfdXNlZDtpKyspCi0rICAgICAgICBmb3IoaT0wO2k8dGFibGVfZW50cmllc191c2VkO2krKykgewotKyAgICAgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgICAgICBuc3YtPm5zdnNfZmlsZV9vZmZzZXRbaV0gPSBhdmlvX3JsMzIocGIpICsgc2l6ZTsKLSsgICAgICAgIH0KLSAKLSAgICAgICAgIGlmKHRhYmxlX2VudHJpZXMgPiB0YWJsZV9lbnRyaWVzX3VzZWQgJiYKLSAgICAgICAgICAgIGF2aW9fcmwzMihwYikgPT0gTUtUQUcoJ1QnLCdPJywnQycsJzInKSkgewotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjIyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTAyMDM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA5Y2I0ZWI3NzI4MzljNWUxZGUyODU1ZDEyNmJmNzRmZjE2ZDEzMzgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLURhdGU6IFR1ZSwgNSBTZXAgMjAxNyAwMDoxNjoyOSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9tb3Y6IEZpeCBEb1MgaW4gcmVhZF90ZnJhKCkKLQotRml4ZXM6IE1pc3NpbmcgRU9GIGNoZWNrIGluIGxvb3AKLU5vIHRlc3RjYXNlCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MjIyCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L21vdi5jIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbW92LmMgYi9saWJhdmZvcm1hdC9tb3YuYwotaW5kZXggOTk0ZTljNi4uMjUxOTcwNyAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L21vdi5jCi0rKysgYi9saWJhdmZvcm1hdC9tb3YuYwotQEAgLTYwOTQsNiArNjA5NCwxMyBAQCBzdGF0aWMgaW50IHJlYWRfdGZyYShNT1ZDb250ZXh0ICptb3YsIEFWSU9Db250ZXh0ICpmKQotICAgICB9Ci0gICAgIGZvciAoaSA9IDA7IGkgPCBpbmRleC0+aXRlbV9jb3VudDsgaSsrKSB7Ci0gICAgICAgICBpbnQ2NF90IHRpbWUsIG9mZnNldDsKLSsKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YoZikpIHsKLSsgICAgICAgICAgICBpbmRleC0+aXRlbV9jb3VudCA9IDA7Ci0rICAgICAgICAgICAgYXZfZnJlZXAoJmluZGV4LT5pdGVtcyk7Ci0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICBpZiAodmVyc2lvbiA9PSAxKSB7Ci0gICAgICAgICAgICAgdGltZSAgID0gYXZpb19yYjY0KGYpOwotICAgICAgICAgICAgIG9mZnNldCA9IGF2aW9fcmI2NChmKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFmZWY2Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gYWZjOWM2ODNlZDlkYjAxZWRiMzU3YmM4YzE5ZWRhZDQyODJiM2E5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBUdWUsIDUgU2VwIDIwMTcgMDA6MTY6MjkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvYXNmZGVjOiBGaXggRG9TIGluIGFzZl9idWlsZF9zaW1wbGVfaW5kZXgoKQotCi1GaXhlczogTWlzc2luZyBFT0YgY2hlY2sgaW4gbG9vcAotTm8gdGVzdGNhc2UKLQotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQyMjMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvYXNmZGVjX2YuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYwotaW5kZXggZjNhY2JhZS4uY2M2NDhiOSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLUBAIC0xNjEwLDYgKzE2MTAsMTEgQEAgc3RhdGljIGludCBhc2ZfYnVpbGRfc2ltcGxlX2luZGV4KEFWRm9ybWF0Q29udGV4dCAqcywgaW50IHN0cmVhbV9pbmRleCkKLSAgICAgICAgICAgICBpbnQ2NF90IHBvcyAgICAgICA9IHMtPmludGVybmFsLT5kYXRhX29mZnNldCArIHMtPnBhY2tldF9zaXplICogKGludDY0X3QpcGt0bnVtOwotICAgICAgICAgICAgIGludDY0X3QgaW5kZXhfcHRzID0gRkZNQVgoYXZfcmVzY2FsZShpdGltZSwgaSwgMTAwMDApIC0gYXNmLT5oZHIucHJlcm9sbCwgMCk7Ci0gCi0rICAgICAgICAgICAgaWYgKGF2aW9fZmVvZihzLT5wYikpIHsKLSsgICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgICAgICAgICAgZ290byBlbmQ7Ci0rICAgICAgICAgICAgfQotKwotICAgICAgICAgICAgIGlmIChwb3MgIT0gbGFzdF9wb3MpIHsKLSAgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgInBrdG51bTolZCwgcGt0Y3Q6JWQgIHB0czogJSJQUklkNjQiXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgcGt0bnVtLCBwa3RjdCwgaW5kZXhfcHRzKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U2ODQ1ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gZmZwcm9iZTogRml4IG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aXRoIGNvbG9yIHByaW1hcmllcwotCi1Gb3VuZC1ieTogQUQtbGFiIG9mIHZlbnVzdGVjaAotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDIyNQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBmZnByb2JlLmMgfCAxNSArKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2ZmcHJvYmUuYyBiL2ZmcHJvYmUuYwotaW5kZXggYTIxOWZjMS4uZGYyMmIzMCAxMDA2NDQKLS0tLSBhL2ZmcHJvYmUuYwotKysrIGIvZmZwcm9iZS5jCi1AQCAtMTg5OSw2ICsxODk5LDE2IEBAIHN0YXRpYyB2b2lkIHByaW50X3BrdF9zaWRlX2RhdGEoV3JpdGVyQ29udGV4dCAqdywKLSAgICAgd3JpdGVyX3ByaW50X3NlY3Rpb25fZm9vdGVyKHcpOwotIH0KLSAKLStzdGF0aWMgdm9pZCBwcmludF9wcmltYXJpZXMoV3JpdGVyQ29udGV4dCAqdywgZW51bSBBVkNvbG9yUHJpbWFyaWVzIGNvbG9yX3ByaW1hcmllcykKLSt7Ci0rICAgIGNvbnN0IGNoYXIgKnZhbCA9IGF2X2NvbG9yX3ByaW1hcmllc19uYW1lKGNvbG9yX3ByaW1hcmllcyk7Ci0rICAgIGlmICghdmFsIHx8IGNvbG9yX3ByaW1hcmllcyA9PSBBVkNPTF9QUklfVU5TUEVDSUZJRUQpIHsKLSsJcHJpbnRfc3RyX29wdCgiY29sb3JfcHJpbWFyaWVzIiwgInVua25vd24iKTsKLSsgICAgfSBlbHNlIHsKLSsJcHJpbnRfc3RyKCJjb2xvcl9wcmltYXJpZXMiLCB2YWwpOwotKyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkIGNsZWFyX2xvZyhpbnQgbmVlZF9sb2NrKQotIHsKLSAgICAgaW50IGk7Ci1AQCAtMjQyMCwxMCArMjQzMCw3IEBAIHN0YXRpYyBpbnQgc2hvd19zdHJlYW0oV3JpdGVyQ29udGV4dCAqdywgQVZGb3JtYXRDb250ZXh0ICpmbXRfY3R4LCBpbnQgc3RyZWFtX2lkCi0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgcHJpbnRfc3RyX29wdCgiY29sb3JfdHJhbnNmZXIiLCBhdl9jb2xvcl90cmFuc2Zlcl9uYW1lKHBhci0+Y29sb3JfdHJjKSk7Ci0gCi0tICAgICAgICBpZiAocGFyLT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEKQotLSAgICAgICAgICAgIHByaW50X3N0cigiY29sb3JfcHJpbWFyaWVzIiwgYXZfY29sb3JfcHJpbWFyaWVzX25hbWUocGFyLT5jb2xvcl9wcmltYXJpZXMpKTsKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgICBwcmludF9zdHJfb3B0KCJjb2xvcl9wcmltYXJpZXMiLCBhdl9jb2xvcl9wcmltYXJpZXNfbmFtZShwYXItPmNvbG9yX3ByaW1hcmllcykpOwotKyAgICAgICAgcHJpbnRfcHJpbWFyaWVzKHcsIHBhci0+Y29sb3JfcHJpbWFyaWVzKTsKLSAKLSAgICAgICAgIGlmIChwYXItPmNocm9tYV9sb2NhdGlvbiAhPSBBVkNIUk9NQV9MT0NfVU5TUEVDSUZJRUQpCi0gICAgICAgICAgICAgcHJpbnRfc3RyKCJjaHJvbWFfbG9jYXRpb24iLCBhdl9jaHJvbWFfbG9jYXRpb25fbmFtZShwYXItPmNocm9tYV9sb2NhdGlvbikpOwotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWViZWNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBjb21wbGV0ZSwgY3Jvc3MtcGxhdGZvcm0gc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvLiIKLURFU0NSSVBUSU9OID0gIkZGbXBlZyBpcyB0aGUgbGVhZGluZyBtdWx0aW1lZGlhIGZyYW1ld29yaywgYWJsZSB0byBkZWNvZGUsIGVuY29kZSwgdHJhbnNjb2RlLCBcCi0gICAgICAgICAgICAgICBtdXgsIGRlbXV4LCBzdHJlYW0sIGZpbHRlciBhbmQgcGxheSBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgXAotICAgICAgICAgICAgICAgaGF2ZSBjcmVhdGVkLiBJdCBzdXBwb3J0cyB0aGUgbW9zdCBvYnNjdXJlIGFuY2llbnQgZm9ybWF0cyB1cCB0byB0aGUgY3V0dGluZyBlZGdlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyAmIE1JVCIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgotTElDRU5TRV9saWJhdmNvZGVjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmRldmljZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZmaWx0ZXIgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2Zm9ybWF0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnJlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnV0aWwgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnBvc3Rwcm9jID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGlic3dyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGlic3dzY2FsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtZml4LWZvci1taXBzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MDU0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MDU1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MDU2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MDU3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MDU4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MDU5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTY5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTcwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTcxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MjIyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MjIzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MjI1LnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzQzZGM2NmViZTY3MTgwMjgzYjkyZDAyOWY2OTBkMGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDJhOTAwMmNkYzZiNTMzYjU5NzI4ODI3MTg2YzA0NGFkMDJiYTY0ODQxZjFiN2NkNmMyMTc3OTg3NTQ1M2ExZSIKLQotIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNwotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLSMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQotIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCi1QUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKLQotREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGxpYm9nZyB5YXNtLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBcCi0gICAgICAgICAgICAgICAgICAgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3h2JywgJycsIGQpfSIKLQotIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCi1QQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCi1QQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCi1QQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCi1QQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCi1QQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCi1QQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCi1QQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCi1QQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCi0KLSMgZmVhdHVyZXMgdG8gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgotUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKLVBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKLVBBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NjaHJvZWRpbmdlcl0gPSAiLS1lbmFibGUtbGlic2Nocm9lZGluZ2VyLC0tZGlzYWJsZS1saWJzY2hyb2VkaW5nZXIsc2Nocm9lZGluZ2VyIgotUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItLWVuYWJsZS1zZGwyLC0tZGlzYWJsZS1zZGwyLHZpcnR1YWwvbGlic2RsMiIKLVBBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKLVBBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEiCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCi1QQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCi1QQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgotUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCi1QQUNLQUdFQ09ORklHW3h2XSA9ICItLWVuYWJsZS1vdXRkZXY9eHYsLS1kaXNhYmxlLW91dGRldj14dixsaWJ4diIKLQotIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKLVVTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ29wZW5zc2wnIF0sICd5ZXMnLCAnJywgZCl9IgotCi1kZWYgY3B1KGQpOgotICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6Ci0gICAgICAgICAgICByZXR1cm4gYXJnWzY6XQotICAgIHJldHVybiAnZ2VuZXJpYycKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCi0gICAgLS1lbmFibGUtcGljIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKLSAgICAtLWRpc2FibGUtbGlieGNiIFwKLSAgICAtLWRpc2FibGUtbGlieGNiLXNobSBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYi14Zml4ZXMgXAotICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2hhcGUgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdVU0VfTk9ORlJFRScsICd5ZXMnLCAnLS1lbmFibGUtbm9uZnJlZScsICcnLCBkKX0gXAotICAgIFwKLSAgICAtLWNyb3NzLXByZWZpeD0ke1RBUkdFVF9QUkVGSVh9IFwKLSAgICBcCi0gICAgLS1sZD0iJHtDQ0xEfSIgXAotICAgIC0tY2M9IiR7Q0N9IiBcCi0gICAgLS1jeHg9IiR7Q1hYfSIgXAotICAgIC0tYXJjaD0ke1RBUkdFVF9BUkNIfSBcCi0gICAgLS10YXJnZXQtb3M9ImxpbnV4IiBcCi0gICAgLS1lbmFibGUtY3Jvc3MtY29tcGlsZSBcCi0gICAgLS1leHRyYS1jZmxhZ3M9IiR7VEFSR0VUX0NGTEFHU30gJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKLSAgICAtLWV4dHJhLWxkZmxhZ3M9IiR7VEFSR0VUX0xERkxBR1N9IiBcCi0gICAgLS1zeXNyb290PSIke1NUQUdJTkdfRElSX1RBUkdFVH0iIFwKLSAgICAtLWVuYWJsZS1oYXJkY29kZWQtdGFibGVzIFwKLSAgICAke0VYVFJBX0ZGQ09ORn0gXAotICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1zaGxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9L2ZmbXBlZyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0FWQUlMVFVORVMnLCAnbWlwczMycjInLCAnJywgJy0tZGlzYWJsZS1taXBzZHNwIC0tZGlzYWJsZS1taXBzZHNwcjInLCBkKX0gXAotICAgIC0tY3B1PSR7QGNwdShkKX0gXAotICAgIC0tcGtnLWNvbmZpZz1wa2ctY29uZmlnIFwKLSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIC0tZGlzYWJsZS1hc20iCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLX0KLQotUEFDS0FHRVMgPSsgImxpYmF2Y29kZWMgXAotICAgICAgICAgICAgIGxpYmF2ZGV2aWNlIFwKLSAgICAgICAgICAgICBsaWJhdmZpbHRlciBcCi0gICAgICAgICAgICAgbGliYXZmb3JtYXQgXAotICAgICAgICAgICAgIGxpYmF2cmVzYW1wbGUgXAotICAgICAgICAgICAgIGxpYmF2dXRpbCBcCi0gICAgICAgICAgICAgbGlicG9zdHByb2MgXAotICAgICAgICAgICAgIGxpYnN3cmVzYW1wbGUgXAotICAgICAgICAgICAgIGxpYnN3c2NhbGUiCi0KLUZJTEVTX2xpYmF2Y29kZWMgPSAiJHtsaWJkaXJ9L2xpYmF2Y29kZWMke1NPTElCU30iCi1GSUxFU19saWJhdmRldmljZSA9ICIke2xpYmRpcn0vbGliYXZkZXZpY2Uke1NPTElCU30iCi1GSUxFU19saWJhdmZpbHRlciA9ICIke2xpYmRpcn0vbGliYXZmaWx0ZXIke1NPTElCU30iCi1GSUxFU19saWJhdmZvcm1hdCA9ICIke2xpYmRpcn0vbGliYXZmb3JtYXQke1NPTElCU30iCi1GSUxFU19saWJhdnJlc2FtcGxlID0gIiR7bGliZGlyfS9saWJhdnJlc2FtcGxlJHtTT0xJQlN9IgotRklMRVNfbGliYXZ1dGlsID0gIiR7bGliZGlyfS9saWJhdnV0aWwke1NPTElCU30iCi1GSUxFU19saWJwb3N0cHJvYyA9ICIke2xpYmRpcn0vbGlicG9zdHByb2Mke1NPTElCU30iCi1GSUxFU19saWJzd3Jlc2FtcGxlID0gIiR7bGliZGlyfS9saWJzd3Jlc2FtcGxlJHtTT0xJQlN9IgotRklMRVNfbGlic3dzY2FsZSA9ICIke2xpYmRpcn0vbGlic3dzY2FsZSR7U09MSUJTfSIKLQotIyBmZm1wZWcgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZjb2RlYyA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmRldmljZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZpbHRlciA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZvcm1hdCA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnV0aWwgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZyZXNhbXBsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3NjYWxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlicG9zdHByb2MgPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5Y2Y3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuNC4yLmJiCkBAIC0wLDAgKzEsMTUxIEBACitTVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCitERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAorICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKKyAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCitMSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKK0xJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCitMSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYmY0ZWFkMjI3ZmNlZGRkZjU0Yzg2MDEzNzA1YTk4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYjkyZTk1NzhlZjhiM2U0OWVlYWIyMjllNjkzMDVmNWY0Y2JjMWZkYWEyMmU5MjdmYzdmY2ExOGFjY2NkNzQwIgorCisjIEJ1aWxkIGZhaWxzIHdoZW4gdGh1bWIgaXMgZW5hYmxlZDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE3CitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworIyBTaG91bGQgYmUgQVBJIGNvbXBhdGlibGUgd2l0aCBsaWJhdiAod2hpY2ggd2FzIGEgZm9yayBvZiBmZm1wZWcpCisjIGxpYnBvc3Rwcm9jIHdhcyBwcmV2aW91c2x5IHBhY2thZ2VkIGZyb20gYSBzZXBhcmF0ZSByZWNpcGUKK1BST1ZJREVTID0gImxpYmF2IGxpYnBvc3Rwcm9jIgorCitERVBFTkRTID0gImFsc2EtbGliIHpsaWIgbGlib2dnIHlhc20tbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImF2ZGV2aWNlIGF2ZmlsdGVyIGF2Y29kZWMgYXZmb3JtYXQgc3dyZXNhbXBsZSBzd3NjYWxlIHBvc3Rwcm9jIFwKKyAgICAgICAgICAgICAgICAgICBiemxpYiBncGwgbHptYSB0aGVvcmEgeDI2NCBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneHYnLCAnJywgZCl9IgorCisjIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKK1BBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKK1BBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKK1BBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKK1BBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKK1BBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKK1BBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKK1BBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKK1BBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKKworIyBmZWF0dXJlcyB0byBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCitQQUNLQUdFQ09ORklHW2dwbF0gPSAiLS1lbmFibGUtZ3BsLC0tZGlzYWJsZS1ncGwiCitQQUNLQUdFQ09ORklHW2dzbV0gPSAiLS1lbmFibGUtbGliZ3NtLC0tZGlzYWJsZS1saWJnc20sbGliZ3NtIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1pbmRldj1qYWNrLC0tZGlzYWJsZS1pbmRldj1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW2xpYnZvcmJpc10gPSAiLS1lbmFibGUtbGlidm9yYmlzLC0tZGlzYWJsZS1saWJ2b3JiaXMsbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6IgorUEFDS0FHRUNPTkZJR1ttcDNsYW1lXSA9ICItLWVuYWJsZS1saWJtcDNsYW1lLC0tZGlzYWJsZS1saWJtcDNsYW1lLGxhbWUiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2RsMl0gPSAiLS1lbmFibGUtc2RsMiwtLWRpc2FibGUtc2RsMix2aXJ0dWFsL2xpYnNkbDIiCitQQUNLQUdFQ09ORklHW3NwZWV4XSA9ICItLWVuYWJsZS1saWJzcGVleCwtLWRpc2FibGUtbGlic3BlZXgsc3BlZXgiCitQQUNLQUdFQ09ORklHW3RoZW9yYV0gPSAiLS1lbmFibGUtbGlidGhlb3JhLC0tZGlzYWJsZS1saWJ0aGVvcmEsbGlidGhlb3JhIgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgorUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgorUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKK1BBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgorUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCisKKyMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCitVU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKKworZGVmIGNwdShkKToKKyAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKKyAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgorICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KKyAgICByZXR1cm4gJ2dlbmVyaWMnCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAorICAgIC0tZW5hYmxlLXBpYyBcCisgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCisgICAgLS1kaXNhYmxlLWxpYnhjYiBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi1zaG0gXAorICAgIC0tZGlzYWJsZS1saWJ4Y2IteGZpeGVzIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXNoYXBlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKKyAgICBcCisgICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCisgICAgXAorICAgIC0tbGQ9IiR7Q0NMRH0iIFwKKyAgICAtLWNjPSIke0NDfSIgXAorICAgIC0tY3h4PSIke0NYWH0iIFwKKyAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAorICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAorICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAorICAgIC0tZXh0cmEtY2ZsYWdzPSIke1RBUkdFVF9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCisgICAgLS1leHRyYS1sZGZsYWdzPSIke1RBUkdFVF9MREZMQUdTfSIgXAorICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCisgICAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcyBcCisgICAgJHtFWFRSQV9GRkNPTkZ9IFwKKyAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAorICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKKyAgICAtLWNwdT0ke0BjcHUoZCl9IFwKKyAgICAtLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCisiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK1BBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKKyAgICAgICAgICAgICBsaWJhdmRldmljZSBcCisgICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAorICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKKyAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJhdnV0aWwgXAorICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKKyAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJzd3NjYWxlIgorCitGSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgorRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgorRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgorRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgorRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgorRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgorRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCisKKyMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTg3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGExZDdjNTgyMzkyYzhiYzg3ZmE5NDExYWY3N2IyMGUwMTE5NDQzNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjUgSmFuIDIwMTggMTc6NTU6MDIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3N0L2dzdHBsdWdpbmxvYWRlci5jOiB3aGVuIGVudiB2YXIgaXMgc2V0IGRvIG5vdCBmYWxsCisgdGhyb3VnaCB0byBzeXN0ZW0gcGx1Z2luIHNjYW5uZXIKKworSWYgd2Ugc2V0IGEgY3VzdG9tIEdTVF9QTFVHSU5fU0NBTk5FUiBlbnYgdmFyLCB0aGVuIHdlIHByb2JhYmx5IHdhbnQgdG8gdXNlIHRoYXQgYW5kIG9ubHkgdGhhdC4KKworRmFsbGluZyB0aHJvdWdoIHRvIHRoZSBvbmUgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0gaXMgcHJvYmxhbWF0aWMgaW4gY3Jvc3MtY29tcGlsYXRpb24KK2Vudmlyb25lbW50cywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9uZSBwb2ludGVkIHRvIGJ5IHRoZSBlbnYgdmFyIHN1Y2NlZWRlZCBvciBmYWlsZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBnc3QvZ3N0cGx1Z2lubG9hZGVyLmMgfCA0ICstLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QvZ3N0cGx1Z2lubG9hZGVyLmMgYi9nc3QvZ3N0cGx1Z2lubG9hZGVyLmMKK2luZGV4IDQzMDgyOWQuLjNhNzU3MzEgMTAwNjQ0CistLS0gYS9nc3QvZ3N0cGx1Z2lubG9hZGVyLmMKKysrKyBiL2dzdC9nc3RwbHVnaW5sb2FkZXIuYworQEAgLTQ3MSw5ICs0NzEsNyBAQCBnc3RfcGx1Z2luX2xvYWRlcl9zcGF3biAoR3N0UGx1Z2luTG9hZGVyICogbG9hZGVyKQorICAgICBoZWxwZXJfYmluID0gZ19zdHJkdXAgKGVudik7CisgICAgIHJlcyA9IGdzdF9wbHVnaW5fbG9hZGVyX3RyeV9oZWxwZXIgKGxvYWRlciwgaGVscGVyX2Jpbik7CisgICAgIGdfZnJlZSAoaGVscGVyX2Jpbik7CistICB9CistCistICBpZiAoIXJlcykgeworKyAgfSBlbHNlIHsKKyAgICAgR1NUX0xPRyAoIlRyeWluZyBpbnN0YWxsZWQgcGx1Z2luIHNjYW5uZXIiKTsKKyAKKyAjaWZkZWYgR19PU19XSU4zMgorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ndGstZG9jLXR3ZWFrcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvZ3RrLWRvYy10d2Vha3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg2Yzc4ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvZ3RrLWRvYy10d2Vha3MucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA3MDE4Y2ExYzRiZjI2YzgzMTdlN2ZjZDJlN2U0ZTY0ODE5NWY0MmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMjAgRGVjIDIwMTcgMTM6MDM6MDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3N0cmVhbWVyOiB1c2UgYSBwYXRjaCBpbnN0ZWFkIG9mIHNlZCB0byBmaXggZ3RrLWRvYworCitQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudAorYmluYXJpZXMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5LgorCitBbHNvIHN1YnN0aXR1dGUgYSBib2d1cyBwbHVnaW4gc2Nhbm5lciwgYXMgdHJ5aW5nIHRvIHJ1biB0aGUgcmVhbCBvbmUgaXMgY2F1c2luZworaXNzdWVzIGR1cmluZyBidWlsZCBvbiB4ODZfNjQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tCisgY29tbW9uL2d0ay1kb2MubWFrIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb21tb24vZ3RrLWRvYy5tYWsgYi9jb21tb24vZ3RrLWRvYy5tYWsKK2luZGV4IDNmODM0OTEuLmU1Y2IwZDEgMTAwNjQ0CistLS0gYS9jb21tb24vZ3RrLWRvYy5tYWsKKysrKyBiL2NvbW1vbi9ndGstZG9jLm1haworQEAgLTYsMTEgKzYsMTEgQEAKKyBpZiBHVEtfRE9DX1VTRV9MSUJUT09MCisgR1RLRE9DX0NDID0gJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKElOQ0xVREVTKSAkKEdUS0RPQ19ERVBTX0NGTEFHUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQorIEdUS0RPQ19MRCA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWxpbmsgJChDQykgJChHVEtET0NfREVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKQorLUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCisrR1RLRE9DX1JVTiA9ICQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXIKKyBlbHNlCisgR1RLRE9DX0NDID0gJChDQykgJChJTkNMVURFUykgJChHVEtET0NfREVQU19DRkxBR1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKKyBHVEtET0NfTEQgPSAkKENDKSAkKEdUS0RPQ19ERVBTX0xJQlMpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpCistR1RLRE9DX1JVTiA9CisrR1RLRE9DX1JVTiA9ICQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXIKKyBlbmRpZgorIAorICMgV2Ugc2V0IEdQQVRIIGhlcmU7IHRoaXMgZ2l2ZXMgdXMgc2VtYW50aWNzIGZvciBHTlUgbWFrZQorQEAgLTEwMSw2ICsxMDEsNyBAQCBzY2FuLWJ1aWxkLnN0YW1wOiAkKEhGSUxFX0dMT0IpICQoQ0ZJTEVfR0xPQikKKyAJICAgIEdTVF9QTFVHSU5fUEFUSF8xXzA9CQkJCQlcCisgCSAgICBHU1RfUkVHSVNUUllfMV8wPWRvYy1yZWdpc3RyeS54bWwJCQkJXAorIAkgICAgJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpCQkJCQlcCisrCSAgICBHU1RfUExVR0lOX1NDQU5ORVJfMV8wPSIkKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXItZHVtbXkiIFwKKyAJICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVOKSIJXAorIAkgICAgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIJCQkJXAorIAkgICAgTERGTEFHUz0iJChHVEtET0NfTElCUykgJChMREZMQUdTKSIJCQkJXAorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtZXhhbXBsZXMvMDAwMS1NYWtlLXBsYXllci1leGFtcGxlcy1pbnN0YWxsYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzLzAwMDEtTWFrZS1wbGF5ZXItZXhhbXBsZXMtaW5zdGFsbGFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMzOGJhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzLzAwMDEtTWFrZS1wbGF5ZXItZXhhbXBsZXMtaW5zdGFsbGFibGUucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA3NTVmNmRhYjA3NTY1YWNhN2I2YWVmYWNhZDhiZTY1ZGUzNjRmZjc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFRodSwgMTcgQXVnIDIwMTcgMTE6MDc6MDIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBwbGF5ZXIgZXhhbXBsZXMgaW5zdGFsbGFibGUKKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtVcHN0cmVhbSBjb25zaWRlcnMgdGhlc2UgY29kZSBleGFtcGxlcywgZm9yIG5vdyBhIGxlYXN0XQorCitodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3ODI3CistLS0KKyBwbGF5YmFjay9wbGF5ZXIvZ3N0LXBsYXkvbWVzb24uYnVpbGQgfCAxICsKKyBwbGF5YmFjay9wbGF5ZXIvZ3RrL21lc29uLmJ1aWxkICAgICAgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkIGIvcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkCitpbmRleCA3MTliNTViLi5hNTZmZTEzIDEwMDY0NAorLS0tIGEvcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkCisrKysgYi9wbGF5YmFjay9wbGF5ZXIvZ3N0LXBsYXkvbWVzb24uYnVpbGQKK0BAIC04LDUgKzgsNiBAQCBleGVjdXRhYmxlKCdnc3QtcGxheScsCisgICAgIFsnZ3N0LXBsYXkuYycsCisgICAgICAnZ3N0LXBsYXkta2IuYycsCisgICAgICAnZ3N0LXBsYXkta2IuaCddLAorKyAgICBpbnN0YWxsOiB0cnVlLAorICAgICBkZXBlbmRlbmNpZXMgOiBbZ3N0X2RlcCwgZ3N0cGxheWVyX2RlcCwgbV9kZXBdKQorIAorZGlmZiAtLWdpdCBhL3BsYXliYWNrL3BsYXllci9ndGsvbWVzb24uYnVpbGQgYi9wbGF5YmFjay9wbGF5ZXIvZ3RrL21lc29uLmJ1aWxkCitpbmRleCAwOGFhZTRmLi42NzFhNjVkIDEwMDY0NAorLS0tIGEvcGxheWJhY2svcGxheWVyL2d0ay9tZXNvbi5idWlsZAorKysrIGIvcGxheWJhY2svcGxheWVyL2d0ay9tZXNvbi5idWlsZAorQEAgLTE4LDUgKzE4LDYgQEAgZXhlY3V0YWJsZSgnZ3RrLXBsYXknLAorICAgICAgIGd0a19wbGF5X3Jlc291cmNlcywKKyAgICAgICdndGstdmlkZW8tcmVuZGVyZXIuaCcsCisgICAgICAnZ3RrLXZpZGVvLXJlbmRlcmVyLmMnXSwKKysgICAgaW5zdGFsbDogdHJ1ZSwKKyAgICAgZGVwZW5kZW5jaWVzIDogW2dsaWJfZGVwLCBnb2JqZWN0X2RlcCwgZ21vZHVsZV9kZXAsIGdzdF9kZXAsIGdzdHRhZ19kZXAsIGdzdHBsYXllcl9kZXAsIGd0a19kZXAsIHgxMV9kZXBdKQorIAorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2dzdC1wbGF5ZXIuZGVza3RvcCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzL2dzdC1wbGF5ZXIuZGVza3RvcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyL2dzdC1wbGF5ZXIuZGVza3RvcApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtZXhhbXBsZXMvZ3N0LXBsYXllci5kZXNrdG9wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlc19naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ4N2YyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzX2dpdC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkdTdHJlYW1lciBleGFtcGxlcyAoaW5jbHVkaW5nIGd0ay1wbGF5LCBnc3QtcGxheSkiCitMSUNFTlNFID0gIkxHUEwtMi4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BsYXliYWNrL3BsYXllci9ndGsvZ3RrLXBsYXkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mOGM3MmRhZTNkMzY4MjNlYzcxNmE5ZWJjYWU1OTNiOSIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgZ3RrKzMgZ2xpYi0yLjAtbmF0aXZlIgorCitTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtZXhhbXBsZXMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXBsYXllci1leGFtcGxlcy1pbnN0YWxsYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nc3QtcGxheWVyLmRlc2t0b3AiCisKK1NSQ1JFViA9ICI0ODI0N2M2YWI2ODA3ZDZhZTE3OWNmNjUzY2JkYzY0NzE0ZDMzMTNjIgorUFYgPSAiMC4wLjErZ2l0JHtTUkNQVn0iCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1tIDA2NDQgLUQgJHtXT1JLRElSfS9nc3QtcGxheWVyLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2dzdC1wbGF5ZXIuZGVza3RvcAorfQorCitSREVQRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXBsYXliYWNrIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1tZXRhIFwKKyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QtbWV0YSBcCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQtbWV0YSBcCisgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAiZ3N0cmVhbWVyMS4wLWxpYmF2IiwgIiIsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LW1ldGEiLCAiIiwgZCl9IgorUlBST1ZJREVTXyR7UE59ICs9ICJnc3QtcGxheWVyIGdzdC1wbGF5ZXItYmluIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZThmZGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiR1N0cmVhbWVyIHBsYXliYWNrIGhlbHBlciBsaWJyYXJ5IGFuZCBleGFtcGxlcyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ3RrL2d0ay1wbGF5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZjhjNzJkYWUzZDM2ODIzZWM3MTZhOWViY2FlNTkzYjkiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIGd0ayszIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Nkcm9lZ2UvZ3N0LXBsYXllci5naXQgXAotICAgICAgICAgICBmaWxlOi8vZ3N0LXBsYXllci5kZXNrdG9wIgotCi1TUkNSRVYgPSAiZWUzYzIyNmM4Mjc2N2EwODk3NDNlNGUwNjA1ODc0M2U2N2Y3M2NkYiIKLVBWID0gIjAuMC4xK2dpdCR7U1JDUFZ9IgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCXRvdWNoICR7U30vQ2hhbmdlTG9nCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLW0gMDY0NCAtRCAke1dPUktESVJ9L2dzdC1wbGF5ZXIuZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvZ3N0LXBsYXllci5kZXNrdG9wCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtcGxheWJhY2siCi1SUkVDT01NRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLW1ldGEgXAotICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC1tZXRhIFwKLSAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC1tZXRhIFwKLSAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtbGliYXYiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgImdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHktbWV0YSIsICIiLCBkKX0iCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LWJpbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjI1ODVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xMi40LmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiR3N0cmVhbWVyIHZhbGlkYXRpb24gdG9vbCIKK0RFU0NSSVBUSU9OID0gIkEgVG9vbCB0byB0ZXN0IEdTdHJlYW1lciBjb21wb25lbnRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2dzdC12YWxpZGF0ZS8xLjEyLjMuaHRtbCIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtCUE59LyR7QlB9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYzA3NGQ0OTY3NzA4MWY5YzI3ZGUxMWEwOTE2NTc0NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmOWRhOWRmZTZlNWQ2ZjViYTNiMzhjNTc1MmI0MmQzZjkyNzcxNTkwNDk0MmI0MDVjMjkyNGQzY2I3N2FmYmExIgorCitERVBFTkRTID0gImpzb24tZ2xpYiBnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdpdCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC8qICR7bGliZGlyfS9nc3QtdmFsaWRhdGUtbGF1bmNoZXIvKiAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qIgorCitpbmhlcml0IHBrZ2NvbmZpZyBnZXR0ZXh0IGF1dG90b29scyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworIyBXaXRoIGd0ay1kb2MgZW5hYmxlZCB0aGlzIHJlY2lwZSBmYWlscyB0byBidWlsZCwgc28gZm9yY2libHkgZGlzYWJsZSBpdDoKKyMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlL2dzdC12YWxpZGF0ZS1zY2FuOiBsaW5lIDExNzoKKyMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlLy5saWJzL2x0LWdzdC12YWxpZGF0ZS1zY2FuOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitHVEtET0NfRU5BQkxFRCA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1YmJkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1saWJhdi5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V4dC9saWJhdi9nc3Rhdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PWE3NTJjMzUyNjdkODI3NmZkOWNhM2RiNjk5NGZjYTljIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1saWJhdi9nc3QtbGliYXYtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaGV2Y3ByZWRfbXNhLmMtRml4LWJ1aWxkLWJ5LUluY2x1ZGluZy1saWJhdmNvZGVjLWhldi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4Nzg4YWVjYzAzMmEyODcyMjdiNGJkMjM5ZDFiOTk4YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YmI3MzViOWJiMjE4YjY1MmFlNDA3MWVhNmY2YmU4ZWFhZTU1ZTlkMzIzM2FlYzJmMzZiODgyYTI3NTQyZGIzIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNTQ3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjQuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOGE4NTFiZjJlNDc1ZTkwYTNmZGFjOTUwNmUzZTRkYmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmE1NmFhNWQyZDhjZDkxMmYyYmNlMTdmMTc0NzEzZDJjNDE3Y2EyOThmMWY5YzI4ZWU2NmQ0YWExZTFkOWU2MiIKKworUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWQ0NTc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1pbmNsdWRlIGdzdHJlYW1lcjEuMC1vbXguaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LW9teC9nc3Qtb214LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRhMTQwNGEyMGI3MmU0YWI2ZTgyNjUwMDIxOGVjMzA4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMjIzOThmNDVhMDI3ZTk3N2QyYjUzMDk2MjVlYzkxY2RjYWYwZGE4NzUxY2JjN2Y1OTZkNjM5YTQ1YmEyOTgiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3Qtb214LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y3ZWFlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjQuYmIKQEAgLTAsMCArMSwxMSBAQAoraW5jbHVkZSBnc3RyZWFtZXIxLjAtb214LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjhkNWFlM2I2OWNmZWVkOWRjNzdjNTkyMTA2MjQ3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMDI1ZmEyNDI0MmVjODY4ZmUwZmYxZTY2ZDgwNmExMDcwYmNiYzdjMTRhOTg3YTg5Y2RjMzM5NWQwZDU2ZDVmIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwppbmRleCA3YmUxNWQ5Li5jYTJlYTllIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdkaXJlY3RmYiB2dWxrYW4nLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAotICAgIGJ6MiBjdXJsIGRhc2ggZHRscyBobHMgbmVvbiByc3ZnIHNiYyBzbW9vdGhzdHJlYW1pbmcgc25kZmlsZSB1dmNoMjY0IHdlYnAgXAorICAgIGJ6MiBjdXJsIGRhc2ggZHRscyBobHMgcnN2ZyBzYmMgc21vb3Roc3RyZWFtaW5nIHNuZGZpbGUgdXZjaDI2NCB3ZWJwIFwKICIKIAogUEFDS0FHRUNPTkZJR1thc3NyZW5kZXJdICAgICAgID0gIi0tZW5hYmxlLWFzc3JlbmRlciwtLWRpc2FibGUtYXNzcmVuZGVyLGxpYmFzcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZDkzYWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDdjOGY2OGM1NDI4MzgwYjkzMDU3OWRjOWVmMjdjODUzMjY0NDQ4ZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNSBNYXkgMjAxNyAxNTowNjoxMSArMDMwMAotU3ViamVjdDogW1BBVENIXSBQcmVwZW5kIFBLR19DT05GSUdfU1lTUk9PVF9ESVIgdG8gcGtnLWNvbmZpZyBvdXRwdXQKLQotSW4gY3Jvc3MgZW52aXJvbm1lbnQgd2UgaGF2ZSB0byBwcmVwZW5kIHRoZSBzeXNyb290IHRvIHRoZSBwYXRoIGZvdW5kIGJ5Ci1wa2djb25maWcgc2luY2UgdGhlIHBhdGggcmV0dXJuZWQgZnJvbSBwa2djb25maWcgZG9lcyBub3QgaGF2ZSBzeXNyb290IHByZWZpeGVkCi1pdCBlbmRzIHVwIHVzaW5nIHRoZSBmaWxlcyBmcm9tIGhvc3Qgc3lzdGVtLiBJZiBidWlsZCBob3N0IGhhcyB3YXlsYW5kIGluc3RhbGxlZAotdGhlIGJ1aWxkIHdpbGwgc3VjY2VlZCBidXQgaWYgeW91IGRvbnQgaGF2ZSB3YXlsYW5kLXByb3RvY29scyBpbnN0YWxsZWQgb24gYnVpbGQKLWhvc3QgdGhlbiBpdCB3b250IGZpbmQgdGhlIGZpbGVzIG9uIGJ1aWxkIGhvc3QKLQotVGhpcyBzaG91bGQgd29yayBvayB3aXRoIG5vbiBzeXNyb290ZWQgYnVpbGRzIHRvbyBzaW5jZQotaW4gdGhvc2UgY2FzZXMgUEtHX0NPTkZJR19TWVNST09UX0RJUiB3aWxsIGJlIGVtcHR5Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGUzMDdiZTYuLjgzY2RlYjAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIyNzIsNyArMjI3Miw3IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKFdBWUxBTkQsIFt3YXlsYW5kIHNpbmtdLCB3YXlsYW5kICwgWwotICAgUEtHX0NIRUNLX01PRFVMRVMoV0FZTEFORCwgd2F5bGFuZC1jbGllbnQgPj0gMS40LjAgbGliZHJtID49IDIuNC41NSB3YXlsYW5kLXByb3RvY29scyA+PSAxLjQsIFsKLSAgICAgaWYgdGVzdCAieCR3YXlsYW5kX3NjYW5uZXIiICE9ICJ4IjsgdGhlbgotICAgICAgIEhBVkVfV0FZTEFORD0ieWVzIgotLSAgICAgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsIGAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotKyAgICAgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsICR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2ApCi0gICAgIGVsc2UKLSAgICAgICBBQ19NU0dfUkVTVUxUKFt3YXlsYW5kLXNjYW5uZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHdheWxhbmQgcGx1Z2luXSkKLSAgICAgICBIQVZFX1dBWUxBTkQ9Im5vIgotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaAppbmRleCBkNTJhZmQ1Li5hZDg2MzI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKQEAgLTE4LDExICsxOCwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8ICAgMjMgKysrKysrKysrKysrKysrKystLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMGU5NWM1Yy4uMTIxNTNiNCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTkwMSw2ICsxOTAxLDE1IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKENIUk9NQVBSSU5ULCBbY2hyb21hcHJpbnRdLCBjaHJvbWFwcmludCwgWworSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTIuMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMvY29uZmlndXJlLmFjCitAQCAtMjEzOSw2ICsyMTM5LDE1IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKENIUk9NQVBSSU5ULCBbY2hyb20KICBdKQogIAogIGRubCAqKiogQ3VybCAqKioKQEAgLTM3LDggKzM3LDggQEAKICsKICB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9DVVJMLCB0cnVlKQogIEFHX0dTVF9DSEVDS19GRUFUVVJFKENVUkwsIFtDdXJsIHBsdWdpbl0sIGN1cmwsIFsKLSAgIFBLR19DSEVDS19NT0RVTEVTKENVUkwsIGxpYmN1cmwgPj0gNy4yMS4wLCBbCi1AQCAtMTkxNSwxMiArMTkyNCwxNCBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dLCBjdXJsLCBbCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhDVVJMLCBsaWJjdXJsID49IDcuMzUuMCwgWworQEAgLTIxNjEsMTIgKzIxNzAsMTQgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ1VSTCwgW0N1cmwgcGx1Z2luXQogICAgXSkKICAgIEFDX1NVQlNUKENVUkxfQ0ZMQUdTKQogICAgQUNfU1VCU1QoQ1VSTF9MSUJTKQpAQCAtNTksNiArNTksMyBAQAogICAgQU1fQ09ORElUSU9OQUwoVVNFX1NTSDIsIHRlc3QgIngkSEFWRV9TU0gyIiA9ICJ4eWVzIikKICAgIEFDX1NVQlNUKFNTSDJfQ0ZMQUdTKQogICAgQUNfU1VCU1QoU1NIMl9MSUJTKQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMyMWRhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzNhNTg1NWE4MTE5ZGViMDE3ZjVmMTNjZjMyNzA5NWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTIxNjgyZTRlOGZlYTUyNDEzZmQyNmM2MGFjYjkwN2U1ICIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggXAotICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKLSAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWxzLWZvci1nc3Rfc3RydWN0dXJlX2dldC1ldGMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaCBcCi0gICAgZmlsZTovL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdmtkaXNwbGF5LVVzZS1pZmRlZi1mb3ItcGxhdGZvcm0tc3BlY2lmaWMtZGVmaW5lcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNTY4M2YwZWE5MWY5ZTFlMDYxM2IwZjZmNzI5OTgwYTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWMyYzdlZGRlNGY1OWQ3NGViNDE0ZTA3MDFjNTUxMzFmNTYyZTVjNjA1YTNjZTliMDkxNzU0ZjEwNmMwOWUzNyIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKLQotRVhUUkFfT0VDT05GICs9ICJXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUj0ke1JFQ0lQRV9TWVNST09UfSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYzdmZmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjQuYmIKQEAgLTAsMCArMSwyNCBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCisgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICBmaWxlOi8vbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi12dWxrYW4tVXNlLXRoZS1nZW5lcmF0ZWQtdmVyc2lvbi1vZi12a2NvbmZpZy5oLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NGJmMTZjZjE1ZWRhYWIxYzBlMDJjOGRlZTcxNzBkMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzc4NTdiZTE2Njg2ZDVjMWJhNmUzNGJkMzM4NjY0ZDNkNDU5OWQzMjcxNGE4ZWNhNWM4YTQxYTEwMWUyZDA4IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgorCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCmluZGV4IDBhOGJjOWIuLjY2MTZlMmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaApAQCAtMjAsMTEgKzIwLDExIEBACiAgZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtICAgICAgfCAgOCArKysrLS0tLQogIDExIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotaW5kZXggYmM3ZjUzYS4uMGVmNWY4NiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotQEAgLTM1LDcgKzM1LDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhbGxvY2F0b3JzLUAKK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KKysrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQorQEAgLTM2LDcgKzM2LDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSQogIAkJLS1jLWluY2x1ZGUgImdzdC9hbGxvY2F0b3JzL2FsbG9jYXRvcnMuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTMzLDcgKzMzLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RhbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1saWJ0b29sPSIkKExJQlRPT0wpIiBcCi1AQCAtNTksNyArNTksNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtNjAsNyArNjAsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTQyLDExICs0MiwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCi1pbmRleCBkY2MyZmUwLi5kYzA3NmNiIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotQEAgLTQ4LDggKzQ4LDggQEAgR3N0QXBwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU8KK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQorQEAgLTQ4LDggKzQ4LDggQEAgR3N0QXBwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRQogIAkJLS1jLWluY2x1ZGUgImdzdC9hcHAvYXBwLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC01NywxMSArNTcsMTEgQEAKICAJCS0tbGlicmFyeT1saWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi1pbmRleCAyMzc0MTk2Li4yOTVlYjQyIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KLUBAIC0xMDYsMTIgKzEwNiwxMiBAQCBHc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhdWRpby1AR1NUX0FQSV9WRQorSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCitAQCAtMTY3LDEyICsxNjcsMTIgQEAgR3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPUwogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKICAJCS0tYy1pbmNsdWRlICJnc3QvYXVkaW8vYXVkaW8uaCIgXApAQCAtNzgsNyArNzgsNyBAQAogIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMTQwLDggKzE0MCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC0yMDEsOCArMjAxLDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAogIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKQEAgLTg5LDExICs4OSwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbQotaW5kZXggZjU0NTM1NC4uMWJiNjI0MyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLUBAIC02Miw3ICs2Miw3IEBAIEdzdEZmdC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RmZnQtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KK0BAIC02Myw3ICs2Myw3IEBAIEdzdEZmdC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvZmZ0L2ZmdC5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMTAyLDcgKzEwMiw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1saWJ0b29sPSIkKExJQlRPT0wpIiBcCi1AQCAtODYsNyArODYsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtODcsNyArODcsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTExMSwxMSArMTExLDExIEBACiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAKICBDTEVBTkZJTEVTID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotaW5kZXggOTFkYzIxNC4uZGM4ZTFkMyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotQEAgLTg0LDE0ICs4NCwxNCBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBidXRpbHMtQEdTVF9BUAorSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCitAQCAtODUsMTQgKzg1LDE0IEBAIEdzdFBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFIKICAJCS0tYy1pbmNsdWRlICJnc3QvcGJ1dGlscy9wYnV0aWxzLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0xMzQsNyArMTM0LDcgQEAKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3ZpZGVvLyIgXAogIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi1AQCAtMTI0LDggKzEyNCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC0xMjUsOCArMTI1LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0xNDUsMTEgKzE0NSwxMSBAQAogIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby8iIFwKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1pbmRleCAzYmQ4ZmMwLi4wYTExNWNjIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1AQCAtNDEsOCArNDEsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KK0BAIC00Miw4ICs0Miw4IEBAIGxpYmdzdHJpZmZfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUwogICMJCS0tYy1pbmNsdWRlICJnc3QvcmlmZi9yaWZmLmgiIFwKICAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vdGFnIFwKICAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vYXVkaW8gXApAQCAtMTYwLDcgKzE2MCw3IEBACiAgIwkJLS1saWJyYXJ5PWxpYmdzdHJpZmYtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogICMJCS0taW5jbHVkZT1Hc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgIwkJLS1pbmNsdWRlPUdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtNzMsOCArNzMsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCitAQCAtNzQsOCArNzQsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAogICMJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKS8uLi90YWcgXAogICMJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKS8uLi9hdWRpbyBcCkBAIC0xNzEsMTEgKzE3MSwxMSBAQAogICMJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogICMKICAjQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCi1pbmRleCBmNTQ0NWMxLi41MjdjMGI0IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotQEAgLTYwLDggKzYwLDggQEAgR3N0UnRwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU8KK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorQEAgLTYxLDggKzYxLDggQEAgR3N0UnRwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRQogIAkJLS1jLWluY2x1ZGUgImdzdC9ydHAvcnRwLmgiIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC0xODYsNyArMTg2LDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RydHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtODgsOCArODgsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtODksOCArODksOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTE5NywxMSArMTk3LDExIEBACiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAKICBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLWluZGV4IDliMGIyNTguLjRmNmQ5ZjggMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC02Nyw3ICs2Nyw3IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KK0BAIC02OCw3ICs2OCw3IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1AKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vc2RwIFwKQEAgLTIxMCw3ICsyMTAsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdpby0yLjAgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtOTcsNyArOTcsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtOTgsNyArOTgsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vc2RwIFwKQEAgLTIxOSwxMSArMjE5LDExIEBACiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAKICBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi1pbmRleCAwZTE0OWI4Li45YWEwNTEyIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotQEAgLTI5LDcgKzI5LDcgQEAgR3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU8KK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorQEAgLTMwLDcgKzMwLDcgQEAgR3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRQogIAkJLS13YXJuLWFsbCBcCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3NkcC9zZHAuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTIzMiw3ICsyMzIsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTUzLDcgKzUzLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0yNDEsMTEgKzI0MSwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi1pbmRleCBjYWZhZmQzLi5iYTk5Mjc5IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotQEAgLTQwLDggKzQwLDggQEAgR3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU8KK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorQEAgLTU5LDggKzU5LDggQEAgR3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRQogIAkJLS1jLWluY2x1ZGUgImdzdC90YWcvdGFnLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0yNTYsMzMgKzI1Niw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTY4LDggKzY4LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLWluZGV4IGFjNjRlYjMuLjM0MmM4YzYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotQEAgLTExMSw4ICsxMTEsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQotIAkJLS1jLWluY2x1ZGUgImdzdC92aWRlby92aWRlby5oIiBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMTM5LDggKzEzOSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC04Nyw4ICs4Nyw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMjkzLDYgKzI2NywyOSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLS0tIAotMi42LjIKLQorSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCitAQCAtMTE2LDggKzExNiw4IEBAIEdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1MKKyAJCS0tYy1pbmNsdWRlICJnc3QvdmlkZW8vdmlkZW8uaCIgXAorIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKyAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKy0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAorLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKysJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKysJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAorIAkJLS1saWJyYXJ5PWxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKyAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAorIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAorQEAgLTE0NCw4ICsxNDQsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CisgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKKyAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAorIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKKy0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAorLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKysJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKysJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAorIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCisgCisgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGUwYjhiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1NGNlOTM0NTcyNzE3NWZmNjZkMTdiNjdmZjUxZjU4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2ggXAotICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNzdmNTM3OWM0Y2E2Nzc2MTZiNDE1ZTNiM2ZmOTU1NzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA2N2RjZTNhZmUxOTdhOTUzNmZlYTAxMDdjNzcyMTNmYWI1MzZkZmY0YTIxM2IwN2ZjNjAzNzhkNTUxMDY3NSIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDg5NWJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuNC5iYgpAQCAtMCwwICsxLDE4IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1NGNlOTM0NTcyNzE3NWZmNjZkMTdiNjdmZjUxZjU4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2ggXAorICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYjM1YjA0MDcxZjY5YjhhYjY5YTdmM2E0OTdmZjAxMzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGMzMDZiMDNkZjAyMTJmMWI4OTAzNzg0ZTI5YmIzNDkzMzE5YmExOWViZWJmMTNiMGM1NmExNzg3MDI5MjI4MiIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDItRml4LTRLLWNvbG9yaW1ldHJ5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzg4MThhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDItRml4LTRLLWNvbG9yaW1ldHJ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSA1NDU2NDZjY2NiYTI0MzIzNmUxMDM2MmZlNzMyNWY4OWJlNTdkYTFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgotRGF0ZTogVHVlLCAxOCBKdWwgMjAxNyAxMToyODozNyAtMDQwMAotU3ViamVjdDogW1BBVENIXSB2NGwyOiBGaXggNEsgY29sb3JpbWV0cnkKLQotU2luY2UgMS42LCB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gZm9yIEJUMjAyMCBoYXMgYmVlbiBjaGFuZ2VkIGZyb20gQlQ3MDkKLXRvIEJUMjAyMF8xMi4gSXQncyB0aGUgc2FtZSBmdW5jdGlvbiwgYnV0IHdpdGggbW9yZSBwcmVjaXNpb24uIEFzIGEgc2lkZQotZWZmZWN0LCB0aGUgVjRMMiBjb2xvcnBzYWNlIGRpZG4ndCBtYXRjaCBHU3RyZWFtZXIgY29sb3JzcGFjZS4gV2hlbgotR1N0cmVhbWVyIGVuZGVkIHVwIG1ha2luZyBhIGd1ZXNzLCBpdCB3b3VsZCBub3QgbWF0Y2ggYW55dGhpbmcgc3VwcG9ydGVkCi1ieSBWNEwyIGFueW1vcmUuIFRoaXMgdGhpcyBieSB1c2luZyBCVDIwMjBfMTIgZm9yIEJUMjAyMCBjb2xvcnNwYWNlIGFuZAotQlQyMDIwIHRyYW5zZmVyIGZ1bmN0aW9uIGluIHJlcGxhY2VtZW50IG9mIEJUNzA5IHdoZW5ldmVyIGEgNEsKLXJlc29sdXRpb24gaXMgZGV0ZWN0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IE5pY29sYXMgRGVjaGVzbmUgPG5pY29sYXMuZGVjaGVzbmVAbGluYXJvLm9yZz4KLQotLS0tCi0gc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jIHwgNyArKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5cy92NGwyL2dzdHY0bDJvYmplY3QuYyBiL3N5cy92NGwyL2dzdHY0bDJvYmplY3QuYwotaW5kZXggNjEyNDQ0NTVmLi5hYWUyYzU1ZTcgMTAwNjQ0Ci0tLS0gYS9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLSsrKyBiL3N5cy92NGwyL2dzdHY0bDJvYmplY3QuYwotQEAgLTE5NjAsNyArMTk2MCw3IEBAIGdzdF92NGwyX29iamVjdF9nZXRfY29sb3JzcGFjZSAoc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQsCi0gICAgIGNhc2UgVjRMMl9DT0xPUlNQQUNFX0JUMjAyMDoKLSAgICAgICBjaW5mby0+cmFuZ2UgPSBHU1RfVklERU9fQ09MT1JfUkFOR0VfMTZfMjM1OwotICAgICAgIGNpbmZvLT5tYXRyaXggPSBHU1RfVklERU9fQ09MT1JfTUFUUklYX0JUMjAyMDsKLS0gICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQ3MDk7Ci0rICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUMjAyMF8xMjsKLSAgICAgICBjaW5mby0+cHJpbWFyaWVzID0gR1NUX1ZJREVPX0NPTE9SX1BSSU1BUklFU19CVDIwMjA7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVjRMMl9DT0xPUlNQQUNFX1NNUFRFMjQwTToKLUBAIC0yMDYyLDcgKzIwNjIsMTAgQEAgZ3N0X3Y0bDJfb2JqZWN0X2dldF9jb2xvcnNwYWNlIChzdHJ1Y3QgdjRsMl9mb3JtYXQgKmZtdCwKLSAKLSAgIHN3aXRjaCAodHJhbnNmZXIpIHsKLSAgICAgY2FzZSBWNEwyX1hGRVJfRlVOQ183MDk6Ci0tICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUNzA5OwotKyAgICAgIGlmIChmbXQtPmZtdC5waXguaGVpZ2h0ID4gMjE2MCkKLSsgICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDIwMjBfMTI7Ci0rICAgICAgZWxzZQotKyAgICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUNzA5OwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIFY0TDJfWEZFUl9GVU5DX1NSR0I6Ci0gICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX1NSR0I7Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk1OTNjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9yZXBsYXlnYWluL3JnYW5hbHlzaXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1iNjBlYmVmZDViMmY1YThlMGNhYjZiZmVlMzkxYTVmZSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1nb29kL2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoIFwKLSAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWwtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMjAyNTQyMTdkOTgwNTQ4NDUzMmUwOGZmMWMzYWEyOTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTU5MWVlNzIwOGFiMzAyODlhMzA2NThhODJiNzZiZjg3MTY5YzkyNzU3MmQ5Yjc5NGYzYTQxZWQ0OGUxZWU5NiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCi0KLVJQUk9WSURFU18ke1BOfS1wdWxzZWF1ZGlvICs9ICIke1BOfS1wdWxzZSIKLVJQUk9WSURFU18ke1BOfS1zb3VwICs9ICIke1BOfS1zb3VwaHR0cHNyYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNjA5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi40LmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCisgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYmRmNDc5MWEyYjc4OGVjNmExNDliODFmZjQwMzIwMzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjQ5ZjQ5YmVjNjA4OTJkNDdlZTY3MzFiOTIyNjY5NzRjNzIzNTU0ZGExYzY2NDlmMjEyOTYwOTc3MTVlYjk1NyIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCisKK1JQUk9WSURFU18ke1BOfS1wdWxzZWF1ZGlvICs9ICIke1BOfS1wdWxzZSIKK1JQUk9WSURFU18ke1BOfS1zb3VwICs9ICIke1BOfS1zb3VwaHR0cHNyYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTU2Yzg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlYjYzOTAyMTkwNWEzMmNmMzAxM2NhNWJhYzFiNjk0ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxY2MzOTQyYmJmM2VhODdkYTNlMzU0MzdkNGUwMTRlOTkxYjEwM2RiMjJhNjE3NGY2MmE5OGM4OWMzZjVmNDY2IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MzMzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi40LmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY2hlY2svZWxlbWVudHMveGluZ211eC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTRjNzcxYjhhZjE4ODcyNDg1NWNiOTljYWRkMzkwMDY4IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLXVnbHkvZ3N0LXBsdWdpbnMtdWdseS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImUyYjgzNmZiMjc0N2Y2YWUzYTFhNmYzM2E5ZDhjOTUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjMTY1YjhkODg4ZWQzNTBhY2Q4ZTZhYzlmNmZlMDY1MDhlNmZjYzBhM2FmYzZjY2M5ZmJlYjMwZGY5YmU1MjIiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwppbmRleCBjNDBkMzk4Li41OTA2ZTRhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwpAQCAtNSw2ICs1LDggQEAKIAogREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ2xpYi0yLjAtbmF0aXZlIgogCitTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIgorCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCiAKIGFjcGF0aHMgPSAiLUkgJHtTfS9jb21tb24vbTQgLUkgJHtTfS9tNCIKQEAgLTM0LDIxICszNiw2IEBACiAJcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCiB9CiAKLSMgZ3N0cmVhbWVyIGlzIG5vdCB1c2luZyBzeXN0ZW0td2lkZSBtYWtlZmlsZXMgKHdoaWNoIHdlIHBhdGNoIGluIGd0a2RvYyByZWNpcGUsCi0jIGJ1dCBpdHMgb3duIGN1c3RvbSBvbmVzLCB3aGljaCB3ZSBoYXZlIHRvIHBhdGNoIGhlcmUKLXBhdGNoX2d0a19kb2NfbWFrZWZpbGVzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgICMgQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcgaXNzdWVzIGR1cmluZyBidWlsZCBvbiB4ODZfNjQuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgLWUgInN8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKXxcJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpIEdTVF9QTFVHSU5fU0NBTk5FUl8xXzA9XCQodG9wX2J1aWxkZGlyKS9saWJzL2dzdC9oZWxwZXJzL2dzdC1wbHVnaW4tc2Nhbm5lci1kdW1teXwiIFwKLSAgICAgICAgICAgJHtTfS9jb21tb24vZ3RrLWRvYyptYWsKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSBwYXRjaF9ndGtfZG9jX21ha2VmaWxlcyIKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUiCiAKIFBBQ0tBR0VTX0RZTkFNSUMgPSAiXiR7UE59LS4qIgotCi0jIHFlbXUtbWlwczY0OiBlcnJvciB3aGlsZSBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXM6IC4uLi9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xpYmd0aHJlYWQtMi4wLnNvLjA6IEVMRiBmaWxlIGRhdGEgZW5jb2Rpbmcgbm90IGxpdHRsZS1lbmRpYW4KLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYwppbmRleCA5NjFiOTMwLi4zNjFmMGJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKQEAgLTgsOCArOCw2IEBACiAKIFBOUkVBTCA9ICJnc3QtcHl0aG9uIgogCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKLQogUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJkYzA1Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1weXRob24uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImRhNWM5ZmE0MjI5MGJjMzAwNjY2MWM4NjllMDc2ZmZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY0Y2MzMmFkNDZhNjUzZTFhZTJmMjdhYzJhMTYwNzhiMDAwNzVjOTEwNmIyNzg0YTFhOGQxZjMxYzUwNjllNDciCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMzNGRlYWU0ZTM5NWNhMDdlNzI1YWIwMDc2YTVmNzQwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFlYzM1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjQuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1weXRob24uaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImYxZmQwNDZlYTc4MTczNmE3OTRmOWY1NTJkNzdjNTBkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwY2U2YWY2NjE1YzlhNDQwYzE5MjhjMzEyNTlhNzgyMjY1MTZkMDZiZjFhNjVmODg4YzZkMTA5ODI2ZmEzZWEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMzNGRlYWU0ZTM5NWNhMDdlNzI1YWIwMDc2YTVmNzQwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCmluZGV4IDY4MTczY2UuLjM3NzZmOTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKQEAgLTMsMTggKzMsMjEgQEAKIFNFQ1RJT04gPSAibXVsdGltZWRpYSIKIExJQ0VOU0UgPSAiTEdQTHYyIgogCi1ERVBFTkRTID0gImdzdHJlYW1lcjEuMCBsaWJjZ3JvdXAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBsaWJjaGVjayIKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCiAKIFBOUkVBTCA9ICJnc3QtcnRzcC1zZXJ2ZXIiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tdXNpbmctaW50cm9zcGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2giCiAKIFMgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKIAorRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1leGFtcGxlcyAtLWRpc2FibGUtdGVzdHMiCisKICMgU3RhcnRpbmcgd2l0aCAxLjguMCBnc3QtcnRzcC1zZXJ2ZXIgaW5jbHVkZXMgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbnMgYXMgd2VsbAogTElCViA9ICIxLjAiCiByZXF1aXJlIGdzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCkBAIC0yNCwxNyArMjcsNSBAQAogICAgICAgICBybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCiB9CiAKLSMgZ3N0cmVhbWVyIGlzIG5vdCB1c2luZyBzeXN0ZW0td2lkZSBtYWtlZmlsZXMgKHdoaWNoIHdlIHBhdGNoIGluIGd0a2RvYyByZWNpcGUsCi0jIGJ1dCBpdHMgb3duIGN1c3RvbSBvbmVzLCB3aGljaCB3ZSBoYXZlIHRvIHBhdGNoIGhlcmUKLXBhdGNoX2d0a19kb2NfbWFrZWZpbGVzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgJHtTfS9jb21tb24vZ3RrLWRvYyptYWsKLX0KK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUiCiAKLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUgcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMiCi0KLSMgTmVlZHMgdG8gYmUgZGlzYWJsZSBkdWUgdG8gYSBkZXBlbmRlbmN5IG9uIGdzdHJlYW1lci1wbHVnaW5zIGludHJvc3BlY3Rpb24gZmlsZXMKLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MjZjY2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gIjAyMjc1N2NhYjE4M2Y1Yjk3MDA4NmU5MTAxYzYwYTk4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4YmE5MjY0ZThhZTZlNDQwMjkzMzI4ZTc1OWU0MDQ1NmYxNjFhYTY2MDc3YjMxNDNkZDA3NTgxMTM2MTkwYjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNjhkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjEyLjQuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gImFkNzBhOTczNWY1OGRhMjFkMGY1Y2VkZjQ4Y2NhZGQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc2NjAxMTJlYmQ1OTgzOGYxMDU0Nzk2YjM4MTA5ZGNiZTMyZjBhMDQwZTNhMjUyYTY4YTgxMDU1YWVhYTU2YTkiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmQ5Zjg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtdmFhcGkuaW5jCi1TUkNfVVJJW21kNXN1bV0gPSAiYmVhMDE1ZjMzNjk2YTE1YWQ5NTc1ZmI3MWFmODYyZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjNjNzE0ZTA0NzRiM2M3YWU2ZmY4ODg0YWViZjg1MDNhMWJjM2RlZDMzNWZhMmQyYjJhYzMxNzg4NDY2MTYzYSIKLQotREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZjIzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEyLjQuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC12YWFwaS5pbmMKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMTQ5OTgyY2RiMzQ4MTM5YmNhOTQ2YmI2Mzc2NmY0YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzJkNzcyNDJlMWYzMGM0ZDEzOTQ2MzZjYWU5ZjY4NzcyMjhhMDE3OTYwZmNhOTY4ODFlMDA4MGQ4YjZlOWM5IgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKaW5kZXggMzI5MTkzNC4uYzJkZjFmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYwpAQCAtMTYsNiArMTYsOCBAQAogCiBTUkNfVVJJX2FwcGVuZCA9ICIgXAogICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaCBcCiAiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIiCkBAIC01MiwxOSArNTQsNyBAQAogICAgICAgICBybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKIH0KIAotIyBnc3RyZWFtZXIgaXMgbm90IHVzaW5nIHN5c3RlbS13aWRlIG1ha2VmaWxlcyAod2hpY2ggd2UgcGF0Y2ggaW4gZ3RrZG9jIHJlY2lwZSwKLSMgYnV0IGl0cyBvd24gY3VzdG9tIG9uZXMsIHdoaWNoIHdlIGhhdmUgdG8gcGF0Y2ggaGVyZQotcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMoKSB7Ci0gICAgICAgICMgUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQgYmluYXJpZXMKLSAgICAgICAgIyBpbnN0ZWFkIG9mIGxpYnRvb2wgd3JhcHBlciBvciBydW5uaW5nIHRoZW0gZGlyZWN0bHkKLSAgICAgICAgIyBBbHNvIHN1YnN0aXR1dGUgYSBib2d1cyBwbHVnaW4gc2Nhbm5lciwgYXMgdHJ5aW5nIHRvIHJ1biB0aGUgcmVhbCBvbmUgaXMgY2F1c2luZyBpc3N1ZXMgZHVyaW5nIGJ1aWxkIG9uIHg4Nl82NC4KLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8R1RLRE9DX1JVTiA9Lip8R1RLRE9DX1JVTiA9IFwkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyfCIgXAotICAgICAgICAgICAtZSAic3xcJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpfFwkKEdUS0RPQ19FWFRSQV9FTlZJUk9OTUVOVCkgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD1cJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyLWR1bW15fCIgXAotICAgICAgICAgICAke1N9L2NvbW1vbi9ndGstZG9jKm1hawotfQotCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIHBhdGNoX2d0a19kb2NfbWFrZWZpbGVzIgorZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgogCiBkb19jb21waWxlX3ByZXBlbmQoKSB7CiAgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC8ubGliczoke0J9L2xpYnMvZ3N0L2Jhc2UvLmxpYnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMzJmZDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSBhMGNiNDFiYTcyOTEzZWRhMDYwNDlkMjY2ZWM0M2VhOGY1MmI1YmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotRGF0ZTogRnJpLCAxMSBBdWcgMjAxNyAyMToyMTozNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEFkZCBzd2l0Y2hlcyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGxpYmR3IGFuZAotIGxpYnVud2luZAotCi1bT3JpZ2luYWwgcGF0Y2ggbW9kaWZpZWQgdG8gYmUgYXBwbGljYWJsZSB0byAxLjEyLjJdCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4MTkzXQotCi1TaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiNmIyOTIzLi4zMmRkODI3IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC04MjEsMTUgKzgyMSw0MSBAQCBmaQotIEFNX0NPTkRJVElPTkFMKEhBVkVfR1RLLCB0ZXN0ICJ4JEhBVkVfR1RLIiA9ICJ4eWVzIikKLSAKLSBkbmwgbGlidW53aW5kIGlzIG9wdGlvbmFsbHkgdXNlZCBieSB0aGUgbGVha3MgdHJhY2VyCi0tUEtHX0NIRUNLX01PRFVMRVMoVU5XSU5ELCBsaWJ1bndpbmQsIEhBVkVfVU5XSU5EPXllcywgSEFWRV9VTldJTkQ9bm8pCi0taWYgdGVzdCAieCRIQVZFX1VOV0lORCIgPSAieHllcyI7IHRoZW4KLS0gIEFDX0RFRklORShIQVZFX1VOV0lORCwgMSwgW2xpYnVud2luZCBhdmFpbGFibGVdKQotK0FDX0FSR19XSVRIKFt1bndpbmRdLFtBU19IRUxQX1NUUklORyhbLS13aXRoLXVud2luZD15ZXN8bm98YXV0b10sW3VzZSBsaWJ1bndpbmRdKV0sCi0rICAgICAgICAgICAgW10sIFt3aXRoX3Vud2luZD1hdXRvXSkKLStpZiBbIHRlc3QgIngke3dpdGhfdW53aW5kfSIgIT0gInhubyIgXTsgdGhlbgotKyAgUEtHX0NIRUNLX01PRFVMRVMoVU5XSU5ELCBbbGlidW53aW5kXSwKLSsgICAgICBbCi0rICAgICAgICBIQVZFX1VOV0lORD15ZXMKLSsgICAgICAgIEFDX0RFRklORShIQVZFX1VOV0lORCwgMSwgW2xpYnVud2luZCBhdmFpbGFibGVdKQotKyAgICAgIF0sCi0rICAgICAgWwotKyAgICAgICAgSEFWRV9VTldJTkQ9bm8KLSsgICAgICAgIGlmIFsgdGVzdCAieCR7d2l0aF91bndpbmR9IiA9ICJ4eWVzIiBdOyB0aGVuCi0rICAgICAgICAgIEFDX01TR19FUlJPUihbY291bGQgbm90IGZpbmQgbGlidW53aW5kXSkKLSsgICAgICAgIGZpCi0rICAgICAgXSkKLStlbHNlCi0rICBIQVZFX1VOV0lORD1ubwotIGZpCi0gCi0gZG5sIGxpYmR3IGlzIG9wdGlvbmFsbHkgdXNlZCB0byBhZGQgc291cmNlIGxpbmVzIGFuZCBudW1iZXJzIHRvIGJhY2t0cmFjZXMKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhEVywgbGliZHcsIEhBVkVfRFc9eWVzLCBIQVZFX0RXPW5vKQotLWlmIHRlc3QgIngkSEFWRV9EVyIgPSAieHllcyI7IHRoZW4KLS0gIEFDX0RFRklORShIQVZFX0RXLCAxLCBbbGliZHcgYXZhaWxhYmxlXSkKLStBQ19BUkdfV0lUSChbZHddLFtBU19IRUxQX1NUUklORyhbLS13aXRoLWR3PXllc3xub3xhdXRvXSxbdXNlIGxpYmR3XSldLAotKyAgICAgICAgICAgIFtdLCBbd2l0aF9kdz1hdXRvXSkKLStpZiBbIHRlc3QgIngke3dpdGhfZHd9IiAhPSAieG5vIiBdOyB0aGVuCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhEVywgW2xpYmR3XSwKLSsgICAgICBbCi0rICAgICAgICBIQVZFX0RXPXllcwotKyAgICAgICAgQUNfREVGSU5FKEhBVkVfRFcsIDEsIFtsaWJkdyBhdmFpbGFibGVdKQotKyAgICAgIF0sCi0rICAgICAgWwotKyAgICAgICAgSEFWRV9EVz1ubwotKyAgICAgICAgaWYgWyB0ZXN0ICJ4JHt3aXRoX2R3fSIgPSAieHllcyIgXTsgdGhlbgotKyAgICAgICAgICBBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBmaW5kIGxpYmR3XSkKLSsgICAgICAgIGZpCi0rICAgICAgXSkKLStlbHNlCi0rICBIQVZFX0RXPW5vCi0gZmkKLSAKLSBkbmwgQ2hlY2sgZm9yIGJhY2t0cmFjZSgpIGZyb20gbGliYwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkNDFhNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVyLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1zd2l0Y2hlcy1mb3ItZW5hYmxpbmctZGlzYWJsaW5nLWxpYmR3LS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNDc0ODg2MDYyMTYwN2ZmZDk2MjQ0ZmI3OWM4NmMyMzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWZkZTNmMzlhMmVhOTg0ZjllMDdjZTA5MjUwMjg1Y2U5MWY2ZTM2MTlkMTg2ODg5Zjc1YjUxNTRlY2Y5OTRiYSIKLQotUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWIyMzk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi40LmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjlkMjY4ZjJlODkxY2NlMWFjMDgzMmYxY2M0NjdkNGVhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhODcwNGFhNGMyZWViMDRkYTE5MmM0YTk5NDJmOTRmODYwYWMxYTU4NWRlOTBkOWY5MTRiYWMyNmE5NzA2NzQiCisKK1MgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCisKK0NWRV9QUk9EVUNUID0gImdzdHJlYW1lciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWUvbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL2xhbWUtMy45OS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi54LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWJhZWYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWUvbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotRml4IHRoaXMga2luZCBvZiBlcnJvcnMgd2l0aCBhdXRvbWFrZSAxLjEyLng6Ci18IGRvYy9tYW4vTWFrZWZpbGUuYW06MzogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAotfCBhdXRvcmVjb25mOiBhdXRvbWFrZSBmYWlsZWQgd2l0aCBleGl0IHN0YXR1czogMQotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotMjAxMi8wNy8xMwotCi1JbmRleDogbGFtZS0zLjk5LjUvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGFtZS0zLjk5LjUub3JpZy9jb25maWd1cmUuaW4KLSsrKyBsYW1lLTMuOTkuNS9jb25maWd1cmUuaW4KLUBAIC03Nyw5ICs3Nyw2IEBAIGlmIHRlc3QgIiR7R0NDfSIgPSAieWVzIjsgdGhlbgotIAlBQ19NU0dfUkVTVUxUKCR7R0NDX3ZlcnNpb259KQotIGZpCi0gCi0tZG5sIG1vcmUgYXV0b21ha2Ugc3R1ZmYKLS1BTV9DX1BST1RPVFlQRVMKLS0KLSBBQ19DSEVDS19IRUFERVIoZG1hbGxvYy5oKQotIGlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX2RtYWxsb2NfaH0iID0gInllcyI7IHRoZW4KLSAJQU1fV0lUSF9ETUFMTE9DCi1JbmRleDogbGFtZS0zLjk5LjUvZG9jL2h0bWwvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsYW1lLTMuOTkuNS5vcmlnL2RvYy9odG1sL01ha2VmaWxlLmFtCi0rKysgbGFtZS0zLjk5LjUvZG9jL2h0bWwvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotICMjICRJZDogTWFrZWZpbGUuYW0sdiAxLjcgMjAxMC8wOS8zMCAyMDo1ODo0MCBqYXowMDEgRXhwICQKLSAKLS1BVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbiBhbnNpMmtucgotK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi0gCi0gZG9jZGlyID0gJChkYXRhZGlyKS9kb2MKLSBwa2dkb2NkaXIgPSAkKGRvY2RpcikvJChQQUNLQUdFKQotSW5kZXg6IGxhbWUtMy45OS41L2xpYm1wM2xhbWUvaTM4Ni9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhbWUtMy45OS41Lm9yaWcvbGlibXAzbGFtZS9pMzg2L01ha2VmaWxlLmFtCi0rKysgbGFtZS0zLjk5LjUvbGlibXAzbGFtZS9pMzg2L01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKLSAjIyAkSWQ6IE1ha2VmaWxlLmFtLHYgMS4yNiAyMDExLzA0LzA0IDA5OjQyOjM0IGFsZWlkaW5nZXIgRXhwICQKLSAKLS1BVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbiAkKHRvcF9zcmNkaXIpL2Fuc2kya25yCi0rQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24KLSAKLSBERUZTID0gQERFRlNAIEBDT05GSUdfREVGU0AKLSAKLUluZGV4OiBsYW1lLTMuOTkuNS9kb2MvbWFuL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGFtZS0zLjk5LjUub3JpZy9kb2MvbWFuL01ha2VmaWxlLmFtCi0rKysgbGFtZS0zLjk5LjUvZG9jL21hbi9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw2IEBACi0gIyMgJElkOiBNYWtlZmlsZS5hbSx2IDEuMSAyMDAwLzEwLzIyIDExOjM5OjQ0IGFsZWlkaW5nZXIgRXhwICQKLSAKLS1BVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbiBhbnNpMmtucgotK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi0gCi0gbWFuX01BTlMgPSBsYW1lLjEKLSBFWFRSQV9ESVNUID0gJHttYW5fTUFOU30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWVfMy4xMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuMTAwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNmFjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuMTAwLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiSGlnaCBxdWFsaXR5IE1QMyBhdWRpbyBlbmNvZGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2xhbWUuc291cmNlZm9yZ2UubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0yOTAmYXRpZD0xMDAyOTAiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK0RFUEVORFMgPSAibmN1cnNlcyBnZXR0ZXh0LW5hdGl2ZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzQ2YmRhMDBmZmJiMGJhMWRhYzIyZjhkMDg3ZjU0ZDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9sYW1lLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YTIyNTgxODJjNTkzYzM5OGQxNWE0ODI2MjEzMGE5MmIgXAorIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9sYW1lL2xhbWUtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25vLWd0azEucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4M2UyNjBhY2JlNDM4OWI1NGZlMDhlMGJkYmY3Y2RkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGZlMzZjYWI4NzM3OTQwMzhhZTJjMTIxMDU1N2FkMzQ4NTdhNGI2YmRjNTE1Nzg1ZDFkYTllMTc1YjFkYTFlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgKz0gImxpYm1wM2xhbWUgbGlibXAzbGFtZS1kZXYiCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vbGFtZSIKK0ZJTEVTX2xpYm1wM2xhbWUgPSAiJHtsaWJkaXJ9L2xpYm1wM2xhbWUuc28uKiIKK0ZJTEVTX2xpYm1wM2xhbWUtZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9LyoiCitGSUxFU18ke1BOfS1kZXYgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ3NzYxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiSGlnaCBxdWFsaXR5IE1QMyBhdWRpbyBlbmNvZGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2xhbWUuc291cmNlZm9yZ2UubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0yOTAmYXRpZD0xMDAyOTAiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLURFUEVORFMgPSAibmN1cnNlcyBnZXR0ZXh0LW5hdGl2ZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzQ2YmRhMDBmZmJiMGJhMWRhYzIyZjhkMDg3ZjU0ZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9sYW1lLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YTIyNTgxODJjNTkzYzM5OGQxNWE0ODI2MjEzMGE5MmIgXAotIgotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xhbWUvbGFtZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbm8tZ3RrMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sYW1lLTMuOTkuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIueC5wYXRjaCAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NDgzNWIzMTNkNGE4YjY4ZjUzNDk4MTZkMzNlMDdjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNDM0NmI0MTU4ZTRhZjNiZDlmMmUxOTRiYjIzZWI0NzNjNzVmYjczNzcwMTE1MjMzNTMxOTZiMTliOWEyM2ZmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRVMgKz0gImxpYm1wM2xhbWUgbGlibXAzbGFtZS1kZXYiCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vbGFtZSIKLUZJTEVTX2xpYm1wM2xhbWUgPSAiJHtsaWJkaXJ9L2xpYm1wM2xhbWUuc28uKiIKLUZJTEVTX2xpYm1wM2xhbWUtZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9LyoiCi1GSUxFU18ke1BOfS1kZXYgPSAiIgotCi1DQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfeDg2ID0gIiBhY19jdl9oZWFkZXJfZW1taW50cmluX2g9bm8gYWNfY3ZfaGVhZGVyX3htbWludHJpbl9oPW5vIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0MmUwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiT2dnIGJpdHN0cmVhbSBhbmQgZnJhbWluZyBsaWJhcnkiCi1ERVNDUklQVElPTiA9ICJsaWJvZ2cgaXMgdGhlIGJpdHN0cmVhbSBhbmQgZnJhbWluZyBsaWJyYXJ5IFwKLWZvciB0aGUgT2dnIHByb2plY3QuIEl0IHByb3ZpZGVzIGZ1bmN0aW9ucyB3aGljaCBhcmUgXAotbmVjZXNzYXJ5IHRvIGNvZGVjIGxpYnJhcmllcyBsaWtlIGxpYnZvcmJpcy4iCi1IT01FUEFHRSA9ICJodHRwOi8veGlwaC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL3RyYWMueGlwaC5vcmcvbmV3dGlja2V0IgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kYjFiN2E2NjhiMmE2ZjQ3YjJhZjg4ZmIwMDhhZDU1NSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL29nZy9vZ2cuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1lZGE4MTI4NTZmMTNhM2IxMzI2ZWI4ZjAyMGNjM2IwYiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL29nZy8ke0JQfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YzNhMzQzMDlkOGI5ODY0MDgyN2U1ZDA5OTFhNDAxNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjY4N2NjZGQ1YWM4YjUyZDc2MzI4ZmJiZmViYzcwYzQ1OWE0MGVhODkxZGJmM2RjY2I3NGEyMTA4MjZlNzliIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ4OGYxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4zLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiT2dnIGJpdHN0cmVhbSBhbmQgZnJhbWluZyBsaWJhcnkiCitERVNDUklQVElPTiA9ICJsaWJvZ2cgaXMgdGhlIGJpdHN0cmVhbSBhbmQgZnJhbWluZyBsaWJyYXJ5IFwKK2ZvciB0aGUgT2dnIHByb2plY3QuIEl0IHByb3ZpZGVzIGZ1bmN0aW9ucyB3aGljaCBhcmUgXAorbmVjZXNzYXJ5IHRvIGNvZGVjIGxpYnJhcmllcyBsaWtlIGxpYnZvcmJpcy4iCitIT01FUEFHRSA9ICJodHRwOi8veGlwaC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3RyYWMueGlwaC5vcmcvbmV3dGlja2V0IgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kYjFiN2E2NjhiMmE2ZjQ3YjJhZjg4ZmIwMDhhZDU1NSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL29nZy9vZ2cuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1lZGE4MTI4NTZmMTNhM2IxMzI2ZWI4ZjAyMGNjM2IwYiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL29nZy8ke0JQfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4N2VkNzQyMDQ3ZjA2NTA0NmViNmMzNjc0NWQ4NzFiOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZjNmYzYxNzhhNTMzZDM5MjA2NGYxNDc3NmIyM2MzOTdlZDRiOWY0OGY1ZGUyOTdhYmE3M2I2NDNmOTU1YzA4IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk2ZWExNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIlBORyBpbWFnZSBmb3JtYXQgZGVjb2RpbmcgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxpYnBuZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZmMjFlNGUxZjc5NTgxMGI1ZWE0OTFiMzMzYmM2ZWExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2VuZGxpbmU9MTQ0O21kNT1hZjMwMGM0MTlhNDVjNTNhOGQyZGFhMGI3ZDE2N2E2NiIKLURFUEVORFMgPSAiemxpYiIKLQotTElCViA9ICIxNiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8ke0JQfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMWIzNGVhYjQ0MDI2M2UzMmNmYTM5ZDE5NDEzZmFkNTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjMyYTYwMmRlMDQ5MTZiMmI1Y2U2ZjkwMTgyOWNhZjQxOTUxOWU2YTE2Y2M5Y2Q3YzFjOTExODdkM2VlOGI0MSIKLQotTUlSUk9SUyArPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyR7UFZ9LyIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJwbmctY29uZmlnICR7YmluZGlyfS9saWJwbmcxNi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHN5bWJvbHMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9mZiIgLGQpfSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgotCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vcG5nLWZpeC1pdHh0ICR7YmluZGlyfS9wbmdmaXggJHtiaW5kaXJ9L3BuZ2NwIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUyZDAzMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNC5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIlBORyBpbWFnZSBmb3JtYXQgZGVjb2RpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxpYnBuZyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkYjcxN2EwNWEyMGUzNmYyZmE2NzMyNjViZDMxNTY4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2VuZGxpbmU9MTQ0O21kNT0zYWM5ZmQyNTBhODc4NmFlNTgxZTM0MjU0YmY3OTQyOSIKK0RFUEVORFMgPSAiemxpYiIKKworTElCViA9ICIxNiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYzA1YjZjYTcxOTBhNWUzODdiNzg2NTdkYmU1NTM2YjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmYxZTk2MGQ5MmNlM2IzYWJkMDNkMDZkZmVjOTYzN2RmYmQyMmZlYmYxMDdhNTM2YjQ0ZjdhNDdjNjA2NTlmNiIKKworTUlSUk9SUyArPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyR7UFZ9LyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJwbmcub3JnL3B1Yi9wbmcvbGlicG5nLmh0bWwiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKKyMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyIKKworRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMDY4OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBkYjk2OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMDY4OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLUZyb20gMzMzYmE1NTk5ZTg3YmQ3NzQ3NTE2ZDc4NjNkNjE3NjRlNGNhMmQ5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+Ci1EYXRlOiBGcmksIDMwIEp1biAyMDE3IDE3OjI5OjQ0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogaW4KLSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkWFhYWCgpIGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggTE9ORzgvU0xPTkc4Ci0gZGF0YSB0eXBlLCByZXBsYWNlIGFzc2VydGlvbiB0aGF0IHRoZSBmaWxlIGlzIEJpZ1RJRkYsIGJ5IGEgbm9uLWZhdGFsIGVycm9yLgotIEZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTIgUmVwb3J0ZWQgYnkgdGVhbQotIE9XTDMzNwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL3ZhZHovbGlidGlmZi9jb21taXQvNjE3M2E1N2QzOWUwNGQ2OGIxMzlmOGMxYWE0OTlhMjRkYmU3NGJhMV0KLQotQ1ZFOiBDVkUtMjAxNy0xMDY4OAotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgIHwgIDggKysrKysrKysKLSBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIHwgMjAgKysrKysrKysrKysrKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDAyNDBmMGIuLjQyZWFlYjcgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTctMDYtMzAgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogaW4gVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFhYWFgoKQotKwlmdW5jdGlvbnMgYXNzb2NpYXRlZCB3aXRoIExPTkc4L1NMT05HOCBkYXRhIHR5cGUsIHJlcGxhY2UgYXNzZXJ0aW9uIHRoYXQKLSsJdGhlIGZpbGUgaXMgQmlnVElGRiwgYnkgYSBub24tZmF0YWwgZXJyb3IuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTIKLSsJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSsKLSAyMDE3LTA2LTI2ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIGxpYnRpZmYvdGlmX2piaWcuYzogZml4IG1lbW9yeSBsZWFrIGluIGVycm9yIGNvZGUgcGF0aCBvZiBKQklHRGVjb2RlKCkKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotaW5kZXggMjk2N2RhNS4uOGQ2Njg2YiAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC0yMTExLDcgKzIxMTEsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpciwgdWkKLSB7Ci0gCXVpbnQ2NCBtOwotIAlhc3NlcnQoc2l6ZW9mKHVpbnQ2NCk9PTgpOwotLQlhc3NlcnQodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKTsKLSsJaWYoICEodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKSApIHsKLSsJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgiLCJMT05HOCBub3QgYWxsb3dlZCBmb3IgQ2xhc3NpY1RJRkYiKTsKLSsJCXJldHVybigwKTsKLSsJfQotIAltPXZhbHVlOwotIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQotIAkJVElGRlN3YWJMb25nOCgmbSk7Ci1AQCAtMjEyNCw3ICsyMTI3LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOEFycmF5KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpCi0gewotIAlhc3NlcnQoY291bnQ8MHgyMDAwMDAwMCk7Ci0gCWFzc2VydChzaXplb2YodWludDY0KT09OCk7Ci0tCWFzc2VydCh0aWYtPnRpZl9mbGFncyZUSUZGX0JJR1RJRkYpOwotKwlpZiggISh0aWYtPnRpZl9mbGFncyZUSUZGX0JJR1RJRkYpICkgewotKwkJVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsIlRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOCIsIkxPTkc4IG5vdCBhbGxvd2VkIGZvciBDbGFzc2ljVElGRiIpOwotKwkJcmV0dXJuKDApOwotKwl9Ci0gCWlmICh0aWYtPnRpZl9mbGFncyZUSUZGX1NXQUIpCi0gCQlUSUZGU3dhYkFycmF5T2ZMb25nOCh2YWx1ZSxjb3VudCk7Ci0gCXJldHVybihUSUZGV3JpdGVEaXJlY3RvcnlUYWdEYXRhKHRpZixuZGlyLGRpcix0YWcsVElGRl9MT05HOCxjb3VudCxjb3VudCo4LHZhbHVlKSk7Ci1AQCAtMjEzNiw3ICsyMTQyLDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRTbG9uZzgoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZGlyLCB1Ci0gewotIAlpbnQ2NCBtOwotIAlhc3NlcnQoc2l6ZW9mKGludDY0KT09OCk7Ci0tCWFzc2VydCh0aWYtPnRpZl9mbGFncyZUSUZGX0JJR1RJRkYpOwotKwlpZiggISh0aWYtPnRpZl9mbGFncyZUSUZGX0JJR1RJRkYpICkgewotKwkJVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsIlRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOCIsIlNMT05HOCBub3QgYWxsb3dlZCBmb3IgQ2xhc3NpY1RJRkYiKTsKLSsJCXJldHVybigwKTsKLSsJfQotIAltPXZhbHVlOwotIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQotIAkJVElGRlN3YWJMb25nOCgodWludDY0KikoJm0pKTsKLUBAIC0yMTQ5LDcgKzIxNTgsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFNsb25nOEFycmF5KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGQKLSB7Ci0gCWFzc2VydChjb3VudDwweDIwMDAwMDAwKTsKLSAJYXNzZXJ0KHNpemVvZihpbnQ2NCk9PTgpOwotLQlhc3NlcnQodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKTsKLSsJaWYoICEodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKSApIHsKLSsJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgiLCJTTE9ORzggbm90IGFsbG93ZWQgZm9yIENsYXNzaWNUSUZGIik7Ci0rCQlyZXR1cm4oMCk7Ci0rCX0KLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiQXJyYXlPZkxvbmc4KCh1aW50NjQqKXZhbHVlLGNvdW50KTsKLSAJcmV0dXJuKFRJRkZXcml0ZURpcmVjdG9yeVRhZ0RhdGEodGlmLG5kaXIsZGlyLHRhZyxUSUZGX1NMT05HOCxjb3VudCxjb3VudCo4LHZhbHVlKSk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTExMzM1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTEzMzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOGU3NjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTEzMzUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGU4YjE1Y2NmOGM5YzU5MzAwMGY4MjAyY2YzNGNjNmM0YjkzNmQwMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAxMToxMzo0NiArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIHRvb2xzL3RpZmYycGRmLmM6IHByZXZlbnQgaGVhcCBidWZmZXIgb3ZlcmZsb3cgd3JpdGUgaW4KLSAiUmF3IiBtb2RlIG9uIFBsYW5hckNvbmZpZz1Db250aWcgaW5wdXQgaW1hZ2VzLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTUgUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0LzY5YmZlZWMyNDc4OTk3NzZiMWIzOTY2NTFhZGI0NzQzNmU1ZjE1NTZdCi0KLUNWRTogQ1ZFLTIwMTctMTEzNTUKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICB8IDcgKysrKysrKwotIHRvb2xzL3RpZmYycGRmLmMgfCA3ICsrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggNDJlYWViNy4uNjk4MGRhOCAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wNy0xNSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiB0b29scy90aWZmMnBkZi5jOiBwcmV2ZW50IGhlYXAgYnVmZmVyIG92ZXJmbG93IHdyaXRlIGluICJSYXciCi0rCW1vZGUgb24gUGxhbmFyQ29uZmlnPUNvbnRpZyBpbnB1dCBpbWFnZXMuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTUKLSsJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSsKLSAyMDE3LTA2LTMwICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IGluIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRYWFhYKCkKLWRpZmYgLS1naXQgYS90b29scy90aWZmMnBkZi5jIGIvdG9vbHMvdGlmZjJwZGYuYwotaW5kZXggZGIxOTZlMC4uY2QxZTIzNSAxMDA2NDQKLS0tLSBhL3Rvb2xzL3RpZmYycGRmLmMKLSsrKyBiL3Rvb2xzL3RpZmYycGRmLmMKLUBAIC0xNzM3LDcgKzE3MzcsMTIgQEAgdm9pZCB0MnBfcmVhZF90aWZmX2RhdGEoVDJQKiB0MnAsIFRJRkYqIGlucHV0KXsKLSAJICAgIHJldHVybjsKLSAKLSAJdDJwLT5wZGZfdHJhbnNjb2RlID0gVDJQX1RSQU5TQ09ERV9FTkNPREU7Ci0tCWlmKHQycC0+cGRmX25vcGFzc3Rocm91Z2g9PTApewotKyAgICAgICAgLyogSXQgc2VlbXMgdGhhdCBUMlBfVFJBTlNDT0RFX1JBVyBtb2RlIGRvZXNuJ3Qgc3VwcG9ydCBzZXBhcmF0ZS0+Y29udGlnICovCi0rICAgICAgICAvKiBjb252ZXJzaW9uLiBBdCBsZWFzdCB0MnBfcmVhZF90aWZmX3NpemUgYW5kIHQycF9yZWFkX3RpZmZfc2l6ZV90aWxlICovCi0rICAgICAgICAvKiBkbyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIG51bWJlciBvZiBzYW1wbGVzLCBhbmQgdGh1cyAqLwotKyAgICAgICAgLyogdGhhdCBjYW4gY2F1c2UgaGVhcCBidWZmZXIgb3ZlcmZsb3dzIHN1Y2ggYXMgaW4gKi8KLSsgICAgICAgIC8qIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MTUgKi8KLSsJaWYodDJwLT5wZGZfbm9wYXNzdGhyb3VnaD09MCAmJiB0MnAtPnRpZmZfcGxhbmFyIT1QTEFOQVJDT05GSUdfU0VQQVJBVEUpewotICNpZmRlZiBDQ0lUVF9TVVBQT1JUCi0gCQlpZih0MnAtPnRpZmZfY29tcHJlc3Npb249PUNPTVBSRVNTSU9OX0NDSVRURkFYNCAgCi0gCQkJKXsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYwZmZhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNTMxN2NlMjE1OTM2Y2U2MTE4NDY1NTdiYjEwNGI0OWQzYjRjODM0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDEzOjIxOjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gcmVsYXRlZCB0byBub3QKLSBmaW5kaW5nIHRoZSBTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyNyBSZXBvcnRlZCBieSB0ZWFtIE9XTDMzNwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL3ZhZHovbGlidGlmZi9jb21taXQvZjkxY2E4M2EyMWE2YTU4MzA1MGU1YTU3NTVjZTE0NDFiMmJmMWQ3ZV0KLQotQ1ZFOiBDVkUtMjAxNy0xMzcyNgotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgIHwgNyArKysrKysrCi0gbGlidGlmZi90aWZfZGlyd3JpdGUuYyB8IDcgKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA2OTgwZGE4Li4zZTI5OWQ5IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE3LTA4LTIzICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHJlbGF0ZWQgdG8gbm90IGZpbmRpbmcgdGhlCi0rCVN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjay4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyNwotKwlSZXBvcnRlZCBieSB0ZWFtIE9XTDMzNwotKwotIDIwMTctMDctMTUgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogdG9vbHMvdGlmZjJwZGYuYzogcHJldmVudCBoZWFwIGJ1ZmZlciBvdmVyZmxvdyB3cml0ZSBpbiAiUmF3IgotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi1pbmRleCA4ZDY2ODZiLi4xNDA5MGFlIDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotKysrIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotQEAgLTgyMSw3ICs4MjEsMTIgQEAgVElGRldyaXRlRGlyZWN0b3J5U2VjKFRJRkYqIHRpZiwgaW50IGlzaW1hZ2UsIGludCBpbWFnZWRvbmUsIHVpbnQ2NCogcGRpcm9mZikKLSAJCQlUSUZGRGlyRW50cnkqIG5iOwotIAkJCWZvciAobmE9MCwgbmI9ZGlyOyA7IG5hKyssIG5iKyspCi0gCQkJewotLQkJCQlhc3NlcnQobmE8bmRpcik7Ci0rCQkJCWlmKCBuYSA9PSBuZGlyICkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSxtb2R1bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgZmluZCBTdWJJRkQgdGFnIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWQ7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gCQkJCWlmIChuYi0+dGRpcl90YWc9PVRJRkZUQUdfU1VCSUZEKQotIAkJCQkJYnJlYWs7Ci0gCQkJfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjI4YzJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotRnJvbSBhNWU4MjQ1Y2M2NzY0NmY3YjQ0OGI0Y2EyOTI1OGVhYWM0MTgxMDJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTM6MzM6NDIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiB0byB0YWcgdmFsdWUgbm90Ci0gZml0dGluZyBvbiB1aW50MzIgd2hlbiBzZWxlY3RpbmcgdGhlIHZhbHVlIG9mIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjayAoaW4KLSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTdWJpZmQoKSkuIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyOCBSZXBvcnRlZCBieSB0ZWFtIE9XTDMzNwotCi1TdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2sgKGluIFRJRkZXcml0ZURpcmVjdG9yeVNlYygpKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL3ZhZHovbGlidGlmZi9jb21taXQvYjZhZjEzN2JmOWVmODUyZjFhNDhhNTBhNWFmYjg4ZjllOWRhMDFjY10KLQotQ1ZFOiBDVkUtMjAxNy0xMzcyNwotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrLQotIGxpYnRpZmYvdGlmX2RpcndyaXRlLmMgfCAgOSArKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDNlMjk5ZDkuLjhmNWVmZTkgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsNyArMSwxNSBAQAotIDIwMTctMDgtMjMgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0rCSogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gdG8gdGFnIHZhbHVlIG5vdCBmaXR0aW5nCi0rCW9uIHVpbnQzMiB3aGVuIHNlbGVjdGluZyB0aGUgdmFsdWUgb2YgU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrCi0rCShpbiBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTdWJpZmQoKSkuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjgKLSsJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSsKLSsyMDE3LTA4LTIzICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotIAkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHJlbGF0ZWQgdG8gbm90IGZpbmRpbmcgdGhlCi0tCVN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjay4KLSsJU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrIChpbiBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoKSkKLSAJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyNwotIAlSZXBvcnRlZCBieSB0ZWFtIE9XTDMzNwotIAotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi1pbmRleCAxNDA5MGFlLi5mMGE0YmFhIDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotKysrIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotQEAgLTE5NDksNyArMTk0OSwxNCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTdWJpZmQoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZGlyKQotIAkJZm9yIChwPTA7IHAgPCB0aWYtPnRpZl9kaXIudGRfbnN1YmlmZDsgcCsrKQotIAkJewotICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChwYSAhPSAwKTsKLS0JCQlhc3NlcnQoKnBhIDw9IDB4RkZGRkZGRkZVTCk7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgLyogQ291bGQgaGFwcGVuIGlmIGFuIGNsYXNzaWNUSUZGIGhhcyBhIFN1YklGRCBvZiB0eXBlIExPTkc4ICh3aGljaCBpcyBpbGxlZ2FsKSAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAqcGEgPiAweEZGRkZGRkZGVUwpCi0rICAgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSxtb2R1bGUsIklsbGVnYWwgdmFsdWUgZm9yIFN1YklGRCB0YWciKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RJRkZmcmVlKG8pOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oMCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCSpwYisrPSh1aW50MzIpKCpwYSsrKTsKLSAJCX0KLSAJCW49VElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZElmZEFycmF5KHRpZixuZGlyLGRpcixUSUZGVEFHX1NVQklGRCx0aWYtPnRpZl9kaXIudGRfbnN1YmlmZCxvKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTgwMTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xODAxMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzhlMGRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTgwMTMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAyOTNjOGIwMjk4ZTkxZDIwYmE1MTI5MWUyMzUxYWI3ZDExMDY3MWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IFN1biwgMzEgRGVjIDIwMTcgMTU6MDk6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGlidGlmZi90aWZfcHJpbnQuYzogVElGRlByaW50RGlyZWN0b3J5KCk6IGZpeCBudWxsIHBvaW50ZXIKKyBkZXJlZmVyZW5jZSBvbiBjb3JydXB0ZWQgZmlsZS4gRml4ZXMKKyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzcwCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5jb20vbGlidGlmZi9saWJ0aWZmL2NvbW1pdC9jNmY0MWRmN2I1ODE0MDJkZmJhM2MxOWExZTNkZjQ0NTRjNTUxYTAxXQorCitDVkU6IENWRS0yMDE3LTE4MDEzCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYnRpZmYvdGlmX3ByaW50LmMgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX3ByaW50LmMgYi9saWJ0aWZmL3RpZl9wcmludC5jCitpbmRleCAyNGQ0Yjk4Li5mNDk0Y2ZiIDEwMDY0NAorLS0tIGEvbGlidGlmZi90aWZfcHJpbnQuYworKysrIGIvbGlidGlmZi90aWZfcHJpbnQuYworQEAgLTY2NywxMyArNjY3LDEzIEBAIFRJRkZQcmludERpcmVjdG9yeShUSUZGKiB0aWYsIEZJTEUqIGZkLCBsb25nIGZsYWdzKQorICNpZiBkZWZpbmVkKF9fV0lOMzJfXykgJiYgKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19NSU5HVzMyX18pKQorIAkJCWZwcmludGYoZmQsICIgICAgJTNsdTogWyU4STY0dSwgJThJNjR1XVxuIiwKKyAJCQkgICAgKHVuc2lnbmVkIGxvbmcpIHMsCistCQkJICAgICh1bnNpZ25lZCBfX2ludDY0KSB0ZC0+dGRfc3RyaXBvZmZzZXRbc10sCistCQkJICAgICh1bnNpZ25lZCBfX2ludDY0KSB0ZC0+dGRfc3RyaXBieXRlY291bnRbc10pOworKwkJCSAgICB0ZC0+dGRfc3RyaXBvZmZzZXQgPyAodW5zaWduZWQgX19pbnQ2NCkgdGQtPnRkX3N0cmlwb2Zmc2V0W3NdIDogMCwKKysJCQkgICAgdGQtPnRkX3N0cmlwYnl0ZWNvdW50ID8gKHVuc2lnbmVkIF9faW50NjQpIHRkLT50ZF9zdHJpcGJ5dGVjb3VudFtzXSA6IDApOworICNlbHNlCisgCQkJZnByaW50ZihmZCwgIiAgICAlM2x1OiBbJThsbHUsICU4bGx1XVxuIiwKKyAJCQkgICAgKHVuc2lnbmVkIGxvbmcpIHMsCistCQkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcG9mZnNldFtzXSwKKy0JCQkgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgdGQtPnRkX3N0cmlwYnl0ZWNvdW50W3NdKTsKKysJCQkgICAgdGQtPnRkX3N0cmlwb2Zmc2V0ID8gKHVuc2lnbmVkIGxvbmcgbG9uZykgdGQtPnRkX3N0cmlwb2Zmc2V0W3NdIDogMCwKKysJCQkgICAgdGQtPnRkX3N0cmlwYnl0ZWNvdW50ID8gKHVuc2lnbmVkIGxvbmcgbG9uZykgdGQtPnRkX3N0cmlwYnl0ZWNvdW50W3NdIDogMCk7CisgI2VuZGlmCisgCX0KKyB9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTkxNDcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzkyMjg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTkxNDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotRnJvbSAwYWNmMDFmZWE3MTRhZjU3M2I4MTRlMTBjZjEwNWMzMzU5YTIzNmMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogVGh1LCAxIEp1biAyMDE3IDEyOjQ0OjA0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyaW5mby5jLCB0aWZfZGlycmVhZC5jOiBhZGQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKCksCi1hbmQgdXNlIGl0IGluIFRJRkZSZWFkRGlyZWN0b3J5KCkgc28gYXMgdG8gaWdub3JlIGZpZWxkcyB3aG9zZSB0YWcgaXMgYQotY29kZWMtc3BlY2lmaWVkIHRhZyBidXQgdGhpcyBjb2RlYyBpcyBub3QgZW5hYmxlZC4gVGhpcyBhdm9pZHMgVElGRkdldEZpZWxkKCkKLXRvIGJlaGF2ZSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgY29kZWMgaXMgZW5hYmxlZCBvciBub3QsIGFuZAotdGh1cyBjYW4gYXZvaWQgc3RhY2sgYmFzZWQgYnVmZmVyIG92ZXJmbG93cyBpbiBhIG51bWJlciBvZiBUSUZGIHV0aWxpdGllcwotc3VjaCBhcyB0aWZmc3BsaXQsIHRpZmZjbXAsIHRodW1ibmFpbCwgZXRjLgotUGF0Y2ggZGVyaXZlZCBmcm9tIDAwNjMtSGFuZGxlLXByb3Blcmx5LUNPREVDLXNwZWNpZmljLXRhZ3MucGF0Y2gKLShodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTgwKSBieSBSYXBoYcOrbCBIZXJ0em9nLgotRml4ZXM6Ci1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTgwCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI1IChDVkUtMjAxNi0xMDA5NSkKLWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjQgKENWRS0yMDE1LTc1NTQpCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTYxIChDVkUtMjAxNi01MzE4KQotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5OSAoQ1ZFLTIwMTQtODEyOCkKLWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEKLWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0LzRkNGZhMGI2OGFlOWFlMDM4OTU5ZWU0ZjY5ZWJlMjg4ZWM4OTJmMDZdCi0KLUNWRTogQ1ZFLTIwMTctOTE0NwotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgfCAgMjAgKysrKysrKysrKwotIGxpYnRpZmYvdGlmX2Rpci5oICAgICB8ICAgMSArCi0gbGlidGlmZi90aWZfZGlyaW5mby5jIHwgMTAzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbGlidGlmZi90aWZfZGlycmVhZC5jIHwgICA0ICsrCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCBlZThkOWQwLi41NzM5MjkyIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMjMgQEAKLSsyMDE3LTA2LTAxICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAotKwlhbmQgdXNlIGl0IGluIFRJRkZSZWFkRGlyZWN0b3J5KCkgc28gYXMgdG8gaWdub3JlIGZpZWxkcyB3aG9zZSB0YWcgaXMgYQotKwljb2RlYy1zcGVjaWZpZWQgdGFnIGJ1dCB0aGlzIGNvZGVjIGlzIG5vdCBlbmFibGVkLiBUaGlzIGF2b2lkcyBUSUZGR2V0RmllbGQoKQotKwl0byBiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGNvZGVjIGlzIGVuYWJsZWQgb3Igbm90LCBhbmQKLSsJdGh1cyBjYW4gYXZvaWQgc3RhY2sgYmFzZWQgYnVmZmVyIG92ZXJmbG93cyBpbiBhIG51bWJlciBvZiBUSUZGIHV0aWxpdGllcwotKwlzdWNoIGFzIHRpZmZzcGxpdCwgdGlmZmNtcCwgdGh1bWJuYWlsLCBldGMuCi0rCVBhdGNoIGRlcml2ZWQgZnJvbSAwMDYzLUhhbmRsZS1wcm9wZXJseS1DT0RFQy1zcGVjaWZpYy10YWdzLnBhdGNoCi0rCShodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTgwKSBieSBSYXBoYcOrbCBIZXJ0em9nLgotKwlGaXhlczoKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MAotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkzCi0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjUgKENWRS0yMDE2LTEwMDk1KQotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY0IChDVkUtMjAxNS03NTU0KQotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTYxIChDVkUtMjAxNi01MzE4KQotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDk5IChDVkUtMjAxNC04MTI4KQotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQxCi0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzMKLSsKLSAyMDE3LTA1LTIxICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgotIAotIAkqIGNvbmZpZ3VyZS5hYzogbGlidGlmZiA0LjAuOCByZWxlYXNlZC4KLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXIuaCBiL2xpYnRpZmYvdGlmX2Rpci5oCi1pbmRleCBlMTJiNDRiLi41MjA2YmU0IDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfZGlyLmgKLSsrKyBiL2xpYnRpZmYvdGlmX2Rpci5oCi1AQCAtMjkxLDYgKzI5MSw3IEBAIHN0cnVjdCBfVElGRkZpZWxkIHsKLSBleHRlcm4gaW50IF9USUZGTWVyZ2VGaWVsZHMoVElGRiosIGNvbnN0IFRJRkZGaWVsZFtdLCB1aW50MzIpOwotIGV4dGVybiBjb25zdCBUSUZGRmllbGQqIF9USUZGRmluZE9yUmVnaXN0ZXJGaWVsZChUSUZGICosIHVpbnQzMiwgVElGRkRhdGFUeXBlKTsKLSBleHRlcm4gIFRJRkZGaWVsZCogX1RJRkZDcmVhdGVBbm9uRmllbGQoVElGRiAqLCB1aW50MzIsIFRJRkZEYXRhVHlwZSk7Ci0rZXh0ZXJuIGludCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoVElGRiAqdGlmLCB0dGFnX3QgdGFnKTsKLSAKLSAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSB9Ci1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyaW5mby5jIGIvbGlidGlmZi90aWZfZGlyaW5mby5jCi1pbmRleCAwYzhlZjQyLi45N2MwZGYwIDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfZGlyaW5mby5jCi0rKysgYi9saWJ0aWZmL3RpZl9kaXJpbmZvLmMKLUBAIC05NTYsNiArOTU2LDEwOSBAQCBUSUZGTWVyZ2VGaWVsZEluZm8oVElGRiogdGlmLCBjb25zdCBUSUZGRmllbGRJbmZvIGluZm9bXSwgdWludDMyIG4pCi0gCXJldHVybiAwOwotIH0KLSAKLStpbnQKLStfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoVElGRiAqdGlmLCB0dGFnX3QgdGFnKQotK3sKLSsJLyogRmlsdGVyIG91dCBub24tY29kZWMgc3BlY2lmaWMgdGFncyAqLwotKwlzd2l0Y2ggKHRhZykgewotKwkgICAgLyogU2hhcmVkIHRhZ3MgKi8KLSsJICAgIGNhc2UgVElGRlRBR19QUkVESUNUT1I6Ci0rCSAgICAvKiBKUEVHIHRhZ3MgKi8KLSsJICAgIGNhc2UgVElGRlRBR19KUEVHVEFCTEVTOgotKwkgICAgLyogT0pQRUcgdGFncyAqLwotKwkgICAgY2FzZSBUSUZGVEFHX0pQRUdJRk9GRlNFVDoKLSsJICAgIGNhc2UgVElGRlRBR19KUEVHSUZCWVRFQ09VTlQ6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1FUQUJMRVM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR0RDVEFCTEVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0pQRUdBQ1RBQkxFUzoKLSsJICAgIGNhc2UgVElGRlRBR19KUEVHUFJPQzoKLSsJICAgIGNhc2UgVElGRlRBR19KUEVHUkVTVEFSVElOVEVSVkFMOgotKwkgICAgLyogQ0NJVFQqICovCi0rCSAgICBjYXNlIFRJRkZUQUdfQkFERkFYTElORVM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfQ0xFQU5GQVhEQVRBOgotKwkgICAgY2FzZSBUSUZGVEFHX0NPTlNFQ1VUSVZFQkFERkFYTElORVM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfR1JPVVAzT1BUSU9OUzoKLSsJICAgIGNhc2UgVElGRlRBR19HUk9VUDRPUFRJT05TOgotKwkJYnJlYWs7Ci0rCSAgICBkZWZhdWx0OgotKwkJcmV0dXJuIDE7Ci0rCX0KLSsJLyogQ2hlY2sgaWYgY29kZWMgc3BlY2lmaWMgdGFncyBhcmUgYWxsb3dlZCBmb3IgdGhlIGN1cnJlbnQKLSsJICogY29tcHJlc3Npb24gc2NoZW1lIChjb2RlYykgKi8KLSsJc3dpdGNoICh0aWYtPnRpZl9kaXIudGRfY29tcHJlc3Npb24pIHsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fTFpXOgotKwkJaWYgKHRhZyA9PSBUSUZGVEFHX1BSRURJQ1RPUikKLSsJCSAgICByZXR1cm4gMTsKLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9QQUNLQklUUzoKLSsJCS8qIE5vIGNvZGVjLXNwZWNpZmljIHRhZ3MgKi8KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9USFVOREVSU0NBTjoKLSsJCS8qIE5vIGNvZGVjLXNwZWNpZmljIHRhZ3MgKi8KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9ORVhUOgotKwkJLyogTm8gY29kZWMtc3BlY2lmaWMgdGFncyAqLwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0pQRUc6Ci0rCQlpZiAodGFnID09IFRJRkZUQUdfSlBFR1RBQkxFUykKLSsJCSAgICByZXR1cm4gMTsKLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9PSlBFRzoKLSsJCXN3aXRjaCAodGFnKSB7Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0pQRUdJRk9GRlNFVDoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR0lGQllURUNPVU5UOgotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHUVRBQkxFUzoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR0RDVEFCTEVTOgotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHQUNUQUJMRVM6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0pQRUdQUk9DOgotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHUkVTVEFSVElOVEVSVkFMOgotKwkJCXJldHVybiAxOwotKwkJfQotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0NDSVRUUkxFOgotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9DQ0lUVFJMRVc6Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0NDSVRURkFYMzoKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fQ0NJVFRGQVg0OgotKwkJc3dpdGNoICh0YWcpIHsKLSsJCSAgICBjYXNlIFRJRkZUQUdfQkFERkFYTElORVM6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0NMRUFORkFYREFUQToKLSsJCSAgICBjYXNlIFRJRkZUQUdfQ09OU0VDVVRJVkVCQURGQVhMSU5FUzoKLSsJCQlyZXR1cm4gMTsKLSsJCSAgICBjYXNlIFRJRkZUQUdfR1JPVVAzT1BUSU9OUzoKLSsJCQlpZiAodGlmLT50aWZfZGlyLnRkX2NvbXByZXNzaW9uID09IENPTVBSRVNTSU9OX0NDSVRURkFYMykKLSsJCQkgICAgcmV0dXJuIDE7Ci0rCQkJYnJlYWs7Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0dST1VQNE9QVElPTlM6Ci0rCQkJaWYgKHRpZi0+dGlmX2Rpci50ZF9jb21wcmVzc2lvbiA9PSBDT01QUkVTU0lPTl9DQ0lUVEZBWDQpCi0rCQkJICAgIHJldHVybiAxOwotKwkJCWJyZWFrOwotKwkJfQotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0pCSUc6Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fREVGTEFURToKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fQURPQkVfREVGTEFURToKLSsJCWlmICh0YWcgPT0gVElGRlRBR19QUkVESUNUT1IpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsJICAgY2FzZSBDT01QUkVTU0lPTl9QSVhBUkxPRzoKLSsJCWlmICh0YWcgPT0gVElGRlRBR19QUkVESUNUT1IpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fU0dJTE9HOgotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9TR0lMT0cyNDoKLSsJCS8qIE5vIGNvZGVjLXNwZWNpZmljIHRhZ3MgKi8KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9MWk1BOgotKwkJaWYgKHRhZyA9PSBUSUZGVEFHX1BSRURJQ1RPUikKLSsJCSAgICByZXR1cm4gMTsKLSsJCWJyZWFrOwotKwotKwl9Ci0rCXJldHVybiAwOwotK30KLSsKLSAvKiB2aW06IHNldCB0cz04IHN0cz04IHN3PTggbm9ldDogKi8KLSAKLSAvKgotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcnJlYWQuYyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotaW5kZXggMWQ0ZjBiOS4uZjFkYzNkNyAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotKysrIGIvbGlidGlmZi90aWZfZGlycmVhZC5jCi1AQCAtMzU4MCw2ICszNTgwLDEwIEBAIFRJRkZSZWFkRGlyZWN0b3J5KFRJRkYqIHRpZikKLSAJCQkJCQkJZ290byBiYWQ7Ci0gCQkJCQkJZHAtPnRkaXJfdGFnPUlHTk9SRTsKLSAJCQkJCQlicmVhazsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKHRpZiwgZHAtPnRkaXJfdGFnKSApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHAtPnRkaXJfdGFnPUlHTk9SRTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotIAkJCQl9Ci0gCQkJfQotIAkJfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDY4NGRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNS5wYXRjaApAQCAtMCwwICsxLDE2MCBAQAorRnJvbSBhYmIwMDU1ZDIxYzUyYTk5MjUzMTRkNWIwNjI4ZmIyYjYzMDc2MTljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJpYW4gTWF5IDxicmlhbkBsaW51eHBlbmd1aW5zLnh5ej4KK0RhdGU6IFRodSwgNyBEZWMgMjAxNyAwNzo0Njo0NyArMTEwMAorU3ViamVjdDogW1BBVENIXSB0aWZmMnBkZjogRml4IENWRS0yMDE3LTk5MzUKKworRml4IGZvciBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA0CisKK1RoaXMgdnVsbmVyYWJpbGl0eSAtIGF0IGxlYXN0IGZvciB0aGUgc3VwcGxpZWQgdGVzdCBjYXNlIC0gaXMgYmVjYXVzZSB3ZQorYXNzdW1lIHRoYXQgYSB0aWZmIHdpbGwgb25seSBoYXZlIG9uZSB0cmFuc2ZlciBmdW5jdGlvbiB0aGF0IGlzIHRoZSBzYW1lCitmb3IgYWxsIHBhZ2VzLiBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSB0aGUgVElGRiBzdGFuZGFyZHMuCisKK1dlIHRoYW4gcmVhZCB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gZm9yIGV2ZXJ5IHBhZ2UuICBEZXBlbmRpbmcgb24gdGhlCit0cmFuc2ZlciBmdW5jdGlvbiwgd2UgYWxsb2NhdGUgZWl0aGVyIDIgb3IgNCBieXRlcyB0byB0aGUgWFJFRiBidWZmZXIuCitXZSBhbGxvY2F0ZSB0aGlzIG1lbW9yeSBhZnRlciB3ZSByZWFkIGluIHRoZSB0cmFuc2ZlciBmdW5jdGlvbiBmb3IgdGhlCitwYWdlLgorCitGb3IgdGhlIGZpcnN0IGV4cGxvaXQgLSBQT0MxLCB0aGlzIGZpbGUgaGFzIDMgcGFnZXMuIEZvciB0aGUgZmlyc3QgcGFnZQord2UgYWxsb2NhdGUgMiBleHRyYSBleHRyYSBYUkVGIGVudHJpZXMuIFRoZW4gZm9yIHRoZSBuZXh0IHBhZ2UgMiBtb3JlCitlbnRyaWVzLiBUaGVuIGZvciB0aGUgbGFzdCBwYWdlIHRoZSB0cmFuc2ZlciBmdW5jdGlvbiBjaGFuZ2VzIGFuZCB3ZQorYWxsb2NhdGUgNCBtb3JlIGVudHJpZXMuCisKK1doZW4gd2UgcmVhZCB0aGUgZmlsZSBpbnRvIG1lbW9yeSwgd2UgYXNzdW1lIHdlIGhhdmUgNCBieXRlcyBleHRyYSBmb3IKK2VhY2ggYW5kIGV2ZXJ5IHBhZ2UgKGFzIHBlciB0aGUgbGFzdCB0cmFuc2ZlciBmdW5jdGlvbiB3ZSByZWFkKS4gV2hpY2gKK2lzIG5vdCBjb3JyZWN0LCB3ZSBvbmx5IGhhdmUgMiBieXRlcyBleHRyYSBmb3IgdGhlIGZpcnN0IDIgcGFnZXMuIEFzIGEKK3Jlc3VsdCwgd2UgZW5kIHVwIHdyaXRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuCisKK1RoZXJlIGFyZSBhbHNvIHNvbWUgcmVsYXRlZCBpc3N1ZXMgdGhhdCB0aGlzIGFsc28gZml4ZXMuIEZvciBleGFtcGxlLAorVElGRkdldEZpZWxkIGNhbiByZXR1cm4gdW5pbml0YWxpemVkIHBvaW50ZXIgdmFsdWVzLCBhbmQgdGhlIGxvZ2ljIHRvCitkZXRlY3QgYSBOPTMgdnMgTj0xIHRyYW5zZmVyIGZ1bmN0aW9uIHNlZW1lZCByYXRoZXIgc3RyYW5nZS4KKworSXQgaXMgYWxzbyBzdHJhbmdlIHRoYXQgd2UgZGVjbGFyZSB0aGUgdHJhbnNmZXIgZnVuY3Rpb25zIHRvIGJlIG9mIHR5cGUKK2Zsb2F0LCB3aGVuIHRoZSBzdGFuZGFyZCBzYXlzIHRoZXkgYXJlIHVuc2lnbmVkIDE2IGJpdCB2YWx1ZXMuIFRoaXMgaXMKK2ZpeGVkIGluIGFub3RoZXIgcGF0Y2guCisKK1RoaXMgcGF0Y2ggd2lsbCBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgTiB2YWx1ZSBmb3IgZXZlcnkgdHJhbnNmZXIKK2Z1bmN0aW9uIGlzIHRoZSBzYW1lIGZvciBldmVyeSBwYWdlLiBJZiB0aGlzIGNoYW5nZXMsIHdlIGFib3J0IHdpdGggYW4KK2Vycm9yLiBJbiB0aGVvcnksIHdlIHNob3VsZCBwZXJoYXBzIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIGZ1bmN0aW9uCitpdHNlbGYgaXMgaWRlbnRpY2FsIGZvciBldmVyeSBwYWdlLCBob3dldmVyIHdlIGRvbid0IGRvIHRoYXQgZHVlIHRvIHRoZQorY29uZnVzaW9uIG9mIHRoZSB0eXBlIG9mIHRoZSBkYXRhIGluIHRoZSB0cmFuc2ZlciBmdW5jdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0bGFiLmNvbS9saWJ0aWZmL2xpYnRpZmYvY29tbWl0LzNkZDhmNmEzNTc5ODFhNDA5MGYxMjZhYjkwMjUwNTZjOTM4YjY5NDBdCisKK0NWRTogQ1ZFLTIwMTctOTkzNQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJ0aWZmL3RpZl9kaXIuYyB8ICAzICsrKworIHRvb2xzL3RpZmYycGRmLmMgIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXIuYyBiL2xpYnRpZmYvdGlmX2Rpci5jCitpbmRleCBmMDBmODA4Li5jMzZhNWYzIDEwMDY0NAorLS0tIGEvbGlidGlmZi90aWZfZGlyLmMKKysrKyBiL2xpYnRpZmYvdGlmX2Rpci5jCitAQCAtMTA2Nyw2ICsxMDY3LDkgQEAgX1RJRkZWR2V0RmllbGQoVElGRiogdGlmLCB1aW50MzIgdGFnLCB2YV9saXN0IGFwKQorIAkJCWlmICh0ZC0+dGRfc2FtcGxlc3BlcnBpeGVsIC0gdGQtPnRkX2V4dHJhc2FtcGxlcyA+IDEpIHsKKyAJCQkJKnZhX2FyZyhhcCwgdWludDE2KiopID0gdGQtPnRkX3RyYW5zZmVyZnVuY3Rpb25bMV07CisgCQkJCSp2YV9hcmcoYXAsIHVpbnQxNioqKSA9IHRkLT50ZF90cmFuc2ZlcmZ1bmN0aW9uWzJdOworKwkJCX0gZWxzZSB7CisrCQkJCSp2YV9hcmcoYXAsIHVpbnQxNioqKSA9IE5VTEw7CisrCQkJCSp2YV9hcmcoYXAsIHVpbnQxNioqKSA9IE5VTEw7CisgCQkJfQorIAkJCWJyZWFrOworIAkJY2FzZSBUSUZGVEFHX1JFRkVSRU5DRUJMQUNLV0hJVEU6CitkaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZjJwZGYuYyBiL3Rvb2xzL3RpZmYycGRmLmMKK2luZGV4IDQ1NGJlZmIuLjBiNTk3M2UgMTAwNjQ0CistLS0gYS90b29scy90aWZmMnBkZi5jCisrKysgYi90b29scy90aWZmMnBkZi5jCitAQCAtMTA0Nyw2ICsxMDQ3LDggQEAgdm9pZCB0MnBfcmVhZF90aWZmX2luaXQoVDJQKiB0MnAsIFRJRkYqIGlucHV0KXsKKyAJdWludDE2IHBhZ2VuPTA7CisgCXVpbnQxNiBwYWdlZD0wOworIAl1aW50MTYgeHVpbnQxNj0wOworKwl1aW50MTYgdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MDsKKysJZmxvYXQqIHRpZmZfdHJhbnNmZXJmdW5jdGlvblszXTsKKyAKKyAJZGlyZWN0b3J5Y291bnQ9VElGRk51bWJlck9mRGlyZWN0b3JpZXMoaW5wdXQpOworIAl0MnAtPnRpZmZfcGFnZXMgPSAoVDJQX1BBR0UqKSBfVElGRm1hbGxvYyhUSUZGU2FmZU11bHRpcGx5KHRtc2l6ZV90LGRpcmVjdG9yeWNvdW50LHNpemVvZihUMlBfUEFHRSkpKTsKK0BAIC0xMTQ3LDI2ICsxMTQ5LDQ4IEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9pbml0KFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7CisgICAgICAgICAgICAgICAgIH0KKyAjZW5kaWYKKyAJCWlmIChUSUZGR2V0RmllbGQoaW5wdXQsIFRJRkZUQUdfVFJBTlNGRVJGVU5DVElPTiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdKSkpIHsKKy0JCQlpZigodDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAodDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAodDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0gIT0KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMF0pKSB7CistCQkJCXQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQgPSAzOworLQkJCQl0MnAtPnRpZmZfcGFnZXNbaV0ucGFnZV9leHRyYSArPSA0OworLQkJCQl0MnAtPnBkZl94cmVmY291bnQgKz0gNDsKKy0JCQl9IGVsc2UgeworLQkJCQl0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID0gMTsKKy0JCQkJdDJwLT50aWZmX3BhZ2VzW2ldLnBhZ2VfZXh0cmEgKz0gMjsKKy0JCQkJdDJwLT5wZGZfeHJlZmNvdW50ICs9IDI7CistCQkJfQorLQkJCWlmKHQycC0+cGRmX21pbm9ydmVyc2lvbiA8IDIpCistCQkJCXQycC0+cGRmX21pbm9ydmVyc2lvbiA9IDI7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMF0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYodGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSkpKSB7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYoKHRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSAhPSAoZmxvYXQqKSBOVUxMKSAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0gIT0gKGZsb2F0KikgTlVMTCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0zOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50PTE7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9IGVsc2UgeworLQkJCXQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MDsKKysJCQl0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0wOworIAkJfQorKworKyAgICAgICAgICAgICAgICBpZiAoaSA+IDApeworKyAgICAgICAgICAgICAgICAgICAgaWYgKHRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ICE9IHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQpeworKyAgICAgICAgICAgICAgICAgICAgICAgIFRJRkZFcnJvcigKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRjJQREZfTU9EVUxFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlmZmVyZW50IHRyYW5zZmVyIGZ1bmN0aW9uIG9uIHBhZ2UgJWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICB0MnAtPnQycF9lcnJvciA9IFQyUF9FUlJfRVJST1I7CisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgIHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQgPSB0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudDsKKysgICAgICAgICAgICAgICAgdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMF0gPSB0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMF07CisrICAgICAgICAgICAgICAgIHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdID0gdGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdOworKyAgICAgICAgICAgICAgICB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSA9IHRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXTsKKysgICAgICAgICAgICAgICAgaWYodGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQgPT0gMyl7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT50aWZmX3BhZ2VzW2ldLnBhZ2VfZXh0cmEgKz0gNDsKKysgICAgICAgICAgICAgICAgICAgICAgICB0MnAtPnBkZl94cmVmY291bnQgKz0gNDsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZih0MnAtPnBkZl9taW5vcnZlcnNpb24gPCAyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT5wZGZfbWlub3J2ZXJzaW9uID0gMjsKKysgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudCA9PSAxKXsKKysgICAgICAgICAgICAgICAgICAgICAgICB0MnAtPnRpZmZfcGFnZXNbaV0ucGFnZV9leHRyYSArPSAyOworKyAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+cGRmX3hyZWZjb3VudCArPSAyOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHQycC0+cGRmX21pbm9ydmVyc2lvbiA8IDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MnAtPnBkZl9taW5vcnZlcnNpb24gPSAyOworKyAgICAgICAgICAgICAgICB9CisrCisgCQlpZiggVElGRkdldEZpZWxkKAorIAkJCWlucHV0LCAKKyAJCQlUSUZGVEFHX0lDQ1BST0ZJTEUsIAorQEAgLTE4MjgsOSArMTg1Miw4IEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9kYXRhKFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7CisgCQkJICYodDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0pLAorIAkJCSAmKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdKSkpIHsKKyAJCWlmKCh0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSAhPSAoZmxvYXQqKSBOVUxMKSAmJgorLSAgICAgICAgICAgICAgICAgICAodDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKy0gICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdICE9CistICAgICAgICAgICAgICAgICAgICB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblswXSkpIHsKKysgICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpCisrICAgICAgICAgICAgICAgICAgKSB7CisgCQkJdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0zOworIAkJfSBlbHNlIHsKKyAJCQl0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50PTE7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzk5MzYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDYyZWZlYTc2NTkyNjQ3NDI2ZGVlYzU1OTJmZDcyNzRkNWM5NTA2NDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogTW9uLCAyNiBKdW4gMjAxNyAxNToxOTo1OSArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2piaWcuYzogZml4IG1lbW9yeSBsZWFrIGluIGVycm9yIGNvZGUgcGF0aCBvZgotIEpCSUdEZWNvZGUoKSBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA2IFJlcG9ydGVkCi0gYnkgdGVhbSBPV0wzMzcKLQotKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IGVycm9yIG91dCBhdCBkZWNvZGluZyB0aW1lIGlmIGFudGljaXBhdGVkIGxpYmpwZWcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2ZlOGQ3MTY1OTU2Yjg4ZGY0ODM3MDM0YTkxNjFkYzVmZDIwY2Y2N2FdCi0KLUNWRTogQ1ZFLTIwMTctOTkzNgotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgfCA2ICsrKysrKwotIGxpYnRpZmYvdGlmX2piaWcuYyB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDU3MzkyOTIuLjAyNDBmMGIgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0wNi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YgSkJJR0RlY29kZSgpCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDYKLSsJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSsKLSAyMDE3LTA2LTAxICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2piaWcuYyBiL2xpYnRpZmYvdGlmX2piaWcuYwotaW5kZXggNWY1Zjc1ZS4uYzc1ZjMxZCAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2piaWcuYwotKysrIGIvbGlidGlmZi90aWZfamJpZy5jCi1AQCAtOTQsNiArOTQsNyBAQCBzdGF0aWMgaW50IEpCSUdEZWNvZGUoVElGRiogdGlmLCB1aW50OCogYnVmZmVyLCB0bXNpemVfdCBzaXplLCB1aW50MTYgcykKLSAJCQkgICAgIGpiZ19zdHJlcnJvcihkZWNvZGVTdGF0dXMpCi0gI2VuZGlmCi0gCQkJICAgICApOwotKwkJamJnX2RlY19mcmVlKCZkZWNvZGVyKTsKLSAJCXJldHVybiAwOwotIAl9Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE4LTU3ODQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxOC01Nzg0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNjAwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxOC01Nzg0LnBhdGNoCkBAIC0wLDAgKzEsMTM1IEBACitGcm9tIDZjZGVhMTUyMTNiZTZiNjdkOWY4MzgwYzdiYjQwZTMyNWQzYWRhY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRoYW4gQmFrZXIgPG5hdGhhbmJAbGVub3ZvLWNocm9tZS5jb20+CitEYXRlOiBUdWUsIDYgRmViIDIwMTggMTA6MTM6NTcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGZvciBidWcgMjc3MgorCitJdCBpcyBwb3NzaWJsZSB0byBjcmFmdCBhIFRJRkYgZG9jdW1lbnQgd2hlcmUgdGhlIElGRCBsaXN0IGlzIGNpcmN1bGFyLAorbGVhZGluZyB0byBhbiBpbmZpbml0ZSBsb29wIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNoYWluLiBUaGUgbGlidGlmZgorZGlyZWN0b3J5IHJlYWRlciBoYXMgYSBmYWlsc2FmZSB0aGF0IHdpbGwgYnJlYWsgb3V0IG9mIHRoaXMgbG9vcCBhZnRlcgorcmVhZGluZyA2NTUzNSBkaXJlY3RvcnkgZW50cmllcywgYnV0IGl0IHdpbGwgY29udGludWUgcHJvY2Vzc2luZywKK2NvbnN1bWluZyB0aW1lIGFuZCByZXNvdXJjZXMgdG8gcHJvY2VzcyB3aGF0IGlzIGVzc2VudGlhbGx5IGEgYm9ndXMgVElGRgorZG9jdW1lbnQuCisKK1RoaXMgY2hhbmdlIGZpeGVzIHRoZSBhYm92ZSBiZWhhdmlvciBieSBicmVha2luZyBvdXQgb2YgcHJvY2Vzc2luZyB3aGVuCithIFRJRkYgZG9jdW1lbnQgaGFzID49IDY1NTM1IGRpcmVjdG9yaWVzIGFuZCB0ZXJtaW5hdGluZyB3aXRoIGFuIGVycm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuY29tL2xpYnRpZmYvbGlidGlmZi9jb21taXQvNDczODUxZDIxMWNmODgwNWExNjE4MjAzMzdjYTc0Y2M5NjE1ZDZlZl0KKworQ1ZFOiBDVkUtMjAxOC01Nzg0CisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbnRyaWIvYWRkdGlmZm8vdGlmX292ZXJ2aWV3LmMgfCAxNCArKysrKysrKysrKysrLQorIHRvb2xzL3RpZmYycGRmLmMgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCisgdG9vbHMvdGlmZmNyb3AuYyAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKysrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jIGIvY29udHJpYi9hZGR0aWZmby90aWZfb3ZlcnZpZXcuYworaW5kZXggYzYxZmZiYi4uMDNiMzU3MyAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvYWRkdGlmZm8vdGlmX292ZXJ2aWV3LmMKKysrKyBiL2NvbnRyaWIvYWRkdGlmZm8vdGlmX292ZXJ2aWV3LmMKK0BAIC02NSw2ICs2NSw4IEBACisgIyAgZGVmaW5lIE1BWChhLGIpICAgICAgKChhPmIpID8gYSA6IGIpCisgI2VuZGlmCisgCisrI2RlZmluZSBUSUZGX0RJUl9NQVggIDY1NTM0CisrCisgdm9pZCBUSUZGQnVpbGRPdmVydmlld3MoIFRJRkYgKiwgaW50LCBpbnQgKiwgaW50LCBjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKikoZG91YmxlLHZvaWQqKSwgdm9pZCAqICk7CisgCitAQCAtOTEsNiArOTMsNyBAQCB1aW50MzIgVElGRl9Xcml0ZU92ZXJ2aWV3KCBUSUZGICpoVElGRiwgdWludDMyIG5YU2l6ZSwgdWludDMyIG5ZU2l6ZSwKKyB7CisgICAgIHRvZmZfdAluQmFzZURpck9mZnNldDsKKyAgICAgdG9mZl90CW5PZmZzZXQ7CisrICAgIHRkaXJfdAlpTnVtRGlyOworIAorICAgICAodm9pZCkgYlVzZVN1YklGRHM7CisgCitAQCAtMTQ3LDcgKzE1MCwxNiBAQCB1aW50MzIgVElGRl9Xcml0ZU92ZXJ2aWV3KCBUSUZGICpoVElGRiwgdWludDMyIG5YU2l6ZSwgdWludDMyIG5ZU2l6ZSwKKyAgICAgICAgIHJldHVybiAwOworIAorICAgICBUSUZGV3JpdGVEaXJlY3RvcnkoIGhUSUZGICk7CistICAgIFRJRkZTZXREaXJlY3RvcnkoIGhUSUZGLCAodGRpcl90KSAoVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaFRJRkYpLTEpICk7CisrICAgIGlOdW1EaXIgPSBUSUZGTnVtYmVyT2ZEaXJlY3RvcmllcyhoVElGRik7CisrICAgIGlmKCBpTnVtRGlyID4gVElGRl9ESVJfTUFYICkKKysgICAgeworKyAgICAgICAgVElGRkVycm9yRXh0KCBUSUZGQ2xpZW50ZGF0YShoVElGRiksCisrICAgICAgICAgICAgICAgICAgICAgICJUSUZGX1dyaXRlT3ZlcnZpZXciLAorKyAgICAgICAgICAgICAgICAgICAgICAiRmlsZSBgJXMnIGhhcyB0b28gbWFueSBkaXJlY3Rvcmllcy5cbiIsCisrICAgICAgICAgICAgICAgICAgICAgIFRJRkZGaWxlTmFtZShoVElGRikgKTsKKysgICAgICAgIGV4aXQoLTEpOworKyAgICB9CisrICAgIFRJRkZTZXREaXJlY3RvcnkoIGhUSUZGLCAodGRpcl90KSAoaU51bURpciAtIDEpICk7CisgCisgICAgIG5PZmZzZXQgPSBUSUZGQ3VycmVudERpck9mZnNldCggaFRJRkYgKTsKKyAKK2RpZmYgLS1naXQgYS90b29scy90aWZmMnBkZi5jIGIvdG9vbHMvdGlmZjJwZGYuYworaW5kZXggMGI1OTczZS4uZWY1ZDZhMCAxMDA2NDQKKy0tLSBhL3Rvb2xzL3RpZmYycGRmLmMKKysrKyBiL3Rvb2xzL3RpZmYycGRmLmMKK0BAIC02OCw2ICs2OCw4IEBAIGV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhcioqLCBjaGFyKik7CisgCisgI2RlZmluZSBQU19VTklUX1NJWkUJNzIuMEYKKyAKKysjZGVmaW5lIFRJRkZfRElSX01BWCAgICA2NTUzNAorKworIC8qIFRoaXMgdHlwZSBpcyBvZiBQREYgY29sb3Igc3BhY2VzLiAqLworIHR5cGVkZWYgZW51bSB7CisgCVQyUF9DU19CSUxFVkVMID0gMHgwMSwJLyogQmlsZXZlbCwgYmxhY2sgYW5kIHdoaXRlICovCitAQCAtMTA1MSw2ICsxMDUzLDE0IEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9pbml0KFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7CisgCWZsb2F0KiB0aWZmX3RyYW5zZmVyZnVuY3Rpb25bM107CisgCisgCWRpcmVjdG9yeWNvdW50PVRJRkZOdW1iZXJPZkRpcmVjdG9yaWVzKGlucHV0KTsKKysJaWYoZGlyZWN0b3J5Y291bnQgPiBUSUZGX0RJUl9NQVgpIHsKKysJCVRJRkZFcnJvcigKKysJCQlUSUZGMlBERl9NT0RVTEUsCisrCQkJIlRJRkYgY29udGFpbnMgdG9vIG1hbnkgZGlyZWN0b3JpZXMsICVzIiwKKysJCQlUSUZGRmlsZU5hbWUoaW5wdXQpKTsKKysJCXQycC0+dDJwX2Vycm9yID0gVDJQX0VSUl9FUlJPUjsKKysJCXJldHVybjsKKysJfQorIAl0MnAtPnRpZmZfcGFnZXMgPSAoVDJQX1BBR0UqKSBfVElGRm1hbGxvYyhUSUZGU2FmZU11bHRpcGx5KHRtc2l6ZV90LGRpcmVjdG9yeWNvdW50LHNpemVvZihUMlBfUEFHRSkpKTsKKyAJaWYodDJwLT50aWZmX3BhZ2VzPT1OVUxMKXsKKyAJCVRJRkZFcnJvcigKK2RpZmYgLS1naXQgYS90b29scy90aWZmY3JvcC5jIGIvdG9vbHMvdGlmZmNyb3AuYworaW5kZXggYzY5MTc3ZS4uYzYwY2IzOCAxMDA2NDQKKy0tLSBhL3Rvb2xzL3RpZmZjcm9wLmMKKysrKyBiL3Rvb2xzL3RpZmZjcm9wLmMKK0BAIC0yMTcsNiArMjE3LDggQEAgZXh0ZXJuIGludCBnZXRvcHQoaW50IGFyZ2MsIGNoYXIgKiBjb25zdCBhcmd2W10sIGNvbnN0IGNoYXIgKm9wdHN0cmluZyk7CisgI2RlZmluZSBEVU1QX1RFWFQgICAxCisgI2RlZmluZSBEVU1QX1JBVyAgICAyCisgCisrI2RlZmluZSBUSUZGX0RJUl9NQVggIDY1NTM0CisrCisgLyogT2Zmc2V0cyBpbnRvIGJ1ZmZlciBmb3IgbWFyZ2lucyBhbmQgZml4ZWQgd2lkdGggYW5kIGxlbmd0aCBzZWdtZW50cyAqLworIHN0cnVjdCBvZmZzZXQgeworICAgdWludDMyICB0bWFyZ2luOworQEAgLTIyMzMsNyArMjIzNSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKKyAgICAgcGFnZU51bSA9IC0xOworICAgZWxzZQorICAgICB0b3RhbF9pbWFnZXMgPSAwOworLSAgLyogcmVhZCBtdWx0aXBsZSBpbnB1dCBmaWxlcyBhbmQgd3JpdGUgdG8gb3V0cHV0IGZpbGUocykgKi8KKysgIC8qIFJlYWQgbXVsdGlwbGUgaW5wdXQgZmlsZXMgYW5kIHdyaXRlIHRvIG91dHB1dCBmaWxlKHMpICovCisgICB3aGlsZSAob3B0aW5kIDwgYXJnYyAtIDEpCisgICAgIHsKKyAgICAgaW4gPSBUSUZGT3BlbiAoYXJndltvcHRpbmRdLCAiciIpOworQEAgLTIyNDEsNyArMjI0MywxNCBAQCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCisgICAgICAgcmV0dXJuICgtMyk7CisgCisgICAgIC8qIElmIG9ubHkgb25lIGlucHV0IGZpbGUgaXMgc3BlY2lmaWVkLCB3ZSBjYW4gdXNlIGRpcmVjdG9yeSBjb3VudCAqLworLSAgICB0b3RhbF9pbWFnZXMgPSBUSUZGTnVtYmVyT2ZEaXJlY3Rvcmllcyhpbik7IAorKyAgICB0b3RhbF9pbWFnZXMgPSBUSUZGTnVtYmVyT2ZEaXJlY3Rvcmllcyhpbik7CisrICAgIGlmICh0b3RhbF9pbWFnZXMgPiBUSUZGX0RJUl9NQVgpCisrICAgICAgeworKyAgICAgIFRJRkZFcnJvciAoVElGRkZpbGVOYW1lKGluKSwgIkZpbGUgY29udGFpbnMgdG9vIG1hbnkgZGlyZWN0b3JpZXMiKTsKKysgICAgICBpZiAob3V0ICE9IE5VTEwpCisrICAgICAgICAodm9pZCkgVElGRkNsb3NlKG91dCk7CisrICAgICAgcmV0dXJuICgxKTsKKysgICAgICB9CisgICAgIGlmIChpbWFnZV9jb3VudCA9PSAwKQorICAgICAgIHsKKyAgICAgICBkaXJudW0gPSAwOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL2xpYnRvb2wyLnBhdGNoCmluZGV4IDQ1NzIwMmUuLmE4NGM2ODggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL2xpYnRvb2wyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL2xpYnRvb2wyLnBhdGNoCkBAIC00LDEzICs0LDEzIEBACiAgY29uZmlndXJlLmFjIHwgICAgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogdGlmZi0zLjkuNS9jb25maWd1cmUuYWMKK0luZGV4OiB0aWZmLTQuMC45L2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtMy45LjUub3JpZy9jb25maWd1cmUuYWMKLSsrKyB0aWZmLTMuOS41L2NvbmZpZ3VyZS5hYworLS0tIHRpZmYtNC4wLjkub3JpZy9jb25maWd1cmUuYWMKKysrKyB0aWZmLTQuMC45L2NvbmZpZ3VyZS5hYwogQEAgLTI3LDcgKzI3LDcgQEAgZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcAogIEFDX1BSRVJFUSgyLjY0KQotIEFDX0lOSVQoW0xpYlRJRkYgU29mdHdhcmVdLFszLjkuNV0sW3RpZmZAbGlzdHMubWFwdG9vbHMub3JnXSxbdGlmZl0pCisgQUNfSU5JVChbTGliVElGRiBTb2Z0d2FyZV0sWzQuMC45XSxbdGlmZkBsaXN0cy5tYXB0b29scy5vcmddLFt0aWZmXSkKICBBQ19DT05GSUdfQVVYX0RJUihjb25maWcpCiAtQUNfQ09ORklHX01BQ1JPX0RJUihtNCkKICtkbmwgQUNfQ09ORklHX01BQ1JPX0RJUihtNCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmVlNmY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIlByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBUYWcgSW1hZ2UgRmlsZSBGb3JtYXQgKFRJRkYpIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTM0ZGEzZGI0NmZhYjc1MDE5OTJmOTYxNWQ3ZTE1OGNmIgotCi1DVkVfUFJPRFVDVCA9ICJsaWJ0aWZmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvbGlidGlmZi90aWZmLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ0b29sMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05MTQ3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk5MzYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA2ODgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTEzMzUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MjcucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJhN2QxYzEzMTg0MTZkZGYzNmQ1ZjZmYTQ2MDAwNjliIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5ZDdhNWE4Y2NkOTIwNTk5MTNmMjQ2ODc3ZGI5NWEyOTE4ZTZjMDRmYjlkNDNmZDc0ZTVjMzM5MGRhYzI5MTAiCi0KLSMgZXhjbHVkZSBiZXRhcwotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidGlmZi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYXhfY3ZfY2hlY2tfZ2xfbGliZ2w9bm8iCi0KLVBBQ0tBR0VDT05GSUcgPz0gImN4eCBqcGVnIHpsaWIgbHptYSBcCi0gICAgICAgICAgICAgICAgICBzdHJpcC1jaG9wcGluZyBleHRyYXNhbXBsZS1hcy1hbHBoYSBjaGVjay15Y2Jjci1zdWJzYW1wbGluZyIKLQotUEFDS0FHRUNPTkZJR1tjeHhdID0gIi0tZW5hYmxlLWN4eCwtLWRpc2FibGUtY3h4LCwiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZywiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiwiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHosIgotCi0jIENvbnZlcnQgc2luZ2xlLXN0cmlwIHVuY29tcHJlc3NlZCBpbWFnZXMgdG8gbXVsdGlwbGUgc3RyaXBzIG9mIHNwZWNpZmllZAotIyBzaXplIChkZWZhdWx0OiA4MTkyKSB0byByZWR1Y2UgbWVtb3J5IHVzYWdlCi1QQUNLQUdFQ09ORklHW3N0cmlwLWNob3BwaW5nXSA9ICItLWVuYWJsZS1zdHJpcC1jaG9wcGluZywtLWRpc2FibGUtc3RyaXAtY2hvcHBpbmcsLCIKLQotIyBUcmVhdCBhIGZvdXJ0aCBzYW1wbGUgd2l0aCBubyBFWFRSQVNBTVBMRV8gdmFsdWUgYXMgYmVpbmcgQVNTT0NBTFBIQQotUEFDS0FHRUNPTkZJR1tleHRyYXNhbXBsZS1hcy1hbHBoYV0gPSAiLS1lbmFibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLS1kaXNhYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLCwiCi0KLSMgQ29udHJvbCBwaWNraW5nIHVwIFlDYkNyIHN1YnNhbXBsZSBpbmZvLiBEaXNhYmxlIHRvIHN1cHBvcnQgZmlsZXMgbGFja2luZwotIyB0aGUgdGFnCi1QQUNLQUdFQ09ORklHW2NoZWNrLXljYmNyLXN1YnNhbXBsaW5nXSA9ICItLWVuYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywtLWRpc2FibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLCIKLQotIyBTdXBwb3J0IGEgbWVjaGFuaXNtIGFsbG93aW5nIHJlYWRpbmcgbGFyZ2Ugc3RyaXBzICh1c3VhbGx5IG9uZSBzdHJpcCBmaWxlcykKLSMgaW4gY2h1bmtzIHdoZW4gdXNpbmcgVElGRlJlYWRTY2FubGluZS4gRXhwZXJpbWVudGFsIDQuMCsgZmVhdHVyZQotUEFDS0FHRUNPTkZJR1tjaHVua3ktc3RyaXAtcmVhZF0gPSAiLS1lbmFibGUtY2h1bmt5LXN0cmlwLXJlYWQsLS1kaXNhYmxlLWNodW5reS1zdHJpcC1yZWFkLCwiCi0KLVBBQ0tBR0VTID0rICJ0aWZmeHggdGlmZi11dGlscyIKLUZJTEVTX3RpZmZ4eCA9ICIke2xpYmRpcn0vbGlidGlmZnh4LnNvLioiCi1GSUxFU190aWZmLXV0aWxzID0gIiR7YmluZGlyfS8qIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdGlmZmNvbmYuaAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjM2JiYTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC45LmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiUHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIFRhZyBJbWFnZSBGaWxlIEZvcm1hdCAoVElGRikiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9MzRkYTNkYjQ2ZmFiNzUwMTk5MmY5NjE1ZDdlMTU4Y2YiCisKK0NWRV9QUk9EVUNUID0gImxpYnRpZmYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLm9zZ2VvLm9yZy9saWJ0aWZmL3RpZmYtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2xpYnRvb2wyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk5MzUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTgwMTMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtNTc4NC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTRiYWQyMTEyNzljYzkzZWI0ZmNhMzFiYTliZmRjNzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmU3YmRlZWMyYzMxMDczNGU3MzRkMTlhYWUzYTcxZWJlMzdhNGQ4NDJlMGUyM2RiYjFiODkyMWMwMDI2Y2ZjZCIKKworIyBleGNsdWRlIGJldGFzCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ0aWZmLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlcgorCitDQUNIRURfQ09ORklHVVJFVkFSUyA9ICJheF9jdl9jaGVja19nbF9saWJnbD1ubyIKKworUEFDS0FHRUNPTkZJRyA/PSAiY3h4IGpwZWcgemxpYiBsem1hIFwKKyAgICAgICAgICAgICAgICAgIHN0cmlwLWNob3BwaW5nIGV4dHJhc2FtcGxlLWFzLWFscGhhIGNoZWNrLXljYmNyLXN1YnNhbXBsaW5nIgorCitQQUNLQUdFQ09ORklHW2N4eF0gPSAiLS1lbmFibGUtY3h4LC0tZGlzYWJsZS1jeHgsLCIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnLCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliLCIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiwiCisKKyMgQ29udmVydCBzaW5nbGUtc3RyaXAgdW5jb21wcmVzc2VkIGltYWdlcyB0byBtdWx0aXBsZSBzdHJpcHMgb2Ygc3BlY2lmaWVkCisjIHNpemUgKGRlZmF1bHQ6IDgxOTIpIHRvIHJlZHVjZSBtZW1vcnkgdXNhZ2UKK1BBQ0tBR0VDT05GSUdbc3RyaXAtY2hvcHBpbmddID0gIi0tZW5hYmxlLXN0cmlwLWNob3BwaW5nLC0tZGlzYWJsZS1zdHJpcC1jaG9wcGluZywsIgorCisjIFRyZWF0IGEgZm91cnRoIHNhbXBsZSB3aXRoIG5vIEVYVFJBU0FNUExFXyB2YWx1ZSBhcyBiZWluZyBBU1NPQ0FMUEhBCitQQUNLQUdFQ09ORklHW2V4dHJhc2FtcGxlLWFzLWFscGhhXSA9ICItLWVuYWJsZS1leHRyYXNhbXBsZS1hcy1hbHBoYSwtLWRpc2FibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLCIKKworIyBDb250cm9sIHBpY2tpbmcgdXAgWUNiQ3Igc3Vic2FtcGxlIGluZm8uIERpc2FibGUgdG8gc3VwcG9ydCBmaWxlcyBsYWNraW5nCisjIHRoZSB0YWcKK1BBQ0tBR0VDT05GSUdbY2hlY2steWNiY3Itc3Vic2FtcGxpbmddID0gIi0tZW5hYmxlLWNoZWNrLXljYmNyLXN1YnNhbXBsaW5nLC0tZGlzYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywsIgorCisjIFN1cHBvcnQgYSBtZWNoYW5pc20gYWxsb3dpbmcgcmVhZGluZyBsYXJnZSBzdHJpcHMgKHVzdWFsbHkgb25lIHN0cmlwIGZpbGVzKQorIyBpbiBjaHVua3Mgd2hlbiB1c2luZyBUSUZGUmVhZFNjYW5saW5lLiBFeHBlcmltZW50YWwgNC4wKyBmZWF0dXJlCitQQUNLQUdFQ09ORklHW2NodW5reS1zdHJpcC1yZWFkXSA9ICItLWVuYWJsZS1jaHVua3ktc3RyaXAtcmVhZCwtLWRpc2FibGUtY2h1bmt5LXN0cmlwLXJlYWQsLCIKKworUEFDS0FHRVMgPSsgInRpZmZ4eCB0aWZmLXV0aWxzIgorRklMRVNfdGlmZnh4ID0gIiR7bGliZGlyfS9saWJ0aWZmeHguc28uKiIKK0ZJTEVTX3RpZmYtdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciB0aWZmY29uZi5oCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDM2Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzIucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSAzOTcwNGNlMTY4MzVlNWMwMTliYjAzZjZhOTRkYzFmMDY3NzQwNmM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0d1aWRvPTIwRz1DMz1CQ250aGVyPz0gPGFneEBzaWd4Y3B1Lm9yZz4KK0RhdGU6IFdlZCwgMTUgTm92IDIwMTcgMTg6MjI6NTkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTctMTQ2MzI6IHZvcmJpc19hbmFseXNpc19oZWFkZXJfb3V0OiBEb24ndCBjbGVhciBvcGIKKyBpZiBub3QgaW5pdGlhbGl6ZWQKKworSWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgd2l0aGluIHRoZSBhbGxvd2VkIHJhbmdlCit3ZSBjYWxsIG9nZ2JhY2tfd3JpdGVjbGVhciBhbHRvdWdoIGl0J3Mgbm90IGluaXRpYWxpemVkIHlldC4KKworVGhpcyBmaXhlcworCisgICAgPTIzMzcxPT0gSW52YWxpZCBmcmVlKCkgLyBkZWxldGUgLyBkZWxldGVbXSAvIHJlYWxsb2MoKQorICAgID09MjMzNzE9PSAgICBhdCAweDRDMkNFMUI6IGZyZWUgKHZnX3JlcGxhY2VfbWFsbG9jLmM6NTMwKQorICAgID09MjMzNzE9PSAgICBieSAweDgyOUNBMzE6IG9nZ3BhY2tfd3JpdGVjbGVhciAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJvZ2cuc28uMC44LjIpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4ODRCOTZFRTogdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCAoaW5mby5jOjY1MikKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg5RkJDQkNDOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvc294L2xpYnNveF9mbXRfdm9yYmlzLnNvKQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTI0RjE6ID8/PyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4NEU1MkNDQTogc294X29wZW5fd3JpdGUgKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQorICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogb3Blbl9vdXRwdXRfZmlsZSAoc294LmM6MTU1NikKKyAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IHByb2Nlc3MgKHNveC5jOjE3NTMpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBtYWluIChzb3guYzozMDEyKQorICAgID09MjMzNzE9PSAgQWRkcmVzcyAweDY4NzY4YzggaXMgNDg4IGJ5dGVzIGluc2lkZSBhIGJsb2NrIG9mIHNpemUgODgwIGFsbG9jJ2QKKyAgICA9PTIzMzcxPT0gICAgYXQgMHg0QzJCQjFGOiBtYWxsb2MgKHZnX3JlcGxhY2VfbWFsbG9jLmM6Mjk4KQorICAgID09MjMzNzE9PSAgICBieSAweDRDMkRFOUY6IHJlYWxsb2MgKHZnX3JlcGxhY2VfbWFsbG9jLmM6Nzg1KQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTQ1QzI6IGxzeF9yZWFsbG9jIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg5RkJDOUEwOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvc294L2xpYnNveF9mbXRfdm9yYmlzLnNvKQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTI0RjE6ID8/PyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4NEU1MkNDQTogc294X29wZW5fd3JpdGUgKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQorICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogb3Blbl9vdXRwdXRfZmlsZSAoc294LmM6MTU1NikKKyAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IHByb2Nlc3MgKHNveC5jOjE3NTMpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBtYWluIChzb3guYzozMDEyKQorCithcyBzZWVuIHdoZW4gdXNpbmcgdGhlIHRlc3RjYXNlIGZyb20gQ1ZFLTIwMTctMTEzMzMgd2l0aAorMDA4ZDIzYjc4MmJlMDljOGQ3NWJhODE5MGIxNzk0YWJkNjZjNzEyMSBhcHBsaWVkLiBIb3dldmVyIHRoZSBlcnJvciB3YXMKK3RoZXJlIGJlZm9yZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNDYzMgorCitSZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6CitodHRwczovL2dpdC54aXBoLm9yZy8/cD12b3JiaXMuZ2l0O2E9Y29tbWl0ZGlmZjtoPWMxYzI4MzFmYzczMDZkNWZiZDdiYzgwMDMyNGVmZDEyYjI4ZDMyN2YKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgbGliL2luZm8uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvbGliL2luZm8uYyBiL2xpYi9pbmZvLmMKK2luZGV4IDgxYjc1NTcuLjRkODI1NjggMTAwNjQ0CistLS0gYS9saWIvaW5mby5jCisrKysgYi9saWIvaW5mby5jCitAQCAtNTg0LDYgKzU4NCw3IEBAIGludCB2b3JiaXNfYW5hbHlzaXNfaGVhZGVyb3V0KHZvcmJpc19kc3Bfc3RhdGUgKnYsCisgICBwcml2YXRlX3N0YXRlICpiPXYtPmJhY2tlbmRfc3RhdGU7CisgCisgICBpZighYnx8dmktPmNoYW5uZWxzPD0wfHx2aS0+Y2hhbm5lbHM+MjU2KXsKKysgICAgYiA9IE5VTEw7CisgICAgIHJldD1PVl9FRkFVTFQ7CisgICAgIGdvdG8gZXJyX291dDsKKyAgIH0KKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM5ZTY4OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMDdlZGE1NWYzMzZlNWM0NGRmYzBlNGExZTIxNjI4ZmFlZDcyNTVmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9HdWlkbz0yMEc9QzM9QkNudGhlcj89IDxhZ3hAc2lneGNwdS5vcmc+CitEYXRlOiBUdWUsIDMxIE9jdCAyMDE3IDE4OjMyOjQ2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE3LTE0NjMzOiBEb24ndCBhbGxvdyBmb3IgbW9yZSB0aGFuIDI1NiBjaGFubmVscworCitPdGhlcndpc2UKKworIGZvcihpPTA7aTx2aS0+Y2hhbm5lbHM7aSsrKXsKKyAgICAgIC8qIHRoZSBlbmNvZGVyIHNldHVwIGFzc3VtZXMgdGhhdCBhbGwgdGhlIG1vZGVzIHVzZWQgYnkgYW55CisgICAgICAgICBzcGVjaWZpYyBiaXRyYXRlIHR3ZWFraW5nIHVzZSB0aGUgc2FtZSBmbG9vciAqLworICAgICAgaW50IHN1Ym1hcD1pbmZvLT5jaG11eGxpc3RbaV07CisKK292ZXJyZWFkcyBsYXRlciBpbiBtYXBwaW5nMF9mb3J3YXJkIHNpbmNlIGNobXV4bGlzdCBpcyBhIGZpeGVkIGFycmF5IG9mCisyNTYgZWxlbWVudHMgbWF4LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE0NjMzCisKK1JlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKK2h0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPXZvcmJpcy5naXQ7YT1jb21taXRkaWZmO2g9NjY3Y2ViNGFhYjYwYzFmNzQwNjAxNDNiYjI0ZTVmNDI3YjNjY2U1ZgorCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBsaWIvaW5mby5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL2luZm8uYyBiL2xpYi9pbmZvLmMKK2luZGV4IGU0NDdhMGMuLjgxYjc1NTcgMTAwNjQ0CistLS0gYS9saWIvaW5mby5jCisrKysgYi9saWIvaW5mby5jCitAQCAtNTgzLDcgKzU4Myw3IEBAIGludCB2b3JiaXNfYW5hbHlzaXNfaGVhZGVyb3V0KHZvcmJpc19kc3Bfc3RhdGUgKnYsCisgICBvZ2dwYWNrX2J1ZmZlciBvcGI7CisgICBwcml2YXRlX3N0YXRlICpiPXYtPmJhY2tlbmRfc3RhdGU7CisgCistICBpZighYnx8dmktPmNoYW5uZWxzPD0wKXsKKysgIGlmKCFifHx2aS0+Y2hhbm5lbHM8PTB8fHZpLT5jaGFubmVscz4yNTYpeworICAgICByZXQ9T1ZfRUZBVUxUOworICAgICBnb3RvIGVycl9vdXQ7CisgICB9CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxOC01MTQ2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtNTE0Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQwNTJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtNTE0Ni5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSAzYTAxN2Y1OTE0NTdiZjZlODAyMzFiNTYzYmY4M2VlNTgzZmRiY2E4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhvbWFzIERhZWRlIDxkYWVkZTAwM0B1bW4uZWR1PgorRGF0ZTogVGh1LCAxNSBNYXIgMjAxOCAxNDoxNTozMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBDVkUtMjAxOC01MTQ2OiBQcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGUgaW4gY29kZWJvb2sKKyBkZWNvZGluZy4KKworQ29kZWJvb2tzIHRoYXQgYXJlIG5vdCBhbiBleGFjdCBkaXZpc29yIG9mIHRoZSBwYXJ0aXRpb24gc2l6ZSBhcmUgbm93Cit0cnVuY2F0ZWQgdG8gZml0IHdpdGhpbiB0aGUgcGFydGl0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE4LTUxNDYKKworUmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBhdGNoOgoraHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9dm9yYmlzLmdpdDthPWNvbW1pdGRpZmY7aD02NjdjZWI0YWFiNjBjMWY3NDA2MDE0M2JiMjRlNWY0MjdiM2NjZTVmCisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIGxpYi9jb2RlYm9vay5jIHwgNDggKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2NvZGVib29rLmMgYi9saWIvY29kZWJvb2suYworaW5kZXggOGI3NjZlOC4uNzAyMmZkMiAxMDA2NDQKKy0tLSBhL2xpYi9jb2RlYm9vay5jCisrKysgYi9saWIvY29kZWJvb2suYworQEAgLTM4Nyw3ICszODcsNyBAQCBsb25nIHZvcmJpc19ib29rX2RlY29kZXZzX2FkZChjb2RlYm9vayAqYm9vayxmbG9hdCAqYSxvZ2dwYWNrX2J1ZmZlciAqYixpbnQgbil7CisgICAgICAgdFtpXSA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeVtpXSpib29rLT5kaW07CisgICAgIH0KKyAgICAgZm9yKGk9MCxvPTA7aTxib29rLT5kaW07aSsrLG8rPXN0ZXApCistICAgICAgZm9yIChqPTA7ajxzdGVwO2orKykKKysgICAgICBmb3IgKGo9MDtvK2o8biAmJiBqPHN0ZXA7aisrKQorICAgICAgICAgYVtvK2pdKz10W2pdW2ldOworICAgfQorICAgcmV0dXJuKDApOworQEAgLTM5OSw0MSArMzk5LDEyIEBAIGxvbmcgdm9yYmlzX2Jvb2tfZGVjb2Rldl9hZGQoY29kZWJvb2sgKmJvb2ssZmxvYXQgKmEsb2dncGFja19idWZmZXIgKmIsaW50IG4peworICAgICBpbnQgaSxqLGVudHJ5OworICAgICBmbG9hdCAqdDsKKyAKKy0gICAgaWYoYm9vay0+ZGltPjgpeworLSAgICAgIGZvcihpPTA7aTxuOyl7CistICAgICAgICBlbnRyeSA9IGRlY29kZV9wYWNrZWRfZW50cnlfbnVtYmVyKGJvb2ssYik7CistICAgICAgICBpZihlbnRyeT09LTEpcmV0dXJuKC0xKTsKKy0gICAgICAgIHQgICAgID0gYm9vay0+dmFsdWVsaXN0K2VudHJ5KmJvb2stPmRpbTsKKy0gICAgICAgIGZvciAoaj0wO2o8Ym9vay0+ZGltOykKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgfQorLSAgICB9ZWxzZXsKKy0gICAgICBmb3IoaT0wO2k8bjspeworLSAgICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOworLSAgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7CistICAgICAgICB0ICAgICA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeSpib29rLT5kaW07CistICAgICAgICBqPTA7CistICAgICAgICBzd2l0Y2goKGludClib29rLT5kaW0peworLSAgICAgICAgY2FzZSA4OgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgNzoKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDY6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSA1OgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgNDoKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDM6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSAyOgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgMToKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDA6CistICAgICAgICAgIGJyZWFrOworLSAgICAgICAgfQorLSAgICAgIH0KKysgICAgZm9yKGk9MDtpPG47KXsKKysgICAgICBlbnRyeSA9IGRlY29kZV9wYWNrZWRfZW50cnlfbnVtYmVyKGJvb2ssYik7CisrICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7CisrICAgICAgdCAgICAgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOworKyAgICAgIGZvcihqPTA7aTxuICYmIGo8Ym9vay0+ZGltOykKKysgICAgICAgIGFbaSsrXSs9dFtqKytdOworICAgICB9CisgICB9CisgICByZXR1cm4oMCk7CitAQCAtNDcxLDEyICs0NDIsMTMgQEAgbG9uZyB2b3JiaXNfYm9va19kZWNvZGV2dl9hZGQoY29kZWJvb2sgKmJvb2ssZmxvYXQgKiphLGxvbmcgb2Zmc2V0LGludCBjaCwKKyAgIGxvbmcgaSxqLGVudHJ5OworICAgaW50IGNocHRyPTA7CisgICBpZihib29rLT51c2VkX2VudHJpZXM+MCl7CistICAgIGZvcihpPW9mZnNldC9jaDtpPChvZmZzZXQrbikvY2g7KXsKKysgICAgaW50IG09KG9mZnNldCtuKS9jaDsKKysgICAgZm9yKGk9b2Zmc2V0L2NoO2k8bTspeworICAgICAgIGVudHJ5ID0gZGVjb2RlX3BhY2tlZF9lbnRyeV9udW1iZXIoYm9vayxiKTsKKyAgICAgICBpZihlbnRyeT09LTEpcmV0dXJuKC0xKTsKKyAgICAgICB7CisgICAgICAgICBjb25zdCBmbG9hdCAqdCA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeSpib29rLT5kaW07CistICAgICAgICBmb3IgKGo9MDtqPGJvb2stPmRpbTtqKyspeworKyAgICAgICAgZm9yIChqPTA7aTxtICYmIGo8Ym9vay0+ZGltO2orKyl7CisgICAgICAgICAgIGFbY2hwdHIrK11baV0rPXRbal07CisgICAgICAgICAgIGlmKGNocHRyPT1jaCl7CisgICAgICAgICAgICAgY2hwdHI9MDsKKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjUuYmIKaW5kZXggNTZjNWIwYS4uMjBmODg3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjUuYmIKQEAgLTEyLDYgKzEyLDkgQEAKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3ZvcmJpcy8ke0JQfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0NjMzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0NjMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTUxNDYucGF0Y2ggXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIyOGNiMjgwOTdjMDdhNzM1ZDZhZjU2ZTU5OGUxYzkwZiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NGY5NGE5NTI3ZmYwYTg4NDc3YmUwYTcxYzBiYWIwOWE0YzNmZWJlMGVkODc4YjI0ODI0OTA2Y2Q0YjBlMWQxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yNS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI5MDY5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuMTAuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJBdWRpbyBkZWNvZGVyIGZvciBNUEVHLTEgTGF5ZXIgMS8yLzMiCitERVNDUklQVElPTiA9ICJUaGUgY29yZSBvZiBtcGcxMjMgaXMgYW4gTVBFRy0xIExheWVyIDEvMi8zIGRlY29kaW5nIGxpYnJhcnksIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IG90aGVyIHByb2dyYW1zLiBcCittcGcxMjMgYWxzbyBjb21lcyB3aXRoIGEgY29tbWFuZC1saW5lIHRvb2wgd2hpY2ggY2FuIHBsYXliYWNrIHVzaW5nIEFMU0EsIFB1bHNlQXVkaW8sIE9TUywgYW5kIHNldmVyYWwgb3RoZXIgQVBJcywgXAorYW5kIGFsc28gY2FuIHdyaXRlIHRoZSBkZWNvZGVkIGF1ZGlvIHRvIFdBVi4iCitIT01FUEFHRSA9ICJodHRwOi8vbXBnMTIzLmRlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL21wZzEyMy9idWdzLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlODY3NTM2MzhkM2NmMjUxMjUyOGI5OTA3OWJjNGYzIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1wZzEyMy5kZS9kb3dubG9hZC8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImVhMzJjYWE2MWQ0MWQ4YmU3OTdmMGIwNGExYjQzYWQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMTMzN2FlZTJlNGJmOTkzMjk5ODUxYzcwYjdkYjExZmFlYzc4NTMwM2NmY2EzYTVjM2ViNWYzMjliYTcwMjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIFRoZSBvcHRpb25zIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGNvbmZpZ3VyYXRpb24gc2NyaXB0LgorIyBJZiBib3RoIGFsc2EgYW5kIHB1bHNlYXVkaW8gYXJlIHNwZWNpZmllZCAoYXMgaW4gdGhlIGRlZmF1bHQgZGlzdHJvIGZlYXR1cmVzKQorIyBwdWxzZWF1ZGlvIHRha2VzIHByZWNlZGVuY2UuCitQQUNLQUdFQ09ORklHX0FMU0EgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCAncHVsc2VhdWRpbycsICcke1BBQ0tBR0VDT05GSUdfQUxTQX0nLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89YWxzYSwsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2VzZF0gPSAiLCxlc291bmQiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIiwsamFjayIKK1BBQ0tBR0VDT05GSUdbb3BlbmFsXSA9ICIsLG9wZW5hbC1zb2Z0IgorUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIiwscG9ydGF1ZGlvLXYxOSIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89cHVsc2UsLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NkbF0gPSAiLCxsaWJzZGwiCisKKyMgRm9sbG93aW5nIGFyZSBwb3NzaWJsZSBzb3VuZCBvdXRwdXQgbW9kdWxlczoKKyMgYWxzYSBhcnRzIGNvcmVhdWRpbyBkdW1teSBlc2QgamFjayBuYXMgb3BlbmFsIG9zMiBvc3MgcG9ydGF1ZGlvIHB1bHNlIHNkbCBzbmRpbyBzdW4gdGlueWFsc2Egd2luMzIgd2luMzJfd2FzYXBpCitBVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdhbHNhIGVzZCBqYWNrIG9wZW5hbCBwb3J0YXVkaW8gc2RsJywgZCl9IgorQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlJywgJycsIGQpfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAtLXdpdGgtYXVkaW89JyR7QVVESU9NT0RTfScgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWNwdT1uZW9uJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWx0aXZlYycsICctLXdpdGgtY3B1PWFsdGl2ZWMnLCAnJywgZCl9IFwKKyIKKyMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQorI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorI3wge3N0YW5kYXJkIGlucHV0fTo0NzogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHI1LHI2LHI3LHI0JworI3wge3N0YW5kYXJkIGlucHV0fTo0ODogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByNSxyNSxsc3IjMjQnCisjLi4uCisjfCBtYWtlWzNdOiAqKiogW2VxdWFsaXplci5sb10gRXJyb3IgMQorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I4NjE5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkF1ZGlvIGRlY29kZXIgZm9yIE1QRUctMSBMYXllciAxLzIvMyIKLURFU0NSSVBUSU9OID0gIlRoZSBjb3JlIG9mIG1wZzEyMyBpcyBhbiBNUEVHLTEgTGF5ZXIgMS8yLzMgZGVjb2RpbmcgbGlicmFyeSwgd2hpY2ggY2FuIGJlIHVzZWQgYnkgb3RoZXIgcHJvZ3JhbXMuIFwKLW1wZzEyMyBhbHNvIGNvbWVzIHdpdGggYSBjb21tYW5kLWxpbmUgdG9vbCB3aGljaCBjYW4gcGxheWJhY2sgdXNpbmcgQUxTQSwgUHVsc2VBdWRpbywgT1NTLCBhbmQgc2V2ZXJhbCBvdGhlciBBUElzLCBcCi1hbmQgYWxzbyBjYW4gd3JpdGUgdGhlIGRlY29kZWQgYXVkaW8gdG8gV0FWLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tcGcxMjMuZGUvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbXBnMTIzL2J1Z3MvIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWU4Njc1MzYzOGQzY2YyNTEyNTI4Yjk5MDc5YmM0ZjMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cubXBnMTIzLmRlL2Rvd25sb2FkLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDMzMzZiZWY3OGY2N2MyZTY2YzRmNmMyODhjYTFlYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGYwNDU4YzliODc3OTliYzJjOWJmOTQ1NTI3OWNjNGQzMDVlMjQ1ZGI0M2I1MWEzOWVmMjdhZmUwMjVjNWE4ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLSMgVGhlIG9wdGlvbnMgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBmb3IgY29uZmlndXJhdGlvbiBzY3JpcHQuCi0jIElmIGJvdGggYWxzYSBhbmQgcHVsc2VhdWRpbyBhcmUgc3BlY2lmaWVkIChhcyBpbiB0aGUgZGVmYXVsdCBkaXN0cm8gZmVhdHVyZXMpCi0jIHB1bHNlYXVkaW8gdGFrZXMgcHJlY2VkZW5jZS4KLVBBQ0tBR0VDT05GSUdfQUxTQSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhJywgZCl9IgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsICdwdWxzZWF1ZGlvJywgJyR7UEFDS0FHRUNPTkZJR19BTFNBfScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLXdpdGgtZGVmYXVsdC1hdWRpbz1hbHNhLCxhbHNhLWxpYiIKLVBBQ0tBR0VDT05GSUdbZXNkXSA9ICIsLGVzb3VuZCIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLCxqYWNrIgotUEFDS0FHRUNPTkZJR1tvcGVuYWxdID0gIiwsb3BlbmFsLXNvZnQiCi1QQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLCxwb3J0YXVkaW8tdjE5IgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLXdpdGgtZGVmYXVsdC1hdWRpbz1wdWxzZSwscHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbc2RsXSA9ICIsLGxpYnNkbCIKLQotIyBGb2xsb3dpbmcgYXJlIHBvc3NpYmxlIHNvdW5kIG91dHB1dCBtb2R1bGVzOgotIyBhbHNhIGFydHMgY29yZWF1ZGlvIGR1bW15IGVzZCBqYWNrIG5hcyBvcGVuYWwgb3MyIG9zcyBwb3J0YXVkaW8gcHVsc2Ugc2RsIHNuZGlvIHN1biB0aW55YWxzYSB3aW4zMiB3aW4zMl93YXNhcGkKLUFVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2Fsc2EgZXNkIGphY2sgb3BlbmFsIHBvcnRhdWRpbyBzZGwnLCBkKX0iCi1BVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAncHVsc2UnLCAnJywgZCl9IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0td2l0aC1hdWRpbz0nJHtBVURJT01PRFN9JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbmVvbicsICctLXdpdGgtY3B1PW5lb24nLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdhbHRpdmVjJywgJy0td2l0aC1jcHU9YWx0aXZlYycsICcnLCBkKX0gXAotIgotIyBGYWlscyB0byBidWlsZCB3aXRoIHRodW1iLTEgKHFlbXVhcm0pCi0jfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci0jfCB7c3RhbmRhcmQgaW5wdXR9OjQ3OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgc211bGwgcjUscjYscjcscjQnCi0jfCB7c3RhbmRhcmQgaW5wdXR9OjQ4OiBFcnJvcjogc2hpZnRzIGluIENNUC9NT1YgaW5zdHJ1Y3Rpb25zIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB1bmlmaWVkIHN5bnRheCAtLSBgbW92IHI1LHI1LGxzciMyNCcKLSMuLi4KLSN8IG1ha2VbM106ICoqKiBbZXF1YWxpemVyLmxvXSBFcnJvciAxCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYwppbmRleCBmZGJmNWFiLi44MTg5YTU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYwpAQCAtMTYwLDcgKzE2MCw3IEBACiB9CiAKIFVTRVJBRERfUEFDS0FHRVMgPSAicHVsc2VhdWRpby1zZXJ2ZXIiCi1HUk9VUEFERF9QQVJBTV9wdWxzZWF1ZGlvLXNlcnZlciA9ICJwdWxzZSIKK0dST1VQQUREX1BBUkFNX3B1bHNlYXVkaW8tc2VydmVyID0gIi0tc3lzdGVtIHB1bHNlIgogVVNFUkFERF9QQVJBTV9wdWxzZWF1ZGlvLXNlcnZlciA9ICItLXN5c3RlbSAtLWhvbWUgL3Zhci9ydW4vcHVsc2UgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1ncm91cHMgYXVkaW8scHVsc2UgLS1naWQgcHVsc2UgcHVsc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1tZW1mZC13cmFwcGVycy1vbmx5LWRlZmluZS1tZW1mZF9jcmVhdGUtaWYtbm90LWFscmVhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOTFmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIDBjYjY2YzBjNWFhZmQ0OGI2M2E3NTU4NjA3NDZlNzBhZmIzMzJjOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CitEYXRlOiBXZWQsIDI0IEphbiAyMDE4IDAzOjUxOjQ5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lbWZkLXdyYXBwZXJzOiBvbmx5IGRlZmluZSBtZW1mZF9jcmVhdGUoKSBpZiBub3QgYWxyZWFkeQorIGRlZmluZWQKKworZ2xpYmMgMi4yNyBpcyB0byBiZSByZWxlYXNlZCBzb29uLCBhbmQgaXQgd2lsbCBwcm92aWRlIG1lbWZkX2NyZWF0ZSgpLgorSWYgZ2xpYmMgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uLCB3ZSBtdXN0IG5vdCBkZWZpbmUgaXQgb3Vyc2VsdmVzLAorb3RoZXJ3aXNlIGJ1aWxkaW5nIGZhaWxzIGR1ZSB0byBjb25mbGljdCBiZXR3ZWVuIHRoZSB0d28gaW1wbGVtZW50YXRpb25zCitvZiB0aGUgc2FtZSBmdW5jdGlvbi4KKworQnVnTGluazogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzMzCistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTEzNjkyN10KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgfCAzICsrKworIHNyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaCB8IDcgKysrKy0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3N2I1ZmY1Li4zYTcxZmQ4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02MDcsNiArNjA3LDkgQEAgQVNfSUYoW3Rlc3QgIngkZW5hYmxlX21lbWZkIiA9ICJ4eWVzIiAmJiB0ZXN0ICJ4JEhBVkVfTUVNRkQiID0gIngwIl0sCisgICAgIFtBQ19NU0dfRVJST1IoWyoqKiBZb3VyIExpbnV4IGtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG1lbWZkIHNoYXJlZCBtZW1vcnkuCisgICAgICAgICAgICAgICAgICAgKioqIFVzZSBsaW51eCB2My4xNyBvciBoaWdoZXIgZm9yIHN1Y2ggYSBmZWF0dXJlLl0pXSkKKyAKKytBU19JRihbdGVzdCAieCRIQVZFX01FTUZEIiA9ICJ4MSJdLAorKyAgICBBQ19DSEVDS19GVU5DUyhbbWVtZmRfY3JlYXRlXSkpCisrCisgQUNfU1VCU1QoSEFWRV9NRU1GRCkKKyBBTV9DT05ESVRJT05BTChbSEFWRV9NRU1GRF0sIFt0ZXN0ICJ4JEhBVkVfTUVNRkQiID0geDFdKQorIEFTX0lGKFt0ZXN0ICJ4JEhBVkVfTUVNRkQiID0gIngxIl0sIEFDX0RFRklORShbSEFWRV9NRU1GRF0sIDEsIFtIYXZlIG1lbWZkIHNoYXJlZCBtZW1vcnkuXSkpCitkaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oIGIvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oCitpbmRleCAzYmVkOWIyLi5jN2FhZGZkIDEwMDY0NAorLS0tIGEvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oCisrKysgYi9zcmMvcHVsc2Vjb3JlL21lbWZkLXdyYXBwZXJzLmgKK0BAIC0yMCwxMyArMjAsMTQgQEAKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCBQdWxzZUF1ZGlvOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworIAorLSNpZmRlZiBIQVZFX01FTUZECisrI2lmIGRlZmluZWQoSEFWRV9NRU1GRCkgJiYgIWRlZmluZWQoSEFWRV9NRU1GRF9DUkVBVEUpCisgCisgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgCisgLyoKKy0gKiBObyBnbGliYyB3cmFwcGVycyBleGlzdCBmb3IgbWVtZmRfY3JlYXRlKDIpLCBzbyBwcm92aWRlIG91ciBvd24uCisrICogQmVmb3JlIGdsaWJjIHZlcnNpb24gMi4yNyB0aGVyZSB3YXMgbm8gd3JhcHBlciBmb3IgbWVtZmRfY3JlYXRlKDIpLAorKyAqIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBvdXIgb3duLgorICAqCisgICogQWxzbyBkZWZpbmUgbWVtZmQgZmNudGwgc2VhbGluZyBtYWNyb3MuIFdoaWxlIHRoZXkgYXJlIGFscmVhZHkKKyAgKiBkZWZpbmVkIGluIHRoZSBrZXJuZWwgaGVhZGVyIGZpbGUgPGxpbnV4L2ZjbnRsLmg+LCB0aGF0IGZpbGUgYXMKK0BAIC02Myw2ICs2NCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbWZkX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKKyAjZGVmaW5lIEZfU0VBTF9XUklURSAgICAweDAwMDggIC8qIHByZXZlbnQgd3JpdGVzICovCisgI2VuZGlmCisgCistI2VuZGlmIC8qIEhBVkVfTUVNRkQgKi8KKysjZW5kaWYgLyogSEFWRV9NRU1GRCAmJiAhSEFWRV9NRU1GRF9DUkVBVEUgKi8KKyAKKyAjZW5kaWYKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby9wdWxzZWF1ZGlvLWRpc2N1c3MtaW9jaGFubmVsLWRvbi10LXVzZS12YXJpYWJsZS1sZW5ndGgtYXJyYXktaW4tdW5pb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYjU2YWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby9wdWxzZWF1ZGlvLWRpc2N1c3MtaW9jaGFubmVsLWRvbi10LXVzZS12YXJpYWJsZS1sZW5ndGgtYXJyYXktaW4tdW5pb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIHBhdGNod29yayBTYXQgRmViICA0IDEyOjE5OjAxIDIwMTcKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAotU3ViamVjdDogW3B1bHNlYXVkaW8tZGlzY3Vzc10gaW9jaGFubmVsOiBkb24ndCB1c2UgdmFyaWFibGUgbGVuZ3RoIGFycmF5IGluCi0gdW5pb24KLUZyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KLVgtUGF0Y2h3b3JrLUlkOiAxMzY4ODUKLU1lc3NhZ2UtSWQ6IDwyMDE3MDIwNDEyMTkwMS4xNzQyOC0xLXRhbnVrQGlraS5maT4KLVRvOiBwdWxzZWF1ZGlvLWRpc2N1c3NAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCi1EYXRlOiBTYXQsICA0IEZlYiAyMDE3IDE0OjE5OjAxICswMjAwCi0KLUNsYW5nIGRpZG4ndCBsaWtlIHRoZSB2YXJpYWJsZSBsZW5ndGggYXJyYXk6Ci0KLXB1bHNlY29yZS9pb2NoYW5uZWwuYzozNTg6MTc6IGVycm9yOiBmaWVsZHMgbXVzdCBoYXZlIGEgY29uc3RhbnQgc2l6ZToKLSd2YXJpYWJsZSBsZW5ndGggYXJyYXkgaW4gc3RydWN0dXJlJyBleHRlbnNpb24gd2lsbCBuZXZlciBiZSBzdXBwb3J0ZWQKLSAgICAgICAgdWludDhfdCBkYXRhW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBuZmQpXTsKLSAgICAgICAgICAgICAgICBeCi0KLUNvbW1pdCA0NTFkMWQ2NzYyIGludHJvZHVjZWQgdGhlIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBpbiBvcmRlciB0byBoYXZlCi10aGUgY29ycmVjdCB2YWx1ZSBpbiBtc2dfY29udHJvbGxlbi4gVGhpcyBwYXRjaCByZXZlcnRzIHRoYXQgY29tbWl0IGFuZAotdXNlcyBhIGRpZmZlcmVudCB3YXkgdG8gYWNoaWV2ZSB0aGUgc2FtZSBnb2FsLgotCi1CdWdMaW5rOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQ1OAotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYyB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYyBiL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKLWluZGV4IDhhY2UyOTdmZi4uODk3MzM3NTIyIDEwMDY0NAotLS0tIGEvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYwotKysrIGIvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYwotQEAgLTM1NSw3ICszNTUsNyBAQCBzc2l6ZV90IHBhX2lvY2hhbm5lbF93cml0ZV93aXRoX2ZkcyhwYV9pb2NoYW5uZWwqaW8sIGNvbnN0IHZvaWQqZGF0YSwgc2l6ZV90IGwsCi0gICAgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0gICAgIHVuaW9uIHsKLSAgICAgICAgIHN0cnVjdCBjbXNnaGRyIGhkcjsKLS0gICAgICAgIHVpbnQ4X3QgZGF0YVtDTVNHX1NQQUNFKHNpemVvZihpbnQpICogbmZkKV07Ci0rICAgICAgICB1aW50OF90IGRhdGFbQ01TR19TUEFDRShzaXplb2YoaW50KSAqIE1BWF9BTkNJTF9EQVRBX0ZEUyldOwotICAgICB9IGNtc2c7Ci0gCi0gICAgIHBhX2Fzc2VydChpbyk7Ci1AQCAtMzgyLDcgKzM4MiwxMyBAQCBzc2l6ZV90IHBhX2lvY2hhbm5lbF93cml0ZV93aXRoX2ZkcyhwYV9pb2NoYW5uZWwqaW8sIGNvbnN0IHZvaWQqZGF0YSwgc2l6ZV90IGwsCi0gICAgIG1oLm1zZ19pb3YgPSAmaW92OwotICAgICBtaC5tc2dfaW92bGVuID0gMTsKLSAgICAgbWgubXNnX2NvbnRyb2wgPSAmY21zZzsKLS0gICAgbWgubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY21zZyk7Ci0rCi0rICAgIC8qIElmIHdlIGZvbGxvd2VkIHRoZSBleGFtcGxlIG9uIHRoZSBjbXNnIG1hbiBwYWdlLCB3ZSdkIHVzZQotKyAgICAgKiBzaXplb2YoY21zZy5kYXRhKSBoZXJlLCBidXQgaWYgbmZkIDwgTUFYX0FOQ0lMX0RBVEFfRkRTLCB0aGVuIHRoZSBkYXRhCi0rICAgICAqIGJ1ZmZlciBpcyBsYXJnZXIgdGhhbiBuZWVkZWQsIGFuZCB0aGUga2VybmVsIGRvZXNuJ3QgbGlrZSBpdCBpZiB3ZSBzZXQKLSsgICAgICogbXNnX2NvbnRyb2xsZW4gdG8gYSBsYXJnZXIgdGhhbiBuZWNlc3NhcnkgdmFsdWUuIFRoZSBjb21taXQgbWVzc2FnZSBmb3IKLSsgICAgICogY29tbWl0IDQ1MWQxZDY3NjIgY29udGFpbnMgYSBsb25nZXIgZXhwbGFuYXRpb24uICovCi0rICAgIG1oLm1zZ19jb250cm9sbGVuID0gQ01TR19TUEFDRShzaXplb2YoaW50KSAqIG5mZCk7Ci0gCi0gICAgIGlmICgociA9IHNlbmRtc2coaW8tPm9mZCwgJm1oLCBNU0dfTk9TSUdOQUwpKSA+PSAwKSB7Ci0gICAgICAgICBpby0+d3JpdGFibGUgPSBpby0+aHVuZ3VwID0gZmFsc2U7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMzRhZmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSBwdWxzZWF1ZGlvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWRzcC1NYWtlLWl0LWNvbXBpbGUtb24tbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNsaWVudC1jb25mLUFkZC1hbGxvdy1hdXRvc3Bhd24tZm9yLXJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wNF9wdWxzZSBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNDk1MGQyNzk5YmY1NWFiOTFmNmI3Zjk5MGI3ZjA5NzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMxODY4MjRkZTlmMGQyMDk1ZGVkNWQwZDBkYjA0MDVkYzczMTMzOTgzYzJmYmIzNzI5MTU0N2UzNzQ2MmY1NyIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAotICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NTMwMmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzExLjEuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBwdWxzZWF1ZGlvLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWRzcC1NYWtlLWl0LWNvbXBpbGUtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNsaWVudC1jb25mLUFkZC1hbGxvdy1hdXRvc3Bhd24tZm9yLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X3B1bHNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzOTBkZTM4MjMxZDVjZGQ2YjQzYWRhODkzOWViNzRmMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMjUyMWM1MjVhNzcxNjYxODllM2NiOTE2OWY3NWMyZWUyYjgyZmEzZmNmOTQ3NjAyNGZiYzJjM2E2YzljZDllIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgbWtkaXIgLXAgJHtTfS9saWJsdGRsCisgICAgY3AgJHtTVEFHSU5HX0xJQkRJUn0vbGlibHRkbCogJHtTfS9saWJsdGRsCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzAuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1NjVlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzAuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJQIGlzIGFuIGltYWdlIGZvcm1hdCBkZXNpZ25lZCBmb3IgdGhlIFdlYiIKLURFU0NSSVBUSU9OID0gIldlYlAgaXMgYSBtZXRob2Qgb2YgbG9zc3kgYW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIHRoYXQgY2FuIGJlIFwKLSAgICAgICAgICAgICAgIHVzZWQgb24gYSBsYXJnZSB2YXJpZXR5IG9mIHBob3RvZ3JhcGhpYywgdHJhbnNsdWNlbnQgYW5kIFwKLSAgICAgICAgICAgICAgIGdyYXBoaWNhbCBpbWFnZXMgZm91bmQgb24gdGhlIHdlYi4gVGhlIGRlZ3JlZSBvZiBsb3NzeSBcCi0gICAgICAgICAgICAgICBjb21wcmVzc2lvbiBpcyBhZGp1c3RhYmxlIHNvIGEgdXNlciBjYW4gY2hvb3NlIHRoZSB0cmFkZS1vZmYgXAotICAgICAgICAgICAgICAgYmV0d2VlbiBmaWxlIHNpemUgYW5kIGltYWdlIHF1YWxpdHkuIFdlYlAgdHlwaWNhbGx5IGFjaGlldmVzIFwKLSAgICAgICAgICAgICAgIGFuIGF2ZXJhZ2Ugb2YgMzAlIG1vcmUgY29tcHJlc3Npb24gdGhhbiBKUEVHIGFuZCBKUEVHIDIwMDAsIFwKLSAgICAgICAgICAgICAgIHdpdGhvdXQgbG9zcyBvZiBpbWFnZSBxdWFsaXR5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlOGRlZTkzMmMyNmYyZGFiNTAzYWJmNzBjOTZkOGJiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBVEVOVFM7bWQ1PWM2OTI2ZDBjYjA3ZDI5NmY4ODZhYjZlMGNjNWE4NWI3IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjE5YTZlOTI2YWIxNzIxMjY4ZGYwMzE2MWI4NGJiNGEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM5MjgxMTkyMjlkNGY4ZjM1ZTIwMTEzZmZiNjFmMjgxZWRhMjY3NjM0YThkYzIyODVhZjRiMGVlMjdjZjJiNDAiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwL2luZGV4Lmh0bWwiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1leHBlcmltZW50YWwgXAotICAgIC0tZGlzYWJsZS13aWMgXAotICAgIC0tZW5hYmxlLWxpYndlYnBtdXggXAotICAgIC0tZW5hYmxlLWxpYndlYnBkZW11eCBcCi0gICAgLS1lbmFibGUtdGhyZWFkaW5nIFwKLSIKLSMgRG8gbm90IHRydXN0IGNvbmZpZ3VyZSB0byBkZXRlcm1pbmUgaWYgbmVvbiBpcyBhdmFpbGFibGUuCi0jCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCi1QQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKLQotIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAotUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKLQotIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKLVBBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKLQotREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCi1GSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzAuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWQ0ZDc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMS5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgorREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAorICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAorICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKKyAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCisgICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAorICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAorICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYjQ5Y2U5YzNlM2U5YWNhZTRkOTFiY2E0NGJiODVhNzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDY1MDNjNzgyZDlmMTUxYmFhMzI1NTkxYzM1NzljNjhlZDcwMGZmYzYyZDRmNWEzMmZlZWFkMGZmMDE3ZDhhYiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWV4cGVyaW1lbnRhbCBcCisgICAgLS1kaXNhYmxlLXdpYyBcCisgICAgLS1lbmFibGUtbGlid2VicG11eCBcCisgICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKKyAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAorIgorIyBEbyBub3QgdHJ1c3QgY29uZmlndXJlIHRvIGRldGVybWluZSBpZiBuZW9uIGlzIGF2YWlsYWJsZS4KKyMKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCJuZW9uIiwiLS1lbmFibGUtbmVvbiIsIi0tZGlzYWJsZS1uZW9uIixkKX0gXAorIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorCisjIGxpYndlYnBkZWNvZGVyIGlzIGEgc3Vic2V0IG9mIGxpYndlYnAsIGRvbid0IGJ1aWxkIGl0IHVubGVzcyByZXF1ZXN0ZWQKK1BBQ0tBR0VDT05GSUdbZGVjb2Rlcl0gPSAiLS1lbmFibGUtbGlid2VicGRlY29kZXIsLS1kaXNhYmxlLWxpYndlYnBkZWNvZGVyIgorCisjIEFwcGx5IGZvciBleGFtcGxlcyBwcm9ncmFtczogY3dlYnAgYW5kIGR3ZWJwCitQQUNLQUdFQ09ORklHW2dpZl0gPSAiLS1lbmFibGUtZ2lmLC0tZGlzYWJsZS1naWYsZ2lmbGliIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS1lbmFibGUtdGlmZiwtLWRpc2FibGUtdGlmZix0aWZmIgorCisjIEFwcGx5IG9ubHkgZm9yIGV4YW1wbGUgcHJvZ3JhbSB2d2VicAorUEFDS0FHRUNPTkZJR1tnbF0gPSAiLS1lbmFibGUtZ2wsLS1kaXNhYmxlLWdsLG1lc2EtZ2x1dCIKKworUEFDS0FHRVMgPSsgIiR7UE59LWdpZjJ3ZWJwIgorCitERVNDUklQVElPTl8ke1BOfS1naWYyd2VicCA9ICJTaW1wbGUgdG9vbCB0byBjb252ZXJ0IGFuaW1hdGVkIEdJRnMgdG8gV2ViUCIKK0ZJTEVTXyR7UE59LWdpZjJ3ZWJwID0gIiR7YmluZGlyfS9naWYyd2VicCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9kb24tdC1kZWZhdWx0LXRvLWNvcnRleC1hOS13aXRoLW5lb24ucGF0Y2gKaW5kZXggNzNmMmFhYy4uMDY1ZTNiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9kb24tdC1kZWZhdWx0LXRvLWNvcnRleC1hOS13aXRoLW5lb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9kb24tdC1kZWZhdWx0LXRvLWNvcnRleC1hOS13aXRoLW5lb24ucGF0Y2gKQEAgLTEsMjAgKzEsMzMgQEAKLS1tYXJjaCBmbGFnIGlzIG5vdCBpbiBDRkxBR1Mgc28gdGhpcyB3aWxsIGFsd2F5cyBkZWZhdWx0IHRvIC1tY3B1PWNvcnRleC1hOAotLW1mcHU9bmVvbi4KK0Zyb20gYTcyYmY0OTlhMDY3NGZjNzVlZWRmMTUwMDhiNDI0ZTI4ZjY3ZTRiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KK0RhdGU6IEZyaSwgMiBGZWIgMjAxOCAxNToxMDowOCArMDIwMAorU3ViamVjdDogW1BBVENIXSBkb250IGRlZmF1bHQgdG8gY29ydGV4LWE5IHdpdGggbmVvbgorCistbWFyY2ggZmxhZyBpcyBub3QgaW4gQ0ZMQUdTIHNvIHRoaXMgd2lsbCBhbHdheXMgZGVmYXVsdCB0bworIC1tY3B1PWNvcnRleC1hOCAtbWZwdT1uZW9uLgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUgfCAzIC0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA5ZDE1ODZjLi4zMTA5ZWM0IDEwMDc1NQoraW5kZXggMGUzZWYyMy4uOTU1Yjk5MyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtODc0LDkgKzg3NCw2IEBAIGlmIFsgJGFzbSA9IGF1dG8gLWEgXCggJEFSQ0ggPSBYODYgLW8gJEFSQ0ggPSBYODZfNjQgXCkgXSA7IHRoZW4KK0BAIC05MTEsOSArOTExLDYgQEAgaWYgWyAkYXNtID0gYXV0byAtYSBcKCAkQVJDSCA9IFg4NiAtbyAkQVJDSCA9IFg4Nl82NCBcKSBdIDsgdGhlbgogIGZpCiAgCiAgaWYgWyAkYXNtID0gYXV0byAtYSAkQVJDSCA9IEFSTSBdIDsgdGhlbgogLSAgICAjIHNldCBmbGFncyBzbyBuZW9uIGlzIGJ1aWx0IGJ5IGRlZmF1bHQKLS0gICAgZWNobyAkQ0ZMQUdTIHwgZ3JlcCAtRXEgJygtbWNwdXwtbWFyY2h8LW1mcHUpJyB8fCBDRkxBR1M9IiRDRkxBR1MgLW1jcHU9Y29ydGV4LWE4IC1tZnB1PW5lb24iCistICAgIFsgJGNvbXBpbGVyID09IENMIF0gfHwgZWNobyAkQ0ZMQUdTIHwgZ3JlcCAtRXEgJygtbWNwdXwtbWFyY2h8LW1mcHUpJyB8fCBDRkxBR1M9IiRDRkxBR1MgLW1jcHU9Y29ydGV4LWE4IC1tZnB1PW5lb24iCiAtCi0gICAgIGlmICBjY19jaGVjayAnJyAnJyAnX19hc21fXygicmV2IGlwLCBpcCIpOycgOyB0aGVuICAgICAgZGVmaW5lIEhBVkVfQVJNVjYKLSAgICAgICAgIGNjX2NoZWNrICcnICcnICdfX2FzbV9fKCJtb3Z0IHIwLCAjMCIpOycgICAgICAgICAmJiBkZWZpbmUgSEFWRV9BUk1WNlQyCi0gICAgICAgICBjY19jaGVjayAnJyAnJyAnX19hc21fXygidmFkZC5pMTYgcTAsIHEwLCBxMCIpOycgJiYgZGVmaW5lIEhBVkVfTkVPTgorICAgICBjY19jaGVjayAnJyAnJyAnX19hc21fXygiYWRkIHIwLCByMSwgcjIiKTsnICYmIGRlZmluZSBIQVZFX0FSTV9JTkxJTkVfQVNNCisgICAgIGlmIFsgJGNvbXBpbGVyID0gQ0wgXSAmJiBjcHBfY2hlY2sgJycgJycgJ2RlZmluZWQoX01fQVJNKSAmJiBfTV9BUk0gPj0gNycgOyB0aGVuCisgICAgICAgICBkZWZpbmUgSEFWRV9BUk1WNgorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCmluZGV4IGM1NDc2YzcuLmM0NDVkMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCkBAIC02LDE3ICs2LDE3IEBACiBMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKIAotREVQRU5EUyA9ICJ5YXNtLW5hdGl2ZSIKK0RFUEVORFMgPSAibmFzbS1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9taXJyb3IveDI2NDticmFuY2g9c3RhYmxlIFwKICAgICAgICAgICAgZmlsZTovL2Rvbi10LWRlZmF1bHQtdG8tY29ydGV4LWE5LXdpdGgtbmVvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9GaXgtWDMyLWJ1aWxkLWJ5LWRpc2FibGluZy1hc20ucGF0Y2ggXAogICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAotU1JDUkVWID0gIjJiNzQxZjgxZTUxZjkyZDA1M2Q4N2E0OWY1OWZmMTAyNjU1M2EwZjYiCitTUkNSRVYgPSAiZTlhNTkwM2VkZjhjYTU5ZWYyMGU2ZjQ4OTRjMTk2ZjEzNWFmNzM1ZSIKIAotUFYgPSAicjI3MzErZ2l0JHtTUkNQVn0iCitQViA9ICJyMjg1NCtnaXQke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtNDMsNiArNDMsOCBAQAogICAgICAgICAgICAgICAgJwogCiBkb19jb25maWd1cmUoKSB7CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9CiAgICAgLi9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9CiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC1zZGsuYmIKaW5kZXggN2MxZTViZi4uMGY3ZjA5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC1zZGsuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC1zZGsuYmIKQEAgLTUsNyArNSw3IEBACiAjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycy4KIHB5dGhvbiAoKSB7CiAgICAgaWYgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKIH0KIAogREVTQ1JJUFRJT04gPSAiU21hbGwgaW1hZ2UgY2FwYWJsZSBvZiBib290aW5nIGEgZGV2aWNlIHdpdGggYSB0ZXN0IHN1aXRlIGFuZCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYgppbmRleCBkOGJiMDRhLi45Y2I5M2IzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQuYmIKQEAgLTUsNyArNSw3IEBACiAjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycy4KIHB5dGhvbiAoKSB7CiAgICAgaWYgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKIH0KIAogREVTQ1JJUFRJT04gPSAiQSBzbWFsbCBpbWFnZSBqdXN0IGNhcGFibGUgb2YgYWxsb3dpbmcgYSBkZXZpY2UgdG8gYm9vdCBwbHVzIGEgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2h3bGF0ZGV0ZWN0XzEuMS5iYgppbmRleCAwMTJiMmRkLi41ZjYxYzRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2h3bGF0ZGV0ZWN0XzEuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2h3bGF0ZGV0ZWN0XzEuMS5iYgpAQCAtMjIsNSArMjIsNSBAQAogfQogCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9kaXN0LXBhY2thZ2VzL2h3bGF0ZGV0ZWN0LnB5IgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMyBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy10ZXh0dXRpbHMiCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUgIgogUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1od2xhdC1kZXRlY3RvciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKaW5kZXggNDMzNmM1MC4uNDk2ZjA0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKQEAgLTI2LDYgKzI2LDYgQEAKICAgICAgICAgY3AgJHtXT1JLRElSfS9ydF9ibWFyay5weSAke0R9JHtQVEVTVF9QQVRIfQogfQogCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIHN0cmVzcyBweXRob24zIHB5dGhvbjMtc3VicHJvY2VzcyBweXRob24zLW11bHRpcHJvY2Vzc2luZyBweXRob24zLWRhdGV0aW1lIHB5dGhvbjMtcmUgcHl0aG9uMy1sYW5nIHB5dGhvbjMtbWlzYyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgc3RyZXNzIHB5dGhvbjMgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLW1pc2MiCiAKIEZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vc3JjL2JhY2tmaXJlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by5iYgppbmRleCA5N2NjZWQ3Li4yMjQ0MjhkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by5iYgpAQCAtNDYsNyArNDYsNyBAQAogU1VNTUFSWV8ke1BOfS1hcHBzID0gIlNhdG8gZGVza3RvcCAtIGFwcGxpY2F0aW9ucyIKIFJERVBFTkRTXyR7UE59LWFwcHMgPSAiXAogICAgIGwzYWZwYWQgXAotICAgIGdzdC1wbGF5ZXIgXAorICAgIGdzdC1leGFtcGxlcyBcCiAgICAgbWF0Y2hib3gtdGVybWluYWwgXAogICAgIHNhdG8tc2NyZWVuc2hvdCBcCiAgICAgJHtGSUxFTUFOQUdFUn0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjUuYmIKaW5kZXggNzVmZjc3My4uNDEyN2EwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMi41LmJiCkBAIC05LDkgKzksNiBAQAogU0VDVElPTiA9ICJ4MTEiCiBERVBFTkRTID0gImd0ayszIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGxpYmZtIGludGx0b29sLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCiAKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YWFyY2g2NC4qfGFybS4qfG1pcHMuKnxwb3dlcnBjLip8c2guKiktKGxpbnV4fGZyZWVic2QuKiknCi0KIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BjbWFuZm0vcGNtYW5mbS0ke1BWfS50YXIueHogXAogCSAgIGZpbGU6Ly9nbm9tZS1mcy1kaXJlY3RvcnkucG5nIFwKIAkgICBmaWxlOi8vZ25vbWUtZnMtcmVndWxhci5wbmcgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1DbGFyaWZ5LWNvbmRpdGlvbnMtdG8tYXZvaWQtY29tcGlsZXItZXJyb3JzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1DbGFyaWZ5LWNvbmRpdGlvbnMtdG8tYXZvaWQtY29tcGlsZXItZXJyb3JzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWFhMTU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNzJmMmU5MDQzZWY1MDk5OTJkZmE2MTc5MTYzOGRiODdiZjBhZTM3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDYgRGVjIDIwMTYgMDE6MjA6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2xhcmlmeSBjb25kaXRpb25zIHRvIGF2b2lkIGNvbXBpbGVyIGVycm9ycwotCi1GaXggZXJyb3JzIHBvaW50ZWQgb3V0IGJ5IGNsYW5nCi0KLWVycm9yOiBsb2dpY2FsIG5vdCBpcyBvbmx5IGFwcGxpZWQgdG8gdGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoaXMgYml0d2lzZSBvcGVyYXRvciBbLVdlcnJvciwtV2xvZ2ljYWwtbm90LXBhcmVudGhlc2VzXQotfCAgICAgICAgIGlmIChvbmx5X2ltbXV0YWJsZSAmJiAhY29weS0+ZmxhZ3NbaV0gJiBGTEFHX0lNTVVUQUJMRSkgY29udGludWU7Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotIHNpZ25wb3N0LmMgfCAyICstCi0gdHJhY2tzLmMgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NpZ25wb3N0LmMgYi9zaWducG9zdC5jCi1pbmRleCBhYTJlMTNhLi4yZTJkZmYyIDEwMDY0NAotLS0tIGEvc2lnbnBvc3QuYwotKysrIGIvc2lnbnBvc3QuYwotQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgaW50IGNoZWNrX251bXMoZ2FtZV9zdGF0ZSAqb3JpZywgZ2FtZV9zdGF0ZSAqY29weSwgaW50IG9ubHlfaW1tdXRhYmxlKQotICAgICBpbnQgaSwgcmV0ID0gMTsKLSAgICAgYXNzZXJ0KGNvcHktPm4gPT0gb3JpZy0+bik7Ci0gICAgIGZvciAoaSA9IDA7IGkgPCBjb3B5LT5uOyBpKyspIHsKLS0gICAgICAgIGlmIChvbmx5X2ltbXV0YWJsZSAmJiAhY29weS0+ZmxhZ3NbaV0gJiBGTEFHX0lNTVVUQUJMRSkgY29udGludWU7Ci0rICAgICAgICBpZiAob25seV9pbW11dGFibGUgJiYgIShjb3B5LT5mbGFnc1tpXSAmIEZMQUdfSU1NVVRBQkxFKSkgY29udGludWU7Ci0gICAgICAgICBhc3NlcnQoY29weS0+bnVtc1tpXSA+PSAwKTsKLSAgICAgICAgIGFzc2VydChjb3B5LT5udW1zW2ldIDw9IGNvcHktPm4pOwotICAgICAgICAgaWYgKGNvcHktPm51bXNbaV0gIT0gb3JpZy0+bnVtc1tpXSkgewotZGlmZiAtLWdpdCBhL3RyYWNrcy5jIGIvdHJhY2tzLmMKLWluZGV4IDViMjczNTAuLmNhNDRjZTEgMTAwNjQ0Ci0tLS0gYS90cmFja3MuYwotKysrIGIvdHJhY2tzLmMKLUBAIC0xMDcyLDcgKzEwNzIsNyBAQCBzdGF0aWMgaW50IHNvbHZlX2NoZWNrX3NpbmdsZV9zdWIoZ2FtZV9zdGF0ZSAqc3RhdGUsIGludCBzaSwgaW50IGlkLCBpbnQgbiwKLSAgICAgICAgIHggPSBpJXc7Ci0gICAgICAgICB5ID0gaS93OwotICAgICAgICAgaWYgKGFicyhveC14KSA+IDEgfHwgYWJzKG95LXkpID4gMSkgewotLSAgICAgICAgICAgIGlmICghc3RhdGUtPnNmbGFnc1tpXSAmIFNfVFJBQ0spCi0rICAgICAgICAgICAgaWYgKCEoc3RhdGUtPnNmbGFnc1tpXSAmIFNfVFJBQ0spKQotICAgICAgICAgICAgICAgICBkaWQgKz0gc29sdmVfc2V0X3NmbGFnKHN0YXRlLCB4LCB5LCBTX05PVFJBQ0ssIHdoYXQpOwotICAgICAgICAgfQotICAgICB9Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKaW5kZXggZGVjZDJhOC4uYmZkODE3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKQEAgLTcsMTggKzcsMTcgQEAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9MzNiY2Q0YmNlOGYzYzE5N2YyYWVmYmRiZDJkMjk5YmMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1kYTYxMTBkNGVkMTIyNWEyODdlYWIyYmYwYWMwMTkzYiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQudGFydGFydXMub3JnL3NpbW9uL3B1enpsZXMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1jb21waWxpbmctZmFpbHVyZS13aXRoLW9wdGlvbi1nLU8ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhbGlzYWRlLUZpeC13YXJuaW5ncy13aXRoLWNsYW5nLW9uLWFybS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNsYXJpZnktY29uZGl0aW9ucy10by1hdm9pZC1jb21waWxlci1lcnJvcnMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtV25vLWVycm9yLWZvcm1hdC1vdmVyZmxvdy1pZi10aGUtY29tcGlsZXItc3VwcG9yLnBhdGNoIFwKICAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCi1TUkNSRVYgPSAiOGRmZTVjZWMzMWU3ODRlNGVjZTI5NTVlY2M4Y2MzNWVlN2U4ZmJiMyIKLVBFID0gIjEiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCitTUkNSRVYgPSAiMmFkZjAwNTJkNjZlYWU4OGM3YTVlNTVlNjdmZTE2ZTEzZjcwMThiNSIKK1BFID0gIjIiCiBQViA9ICIwLjArZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcnh2dC11bmljb2RlL3J4dnQtdW5pY29kZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcnh2dC11bmljb2RlL3J4dnQtdW5pY29kZS5pbmMKaW5kZXggNGQ1ZGFhNi4uYjU2OGYwNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3J4dnQtdW5pY29kZS9yeHZ0LXVuaWNvZGUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9yeHZ0LXVuaWNvZGUvcnh2dC11bmljb2RlLmluYwpAQCAtMTIsNyArMTIsNyBAQAogCSAgIGZpbGU6Ly9yeHZ0LmRlc2t0b3AgXAogCSAgIGZpbGU6Ly9yeHZ0LnBuZyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAogUFJPVklERVMgPSAidmlydHVhbC94LXRlcm1pbmFsLWVtdWxhdG9yIgogQUxURVJOQVRJVkVfJHtQTn0gPSAieC10ZXJtaW5hbC1lbXVsYXRvciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NldHRpbmdzLWRhZW1vbi9zZXR0aW5ncy1kYWVtb25fMC4wLjIuYmIKaW5kZXggY2VhZWNjYS4uYmI2YjY5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NldHRpbmdzLWRhZW1vbi9zZXR0aW5ncy1kYWVtb25fMC4wLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3NldHRpbmdzLWRhZW1vbi9zZXR0aW5ncy1kYWVtb25fMC4wLjIuYmIKQEAgLTEwLDcgKzEwLDcgQEAKICMgU1JDUkVWIHRhZ2dlZCAwLjAuMgogU1JDUkVWID0gImIyZTVkYTUwMmY4YzVmZjc1ZTllNmRhNzcxMzcyZWY4ZTQwZmQ5YTIiCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3hzZXR0aW5ncy1kYWVtb24gXAotICAgICAgICAgICBmaWxlOi8vYWRkc291bmRrZXlzLnBhdGNoO2FwcGx5PXllcyBcCisgICAgICAgICAgIGZpbGU6Ly9hZGRzb3VuZGtleXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vNzBzZXR0aW5ncy1kYWVtb24uc2ggXAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LWdsZXMzLWhlYWRlci13aGVuLWdsZXMyLWlzLWVuYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNTc0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gYWRmM2Q0YzlkNDEzM2JkNjk5NTU5MGQ5MjFjMGNjYWVjNTI1NGRhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJoYXJnYXZhIFNyZWVrYW50YXBwYSBHYXlhdGhyaQorIDxiaGFyZ2F2YS5zcmVla2FudGFwcGEtZ2F5YXRocmlAeGlsaW54LmNvbT4KK0RhdGU6IFR1ZSwgMjcgRmViIDIwMTggMTY6MDk6MzEgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGdsZXMzIGhlYWRlciB3aGVuIGdsZXMyIGlzIGVuYWJsZWQKKworQSBHTEVTIDIgYXBwbGljYXRpb24gc2hvdWxkIG5vdCB1c2UgZ2wzLmguCitGaXggdGhlIGdsZXMzIGhlYWRlciBmYWlsdXJlIHdoaWxlIGNvbXBpbGluZyB3ZWJraXRndGsuCisKK0ZBSUxFRDoKK1NvdXJjZS9XZWJDb3JlL0NNYWtlRmlsZXMvV2ViQ29yZS5kaXIvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcC5vCisgICAgICAgICAgIF5+fn5+fn5+fn5+fn4KK2NvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0ltcG9ydGVkIHBhdGNoIGZyb206IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMwMDgKKworU2lnbmVkLW9mZi1ieTogQmhhcmdhdmEgU3JlZWthbnRhcHBhIEdheWF0aHJpIDxiaGFyZ2F2YS5zcmVla2FudGFwcGEtZ2F5YXRocmlAeGlsaW54LmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hbmp1a3VtYXIgTWF0aGEgPG1hbmp1a3VtYXIuaGFydGhpa290ZS1tYXRoYUB4aWxpbnguY29tPgorLS0tCisgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAoraW5kZXggNTk5ZGNjMC4uNDZkMmZkNCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKysrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKK0BAIC0zMSw3ICszMSw2IEBACisgI2VsaWYgVVNFKE9QRU5HTF9FU18yKQorICNkZWZpbmUgR0xfR0xFWFRfUFJPVE9UWVBFUyAxCisgI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorLSNpbmNsdWRlIDxHTEVTMy9nbDMuaD4KKyAjZW5kaWYKKworICNpZiBVU0UoR0xYKQorLS0KKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaAppbmRleCBkZmRjMTE2Li45ZmMxNDIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoCkBAIC0xNiw2ICsxNiw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtlTGlzdHMudHh0IHwgMiArLQogIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlICAgICAgICAgICB8IDYgKysrLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIKaW5kZXggOWZhYzA0NC4uYzI5ZmE3ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYgpAQCAtMjEsNiArMjEsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtY29uZmlndXJlLWZhaWx1cmUtYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYzFhNTQ4NTk1MTM1ZWU3NWFkM2JmMmUxOGFjODMxMTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ4ZDE5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBcGFjaGUgUG9ydGFibGUgUnVudGltZSAoQVBSKSBjb21wYW5pb24gbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImFwciBleHBhdCBnZGJtIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE1OGFhMGIxZWZlMGMxMmYyM2Q0YjAwN2RkYjlhNWRiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXB1X3ZlcnNpb24uaDtlbmRsaW5lPTE3O21kNT04MDY2ODVhODRlNzFmMTBjODAxNDRjNDhlYjM1ZGY0MiIKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9L2Fwci8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmVfZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNiMDNkYmZmNjA3MjhhNGY0YzMzZjVkOTI5ZThiMzVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4M2VmNGQ1OWU2YWM5YTM2YzdkM2ZkODdhZDdiOWRiN2FkOGFlMjljMDZiOWRkOGZmMjJkZGExY2M0MTYzODkiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyBcIAotCQktLXdpdGhvdXQtb2RiYyBcCi0JCS0td2l0aG91dC1wZ3NxbCBcCi0JCS0td2l0aC1kYm09Z2RibSBcCi0JCS0td2l0aC1nZGJtPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotCQktLXdpdGhvdXQtc3FsaXRlMiBcCi0JCS0td2l0aC1leHBhdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IgotCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIGJpbmNvbmZpZwotCi1QUiA9ICJyMSIKLQotT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCWlmIFsgIiR7Q0xBU1NPVkVSUklERX0iID0gImNsYXNzLXRhcmdldCIgXTsgdGhlbgotCQljcCAke1NUQUdJTkdfREFUQURJUn0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCi0JZmkKLX0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlta2RpciAke0J9L2J1aWxkCi0JY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKLX0KLWRvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCXNlZCAtaSAicyNMSUJUT09MPVwkKFNIRUxMKSBcJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9XCQoU0hFTEwpICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQkjIHNvbWV0aW1lcyB0aGVyZSBpc24ndCBTSEVMTAotCXNlZCAtaSAicyNMSUJUT09MPVwkKGFwcl9idWlsZGRpcikjTElCVE9PTD0ke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQljcCAke1NUQUdJTkdfREFUQURJUn0vYXByL2Fwcl9ydWxlcy5tayAke1N9L2J1aWxkL3J1bGVzLm1rCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCXNlZCAtaSAicyNcKGFwcl9idWlsZGRpclwpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5tawotCXNlZCAtaSAicyNcKGFwcl9idWlsZGVyc1wpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5tawotCXNlZCAtaSAicyNcKHRvcF9idWlsZGRpclwpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5tawotCXNlZCAtaSAicyNcKExJQlRPT0w9XCQoYXByX2J1aWxkZGlyKVwpLiojXDEvbGlidG9vbCMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCi0JICAgICAgIC1lICdzLEFQVV9TT1VSQ0VfRElSPS4qLEFQUl9TT1VSQ0VfRElSPSxnJyBcCi0JICAgICAgIC1lICdzLEFQVV9CVUlMRF9ESVI9LiosQVBSX0JVSUxEX0RJUj0sZycgJHtEfSR7YmluZGlyfS9hcHUtMS1jb25maWcKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNyeXB0byIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCi1QQUNLQUdFQ09ORklHW2NyeXB0b10gPSAiLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAtLXdpdGgtY3J5cHRvLC0td2l0aG91dC1jcnlwdG8sb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS13aXRoLXNxbGl0ZTM9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtc3FsaXRlMyxzcWxpdGUzIgotCi0jZmlsZXMgJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5zbyBhcmUgbm90IHN5bWxpbmtzIGJ1dCBsb2FkYWJsZSBtb2R1bGVzIHRodXMgdGhleSBhcmUgcGFja2FnZWQgaW4gJHtQTn0KLUZJTEVTXyR7UE59ICAgICArPSAiJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTfSAke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlNERVZ9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXBydXRpbC5leHAgJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5hIgotCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgotCi1pbmhlcml0IHB0ZXN0Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1pc284ODU5LTEgZ2xpYmMtZ2NvbnYtaXNvODg1OS0yIGdsaWJjLWdjb252LXV0Zi03IgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCWNkICR7Qn0vdGVzdAotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlta2RpciAkdAotCWZvciBpIGluIHRlc3RhbGwgZGF0YTsgZG8gXAotCSAgY3AgLXIgJHtCfS90ZXN0LyRpICR0OyBcCi0JZG9uZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiNDMwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKQEAgLTAsMCArMSw5MyBAQAorU1VNTUFSWSA9ICJBcGFjaGUgUG9ydGFibGUgUnVudGltZSAoQVBSKSBjb21wYW5pb24gbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImFwciBleHBhdCBnZGJtIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE1OGFhMGIxZWZlMGMxMmYyM2Q0YjAwN2RkYjlhNWRiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXB1X3ZlcnNpb24uaDtlbmRsaW5lPTE3O21kNT04MDY2ODVhODRlNzFmMTBjODAxNDRjNDhlYjM1ZGY0MiIKKworU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9L2Fwci8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ2ZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmVfZml4ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImJkNTAyYjlhODY3MGE4MDEyYzRkOTBjMzFhODQ5NTVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2NWU0MDcxM2RhNTdkMDA0MTIzYjYzMTk4MjhiZTdmMTI3M2ZiYzY0OTBlMTQ1ODc0ZWUxMTc3ZTExMmM0NTkiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyBcIAorCQktLXdpdGhvdXQtb2RiYyBcCisJCS0td2l0aG91dC1wZ3NxbCBcCisJCS0td2l0aC1kYm09Z2RibSBcCisJCS0td2l0aC1nZGJtPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAorCQktLXdpdGhvdXQtc3FsaXRlMiBcCisJCS0td2l0aC1leHBhdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IgorCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIGJpbmNvbmZpZworCitPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJaWYgWyAiJHtDTEFTU09WRVJSSURFfSIgPSAiY2xhc3MtdGFyZ2V0IiBdOyB0aGVuCisJCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKKwlmaQorfQorZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworCW1rZGlyICR7Qn0vYnVpbGQKKwljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5taworfQorZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJc2VkIC1pICJzI0xJQlRPT0w9XCQoU0hFTEwpIFwkKGFwcl9idWlsZGRpcikjTElCVE9PTD1cJChTSEVMTCkgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5taworCSMgc29tZXRpbWVzIHRoZXJlIGlzbid0IFNIRUxMCisJc2VkIC1pICJzI0xJQlRPT0w9XCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNwICR7U1RBR0lOR19EQVRBRElSfS9hcHIvYXByX3J1bGVzLm1rICR7U30vYnVpbGQvcnVsZXMubWsKK30KKworZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJc2VkIC1pICJzI1woYXByX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1woYXByX2J1aWxkZXJzXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1wodG9wX2J1aWxkZGlyXCk9LiojXDE9JHtTVEFHSU5HX0RBVEFESVJ9L2J1aWxkLTEjIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJc2VkIC1pICJzI1woTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpXCkuKiNcMS9saWJ0b29sIyIgJHtCfS9idWlsZC9ydWxlcy5taworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKwkgICAgICAgLWUgJ3MsQVBVX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKKwkgICAgICAgLWUgJ3MsQVBVX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2FwdS0xLWNvbmZpZworfQorCitQQUNLQUdFQ09ORklHID8/PSAiY3J5cHRvIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbY3J5cHRvXSA9ICItLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aC1jcnlwdG8sLS13aXRob3V0LWNyeXB0byxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1zcWxpdGUzLHNxbGl0ZTMiCisKKyNmaWxlcyAke2xpYmRpcn0vYXByLXV0aWwtMS8qLnNvIGFyZSBub3Qgc3ltbGlua3MgYnV0IGxvYWRhYmxlIG1vZHVsZXMgdGh1cyB0aGV5IGFyZSBwYWNrYWdlZCBpbiAke1BOfQorRklMRVNfJHtQTn0gICAgICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlN9ICR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHJ1dGlsLmV4cCAke2xpYmRpcn0vYXByLXV0aWwtMS8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vYXByLXV0aWwtMS8qLmEiCisKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWlzbzg4NTktMSBnbGliYy1nY29udi1pc284ODU5LTIgZ2xpYmMtZ2NvbnYtdXRmLTciCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJY2QgJHtCfS90ZXN0CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCW1rZGlyICR0CisJZm9yIGkgaW4gdGVzdGFsbCBkYXRhOyBkbyBcCisJICBjcCAtciAke0J9L3Rlc3QvJGkgJHQ7IFwKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZTkyYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSBmMjZlOGI4OGQyYzkwZWQ3ZWI5ZDRlMjc2NDEyYjA5MjNjMjNkMTBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTQgRGVjIDIwMTYgMTg6MTM6MDggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXByOiBmaXggb2ZmX3Qgc2l6ZSBkb2Vzbid0IG1hdGNoIGluIGdsaWJjIHdoZW4gY3Jvc3MKLSBjb21waWxpbmcKLQotSW4gY29uZmlndXJlLmluLCBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nOgotCi0JQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIG9mZl90LCA4KQotCi10aGUgbWFjcm8gIkFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQiIHdhcyBkZWZpbmVkIGluIGJ1aWxkL2Fwcl9jb21tb24ubTQsCi1pdCB1c2UgdGhlICJBQ19UUllfUlVOIiBtYWNybywgdGhpcyBtYWNybyBsZXQgdGhlIG9mZl90IHRvIDgsIHdoZW4gY3Jvc3MKLWNvbXBpbGluZyBlbmFibGUuCi0KLVNvIGl0IHdhcyBoYXJkY29kZWQgZm9yIGNyb3NzIGNvbXBpbGluZywgd2Ugc2hvdWxkIGRldGVjdCBpdCBkeW5hbWljIGJhc2VkIG9uCi10aGUgc3lzcm9vdCdzIGdsaWJjLiBXZSBjaGFuZ2UgaXQgdG8gdGhlIGZvbGxvd2luZzoKLQotCUFDX0NIRUNLX1NJWkVPRihvZmZfdCkKLQotVGhlIHNhbWUgZm9yIHRoZSBmb2xsb3dpbmcgaGFyZGNvZGVkIHR5cGVzIGZvciBjcm9zcyBjb21waWxpbmc6Ci0KLQlwaWRfdAk4Ci0Jc3NpemVfdAk4Ci0Jc2l6ZV90CTgKLQlvZmZfdAk4Ci0KLUNoYW5nZSB0aGUgYWJvdmUgY29ycmVzcG9uZGluZ2x5LgotCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA5ZDU3YWU2Li41YjE5OTQwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0xNjgxLDcgKzE2ODEsNyBAQCBlbHNlCi0gICAgIHNvY2tsZW5fdF92YWx1ZT0iaW50IgotIGZpCi0gCi0tQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIHBpZF90LCA4KQotK0FDX0NIRUNLX1NJWkVPRihwaWRfdCkKLSAKLSBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3BpZF90IiA9ICIkYWNfY3Zfc2l6ZW9mX3Nob3J0IjsgdGhlbgotICAgICBwaWRfdF9mbXQ9JyNkZWZpbmUgQVBSX1BJRF9UX0ZNVCAiaGQiJwotQEAgLTE3NTAsNyArMTc1MCw3IEBAIEFQUl9DSEVDS19UWVBFU19DT01QQVRJQkxFKHNzaXplX3QsIGxvbmcsIFtzc2l6ZV90X2ZtdD0ibGQiXSkKLSBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzaXplX3QsIHVuc2lnbmVkIGludCwgW3NpemVfdF9mbXQ9InUiXSkKLSBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzaXplX3QsIHVuc2lnbmVkIGxvbmcsIFtzaXplX3RfZm10PSJsdSJdKQotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBzc2l6ZV90LCA4KQotK0FDX0NIRUNLX1NJWkVPRihzc2l6ZV90KQotIAotIEFDX01TR19DSEVDS0lORyhbd2hpY2ggZm9ybWF0IHRvIHVzZSBmb3IgYXByX3NzaXplX3RdKQotIGlmIHRlc3QgLW4gIiRzc2l6ZV90X2ZtdCI7IHRoZW4KLUBAIC0xNzY3LDcgKzE3NjcsNyBAQCBmaQotIAotIHNzaXplX3RfZm10PSIjZGVmaW5lIEFQUl9TU0laRV9UX0ZNVCBcIiRzc2l6ZV90X2ZtdFwiIgotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzdGRkZWYuaD5dLCBzaXplX3QsIDgpCi0rQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNoIGZvcm1hdCB0byB1c2UgZm9yIGFwcl9zaXplX3RdKQotIGlmIHRlc3QgLW4gIiRzaXplX3RfZm10IjsgdGhlbgotQEAgLTE3ODQsNyArMTc4NCw3IEBAIGZpCi0gCi0gc2l6ZV90X2ZtdD0iI2RlZmluZSBBUFJfU0laRV9UX0ZNVCBcIiRzaXplX3RfZm10XCIiCi0gCi0tQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIG9mZl90LCA4KQotK0FDX0NIRUNLX1NJWkVPRihvZmZfdCkKLSAKLSBpZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9vZmZfdH0ke2Fwcl9jdl91c2VfbGZzNjR9IiA9ICI0eWVzIjsgdGhlbgotICAgICAjIEVuYWJsZSBMRlMKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1idWlsZC1idWlsZGNoZWNrLnNoLWltcHJvdmUtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLWJ1aWxkLWJ1aWxkY2hlY2suc2gtaW1wcm92ZS1saWJ0b29sLWRldGVjdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTdjMTk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1idWlsZC1idWlsZGNoZWNrLnNoLWltcHJvdmUtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA0ZWZkYzA2ZmIxN2I4YTAwYTllY2E5MjNjYWExNzZiZTc0MWQxZTA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxIEZlYiAyMDE4IDE0OjU2OjEzICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS83XSBidWlsZC9idWlsZGNoZWNrLnNoOiBpbXByb3ZlIGxpYnRvb2wgZGV0ZWN0aW9uCisKK1N1cHBvcnQgY3VzdG9taXplIGxpYnRvb2wgYnkgdmFyaWFibGUgYXNzaWduaW5nLCBpdCBpcyBoZWxwZnVsCitmb3IgY3Jvc3MgY29tcGlsZWluZyAoc3VjaCBhcyBsaWJ0b29sPWFhcmNoNjQtbGludXgtbGlidG9vbCkKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvYXByL3B1bGwvOF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJ1aWxkL2J1aWxkY2hlY2suc2ggfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC9idWlsZGNoZWNrLnNoIGIvYnVpbGQvYnVpbGRjaGVjay5zaAoraW5kZXggYWI1ZGY0NC4uZjE5MWE0MSAxMDA3NTUKKy0tLSBhL2J1aWxkL2J1aWxkY2hlY2suc2gKKysrKyBiL2J1aWxkL2J1aWxkY2hlY2suc2gKK0BAIC00MCw3ICs0MCw5IEBAIGZpCisgIyBvdXRwdXQgaXMgbXVsdGlsaW5lIGZyb20gMS41IG9ud2FyZHMKKyAKKyAjIFJlcXVpcmUgbGlidG9vbCAxLjQgb3IgbmV3ZXIKKy1saWJ0b29sPWBidWlsZC9QcmludFBhdGggZ2xpYnRvb2wxIGdsaWJ0b29sIGxpYnRvb2wgbGlidG9vbDE1IGxpYnRvb2wxNGAKKytpZiB0ZXN0IC16ICIkbGlidG9vbCI7IHRoZW4KKysgIGxpYnRvb2w9YGJ1aWxkL1ByaW50UGF0aCBnbGlidG9vbDEgZ2xpYnRvb2wgbGlidG9vbCBsaWJ0b29sMTUgbGlidG9vbDE0YAorK2ZpCisgbHRfcHZlcnNpb249YCRsaWJ0b29sIC0tdmVyc2lvbiAyPi9kZXYvbnVsbHxzZWQgLWUgJ3MvKFteKV0qKS8vZztzL15bXjAtOV0qLy87cy9bLSBdLiovL2c7cSdgCisgaWYgdGVzdCAteiAiJGx0X3B2ZXJzaW9uIjsgdGhlbgorICAgZWNobyAiYnVpbGRjb25mOiBsaWJ0b29sIG5vdCBmb3VuZC4iCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMi1hcHItUmVtb3ZlLXdvcmtkaXItcGF0aC1yZWZlcmVuY2VzLWZyb20taW5zdGFsbGVkLWFwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMi1hcHItUmVtb3ZlLXdvcmtkaXItcGF0aC1yZWZlcmVuY2VzLWZyb20taW5zdGFsbGVkLWFwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZTcwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAyLWFwci1SZW1vdmUtd29ya2Rpci1wYXRoLXJlZmVyZW5jZXMtZnJvbS1pbnN0YWxsZWQtYXAucGF0Y2gKQEAgLTAsMCArMSw3NCBAQAorRnJvbSA1OTI1YjIwZGE4YmJjMzRkOWJmNWE1ZGNhMTIzZWYzODg2NGQ0M2M2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAzMCBKYW4gMjAxOCAwOTozOTowNiArMDgwMAorU3ViamVjdDogW1BBVENIIDIvN10gYXByOiBSZW1vdmUgd29ya2RpciBwYXRoIHJlZmVyZW5jZXMgZnJvbSBpbnN0YWxsZWQgYXByCisgZmlsZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworVGhlIGdlbmVyYXRlZCBgYXByLTEtY29uZmlnJyBpcyB1c2VkIGJ5IG90aGVyIHJlY2lwZXMgYXQgYnVpbGQgdGltZSBvcgorcGFja2FnZXMgYXQgdGFyZ2V0IHJ1biB0aW1lLCB0aGUgd29ya2RpciBwYXRoIGNhdXNlZCBjb25mdXNpb24uCisKK1JlYmFzZSB0byAxLjYuMworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBhcHItY29uZmlnLmluIHwgMjYgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Fwci1jb25maWcuaW4gYi9hcHItY29uZmlnLmluCitpbmRleCA4NGI0MDczLi5iYmJmNjUxIDEwMDY0NAorLS0tIGEvYXByLWNvbmZpZy5pbgorKysrIGIvYXByLWNvbmZpZy5pbgorQEAgLTE1MiwxNCArMTUyLDcgQEAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgZmxhZ3M9IiRmbGFncyAkTERGTEFHUyIKKyAgICAgOzsKKyAgICAgLS1pbmNsdWRlcykKKy0gICAgaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCisgICAgICAgICBmbGFncz0iJGZsYWdzIC1JJGluY2x1ZGVkaXIgJEVYVFJBX0lOQ0xVREVTIgorLSAgICBlbGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAic291cmNlIjsgdGhlbgorLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtSSRBUFJfU09VUkNFX0RJUi9pbmNsdWRlICRFWFRSQV9JTkNMVURFUyIKKy0gICAgZWxzZQorLSAgICAgICAgIyB0aGlzIGlzIGZvciBWUEFUSCBidWlsZHMKKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUkkQVBSX0JVSUxEX0RJUi9pbmNsdWRlIC1JJEFQUl9TT1VSQ0VfRElSL2luY2x1ZGUgJEVYVFJBX0lOQ0xVREVTIgorLSAgICBmaQorICAgICA7OworICAgICAtLXNyY2RpcikKKyAgICAgZWNobyAkQVBSX1NPVVJDRV9ESVIKK0BAIC0xODEsMjkgKzE3NCwxNCBAQCB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbworICAgICBleGl0IDAKKyAgICAgOzsKKyAgICAgLS1saW5rLWxkKQorLSAgICBpZiB0ZXN0ICIkbG9jYXRpb24iID0gImluc3RhbGxlZCI7IHRoZW4KKy0gICAgICAgICMjIyBhdm9pZCB1c2luZyAtTCBpZiBsaWJkaXIgaXMgYSAic3RhbmRhcmQiIGxvY2F0aW9uIGxpa2UgL3Vzci9saWIKKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUwkbGliZGlyIC1sJHtBUFJfTElCTkFNRX0iCistICAgIGVsc2UKKy0gICAgICAgICMjIyB0aGlzIHN1cmVseSBjYW4ndCB3b3JrIHNpbmNlIHRoZSBsaWJyYXJ5IGlzIGluIC5saWJzPworLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtTCRBUFJfQlVJTERfRElSIC1sJHtBUFJfTElCTkFNRX0iCistICAgIGZpCisrICAgICAgICBmbGFncz0iJGZsYWdzIC1sJHtBUFJfTElCTkFNRX0iCisgICAgIDs7CisgICAgIC0tbGluay1saWJ0b29sKQorICAgICAjIElmIHRoZSBMQV9GSUxFIGV4aXN0cyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUsIHVzZSBpdC4gIElmIHdlJ3JlCisgICAgICMgaW5zdGFsbGVkIGFuZCB0aGUgTEFfRklMRSBkb2VzIG5vdCBleGlzdCwgYXNzdW1lIHRvIHVzZSAtTC8tbAorICAgICAjICh0aGUgTEFfRklMRSBtYXkgbm90IGhhdmUgYmVlbiBpbnN0YWxsZWQpLiAgSWYgd2UncmUgYnVpbGRpbmcgb3Vyc2VsdmVzLAorICAgICAjIHdlJ2xsIGFzc3VtZSB0aGF0IGF0IHNvbWUgcG9pbnQgdGhlIC5sYSBmaWxlIGJlIGNyZWF0ZWQuCistICAgIGlmIHRlc3QgLWYgIiRMQV9GSUxFIjsgdGhlbgorLSAgICAgICAgZmxhZ3M9IiRmbGFncyAkTEFfRklMRSIKKy0gICAgZWxpZiB0ZXN0ICIkbG9jYXRpb24iID0gImluc3RhbGxlZCI7IHRoZW4KKy0gICAgICAgICMjIyBhdm9pZCB1c2luZyAtTCBpZiBsaWJkaXIgaXMgYSAic3RhbmRhcmQiIGxvY2F0aW9uIGxpa2UgL3Vzci9saWIKKy0gICAgICAgICMgU2luY2UgdGhlIHVzZXIgaXMgc3BlY2lmeWluZyB0aGV5IGFyZSBsaW5raW5nIHdpdGggbGlidG9vbCwgd2UKKy0gICAgICAgICMgKmtub3cqIHRoYXQgLVIgd2lsbCBiZSByZWNvZ25pemVkIGJ5IGxpYnRvb2wuCistICAgICAgICBmbGFncz0iJGZsYWdzIC1MJGxpYmRpciAtUiRsaWJkaXIgLWwke0FQUl9MSUJOQU1FfSIKKy0gICAgZWxzZQorLSAgICAgICAgZmxhZ3M9IiRmbGFncyAkTEFfRklMRSIKKy0gICAgZmkKKysgICAgICAgIGZsYWdzPSIkZmxhZ3MgLWwke0FQUl9MSUJOQU1FfSIKKyAgICAgOzsKKyAgICAgLS1zaGxpYi1wYXRoLXZhcikKKyAgICAgZWNobyAiJFNITElCUEFUSF9WQVIiCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMi1leHBsaWNpdGx5LWxpbmstbGliYXByLWFnYWluc3QtcGh0cmVhZC10by1tYWtlLWdvbGQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMi1leHBsaWNpdGx5LWxpbmstbGliYXByLWFnYWluc3QtcGh0cmVhZC10by1tYWtlLWdvbGQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDBkZGRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gOTRkMWNhMDI2NmEwZjljMDQ0NmYxMjk5YjU0Zjc1MmU4N2I4YTY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMyBNYXIgMjAxNyAyMjoyNDoxNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBleHBsaWNpdGx5IGxpbmsgbGliYXByIGFnYWluc3QgcGh0cmVhZCB0byBtYWtlIGdvbGQgaGFwcHkgb24KLSB0ZXN0Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4YXR0cl9pbml0JwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleGF0dHJfZGVzdHJveScKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4X3RyeWxvY2snCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9hdHRyX3NldHN0YWNrc2l6ZScKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2NyZWF0ZScKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2pvaW4nCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9kZXRhY2gnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9zaWdtYXNrJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfb25jZScKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2tleV9jcmVhdGUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9nZXRzcGVjaWZpYycKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2tleV9kZWxldGUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9zZXRzcGVjaWZpYycKLXwgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi18IE1ha2VmaWxlOjExNDogcmVjaXBlIGZvciB0YXJnZXQgJ2dsb2JhbG11dGV4Y2hpbGQnIGZhaWxlZAotfCBtYWtlWzFdOiAqKiogW2dsb2JhbG11dGV4Y2hpbGRdIEVycm9yIDEKLXwgbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21lL3N1cGVyYW5keS90bXAvb2UtY29yZS1nbGliYy93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LWFuZ3N0cm9tLWxpbnV4LWdudWVhYmkvYXByLzEuNS4yLXIwL2Fwci0xLjUuMi90ZXN0JwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDViMTk5NDAuLmNkZjRkNTggMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTc2Niw2ICs3NjYsNyBAQCBlbHNlCi0gICAgICAgICAgIEFQUl9QVEhSRUFEU19DSEVDS19SRVNUT1JFIF0gKQotICAgICBmaQotICAgICBpZiB0ZXN0ICIkcHRocmVhZGgiID0gIjEiOyB0aGVuCi0rICAgICAgICBBUFJfQUREVE8oTElCUyxbLWxwdGhyZWFkXSkKLSAgICAgICAgIEFQUl9DSEVDS19QVEhSRUFEX0dFVFNQRUNJRklDX1RXT19BUkdTCi0gICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9BVFRSX0dFVERFVEFDSFNUQVRFX09ORV9BUkcKLSAgICAgICAgIEFQUl9DSEVDS19QVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAzLU1ha2VmaWxlLmluLWNvbmZpZ3VyZS5pbi1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDMtTWFrZWZpbGUuaW4tY29uZmlndXJlLmluLXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZDUzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAzLU1ha2VmaWxlLmluLWNvbmZpZ3VyZS5pbi1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIGQ1MDI4YzEwZjE1NmMyMjQ0NzViMzQwY2ZiMWJhMDI1ZDY3OTcyNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIgRmViIDIwMTggMTU6NTE6NDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzddIE1ha2VmaWxlLmluL2NvbmZpZ3VyZS5pbjogc3VwcG9ydCBjcm9zcyBjb21waWxpbmcKKworV2hpbGUgY3Jvc3MgY29tcGlsaW5nLCB0aGUgdG9vbHMvZ2VuX3Rlc3RfY2hhciBjb3VsZCBub3QKK2JlIGV4ZWN1dGVkIGF0IGJ1aWxkIHRpbWUsIHVzZSBBWF9QUk9HX0NDX0ZPUl9CVUlMRCB0bworYnVpbGQgbmF0aXZlIHRvb2xzL2dlbl90ZXN0X2NoYXIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvYXByL3B1bGwvOF0KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gIHwgMTAgKysrLS0tLS0tLQorIGNvbmZpZ3VyZS5pbiB8ICAzICsrKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggNWZiNzYwZS4uODY3NWY5MCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTQ2LDcgKzQ2LDcgQEAgTFRfVkVSU0lPTiA9IEBMVF9WRVJTSU9OQAorIAorIENMRUFOX1RBUkdFVFMgPSBhcHItY29uZmlnLm91dCBhcHIuZXhwIGV4cG9ydHMuYyBleHBvcnRfdmFycy5jIC5tYWtlLmRpcnMgXAorIAlidWlsZC9hcHJfcnVsZXMub3V0IHRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQCBcCistCXRvb2xzL2dlbl90ZXN0X2NoYXIubyB0b29scy9nZW5fdGVzdF9jaGFyLmxvIFwKKysJdG9vbHMvZ2VuX3Rlc3RfY2hhci5vIFwKKyAJaW5jbHVkZS9wcml2YXRlL2Fwcl9lc2NhcGVfdGVzdF9jaGFyLmgKKyBESVNUQ0xFQU5fVEFSR0VUUyA9IGNvbmZpZy5jYWNoZSBjb25maWcubG9nIGNvbmZpZy5zdGF0dXMgXAorIAlpbmNsdWRlL2Fwci5oIGluY2x1ZGUvYXJjaC91bml4L2Fwcl9wcml2YXRlLmggXAorQEAgLTEzMSwxMyArMTMxLDkgQEAgY2hlY2s6ICQoVEFSR0VUX0xJQikKKyBldGFnczoKKyAJZXRhZ3MgYGZpbmQgLiAtbmFtZSAnKi5bY2hdJ2AKKyAKKy1PQkpFQ1RTX2dlbl90ZXN0X2NoYXIgPSB0b29scy9nZW5fdGVzdF9jaGFyLmxvICQoTE9DQUxfTElCUykKKy10b29scy9nZW5fdGVzdF9jaGFyLmxvOiB0b29scy9nZW5fdGVzdF9jaGFyLmMKKyt0b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEA6IHRvb2xzL2dlbl90ZXN0X2NoYXIuYworIAkkKEFQUl9NS0RJUikgdG9vbHMKKy0JJChMVF9DT01QSUxFKQorLQorLXRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQDogJChPQkpFQ1RTX2dlbl90ZXN0X2NoYXIpCistCSQoTElOS19QUk9HKSAkKE9CSkVDVFNfZ2VuX3Rlc3RfY2hhcikgJChBTExfTElCUykKKysJJChDQ19GT1JfQlVJTEQpICQoQ0ZMQUdTX0ZPUl9CVUlMRCkgJDwgLW8gJEAKKyAKKyBpbmNsdWRlL3ByaXZhdGUvYXByX2VzY2FwZV90ZXN0X2NoYXIuaDogdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRACisgCSQoQVBSX01LRElSKSBpbmNsdWRlL3ByaXZhdGUKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDcxOWYzMzEuLjM2MTEyMGYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTE4Myw2ICsxODMsOSBAQCBkbmwgY2FuIG9ubHkgYmUgdXNlZCBvbmNlIHdpdGhpbiBhIGNvbmZpZ3VyZSBzY3JpcHQsIHNvIHRoaXMgcHJldmVudHMgYQorIGRubCBwcmVsb2FkIHNlY3Rpb24gZnJvbSBpbnZva2luZyB0aGUgbWFjcm8gdG8gZ2V0IGNvbXBpbGVyIGluZm8uCisgQUNfUFJPR19DQworIAorK2RubCBDaGVjayBidWlsZCBDQyBmb3IgZ2VuX3Rlc3RfY2hhciBjb21waWxpbmcgd2hpY2ggaXMgZXhlY3V0ZWQgYXQgYnVpbGQgdGltZS4KKytBWF9QUk9HX0NDX0ZPUl9CVUlMRAorKworIGRubCBBQ19QUk9HX1NFRCBpcyBvbmx5IGF2YWxpYWJsZSBpbiByZWNlbnQgYXV0b2NvbmYgdmVyc2lvbnMuCisgZG5sIFVzZSBBQ19DSEVDS19QUk9HIGluc3RlYWQgaWYgQUNfUFJPR19TRUQgaXMgbm90IHByZXNlbnQuCisgaWZkZWYoW0FDX1BST0dfU0VEXSwKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA0LUZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDQtRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZmMwN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA0LUZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDc5MjVlYjE3NjZhMDBjY2VlMDVjNmU4MGIxZDM0ZjE2M2EwNGI3YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDMwIEphbiAyMDE4IDA5OjQzOjM0ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC83XSBGaXggcGFja2V0IGRpc2NhcmRzIEhUVFAgcmVkaXJlY3QuCisKK0Rpc2Nvbm5lY3QgdGhlIGNvbm5lY3Rpb24gYnkgcG9sbCgpIHRpbWVvdXQuCitJZiB0aW1lb3V0PTAgYW5kIGFwcl93YWl0X2Zvcl9pb19vcl90aW1lb3V0KCk9QVBSX1RJTUVVUCB0aGVuCithcHJfc29ja2V0X3JlY3YoKSByZXR1cm5zIEVBR0FJTi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE5vcmlha2kgWW9zaGl0YW5lIDx5b3NoaXRhbmUubnJzQGNudC5uY29zLm5lYy5jby5qcD4KK1NpZ25lZC1vZmYtYnk6IExpIFdhbmcgPGxpLndhbmdAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDEuNi4zCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG5ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMgYi9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYworaW5kZXggNGMwZTBhNi4uMWJkYWZiYSAxMDA2NDQKKy0tLSBhL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jCisrKysgYi9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYworQEAgLTg1LDYgKzg1LDEwIEBAIGFwcl9zdGF0dXNfdCBhcHJfc29ja2V0X3JlY3YoYXByX3NvY2tldF90ICpzb2NrLCBjaGFyICpidWYsIGFwcl9zaXplX3QgKmxlbikKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgKHNvY2stPnRpbWVvdXQgPiAwKSkgeworIGRvX3NlbGVjdDoKKyAgICAgICAgIGFydiA9IGFwcl93YWl0X2Zvcl9pb19vcl90aW1lb3V0KE5VTEwsIHNvY2ssIDEpOworKyAgICAgICAgaWYgKChhcnYgPT0gQVBSX1RJTUVVUCkgJiYgKHNvY2stPnRpbWVvdXQgPT0gMCkpIHsKKysgICAgICAgICAgICAqbGVuID0gMDsKKysgICAgICAgICAgICByZXR1cm4gRUFHQUlOOworKyAgICAgICAgfQorICAgICAgICAgaWYgKGFydiAhPSBBUFJfU1VDQ0VTUykgeworICAgICAgICAgICAgICpsZW4gPSAwOworICAgICAgICAgICAgIHJldHVybiBhcnY7CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNjM0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA1LWNvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAyZTY2Y2VjZTBjM2FkZmY5MjczMzMzMjExMTIwNGRkYzFkNzMwYTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE5IE5vdiAyMDE1IDE4OjI1OjM4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNS83XSBjb25maWd1cmUuaW46IGZpeCBMVEZMQUdTIHRvIG1ha2UgaXQgd29yayB3aXRoIGNjYWNoZQorCitXaGVuIGNjYWNoZSBpcyBlbmFibGVkLCBsaWJ0b29sIHJlcXVpcmVzIC0tdGFnPUNDIHdoZW4gdXNlIGNjYWNoZSwKK290aGVyd2lzZSB3aGVuIGJ1aWxkaW5nIGFwci11dGlsIHdpdGggY2NhY2hlIGVuYWJsZWQ6CisKK3wgbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCit8IGxpYnRvb2w6IGVycm9yOiBzcGVjaWZ5IGEgdGFnIHdpdGggJy0tdGFnJworfCBsaWJ0b29sOiBjb21waWxlOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24KK3wgbWFrZVsxXTogKioqIFtidWNrZXRzL2Fwcl9idWNrZXRzLmxvXSBFcnJvciAxCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggMzYxMTIwZi4uM2IxMDQyMiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjQ5LDcgKzI0OSw3IEBAIGNhc2UgJGhvc3QgaW4KKyAgICAgOzsKKyAqKQorICAgICBpZiB0ZXN0ICJ4JExURkxBR1MiID0gIngiOyB0aGVuCistICAgICAgICBMVEZMQUdTPSctLXNpbGVudCcKKysgICAgICAgIExURkxBR1M9Jy0tc2lsZW50IC0tdGFnPUNDJworICAgICBmaQorICAgICBpZiB0ZXN0ICIkZXhwZXJpbWVudGFsX2xpYnRvb2wiID0gInllcyI7IHRoZW4KKyAgICAgICAgICMgVXNlIGEgY3VzdG9tLW1hZGUgbGlidG9vbCByZXBsYWNlbWVudAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjVlN2VhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNi1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoCkBAIC0wLDAgKzEsNzggQEAKK0Zyb20gZjRkNmU0NWVkNWQyY2NmZmQxYWY0YzJjY2RmNzA5OWJhMGRjZTEzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE0IERlYyAyMDE2IDE4OjEzOjA4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNi83XSBhcHI6IGZpeCBvZmZfdCBzaXplIGRvZXNuJ3QgbWF0Y2ggaW4gZ2xpYmMgd2hlbiBjcm9zcworIGNvbXBpbGluZworCitJbiBjb25maWd1cmUuaW4sIGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmc6CisKKwlBUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSwgb2ZmX3QsIDgpCisKK3RoZSBtYWNybyAiQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRCIgd2FzIGRlZmluZWQgaW4gYnVpbGQvYXByX2NvbW1vbi5tNCwKK2l0IHVzZSB0aGUgIkFDX1RSWV9SVU4iIG1hY3JvLCB0aGlzIG1hY3JvIGxldCB0aGUgb2ZmX3QgdG8gOCwgd2hlbiBjcm9zcworY29tcGlsaW5nIGVuYWJsZS4KKworU28gaXQgd2FzIGhhcmRjb2RlZCBmb3IgY3Jvc3MgY29tcGlsaW5nLCB3ZSBzaG91bGQgZGV0ZWN0IGl0IGR5bmFtaWMgYmFzZWQgb24KK3RoZSBzeXNyb290J3MgZ2xpYmMuIFdlIGNoYW5nZSBpdCB0byB0aGUgZm9sbG93aW5nOgorCisJQUNfQ0hFQ0tfU0laRU9GKG9mZl90KQorCitUaGUgc2FtZSBmb3IgdGhlIGZvbGxvd2luZyBoYXJkY29kZWQgdHlwZXMgZm9yIGNyb3NzIGNvbXBpbGluZzoKKworCXBpZF90CTgKKwlzc2l6ZV90CTgKKwlzaXplX3QJOAorCW9mZl90CTgKKworQ2hhbmdlIHRoZSBhYm92ZSBjb3JyZXNwb25kaW5nbHkuCisKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgY29uZmlndXJlLmluIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDNiMTA0MjIuLmEyMjdlNzIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTE3NjksNyArMTc2OSw3IEBAIGVsc2UKKyAgICAgc29ja2xlbl90X3ZhbHVlPSJpbnQiCisgZmkKKyAKKy1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSwgcGlkX3QsIDgpCisrQUNfQ0hFQ0tfU0laRU9GKHBpZF90KQorIAorIGlmIHRlc3QgIiRhY19jdl9zaXplb2ZfcGlkX3QiID0gIiRhY19jdl9zaXplb2Zfc2hvcnQiOyB0aGVuCisgICAgIHBpZF90X2ZtdD0nI2RlZmluZSBBUFJfUElEX1RfRk1UICJoZCInCitAQCAtMTgzOCw3ICsxODM4LDcgQEAgQVBSX0NIRUNLX1RZUEVTX0NPTVBBVElCTEUoc3NpemVfdCwgbG9uZywgW3NzaXplX3RfZm10PSJsZCJdKQorIEFQUl9DSEVDS19UWVBFU19DT01QQVRJQkxFKHNpemVfdCwgdW5zaWduZWQgaW50LCBbc2l6ZV90X2ZtdD0idSJdKQorIEFQUl9DSEVDS19UWVBFU19DT01QQVRJQkxFKHNpemVfdCwgdW5zaWduZWQgbG9uZywgW3NpemVfdF9mbXQ9Imx1Il0pCisgCistQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIHNzaXplX3QsIDgpCisrQUNfQ0hFQ0tfU0laRU9GKHNzaXplX3QpCisgCisgQUNfTVNHX0NIRUNLSU5HKFt3aGljaCBmb3JtYXQgdG8gdXNlIGZvciBhcHJfc3NpemVfdF0pCisgaWYgdGVzdCAtbiAiJHNzaXplX3RfZm10IjsgdGhlbgorQEAgLTE4NTUsNyArMTg1NSw3IEBAIGZpCisgCisgc3NpemVfdF9mbXQ9IiNkZWZpbmUgQVBSX1NTSVpFX1RfRk1UIFwiJHNzaXplX3RfZm10XCIiCisgCistQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN0ZGRlZi5oPl0sIHNpemVfdCwgOCkKKytBQ19DSEVDS19TSVpFT0Yoc2l6ZV90KQorIAorIEFDX01TR19DSEVDS0lORyhbd2hpY2ggZm9ybWF0IHRvIHVzZSBmb3IgYXByX3NpemVfdF0pCisgaWYgdGVzdCAtbiAiJHNpemVfdF9mbXQiOyB0aGVuCitAQCAtMTg3Miw3ICsxODcyLDcgQEAgZmkKKyAKKyBzaXplX3RfZm10PSIjZGVmaW5lIEFQUl9TSVpFX1RfRk1UIFwiJHNpemVfdF9mbXRcIiIKKyAKKy1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSwgb2ZmX3QsIDgpCisrQUNfQ0hFQ0tfU0laRU9GKG9mZl90KQorIAorIGlmIHRlc3QgIiR7YWNfY3Zfc2l6ZW9mX29mZl90fSR7YXByX2N2X3VzZV9sZnM2NH0iID0gIjR5ZXMiOyB0aGVuCisgICAgICMgRW5hYmxlIExGUworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDctZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDctZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzYwYjAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNy1leHBsaWNpdGx5LWxpbmstbGliYXByLWFnYWluc3QtcGh0cmVhZC10by1tYWtlLWdvbGQtLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gYzZhZmM0YTRhNzY2NDc4Y2I2YWE2YjQzYTUwMDUxODgxYjYzMThkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBNYXIgMjAxNyAyMjoyNDoxNyArMDEwMAorU3ViamVjdDogW1BBVENIIDcvN10gZXhwbGljaXRseSBsaW5rIGxpYmFwciBhZ2FpbnN0IHBodHJlYWQgdG8gbWFrZSBnb2xkIGhhcHB5Cisgb24gdGVzdAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleGF0dHJfaW5pdCcKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3knCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleF90cnlsb2NrJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUnCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9jcmVhdGUnCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9qb2luJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfZGV0YWNoJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfc2lnbWFzaycKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX29uY2UnCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9rZXlfY3JlYXRlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfZ2V0c3BlY2lmaWMnCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9rZXlfZGVsZXRlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfc2V0c3BlY2lmaWMnCit8IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworfCBNYWtlZmlsZToxMTQ6IHJlY2lwZSBmb3IgdGFyZ2V0ICdnbG9iYWxtdXRleGNoaWxkJyBmYWlsZWQKK3wgbWFrZVsxXTogKioqIFtnbG9iYWxtdXRleGNoaWxkXSBFcnJvciAxCit8IG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS9zdXBlcmFuZHkvdG1wL29lLWNvcmUtZ2xpYmMvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1hbmdzdHJvbS1saW51eC1nbnVlYWJpL2Fwci8xLjUuMi1yMC9hcHItMS41LjIvdGVzdCcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCBhMjI3ZTcyLi5jYmMwZjkwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC03ODQsNiArNzg0LDcgQEAgZWxzZQorICAgICAgICAgICBBUFJfUFRIUkVBRFNfQ0hFQ0tfUkVTVE9SRSBdICkKKyAgICAgZmkKKyAgICAgaWYgdGVzdCAiJHB0aHJlYWRoIiA9ICIxIjsgdGhlbgorKyAgICAgICAgQVBSX0FERFRPKExJQlMsWy1scHRocmVhZF0pCisgICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9HRVRTUEVDSUZJQ19UV09fQVJHUworICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfQVRUUl9HRVRERVRBQ0hTVEFURV9PTkVfQVJHCisgICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9SRUNVUlNJVkVfTVVURVgKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MDViOGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRml4IHBhY2tldCBkaXNjYXJkcyBIVFRQIHJlZGlyZWN0LgotCi1EaXNjb25uZWN0IHRoZSBjb25uZWN0aW9uIGJ5IHBvbGwoKSB0aW1lb3V0LgotSWYgdGltZW91dD0wIGFuZCBhcHJfd2FpdF9mb3JfaW9fb3JfdGltZW91dCgpPUFQUl9USU1FVVAgdGhlbgotYXByX3NvY2tldF9yZWN2KCkgcmV0dXJucyBFQUdBSU4uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBOb3JpYWtpIFlvc2hpdGFuZSA8eW9zaGl0YW5lLm5yc0BjbnQubmNvcy5uZWMuY28uanA+Ci1TaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBuZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYyB8ICAgIDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jIGIvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKLWluZGV4IGMxMzNhMjYuLmU4ZmFmMTUgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYwotKysrIGIvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKLUBAIC04NSw2ICs4NSwxMCBAQCBhcHJfc3RhdHVzX3QgYXByX3NvY2tldF9yZWN2KGFwcl9zb2NrZXRfdCAqc29jaywgY2hhciAqYnVmLCBhcHJfc2l6ZV90ICpsZW4pCi0gICAgICAgICAgICAgICAgICAgICAgICYmIChzb2NrLT50aW1lb3V0ID4gMCkpIHsKLSBkb19zZWxlY3Q6Ci0gICAgICAgICBhcnYgPSBhcHJfd2FpdF9mb3JfaW9fb3JfdGltZW91dChOVUxMLCBzb2NrLCAxKTsKLSsgICAgICAgIGlmICgoYXJ2ID09IEFQUl9USU1FVVApICYmIChzb2NrLT50aW1lb3V0ID09IDApKSB7Ci0rICAgICAgICAgICAgKmxlbiA9IDA7Ci0rICAgICAgICAgICAgcmV0dXJuIEVBR0FJTjsKLSsgICAgICAgIH0KLSAgICAgICAgIGlmIChhcnYgIT0gQVBSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAqbGVuID0gMDsKLSAgICAgICAgICAgICByZXR1cm4gYXJ2OwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NsZWFudXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jbGVhbnVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjc4NGUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NsZWFudXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBhcHItMS40LjIvYnVpbGQvYnVpbGRjaGVjay5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFwci0xLjQuMi5vcmlnL2J1aWxkL2J1aWxkY2hlY2suc2gJMjAwOS0xMS0xMyAwODoyNzoxNi4wMDAwMDAwMDAgKzA4MDAKLSsrKyBhcHItMS40LjIvYnVpbGQvYnVpbGRjaGVjay5zaAkyMDEwLTExLTI2IDE1OjQ0OjAwLjAwMDAwMDAwMCArMDgwMAotQEAgLTMyLDM1ICszMiw0IEBACi0gZWNobyAiYnVpbGRjb25mOiBhdXRvY29uZiB2ZXJzaW9uICRhY192ZXJzaW9uIChvaykiCi0gZmkKLSAKLS0jIFNhbXBsZSBsaWJ0b29sIC0tdmVyc2lvbiBvdXRwdXRzOgotLSMgbHRtYWluLnNoIChHTlUgbGlidG9vbCkgMS4zLjMgKDEuMzg1LjIuMTgxIDE5OTkvMDcvMDIgMTU6NDk6MTEpCi0tIyBsdG1haW4uc2ggKEdOVSBsaWJ0b29sIDEuMTM2MSAyMDA0LzAxLzAyIDIzOjEwOjUyKSAxLjVhCi0tIyBvdXRwdXQgaXMgbXVsdGlsaW5lIGZyb20gMS41IG9ud2FyZHMKLS0KLS0jIFJlcXVpcmUgbGlidG9vbCAxLjQgb3IgbmV3ZXIKLS1saWJ0b29sPWBidWlsZC9QcmludFBhdGggZ2xpYnRvb2wxIGdsaWJ0b29sIGxpYnRvb2wgbGlidG9vbDE1IGxpYnRvb2wxNGAKLS1sdF9wdmVyc2lvbj1gJGxpYnRvb2wgLS12ZXJzaW9uIDI+L2Rldi9udWxsfHNlZCAtZSAncy8oW14pXSopLy9nO3MvXlteMC05XSovLztzL1stIF0uKi8vZztxJ2AKLS1pZiB0ZXN0IC16ICIkbHRfcHZlcnNpb24iOyB0aGVuCi0tZWNobyAiYnVpbGRjb25mOiBsaWJ0b29sIG5vdCBmb3VuZC4iCi0tZWNobyAiICAgICAgICAgICBZb3UgbmVlZCBsaWJ0b29sIHZlcnNpb24gMS40IG9yIG5ld2VyIGluc3RhbGxlZCIKLS1lY2hvICIgICAgICAgICAgIHRvIGJ1aWxkIEFQUiBmcm9tIFNWTi4iCi0tZXhpdCAxCi0tZmkKLS1sdF92ZXJzaW9uPWBlY2hvICRsdF9wdmVyc2lvbnxzZWQgLWUgJ3MvXChbYS16XSpcKSQvLlwxLydgCi0tSUZTPS47IHNldCAkbHRfdmVyc2lvbjsgSUZTPScgJwotLWx0X3N0YXR1cz0iZ29vZCIKLS1pZiB0ZXN0ICIkMSIgPSAiMSI7IHRoZW4KLS0gICBpZiB0ZXN0ICIkMiIgLWx0ICI0IjsgdGhlbgotLSAgICAgIGx0X3N0YXR1cz0iYmFkIgotLSAgIGZpCi0tZmkKLS1pZiB0ZXN0ICRsdF9zdGF0dXMgPSAiZ29vZCI7IHRoZW4KLS0gICBlY2hvICJidWlsZGNvbmY6IGxpYnRvb2wgdmVyc2lvbiAkbHRfcHZlcnNpb24gKG9rKSIKLS0gICBleGl0IDAKLS1maQotLQotLWVjaG8gImJ1aWxkY29uZjogbGlidG9vbCB2ZXJzaW9uICRsdF9wdmVyc2lvbiBmb3VuZC4iCi0tZWNobyAiICAgICAgICAgICBZb3UgbmVlZCBsaWJ0b29sIHZlcnNpb24gMS40IG9yIG5ld2VyIGluc3RhbGxlZCIKLS1lY2hvICIgICAgICAgICAgIHRvIGJ1aWxkIEFQUiBmcm9tIFNWTi4iCi0tCi0tZXhpdCAxCi0rZXhpdCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWdmaXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWdmaXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNWM0ZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlnZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogYXByLTEuMy4zL2Fwci1jb25maWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhcHItMS4zLjMub3JpZy9hcHItY29uZmlnLmluCTIwMDktMDEtMTIgMTU6MTY6MzEuMDAwMDAwMDAwICswMDAwCi0rKysgYXByLTEuMy4zL2Fwci1jb25maWcuaW4JMjAwOS0wMS0xMiAxNToxOToyNS4wMDAwMDAwMDAgKzAwMDAKLUBAIC0xNTIsMTQgKzE1Miw3IEBACi0gICAgIGZsYWdzPSIkZmxhZ3MgJExERkxBR1MiCi0gICAgIDs7Ci0gICAgIC0taW5jbHVkZXMpCi0tICAgIGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgotICAgICAgICAgZmxhZ3M9IiRmbGFncyAtSSRpbmNsdWRlZGlyICRFWFRSQV9JTkNMVURFUyIKLS0gICAgZWxpZiB0ZXN0ICIkbG9jYXRpb24iID0gInNvdXJjZSI7IHRoZW4KLS0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUkkQVBSX1NPVVJDRV9ESVIvaW5jbHVkZSAkRVhUUkFfSU5DTFVERVMiCi0tICAgIGVsc2UKLS0gICAgICAgICMgdGhpcyBpcyBmb3IgVlBBVEggYnVpbGRzCi0tICAgICAgICBmbGFncz0iJGZsYWdzIC1JJEFQUl9CVUlMRF9ESVIvaW5jbHVkZSAtSSRBUFJfU09VUkNFX0RJUi9pbmNsdWRlICRFWFRSQV9JTkNMVURFUyIKLS0gICAgZmkKLSAgICAgOzsKLSAgICAgLS1zcmNkaXIpCi0gICAgIGVjaG8gJEFQUl9TT1VSQ0VfRElSCi1AQCAtMTgxLDI5ICsxNjcsMTQgQEAKLSAgICAgZXhpdCAwCi0gICAgIDs7Ci0gICAgIC0tbGluay1sZCkKLS0gICAgaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCi0tICAgICAgICAjIyMgYXZvaWQgdXNpbmcgLUwgaWYgbGliZGlyIGlzIGEgInN0YW5kYXJkIiBsb2NhdGlvbiBsaWtlIC91c3IvbGliCi0tICAgICAgICBmbGFncz0iJGZsYWdzIC1MJGxpYmRpciAtbCR7QVBSX0xJQk5BTUV9IgotLSAgICBlbHNlCi0tICAgICAgICAjIyMgdGhpcyBzdXJlbHkgY2FuJ3Qgd29yayBzaW5jZSB0aGUgbGlicmFyeSBpcyBpbiAubGlicz8KLS0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUwkQVBSX0JVSUxEX0RJUiAtbCR7QVBSX0xJQk5BTUV9IgotLSAgICBmaQotKyAgICAgICAgZmxhZ3M9IiRmbGFncyAtbCR7QVBSX0xJQk5BTUV9IgotICAgICA7OwotICAgICAtLWxpbmstbGlidG9vbCkKLSAgICAgIyBJZiB0aGUgTEFfRklMRSBleGlzdHMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlLCB1c2UgaXQuICBJZiB3ZSdyZQotICAgICAjIGluc3RhbGxlZCBhbmQgdGhlIExBX0ZJTEUgZG9lcyBub3QgZXhpc3QsIGFzc3VtZSB0byB1c2UgLUwvLWwKLSAgICAgIyAodGhlIExBX0ZJTEUgbWF5IG5vdCBoYXZlIGJlZW4gaW5zdGFsbGVkKS4gIElmIHdlJ3JlIGJ1aWxkaW5nIG91cnNlbHZlcywKLSAgICAgIyB3ZSdsbCBhc3N1bWUgdGhhdCBhdCBzb21lIHBvaW50IHRoZSAubGEgZmlsZSBiZSBjcmVhdGVkLgotLSAgICBpZiB0ZXN0IC1mICIkTEFfRklMRSI7IHRoZW4KLS0gICAgICAgIGZsYWdzPSIkZmxhZ3MgJExBX0ZJTEUiCi0tICAgIGVsaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCi0tICAgICAgICAjIyMgYXZvaWQgdXNpbmcgLUwgaWYgbGliZGlyIGlzIGEgInN0YW5kYXJkIiBsb2NhdGlvbiBsaWtlIC91c3IvbGliCi0tICAgICAgICAjIFNpbmNlIHRoZSB1c2VyIGlzIHNwZWNpZnlpbmcgdGhleSBhcmUgbGlua2luZyB3aXRoIGxpYnRvb2wsIHdlCi0tICAgICAgICAjICprbm93KiB0aGF0IC1SIHdpbGwgYmUgcmVjb2duaXplZCBieSBsaWJ0b29sLgotLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtTCRsaWJkaXIgLVIkbGliZGlyIC1sJHtBUFJfTElCTkFNRX0iCi0tICAgIGVsc2UKLS0gICAgICAgIGZsYWdzPSIkZmxhZ3MgJExBX0ZJTEUiCi0tICAgIGZpCi0rICAgICAgICBmbGFncz0iJGZsYWdzIC1sJHtBUFJfTElCTkFNRX0iCi0gICAgIDs7Ci0gICAgIC0tc2hsaWItcGF0aC12YXIpCi0gICAgIGVjaG8gIiRTSExJQlBBVEhfVkFSIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MjFlZWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gZDQzOTA5M2FhMDdhNDg2ZjU1OTIwNmFjOWU1ODA4YTZhMTgyMThjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOSBOb3YgMjAxNSAxODoyNTozOCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IGZpeCBMVEZMQUdTIHRvIG1ha2UgaXQgd29yayB3aXRoIGNjYWNoZQotCi1XaGVuIGNjYWNoZSBpcyBlbmFibGVkLCBsaWJ0b29sIHJlcXVpcmVzIC0tdGFnPUNDIHdoZW4gdXNlIGNjYWNoZSwKLW90aGVyd2lzZSB3aGVuIGJ1aWxkaW5nIGFwci11dGlsIHdpdGggY2NhY2hlIGVuYWJsZWQ6Ci0KLXwgbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCi18IGxpYnRvb2w6IGVycm9yOiBzcGVjaWZ5IGEgdGFnIHdpdGggJy0tdGFnJwotfCBsaWJ0b29sOiBjb21waWxlOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24KLXwgbWFrZVsxXTogKioqIFtidWNrZXRzL2Fwcl9idWNrZXRzLmxvXSBFcnJvciAxCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNWE0YTk4OC4uOWQ1N2FlNiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMjQ2LDcgKzI0Niw3IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgOzsKLSAqKQotICAgICBpZiB0ZXN0ICJ4JExURkxBR1MiID0gIngiOyB0aGVuCi0tICAgICAgICBMVEZMQUdTPSctLXNpbGVudCcKLSsgICAgICAgIExURkxBR1M9Jy0tc2lsZW50IC0tdGFnPUNDJwotICAgICBmaQotICAgICBpZiB0ZXN0ICIkZXhwZXJpbWVudGFsX2xpYnRvb2wiID0gInllcyI7IHRoZW4KLSAgICAgICAgICMgVXNlIGEgY3VzdG9tLW1hZGUgbGlidG9vbCByZXBsYWNlbWVudAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZV9maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZV9maXhlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUxNDAwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmVfZml4ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBhcHItMS4zLjMvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXByLTEuMy4zLm9yaWcvY29uZmlndXJlLmluCi0rKysgYXByLTEuMy4zL2NvbmZpZ3VyZS5pbgotQEAgLTc5NCwzOSArNzk0LDYgQEAgQUNfQ0hFQ0tfRlVOQ1MoW21tYXAgbXVubWFwIHNobV9vcGVuIHNobQotICAgICAgICAgICAgICAgICBjcmVhdGVfYXJlYV0pCi0gCi0gQVBSX0NIRUNLX0RFRklORShNQVBfQU5PTiwgc3lzL21tYW4uaCkKLS1BQ19DSEVDS19GSUxFKC9kZXYvemVybykKLS0KLS0jIE5vdCBhbGwgc3lzdGVtcyBjYW4gbW1hcCAvZGV2L3plcm8gKHN1Y2ggYXMgSFAtVVgpLiAgQ2hlY2sgZm9yIHRoYXQuCi0taWYgdGVzdCAiJGFjX2N2X2Z1bmNfbW1hcCIgPSAieWVzIiAmJgotLSAgIHRlc3QgIiRhY19jdl9maWxlX19kZXZfemVybyIgPSAieWVzIjsgdGhlbgotLSAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAgdGhhdCBjYW4gbWFwIC9kZXYvemVybykKLS0gICAgQUNfVFJZX1JVTihbCi0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNpbmNsdWRlIDxmY250bC5oPgotLSNpZmRlZiBIQVZFX1NZU19NTUFOX0gKLS0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLS0jZW5kaWYKLS0gICAgaW50IG1haW4oKQotLSAgICB7Ci0tICAgICAgICBpbnQgZmQ7Ci0tICAgICAgICB2b2lkICptOwotLSAgICAgICAgZmQgPSBvcGVuKCIvZGV2L3plcm8iLCBPX1JEV1IpOwotLSAgICAgICAgaWYgKGZkIDwgMCkgewotLSAgICAgICAgICAgIHJldHVybiAxOwotLSAgICAgICAgfQotLSAgICAgICAgbSA9IG1tYXAoMCwgc2l6ZW9mKHZvaWQqKSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGZkLCAwKTsKLS0gICAgICAgIGlmIChtID09ICh2b2lkICopLTEpIHsgIC8qIGFrYSBNQVBfRkFJTEVEICovCi0tICAgICAgICAgICAgcmV0dXJuIDI7Ci0tICAgICAgICB9Ci0tICAgICAgICBpZiAobXVubWFwKG0sIHNpemVvZih2b2lkKikpIDwgMCkgewotLSAgICAgICAgICAgIHJldHVybiAzOwotLSAgICAgICAgfQotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIH1dLCBbXSwgW2FjX2N2X2ZpbGVfX2Rldl96ZXJvPW5vXSwgW2FjX2N2X2ZpbGVfX2Rldl96ZXJvPW5vXSkKLS0KLS0gICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZmlsZV9fZGV2X3plcm8pCi0tZmkKLSAKLSAjIE5vdyB3ZSBkZXRlcm1pbmUgd2hpY2ggb25lIGlzIG91ciBhbm9ueW1vdXMgc2htZW0gcHJlZmVyZW5jZS4KLSBoYXZlc2htZ2V0YW5vbj0iMCIKLUBAIC0xNTE4LDEzICsxNDg1LDE0IEBAIGVsc2UKLSAgICAgYmlnZW5kaWFuPTAKLSBmaQotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3Vpby5oPl0sc3RydWN0IGlvdmVjLDApCi0taWYgdGVzdCAiJGFjX2N2X3NpemVvZl9zdHJ1Y3RfaW92ZWMiID0gIjAiOyB0aGVuCi0tICAgIGhhdmVfaW92ZWM9MAotLWVsc2UKLS0gICAgaGF2ZV9pb3ZlYz0xCi0tZmkKLSsjQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyMjaW5jbHVkZSA8c3lzL3Vpby5oPl0sc3RydWN0IGlvdmVjLDApCi0rI2lmIHRlc3QgIiRhY19jdl9zaXplb2Zfc3RydWN0X2lvdmVjIiA9ICIwIjsgdGhlbgotKyMgICAgaGF2ZV9pb3ZlYz0wCi0rI2Vsc2UKLSsjICAgIGhhdmVfaW92ZWM9MQotKyNmaQotK2hhdmVfaW92ZWM9MQotIAotIEFDX1NVQlNUKHZvaWRwX3NpemUpCi0gQUNfU1VCU1Qoc2hvcnRfdmFsdWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci91cGdyYWRlLWFuZC1maXgtMS41LjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci91cGdyYWRlLWFuZC1maXgtMS41LjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NDk5ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotTWFrZWZpbGUuaW46IGZpeCBjcm9zcyBjb21waWxpbmcgZmFpbGVkCi0KLVRoZSB0b29scy9nZW5fdGVzdF9jaGFyIHdhcyBpbnZva2VkIGF0IGJ1aWxkIHRpbWUsCi1hbmQgaXQgZGlkbid0IHdvcmsgZm9yIHRoZSBjcm9zcyBjb21waWxpbmcsIHNvIHdlCi1jb21waWxlIGl0IHdpdGggJEJVSUxEX0NDLgotCi1SZW1vdmUgdGhlICd0b29scycgZGlyIGNyZWF0aW9uLCBpdCBhbHdheXMgZXhpc3RlZC4KLUFuZCBpdCBjYXVzZWQgZ2VuX3Rlc3RfY2hhciB1bmV4cGVjdGVkIHJlYnVpbHQgYXQKLWRvX2luc3RhbGwgdGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAxMCArKy0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IGEyYTUxOTQuLjVmZTAyOGYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC00Niw3ICs0Niw2IEBAIExUX1ZFUlNJT04gPSBATFRfVkVSU0lPTkAKLSAKLSBDTEVBTl9UQVJHRVRTID0gYXByLWNvbmZpZy5vdXQgYXByLmV4cCBleHBvcnRzLmMgZXhwb3J0X3ZhcnMuYyAubWFrZS5kaXJzIFwKLSAJYnVpbGQvYXByX3J1bGVzLm91dCB0b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEAgXAotLQl0b29scy9nZW5fdGVzdF9jaGFyLm8gdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbyBcCi0gCWluY2x1ZGUvcHJpdmF0ZS9hcHJfZXNjYXBlX3Rlc3RfY2hhci5oCi0gRElTVENMRUFOX1RBUkdFVFMgPSBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBjb25maWcuc3RhdHVzIFwKLSAJaW5jbHVkZS9hcHIuaCBpbmNsdWRlL2FyY2gvdW5peC9hcHJfcHJpdmF0ZS5oIFwKLUBAIC0xMjksMTMgKzEyOCw4IEBAIGNoZWNrOiAkKFRBUkdFVF9MSUIpCi0gZXRhZ3M6Ci0gCWV0YWdzIGBmaW5kIC4gLW5hbWUgJyouW2NoXSdgCi0gCi0tT0JKRUNUU19nZW5fdGVzdF9jaGFyID0gdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbyAkKExPQ0FMX0xJQlMpCi0tdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbzogdG9vbHMvZ2VuX3Rlc3RfY2hhci5jCi0tCSQoQVBSX01LRElSKSB0b29scwotLQkkKExUX0NPTVBJTEUpCi0tCi0tdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRAOiAkKE9CSkVDVFNfZ2VuX3Rlc3RfY2hhcikKLS0JJChMSU5LX1BST0cpICQoT0JKRUNUU19nZW5fdGVzdF9jaGFyKSAkKEFMTF9MSUJTKQotK3Rvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQDogdG9vbHMvZ2VuX3Rlc3RfY2hhci5jCi0rCSQoQlVJTERfQ0MpICQoQ0ZMQUdTX0ZPUl9CVUlMRCkgJDwgLW8gJEAKLSAKLSBpbmNsdWRlL3ByaXZhdGUvYXByX2VzY2FwZV90ZXN0X2NoYXIuaDogdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRACi0gCSQoQVBSX01LRElSKSBpbmNsdWRlL3ByaXZhdGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZWVkNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBcGFjaGUgUG9ydGFibGUgUnVudGltZSAoQVBSKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2Fwci5hcGFjaGUub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAidXRpbC1saW51eCIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGRmZDRjZDIxNjgyOGM4Y2FlNWRlNWExMmYzODQ0YzggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9hcHJfbGliLmg7ZW5kbGluZT0xNzttZDU9ZWU0MmZhNzU3NWRjNDA1ODBhOWUwMWMxYjc1ZmFlOTYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9L2Fwci8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmVfZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xlYW51cC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3VwZ3JhZGUtYW5kLWZpeC0xLjUuMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1leHBsaWNpdGx5LWxpbmstbGliYXByLWFnYWluc3QtcGh0cmVhZC10by1tYWtlLWdvbGQtLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImU4MWE4NTE5NjdjNzliNWNlOWJmYmM5MDllNGJmNzM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5MTA5Y2VhMzc3YmFiMDAyOGJiYTE5YTkyYjViMGU4OTYwM2RmOWVhYjA1YzBmN2RiZDRkZDgzZDQ4ZGNlYmQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0Ci0KLU9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKLQotIyBBZGRlZCB0byBmaXggc29tZSBpc3N1ZXMgd2l0aCBjbWFrZS4gUmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL2Jtd2Nhcml0L21ldGEtcm9zL2lzc3Vlcy82OCNpc3N1ZWNvbW1lbnQtMTk4OTY5MjgKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhcHJfY3ZfbXV0ZXhfcmVjdXJzaXZlPXllcyIKLQotIyBBbHNvIHN1cHByZXNzIHRyeWluZyB0byB1c2Ugc2N0cC4KLSMKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm8gYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD1ubyIKLQotIyBPdGhlcndpc2UgbGlidG9vbCBmYWlscyB0byBjb21waWxlIGFwci11dGlscwotIyB4ODZfNjQtbGludXgtbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCi0jIHg4Nl82NC1saW51eC1saWJ0b29sOiAgIGVycm9yOiBzcGVjaWZ5IGEgdGFnIHdpdGggJy0tdGFnJwotQ0NBQ0hFID0gIiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIEF2b2lkIGFic29sdXRlIHBhdGhzIGZvciBncmVwIHNpbmNlIGl0IGNhdXNlcyBmYWlsdXJlcwotCSMgd2hlbiB1c2luZyBzc3RhdGUgYmV0d2VlbiBkaWZmZXJlbnQgaG9zdHMgd2l0aCBkaWZmZXJlbnQKLQkjIGluc3RhbGwgcGF0aHMgZm9yIGdyZXAuCi0JZXhwb3J0IEdSRVA9ImdyZXAiCi0KLQljZCAke1N9Ci0JLi9idWlsZGNvbmYKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXByLmV4cCAke2RhdGFkaXJ9L2J1aWxkLTEvKiIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKLQotI2ZvciBzb21lIHJlYXNvbiwgYnVpbGQvbGlidG9vbC5tNCBoYW5kbGVkIGJ5IGJ1aWxkY29uZiBzdGlsbCBiZSBvdmVyd3JpdHRlbgotI3doZW4gYXV0b2NvbmYsIHNvIGhhbmRsZSBpdCBhZ2Fpbi4KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0Jc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2xpYnRvb2wubTQKLQlzZWQgLWkgLWUgJ3MvTElCVE9PTD1cKC4qXCl0b3BfYnVpbGQvTElCVE9PTD1cMWFwcl9idWlsZC8nICR7U30vYnVpbGQvYXByX3J1bGVzLm1rCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBhcHIuaAotCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXByCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgJHtEfSR7ZGF0YWRpcn0vYnVpbGQtMS9hcHJfcnVsZXMubWsKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotCSAgICAgICAtZSAncyxBUFJfU09VUkNFX0RJUj0uKixBUFJfU09VUkNFX0RJUj0sZycgXAotCSAgICAgICAtZSAncyxBUFJfQlVJTERfRElSPS4qLEFQUl9CVUlMRF9ESVI9LGcnICR7RH0ke2JpbmRpcn0vYXByLTEtY29uZmlnCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHJfcnVsZXMubWsgbGlidG9vbCIKLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJhcHJfc3lzcm9vdF9wcmVwcm9jZXNzIgotCi1hcHJfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKLQlkPSR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vYXByCi0JaW5zdGFsbCAtZCAkZC8KLQljcCAke1N9L2J1aWxkL2Fwcl9ydWxlcy5tayAkZC8KLQlzZWQgLWkgcyxhcHJfYnVpbGRkaXI9LiosYXByX2J1aWxkZGlyPSxnICRkL2Fwcl9ydWxlcy5tawotCXNlZCAtaSBzLGFwcl9idWlsZGVycz0uKixhcHJfYnVpbGRlcnM9LGcgJGQvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIHMsTElCVE9PTD0uKixMSUJUT09MPSR7SE9TVF9TWVN9LWxpYnRvb2wsZyAkZC9hcHJfcnVsZXMubWsKLQlzZWQgLWkgcyxcJFwoYXByX2J1aWxkZXJzXCksJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci8sZyAkZC9hcHJfcnVsZXMubWsKLQljcCAke1N9L2J1aWxkL21rZGlyLnNoICRkLwotCWNwICR7U30vYnVpbGQvbWFrZV9leHBvcnRzLmF3ayAkZC8KLQljcCAke1N9L2J1aWxkL21ha2VfdmFyX2V4cG9ydC5hd2sgJGQvCi0JY3AgJHtTfS8ke0hPU1RfU1lTfS1saWJ0b29sICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vYnVpbGQtMS9saWJ0b29sCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JY2QgJHtTfS90ZXN0Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCW1rZGlyIC1wICR0Ly5saWJzCi0JY3AgLXIgJHtTfS90ZXN0L2RhdGEgJHQvCi0JY3AgLXIgJHtTfS90ZXN0Ly5saWJzLyouc28gJHQvLmxpYnMvCi0JY3AgJHtTfS90ZXN0L3Byb2NfY2hpbGQgJHQvCi0JY3AgJHtTfS90ZXN0L3JlYWRjaGlsZCAkdC8KLQljcCAke1N9L3Rlc3Qvc29ja2NoaWxkICR0LwotCWNwICR7U30vdGVzdC9zb2NrcGVyZiAkdC8KLQljcCAke1N9L3Rlc3QvdGVzdGFsbCAkdC8KLQljcCAke1N9L3Rlc3QvdHJ5cmVhZCAkdC8KLX0KLQotZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9iYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjYuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2I4Nzg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjMuYmIKQEAgLTAsMCArMSwxMTcgQEAKK1NVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gInV0aWwtbGludXgiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRkZmQ0Y2QyMTY4MjhjOGNhZTVkZTVhMTJmMzg0NGM4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXByX2xpYi5oO2VuZGxpbmU9MTc7bWQ1PWVlNDJmYTc1NzVkYzQwNTgwYTllMDFjMWI3NWZhZTk2IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtYnVpbGRjaGVjay5zaC1pbXByb3ZlLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItYXByLVJlbW92ZS13b3JrZGlyLXBhdGgtcmVmZXJlbmNlcy1mcm9tLWluc3RhbGxlZC1hcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLU1ha2VmaWxlLmluLWNvbmZpZ3VyZS5pbi1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWNvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMmYyYTM0OTQ4M2FkNmYxMmRiNDliYTAxZmJmZGJmYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzFmMDZkMTZkN2FhYmQwOTdmYTk5MmEzM2VlYzJiNmFmMzk2MmY5M2U2ZDU3MGE5YmQ0ZDg1ZTk1OTkzMTcyIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX2hlYWRlciBwdGVzdAorCitPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCisKKyMgQWRkZWQgdG8gZml4IHNvbWUgaXNzdWVzIHdpdGggY21ha2UuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ibXdjYXJpdC9tZXRhLXJvcy9pc3N1ZXMvNjgjaXNzdWVjb21tZW50LTE5ODk2OTI4CitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYXByX2N2X211dGV4X3JlY3Vyc2l2ZT15ZXMiCisKKyMgQWxzbyBzdXBwcmVzcyB0cnlpbmcgdG8gdXNlIHNjdHAuCisjCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vIGFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm8iCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9zaXplb2Zfc3RydWN0X2lvdmVjPXllcyIKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9maWxlX19kZXZfemVybz15ZXMiCisKKyMgT3RoZXJ3aXNlIGxpYnRvb2wgZmFpbHMgdG8gY29tcGlsZSBhcHItdXRpbHMKKyMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgorIyB4ODZfNjQtbGludXgtbGlidG9vbDogICBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKK0NDQUNIRSA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKKwkjIHdoZW4gdXNpbmcgc3N0YXRlIGJldHdlZW4gZGlmZmVyZW50IGhvc3RzIHdpdGggZGlmZmVyZW50CisJIyBpbnN0YWxsIHBhdGhzIGZvciBncmVwLgorCWV4cG9ydCBHUkVQPSJncmVwIgorCisJY2QgJHtTfQorCWxpYnRvb2w9JyR7SE9TVF9TWVN9LWxpYnRvb2wnIC4vYnVpbGRjb25mCit9CisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Fwci5leHAgJHtkYXRhZGlyfS9idWlsZC0xLyoiCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCisKKyNmb3Igc29tZSByZWFzb24sIGJ1aWxkL2xpYnRvb2wubTQgaGFuZGxlZCBieSBidWlsZGNvbmYgc3RpbGwgYmUgb3ZlcndyaXR0ZW4KKyN3aGVuIGF1dG9jb25mLCBzbyBoYW5kbGUgaXQgYWdhaW4uCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9saWJ0b29sLm00CisJc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2Fwcl9ydWxlcy5taworfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgYXByLmgKKwlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJc2VkIC1pIC1lICdzLCR7REVCVUdfUFJFRklYX01BUH0sLGcnIFwKKwkgICAgICAgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgJHtEfSR7ZGF0YWRpcn0vYnVpbGQtMS9hcHJfcnVsZXMubWsKKwlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAorCSAgICAgICAtZSAncyxBUFJfU09VUkNFX0RJUj0uKixBUFJfU09VUkNFX0RJUj0sZycgXAorCSAgICAgICAtZSAncyxBUFJfQlVJTERfRElSPS4qLEFQUl9CVUlMRF9ESVI9LGcnICR7RH0ke2JpbmRpcn0vYXByLTEtY29uZmlnCit9CisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHJfcnVsZXMubWsgbGlidG9vbCIKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJhcHJfc3lzcm9vdF9wcmVwcm9jZXNzIgorCithcHJfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKKwlkPSR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vYXByCisJaW5zdGFsbCAtZCAkZC8KKwljcCAke1N9L2J1aWxkL2Fwcl9ydWxlcy5tayAkZC8KKwlzZWQgLWkgcyxhcHJfYnVpbGRkaXI9LiosYXByX2J1aWxkZGlyPSxnICRkL2Fwcl9ydWxlcy5taworCXNlZCAtaSBzLGFwcl9idWlsZGVycz0uKixhcHJfYnVpbGRlcnM9LGcgJGQvYXByX3J1bGVzLm1rCisJc2VkIC1pIHMsTElCVE9PTD0uKixMSUJUT09MPSR7SE9TVF9TWVN9LWxpYnRvb2wsZyAkZC9hcHJfcnVsZXMubWsKKwlzZWQgLWkgcyxcJFwoYXByX2J1aWxkZXJzXCksJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci8sZyAkZC9hcHJfcnVsZXMubWsKKwljcCAke1N9L2J1aWxkL21rZGlyLnNoICRkLworCWNwICR7U30vYnVpbGQvbWFrZV9leHBvcnRzLmF3ayAkZC8KKwljcCAke1N9L2J1aWxkL21ha2VfdmFyX2V4cG9ydC5hd2sgJGQvCisJY3AgJHtTfS8ke0hPU1RfU1lTfS1saWJ0b29sICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vYnVpbGQtMS9saWJ0b29sCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJY2QgJHtTfS90ZXN0CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCW1rZGlyIC1wICR0Ly5saWJzCisJY3AgLXIgJHtTfS90ZXN0L2RhdGEgJHQvCisJY3AgLXIgJHtTfS90ZXN0Ly5saWJzLyouc28gJHQvLmxpYnMvCisJY3AgJHtTfS90ZXN0L3Byb2NfY2hpbGQgJHQvCisJY3AgJHtTfS90ZXN0L3JlYWRjaGlsZCAkdC8KKwljcCAke1N9L3Rlc3Qvc29ja2NoaWxkICR0LworCWNwICR7U30vdGVzdC9zb2NrcGVyZiAkdC8KKwljcCAke1N9L3Rlc3QvdGVzdGFsbCAkdC8KKwljcCAke1N9L3Rlc3QvdHJ5cmVhZCAkdC8KK30KKworZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9iYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEwZTQxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQVQtU1BJIDIgVG9vbGtpdCBCcmlkZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjc5Mzg4ZmJjNGRjN2YyNzM5NDU1NmRkMzg5YWViNTk0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwZGM5MGFjNGY3NGI4ZmZlOTZhOTM2M2MyNTIwOGE0NDNiMzgxYmFjZWNmZWZlYTZkZTU0OWYyMGVkNjk1N2QiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgYXRrIGF0LXNwaTItY29yZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotIyBUaGUgYXQtc3BpMi1jb3JlIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1nbm9tZSAke1BOfS1ndGsyIgotCi1GSUxFU18ke1BOfS1nbm9tZSA9ICIke2xpYmRpcn0vZ25vbWUtc2V0dGluZ3MtZGFlbW9uLTMuMC9ndGstbW9kdWxlcyIKLUZJTEVTXyR7UE59LWd0azIgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvbW9kdWxlcy9saWJhdGstYnJpZGdlLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTdiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZWVjNmNlYWQzMzUwZGNhNDhhMjM1MjcxYzEwNWIzZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNGYwYzI3YjYxZGJmZmJhN2E1YjViYTJmZjg4YzhjZWUxMGZmOGRhYzc3NGZhNWI3OWNlOTA2ODUzNjIzYjc1IgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgVGhlIGF0LXNwaTItY29yZSByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKKworRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCitGSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaAppbmRleCA0MTAzZWFhLi4xZjhjOWYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMmY0N2M5NzVlYmU1MmI2OTE2YTQ1YWRlMDIzYWUzYmFjMjFiYjBlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmEzNzY3NjJiOTI0MDRiOWUzYzQzMDA1NGI4YzMzNDFjYTBmZGQ4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDIxIEp1biAyMDE2IDE2OjAwOjAyICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBBZGQgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcgpAQCAtOCwyOSArOCwzMCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzkxMV0KIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQogIGJ1cy9NYWtlZmlsZS5hbSB8IDIgKy0KLSBjb25maWd1cmUuYWMgICAgfCA3ICsrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNvbmZpZ3VyZS5hYyAgICB8IDkgKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9idXMvTWFrZWZpbGUuYW0gYi9idXMvTWFrZWZpbGUuYW0KLWluZGV4IGIxODllMDIuLjUyZmJiMGIgMTAwNjQ0CitpbmRleCA2ODhmODJhLi4xMGNkZTYyIDEwMDY0NAogLS0tIGEvYnVzL01ha2VmaWxlLmFtCiArKysgYi9idXMvTWFrZWZpbGUuYW0KLUBAIC0yNiw3ICsyNiw3IEBAIGRidXNzZXJ2aWNlX0RBVEEgPSBvcmcuYTExeS5CdXMuc2VydmljZQotIG9yZy5hMTF5LkJ1cy5zZXJ2aWNlOiBvcmcuYTExeS5CdXMuc2VydmljZS5pbgotIAlzZWQgLWUgJChzdWJzdGl0dXRpb25zKSAkPCA+ICRALnRtcCAmJiBtdiAkQC50bXAgJEAKK0BAIC0yOSw3ICsyOSw3IEBAIG9yZy5hMTF5LkJ1cy5zZXJ2aWNlOiBvcmcuYTExeS5CdXMuc2VydmljZS5pbgorIEVYVFJBX0RJU1QgKz0gb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KKyBDTEVBTkZJTEVTICs9IG9yZy5hMTF5LkJ1cy5zZXJ2aWNlCiAgCiAtc3lzdGVtZF91c2VyZGlyID0gJChwcmVmaXgpL2xpYi9zeXN0ZW1kL3VzZXIKICtzeXN0ZW1kX3VzZXJkaXIgPSAkKHN5c3RlbWR1c2VydW5pdGRpcikKICBzeXN0ZW1kX3VzZXJfREFUQSA9IGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlCiAgYXQtc3BpLWRidXMtYnVzLnNlcnZpY2U6IGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlLmluIE1ha2VmaWxlCi0gCXNlZCAtZSAkKHN1YnN0aXR1dGlvbnMpICQ8ID4gJEAudG1wICYmIG12ICRALnRtcCAkQAorIAkkKEFNX1ZfR0VOKSAkKFNFRCkgLWUgJChzdWJzdGl0dXRpb25zKSAkPCA+ICRALnRtcCAmJiBtdiAkQC50bXAgJEAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGY5MDYxYzIuLjJiOGVlZWQgMTAwNjQ0CitpbmRleCA4YzRmY2EyLi4xNDE1Y2NhIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xODMsNiArMTgzLDEzIEBAIGVsc2UKK0BAIC0xNDYsNiArMTQ2LDE1IEBAIGVsc2UKICBmaQogIEFDX1NVQlNUKERCVVNfU0VSVklDRVNfRElSKQogIApAQCAtNDEsOSArNDIsMTEgQEAKICsgICAgICAgICAgICBbd2l0aF9zeXN0ZW1kdXNlcnVuaXRkaXI9JCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXN5c3RlbWR1c2VydW5pdGRpciBzeXN0ZW1kKV0pCiArQUNfU1VCU1QoW3N5c3RlbWR1c2VydW5pdGRpcl0sIFskd2l0aF9zeXN0ZW1kdXNlcnVuaXRkaXJdKQogKwotIEFDX1BBVEhfUFJPRyhHTElCX01LRU5VTVMsIGdsaWItbWtlbnVtcykKKytBQ19QQVRIX1BST0coR0xJQl9NS0VOVU1TLCBnbGliLW1rZW51bXMpCisrCisgR09CSkVDVF9JTlRST1NQRUNUSU9OX0NIRUNLKFsxLjMyLjBdKQogIAotIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDSyhbMC45LjZdKQorIEFDX1NVQlNUKExJQlRPT0xfRVhQT1JUX09QVElPTlMpCiAtLSAKLTIuMS40CisyLjE0LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YTUxZDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gYzMyMDc5OWM5NDFkNDJhOWI3ZTM1MTgwNTM1OTY5NGVhM2IzNmQyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDUgQXByIDIwMTUgMDk6MDg6MzggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbmxzLm00OiBUYWtlIGl0IGZyb20gZ2V0dGV4dC0wLjE1Ci0KLUl0IG90aGVyd2lzZSBleHBlY3RzIGdldHRleHQgdG8gcHJvdmlkZSBpdC4gTGV0cyBnbyBpbmRlcGVuZGVudAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIG00L25scy5tNCB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IG00L25scy5tNAotCi1kaWZmIC0tZ2l0IGEvbTQvbmxzLm00IGIvbTQvbmxzLm00Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmM4ZmU2OQotLS0tIC9kZXYvbnVsbAotKysrIGIvbTQvbmxzLm00Ci1AQCAtMCwwICsxLDMwIEBACi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAzLCAyMDA1LTIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0rZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi0rZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLStkbmwKLStkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgotK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKLStkbmwgZnVuY3Rpb25hbGl0eS4KLStkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLStkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rZG5sIFRoZXkgYXJlIG5vdCBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgVWxyaWNoIERyZXBwZXIgZHJlcHBlckBjeWdudXMuY29tLCAxOTk1LTIwMDAuCi0rZG5sIEJydW5vIEhhaWJsZSBoYWlibGVAY2xpc3AuY29ucy5vcmcsIDIwMDAtMjAwMy4KLSsKLStBQ19QUkVSRVEoMi41MCkKLSsKLStBQ19ERUZVTihbQU1fTkxTXSwKLStbCi0rQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIE5MUyBpcyByZXF1ZXN0ZWRdKQotK2RubCBEZWZhdWx0IGlzIGVuYWJsZWQgTkxTCi0rQUNfQVJHX0VOQUJMRShubHMsCi0rWyAtLWRpc2FibGUtbmxzIGRvIG5vdCB1c2UgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnRdLAotK1VTRV9OTFM9JGVuYWJsZXZhbCwgVVNFX05MUz15ZXMpCi0rQUNfTVNHX1JFU1VMVCgkVVNFX05MUykKLStBQ19TVUJTVChVU0VfTkxTKQotK10pCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY4N2FlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MWQwYTQ3MWU2OTMyOTI5MzRhNzNmMjg4ZWJmZjM1YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTkwZDA2NGI5MzdhYWNmZTc5YTk2MjMyYWM3ZTYzZDI4ZDcxNmU4NWJkOWZmNDMzM2Y4NjUzMDVhOTU5YjViIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgdmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXhldmllIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy1kYWVtb25kaXI9JHtiaW5kaXJ9IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAotICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjFlZTNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yNi4yLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiQXNzaXN0aXZlIFRlY2hub2xvZ3kgU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2UgKGRidXMgY29yZSkiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGEwNDJlNGM4MDFmZGI3OTM3ODhiNzQ5ZWFiMjE0ODUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzgwZTBjZGY1ZTNkNzEzNDAwMzE1YjYzYzdkZWZmYTU2MTAzMmE2YzM3Mjg5MjExZDhhZmNmYWEyNjdjMjYxNSIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy1kYWVtb25kaXI9JHtiaW5kaXJ9IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAorICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYyMzE5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjM3NDdhODAwODlkZmEzYzBiYmNmMjFhZGZmZjk5NjhiIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmIyZGFhOWE4MDhjNzNhN2E3OWQyOTgzZjMzM2UwYmE3NGJlNDJmYzUxZTNiYTFmYWYyNTUxYTYzNjQ4N2E0OSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ2xpYnRlc3QgXAotICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NWI1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI2LjEuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2xpYnMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3Y2RkY2MzMTNiOWEzZWZkMTliMmRkZjA3OWJhNjhmNSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImVmMDBmZjZiODM4NTFkZGRjOGRiMzhiNGQ5ZmFlZmZiOTk1NzJiYTE1MGIwNjY0ZWUwMmU0NmYwMTVlYTk3Y2IiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtaW5zdWZmaWNpZW50LXF1b3Rpbmctb2YucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtaW5zdWZmaWNpZW50LXF1b3Rpbmctb2YucGF0Y2gKaW5kZXggMGIzNTBiZS4uZjM5MjQ2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaApAQCAtMzUsNjEgKzM1LDU2IEBACiAKIFNpZ25lZC1vZmYtYnk6IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KIFNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0L2NwLnRlc3QgICAgICAgICAgICB8IDIgKy0KLSB0ZXN0L21pc2MudGVzdCAgICAgICAgICB8IDYgKysrLS0tCi0gdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QgfCA2ICsrKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvdGVzdC9jcC50ZXN0IGIvdGVzdC9jcC50ZXN0Ci1pbmRleCAwODY3ZjYzLi5hOTI3MTk1IDEwMDY0NAotLS0tIGEvdGVzdC9jcC50ZXN0Ci0rKysgYi90ZXN0L2NwLnRlc3QKLUBAIC05LDcgKzksNyBAQCBUaGUgY3AgdXRpbGl0eSBzaG91bGQgb25seSBjb3B5IEFDTHMgaWYgYC1wJyBpcyBnaXZlbi4KK0luZGV4OiBhY2wtMi4yLjUyL3Rlc3QvY3AudGVzdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFjbC0yLjIuNTIub3JpZy90ZXN0L2NwLnRlc3QKKysrKyBhY2wtMi4yLjUyL3Rlc3QvY3AudGVzdAorQEAgLTksNyArOSw3IEBAIFRoZSBjcCB1dGlsaXR5IHNob3VsZCBvbmx5IGNvcHkgQUNMcyBpZgogIAk+IC1ydy1ydy1yLS0rCi0KKyAJCiAgCSQgY3AgZiBnCiAtCSQgbHMgLWwgZyB8IGF3ayAtLSAneyBwcmludCAkMSB9JyB8IHNlZCAncy9cLiQvL2cnCiArCSQgbHMgLWwgZyB8IGF3ayAtLSAneyBwcmludCAkMSB9JyB8IHNlZCAncy9cXC4kLy9nJwogIAk+IC1ydy1yLS1yLS0KLQorIAkKICAJJCBybSBnCi1kaWZmIC0tZ2l0IGEvdGVzdC9taXNjLnRlc3QgYi90ZXN0L21pc2MudGVzdAotaW5kZXggNmU5ODA1My4uMjkzNzJiNyAxMDA2NDQKLS0tLSBhL3Rlc3QvbWlzYy50ZXN0Ci0rKysgYi90ZXN0L21pc2MudGVzdAorSW5kZXg6IGFjbC0yLjIuNTIvdGVzdC9taXNjLnRlc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhY2wtMi4yLjUyLm9yaWcvdGVzdC9taXNjLnRlc3QKKysrKyBhY2wtMi4yLjUyL3Rlc3QvbWlzYy50ZXN0CiBAQCAtMjU0LDcgKzI1NCw3IEBAIEFkZCBzb21lIHVzZXJzIGFuZCBncm91cHMKICBTeW1saW5rIGluIGRpcmVjdG9yeSB3aXRoIGRlZmF1bHQgQUNMPwotCisgCSAKICAJJCBsbiAtcyBkIGQvbAogLQkkIGxzIC1kbCBkL2wgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKICsJJCBscyAtZGwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4kLy9nJwogIAk+IGxyd3hyd3hyd3gKLQorIAogIAkkIGxzIC1kbCAtTCBkL2wgfCBhd2sgJ3twcmludCAkMX0nCiBAQCAtMzQzLDcgKzM0Myw3IEBAIFJlbW92ZSB0aGUgZGVmYXVsdCBBQ0wKICBSZXNldCB0byBiYXNlIGVudHJpZXMKLQorIAkgCiAgCSQgc2V0ZmFjbCAtYiBkCiAtCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKICsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKICAJPiBkcnd4ci14LS0tCi0KKyAKICAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAogQEAgLTM1NSw3ICszNTUsNyBAQCBSZXNldCB0byBiYXNlIGVudHJpZXMKICBOb3csIGNobW9kIHNob3VsZCBjaGFuZ2UgdGhlIGdyb3VwX29iaiBlbnRyeQotCisgCSAKICAJJCBjaG1vZCA3NzUgZAogLQkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCiArCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCiAgCT4gZHJ3eHJ3eHIteAotCisgCQogIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi1kaWZmIC0tZ2l0IGEvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QgYi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotaW5kZXggZGUyMTM0MC4uNTg5OWIwYSAxMDA2NDQKLS0tLSBhL3Rlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0Ci0rKysgYi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotQEAgLTEzLDEwICsxMywxMCBAQCBFbnN1cmUgc2V0dGluZyBvZiBTVUlEL1NHSUQvc3RpY2t5IHZpYSAtLXJlc3RvcmUgd29ya3MKK0luZGV4OiBhY2wtMi4yLjUyL3Rlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYWNsLTIuMi41Mi5vcmlnL3Rlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0CisrKysgYWNsLTIuMi41Mi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAorQEAgLTEzLDEwICsxMywxMCBAQCBFbnN1cmUgc2V0dGluZyBvZiBTVUlEL1NHSUQvc3RpY2t5IHZpYSAtCiAgCSQgdG91Y2ggZC9nCiAgCSQgdG91Y2ggZC91CiAgCSQgc2V0ZmFjbCAtLXJlc3RvcmUgZC5hY2wKQEAgLTEwMyw2ICs5OCwzIEBACiArCSQgbHMgLWRsIGQvZyB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKICAJPiAtcnctci1Tci0tCiAgCSQgcm0gLVJmIGQKLS0tCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYwppbmRleCBlNmY0YzcyLi4xMzM5ZWNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKQEAgLTE3LDcgKzE3LDcgQEAKIEVYVFJBX09FTUFLRSA9ICJQS0dfTElCX0RJUj0ke2Jhc2VfbGliZGlyfSBQS0dfREVWTElCX0RJUj0ke2xpYmRpcn0iCiAKIGRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWxpYiBpbnN0YWxsLWRldiBESVNUX1JPT1Q9IiR7RH0iCisJb2VfcnVubWFrZSBpbnN0YWxsIGluc3RhbGwtbGliIGluc3RhbGwtZGV2IERJU1RfUk9PVD0iJHtEfSIgWklQPSJnemlwIC1uIgogfQogCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuNC5iYgppbmRleCA3MGI2ZTkxLi45ZDgxOTFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuNC5iYgpAQCAtOSwxMCArOSwxMiBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW50ZWwvYm1hcC10b29scy5naXQiCi1TUkNSRVYgPSAiOWRhZDcyNDEwNGRmMjY1NDQyMjI2OTcyYTFlMzEwODEzZjlmZmNiYSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0udGd6IgogCi1TID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDX1VSSVttZDVzdW1dID0gIjg4MzQyMDE4MzYxMWFhMTM3Y2JhZjY4YTkxZWYwZDdlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwNjQ4OTEyNzBjMTgwYzE5MGY0MTkyNWIwZjZmYjljZWNhYzMwNTZmMTE2OGQyNTkyZGJlOTBlNWYyMjZjMGEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzIgogCiBSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLW1tYXAgcHl0aG9uMy1zZXR1cHRvb2xzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS42NC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYwMTNmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS42NC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKLQotU1VNTUFSWSA9ICJQb3J0YWJsZSBCb29zdC5KYW0gYnVpbGQgdG9vbCBmb3IgYm9vc3QiCi1TRUNUSU9OID0gImRldmVsIgotCi1pbmhlcml0IG5hdGl2ZQotCi1TUkNfVVJJICs9ICJmaWxlOi8vYmphbS1uYXRpdmUtYnVpbGQtYmphbS5kZWJ1Zy5wYXRjaCIKLQotZG9fY29tcGlsZSgpIHsKLSAgICAuL2Jvb3RzdHJhcC5zaCAtLXdpdGgtdG9vbHNldD1nY2MKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgIyBpbnN0YWxsIHVuc3RyaXBwZWQgdmVyc2lvbiBmb3IgYmphbQotICAgIGluc3RhbGwgLWMgLW0gNzU1IGJqYW0uZGVidWcgJHtEfSR7YmluZGlyfS9iamFtCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS42Ni4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM4NmEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjYuMC5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIGJvb3N0LSR7UFZ9LmluYworCitTVU1NQVJZID0gIlBvcnRhYmxlIEJvb3N0LkphbSBidWlsZCB0b29sIGZvciBib29zdCIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK2luaGVyaXQgbmF0aXZlCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9iamFtLW5hdGl2ZS1idWlsZC1iamFtLmRlYnVnLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2giCisKK2RvX2NvbXBpbGUoKSB7CisgICAgLi9ib290c3RyYXAuc2ggLS13aXRoLXRvb2xzZXQ9Z2NjCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICMgaW5zdGFsbCB1bnN0cmlwcGVkIHZlcnNpb24gZm9yIGJqYW0KKyAgICBpbnN0YWxsIC1jIC1tIDc1NSBiamFtLmRlYnVnICR7RH0ke2JpbmRpcn0vYmphbQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42NC4wLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM3YjFhOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42NC4wLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQotIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAotIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCi0jIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKLSMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKLUxJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgotCi1CT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgotQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgotQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjkzZWVjY2UyYWJlZDlkMjQ0MmM5Njc2OTE0NzA5MzQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiY2M1Y2FhY2U5N2JhYTk0ODkzMWQ3MTJlYTVmMzcwMzhkYmIxYzVkODliNDNhZDRkZWY0ZWQ3Y2I2ODMzMzIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgotCi1TID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY2LjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjYuMC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUyYjg2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY2LjAuaW5jCkBAIC0wLDAgKzEsMjEgQEAKKyMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQorIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAorIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCisjIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKKyMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKK0xJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgorCitCT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgorQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgorQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImIyZGZiZDZjNzE3YmU0YTdiYjJkODgwMThlYWNjZjc1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3MjE4MTgyNTNlNmEwOTg5NTgzMTkyZjk2NzgyYzRhOThlYjYyMDQ5NjUzMTZkZjlmNWFkNzU4MTkyMjVjYTkiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgorCitTID0gIiR7V09SS0RJUn0vJHtCT09TVF9QfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCmluZGV4IDQxZmM5MGYuLjA0NjFlYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwpAQCAtMTM1LDI5ICsxMzUsNyBAQAogCiAjIHVzZSBQQVJBTExFTF9NQUtFIHRvIHNwZWVkIHVwIHRoZSBidWlsZCwgYnV0IGxpbWl0IGl0IGJ5IC1qIDY0LCBncmVhdGVyIHBhcmFsbGVsaXNtIGNhdXNlcyBiamFtIHRvIHNlZ2ZhdWx0IG9yIHRvIGlnbm9yZSAtagogIyBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvNzYzNAotZGVmIGdldF9ib29zdF9wYXJhbGxlbF9tYWtlKGQpOgotICAgIHBtID0gZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKQotICAgIGlmIHBtOgotICAgICAgICAjIGxvb2sgZm9yICctaicgYW5kIHRocm93IG90aGVyIG9wdGlvbnMgKGUuZy4gJy1sJykgYXdheQotICAgICAgICAjIGJlY2F1c2UgdGhleSBtaWdodCBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGluIGJqYW0KLSAgICAgICAgcG0gPSBwbS5zcGxpdCgpCi0gICAgICAgIHdoaWxlIHBtOgotICAgICAgICAgICAgdiA9IE5vbmUKLSAgICAgICAgICAgIG9wdCA9IHBtLnBvcCgwKQotICAgICAgICAgICAgaWYgb3B0ID09ICctaic6Ci0gICAgICAgICAgICAgICAgdiA9IHBtLnBvcCgwKQotICAgICAgICAgICAgZWxpZiBvcHQuc3RhcnRzd2l0aCgnLWonKToKLSAgICAgICAgICAgICAgICB2ID0gb3B0WzI6XS5zdHJpcCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHYgPSBOb25lCi0KLSAgICAgICAgICAgIGlmIHY6Ci0gICAgICAgICAgICAgICAgdiA9IG1pbig2NCwgaW50KHYpKQotICAgICAgICAgICAgICAgIHJldHVybiAnLWonICsgc3RyKHYpCi0KLSAgICByZXR1cm4gIiIKLQotQk9PU1RfUEFSQUxMRUxfTUFLRSA9ICIke0BnZXRfYm9vc3RfcGFyYWxsZWxfbWFrZShkKX0iCitCT09TVF9QQVJBTExFTF9NQUtFID0gIiR7QG9lLnV0aWxzLnBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgJy1qJWQnLCBsaW1pdD02NCl9IgogQkpBTV9PUFRTICAgID0gJyR7Qk9PU1RfUEFSQUxMRUxfTUFLRX0gLWQrMiAtcSBcCiAJCSR7QkpBTV9UT09MU30gXAogCQktc0JPT1NUX0JVSUxEX1VTRVJfQ09ORklHPSR7V09SS0RJUn0vdXNlci1jb25maWcuamFtIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLWJvb3N0LWFzaW8tZGV0YWlsLXNvY2tldF90eXBlcy5ocHAtZml4LXBvbGwuaC1pbmNsdWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTg1YWFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLWJvb3N0LWFzaW8tZGV0YWlsLXNvY2tldF90eXBlcy5ocHAtZml4LXBvbGwuaC1pbmNsdWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDQwMTkyMzAxMTMwZGNkOTEzYWE2ZDljYjlkYmE5ZTVmOGRiZDlkMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci1EYXRlOiBXZWQsIDI0IEF1ZyAyMDE2IDIxOjAxOjQzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSB1c2UgUE9TSVggcG9sbC5oIGluc3RlYWQgb2Ygc3lzL3BvbGwuaAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1QT1NJWCBzcGVjaWZpZXMgdGhhdCA8cG9sbC5oPiBpcyB0aGUgY29ycmVjdCBoZWFkZXIgdG8KLWluY2x1ZGUgZm9yIHBvbGwoKQotICBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9wb2xsLmh0bWwKLXdoZXJlYXMgPHN5cy9wb2xsLmg+IGlzIG9ubHkgbmVlZGVkIGZvciBhbmNpZW50IGdsaWJjICg8Mi4zKSwKLXNvIGxldCdzIGZvbGxvdyBQT1NJWCBpbnN0ZWFkLgotCi1BcyBhIHNpZGUtZWZmZWN0LCB0aGlzIHNpbGVuY2VzIGEgd2FybmluZyB3aGVuIGNvbXBpbGluZwotYWdhaW5zdCB0aGUgbXVzbCBDLWxpYnJhcnk6Ci0KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSAuL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHA6NjE6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuL2Jvb3N0L2FzaW8vaXAvYWRkcmVzc192NC5ocHA6MjEsCi0gICAgICAgICAgICAgICAgIGZyb20gLi9ib29zdC9hc2lvL2lwL2FkZHJlc3MuaHBwOjIxLAotICAgICAgICAgICAgICAgICBmcm9tIGxpYnMvbG9nL3NyYy9pbml0X2Zyb21fc2V0dGluZ3MuY3BwOjY1OgotPHN5c3Jvb3Q+L3Vzci9pbmNsdWRlL3N5cy9wb2xsLmg6MToyOiB3YXJuaW5nOiAjd2FybmluZyByZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHN5cy9wb2xsLmg+IHRvIDxwb2xsLmg+IFstV2NwcF0KLSAjd2FybmluZyByZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHN5cy9wb2xsLmg+IHRvIDxwb2xsLmg+Ci0gIF5+fn5+fn4KLQotZXRjLgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIGh0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC8xMjQxOQotIGJvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwIGIvYm9vc3QvYXNpby9kZXRhaWwvc29ja2V0X3R5cGVzLmhwcAotaW5kZXggZThjNzEwOS4uN2U2NWQzYyAxMDA2NDQKLS0tLSBhL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAKLSsrKyBiL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAKLUBAIC01OCw3ICs1OCw3IEBACi0gI2Vsc2UKLSAjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgotICMgaWYgIWRlZmluZWQoX19TWU1CSUFOMzJfXykKLS0jICBpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyMgIGluY2x1ZGUgPHBvbGwuaD4KLSAjIGVuZGlmCi0gIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLWNvcnJlY3QtZXJyb3Itd2hpY2gtYXBwZWFyZWQtd2hlbi1jb21waWxpbmctbm9uLWMtY28ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTYwMDVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLWNvcnJlY3QtZXJyb3Itd2hpY2gtYXBwZWFyZWQtd2hlbi1jb21waWxpbmctbm9uLWMtY28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDAyZmE1Y2VlMWI4ZDAzMjE3ODcxMTNlMmRjMTBiMTYyYzY1N2YzMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgUmFtZXkgPHJhbWV5QHJyc2QuY29tPgotRGF0ZTogV2VkLCAxIEZlYiAyMDE3IDE2OjQzOjU5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvcnJlY3QgZXJyb3Igd2hpY2ggYXBwZWFyZWQgd2hlbiBjb21waWxpbmcgbm9uIGMrKyBjb21wbGlhbnQKLSBjb2RlIGZvciBhcnJheXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZXhwZWN0ZWQgdG8gYmUgcmVsZWFzZWQgaW4gdjEuNjVdCi0KLS0tLQotIGJvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwIGIvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAKLWluZGV4IDYxNzA4YjMuLjYxMmQxYTYgMTAwNjQ0Ci0tLS0gYS9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcAotKysrIGIvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAKLUBAIC0yMyw2ICsyMyw4IEBAIG5hbWVzcGFjZSBzdGR7Ci0gfSAvLyBuYW1lc3BhY2Ugc3RkCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPGJvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXlfd3JhcHBlci5ocHA+Ci0rCi0gI2lmbmRlZiBCT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSAKLSAjaW5jbHVkZSA8YXJyYXk+Ci0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2gKaW5kZXggZTljN2U0Yy4uMjZmM2NiYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2gKQEAgLTEsOTcgKzEsNjUgQEAKLUZyb20gYzBlNzg1ZjhkYTJjYWE2NjE3MDUyYjFjN2IzNDdlMGRmZmIxNTIwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTRkM2E3NDcwYjMwNzY5MzY2MGQwNDEyNzMyZTcyNjZkMTczOGQ4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBEYXRlOiBUdWUsIDEzIERlYyAyMDE2IDEwOjI5OjE3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBEb24ndCBzZXQgdXAgLW0zMi8tbTY0LCB3ZSBkbyB0aGF0IG91cnNlbHZlcworU3ViamVjdDogW1BBVENIIDYvNl0gRG9uJ3Qgc2V0IHVwIC1tMzIvLW02NCwgd2UgZG8gdGhhdCBvdXJzZWx2ZXMKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorCiAtLS0KLSB0b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSB8IDEwIC0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgZGVsZXRpb25zKC0pCisgdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gfCAzOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCi1pbmRleCAwZjM0NmE1Li45NDJmMTQxIDEwMDY0NAoraW5kZXggZTRmYzZjMzIuLjM3OTE0ZmQwIDEwMDY0NAogLS0tIGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0KICsrKyBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCi1AQCAtNTA5LDcgKzUwOSw2IEBAIHJ1bGUgY29tcGlsZS5jKysucGNoICggdGFyZ2V0cyAqIDogc291cmNlcyAqIDogcHJvcGVydGllcyAqICkKLSB7Ci0gICAgIHNldHVwLXRocmVhZGluZyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBzZXR1cC1mcGljICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKK0BAIC0zMzcsNDUgKzMzNyw2IEBAIHJ1bGUgc2V0LWFkZHJlc3MtbW9kZWwtb3B0aW9ucyAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCisgICAgIHsKKyAgICAgICAgIGxvY2FsIG9wdGlvbiA7CisgICAgICAgICBsb2NhbCB0YXJnZXQtb3MgPSBbIGZlYXR1cmUuZ2V0LXZhbHVlcyB0YXJnZXQtb3MgOiAkKHByb3BlcnRpZXMpIF0gOworLSAgICAgICAgaWYgJCh0YXJnZXQtb3MpID0gYWl4CistICAgICAgICB7CistICAgICAgICAgICAgaWYgJChtb2RlbCkgPSAzMgorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgb3B0aW9uID0gLW1haXgzMiA7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tYWl4NjQgOworLSAgICAgICAgICAgIH0KKy0gICAgICAgIH0KKy0gICAgICAgIGVsc2UgaWYgJCh0YXJnZXQtb3MpID0gaHB1eAorLSAgICAgICAgeworLSAgICAgICAgICAgIGlmICQobW9kZWwpID0gMzIKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1taWxwMzIgOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWxwNjQgOworLSAgICAgICAgICAgIH0KKy0gICAgICAgIH0KKy0gICAgICAgIGVsc2UKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBsb2NhbCBhcmNoID0gWyBmZWF0dXJlLmdldC12YWx1ZXMgYXJjaGl0ZWN0dXJlIDogJChwcm9wZXJ0aWVzKSBdIDsKKy0gICAgICAgICAgICBpZiAkKGFyY2gpID0gcG93ZXIgfHwgJChhcmNoKSA9IHNwYXJjIHx8ICQoYXJjaCkgPSB4ODYKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGlmICQobW9kZWwpID0gMzIKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gLW0zMiA7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgZWxzZSBpZiAkKG1vZGVsKSA9IDY0CistICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tNjQgOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgICMgRm9yIGRhcndpbiwgdGhlIG1vZGVsIGNhbiBiZSAzMl82NC4gZGFyd2luLmphbSB3aWxsIGhhbmRsZSB0aGF0CistICAgICAgICAgICAgIyBvbiBpdHMgb3duLgorLSAgICAgICAgfQorICAgICAgICAgT1BUSU9OUyBvbiAkKHRhcmdldHMpICs9ICQob3B0aW9uKSA7CisgICAgIH0KICB9Ci0gCi0gYWN0aW9ucyBjb21waWxlLmMrKy5wY2gKLUBAIC01MjEsNyArNTIwLDYgQEAgcnVsZSBjb21waWxlLmMucGNoICggdGFyZ2V0cyAqIDogc291cmNlcyAqIDogcHJvcGVydGllcyAqICkKLSB7Ci0gICAgIHNldHVwLXRocmVhZGluZyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBzZXR1cC1mcGljICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSB9Ci0gCi0gYWN0aW9ucyBjb21waWxlLmMucGNoCi1AQCAtNTMzLDcgKzUzMSw2IEBAIHJ1bGUgY29tcGlsZS5jKysucHJlcHJvY2VzcyAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gCi0gICAgICMgU29tZSBleHRlbnNpb25zIGFyZSBjb21waWxlZCBhcyBDKysgYnkgZGVmYXVsdC4gRm9yIG90aGVycywgd2UgbmVlZCB0bwotICAgICAjIHBhc3MgLXggYysrLiBXZSBjb3VsZCBhbHdheXMgcGFzcyAteCBjKysgYnV0IGRpc3RjYyBkb2VzIG5vdCB3b3JrIHdpdGggaXQuCi1AQCAtNTQ4LDcgKzU0NSw2IEBAIHJ1bGUgY29tcGlsZS5jLnByZXByb2Nlc3MgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIHNldHVwLWZwaWMgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotIAotICAgICAjIElmIHdlIHVzZSB0aGUgbmFtZSBnKysgdGhlbiBkZWZhdWx0IGZpbGUgc3VmZml4IC0+IGxhbmd1YWdlIG1hcHBpbmcgZG9lcwotICAgICAjIG5vdCB3b3JrLiBTbyBoYXZlIHRvIHBhc3MgLXggb3B0aW9uLiBNYXliZSwgd2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkKLUBAIC01NjQsNyArNTYwLDYgQEAgcnVsZSBjb21waWxlLmMrKyAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gCi0gICAgICMgU29tZSBleHRlbnNpb25zIGFyZSBjb21waWxlZCBhcyBDKysgYnkgZGVmYXVsdC4gRm9yIG90aGVycywgd2UgbmVlZCB0bwotICAgICAjIHBhc3MgLXggYysrLiBXZSBjb3VsZCBhbHdheXMgcGFzcyAteCBjKysgYnV0IGRpc3RjYyBkb2VzIG5vdCB3b3JrIHdpdGggaXQuCi1AQCAtNTk0LDcgKzU4OSw2IEBAIHJ1bGUgY29tcGlsZS5jICggdGFyZ2V0cyAqIDogc291cmNlcyAqIDogcHJvcGVydGllcyAqICkKLSB7Ci0gICAgIHNldHVwLXRocmVhZGluZyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBzZXR1cC1mcGljICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAKLSAgICAgIyBJZiB3ZSB1c2UgdGhlIG5hbWUgZysrIHRoZW4gZGVmYXVsdCBmaWxlIHN1ZmZpeCAtPiBsYW5ndWFnZSBtYXBwaW5nIGRvZXMKLSAgICAgIyBub3Qgd29yay4gU28gaGF2ZSB0byBwYXNzIC14IG9wdGlvbi4gTWF5YmUsIHdlIGNhbiB3b3JrIGFyb3VuZCB0aGlzIGJ5Ci1AQCAtNjEwLDcgKzYwNCw2IEBAIHJ1bGUgY29tcGlsZS5mb3J0cmFuICggdGFyZ2V0cyAqIDogc291cmNlcyAqIDogcHJvcGVydGllcyAqICkKLSB7Ci0gICAgIHNldHVwLXRocmVhZGluZyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBzZXR1cC1mcGljICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSB9Ci0gCi0gYWN0aW9ucyBjb21waWxlLmMrKyBiaW5kIFBDSF9GSUxFCi1AQCAtNjQxLDcgKzYzNCw2IEBAIGFjdGlvbnMgY29tcGlsZS5mb3J0cmFuCi0gcnVsZSBjb21waWxlLmFzbSAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC1mcGljICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgTEFORyBvbiAkKDwpID0gIi14IGFzc2VtYmxlci13aXRoLWNwcCIgOwotIH0KLSAKLUBAIC05NTAsNyArOTQyLDYgQEAgcnVsZSBxdW90ZS1ycGF0aCAoIHRhcmdldHMgKiApCi0gcnVsZSBsaW5rICggdGFyZ2V0cyAqIDogc291cmNlcyAqIDogcHJvcGVydGllcyAqICkKLSB7Ci0gICAgIHNldHVwLXRocmVhZGluZyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIFNQQUNFIG9uICQodGFyZ2V0cykgPSAiICIgOwotICAgICAjIFNlcmlhbGl6ZSBleGVjdXRpb24gb2YgdGhlICdsaW5rJyBhY3Rpb24sIHNpbmNlIHJ1bm5pbmcgTiBsaW5rcyBpbgotICAgICAjIHBhcmFsbGVsIGlzIGp1c3Qgc2xvd2VyLiBGb3Igbm93LCBzZXJpYWxpemUgb25seSBnY2MgbGlua3MsIGl0IG1pZ2h0IGJlIGEKLUBAIC0xMDE4LDcgKzEwMDksNiBAQCBhY3Rpb25zIHBpZWNlbWVhbCBhcmNoaXZlCi0gcnVsZSBsaW5rLmRsbCAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBTUEFDRSBvbiAkKHRhcmdldHMpID0gIiAiIDsKLSAgICAgSkFNX1NFTUFQSE9SRSBvbiAkKHRhcmdldHMpID0gPHM+Z2NjLWxpbmstc2VtYXBob3JlIDsKLSAgICAgcXVvdGUtcnBhdGggJCh0YXJnZXRzKSA7CiAtLSAKLTIuOC4wCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2gKaW5kZXggNmJiMjVmOC4uZmI2ZDk3MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoCkBAIC0xLDIwICsxLDIxIEBACi1Gcm9tIDdjNDk1MjU4MTI1NjdmMTIxOTcwNmM0ZWQzMzBiM2JkMmNjOGU5NGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDA4Njg3NjFlN2QyZDc1ZDQ3MjA5MGUzZWY5NmYzZDJmOWNlZDI3ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgogRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAxMDoyOTozMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDMvM10gRG9uJ3Qgc2V0IHVwIGFyY2gvaW5zdHJ1Y3Rpb24tc2V0IGZsYWdzLCB3ZSBkbyB0aGF0CitTdWJqZWN0OiBbUEFUQ0ggNS82XSBEb24ndCBzZXQgdXAgYXJjaC9pbnN0cnVjdGlvbi1zZXQgZmxhZ3MsIHdlIGRvIHRoYXQKICBvdXJzZWx2ZXMKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorCiAtLS0KLSB0b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSB8IDEyMSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIxIGRlbGV0aW9ucygtKQorIHRvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtIHwgMTI3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMjcgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCi1pbmRleCA5NDJmMTQxLi5kMDYyYzIwIDEwMDY0NAoraW5kZXggZTNiMWI5NTIuLmU0ZmM2YzMyIDEwMDY0NAogLS0tIGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0KICsrKyBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCi1AQCAtMTA2OCwxMjQgKzEwNjgsMyBAQCBsb2NhbCBydWxlIGNwdS1mbGFncyAoIHRvb2xzZXQgdmFyaWFibGUgOiBhcmNoaXRlY3R1cmUgOiBpbnN0cnVjdGlvbi1zZXQgKyA6CitAQCAtMTI3NiwxMzAgKzEyNzYsMyBAQCBsb2NhbCBydWxlIGNwdS1mbGFncyAoIHRvb2xzZXQgdmFyaWFibGUgOiBhcmNoaXRlY3R1cmUgOiBpbnN0cnVjdGlvbi1zZXQgKyA6CiAgICAgICAgICA8YXJjaGl0ZWN0dXJlPiQoYXJjaGl0ZWN0dXJlKS88aW5zdHJ1Y3Rpb24tc2V0PiQoaW5zdHJ1Y3Rpb24tc2V0KQogICAgICAgICAgOiAkKHZhbHVlcykgOwogIH0KQEAgLTYwLDYgKzYxLDEwIEBACiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogY29yZS1hdngtaSA6IC1tYXJjaD1jb3JlLWF2eC1pIDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBpdnktYnJpZGdlIDogLW1hcmNoPWNvcmUtYXZ4LWkgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGhhc3dlbGwgOiAtbWFyY2g9Y29yZS1hdngtaSAtbWF2eDIgLW1mbWEgLW1ibWkgLW1ibWkyIC1tbHpjbnQgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJyb2Fkd2VsbCA6IC1tYXJjaD1icm9hZHdlbGwgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHNreWxha2UgOiAtbWFyY2g9c2t5bGFrZSA7CistY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogc2t5bGFrZS1hdng1MTIgOiAtbWFyY2g9c2t5bGFrZS1hdng1MTIgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGNhbm5vbmxha2UgOiAtbWFyY2g9c2t5bGFrZS1hdng1MTIgLW1hdng1MTJ2Ym1pIC1tYXZ4NTEyaWZtYSAtbXNoYSA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogazYgOiAtbWFyY2g9azYgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGs2LTIgOiAtbWFyY2g9azYtMiA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogazYtMyA6IC1tYXJjaD1rNi0zIDsKQEAgLTgxLDggKzg2LDEwIEBACiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogYmR2ZXIxIDogLW1hcmNoPWJkdmVyMSA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogYmR2ZXIyIDogLW1hcmNoPWJkdmVyMiA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogYmR2ZXIzIDogLW1hcmNoPWJkdmVyMyA7CistY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogYmR2ZXI0IDogLW1hcmNoPWJkdmVyNCA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogYnR2ZXIxIDogLW1hcmNoPWJ0dmVyMSA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogYnR2ZXIyIDogLW1hcmNoPWJ0dmVyMiA7CistY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogem52ZXIxIDogLW1hcmNoPXpudmVyMSA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogd2luY2hpcC1jNiA6IC1tYXJjaD13aW5jaGlwLWM2IDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiB3aW5jaGlwMiA6IC1tYXJjaD13aW5jaGlwMiA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogYzMgOiAtbWFyY2g9YzMgOwpAQCAtMTQwLDQgKzE0Nyw1IEBACiAtIyBBSVggdmFyaWFudCBvZiBSUy82MDAwICYgUG93ZXJQQwogLXRvb2xzZXQuZmxhZ3MgZ2NjIEFST1BUSU9OUyA8YWRkcmVzcy1tb2RlbD42NC88dGFyZ2V0LW9zPmFpeCA6ICItWDY0IiA7CiAtLSAKLTIuOC4wCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxYzIwZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi1yZXF1aXJlIGJvb3N0LmluYwotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKLSAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtYm9vc3QtYXNpby1kZXRhaWwtc29ja2V0X3R5cGVzLmhwcC1maXgtcG9sbC5oLWluY2x1ZC5wYXRjaCBcCi0gICAgZmlsZTovL2Jvb3N0LW1hdGgtZGlzYWJsZS1wY2gtZm9yLWdjYy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWNvcnJlY3QtZXJyb3Itd2hpY2gtYXBwZWFyZWQtd2hlbi1jb21waWxpbmctbm9uLWMtY28ucGF0Y2ggXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNiODJhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY2LjAuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKK3JlcXVpcmUgYm9vc3QuaW5jCisKK1NSQ19VUkkgKz0gIlwKKyAgICBmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAorICAgIGZpbGU6Ly9ib29zdC1DVkUtMjAxMi0yNjc3LnBhdGNoIFwKKyAgICBmaWxlOi8vYm9vc3QtbWF0aC1kaXNhYmxlLXBjaC1mb3ItZ2NjLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvMDAwMS1GaXgtYS1zdHJhbmdlLWFzc2VydC10eXBvLWhvdy13YXMtdGhpcy1yZWxlYXNlZC13aXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtRml4LWEtc3RyYW5nZS1hc3NlcnQtdHlwby1ob3ctd2FzLXRoaXMtcmVsZWFzZWQtd2l0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzUxMzNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtRml4LWEtc3RyYW5nZS1hc3NlcnQtdHlwby1ob3ctd2FzLXRoaXMtcmVsZWFzZWQtd2l0aC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDU2ODU1MjczNjQxOTg1OTdmMjVmYzFjNjIzNmNiNjRjYmMzZGU0NGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBPY3QgMjAxNyAxODoxNjowOCArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYSBzdHJhbmdlIGFzc2VydCB0eXBvOyBob3cgd2FzIHRoaXMgcmVsZWFzZWQgd2l0aG91dAorIG5vdGljaW5nPworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9kZWJ1Z2dlci5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYyBiL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYworaW5kZXggODAyZjI2Mi4uMTUyYTdlNiAxMDA2NDQKKy0tLSBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYworKysrIGIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9kZWJ1Z2dlci5jCitAQCAtMTA5Miw3ICsxMDkyLDcgQEAgc3RhdGljIHZvaWQgZGVidWdfc3RhcnRfY2hpbGQoIGludCBhcmdjLCBjb25zdCBjaGFyICogKiBhcmd2ICkKKyAgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaSA9IHsgTlVMTCwgTlVMTCwgMCwgMCB9OworICAgICBTVEFSVFVQSU5GTyBzaSA9IHsgc2l6ZW9mKCBTVEFSVFVQSU5GTyApLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCB9OworLSAgICBhc3NlcnQoIERFQlVHX1NUQVRFID09IERFQlVHX05PX0NISUxEICk7CisrICAgIGFzc2VydCggZGVidWdfc3RhdGUgPT0gREVCVUdfTk9fQ0hJTEQgKTsKKyAgICAgaWYgKCAhIENyZWF0ZVBpcGUoICZwaXBlMVsgMCBdLCAmcGlwZTFbIDEgXSwgJnNhLCAwICkgKQorICAgICB7CisgICAgICAgICBwcmludGYoImludGVybmFsIGVycm9yXG4iKTsKK0BAIC0xMTc2LDcgKzExNzYsNyBAQCBzdGF0aWMgdm9pZCBkZWJ1Z19zdGFydF9jaGlsZCggaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiAqIGFyZ3YgKQorICAgICBpbnQgcmVhZF9mZDsKKyAgICAgaW50IHBpZDsKKyAgICAgaW50IGk7CistICAgIGFzc2VydCggREVCVUdfU1RBVEUgPT0gREVCVUdfTk9fQ0hJTEQgKTsKKysgICAgYXNzZXJ0KCBkZWJ1Z19zdGF0ZSA9PSBERUJVR19OT19DSElMRCApOworICAgICBwaXBlKHBpcGUxKTsKKyAgICAgcGlwZShwaXBlMik7CisgICAgIHBpZCA9IGZvcmsoKTsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmQ5NjdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXMvMDAwMy11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1yZWxhdGl2ZS1zeW1saW5rcy1mcm9tLUVULnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gYTlmYzEzYjJhZWU1NTY1NWQ1OGZjYjc3YTMxODBmYTk5Zjk2NDM4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhbmRyZS5kcmFzemlrQGpjaS5jb20+CitEYXRlOiBXZWQsIDI4IE1hciAyMDE4IDE2OjQ1OjA1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXM6IHVzZSByZWxhdGl2ZSBzeW1saW5rcyBmcm9tCisgJEVUQ0NFUlRTRElSCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgc3ltbGlua3MgKHRydXN0ZWQpIGNlcnRpZmljYXRlcworZnJvbSAkQ0VSVFNESVIgb3IgJExPQ0FMQ0VSVFNESVIgaW50byAkRVRDQ0VSVFNESVIuCit1cGRhdGUtY2EtY2VydGlmaWNhdGVzIGNhbiBjYWxsIGhvb2sgc2NyaXB0cyBpbnN0YWxsZWQKK2ludG8gL2V0Yy9jYS1jZXJ0aWZpY2F0ZXMvdXBkYXRlLmQuIFRob3NlIHNjcmlwdHMgYXJlCitwYXNzZWQgdGhlIHBlbSBmaWxlIGluIC9ldGMvc3NsL2NlcnRzLyB0aGF0IHdhcyBhZGRlZCBvcgorcmVtb3ZlZCBpbiB0aGlzIHJ1biBhbmQgdGhvc2UgcGVtIGZpbGVzIGFyZSBhYnNvbHV0ZQorc3ltbGlua3MgaW50byAkQ0VSVFNESVIgb3IgJExPQ0FMQ0VSVFNESVIgYXQgdGhlIG1vbWVudC4KKworV2hlbiBydW5uaW5nIHVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgZHVyaW5nIGltYWdlIGJ1aWxkCit0aW1lLCB0aGV5IHRodXNseSBhbGwgcG9pbnQgaW50byB0aGUgaG9zdCdzIGZpbGUgc3lzdGVtLAorbm90IGludG8gdGhlICRTWVNST09ULiBUaGlzIG1lYW5zOgorKiB0aGUgaG9zdCdzIGZpbGUgc3lzdGVtIGxheW91dCBtdXN0IG1hdGNoIHRoZSBvbmUKKyAgcHJvZHVjZWQgYnkgT0UsIGFuZAorKiBpdCBhbHNvIG1lYW5zIHRoYXQgdGhlIGhvc3QgbXVzdCBoYXZlIGluc3RhbGxlZCB0aGUgc2FtZQorICAob3IgbW9yZSkgY2VydGlmaWNhdGVzIGFzIHRoZSB0YXJnZXQgaW4gJENFUlRTRElSIGFuZAorICAkTE9DQUxDRVJUU0RJUgorCitUaGlzIGlzIGEgcHJvYmxlbSB3aGVuIHdhbnRpbmcgdG8gZXhlY3V0ZSBob29rIHNjcmlwdHMsCitiZWNhdXNlIHRoZXkgYWxsIG5lZWQgdG8gYmUgdGF1Z2h0IGFib3V0ICRTWVNST09ULCBhbmQKK2JlaGF2ZSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5J3JlIGNhbGxlZAorYXQgaW1hZ2UgYnVpbGQgdGltZSwgb3Igb24gdGhlIHRhcmdldCwgYXMgb3RoZXJ3aXNlIHRoZXkKK3dpbGwgYmUgdHJ5aW5nIHRvIGFjdHVhbGx5IHJlYWQgdGhlIGhvc3QncyBjZXJ0aWZpY2F0ZXMKK2Zyb20gJENFUlRTRElSIG9yICRMT0NBTENFUlRTRElSLgorCitUaGlzIGFsc28gaXMgYSBwcm9ibGVtIHdoZW4gcnVubmluZyBhbnl0aGluZyBlbHNlIGR1cmluZworaW1hZ2UgYnVpbGQgdGltZSB0aGF0IGRlcGVuZHMgb24gdGhlIHRydXN0ZWQgQ0EKK2NlcnRpZmljYXRlcy4KKworQ2hhbmdpbmcgdGhlIHN5bWxpbmsgdG8gYmUgcmVsYXRpdmUgc29sdmVzIGFsbCBvZiB0aGVzZQorcHJvYmxlbXMuIERvIHNvLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKy0tLQorIHNiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcyBiL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworaW5kZXggMDBmODBjNy4uN2U5MTFhOSAxMDA3NTUKKy0tLSBhL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworKysrIGIvc2Jpbi91cGRhdGUtY2EtY2VydGlmaWNhdGVzCitAQCAtMjksNiArMjksNyBAQCBDRVJUU0RJUj0kU1lTUk9PVC91c3Ivc2hhcmUvY2EtY2VydGlmaWNhdGVzCisgTE9DQUxDRVJUU0RJUj0kU1lTUk9PVC91c3IvbG9jYWwvc2hhcmUvY2EtY2VydGlmaWNhdGVzCisgQ0VSVEJVTkRMRT1jYS1jZXJ0aWZpY2F0ZXMuY3J0CisgRVRDQ0VSVFNESVI9JFNZU1JPT1QvZXRjL3NzbC9jZXJ0cworK0ZTUk9PVD0uLi8uLi8uLi8gIyB0byBnZXQgZnJvbSAkRVRDQ0VSVFNESVIgdG8gdGhlIHJvb3Qgb2YgdGhlIGZpbGUgc3lzdGVtCisgSE9PS1NESVI9JFNZU1JPT1QvZXRjL2NhLWNlcnRpZmljYXRlcy91cGRhdGUuZAorIAorIHdoaWxlIFsgJCMgLWd0IDAgXTsKK0BAIC0xMjUsOSArMTI2LDEwIEBAIGFkZCgpIHsKKyAgIFBFTT0iJEVUQ0NFUlRTRElSLyQoYmFzZW5hbWUgIiRDRVJUIiAuY3J0IHwgc2VkIC1lICdzLyAvXy9nJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZSAncy9bKCldLz0vZycgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvLC9fL2cnKS5wZW0iCistICBpZiAhIHRlc3QgLWUgIiRQRU0iIHx8IFsgIiQocmVhZGxpbmsgIiRQRU0iKSIgIT0gIiR7Q0VSVCMjJFNZU1JPT1R9IiBdCisrICBEU1Q9IiQoZWNobyAke0NFUlR9IHwgc2VkIC1lICJzfF4kU1lTUk9PVHx8IiAtZSAic3xeL3wkRlNST09UfCIgKSIKKysgIGlmICEgdGVzdCAtZSAiJFBFTSIgfHwgWyAiJChyZWFkbGluayAiJFBFTSIpIiAhPSAiJHtEU1R9IiBdCisgICB0aGVuCistICAgIGxuIC1zZiAiJHtDRVJUIyMkU1lTUk9PVH0iICIkUEVNIgorKyAgICBsbiAtc2YgIiR7RFNUfSIgIiRQRU0iCisgICAgIGVjaG8gIiskUEVNIiA+PiAiJEFEREVEIgorICAgZmkKKyAgICMgQWRkIHRyYWlsaW5nIG5ld2xpbmUgdG8gY2VydGlmaWNhdGUsIGlmIGl0IGlzIG1pc3NpbmcgKCM2MzU1NzApCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTcwNzE3LmJiCmluZGV4IGU0ZmZiZDMuLjM1MDI5NDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTcwNzE3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTcwNzE3LmJiCkBAIC0xNiwxNSArMTYsMTcgQEAKIAogU1JDUkVWID0gIjM0YjhlMTllNTQxYjhhZjQwNzY2MTZiMmUxNzBjN2E3MGNkYWRlZDAiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnL2NvbGxhYi1tYWludC9jYS1jZXJ0aWZpY2F0ZXMuZ2l0IFwKK1NSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vY2EtY2VydGlmaWNhdGVzLmdpdDtwcm90b2NvbD1odHRwcyBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLVNZU1JPT1QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtc3VwcG9ydC1Ub3lib3gucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NiaW5kaXIucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaCBcCisgICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKLVNZU1JPT1RfRElSU19jbGFzcy1uYXRpdmUgKz0gIi9ldGMiCitTWVNST09UX0RJUlNfY2xhc3MtbmF0aXZlICs9ICIke3N5c2NvbmZkaXJ9ICR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIgogCiBpbmhlcml0IGFsbGFyY2gKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoCmluZGV4IDc0ZTVkOTkuLmE3ZGIxYjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2gKQEAgLTEsMTcgKzEsMjEgQEAKLVtQQVRDSF0gcmVwbGFjZSBrcmI1LWNvbmZpZyB3aXRoIHBrZy1jb25maWcKK0Zyb20gZWQ3MGYwNjIzNzA4YjhhNmMxZjU4YTVkMjQzZDg3YzVmZjQ1YjI0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjYgQXByIDIwMTYgMTM6MTM6MDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVwbGFjZSBrcmI1LWNvbmZpZyB3aXRoIHBrZy1jb25maWcKIAogVXBzdHJlYW0tU3RhdHVzOiAgUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDYgKysrLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZTk5YjMwMy4uZGM5M2YzOSAxMDA2NDQKK2luZGV4IDU1NjlhMjYuLjU2YjAzODAgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTExOTYsNyArMTE5Niw3IEBAIEFDX0FSR19XSVRIKGdzc2FwaSwKK0BAIC0xMjkwLDcgKzEyOTAsNyBAQCBBQ19BUkdfV0lUSChnc3NhcGksCiAgICBmaQogIF0pCiAgCkBAIC0yMCw3ICsyNCw3IEBACiAgCiAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgogIEFDX01TR19DSEVDS0lORyhbaWYgR1NTLUFQSSBzdXBwb3J0IGlzIHJlcXVlc3RlZF0pCi1AQCAtMTIwNyw3ICsxMjA3LDcgQEAgaWYgdGVzdCB4IiR3YW50X2dzcyIgPSB4eWVzOyB0aGVuCitAQCAtMTMwMSw3ICsxMzAxLDcgQEAgaWYgdGVzdCB4IiR3YW50X2dzcyIgPSB4eWVzOyB0aGVuCiAgICAgICBpZiB0ZXN0IC1uICIkaG9zdF9hbGlhcyIgLWEgLWYgIiRHU1NBUElfUk9PVC9iaW4vJGhvc3RfYWxpYXMta3JiNS1jb25maWciOyB0aGVuCiAgICAgICAgICBHU1NBUElfSU5DUz1gJEdTU0FQSV9ST09UL2Jpbi8kaG9zdF9hbGlhcy1rcmI1LWNvbmZpZyAtLWNmbGFncyBnc3NhcGlgCiAgICAgICBlbGlmIHRlc3QgLWYgIiRLUkI1Q09ORklHIjsgdGhlbgpAQCAtMjksNyArMzMsNyBAQAogICAgICAgZWxpZiB0ZXN0ICIkR1NTQVBJX1JPT1QiICE9ICJ5ZXMiOyB0aGVuCiAgICAgICAgICBHU1NBUElfSU5DUz0iLUkkR1NTQVBJX1JPT1QvaW5jbHVkZSIKICAgICAgIGZpCi1AQCAtMTMwMCw3ICsxMzAwLDcgQEAgaWYgdGVzdCB4IiR3YW50X2dzcyIgPSB4eWVzOyB0aGVuCitAQCAtMTM5NCw3ICsxMzk0LDcgQEAgaWYgdGVzdCB4IiR3YW50X2dzcyIgPSB4eWVzOyB0aGVuCiAgICAgICAgICBlbGlmIHRlc3QgLWYgIiRLUkI1Q09ORklHIjsgdGhlbgogICAgICAgICAgICAgZG5sIGtyYjUtY29uZmlnIGRvZXNuJ3QgaGF2ZSAtLWxpYnMtb25seS1MIG9yIHNpbWlsYXIsIHB1dCBldmVyeXRoaW5nCiAgICAgICAgICAgICBkbmwgaW50byBMSUJTCkBAIC0zOCw2ICs0MiwzIEBACiAgICAgICAgICAgICBMSUJTPSIkZ3NzX2xpYnMgJExJQlMiCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICBjYXNlICRob3N0IGluCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZmZjFiMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIGM5MzMyZmE1ZTg0ZjI0ZGEzMDBiNDJiMWE5MzFhZGU5MjlkM2UyN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogVHVlLCAxIEF1ZyAyMDE3IDE3OjE3OjA2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpbGU6IG91dHB1dCB0aGUgY29ycmVjdCBidWZmZXIgdG8gdGhlIHVzZXIKLQotUmVncmVzc2lvbiBicm91Z2h0IGJ5IDdjMzEyZjg0ZWE5MzBkOCAoQXByaWwgMjAxNykKLQotQ1ZFOiBDVkUtMjAxNy0xMDAwMDk5Ci0KLUJ1ZzogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxNzA4MDlDLmh0bWwKLQotQ3JlZGl0IHRvIE9TUy1GdXp6IGZvciB0aGUgZGlzY292ZXJ5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvY29tbWl0L2M5MzMyZmE1ZTg0ZjI0ZGEzMDBiNDJiMWE5MzFhZGU5MjlkM2UyN2QKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZmlsZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2ZpbGUuYyBiL2xpYi9maWxlLmMKLWluZGV4IGJkNDI2ZWFjMi4uNjY2Y2JlNzViIDEwMDY0NAotLS0tIGEvbGliL2ZpbGUuYwotKysrIGIvbGliL2ZpbGUuYwotQEAgLTQ5OSwxMSArNDk5LDExIEBAIHN0YXRpYyBDVVJMY29kZSBmaWxlX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSkKLSAgICAgICAgICAgICAgQ3VybF9tb250aFt0bS0+dG1fbW9uXSwKLSAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICB0bS0+dG1faG91ciwKLSAgICAgICAgICAgICAgdG0tPnRtX21pbiwKLSAgICAgICAgICAgICAgdG0tPnRtX3NlYyk7Ci0tICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPVEgsIGJ1ZiwgMCk7Ci0rICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPVEgsIGhlYWRlciwgMCk7Ci0gICAgIGlmKCFyZXN1bHQpCi0gICAgICAgLyogc2V0IHRoZSBmaWxlIHNpemUgdG8gbWFrZSBpdCBhdmFpbGFibGUgcG9zdCB0cmFuc2ZlciAqLwotICAgICAgIEN1cmxfcGdyc1NldERvd25sb2FkU2l6ZShkYXRhLCBleHBlY3RlZF9zaXplKTsKLSAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc0ZjFkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDM1OGIyYjEzMWFkNmMwOTU2OTZmMjBkY2ZhNjJiODMwNTI2M2Y4OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgU3RlbmJlcmcgPGRhbmllbEBoYXh4LnNlPgotRGF0ZTogVHVlLCAxIEF1ZyAyMDE3IDE3OjE2OjQ2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRmdHA6IHJlamVjdCBmaWxlIG5hbWUgbGVuZ3RocyB0aGF0IGRvbid0IGZpdAotCi0uLi4gYW5kIHRoZXJlYnkgYXZvaWQgdGVsbGluZyBzZW5kKCkgdG8gc2VuZCBvZmYgbW9yZSBieXRlcyB0aGFuIHRoZQotc2l6ZSBvZiB0aGUgYnVmZmVyIQotCi1DVkU6IENWRS0yMDE3LTEwMDAxMDAKLQotQnVnOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE3MDgwOUIuaHRtbAotUmVwb3J0ZWQtYnk6IEV2ZW4gUm91YXVsdAotCi1DcmVkaXQgdG8gT1NTLUZ1enogZm9yIHRoZSBkaXNjb3ZlcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9jb21taXQvMzU4YjJiMTMxYWQ2YzA5NTY5NmYyMGRjZmE2MmI4MzA1MjYzZjg5OAotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi90ZnRwLmMgfCAgICA3ICsrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvdGZ0cC5jIGIvbGliL3RmdHAuYwotaW5kZXggMDJiZDg0Mi4uZjZmNGJjZSAxMDA2NDQKLS0tLSBhL2xpYi90ZnRwLmMKLSsrKyBiL2xpYi90ZnRwLmMKLUBAIC01LDcgKzUsNyBAQAotICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCi0gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gICoKLS0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgotKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTcsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCi0gICoKLSAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAotICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLUBAIC00OTEsNiArNDkxLDExIEBAIHN0YXRpYyBDVVJMY29kZSB0ZnRwX3NlbmRfZmlyc3QodGZ0cF9zdGF0ZV9kYXRhX3QgKnN0YXRlLCB0ZnRwX2V2ZW50X3QgZXZlbnQpCi0gICAgIGlmKHJlc3VsdCkKLSAgICAgICByZXR1cm4gcmVzdWx0OwotIAotKyAgICBpZihzdHJsZW4oZmlsZW5hbWUpID4gKHN0YXRlLT5ibGtzaXplIC0gc3RybGVuKG1vZGUpIC0gNCkpIHsKLSsgICAgICBmYWlsZihkYXRhLCAiVEZUUCBmaWxlIG5hbWUgdG9vIGxvbmdcbiIpOwotKyAgICAgIHJldHVybiBDVVJMRV9URlRQX0lMTEVHQUw7IC8qIHRvbyBsb25nIGZpbGUgbmFtZSBmaWVsZCAqLwotKyAgICB9Ci0rCi0gICAgIHNucHJpbnRmKChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YSsyLAotICAgICAgICAgICAgICBzdGF0ZS0+Ymxrc2l6ZSwKLSAgICAgICAgICAgICAgIiVzJWMlcyVjIiwgZmlsZW5hbWUsICdcMCcsICBtb2RlLCAnXDAnKTsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMDBmZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotRnJvbSA0NTNlN2E3YTAzYTJjZWM3NDlhYmQzODc4YTQ4ZTcyOGM1MTVjY2E3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIFN0ZW5iZXJnIDxkYW5pZWxAaGF4eC5zZT4KLURhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNjowNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBnbG9iOiBkbyBub3QgY29udGludWUgcGFyc2luZyBhZnRlciBhIHN0cnRvdWwoKSBvdmVyZmxvdwotIHJhbmdlCi0KLUFkZGVkIHRlc3QgMTI4OSB0byB2ZXJpZnkuCi0KLUNWRTogQ1ZFLTIwMTctMTAwMDEwMQotCi1CdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5QS5odG1sCi1SZXBvcnRlZC1ieTogQnJpYW4gQ2FycGVudGVyCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvY29tbWl0LzQ1M2U3YTdhMDNhMmNlYzc0OWFiZDM4NzhhNDhlNzI4YzUxNWNjYTcKLQotUmViYXNlIHRoZSB0ZXN0cy9kYXRhL01ha2VmaWxlLmluYyBjaGFuZ2VzIGZvciBjdXJsIDcuNTQuMS4KLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvdG9vbF91cmxnbG9iLmMgICAgICB8ICA1ICsrKystCi0gdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgfCAgMiArLQotIHRlc3RzL2RhdGEvdGVzdDEyODkgICAgIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2RhdGEvdGVzdDEyODkKLQotZGlmZiAtLWdpdCBhL3NyYy90b29sX3VybGdsb2IuYyBiL3NyYy90b29sX3VybGdsb2IuYwotaW5kZXggNmIxZWNlMC4uZDU2ZGNkOSAxMDA2NDQKLS0tLSBhL3NyYy90b29sX3VybGdsb2IuYwotKysrIGIvc3JjL3Rvb2xfdXJsZ2xvYi5jCi1AQCAtMjczLDcgKzI3MywxMCBAQCBzdGF0aWMgQ1VSTGNvZGUgZ2xvYl9yYW5nZShVUkxHbG9iICpnbG9iLCBjaGFyICoqcGF0dGVybnAsCi0gICAgICAgICB9Ci0gICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICBtYXhfbiA9IHN0cnRvdWwocGF0dGVybiwgJmVuZHAsIDEwKTsKLS0gICAgICAgIGlmKGVycm5vIHx8ICgqZW5kcCA9PSAnOicpKSB7Ci0rICAgICAgICBpZihlcnJubykKLSsgICAgICAgICAgLyogb3ZlcmZsb3cgKi8KLSsgICAgICAgICAgZW5kcCA9IE5VTEw7Ci0rICAgICAgICBlbHNlIGlmKCplbmRwID09ICc6JykgewotICAgICAgICAgICBwYXR0ZXJuID0gZW5kcCsxOwotICAgICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICAgIHN0ZXBfbiA9IHN0cnRvdWwocGF0dGVybiwgJmVuZHAsIDEwKTsKLWRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL01ha2VmaWxlLmluYyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi1pbmRleCAxNTUzMjBhLi43YWRiZWU2IDEwMDY0NAotLS0tIGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLSsrKyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi1AQCAtMTMyLDcgKzEzMiw3IEBAIHRlc3QxMjUyIHRlc3QxMjUzIHRlc3QxMjU0IHRlc3QxMjU1IHRlc3QxMjU2IHRlc3QxMjU3IHRlc3QxMjU4IHRlc3QxMjU5IFwKLSB0ZXN0MTI2MCB0ZXN0MTI2MSB0ZXN0MTI2MiBcCi0gXAotIHRlc3QxMjgwIHRlc3QxMjgxIHRlc3QxMjgyIHRlc3QxMjgzIHRlc3QxMjg0IHRlc3QxMjg1IHRlc3QxMjg2IHRlc3QxMjg3IFwKLS10ZXN0MTI4OCBcCi0rdGVzdDEyODggdGVzdDEyODkgXAotIFwKLSB0ZXN0MTMwMCB0ZXN0MTMwMSB0ZXN0MTMwMiB0ZXN0MTMwMyB0ZXN0MTMwNCB0ZXN0MTMwNSB0ZXN0MTMwNiB0ZXN0MTMwNyBcCi0gdGVzdDEzMDggdGVzdDEzMDkgdGVzdDEzMTAgdGVzdDEzMTEgdGVzdDEzMTIgdGVzdDEzMTMgdGVzdDEzMTQgdGVzdDEzMTUgXAotZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyODkgYi90ZXN0cy9kYXRhL3Rlc3QxMjg5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDY3OWNjMAotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdHMvZGF0YS90ZXN0MTI4OQotQEAgLTAsMCArMSwzNSBAQAotKzx0ZXN0Y2FzZT4KLSs8aW5mbz4KLSs8a2V5d29yZHM+Ci0rSFRUUAotK0hUVFAgR0VUCi0rZ2xvYmJpbmcKLSs8L2tleXdvcmRzPgotKzwvaW5mbz4KLSsKLSsjCi0rIyBTZXJ2ZXItc2lkZQotKzxyZXBseT4KLSs8L3JlcGx5PgotKwotKyMgQ2xpZW50LXNpZGUKLSs8Y2xpZW50PgotKzxzZXJ2ZXI+Ci0raHR0cAotKzwvc2VydmVyPgotKzxuYW1lPgotK2dsb2JiaW5nIHdpdGggb3ZlcmZsb3cgYW5kIGJhZCBzeW50eHgKLSs8L25hbWU+Ci0rPGNvbW1hbmQ+Ci0raHR0cDovL3VyJTIwWzAtNjAwMDAwMDAwMDAwMDAwMDAwMDAKLSs8L2NvbW1hbmQ+Ci0rPC9jbGllbnQ+Ci0rCi0rIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKLSs8dmVyaWZ5PgotKyMgY3VybDogKDMpIFtnbG9iYmluZ10gYmFkIHJhbmdlIGluIGNvbHVtbiAKLSs8ZXJyb3Jjb2RlPgotKzMKLSs8L2Vycm9yY29kZT4KLSs8L3ZlcmlmeT4KLSs8L3Rlc3RjYXNlPgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMjU0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMjU0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjA3OThiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi1Gcm9tIDFiMmViYTZmOTc0NWMwNjRmNzI4M2UwYWRhOGY0NmRmOWQ5ZDZlNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDAwOjI2OjUwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZUUDogemVybyB0ZXJtaW5hdGUgdGhlIGVudHJ5IHBhdGggZXZlbiBvbiBiYWQgaW5wdXQKLQotLi4uIGEgc2luZ2xlIGRvdWJsZSBxdW90ZSBjb3VsZCBsZWF2ZSB0aGUgZW50cnkgcGF0aCBidWZmZXIgd2l0aG91dCBhIHplcm8KLXRlcm1pbmF0aW5nIGJ5dGUuIENWRS0yMDE3LTEwMDAyNTQKLQotVGVzdCAxMTUyIGFkZGVkIHRvIHZlcmlmeS4KLQotUmVwb3J0ZWQtYnk6IE1heCBEeW1vbmQKLUJ1ZzogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxNzEwMDQuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTEwMDAyNTQKLVNpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi9mdHAuYyAgICAgICAgICAgICAgIHwgIDcgKysrKy0tCi0gdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgfCAgMiArKwotIHRlc3RzL2RhdGEvdGVzdDExNTIgICAgIHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZGF0YS90ZXN0MTE1MgotCi1kaWZmIC0tZ2l0IGEvbGliL2Z0cC5jIGIvbGliL2Z0cC5jCi1pbmRleCA1ZWRlYzM3Li40OTNkYmY5IDEwMDY0NAotLS0tIGEvbGliL2Z0cC5jCi0rKysgYi9saWIvZnRwLmMKLUBAIC0yODI2LDYgKzI4MjYsNyBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotICAgICAgICAgY29uc3Qgc2l6ZV90IGJ1Zl9zaXplID0gZGF0YS0+c2V0LmJ1ZmZlcl9zaXplOwotICAgICAgICAgY2hhciAqZGlyOwotICAgICAgICAgY2hhciAqc3RvcmU7Ci0rICAgICAgICBib29sIGVudHJ5X2V4dHJhY3RlZCA9IEZBTFNFOwotIAotICAgICAgICAgZGlyID0gbWFsbG9jKG5yZWFkICsgMSk7Ci0gICAgICAgICBpZighZGlyKQotQEAgLTI4NTcsNyArMjg1OCw3IEBAIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVtYWNoX2FjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCi0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgLyogZW5kIG9mIHBhdGggKi8KLS0gICAgICAgICAgICAgICAgKnN0b3JlID0gJ1wwJzsgLyogemVybyB0ZXJtaW5hdGUgKi8KLSsgICAgICAgICAgICAgICAgZW50cnlfZXh0cmFjdGVkID0gVFJVRTsKLSAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIGdldCBvdXQgb2YgdGhpcyBsb29wICovCi0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotQEAgLTI4NjYsNyArMjg2Nyw5IEBAIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVtYWNoX2FjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCi0gICAgICAgICAgICAgc3RvcmUrKzsKLSAgICAgICAgICAgICBwdHIrKzsKLSAgICAgICAgICAgfQotLQotKyAgICAgICAgICAqc3RvcmUgPSAnXDAnOyAvKiB6ZXJvIHRlcm1pbmF0ZSAqLwotKyAgICAgICAgfQotKyAgICAgICAgaWYoZW50cnlfZXh0cmFjdGVkKSB7Ci0gICAgICAgICAgIC8qIElmIHRoZSBwYXRoIG5hbWUgZG9lcyBub3QgbG9vayBsaWtlIGFuIGFic29sdXRlIHBhdGggKGkuZS46IGl0Ci0gICAgICAgICAgICAgIGRvZXMgbm90IHN0YXJ0IHdpdGggYSAnLycpLCB3ZSBwcm9iYWJseSBuZWVkIHNvbWUgc2VydmVyLWRlcGVuZGVudAotICAgICAgICAgICAgICBhZGp1c3RtZW50cy4gRm9yIGV4YW1wbGUsIHRoaXMgaXMgdGhlIGNhc2Ugd2hlbiBjb25uZWN0aW5nIHRvCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotaW5kZXggN2FkYmVlNi4uNTI4NDY1NCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi0rKysgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotQEAgLTEyMSw2ICsxMjEsOCBAQCB0ZXN0MTEyMCB0ZXN0MTEyMSB0ZXN0MTEyMiB0ZXN0MTEyMyB0ZXN0MTEyNCB0ZXN0MTEyNSB0ZXN0MTEyNiB0ZXN0MTEyNyBcCi0gdGVzdDExMjggdGVzdDExMjkgdGVzdDExMzAgdGVzdDExMzEgdGVzdDExMzIgdGVzdDExMzMgdGVzdDExMzQgdGVzdDExMzUgXAotIHRlc3QxMTM2IHRlc3QxMTM3IHRlc3QxMTM4IHRlc3QxMTM5IHRlc3QxMTQwIHRlc3QxMTQxIHRlc3QxMTQyIHRlc3QxMTQzIFwKLSB0ZXN0MTE0NCB0ZXN0MTE0NSB0ZXN0MTE0NiBcCi0rdGVzdDExNTIgXAotK1wKLSB0ZXN0MTIwMCB0ZXN0MTIwMSB0ZXN0MTIwMiB0ZXN0MTIwMyB0ZXN0MTIwNCB0ZXN0MTIwNSB0ZXN0MTIwNiB0ZXN0MTIwNyBcCi0gdGVzdDEyMDggdGVzdDEyMDkgdGVzdDEyMTAgdGVzdDEyMTEgdGVzdDEyMTIgdGVzdDEyMTMgdGVzdDEyMTQgdGVzdDEyMTUgXAotIHRlc3QxMjE2IHRlc3QxMjE3IHRlc3QxMjE4IHRlc3QxMjE5IFwKLWRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMTUyIGIvdGVzdHMvZGF0YS90ZXN0MTE1MgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmFhOGMwYTcKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL2RhdGEvdGVzdDExNTIKLUBAIC0wLDAgKzEsNjEgQEAKLSs8dGVzdGNhc2U+Ci0rPGluZm8+Ci0rPGtleXdvcmRzPgotK0ZUUAotK1BBU1YKLStMSVNUCi0rPC9rZXl3b3Jkcz4KLSs8L2luZm8+Ci0rIwotKyMgU2VydmVyLXNpZGUKLSs8cmVwbHk+Ci0rPHNlcnZlcmNtZD4KLStSRVBMWSBQV0QgMjU3ICJqdXN0IG9uZQotKzwvc2VydmVyY21kPgotKwotKyMgV2hlbiBkb2luZyBMSVNULCB3ZSBnZXQgdGhlIGRlZmF1bHQgbGlzdCBvdXRwdXQgaGFyZC1jb2RlZCBpbiB0aGUgdGVzdAotKyMgRlRQIHNlcnZlcgotKzxkYXRhIG1vZGU9InRleHQiPgotK3RvdGFsIDIwCi0rZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgotK2Ryd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCi0rZHJ3eHIteHIteCAgIDIgOTggICAgICAgOTggICAgICAgICAgIDUxMiBNYXkgIDIgIDE5OTYgY3VybC1yZWxlYXNlcwotKy1yLS1yLS1yLS0gICAxIDAgICAgICAgIDEgICAgICAgICAgICAgMzUgSnVsIDE2ICAxOTk2IFJFQURNRQotK2xyd3hyd3hyd3ggICAxIDAgICAgICAgIDEgICAgICAgICAgICAgIDcgRGVjICA5ICAxOTk5IGJpbiAtPiB1c3IvYmluCi0rZHIteHIteHIteCAgIDIgMCAgICAgICAgMSAgICAgICAgICAgIDUxMiBPY3QgIDEgIDE5OTcgZGV2Ci0rZHJ3eHJ3eHJ3eCAgIDIgOTggICAgICAgOTggICAgICAgICAgIDUxMiBNYXkgMjkgMTY6MDQgZG93bmxvYWQuaHRtbAotK2RyLXhyLXhyLXggICAyIDAgICAgICAgIDEgICAgICAgICAgICA1MTIgTm92IDMwICAxOTk1IGV0YwotK2Ryd3hyd3hyd3ggICAyIDk4ICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0IDMwIDE0OjMzIHB1YgotK2RyLXhyLXhyLXggICA1IDAgICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0ICAxICAxOTk3IHVzcgotKzwvZGF0YT4KLSs8L3JlcGx5PgotKwotKyMKLSsjIENsaWVudC1zaWRlCi0rPGNsaWVudD4KLSs8c2VydmVyPgotK2Z0cAotKzwvc2VydmVyPgotKyA8bmFtZT4KLStGVFAgd2l0aCB1bmV2ZW4gcXVvdGUgaW4gUFdEIHJlc3BvbnNlCi0rIDwvbmFtZT4KLSsgPGNvbW1hbmQ+Ci0rZnRwOi8vJUhPU1RJUDolRlRQUE9SVC90ZXN0LTExNTIvCi0rPC9jb21tYW5kPgotKzwvY2xpZW50PgotKwotKyMKLSsjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgotKzx2ZXJpZnk+Ci0rPHByb3RvY29sPgotK1VTRVIgYW5vbnltb3VzCi0rUEFTUyBmdHBAZXhhbXBsZS5jb20KLStQV0QKLStDV0QgdGVzdC0xMTUyCi0rRVBTVgotK1RZUEUgQQotK0xJU1QKLStRVUlUCi0rPC9wcm90b2NvbD4KLSs8L3ZlcmlmeT4KLSs8L3Rlc3RjYXNlPgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9jb25maWd1cmVfYWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL2NvbmZpZ3VyZV9hYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhiZDMwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL2NvbmZpZ3VyZV9hYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogIFBlbmRpbmcKLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yODEsNyArMjgxLDcgQEAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIAotIENVUkxfQ0hFQ0tfQ09NUElMRVIKLSBDVVJMX1NFVF9DT01QSUxFUl9CQVNJQ19PUFRTCi0tQ1VSTF9TRVRfQ09NUElMRVJfREVCVUdfT1BUUwotK2RubCBDVVJMX1NFVF9DT01QSUxFUl9ERUJVR19PUFRTCi0gQ1VSTF9TRVRfQ09NUElMRVJfT1BUSU1JWkVfT1BUUwotIENVUkxfU0VUX0NPTVBJTEVSX1dBUk5JTkdfT1BUUwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9yZXByb2R1Y2libGUtbWtoZWxwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9yZXByb2R1Y2libGUtbWtoZWxwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjhiYmViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMWZlOTJmZDNkZDY0YzcyMjhmNmZmNDFlM2ZjMTZjNGYyMzkyNDcxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDA4OjI4OjI1IC0wNzAwCi1TdWJqZWN0OiBta2hlbHAucGw6IHN1cHBvcnQgcmVwcm9kdWNpYmxlIGJ1aWxkCi0KLURvIG5vdCBnZW5lcmF0ZSBsaW5lIHdpdGggdGhlIGN1cnJlbnQgZGF0ZSwgc3VjaCBhczoKLQotKiBHZW5lcmF0aW9uIHRpbWU6IFR1ZSBPY3QtMjQgMTg6MDE6NDEgMjAxNwotCi1UaGlzIHdpbGwgaW1wcm92ZSByZXByb2R1Y2liaWxpdHkuIFRoZSBnZW5lcmF0ZWQgc3RyaW5nIGlzIG9ubHkKLXBhcnQgb2YgYSBjb21tZW50LCBzbyB0aGVyZSBzaG91bGQgYmUgbm8gYWR2ZXJzZSBjb25zZXF1ZW5jZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9wdWxsLzIwMjYgXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvc3JjL21raGVscC5wbCBiL3NyYy9ta2hlbHAucGwKLWluZGV4IDI3MGRhYTIuLjc1N2YwMjQgMTAwNzU1Ci0tLS0gYS9zcmMvbWtoZWxwLnBsCi0rKysgYi9zcmMvbWtoZWxwLnBsCi1AQCAtMTAyLDExICsxMDIsOSBAQCB3aGlsZSg8UkVBRD4pIHsKLSB9Ci0gY2xvc2UoUkVBRCk7Ci0gCi0tJG5vdyA9IGxvY2FsdGltZTsKLSBwcmludCA8PEhFQUQKLSAvKgotICAqIE5FVkVSIEVWRVIgZWRpdCB0aGlzIG1hbnVhbGx5LCBmaXggdGhlIG1raGVscC5wbCBzY3JpcHQgaW5zdGVhZCEKLS0gKiBHZW5lcmF0aW9uIHRpbWU6ICRub3cKLSAgKi8KLSAjaWZkZWYgVVNFX01BTlVBTAotICNpbmNsdWRlICJ0b29sX2h1Z2VoZWxwLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41NC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGYwNTMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41NC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgdG9vbCBhbmQgbGlicmFyeSBmb3IgY2xpZW50LXNpZGUgVVJMIHRyYW5zZmVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jdXJsLmhheHguc2UvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGlzdC5jZ2k/bGlzdD1jdXJsLXRyYWNrZXIiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9ODttZDU9M2EzNDk0MmY0YWUzZmJmMWEzMDMxNjA3MTRlNjY0YWMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC9jdXJsLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMjU0LnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtbWtoZWxwLnBhdGNoIFwKLSIKLQotIyBjdXJsIGxpa2VzIHRvIHNldCAtZzAgaW4gQ0ZMQUdTLCBzbyB3ZSBzdG9wIGl0Ci0jIGZyb20gbXVja2luZyBhcm91bmQgd2l0aCBkZWJ1ZyBvcHRpb25zCi0jCi1TUkNfVVJJICs9ICIgZmlsZTovL2NvbmZpZ3VyZV9hYy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZiNmViNzIyZjUxMmU3YTI0ODU1ZmYwODRmNTRmZTU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkZmM0ZGYyZDAwMWVlMGM0NGVjMDcxMTg2ZTc3MDA0NjI0OTI2M2M0OTFmY2FlNDhkZjBlMWEzY2E4ZjI1YTAiCi0KLUNWRV9QUk9EVUNUID0gImxpYmN1cmwiCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnIG11bHRpbGliX2hlYWRlcgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBnbnV0bHMgcHJveHkgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotCi0jICdhcmVzJyBhbmQgJ3RocmVhZGVkLXJlc29sdmVyJyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlCi1QQUNLQUdFQ09ORklHW2FyZXNdID0gIi0tZW5hYmxlLWFyZXMsLS1kaXNhYmxlLWFyZXMsYy1hcmVzIgotUEFDS0FHRUNPTkZJR1tkaWN0XSA9ICItLWVuYWJsZS1kaWN0LC0tZGlzYWJsZS1kaWN0LCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnb3BoZXJdID0gIi0tZW5hYmxlLWdvcGhlciwtLWRpc2FibGUtZ29waGVyLCIKLVBBQ0tBR0VDT05GSUdbaW1hcF0gPSAiLS1lbmFibGUtaW1hcCwtLWRpc2FibGUtaW1hcCwiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKLVBBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbiwtLXdpdGhvdXQtbGliaWRuLGxpYmlkbiIKLVBBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbcG9wM10gPSAiLS1lbmFibGUtcG9wMywtLWRpc2FibGUtcG9wMywiCi1QQUNLQUdFQ09ORklHW3Byb3h5XSA9ICItLWVuYWJsZS1wcm94eSwtLWRpc2FibGUtcHJveHksIgotUEFDS0FHRUNPTkZJR1tydG1wZHVtcF0gPSAiLS13aXRoLWxpYnJ0bXAsLS13aXRob3V0LWxpYnJ0bXAscnRtcGR1bXAiCi1QQUNLQUdFQ09ORklHW3J0c3BdID0gIi0tZW5hYmxlLXJ0c3AsLS1kaXNhYmxlLXJ0c3AsIgotUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXNtYiwtLWRpc2FibGUtc21iLCIKLVBBQ0tBR0VDT05GSUdbc210cF0gPSAiLS1lbmFibGUtc210cCwtLWRpc2FibGUtc210cCwiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLXNzbCAtLXdpdGgtcmFuZG9tPS9kZXYvdXJhbmRvbSwtLXdpdGhvdXQtc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgotUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKLVBBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCi1QQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotUEFDS0FHRUNPTkZJR1tuZ2h0dHAyXSA9ICItLXdpdGgtbmdodHRwMiwtLXdpdGhvdXQtbmdodHRwMixuZ2h0dHAyIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1jcnlwdG8tYXV0aCBcCi0gICAgLS13aXRoLWNhLWJ1bmRsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKLSAgICAtLXdpdGhvdXQtbGlibWV0YWxpbmsgXAotICAgIC0td2l0aG91dC1saWJwc2wgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgY3VybC9jdXJsYnVpbGQuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0JIyBjbGVhbnVwIGJ1aWxkcGF0aHMgZnJvbSBjdXJsLWNvbmZpZwotCXNlZCAtaSBcCi0JICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3MsLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAke0R9JHtiaW5kaXJ9L2N1cmwtY29uZmlnCi19Ci0KLVBBQ0tBR0VTID0rICJsaWIke0JQTn0iCi0KLUZJTEVTX2xpYiR7QlBOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotUlJFQ09NTUVORFNfbGliJHtCUE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pzaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjYwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTA0ZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjYwLjAuYmIKQEAgLTAsMCArMSw3MCBAQAorU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgdG9vbCBhbmQgbGlicmFyeSBmb3IgY2xpZW50LXNpZGUgVVJMIHRyYW5zZmVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9jdXJsLmhheHguc2UvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGlzdC5jZ2k/bGlzdD1jdXJsLXRyYWNrZXIiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9ODttZDU9M2EzNDk0MmY0YWUzZmJmMWEzMDMxNjA3MTRlNjY0YWMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC9jdXJsLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZDJhYWJmNzhkZWQ2YTlhZWM4YTU0NTMyZmQ2YjVkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OTdkZmIyMjA0YmQ5OWJlMzI4Mjc5Zjg4ZjU1YjdjNjE1OTIyMTZiMDU0MmZjYmU5OTVjNjBhYTkyODcxZTliIgorCitDVkVfUFJPRFVDVCA9ICJsaWJjdXJsIgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKKworIyAnYXJlcycgYW5kICd0aHJlYWRlZC1yZXNvbHZlcicgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQorUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLWVuYWJsZS1hcmVzLC0tZGlzYWJsZS1hcmVzLGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCitQQUNLQUdFQ09ORklHW2ltYXBdID0gIi0tZW5hYmxlLWltYXAsLS1kaXNhYmxlLWltYXAsIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKK1BBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWdzc2FwaSwtLXdpdGhvdXQtZ3NzYXBpLGtyYjUiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXAsLS1kaXNhYmxlLWxkYXAsIgorUEFDS0FHRUNPTkZJR1tsZGFwc10gPSAiLS1lbmFibGUtbGRhcHMsLS1kaXNhYmxlLWxkYXBzLCIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtbGliaWRuMiwtLXdpdGhvdXQtbGliaWRuMixsaWJpZG4yIgorUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSA9ICItLXdpdGgtbGlic3NoMiwtLXdpdGhvdXQtbGlic3NoMixsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1tuZ2h0dHAyXSA9ICItLXdpdGgtbmdodHRwMiwtLXdpdGhvdXQtbmdodHRwMixuZ2h0dHAyIgorUEFDS0FHRUNPTkZJR1twb3AzXSA9ICItLWVuYWJsZS1wb3AzLC0tZGlzYWJsZS1wb3AzLCIKK1BBQ0tBR0VDT05GSUdbcHJveHldID0gIi0tZW5hYmxlLXByb3h5LC0tZGlzYWJsZS1wcm94eSwiCitQQUNLQUdFQ09ORklHW3J0bXBkdW1wXSA9ICItLXdpdGgtbGlicnRtcCwtLXdpdGhvdXQtbGlicnRtcCxydG1wZHVtcCIKK1BBQ0tBR0VDT05GSUdbcnRzcF0gPSAiLS1lbmFibGUtcnRzcCwtLWRpc2FibGUtcnRzcCwiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtc21iLC0tZGlzYWJsZS1zbWIsIgorUEFDS0FHRUNPTkZJR1tzbXRwXSA9ICItLWVuYWJsZS1zbXRwLC0tZGlzYWJsZS1zbXRwLCIKK1BBQ0tBR0VDT05GSUdbc3NsXSA9ICItLXdpdGgtc3NsIC0td2l0aC1yYW5kb209L2Rldi91cmFuZG9tLC0td2l0aG91dC1zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbdGVsbmV0XSA9ICItLWVuYWJsZS10ZWxuZXQsLS1kaXNhYmxlLXRlbG5ldCwiCitQQUNLQUdFQ09ORklHW3RmdHBdID0gIi0tZW5hYmxlLXRmdHAsLS1kaXNhYmxlLXRmdHAsIgorUEFDS0FHRUNPTkZJR1t0aHJlYWRlZC1yZXNvbHZlcl0gPSAiLS1lbmFibGUtdGhyZWFkZWQtcmVzb2x2ZXIsLS1kaXNhYmxlLXRocmVhZGVkLXJlc29sdmVyIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLi8sLS13aXRob3V0LXpsaWIsemxpYiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAorICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCisgICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKKyAgICAtLXdpdGhvdXQtbGlicHNsIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKKwlzZWQgLWkgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZworfQorCitQQUNLQUdFUyA9KyAibGliJHtCUE59IgorCitGSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCmluZGV4IGZiNGJlZmIuLjA5M2VlNDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgpAQCAtMTIsOSArMTIsMTEgQEAKIFNVTU1BUlkgPSAiQmVya2VsZXkgRGF0YWJhc2UgdjUiCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9yYWNsZS5jb20vdGVjaG5ldHdvcmsvZGF0YWJhc2UvZGF0YWJhc2UtdGVjaG5vbG9naWVzL2JlcmtlbGV5ZGIvb3ZlcnZpZXcvaW5kZXguaHRtbCIKIExJQ0VOU0UgPSAiU2xlZXB5Y2F0IgotVklSVFVBTF9OQU1FID89ICJ2aXJ0dWFsL2RiIgogUkNPTkZMSUNUU18ke1BOfSA9ICJkYjMiCiAKK0NWRV9QUk9EVUNUID0gIm9yYWNsZV9iZXJrZWxleV9kYiIKK0NWRV9WRVJTSU9OID0gIjExLjIuJHtQVn0iCisKIFBSID0gInIxIgogUEUgPSAiMSIKIApAQCAtMzcsMTUgKzM5LDYgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMKIAotIyBQdXQgdmlydHVhbC9kYiBpbiBhbnkgYXBwcm9wcmlhdGUgcHJvdmlkZXIgb2YgYQotIyByZWxhdGlvbmFsIGRhdGFiYXNlLCB1c2UgaXQgYXMgYSBkZXBlbmRlbmN5IGluCi0jIHBsYWNlIG9mIGEgc3BlY2lmaWMgZGIgYW5kIHVzZToKLSMKLSMgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZGIKLSMKLSMgdG8gc2VsZWN0IHRoZSBjb3JyZWN0IGRiIGluIHRoZSBidWlsZCAoZGlzdHJvKSAuY29uZgotUFJPVklERVMgKz0gIiR7VklSVFVBTF9OQU1FfSIKLQogIyBUaGUgZXhlY3V0YWJsZXMgZ28gaW4gYSBzZXBhcmF0ZSBwYWNrYWdlIC0gdHlwaWNhbGx5IHRoZXJlCiAjIGlzIG5vIG5lZWQgdG8gaW5zdGFsbCB0aGVzZSB1bmxlc3MgZG9pbmcgcmVhbCBkYXRhYmFzZQogIyBtYW5hZ2VtZW50IG9uIHRoZSBzeXN0ZW0uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODU3ZDRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgU01BSUxfR1BMIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZjAxYTUyMDNkNTA1MTJmYzQ4MzBiNDMzMmI2OTZhOWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNzA0MDJUMjExNzMyWi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiIKLSMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCi0jIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWU1ZmNlY2FhYjA3MWJkMGM5M2U4YTBjZWU2NWQ2YzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDY0NDZjZDRjMGQzMDlmZDMxYTA2ODJjNWMyZjA3Zjc2MTNmYjg2N2Y3Njk0MTRiOWNjNTFmMTU1YWQ3MzE3MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6dGVtcGZpbGUuMSB3aGljaC4xOndoaWNoLjE6ZycgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgotICAgICAgICAjIERlYmlhbiBwbGFjZXMgc29tZSB1dGlscyBpbnRvICR7YmFzZV9iaW5kaXJ9IGFzIGRvZXMgYnVzeWJveAotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotICAgICAgICBmb3IgYXBwIGluIHJ1bi1wYXJ0cyB0ZW1wZmlsZTsgZG8KLSAgICAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vJGFwcCAke0R9JHtiYXNlX2JpbmRpcn0vJGFwcAotICAgICAgICBkb25lCi0gICAgZmkKLX0KLQotIyBOb3RlIHRoYXQgd2UgcGFja2FnZSB0aGUgdXBkYXRlLWFsdGVybmF0aXZlcyBuYW1lLgotIwotUEFDS0FHRVMgPSsgIiR7UE59LXJ1bi1wYXJ0cyIKLUZJTEVTXyR7UE59LXJ1bi1wYXJ0cyA9ICIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMuZGViaWFudXRpbHMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ydW4tcGFydHMiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1BTFRFUk5BVElWRV9QUklPUklUWT0iMzAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJhZGQtc2hlbGwgaW5zdGFsbGtlcm5lbCByZW1vdmUtc2hlbGwgc2F2ZWxvZyB0ZW1wZmlsZSB3aGljaCIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0tcnVuLXBhcnRzID0gIjYwIgotQUxURVJOQVRJVkVfJHtQTn0tcnVuLXBhcnRzID0gInJ1bi1wYXJ0cyIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIndoaWNoLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2guMV0gPSAiJHttYW5kaXJ9L21hbjEvd2hpY2guMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZC1zaGVsbF09IiR7c2JpbmRpcn0vYWRkLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luc3RhbGxrZXJuZWxdPSIke3NiaW5kaXJ9L2luc3RhbGxrZXJuZWwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVtb3ZlLXNoZWxsXT0iJHtzYmluZGlyfS9yZW1vdmUtc2hlbGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVuLXBhcnRzXT0iJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NhdmVsb2ddPSIke2JpbmRpcn0vc2F2ZWxvZyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZW1wZmlsZV09IiR7YmFzZV9iaW5kaXJ9L3RlbXBmaWxlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoXT0iJHtiaW5kaXJ9L3doaWNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDBlNmYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC40LmJiCkBAIC0wLDAgKzEsNTcgQEAKK1NVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgorCitTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTgwMTI5VDE2NDcyN1ovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCisjIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQorIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKKworU1JDX1VSSVttZDVzdW1dID0gImE2ZGNkNDk2YjRmNzliM2M0NTJjM2E3NGMyZDNmODljIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwNjFhYjk5YWVhNjFmODkyMDQzYjc2MjRiMDIxYWI1YjE5M2U5YzZiYmZkNDc0ZGEwZmJjZGQ1MDZiZTFlYjIiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KKyAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCisgICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKKyAgICAgICAgZG9uZQorICAgIGZpCit9CisKKyMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KKyMKK1BBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCitGSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKK0FMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYmUxNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJLZXkvdmFsdWUgZGF0YWJhc2UgbGlicmFyeSB3aXRoIGV4dGVuc2libGUgaGFzaGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGJtLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNDFkYTFiOWZlNDJlNjQyY2JiMmMyNGQ1ZTBjNGQyNCIKLQotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RibS9nZGJtLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg5MjlkY2RhMmE4ZGUzZmQyMzY3YmRiZjY2NzY5Mzc2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkMjUyY2JkN2Q3OTNmN2IxMmJjY2VhZGRkYTk4ZDI1N2MxNGY0ZDE4OTBkODUxYzM4NmMzNzIwNzAwMGEyNTMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBsaWJfcGFja2FnZSBwdGVzdAotCi0jIE5lZWRlZCBmb3IgZGJtIHB5dGhvbiBtb2R1bGUKLUVYVFJBX09FQ09ORiA9ICItZW5hYmxlLWxpYmdkYm0tY29tcGF0IgotCi0jIFN0b3AgcHJlc2VuY2Ugb2YgZGJtL25iZG0gb24gdGhlIGhvc3QgY29udGFtaW5hdGluZyBidWlsZHMKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9saWJfbmRibV9tYWluPW5vIGFjX2N2X2xpYl9kYm1fbWFpbj1ubyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgIyBDcmVhdGUgYSBzeW1saW5rIHRvIG5kYm0uaCBhbmQgZ2RibS5oIGluIGluY2x1ZGUvZ2RibSB0byBsZXQgb3RoZXIgcGFja2FnZXMgdG8gZmluZAotICAgICMgdGhlc2UgaGVhZGVycwotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vZ2RibQotICAgIGxuIC1zZiAuLi9uZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vbmRibS5oCi0gICAgbG4gLXNmIC4uL2dkYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9nZGJtLmgKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImRpZmZ1dGlscyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICBvZV9ydW5tYWtlIC1DIHRlc3RzIGJ1aWxkdGVzdHMKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWNvbXBhdCBcCi0gICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1jb21wYXQgPSAiJHtsaWJkaXJ9L2xpYmdkYm1fY29tcGF0JHtTT0xJQlN9IFwKLSAgICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRlNTY5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xNC4xLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCisKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMmRkY2IzODk3ZWZhMGY1NzQ4NGFmMmJkNGY0Zjg0OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZGNlZmYwMGZmZTAxNDQ5NWJlZDNhZWQ3MWM3OTEwYWE4OGJmMjkzNzlmNzk1YWJjMGY0NmQ0ZWU1ZjhiYzVmIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKKworIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCitFWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKKworIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKKyAgICAjIHRoZXNlIGhlYWRlcnMKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KKyAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAorICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAorICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCisgICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaAppbmRleCA2NjUzNjc2Li4xZTQ3OTI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKQEAgLTE4LDEzICsxOCwxMyBAQAogIGNvbmZpZ3VyZS5hYyB8IDExIC0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDExIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4NTdlYTNiLi4zNTllOTE5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MDcsMTUgKzYwNyw2IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgR01QX0lOQ0xVREVfTVBOKGFybS9hcm0tZGVmcy5tNCkKLSAgICAgQ0FMTElOR19DT05WRU5USU9OU19PQkpTPSdhcm0zMmNhbGwubG8gYXJtMzJjaGVjay5sbycKK0luZGV4OiBnbXAtNi4xLjIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ21wLTYuMS4yLm9yaWcvY29uZmlndXJlLmFjCisrKysgZ21wLTYuMS4yL2NvbmZpZ3VyZS5hYworQEAgLTYwNCwxNSArNjA0LDYgQEAgY2FzZSAkaG9zdCBpbgorICAgICBhbnlfMzJfdGVzdGxpc3Q9InNpemVvZi1sb25nLTQiCisgICAgIGFueV82NF90ZXN0bGlzdD0ic2l6ZW9mLWxvbmctOCIKICAKIC0gICAgIyBUaGlzIGlzIG5lZWRlZCBmb3IgY2xhbmcsIHdoaWNoIGlzIG5vdCBjb250ZW50IHdpdGggZmxhZ3MgbGlrZSAtbWZwdT1uZW9uCiAtICAgICMgYWxvbmUuCkBAIC0zOCw3ICszOCw3IEBACiAgICAgICMgRklYTUU6IFdlIG1ha2UgbWFuZGF0b3J5IGNvbXBpbGVyIG9wdGlvbnMgb3B0aW9uYWwgaGVyZS4gIFdlIHNob3VsZAogICAgICAjIGVpdGhlciBlbmZvcmNlIHRoZW0sIG9yIG9yZ2FuaXNlIHRvIHN0cmlwIHBhdGhzIGFzIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICMgb3B0aW9ucyBmYWlsLgotQEAgLTY4Niw4ICs2NzcsNiBAQCBjYXNlICRob3N0IGluCitAQCAtNzQ2LDggKzczNyw2IEBAIGNhc2UgJGhvc3QgaW4KICAJOzsKICAgICAgICAqKQogIAlwYXRoPSJhcm0iCkBAIC00Nyw2ICs0NywzIEBACiAgCTs7CiAgICAgIGVzYWMKICAgICAgOzsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaAppbmRleCA1NjRkMTJkLi4zOTM1NTg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBnbXAtNS4wLjMvbG9uZ2xvbmcuaAorSW5kZXg6IGdtcC02LjEuMi9sb25nbG9uZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ21wLTUuMC4zLm9yaWcvbG9uZ2xvbmcuaAotKysrIGdtcC01LjAuMy9sb25nbG9uZy5oCi1AQCAtOTk0LDggKzk5NCwxMCBAQCBleHRlcm4gVVd0eXBlIF9fTVBOKHVkaXZfcXJubmQpIF9QUk9UTyAoCistLS0gZ21wLTYuMS4yLm9yaWcvbG9uZ2xvbmcuaAorKysrIGdtcC02LjEuMi9sb25nbG9uZy5oCitAQCAtMTAzNiw4ICsxMDM2LDEwIEBAIGV4dGVybiBVV3R5cGUgX19NUE4odWRpdl9xcm5uZCkgKFVXdHlwZQogICAgIGNvdW50IGlzIG9ubHkgYW4gaW50LiAqLwogICNkZWZpbmUgY291bnRfdHJhaWxpbmdfemVyb3MoY291bnQsIHgpCQkJCQlcCiAgICBkbyB7CQkJCQkJCQkJXApAQCAtMTQsNSArMTQsNSBAQAogKyAgICBfX2FzbV9fICgiYnNmcSAlMSwlMCIgOiAiPXIiIChfX2NidG1wKSA6ICJybSIgKChVREl0eXBlKSh4KSkpOwlcCiArICAgIChjb3VudCkgPSBfX2NidG1wOwkJCQkJCQlcCiAgICB9IHdoaWxlICgwKQotICNlbmRpZiAvKiB4ODZfNjQgKi8KKyAjZW5kaWYgLyogX19hbWQ2NF9fICovCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoCmluZGV4IDc0OTA0YTIuLjZiMDg5Y2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoCkBAIC0xLDE1ICsxLDE1IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IGdtcC00LjIuNC9NYWtlZmlsZS5hbQorSW5kZXg6IGdtcC02LjEuMi9NYWtlZmlsZS5hbQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC00LjIuNC5vcmlnL01ha2VmaWxlLmFtCTIwMDgtMDktMTAgMTk6MzE6MjcuMDAwMDAwMDAwICswMDAwCi0rKysgZ21wLTQuMi40L01ha2VmaWxlLmFtCTIwMDktMDctMDYgMjA6MTk6MTkuMDAwMDAwMDAwICswMDAwCi1AQCAtMTA2LDcgKzEwNiw3IEBACi0gIyBidXQgYW55b25lIGtub3dsZWRnYWJsZSBlbm91Z2ggdG8gYmUgcGxheWluZyB3aXRoIGV4ZWNfcHJlZml4IHdpbGwgYmUgYWJsZQorLS0tIGdtcC02LjEuMi5vcmlnL01ha2VmaWxlLmFtCisrKysgZ21wLTYuMS4yL01ha2VmaWxlLmFtCitAQCAtMTMwLDcgKzEzMCw3IEBAIEVYVFJBX0RJU1QgKz0gZ21weHguaAorICMgYnV0IGFueW9uZSBrbm93bGVkZ2VhYmxlIGVub3VnaCB0byBiZSBwbGF5aW5nIHdpdGggZXhlY19wcmVmaXggd2lsbCBiZSBhYmxlCiAgIyB0byBhZGRyZXNzIHRoYXQuCiAgIwogLWluY2x1ZGVleGVjZGlyID0gJChleGVjX3ByZWZpeCkvaW5jbHVkZQogK2luY2x1ZGVleGVjZGlyID0gJChpbmNsdWRlZGlyKQogIGluY2x1ZGVfSEVBREVSUyA9ICQoR01QWFhfSEVBREVSU19PUFRJT04pCi0gbm9kaXN0X2luY2x1ZGVleGVjX0hFQURFUlMgPSBnbXAuaCAkKE1QQlNEX0hFQURFUlNfT1BUSU9OKQotIGxpYl9MVExJQlJBUklFUyA9IGxpYmdtcC5sYSAkKEdNUFhYX0xUTElCUkFSSUVTX09QVElPTikgJChNUEJTRF9MVExJQlJBUklFU19PUFRJT04pCisgbm9kaXN0X2luY2x1ZGVleGVjX0hFQURFUlMgPSBnbXAuaAorIGxpYl9MVExJQlJBUklFUyA9IGxpYmdtcC5sYSAkKEdNUFhYX0xUTElCUkFSSUVTX09QVElPTikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlM2E2NGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMGI5NzE0OGMzYWFkMDk5M2E5YWViMDg4NTk2ZmE2M2EyZmVjNTMyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMiBKYW4gMjAxOCAxODowMDoyMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHVzZSBhIGN1c3RvbSB2YWx1ZSBmb3IgdGhlIGxvY2F0aW9uIG9mCisgZ3BnLWFnZW50IHNvY2tldCBpbiB0aGUgZmlsZXN5c3RlbQorCitUaGlzIHNob3VsZCBhdm9pZCBjbGFzaGVzIHdpdGggdGhlIGhvc3QgZ3BnLWFnZW50IG9ic2VydmVkIG9uIGF1dG9idWlsZGVycy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljLCBhbmQgb25seSBmb3IgLW5hdGl2ZV0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAzODJlZjFkLi4wNTcwZDdjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xODE4LDcgKzE4MTgsNyBAQCBBQ19ERUZJTkVfVU5RVU9URUQoR1BHQ09ORl9ESVNQX05BTUUsICJHUEdDb25mIiwKKyAKKyBBQ19ERUZJTkVfVU5RVU9URUQoR1BHVEFSX05BTUUsICJncGd0YXIiLCBbVGhlIG5hbWUgb2YgdGhlIGdwZ3RhciB0b29sXSkKKyAKKy1BQ19ERUZJTkVfVU5RVU9URUQoR1BHX0FHRU5UX1NPQ0tfTkFNRSwgIlMuZ3BnLWFnZW50IiwKKytBQ19ERUZJTkVfVU5RVU9URUQoR1BHX0FHRU5UX1NPQ0tfTkFNRSwgIlMuZ3BnLWFnZW50LnlvY3RvLW5hdGl2ZSIsCisgICAgICAgICAgICAgICAgICAgIFtUaGUgbmFtZSBvZiB0aGUgYWdlbnQgc29ja2V0XSkKKyBBQ19ERUZJTkVfVU5RVU9URUQoR1BHX0FHRU5UX0VYVFJBX1NPQ0tfTkFNRSwgIlMuZ3BnLWFnZW50LmV4dHJhIiwKKyAgICAgICAgICAgICAgICAgICAgW1RoZSBuYW1lIG9mIHRoZSBhZ2VudCBzb2NrZXQgZm9yIHJlbW90ZSBhY2Nlc3NdKQorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTc2ZGRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgotCi1ERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ODlmMTY5NDlmYWUyZDAwM2QzODdmNDllOWRhNGI3NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDUxNGEwYmUwZjdhMWZmMjYzMTkzMzMwMDE5ZWI0YjUzYzgyZjBmNWUyMzBhZjNjMTRkZjM3MTI3MWE0NWU2IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAotCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAotCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKLSAgICAgICAgICAgICAgICIKLVJSRUNPTU1FTkRTXyR7UE59ID0gInBpbmVudHJ5IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVybmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQotCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKLQlybSAtZiAke1N9L200L2tzYmEubTQKLQlybSAtZiAke1N9L200L2xpYmdjcnlwdC5tNAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlsbiAtc2YgZ3BnMiAke0R9JHtiaW5kaXJ9L2dwZwotCWxuIC1zZiBncGd2MiAke0R9JHtiaW5kaXJ9L2dwZ3YKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsIC0tZGlzYWJsZS1nbnV0bHMsIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZjFhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjQuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YTJiNmJmMmNiMzhlZTUyNjE5ZTYwZjMwYTFmYzcyNTciCisKK0RFUEVORFMgPSAibnB0aCBsaWJhc3N1YW4gbGlia3NiYSB6bGliIGJ6aXAyIHJlYWRsaW5lIGxpYmdjcnlwdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZworCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaCIKKworCitTUkNfVVJJW21kNXN1bV0gPSAiNzA5ZTVhZjViYmE4NGQyNTFjNTIwMjIyZTcyMDk3MmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDAxYTNlNjQ3ODBmZGZhNmQ3NjcwZGUwODgwYWE1YzlkNTg5YjNkYjdhNzA5ODk3OWQ3NjA2Y2VjNTQ2ZjJlYyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKKwkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKKwkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorCQktLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorCQktLWVuYWJsZS1ncGctaXMtZ3BnMiBcCisgICAgICAgICAgICAgICAiCitSUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00CisJcm0gLWYgJHtTfS9tNC9rc2JhLm00CisJcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKKwlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Cit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLCAtLWRpc2FibGUtZ251dGxzLCBnbnV0bHMiCitQQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0tZW5hYmxlLXNxbGl0ZSwgLS1kaXNhYmxlLXNxbGl0ZSwgc3FsaXRlMyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKaW5kZXggMjliNWRkNi4uN2JjYjkxMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYwpAQCAtMjEsNyArMjEsNyBAQAogCiBpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZSBndGstZG9jCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4gemxpYiIKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4iCiAKICMgWW91IG11c3QgYWxzbyBoYXZlIENPTkZJR19TRUNDT01QIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBmb3IKICMgc2VjY29tcCB0byB3b3JrLgpAQCAtMzIsNyArMzIsNiBAQAogUEFDS0FHRUNPTkZJR1tsaWJ0YXNuMV0gPSAiLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xPW5vLC0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMSxsaWJ0YXNuMSIKIFBBQ0tBR0VDT05GSUdbcDExLWtpdF0gPSAiLS13aXRoLXAxMS1raXQsLS13aXRob3V0LXAxMS1raXQscDExLWtpdCIKIFBBQ0tBR0VDT05GSUdbdHBtXSA9ICItLXdpdGgtdHBtLC0td2l0aG91dC10cG0sdHJvdXNlcnMiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tZW5hYmxlLWRvYyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2gKaW5kZXggZjBiN2NhMi4uYjZlN2JjOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaApAQCAtMTQsMTkgKzE0LDE2IEBACiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2OTA3YjIxLi43YzcwZDllIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05NDgsNyArOTQ4LDcgQEAgWUVBUj1gZGF0ZSArJVlgCitJbmRleDogZ251dGxzLTMuNS4xNi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnbnV0bHMtMy41LjE2Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ251dGxzLTMuNS4xNi9jb25maWd1cmUuYWMKK0BAIC05NTUsNyArOTU1LDcgQEAgWUVBUj1gZGF0ZSArJVlgCiAgQUNfU1VCU1QoW1lFQVJdLCAkWUVBUikKICAKICBmb3IgaSBpbiAke3NyY2Rpcn0vc3JjLyotYXJncy5jLmJhayAke3NyY2Rpcn0vc3JjLyotYXJncy5oLmJhazsgZG8KIC0JbmFtPSQoYmFzZW5hbWUgJGl8c2VkICdzLy5iYWsvL2cnKQogKwluYW09JChiYXNlbmFtZSAkaXxzZWQgJ3MvXC5iYWskLy8nKQogIAlpZiB0ZXN0ICIkY3JlYXRlX2xpYm9wdHNfbGlua3MiID0gInllcyI7dGhlbgorIAkJcm0gLWYgInNyYy8kbmFtLnN0YW1wIgogIAkJcm0gLWYgInNyYy8kbmFtIgotIAkJQUNfQ09ORklHX0xJTktTKFtzcmMvJG5hbTokaV0pCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTE0MWE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSAxODA4MTA2OGE5N2MwMDAxNWFhYmM1ZmEzMjE2NjQ5NTE0NThlYTBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KLURhdGU6IEZyaSwgOSBKdW4gMjAxNyAxNToyMDozMSArMDkwMAotU3ViamVjdDogW1BBVENIXSBGcm9tIGNlZTgwYWYxZmU5M2Y1Yjc2NzY1YWZlZWJmY2MzYjkwMjc2OGY1ZDYgTW9uIFNlcCAxNwotIDAwOjAwOjAwIDIwMDEgRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4gRGF0ZTogVHVlLCAyNiBNYXkKLSAyMDE1IDIxOjQxOjI0IC0wNzAwIFN1YmplY3Q6IFtQQVRDSF0gdXNlIHBrZy1jb25maWcgdG8gbG9jYXRlIHpsaWIKLQotQUNfTElCX0hBVkVfTElOS0ZMQUdTIGNhbiBzb21ldGltZXMgZmluZCBob3N0IGxpYnMgYW5kIGlzIHRoZXJlZm9yZSBub3QKLXJvYnVzdCB3aGVuIGNyb3NzLWNvbXBpbGluZy4gUmVtb3ZlIGl0IGZvciB6bGliIGFuZCB1c2UgUEtHX0NIRUNLX01PRFVMRVMKLWluc3RlYWQuCi0KLVJlbW92aW5nIEFDX0xJQl9IQVZFX0xJTktGTEFHUyBmb3IgemxpYiBhbHNvIHJlbW92ZXMgdGhlIC0td2l0aC1saWJ6LXByZWZpeAotY29uZmlndXJlIG9wdGlvbi4gSWYgemxpYiBzdXBwb3J0IGlzIGVuYWJsZWQsIHRoZW4gZmFpbHVyZSB0byBmaW5kIHpsaWIgdmlhCi1wa2ctY29uZmlnIGlzIG5vdyB0cmVhdGVkIGFzIGEgZmF0YWwgZXJyb3IuCi0KLUNoYW5nZSBiYXNlZCBvbiBDaHJvbWVPUyBnbnV0bHMgMi4xMi4yMyBjcm9zcy1jb21waWxlIGZpeGVzIHBhdGNoOgotCi0gIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vIy9jLzI3MTY2MS8KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotCi1SZWJhc2Ugb24gZ251dGxzIDMuNS4xMwotCi1TaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMjUgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjNjUyNjhlLi5mNmExOGFhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03MzUsMjggKzczNSwyMSBAQCBBQ19BUkdfV0lUSCh6bGliLCBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LXpsaWJdLAotIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBpbmNsdWRlIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydF0pCi0gaWYgdGVzdCB4JGFjX3psaWIgIT0geG5vOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQotLSBBQ19MSUJfSEFWRV9MSU5LRkxBR1MoeiwsIFsjaW5jbHVkZSA8emxpYi5oPl0sIFtjb21wcmVzcyAoMCwgMCwgMCwgMCk7XSkKLS0gaWYgdGVzdCB4JGFjX2N2X2xpYnogIT0geHllczsgdGhlbgotLSAgIEFDX01TR19XQVJOKAotLSoqKiAKLS0qKiogWkxJQiB3YXMgbm90IGZvdW5kLiBZb3Ugd2lsbCBub3QgYmUgYWJsZSB0byB1c2UgWkxJQiBjb21wcmVzc2lvbi4pCi0tIGZpCi0gZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotIGZpCi0gCi0tUEtHX0NIRUNLX0VYSVNUUyh6bGliLCBaTElCX0hBU19QS0dDT05GSUc9eSwgWkxJQl9IQVNfUEtHQ09ORklHPW4pCi0tCi0gaWYgdGVzdCB4JGFjX3psaWIgIT0geG5vOyB0aGVuCi0tICBpZiB0ZXN0ICIkWkxJQl9IQVNfUEtHQ09ORklHIiA9ICJ5IiA7IHRoZW4KLS0gICAgaWYgdGVzdCAieCRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSIgPSB4OyB0aGVuCi0tICAgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IlJlcXVpcmVzLnByaXZhdGU6IHpsaWIiCi0tICAgIGVsc2UKLS0gICAgICBHTlVUTFNfUkVRVUlSRVNfUFJJVkFURT0iJEdOVVRMU19SRVFVSVJFU19QUklWQVRFLCB6bGliIgotLSAgICBmaQotLSAgICBMSUJaX1BDPSIiCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhaTElCLCB6bGliKQotKyAgSEFWRV9MSUJaPXllcwotKyAgQUNfREVGSU5FKFtIQVZFX0xJQlpdLCBbMV0sIFt6bGliIGlzIGVuYWJsZWRdKQotKyAgQUNfU1VCU1QoSEFWRV9MSUJaKQotKyAgTFRMSUJaPSRaTElCX0xJQlMKLSsgIEFDX1NVQlNUKExUTElCWikKLSsgIGlmIHRlc3QgIngkR05VVExTX1JFUVVJUkVTX1BSSVZBVEUiID0geDsgdGhlbgotKyAgICBHTlVUTFNfUkVRVUlSRVNfUFJJVkFURT0iUmVxdWlyZXMucHJpdmF0ZTogemxpYiIKLSAgIGVsc2UKLS0gICAgTElCWl9QQz0kTElCWgotKyAgICBHTlVUTFNfUkVRVUlSRVNfUFJJVkFURT0iJEdOVVRMU19SRVFVSVJFU19QUklWQVRFLCB6bGliIgotICAgZmkKLSBmaQotIEFDX1NVQlNUKExJQlpfUEMpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS4xMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVkN2QwOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIGdudXRscy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2FybV9lYWJpLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjRmZDQxYWQ4NjU3MjkzM2MyMzc5YjRjYzMyMWEwOTU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc5ZjU0ODBhZDE5OGRhZDViYzc4ZTA3NWY0YTQwYzRhMzE1YTFiMjA3MjY2NjkxOWQyZDA1YTA4YWVjMTMwOTYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYyNGEyMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xLmJiCkBAIC0wLDAgKzEsOSBAQAorcmVxdWlyZSBnbnV0bHMuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2FybV9lYWJpLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjRiNjVhZTNmZmVmNTlmM2VlZWQ1MWE2MTY2ZmYxMmIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwYjEwZDJjOTk5NGJjMDMyODI0MzE0NzE0ZDBlODRjMGYxOWJkYjNkNzE1ZDhlZDU1YmViNzM2NGE4ZWJhZWQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvQ1ZFLTIwMTctMTA3OTAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL0NWRS0yMDE3LTEwNzkwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTg0MzgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvQ1ZFLTIwMTctMTA3OTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIGQ4ZDgwNWUxZjJlNjc5OWJiMmRmZjQ4NzFhODU5OGRjODMwODhhMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtvcyBNYXZyb2dpYW5ub3BvdWxvcyA8bm1hdkByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAyMiBKdW4gMjAxNyAxNjozMTozNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBfYXNuMV9jaGVja19pZGVudGlmaWVyOiBzYWZlciBhY2Nlc3MgdG8gdmFsdWVzIHJlYWQKLQotU2lnbmVkLW9mZi1ieTogTmlrb3MgTWF2cm9naWFubm9wb3Vsb3MgPG5tYXZAcmVkaGF0LmNvbT4KLQotaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1saWJ0YXNuMS5naXQ7YT1jb21taXQ7aD1kOGQ4MDVlMWYyZTY3OTliYjJkZmY0ODcxYTg1OThkYzgzMDg4YTM5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctMTA3OTAKLQotU2lnbmVkLW9mZi1ieTogWXVlIFRhbyA8WXVlLlRhb0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvcGFyc2VyX2F1eC5jIHwgICAxNyArKysrKysrKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3BhcnNlcl9hdXguYyBiL2xpYi9wYXJzZXJfYXV4LmMKLWluZGV4IDk3NmFiMzguLjc4NmVhNjQgMTAwNjQ0Ci0tLS0gYS9saWIvcGFyc2VyX2F1eC5jCi0rKysgYi9saWIvcGFyc2VyX2F1eC5jCi1AQCAtOTU1LDcgKzk1NSw3IEBAIF9hc24xX2NoZWNrX2lkZW50aWZpZXIgKGFzbjFfbm9kZSBub2RlKQotIAkgIGlmIChwMiA9PSBOVUxMKQotIAkgICAgewotIAkgICAgICBpZiAocC0+dmFsdWUpCi0tCQlfYXNuMV9zdHJjcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCBwLT52YWx1ZSk7Ci0rCQlfYXNuMV9zdHJfY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgc2l6ZW9mKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nKSwgKGNoYXIqKXAtPnZhbHVlKTsKLSAJICAgICAgZWxzZQotIAkJX2FzbjFfc3RyY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgIihudWxsKSIpOwotIAkgICAgICByZXR1cm4gQVNOMV9JREVOVElGSUVSX05PVF9GT1VORDsKLUBAIC05NjgsOSArOTY4LDE1IEBAIF9hc24xX2NoZWNrX2lkZW50aWZpZXIgKGFzbjFfbm9kZSBub2RlKQotIAkgIGlmIChwMiAmJiAodHlwZV9maWVsZCAocDItPnR5cGUpID09IEFTTjFfRVRZUEVfREVGQVVMVCkpCi0gCSAgICB7Ci0gCSAgICAgIF9hc24xX3N0cl9jcHkgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgbm9kZS0+bmFtZSk7Ci0tCSAgICAgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgIi4iKTsKLS0JICAgICAgX2FzbjFfc3RyX2NhdCAobmFtZTIsIHNpemVvZiAobmFtZTIpLCAoY2hhciAqKSBwMi0+dmFsdWUpOwotLQkgICAgICBfYXNuMV9zdHJjcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCBwMi0+dmFsdWUpOwotKwkgICAgICBpZiAocDItPnZhbHVlKQotKwkgICAgICAgIHsKLSsJICAgICAgICAgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgIi4iKTsKLSsJICAgICAgICAgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgKGNoYXIgKikgcDItPnZhbHVlKTsKLSsJICAgICAgICAgIF9hc24xX3N0cl9jcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCBzaXplb2YoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcpLCAoY2hhciopcDItPnZhbHVlKTsKLSsJICAgICAgICB9Ci0rCSAgICAgIGVsc2UKLSsJCV9hc24xX3N0cmNweSAoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcsICIobnVsbCkiKTsKLSsKLSAJICAgICAgcDIgPSBhc24xX2ZpbmRfbm9kZSAobm9kZSwgbmFtZTIpOwotIAkgICAgICBpZiAoIXAyIHx8ICh0eXBlX2ZpZWxkIChwMi0+dHlwZSkgIT0gQVNOMV9FVFlQRV9PQkpFQ1RfSUQpIHx8Ci0gCQkgICEocDItPnR5cGUgJiBDT05TVF9BU1NJR04pKQotQEAgLTk5MCw3ICs5OTYsOCBAQCBfYXNuMV9jaGVja19pZGVudGlmaWVyIChhc24xX25vZGUgbm9kZSkKLSAJCSAgX2FzbjFfc3RyX2NweSAobmFtZTIsIHNpemVvZiAobmFtZTIpLCBub2RlLT5uYW1lKTsKLSAJCSAgX2FzbjFfc3RyX2NhdCAobmFtZTIsIHNpemVvZiAobmFtZTIpLCAiLiIpOwotIAkJICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksIChjaGFyICopIHAyLT52YWx1ZSk7Ci0tCQkgIF9hc24xX3N0cmNweSAoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcsIHAyLT52YWx1ZSk7Ci0rCQkgIF9hc24xX3N0cl9jcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCBzaXplb2YoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcpLCAoY2hhciopcDItPnZhbHVlKTsKLSsKLSAJCSAgcDIgPSBhc24xX2ZpbmRfbm9kZSAobm9kZSwgbmFtZTIpOwotIAkJICBpZiAoIXAyIHx8ICh0eXBlX2ZpZWxkIChwMi0+dHlwZSkgIT0gQVNOMV9FVFlQRV9PQkpFQ1RfSUQpCi0gCQkgICAgICB8fCAhKHAyLT50eXBlICYgQ09OU1RfQVNTSUdOKSkKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNzU3MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBBU04uMSBhbmQgREVSIG1hbmlwdWxhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0YXNuMS8iCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2VuZGxpbmU9ODttZDU9YzM4MDNhM2U4Y2E1YWI1ZWIxZTU5MTJmYWE0MDUzNTEiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ0YXNuMS9saWJ0YXNuMS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGRpbnQubTQtcmVpbnRyb2R1Y2UtR05VTElCX09WRVJSSURFU19XSU5UX1QtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA3OTAucGF0Y2ggXAotICAgICAgICAgICAiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWM3MjRiZDFmNzNhYWY0YTMxMTgzM2UxY2QyOTdiMjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjc1M2RhMmU2MjEyNTdmMzNmNWIwNTFjYzExNGQ0MTdlNTIwNmEwODE4ZmUwYjFlY2ZkNjE1M2Y3MDkzNDc1MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWcgbGliX3BhY2thZ2UgZ3RrLWRvYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDIyMzg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEzLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtlbmRsaW5lPTg7bWQ1PWMzODAzYTNlOGNhNWFiNWViMWU1OTEyZmFhNDA1MzUxIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3RkaW50Lm00LXJlaW50cm9kdWNlLUdOVUxJQl9PVkVSUklERVNfV0lOVF9ULWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImNlMmJhNGQzMDg4MTE5YjQ4ZTc1MzFhNzAzNjY5YzUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlNTI4ZThjMzE3ZGRkMTU2MjMwYzRlMzFkMDgyY2QxM2U3ZGRlYjdhNTQ4MjRiZTgyNjMyMjA5NTUwYzhjY2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2gKaW5kZXggMTRhNDNlZS4uZjE5OTdlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOGFlMTQ5MDM1Yzk3ZDI3Y2QyYzYyNDcwNGQxNjUxODA2YzUzNTc3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjY1ZmFmOGZlMGFjYWNhMjA0M2EyNDhhNGRmMDJiMDg2OGZmYTZkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgogRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowMDowOCAtMDQwMAotU3ViamVjdDogW1BBVENIIDEvNV0gcGtnY29uZmlnCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBwa2djb25maWcKIAogVXBkYXRlIGdwZ21lIHRvIHVzZSBwa2djb25maWcgaW5zdGVhZCBvZiAtY29uZmlnIGZpbGVzIHNpbmNlIGl0cwogc2ltcGxlciBhbmQgbGVzcyBlcnJvciBwcm9uZSB3aGVuIGNyb3NzIGNvbXBpbGluZy4KQEAgLTI1LDEwICsyNSwxMCBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZ3BnbWUucGMuaW4KIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMGRhYzZjZS4uNmE5ZTUwNyAxMDA2NDQKK2luZGV4IDZlYTRiY2QuLjJhMGQ1MjggMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTg2Niw2ICs4NjYsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCitAQCAtODg3LDYgKzg4Nyw3IEBAIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZSBzcmMvTWFrZWZpbGUKICAgICAgICAgICAgICAgICAgc3JjL3ZlcnNpb25pbmZvLnJjCiAgICAgICAgICAgICAgICAgIHNyYy9ncGdtZS5oKQogIEFDX0NPTkZJR19GSUxFUyhzcmMvZ3BnbWUtY29uZmlnLCBjaG1vZCAreCBzcmMvZ3BnbWUtY29uZmlnKQpAQCAtMjk5LDUgKzI5OSw1IEBACiArUmVxdWlyZXM6IGxpYmFzc3VhbiBncGctZXJyb3IKIFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaAppbmRleCBmMWY4YzkxLi5kMjAyNzFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2gKQEAgLTEsMjkgKzEsMjggQEAKLUZyb20gZmIxNjVjOWJkOTZhY2E4YzllZTNlNDUwOWM5YjZlMzVkMjM4YWQyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDI6NDcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzVdIGdwZ21lL2xhbmcvcHl0aG9uOiBncGctZXJyb3ItY29uZmlnIHNob3VsZCBub3QgYmUgdXNlZC4KK0Zyb20gMzBmN2E2OTRjYzQ1NjhlY2IyNGY3N2M4M2E2MTIzZWQzZjQwNzVmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMzEgSmFuIDIwMTggMTA6NDQ6MTkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3BnbWUvbGFuZy9weXRob246IGdwZy1lcnJvci1jb25maWcgc2hvdWxkIG5vdCBiZSB1c2VkCiAKLWdwZy1lcnJvci1jb25maWcgd2FzIG1vZGlmaWVkIGJ5IE9FIHRvIGFsd2F5cyByZXR1cm4gYW4gZXJyb3IuICBTbyB3ZSB3YW50Ci10byBmaW5kIGFuIGFsdGVybmF0aXZlIHdheSB0byByZXRyaWV2ZSB3aGF0ZXZlciBpdCBpcyB3ZSBuZWVkLiAgSXQgdHVybnMKLW91dCB0aGF0IHRoZSBzeXN0ZW0gaXMganVzdCB0cnlpbmcgdG8gZmluZCB0aGUgcGF0aCB0byB0aGUgZ3BnLWVycm9yLmgsIHdoaWNoCi13ZSBjYW4gcHVsbCBpbiBmcm9tIHRoZSBTVEFHSU5HX0lOQyBlbnZpcm9ubWVudC4KK2dwZy1lcnJvci1jb25maWcgd2FzIG1vZGlmaWVkIGJ5IE9FIHRvIGFsd2F5cyByZXR1cm4gYW4gZXJyb3IuCitTbyB3ZSB3YW50IHRvIGZpbmQgYW4gYWx0ZXJuYXRpdmUgd2F5IHRvIHJldHJpZXZlIHdoYXRldmVyIGl0CitpcyB3ZSBuZWVkLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NoYW5nZXMgYXJlIHNwZWNpZmljIHRvIE9FXQogCiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CiAKLVJlYmFzZSB0byAxLjkuMAorUmV3b3JrIHRvIDEuMTAuMAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLSBsYW5nL3B5dGhvbi9zZXR1cC5weS5pbiB8IDE1ICsrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQorIGxhbmcvcHl0aG9uL3NldHVwLnB5LmluIHwgMTAgKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgOSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluIGIvbGFuZy9weXRob24vc2V0dXAucHkuaW4KLWluZGV4IGJmNGVmYTMuLjdjMzQ0ODcgMTAwNzU1CitpbmRleCBmOWRkYTIwLi45ZjVkNjFmIDEwMDc1NQogLS0tIGEvbGFuZy9weXRob24vc2V0dXAucHkuaW4KICsrKyBiL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi1AQCAtMjQsNyArMjQsNiBAQCBpbXBvcnQgZ2xvYgorQEAgLTI2LDcgKzI2LDYgQEAgaW1wb3J0IHNodXRpbAogIGltcG9ydCBzdWJwcm9jZXNzCiAgCiAgIyBPdXQtb2YtdHJlZSBidWlsZCBvZiB0aGUgZ3BnIGJpbmRpbmdzLgpAQCAtMzEsMzUgKzMwLDIyIEBACiAgZ3BnbWVfY29uZmlnX2ZsYWdzID0gWyItLXRocmVhZD1wdGhyZWFkIl0KICBncGdtZV9jb25maWcgPSBbImdwZ21lLWNvbmZpZyJdICsgZ3BnbWVfY29uZmlnX2ZsYWdzCiAgZ3BnbWVfaCA9ICIiCi1AQCAtNTIsMTMgKzUxLDYgQEAgZWxzZToKLSAgICAgZGV2bnVsbCA9IG9wZW4ob3MuZGV2bnVsbCwgInciKQorQEAgLTE3NCwxNCArMTczLDcgQEAgY2xhc3MgQnVpbGRFeHRGaXJzdEhhY2soYnVpbGQpOgogIAotIHRyeToKLS0gICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGdwZ19lcnJvcl9jb25maWcgKyBbJy0tdmVyc2lvbiddLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCi0tZXhjZXB0OgotLSAgICBzeXMuZXhpdCgiQ291bGQgbm90IGZpbmQgZ3BnLWVycm9yLWNvbmZpZy4gICIgKwotLSAgICAgICAgICAgICAiUGxlYXNlIGluc3RhbGwgdGhlIGxpYmdwZy1lcnJvciBkZXZlbG9wbWVudCBwYWNrYWdlLiIpCisgICAgIGRlZiBfZ2VuZXJhdGVfZXJyb3JzX2koc2VsZik6CisgCistICAgICAgICB0cnk6CistICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGdwZ19lcnJvcl9jb25maWcgKyBbJy0tdmVyc2lvbiddLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9ZGV2bnVsbCkKKy0gICAgICAgIGV4Y2VwdDoKKy0gICAgICAgICAgICBzeXMuZXhpdCgiQ291bGQgbm90IGZpbmQgZ3BnLWVycm9yLWNvbmZpZy4gICIgKworLSAgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgaW5zdGFsbCB0aGUgbGliZ3BnLWVycm9yIGRldmVsb3BtZW50IHBhY2thZ2UuIikKIC0KLS10cnk6Ci0gICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdtZV9jb25maWcgKyBbJy0tdmVyc2lvbiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCi0gZXhjZXB0OgotQEAgLTgxLDEyICs3Myw5IEBAIGlmIG5vdCAobWFqb3IgPiAxIG9yIChtYWpvciA9PSAxIGFuZCBtaW5vciA+PSA3KSk6Ci0gaWYgbm90IGdwZ21lX2g6Ci0gICAgIGdwZ21lX2ggPSBvcy5wYXRoLmpvaW4oZ2V0Y29uZmlnKCJwcmVmaXgiKVswXSwgImluY2x1ZGUiLCAiZ3BnbWUuaCIpCistICAgICAgICBncGdfZXJyb3JfY29udGVudCA9IHNlbGYuX3JlYWRfaGVhZGVyKCJncGctZXJyb3IuaCIsIGdldGNvbmZpZygiY2ZsYWdzIiwgY29uZmlnPWdwZ19lcnJvcl9jb25maWcpKQorKyAgICAgICAgZ3BnX2Vycm9yX2NvbnRlbnQgPSBzZWxmLl9yZWFkX2hlYWRlcigiZ3BnLWVycm9yLmgiLCBvcy5lbnZpcm9uLmdldCgnQ0ZMQUdTJykuc3BsaXQoKSkKICAKLS1ncGdfZXJyb3JfcHJlZml4ID0gZ2V0Y29uZmlnKCJwcmVmaXgiLCBjb25maWc9Z3BnX2Vycm9yX2NvbmZpZylbMF0KLS1ncGdfZXJyb3JfaCA9IG9zLnBhdGguam9pbihncGdfZXJyb3JfcHJlZml4LCAiaW5jbHVkZSIsICJncGctZXJyb3IuaCIpCi0rZ3BnX2Vycm9yX2ggPSBvcy5wYXRoLmpvaW4ob3MuZ2V0ZW52KCdTVEFHSU5HX0lOQ0RJUicpLCAiZ3BnLWVycm9yLmgiKQotIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhncGdfZXJyb3JfaCk6Ci0tICAgIGdwZ19lcnJvcl9oID0gXAotLSAgICAgICAgZ2xvYi5nbG9iKG9zLnBhdGguam9pbihncGdfZXJyb3JfcHJlZml4LCAiaW5jbHVkZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIiwgImdwZy1lcnJvci5oIikpWzBdCi0rICAgIHN5cy5leGl0KCJncGdfZXJyb3JfaCBub3QgZm91bmQ6ICVzIiAlIGdwZ19lcnJvcl9oKQotIAotIHByaW50KCJCdWlsZGluZyBweXRob24gZ3BnIG1vZHVsZSB1c2luZyB7fSBhbmQge30uIi5mb3JtYXQoZ3BnbWVfaCwgZ3BnX2Vycm9yX2gpKQotIAorICAgICAgICAgZmlsdGVyX3JlID0gcmUuY29tcGlsZShyJ0dQR19FUlJfW14gXSogPScpCisgICAgICAgICByZXdyaXRlX3JlID0gcmUuY29tcGlsZShyJyAqKC4qKSA9IC4qJykKIC0tIAotMi44LjEKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaAppbmRleCBkMzgzMzExLi43YzljY2NjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNjIzMzJlZWM3NTJkZDc5MGY0ZGQwNzFkZmIwZGJlODZiZTM3NzIwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowNTozNCAtMDQwMAotU3ViamVjdDogW1BBVENIIDMvNV0gQ29ycmVjdGx5IGluc3RhbGwgcHl0aG9uIG1vZHVsZXMKK0Zyb20gOTNhYWUzNGVlNzBiOGQ1MGIzMWExOWE2NWQ2YWM4MjkwY2IxNDhhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMzAgSmFuIDIwMTggMTU6Mjg6NDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIENvcnJlY3RseSBpbnN0YWxsIHB5dGhvbiBtb2R1bGVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgpAQCAtOSwyMiArOSwyNSBAQAogUmViYXNlIHRvIDEuOS4wCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDEuMTAuMAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgbGFuZy9weXRob24vTWFrZWZpbGUuYW0gfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtIGIvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KLWluZGV4IGQ5MWVhZDkuLjY3ZjdjZGMgMTAwNjQ0CitpbmRleCA4ZDc0Y2JkLi5jZTRmMGE1IDEwMDY0NAogLS0tIGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KICsrKyBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCi1AQCAtMTA2LDYgKzEwNiw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbDoKLSAJICBjZCBweXRob24kJHtWRVJTSU9OfS1ncGcgOyBcCi0gCSAgJCRQWVRIT04gc2V0dXAucHkgaW5zdGFsbCBcCi0gCSAgLS1wcmVmaXggJChERVNURElSKSQocHJlZml4KSBcCitAQCAtOTEsNiArOTEsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6CisgCSAgLS1idWlsZC1iYXNlPSIkJChiYXNlbmFtZSAiJCR7UFlUSE9OfSIpLWdwZyIgXAorIAkgIGluc3RhbGwgXAorIAkgIC0tcHJlZml4ICIkKERFU1RESVIpJChwcmVmaXgpIiBcCiArCSAgLS1pbnN0YWxsLWxpYj0kKERFU1RESVIpJHtweXRob25kaXJ9IFwKLSAJICAtLXJlY29yZCBmaWxlcy50eHQgXAogIAkgIC0tdmVyYm9zZSA7IFwKLSAJICBjYXQgZmlsZXMudHh0ID4+IC4uL2luc3RhbGxfZmlsZXMudHh0IDsgXAorIAlkb25lCisgCiAtLSAKLTIuOC4xCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoCmluZGV4IDkzMDcxMDMuLmQyYjAzOWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gY2NiZjAyOGVlYTg4MTVkM2IxNmQ2YzM0YjUyNzI1M2E2YjEwOGVjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzJlY2MzZjA1ODMwNzA2MGU0MGFmODYxMjdjZDIyNjI0OGE3M2M0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjA2OjQ1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBweXRob24gaW1wb3J0CitTdWJqZWN0OiBbUEFUQ0ggMy80XSBweXRob24gaW1wb3J0CiAKIERvbid0IGNoZWNrIGZvciBvdXRwdXQgb24gc3RkZXJyIHRvIGtub3cgaWYgYW4gaW1wb3J0IHdvcmtlZCwgaG9zdCBpbnB1dHJjIGFuZAogc3lzcm9vdCByZWFkbGluZSBjYW4gY2F1c2Ugd2FybmluZ3Mgb24gc3RkZXJyLgpAQCAtMzAsNSArMzAsNSBAQAogIAllbHNlCiAgCQlBQ19NU0dfUkVTVUxUKFtub10pCiAtLSAKLTIuOC4xCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCmluZGV4IDdhNmNjN2IuLjk2M2FlODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMDY0YWU0NDQxZTJjMTEzMjk3NDhhMTgxNTc5ODhmOWU5NTNmOTc1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNmRjZWRjNGRkMDU1YWY5MDI3MTliMWExY2IxMGRhYTkzNWEyN2Y1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNjo0MDoyNyArMDMwMAotU3ViamVjdDogW1BBVENIIDUvNV0gZ3BnbWUtY29uZmlnOiBza2lwIGFsbCAvbGliKiBvciAvdXNyL2xpYiogZGlyZWN0b3JpZXMgaW4KK1N1YmplY3Q6IFtQQVRDSCA0LzRdIGdwZ21lLWNvbmZpZzogc2tpcCBhbGwgL2xpYiogb3IgL3Vzci9saWIqIGRpcmVjdG9yaWVzIGluCiAgb3V0cHV0CiAKIFRoZSBsb2dpYyB3YXMgbm90IHdvcmtpbmcgaW4gbXVsdGlsaWIgc2V0dXBzIHdoaWNoIHVzZSBvdGhlcgpAQCAtMjcsNSArMjcsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIC1MKnwtbCopCiAtLSAKLTIuOC4xCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDYtZml4LWJ1aWxkLXBhdGgtaXNzdWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNjODk4MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMTgwYTU2NjllNGExM2E1NTBiMWIwZGNlZjE2ODliNmMwNDcwZmU1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMzEgSmFuIDIwMTggMTE6MDE6MDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIHBhdGggaXNzdWUKKworR2V0IHRoZSAiLS1yb290IiBkaXJlY3Rvcnkgc3VwcGxpZWQgdG8gdGhlICJpbnN0YWxsIiBjb21tYW5kLAorYW5kIHVzZSBpdCBhcyBhIHByZWZpeCB0byBzdHJpcCBvZmYgdGhlIHB1cnBvcnRlZCBmaWxlbmFtZQorZW5jb2RlZCBpbiBieXRlY29kZSBmaWxlcy4KKworU2luY2UgLS1yb290IGFkZGVkLCB3ZSBuZWVkIHRvIHR3ZWFrIC0tcHJlZml4IGFuZCAtLWluc3RhbGwtbGliCit0byB1c2UgcmVsYXRpdmUgcGF0aC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2dudXBnLWRldmVsQGdudXBnLm9yZ10KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCBjZTRmMGE1Li41YTQ2OGYxIDEwMDY0NAorLS0tIGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KKysrKyBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtOTAsOCArOTAsOSBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6CisgCSAgYnVpbGQgXAorIAkgIC0tYnVpbGQtYmFzZT0iJCQoYmFzZW5hbWUgIiQke1BZVEhPTn0iKS1ncGciIFwKKyAJICBpbnN0YWxsIFwKKy0JICAtLXByZWZpeCAiJChERVNURElSKSQocHJlZml4KSIgXAorLQkgIC0taW5zdGFsbC1saWI9JChERVNURElSKSR7cHl0aG9uZGlyfSBcCisrCSAgLS1yb290PSR7REVTVERJUn0gXAorKwkgIC0tcHJlZml4ICIkKHByZWZpeCkiIFwKKysJICAtLWluc3RhbGwtbGliPSR7cHl0aG9uZGlyfSBcCisgCSAgLS12ZXJib3NlIDsgXAorIAlkb25lCisgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNy1xdC1weXRob24tQWRkLXZhcmlhYmxlcy10by10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTM3NDVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw3OCBAQAorRnJvbSBmNDdlOGM2ZjllNDYxODAzNDY4YTY0NTgxZDM2NDBkODczMzUyZWFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxIEZlYiAyMDE4IDEwOjE0OjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHF0L3B5dGhvbjogQWRkIHZhcmlhYmxlcyB0byB0ZXN0cworCisqIGNvbmZpZ3VyZS5hYywgbGFuZy9weXRob24vTWFrZWZpbGUuYW06CisgIE5ldyB2YXJpYWJsZSB0byBgbGFuZy9weXRob24nLCBzZXQgdG8gYGxhbmcvcHl0aG9uJyBpZiBSVU5fTEFOR19QWVRIT05fVEVTVFMKKworKiBjb25maWd1cmUuYWMsIGxhbmcvcXQvTWFrZWZpbGUuYW06CisgIE5ldyB2YXJpYWJsZSB0byBgbGFuZy9xdCcsIHNldCB0byBgbGFuZy9xdCcgaWYgUlVOX0xBTkdfUVRfVEVTVFMKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2dudXBnLWRldmVsQGdudXBnLm9yZ10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgfCAxMSArKysrKysrKysrKworIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtIHwgIDMgKysrCisgbGFuZy9xdC9NYWtlZmlsZS5hbSAgICAgfCAgOCArKysrKysrLQorIDMgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA2MDhjMzc2Li5mYWQ3NDY3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01MzYsNiArNTM2LDE3IEBAIEFDX0FSR19FTkFCTEUoZzEzLXRlc3QsCisgICAgICAgICAgcnVuX2cxM190ZXN0PSRlbmFibGV2YWwpCisgQU1fQ09ORElUSU9OQUwoUlVOX0cxM19URVNUUywgdGVzdCAiJHJ1bl9nMTNfdGVzdCIgPSAieWVzIikKKyAKKytydW5fbGFuZ19weXRob25fdGVzdD0ieWVzIgorK0FDX0FSR19FTkFCTEUobGFuZy1weXRob24tdGVzdCwKKysgIEFDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGFuZy1weXRob24tdGVzdF0sIFtkaXNhYmxlIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RdKSwKKysgICAgICAgICBydW5fbGFuZ19weXRob25fdGVzdD0kZW5hYmxldmFsKQorK0FNX0NPTkRJVElPTkFMKFJVTl9MQU5HX1BZVEhPTl9URVNUUywgdGVzdCAiJHJ1bl9sYW5nX3B5dGhvbl90ZXN0IiA9ICJ5ZXMiKQorKworK3J1bl9sYW5nX3F0X3Rlc3Q9InllcyIKKytBQ19BUkdfRU5BQkxFKGxhbmctcXQtdGVzdCwKKysgIEFDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGFuZy1xdC10ZXN0XSwgW2Rpc2FibGUgUXQgcmVncmVzc2lvbiB0ZXN0XSksCisrICAgICAgICAgcnVuX2xhbmdfcXRfdGVzdD0kZW5hYmxldmFsKQorK0FNX0NPTkRJVElPTkFMKFJVTl9MQU5HX1FUX1RFU1RTLCB0ZXN0ICIkcnVuX2xhbmdfcXRfdGVzdCIgPSAieWVzIikKKyAKKyAjIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgorIEFDX0NIRUNLX0hFQURFUlNfT05DRShbbG9jYWxlLmggc3lzL3NlbGVjdC5oIHN5cy91aW8uaCBhcmdwLmgKK2RpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCA4ZDc0Y2JkLi40M2I1ZDFlIDEwMDY0NAorLS0tIGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KKysrKyBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtMjQsNyArMjQsMTAgQEAgRVhUUkFfRElTVCA9IFwKKyAJZXhhbXBsZXMgXAorIAlzcmMKKyAKKytpZiBSVU5fTEFOR19QWVRIT05fVEVTVFMKKyBTVUJESVJTID0gLiB0ZXN0cworK2VuZGlmCisrCisgCisgLlBIT05ZOiBwcmVwYXJlCisgcHJlcGFyZTogY29weXN0YW1wCitkaWZmIC0tZ2l0IGEvbGFuZy9xdC9NYWtlZmlsZS5hbSBiL2xhbmcvcXQvTWFrZWZpbGUuYW0KK2luZGV4IGFiODU5NjAuLmEyNDRlZGUgMTAwNjQ0CistLS0gYS9sYW5nL3F0L01ha2VmaWxlLmFtCisrKysgYi9sYW5nL3F0L01ha2VmaWxlLmFtCitAQCAtMTksNiArMTksMTIgQEAKKyAjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorICMgMDIxMTEtMTMwNywgVVNBCisgCistU1VCRElSUyA9IHNyYyB0ZXN0cyBkb2MKKytpZiBSVU5fTEFOR19RVF9URVNUUworK3F0dGVzdHMgPSB0ZXN0cworK2Vsc2UKKytxdHRlc3RzID0KKytlbmRpZgorKworK1NVQkRJUlMgPSBzcmMgJHtxdHRlc3RzfSBkb2MKKyAKKyBFWFRSQV9ESVNUID0gUkVBRE1FCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAxNWYzYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjEwLjAuYmIKQEAgLTAsMCArMSw4NiBAQAorU1VNTUFSWSA9ICJIaWdoLWxldmVsIEdudVBHIGVuY3J5cHRpb24vc2lnbmluZyBBUEkiCitERVNDUklQVElPTiA9ICJHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIGxpYnJhcnkgZGVzaWduZWQgdG8gbWFrZSBhY2Nlc3MgdG8gR251UEcgZWFzaWVyIGZvciBhcHBsaWNhdGlvbnMuIEl0IHByb3ZpZGVzIGEgSGlnaC1MZXZlbCBDcnlwdG8gQVBJIGZvciBlbmNyeXB0aW9uLCBkZWNyeXB0aW9uLCBzaWduaW5nLCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGFuZCBrZXkgbWFuYWdlbWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL2dwZ21lLmh0bWwiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZ21lLmguaW47ZW5kbGluZT0yMzttZDU9OWQxNTdkMDhhNjkwNTkzNDRlNmY4MmFiZDJkMjU3ODEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2VuZ2luZS5oO2VuZGxpbmU9MjI7bWQ1PTRiNmQ4YmEzMTNkOWI1NjRjYzRkNGNmYjE2NDBhZjlkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2dwZ21lLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1weXRob24taW1wb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4YjE1MzNjNTkzNDc4OTgyZWUyZmM1NDgyNjBjNTYzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhOGZlZDExOTdjM2I5OWMzNWY0MDMwNjZiYjM0NGEyNjIyNGQyOTJhZmMwNDhjZmRmYzRjY2Q1NjkwYTA2OTMiCisKK0RFUEVORFMgPSAibGliZ3BnLWVycm9yIGxpYmFzc3VhbiIKK1JERVBFTkRTXyR7UE59LWNwcCArPSAibGlic3RkYysrIgorCitSREVQRU5EU19weXRob24yLWdwZyArPSAicHl0aG9uLXVuaXhhZG1pbiIKK1JERVBFTkRTX3B5dGhvbjMtZ3BnICs9ICJweXRob24zLXVuaXhhZG1pbiIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGdtZS1jb25maWciCisKKyMgTm90ZSBzZWxlY3QgcHl0aG9uMiBvciBweXRob24zLCBidXQgeW91IGNhbid0IHNlbGVjdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgorUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICIsLHB5dGhvbiBzd2lnLW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIiwscHl0aG9uMyBzd2lnLW5hdGl2ZSwiCisKKyMgRGVmYXVsdCBpbiBjb25maWd1cmUuYWM6ICJjbCBjcHAgcHl0aG9uIHF0IgorIyBTdXBwb3J0ZWQ6ICJjbCBjcHAgcHl0aG9uIHB5dGhvbjIgcHl0aG9uMyBxdCIKKyMgcHl0aG9uIHNheXMgJ3NlYXJjaCBhbmQgZmluZCBweXRob24yIG9yIHB5dGhvbjMnCisKKyMgQnVpbGRpbmcgdGhlIEMrKyBiaW5kaW5ncyBmb3IgbmF0aXZlIHJlcXVpcmVzIGEgQysrIGNvbXBpbGVyIHdpdGggQysrMTEKKyMgc3VwcG9ydC4gU2luY2UgdGhlc2UgYmluZGluZ3MgYXJlIGN1cnJlbnRseSBub3QgbmVlZGVkLCB3ZSBjYW4gZGlzYWJsZSB0aGVtLgorREVGQVVMVF9MQU5HVUFHRVMgPSAiIgorREVGQVVMVF9MQU5HVUFHRVNfY2xhc3MtdGFyZ2V0ID0gImNwcCIKK0xBTkdVQUdFUyA/PSAiJHtERUZBVUxUX0xBTkdVQUdFU30iCitMQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnIHB5dGhvbjInLCAnJywgZCl9IgorTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJyBweXRob24zJywgJycsIGQpfSIKKworUFlUSE9OX0lOSEVSSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob25uYXRpdmUnLCAnJywgZCl9IgorUFlUSE9OX0lOSEVSSVQgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAnLS1lbmFibGUtbGFuZ3VhZ2VzPSIke0xBTkdVQUdFU30iIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdwZ2NvbmYtdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncGctdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncGdzbS10ZXN0IFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWcxMy10ZXN0IFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxhbmctcXQtdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1sYW5nLXB5dGhvbi10ZXN0IFwKKycKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnICR7UFlUSE9OX0lOSEVSSVR9CisKK2V4cG9ydCBQS0dfQ09ORklHPSdwa2ctY29uZmlnJworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jcHAiCitQQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24yLWdwZyAnLCAnJywgZCl9IgorUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy1ncGcgJywgJycsIGQpfSIKKworRklMRVNfJHtQTn0tY3BwID0gIiR7bGliZGlyfS9saWJncGdtZXBwLnNvLioiCitGSUxFU19weXRob24yLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfcHl0aG9uMy1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jb21tb24tbGlzcC9zb3VyY2UvZ3BnbWUvKiBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jbWFrZS8qIFwKKyIKKworQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX19lcnJvcl90X2RlZmluZWQgIgorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQvcHl0aG9uLm00Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NWMzNDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWdoLWxldmVsIEdudVBHIGVuY3J5cHRpb24vc2lnbmluZyBBUEkiCi1ERVNDUklQVElPTiA9ICJHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIGxpYnJhcnkgZGVzaWduZWQgdG8gbWFrZSBhY2Nlc3MgdG8gR251UEcgZWFzaWVyIGZvciBhcHBsaWNhdGlvbnMuIEl0IHByb3ZpZGVzIGEgSGlnaC1MZXZlbCBDcnlwdG8gQVBJIGZvciBlbmNyeXB0aW9uLCBkZWNyeXB0aW9uLCBzaWduaW5nLCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGFuZCBrZXkgbWFuYWdlbWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL2dwZ21lLmh0bWwiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZ21lLmguaW47ZW5kbGluZT0yMzttZDU9OWQxNTdkMDhhNjkwNTkzNDRlNmY4MmFiZDJkMjU3ODEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2VuZ2luZS5oO2VuZGxpbmU9MjI7bWQ1PTRiNmQ4YmEzMTNkOWI1NjRjYzRkNGNmYjE2NDBhZjlkIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2dwZ21lLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1weXRob24taW1wb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWUwMGJiOGVmMDRkMWQwNWQ1YTBmMTllMTQzODU0YzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWIyOWZlZGI4YmZhZDc3NWU3MGVhZmFjNWIwNTkwNjIxNjgzYjJkOTg2OWRiOTk0NTY4ZTY0MDFmNDAzNGNlYiIKLQotREVQRU5EUyA9ICJsaWJncGctZXJyb3IgbGliYXNzdWFuIgotUkRFUEVORFNfJHtQTn0tY3BwICs9ICJsaWJzdGRjKysiCi0KLVJERVBFTkRTX3B5dGhvbjItZ3BnICs9ICJweXRob24tdW5peGFkbWluIgotUkRFUEVORFNfcHl0aG9uMy1ncGcgKz0gInB5dGhvbjMtdW5peGFkbWluIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZ21lLWNvbmZpZyIKLQotIyBOb3RlIHNlbGVjdCBweXRob24yIG9yIHB5dGhvbjMsIGJ1dCB5b3UgY2FuJ3Qgc2VsZWN0IGJvdGggYXQgdGhlIHNhbWUgdGltZQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjJdID0gIiwscHl0aG9uIHN3aWctbmF0aXZlLCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLCxweXRob24zIHN3aWctbmF0aXZlLCIKLQotIyBEZWZhdWx0IGluIGNvbmZpZ3VyZS5hYzogImNsIGNwcCBweXRob24gcXQiCi0jIFN1cHBvcnRlZDogImNsIGNwcCBweXRob24gcHl0aG9uMiBweXRob24zIHF0IgotIyBweXRob24gc2F5cyAnc2VhcmNoIGFuZCBmaW5kIHB5dGhvbjIgb3IgcHl0aG9uMycKLQotIyBCdWlsZGluZyB0aGUgQysrIGJpbmRpbmdzIGZvciBuYXRpdmUgcmVxdWlyZXMgYSBDKysgY29tcGlsZXIgd2l0aCBDKysxMQotIyBzdXBwb3J0LiBTaW5jZSB0aGVzZSBiaW5kaW5ncyBhcmUgY3VycmVudGx5IG5vdCBuZWVkZWQsIHdlIGNhbiBkaXNhYmxlIHRoZW0uCi1ERUZBVUxUX0xBTkdVQUdFUyA9ICIiCi1ERUZBVUxUX0xBTkdVQUdFU19jbGFzcy10YXJnZXQgPSAiY3BwIgotTEFOR1VBR0VTID89ICIke0RFRkFVTFRfTEFOR1VBR0VTfSIKLUxBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICcgcHl0aG9uMicsICcnLCBkKX0iCi1MQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnIHB5dGhvbjMnLCAnJywgZCl9IgotCi1QWVRIT05fSU5IRVJJVCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0iCi1QWVRIT05fSU5IRVJJVCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zbmF0aXZlJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICctLWVuYWJsZS1sYW5ndWFnZXM9IiR7TEFOR1VBR0VTfSInCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyAke1BZVEhPTl9JTkhFUklUfQotCi1leHBvcnQgUEtHX0NPTkZJRz0ncGtnLWNvbmZpZycKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tY3BwIgotUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9uMi1ncGcgJywgJycsIGQpfSIKLVBBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtZ3BnICcsICcnLCBkKX0iCi0KLUZJTEVTXyR7UE59LWNwcCA9ICIke2xpYmRpcn0vbGliZ3BnbWVwcC5zby4qIgotRklMRVNfcHl0aG9uMi1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLUZJTEVTX3B5dGhvbjMtZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY29tbW9uLWxpc3Avc291cmNlL2dwZ21lLyogXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY21ha2UvKiBcCi0iCi0KLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9fZXJyb3JfdF9kZWZpbmVkICIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQotCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKLQlybSAtZiAke1N9L200L3B5dGhvbi5tNAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCmluZGV4IGExZWY5ZWMuLjk4MzExOGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKQEAgLTE3LDYgKzE3LDggQEAKIAogQklOQ09ORklHID0gIiR7YmluZGlyfS9pY3UtY29uZmlnIgogCitJQ1VfTUFKT1JfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19IgorCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnCiAKICMgSUNVIG5lZWRzIHRoZSBuYXRpdmUgYnVpbGQgZGlyZWN0b3J5IGFzIGFuIGFyZ3VtZW50IHRvIGl0cyAtLXdpdGgtY3Jvc3MtYnVpbGQgb3B0aW9uIHdoZW4KQEAgLTI2LDYgKzI4LDggQEAKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiIgogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGgtY3Jvc3MtYnVpbGQ9JHtTVEFHSU5HX0lDVV9ESVJfTkFUSVZFfSIKIAorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnYmUnLCAnIC0td2l0aC1kYXRhLXBhY2thZ2luZz1hcmNoaXZlJywgJycsIGQpfSIKK1RBUkdFVF9DWFhGTEFHU19hcHBlbmQgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnYmUnLCAnIC1ESUNVX0RBVEFfRElSPVxcIiIke2RhdGFkaXJ9LyR7QlBOfS8ke1BWfVxcIiInLCAnJywgZCl9IgogCiAjIHN0cnRvZF9sKCkgaXMgbm90IHN1cHBvcnRlZCBieSBtdXNsOyBhbHNvIHhsb2NhbGUuaCBpcyBtaXNzaW5nCiAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIGl0cyB1c2UgdmlhIGNvbmZpZ3VyZSBzd2l0Y2hlcyBvciBlbnYgdmFycwpAQCAtMzQsNiArMzgsMTUgQEAKICAgICBzZWQgLWkgLWUgJ3MsRFVfSEFWRV9TVFJUT0RfTD0xLERVX0hBVkVfU1RSVE9EX0w9MCwnICR7U30vY29uZmlndXJlLmFjCiB9CiAKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCSMgTWFrZSBzdXJlIGNlcnRhaW4gYnVpbGQgaG9zdCByZWZlcmVuY2VzIGRvIG5vdCBlbmQgdXAgYmVpbmcgY29tcGlsZWQKKwkjIGluIHRoZSBpbWFnZS4gVGhpcyBvbmx5IGFmZmVjdHMgbGliaWN1dHUgYW5kIGljdS1kYmcKKwlzZWQgIFwKKwkgICAgLWUgJ3MsRFVfQlVJTEQ9LERVX0JVSUxEX3VudXNlZD0sZycgXAorCSAgICAtZSAnL15DUFBGTEFHUy4qLyBzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWkgJHtCfS90b29scy90b29sdXRpbC9NYWtlZmlsZQorfQorCiBQUkVQUk9DRVNTX1JFTE9DQVRFX0RJUlMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtQVn0iCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CiAJbWtkaXIgLXAgJHtEfS8ke1NUQUdJTkdfSUNVX0RJUl9OQVRJVkV9L2NvbmZpZwpAQCAtNDQsNiArNTcsMjMgQEAKIAljcCAtciAke0J9L3Rvb2xzICR7RH0vJHtTVEFHSU5HX0lDVV9ESVJfTkFUSVZFfQogfQogCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgIyBUaGUgbmF0aXZlIHBrZ2RhdGEgY2FuIG5vdCBnZW5lcmF0ZSB0aGUgY29ycmVjdCBkYXRhIGZpbGUuCisgICAgIyBVc2UgaWN1cGtnIHRvIHJlLWdlbmVyYXRlIGl0LgorICAgIGlmIFsgIiR7U0lURUlORk9fRU5ESUFOTkVTU30iID0gImJlIiBdIDsgdGhlbgorICAgICAgICBybSAtZiAke0R9LyR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9L2ljdWR0JHtJQ1VfTUFKT1JfVkVSfWIuZGF0CisgICAgICAgIGljdXBrZyAtdGIgJHtTfS9kYXRhL2luL2ljdWR0JHtJQ1VfTUFKT1JfVkVSfWwuZGF0ICR7RH0vJHtkYXRhZGlyfS8ke0JQTn0vJHtQVn0vaWN1ZHQke0lDVV9NQUpPUl9WRVJ9Yi5kYXQKKyAgICBmaQorCQorCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcy4uLgorCXNlZCAtaSAgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgJHtEfS8ke2JpbmRpcn0vaWN1LWNvbmZpZyAke0R9LyR7bGliZGlyfS8ke0JQTn0vJHtQVn0vTWFrZWZpbGUuaW5jIFwKKwkgICAgJHtEfS8ke2xpYmRpcn0vJHtCUE59LyR7UFZ9L3BrZ2RhdGEuaW5jCit9CisKIFBBQ0tBR0VTID0rICJsaWJpY3VkYXRhIGxpYmljdXVjIGxpYmljdWkxOG4gbGliaWN1dHUgbGliaWN1aW8iCiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoCmluZGV4IGFkZDBkNzYuLmYwYzQ5ZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoCkBAIC0xLDMxICsxLDM0IEBACi1Gcm9tIGM0MjU0ZmQ4ZmYxODg4Y2EyODVlMzI0MmI4MTIwMTAzNTdjZTJiM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ2YjU3YzFiNGViOWEyNGQ5ZDk1MzQyYTk2MWM5Mzk0NjUzOWM5M2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAyNCBKdW4gMjAxNyAyMjo1Mjo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBpMThuOiBEcm9wIGluY2x1ZGUgPHhsb2NhbGUuaD4KK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGkxOG46IERyb3AgaW5jbHVkZSA8eGxvY2FsZS5oPgogCiBnbGliYyAyLjI2IGRyb3BzIHRoaXMgaGVhZGVyCiAKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAotIGkxOG4vZGlnaXRsc3QuY3BwIHwgNiArLS0tLS0KKy0tLQorIHNvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcCB8IDYgKy0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1IGRlbGV0aW9ucygtKQogCi1JbmRleDogc291cmNlL2kxOG4vZGlnaXRsc3QuY3BwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc291cmNlLm9yaWcvaTE4bi9kaWdpdGxzdC5jcHAKLSsrKyBzb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAKLUBAIC02MSwxMSArNjEsNyBAQAorZGlmZiAtLWdpdCBhL3NvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcCBiL3NvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcAoraW5kZXggOGU4NmZhNy4uMGJkYmIyYyAxMDA2NDQKKy0tLSBhL2kxOG4vZGlnaXRsc3QuY3BwCisrKysgYi9pMThuL2RpZ2l0bHN0LmNwcAorQEAgLTYyLDExICs2Miw3IEBACiAgI2VuZGlmCiAgCiAgI2lmIFVfVVNFX1NUUlRPRF9MCi0tIyBpZiBVX1BMQVRGT1JNX1VTRVNfT05MWV9XSU4zMl9BUEkgfHwgVV9QTEFURk9STSA9PSBVX1BGX0NZR1dJTgotLSMgICBpbmNsdWRlIDxsb2NhbGUuaD4KLS0jIGVsc2UKKy0jIGlmIFVfSEFWRV9YTE9DQUxFX0gKIC0jICAgaW5jbHVkZSA8eGxvY2FsZS5oPgorLSMgZWxzZQorLSMgICBpbmNsdWRlIDxsb2NhbGUuaD4KIC0jIGVuZGlmCiArIyBpbmNsdWRlIDxsb2NhbGUuaD4KICAjZW5kaWYKICAKICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvQ1ZFLTIwMTctMTQ5NTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NTllZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvQ1ZFLTIwMTctMTQ5NTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGZjODNjZDgzMjcyNWQzOTY4MDExZjExODYzN2I5ZjVkMjEyZTg3MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDEwIE5vdiAyMDE3IDE2OjUxOjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZWQgcmVkdW5kYW50IFVWZWN0b3IgZW50cnkgY2xlYW4gdXAgZnVuY3Rpb24gY2FsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNDk1MgotCi1TaWduZWQtb2ZmLWJ5OiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpMThuL3pvbmVtZXRhLmNwcCB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pMThuL3pvbmVtZXRhLmNwcCBiL2kxOG4vem9uZW1ldGEuY3BwCi1pbmRleCA4NGE5NjU3Li5lMTYzYjAwIDEwMDY0NAotLS0tIGEvaTE4bi96b25lbWV0YS5jcHAKLSsrKyBiL2kxOG4vem9uZW1ldGEuY3BwCi1AQCAtNjkwLDcgKzY5MCw2IEBAIFpvbmVNZXRhOjpjcmVhdGVNZXRhem9uZU1hcHBpbmdzKGNvbnN0IFVuaWNvZGVTdHJpbmcgJnR6aWQpIHsKLSAgICAgICAgICAgICAgICAgICAgIG16TWFwcGluZ3MgPSBuZXcgVVZlY3RvcihkZWxldGVPbHNvblRvTWV0YU1hcHBpbmdFbnRyeSwgTlVMTCwgc3RhdHVzKTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBtek1hcHBpbmdzOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZU9sc29uVG9NZXRhTWFwcGluZ0VudHJ5KGVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB1cHJ2X2ZyZWUoZW50cnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgfQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZml4LWluc3RhbGwtbWFueC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpeC1pbnN0YWxsLW1hbngucGF0Y2gKaW5kZXggZWM2M2Y1MC4uODE4NmZiNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZml4LWluc3RhbGwtbWFueC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9maXgtaW5zdGFsbC1tYW54LnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSAzMDYzYTkyMTE2NjliZWU2NzM4NDBlZTgxZjgxZDMwNjk5YjliNzAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgOSBPY3QgMjAxNSAxNzo1MDo0MSArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNF0gaWN1OiBmaXggaW5zdGFsbCByYWNlCisKIFRoZSBnZW5lcmljIHJlY3Vyc2l2ZSB0YXJnZXQgY2FsbHMgdGFyZ2V0LWxvY2FsIHNvIGFsc28gYWRkaW5nIGl0IHRvIHRoZQogZGVwZW5kZW5jeSBsaXN0IHJlc3VsdHMgaW4gcmFjZXMgZHVlIHRvIGluc3RhbGwtbG9jYWwgYmVpbmcgZXhlY3V0ZWQgdHdpY2UgaW4KIHBhcmFsbGVsLiAgRm9yIGV4YW1wbGUsIGluc3RhbGwtbWFueCBjYW4gZmFpbCBpZiB0aGUgdHdvIGluc3RhbGwgcHJvY2Vzc2VzIHJhY2UKQEAgLTksMTIgKzE0LDE1IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKKy0tLQorIHNvdXJjZS9NYWtlZmlsZS5pbiB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggOWRiNmM1Mi4uMzQ0MWFmYSAxMDA2NDQKK2RpZmYgLS1naXQgYS9zb3VyY2UvTWFrZWZpbGUuaW4gYi9zb3VyY2UvTWFrZWZpbGUuaW4KK2luZGV4IGMxZGIxNWIuLjQ5NDhkZWIgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5pbgogKysrIGIvTWFrZWZpbGUuaW4KLUBAIC03MSw3ICs3MSw3IEBAIEVYVFJBX0RBVEEgPQorQEAgLTczLDcgKzczLDcgQEAgRVhUUkFfREFUQSA9CiAgCiAgIyMgTGlzdCBvZiBwaG9ueSB0YXJnZXRzCiAgLlBIT05ZIDogYWxsIGFsbC1sb2NhbCBhbGwtcmVjdXJzaXZlIGluc3RhbGwgaW5zdGFsbC1sb2NhbCBpbnN0YWxsLXVkYXRhIGluc3RhbGwtdWRhdGEtZmlsZXMgaW5zdGFsbC11ZGF0YS1kbGxzCQlcCkBAIC0yMyw3ICszMSw3IEBACiAgZGlzdGNsZWFuLWxvY2FsIGRpc3RjbGVhbi1yZWN1cnNpdmUgZG9jIGRpc3QgZGlzdC1sb2NhbCBkaXN0LXJlY3Vyc2l2ZQlcCiAgY2hlY2sgY2hlY2stbG9jYWwgY2hlY2stcmVjdXJzaXZlIGNsZWFuLXJlY3Vyc2l2ZS13aXRoLXR3aXN0IGluc3RhbGwtaWN1IFwKICBkb2MgaW5zdGFsbC1kb2MgdGVzdHMgaWN1NGotZGF0YSBpY3U0ai1kYXRhLWluc3RhbGwgdXBkYXRlLXdpbmRvd3MtbWFrZWZpbGVzIHhjaGVjay1sb2NhbCB4Y2hlY2stcmVjdXJzaXZlIHhwZXJmIHhjaGVjayB4cGVyZi1yZWN1cnNpdmUgXAotQEAgLTgyLDEwICs4MiwxMCBAQCBjaGVjay1leGhhdXN0aXZlIGNoZWNrLWV4aGF1c3RpdmUtbG9jYWwgY2hlY2stZXhoYXVzdGl2ZS1yZWN1cnNpdmUgcmVsZWFzZURpc3QKK0BAIC04NCw5ICs4NCw5IEBAIGNoZWNrLWV4aGF1c3RpdmUgY2hlY2stZXhoYXVzdGl2ZS1sb2NhbCBjaGVjay1leGhhdXN0aXZlLXJlY3Vyc2l2ZSByZWxlYXNlRGlzdAogIAogICMjIExpc3Qgb2Ygc3RhbmRhcmQgdGFyZ2V0cwogIGFsbDogYWxsLWxvY2FsIGFsbC1yZWN1cnNpdmUKQEAgLTMxLDEzICszOSwxMSBAQAogK2luc3RhbGw6IGluc3RhbGwtcmVjdXJzaXZlCiAgY2xlYW46IGNsZWFuLXJlY3Vyc2l2ZS13aXRoLXR3aXN0IGNsZWFuLWxvY2FsCiAtZGlzdGNsZWFuIDogZGlzdGNsZWFuLXJlY3Vyc2l2ZSBkaXN0Y2xlYW4tbG9jYWwKLS1kaXN0OiBkaXN0LXJlY3Vyc2l2ZSBkaXN0LWxvY2FsCiArZGlzdGNsZWFuIDogZGlzdGNsZWFuLXJlY3Vyc2l2ZQotK2Rpc3Q6IGRpc3QtcmVjdXJzaXZlCisgZGlzdDogZGlzdC1yZWN1cnNpdmUKICBjaGVjazogYWxsIGNoZWNrLXJlY3Vyc2l2ZQogIGNoZWNrLXJlY3Vyc2l2ZTogYWxsCi0geGNoZWNrOiBhbGwgeGNoZWNrLXJlY3Vyc2l2ZQotQEAgLTM1Miw3ICszNTIsNyBAQCBjb25maWcuc3RhdHVzOiAkKHNyY2RpcikvY29uZmlndXJlICQoc3JjZGlyKS9jb21tb24vdW5pY29kZS91dmVybnVtLmgKK0BAIC0zNTAsNyArMzUwLDcgQEAgY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSAkKHNyY2RpcikvY29tbW9uL3VuaWNvZGUvdXZlcm51bS5oCiAgCiAgaW5zdGFsbC1tYW54OiAkKE1BTlhfRklMRVMpCiAgCSQoTUtJTlNUQUxMRElSUykgJChERVNURElSKSQobWFuZGlyKS9tYW4kKFNFQ1RJT04pCkBAIC00NiwzICs1Miw2IEBACiAgCiAgY29uZmlnLyUuJChTRUNUSU9OKTogJChzcmNkaXIpL2NvbmZpZy8lLiQoU0VDVElPTikuaW4KICAJY2QgJCh0b3BfYnVpbGRkaXIpIFwKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmIxYmU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1yZXF1aXJlIGljdS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9ZmU5ZTFmMmM1MDA0NjZkOGYxOGRmMmNkMDY4ZTRiNzQiCi0KLWRlZiBpY3VfZG93bmxvYWRfdmVyc2lvbihkKToKLSAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQotICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQotCi1JQ1VfUFYgPSAiJHtAaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCl9IgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ni8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUJBU0VfU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyR7UFZ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgotU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pMThuLURyb3AtaW5jbHVkZS14bG9jYWxlLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQ5NTIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtTERGTEFHU0lDVURULWZvci1MaW51eC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU0OTIzZmE5ZmFiNWIyYjgzZjIzNWZiNzI1MjNkZTM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxMzJmZGFmOTM3OTQyOWQwMDQwMDUyMTdmMTBlMDBiN2QyMzE5ZDBmZWEyMmJkZmRkZWY4OTkxYzQ1Yjc1ZmUiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82MC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODVhOTJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjAuMi5iYgpAQCAtMCwwICsxLDI5IEBACityZXF1aXJlIGljdS5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9Njc1ZjJkMDY5NDM0ZDhhMWU0ZTZiMGRjZjQzNzkyMjYiCisKK2RlZiBpY3VfZG93bmxvYWRfdmVyc2lvbihkKToKKyAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQorICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQorCitJQ1VfUFYgPSAiJHtAaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCl9IgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ni8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0JBU0VfU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyR7UFZ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgorU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAorICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pMThuLURyb3AtaW5jbHVkZS14bG9jYWxlLmgucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtTERGTEFHU0lDVURULWZvci1MaW51eC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjQzODYxYjEyNzc0NGIzYzBiOWQ3ZjM4NmY0YjlmYTQwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYwNzNlYThmMzViOTI2ZDcwYmIzM2U2NTc3NTA4YWE2NDJhOGIzMTZhODAzZjExYmUyMGFmMzg0ODExZGI0MTgiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjc1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYzZDUzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjc1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJJU08gbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY3VycmVuY3ksIHNjcmlwdCBjb2RlcyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1TUkNfVVJJID0gImh0dHBzOi8vcGtnLWlzb2NvZGVzLmFsaW90aC5kZWJpYW4ub3JnL2Rvd25sb2Fkcy9pc28tY29kZXMtJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjliYTE3M2I2OWQ0MzYwMDAzNDE0ZjIzODM3NTk3YTkyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczMzVlMDMwMWNkNzdjZDRlZTAxOWJmNWQzNzA5YWE3OTMwOWQ0OWRkNjZlODViYTM1MGNhZjY3ZTAwYjAwY2QiCi0KLSMgaW5oZXJpdCBnZXR0ZXh0IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IGFkZHMgZ2V0dGV4dC1uYXRpdmUgdG8gQkFTRURFUEVORFMgd2hpY2gKLSMgYXJlIGluaGliaXRlZCBieSBhbGxhcmNoCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIgotCi1pbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3htbC8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjc3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43Ny5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDYxM2FjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43Ny5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIklTTyBsYW5ndWFnZSwgdGVycml0b3J5LCBjdXJyZW5jeSwgc2NyaXB0IGNvZGVzIGFuZCB0aGVpciB0cmFuc2xhdGlvbnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9wa2ctaXNvY29kZXMuYWxpb3RoLmRlYmlhbi5vcmcvZG93bmxvYWRzL2lzby1jb2Rlcy0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiOWQwZDA2Y2ZiNDYzNDQyOGIzMDA4NDVlZGNkNzE0MGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjFjZDczYTRjNmY5NWQ5NDc0ZWJmY2ZmZDRlMDY1MjIzODU3NzIwZjI0ODU4ZTU2NGY0NDA5YjE5ZjdmMGQ5MCIKKworIyBpbmhlcml0IGdldHRleHQgY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgYWRkcyBnZXR0ZXh0LW5hdGl2ZSB0byBCQVNFREVQRU5EUyB3aGljaAorIyBhcmUgaW5oaWJpdGVkIGJ5IGFsbGFyY2gKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veG1sLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbi9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCmluZGV4IGI2Y2NkZGEuLjUyNWIwNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW4vbGliYXNzdWFuLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaApAQCAtNiwzMiArNiwxNSBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgogCi1JbmRleDogbGliYXNzdWFuLTIuMS4yL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYXNzdWFuLTIuMS4yLm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBsaWJhc3N1YW4tMi4xLjIvTWFrZWZpbGUuYW0KLUBAIC0yNCwxMCArMjQsMTMgQEAgQVVUT01BS0VfT1BUSU9OUyA9IGRpc3QtYnppcDIgbm8tZGlzdC1negotICMgKEEgc3VpdGFibGUgZ2l0bG9nLXRvLWNoYW5nZWxvZyBzY3JpcHQgY2FuIGJlIGZvdW5kIGluIEdudVBHIG1hc3Rlci4pCi0gR0lUTE9HX1RPX0NIQU5HRUxPRz1naXRsb2ctdG8tY2hhbmdlbG9nCi0gCi0rcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZwotK3BrZ2NvbmZpZ19EQVRBID0gbGliYXNzdWFuLnBjCi0rCi0gRVhUUkFfRElTVCA9IGF1dG9nZW4uc2ggYXV0b2dlbi5yYyBSRUFETUUuR0lUICAgICAgICAgCSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgIENoYW5nZUxvZy0yMDExIGRvYy9DaGFuZ2VMb2ctMjAxMSBzcmMvQ2hhbmdlTG9nLTIwMTEgCVwKLSAgICAgICAgICAgICAgdGVzdHMvQ2hhbmdlTG9nLTIwMTEgY29udHJpYi9DaGFuZ2VMb2ctMjAxMSAgICAgCQlcCi0tICAgICAgICAgICAgIGJ1aWxkLWF1eC9naXQtbG9nLWZvb3RlciBidWlsZC1hdXgvZ2l0LWxvZy1maXgKLSsgICAgICAgICAgICAgYnVpbGQtYXV4L2dpdC1sb2ctZm9vdGVyIGJ1aWxkLWF1eC9naXQtbG9nLWZpeCBsaWJhc3N1YW4ucGMuaW4KLSAKLSBTVUJESVJTID0gbTQgc3JjIGRvYyB0ZXN0cwotIAotSW5kZXg6IGxpYmFzc3Vhbi0yLjEuMi9saWJhc3N1YW4ucGMuaW4KK2ZvcndhcmQgcG9ydGVkIHRvIDIuNC40CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IGxpYmFzc3Vhbi0yLjQuNC9saWJhc3N1YW4ucGMuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBsaWJhc3N1YW4tMi4xLjIvbGliYXNzdWFuLnBjLmluCi1AQCAtMCwwICsxLDE0IEBACi0rcHJlZml4PUBwcmVmaXhACi0rZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorKysrIGxpYmFzc3Vhbi0yLjQuNC9saWJhc3N1YW4ucGMuaW4KK0BAIC0wLDAgKzEsMTMgQEAKKytwcmVmaXg9QGV4ZWNfcHJlZml4QAogK2xpYmRpcj1AbGliZGlyQAogK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACiArYXBpX3ZlcnNpb249QExJQkFTU1VBTl9DT05GSUdfQVBJX1ZFUlNJT05ACkBAIC00NCwyNCArMjcsNDIgQEAKICtMaWJzOiAtTCR7bGliZGlyfSAtbGFzc3VhbgogK0xpYnMucHJpdmF0ZTogLWxncGctZXJyb3IKICtDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQotSW5kZXg6IGxpYmFzc3Vhbi0yLjEuMi9jb25maWd1cmUuYWMKK0luZGV4OiBsaWJhc3N1YW4tMi40LjQvTWFrZWZpbGUuYW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJhc3N1YW4tMi4xLjIub3JpZy9jb25maWd1cmUuYWMKLSsrKyBsaWJhc3N1YW4tMi4xLjIvY29uZmlndXJlLmFjCi1AQCAtNDM5LDcgKzQzOSw3IEBAIEFDX0NPTkZJR19GSUxFUyhbZG9jL01ha2VmaWxlXSkKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTI1LDEwICsyNSwxMyBAQCBESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTID0gLS1lbmFibGUtZG9jCisgIyAoQSBzdWl0YWJsZSBnaXRsb2ctdG8tY2hhbmdlbG9nIHNjcmlwdCBjYW4gYmUgZm91bmQgaW4gR251UEcgbWFzdGVyLikKKyBHSVRMT0dfVE9fQ0hBTkdFTE9HPWdpdGxvZy10by1jaGFuZ2Vsb2cKKyAKKytwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCisrcGtnY29uZmlnX0RBVEEgPSBsaWJhc3N1YW4ucGMKKysKKyBFWFRSQV9ESVNUID0gYXV0b2dlbi5zaCBhdXRvZ2VuLnJjIFJFQURNRS5HSVQgVkVSU0lPTiAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgIENoYW5nZUxvZy0yMDExIGRvYy9DaGFuZ2VMb2ctMjAxMSBzcmMvQ2hhbmdlTG9nLTIwMTEgCVwKKyAgICAgICAgICAgICAgdGVzdHMvQ2hhbmdlTG9nLTIwMTEgY29udHJpYi9DaGFuZ2VMb2ctMjAxMSAgICAgCQlcCistICAgICAgICAgICAgIGJ1aWxkLWF1eC9naXQtbG9nLWZvb3RlciBidWlsZC1hdXgvZ2l0LWxvZy1maXgKKysgICAgICAgICAgICAgYnVpbGQtYXV4L2dpdC1sb2ctZm9vdGVyIGJ1aWxkLWF1eC9naXQtbG9nLWZpeCBsaWJhc3N1YW4ucGMuaW4KKyAKKyBpZiBCVUlMRF9ET0MKKyBkb2MgPSBkb2MKK0luZGV4OiAyLjQuNC1yMC9saWJhc3N1YW4tMi40LjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQ4NSw2ICs0ODUsNyBAQCBBQ19DT05GSUdfRklMRVMoW2RvYy9NYWtlZmlsZV0pCiAgQUNfQ09ORklHX0ZJTEVTKFt0ZXN0cy9NYWtlZmlsZV0pCiAgQUNfQ09ORklHX0ZJTEVTKFtzcmMvbGliYXNzdWFuLWNvbmZpZ10sIFtjaG1vZCAreCBzcmMvbGliYXNzdWFuLWNvbmZpZ10pCiAgQUNfQ09ORklHX0ZJTEVTKFtzcmMvdmVyc2lvbmluZm8ucmNdKQotLQogK0FDX0NPTkZJR19GSUxFUyhbbGliYXNzdWFuLnBjXSkKKyAKICBBQ19PVVRQVVQKICAKLSBlY2hvICIKLUluZGV4OiBsaWJhc3N1YW4tMi4xLjIvc3JjL2xpYmFzc3Vhbi5tNAorSW5kZXg6IGxpYmFzc3Vhbi0yLjQuNC9zcmMvbGliYXNzdWFuLm00CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYXNzdWFuLTIuMS4yLm9yaWcvc3JjL2xpYmFzc3Vhbi5tNAotKysrIGxpYmFzc3Vhbi0yLjEuMi9zcmMvbGliYXNzdWFuLm00Ci1AQCAtMTUsMTggKzE1LDYgQEAgZG5sIFJldHVybnMgb2sgc2V0IHRvIHllcyBvciBuby4KKy0tLSBhL3NyYy9saWJhc3N1YW4ubTQKKysrKyBiL3NyYy9saWJhc3N1YW4ubTQKK0BAIC0xNiwxOCArMTYsNiBAQCBkbmwgUmV0dXJucyBvayBzZXQgdG8geWVzIG9yIG5vLgogIGRubAogIEFDX0RFRlVOKFtfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OXSwKICBbIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKQEAgLTgwLDcgKzgxLDcgQEAKICAKICAgIHRtcD1pZmVsc2UoWyQxXSwgLDE6MC45LjIsJDEpCiAgICBpZiBlY2hvICIkdG1wIiB8IGdyZXAgJzonID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCi1AQCAtMzcsNTEgKzI1LDEyIEBAIEFDX0RFRlVOKFtfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OXSwKK0BAIC0zOCw1MSArMjYsMTIgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAogICAgICBtaW5fbGliYXNzdWFuX3ZlcnNpb249IiR0bXAiCiAgICBmaQogIApAQCAtMTA1LDcgKzEwNiw3IEBACiAtCiAtICAgIGlmIHRlc3QgIiRtYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgogLSAgICAgICAgb2s9eWVzCi0tICAgIGVsc2UgCistICAgIGVsc2UKIC0gICAgICAgIGlmIHRlc3QgIiRtYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgogLSAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgogLSAgICAgICAgICAgICAgIG9rPXllcwpAQCAtMTM0LDcgKzEzNSw3IEBACiAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCiAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW0xJQkFTU1VBTiBBUEkgdmVyc2lvbl0pCiAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2xpYmFzc3Vhbl9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCi1AQCAtOTYsNyArNDUsNyBAQCBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCitAQCAtOTcsNyArNDYsNyBAQCBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCiAgCiAgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgogICAgICBpZiB0ZXN0IHgiJGhvc3QiICE9IHggOyB0aGVuCkBAIC0xNDMsNyArMTQ0LDcgQEAKICAgICAgICBpZiB0ZXN0IHgiJGxpYmFzc3Vhbl9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCiAgICAgICAgICBpZiB0ZXN0IHgiJGxpYmFzc3Vhbl9jb25maWdfaG9zdCIgIT0geCIkaG9zdCIgOyB0aGVuCiAgICBBQ19NU0dfV0FSTihbWwotQEAgLTEzNywxMiArODYsOCBAQCBkbmwKK0BAIC0xMzgsMTIgKzg3LDggQEAgZG5sCiAgQUNfREVGVU4oW0FNX1BBVEhfTElCQVNTVUFOXSwKICBbIF9BTV9QQVRIX0xJQkFTU1VBTl9DT01NT04oJDEpCiAgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI2YzI3OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiSVBDIGxpYnJhcnkgdXNlZCBieSBHbnVQRyBhbmQgR1BHTUUiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmFzc3Vhbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0tZG9jID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYXNzdWFuLmM7ZW5kbGluZT0yMDttZDU9MGY0NjU1NDQxODM0MDUwNTVlYzE3OTg2OWZjNWI1YmEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Fzc3Vhbi1kZWZzLmg7ZW5kbGluZT0yMDttZDU9MjBjZDU1NTM1MjYwY2ExNzc5ZWRhZTVjN2I4MGIyMWUiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmFzc3Vhbi9saWJhc3N1YW4tJHtQVn0udGFyLmJ6MiBcCi0JICAgZmlsZTovL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZTAxYTdjNzJkM2U1ZDE1NDQ4MTIzMDY2OGU2ZWI1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMjg0M2EzYmRiMjU2ZjU5YmU0OTg0MmFiZjI0ZGE3NjcwMDM1NDI5M2EwNjZkODJhZGU4MTM0YmI1YWEyYjcxIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmFzc3Vhbi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200LyoubTQKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGQ1ZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjEuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJJUEMgbGlicmFyeSB1c2VkIGJ5IEdudVBHIGFuZCBHUEdNRSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvbGliYXNzdWFuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1kb2MgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9hc3N1YW4uYztlbmRsaW5lPTIwO21kNT1hYjkyMTQzYTVhMmFkYWJkMDZkNzk5NGQxNDY3ZWE1Y1wKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9hc3N1YW4tZGVmcy5oO2VuZGxpbmU9MjA7bWQ1PTE1ZDk1MGM4M2U4Mjk3OGUzNWIzNWU3OTBkN2U0ZDM5IgorCitERVBFTkRTID0gImxpYmdwZy1lcnJvciIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJhc3N1YW4vbGliYXNzdWFuLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbGliYXNzdWFuLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDM1NGI3YWUyOTY4OTRmMjMyYWRhMjI2YTA2MmQ3ZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDdmOTZjMzdiNGYyYWFjMjg5ZjBiYzFiYWNmYThiZDhiNGIyMDlhNDg4ZDNkMTVlMjIyOWNiNmNjOWIyNjQ0OSIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJhc3N1YW4tY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC8qLm00Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHMvMDAwMS1BZGQtaW5pdGlhbC1uaW9zMi1hcmNoaXRlY3R1cmUtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHMvMDAwMS1BZGQtaW5pdGlhbC1uaW9zMi1hcmNoaXRlY3R1cmUtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA1MTA3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDRiMDA1ZWU1Njg5ODMwOWU4YWZiYTliM2M0OGNmOTRmMGY1Zjc4ZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLURhdGU6IFR1ZSwgMTUgTWFyIDIwMTYgMTA6MDk6MjYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIGluaXRpYWwgbmlvczIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKLQotKiBzcmMvTWFrZWZpbGUuYW0gKG5vYmFzZV9wcml2YXRlX0hFQURFUlMpOiBBZGQgbmlvczIuaC4KLSogc3JjL2F0b21pY19vcHMuaDogSW5jbHVkZSBuaW9zMi5oIGlmIF9fbmlvczJfXy4KLSogc3JjL2F0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaDogTmV3IGZpbGUuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzLmdpdCA0YjAwNWVlNTY4OTgzMDllOGFmYmE5YjNjNDhjZjk0ZjBmNWY3OGU0IF0KLS0tLQotIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gc3JjL2F0b21pY19vcHMuaCAgICAgICAgICAgICAgICAgICB8ICAzICsrKwotIHNyYy9hdG9taWNfb3BzL3N5c2RlcHMvZ2NjL25pb3MyLmggfCAxNyArKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IGZjMDliMjcuLmQ0NjM0MjcgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTc5LDYgKzc5LDcgQEAgbm9iYXNlX3ByaXZhdGVfSEVBREVSUyA9IGF0b21pY19vcHMvYW9fdmVyc2lvbi5oIFwKLSAgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9pYTY0LmggXAotICAgICAgICAgICBhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL202OGsuaCBcCi0gICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvbWlwcy5oIFwKLSsgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oIFwKLSAgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9wb3dlcnBjLmggXAotICAgICAgICAgICBhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL3MzOTAuaCBcCi0gICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2Mvc2guaCBcCi1kaWZmIC0tZ2l0IGEvc3JjL2F0b21pY19vcHMuaCBiL3NyYy9hdG9taWNfb3BzLmgKLWluZGV4IDMzZmUwMGUuLmVjMDJiYTQgMTAwNjQ0Ci0tLS0gYS9zcmMvYXRvbWljX29wcy5oCi0rKysgYi9zcmMvYXRvbWljX29wcy5oCi1AQCAtMjYyLDYgKzI2Miw5IEBACi0gIyBpZiBkZWZpbmVkKF9fbTY4a19fKQotICMgICBpbmNsdWRlICJhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL202OGsuaCIKLSAjIGVuZGlmIC8qIF9fbTY4a19fICovCi0rIyBpZiBkZWZpbmVkKF9fbmlvczJfXykKLSsjICAgaW5jbHVkZSAiYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oIgotKyMgZW5kaWYgLyogX19uaW9zMl9fICovCi0gIyBpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19QUENfXykgXAotICAgICAgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykKLSAjICAgaW5jbHVkZSAiYXRvbWljX29wcy9zeXNkZXBzL2djYy9wb3dlcnBjLmgiCi1kaWZmIC0tZ2l0IGEvc3JjL2F0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaCBiL3NyYy9hdG9taWNfb3BzL3N5c2RlcHMvZ2NjL25pb3MyLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mNDAyY2JiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oCi1AQCAtMCwwICsxLDE3IEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci0rICoKLSsgKiBUSElTIE1BVEVSSUFMIElTIFBST1ZJREVEIEFTIElTLCBXSVRIIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkgRVhQUkVTU0VECi0rICogT1IgSU1QTElFRC4gQU5ZIFVTRSBJUyBBVCBZT1VSIE9XTiBSSVNLLgotKyAqCi0rICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCB0byB1c2Ugb3IgY29weSB0aGlzIHByb2dyYW0KLSsgKiBmb3IgYW55IHB1cnBvc2UsIHByb3ZpZGVkIHRoZSBhYm92ZSBub3RpY2VzIGFyZSByZXRhaW5lZCBvbiBhbGwgY29waWVzLgotKyAqIFBlcm1pc3Npb24gdG8gbW9kaWZ5IHRoZSBjb2RlIGFuZCB0byBkaXN0cmlidXRlIG1vZGlmaWVkIGNvZGUgaXMgZ3JhbnRlZCwKLSsgKiBwcm92aWRlZCB0aGUgYWJvdmUgbm90aWNlcyBhcmUgcmV0YWluZWQsIGFuZCBhIG5vdGljZSB0aGF0IHRoZSBjb2RlIHdhcwotKyAqIG1vZGlmaWVkIGlzIGluY2x1ZGVkIHdpdGggdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UuCi0rICovCi0rCi0rI2luY2x1ZGUgIi4uL3Rlc3RfYW5kX3NldF90X2lzX2FvX3QuaCIKLSsjaW5jbHVkZSAiZ2VuZXJpYy5oIgotKwotKyNkZWZpbmUgQU9fVF9JU19JTlQKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NjNkODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhdG9taWMgaW50ZWdlciBvcGVyYXRpb25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMvIgotU0VDVElPTiA9ICJvcHRpb25hbCIKLVBST1ZJREVTICs9ICJsaWJhdG9taWNzLW9wcyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvTElDRU5TSU5HLnR4dDttZDU9ZTAwZGQ1YzhhYzAzYTE0YzVhZTUyMjVhNDUyNWZhMmQgXAotCQkgICAiCi1QViAuPSAiK2dpdCR7U1JDUFZ9IgotCi1TUkNSRVYgPSAiNzNjNjBjNWVmMWVkMzcwMTExNTQ5ZWU1YWFiNmQ0MDIwYmE3MGVkNCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdiNDE2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjIuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGF0b21pYyBpbnRlZ2VyIG9wZXJhdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy8iCitTRUNUSU9OID0gIm9wdGlvbmFsIgorUFJPVklERVMgKz0gImxpYmF0b21pY3Mtb3BzIgorTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9MSUNFTlNJTkcudHh0O21kNT1lMDBkZDVjOGFjMDNhMTRjNWFlNTIyNWE0NTI1ZmEyZCBcCisJCSAgICIKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UtN182IgorCitTUkNSRVYgPSAiNWFlNGI0YWVlYTJiYWYxMzc1MmQwN2UzMDM4YzQ3ZjcwZjA2ZGNhYyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzO2JyYW5jaD0ke1NSQ0JSQU5DSH0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKaW5kZXggZTk3ZTMwZS4uNTQ2MTdiNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaApAQCAtNCw2ICs0LDcgQEAKIFN1YmplY3Q6IFtQQVRDSCAxLzNdIFJlcGxhY2UgX19CRUdJTl9ERUNMUyBhbmQgX19FTkRfREVDTFMKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KIC0tLQogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKQEAgLTEzLDE0ICsxNCwxNCBAQAogIGluY2x1ZGUvYnNkL25saXN0LmggICAgICAgICAgfCAxMCArKysrKysrKy0tCiAgaW5jbHVkZS9ic2QvcmVhZHBhc3NwaHJhc2UuaCB8IDEwICsrKysrKysrLS0KICBpbmNsdWRlL2JzZC9zdGRpby5oICAgICAgICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL3N0ZGxpYi5oICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gaW5jbHVkZS9ic2Qvc3RyaW5nLmggICAgICAgICB8IDEwICsrKysrKysrLS0KKyBpbmNsdWRlL2JzZC9zdGRsaWIuaCAgICAgICAgIHwgMTIgKysrKysrKysrLS0tCisgaW5jbHVkZS9ic2Qvc3RyaW5nLmggICAgICAgICB8IDEyICsrKysrKysrKy0tLQogIGluY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaCAgICAgfCAxMCArKysrKysrKy0tCiAgaW5jbHVkZS9ic2QvdW5pc3RkLmggICAgICAgICB8IDEwICsrKysrKysrLS0KICBpbmNsdWRlL2JzZC92aXMuaCAgICAgICAgICAgIHwgMTAgKysrKysrKystLQogIGluY2x1ZGUvYnNkL3djaGFyLmggICAgICAgICAgfCAxMCArKysrKysrKy0tCiAgc3JjL2hhc2gvc2hhNTEyLmggICAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSAxMyBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCisgMTMgZmlsZXMgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvZXJyLmggYi9pbmNsdWRlL2JzZC9lcnIuaAogaW5kZXggMTJmZDA1MS4uNDNkZmMzMiAxMDA2NDQKQEAgLTUwLDcgKzUxLDcgQEAKICAKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9saWJ1dGlsLmggYi9pbmNsdWRlL2JzZC9saWJ1dGlsLmgKLWluZGV4IGViYjYxNjAuLjI4YjkxOWQgMTAwNjQ0CitpbmRleCA0NWIzYjE1Li45YzkzNmU1IDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2QvbGlidXRpbC5oCiArKysgYi9pbmNsdWRlL2JzZC9saWJ1dGlsLmgKIEBAIC01Myw3ICs1MywxMCBAQCBzdHJ1Y3QgcGlkZmggewpAQCAtNzgsNyArNzksNyBAQAogIC8qIGh1bWFuaXplX251bWJlcigzKSAqLwogICNkZWZpbmUgSE5fREVDSU1BTCAgICAgICAgICAgICAgMHgwMQogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL21kNS5oIGIvaW5jbHVkZS9ic2QvbWQ1LmgKLWluZGV4IDlhNzVmYWQuLjM1MzFmZDYgMTAwNjQ0CitpbmRleCA1ZjNhZTQ2Li41ZDgwZTVjIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2QvbWQ1LmgKICsrKyBiL2luY2x1ZGUvYnNkL21kNS5oCiBAQCAtMzAsNyArMzAsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgTUQ1Q29udGV4dCB7CkBAIC0xMDMsMTQgKzEwNCwxNCBAQAogKyNlbmRpZgogKy8qIF9fRU5EX0RFQ0xTICovCiAgCi0gI2VuZGlmIC8qIF9NRDVfSF8gKi8KKyAjZW5kaWYgLyogTElCQlNEX01ENV9IICovCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvbmxpc3QuaCBiL2luY2x1ZGUvYnNkL25saXN0LmgKLWluZGV4IDI3MzAyMzcuLjAzODlhYjcgMTAwNjQ0CitpbmRleCBjYjI5N2U4Li5lNjNiYmJkIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2Qvbmxpc3QuaAogKysrIGIvaW5jbHVkZS9ic2Qvbmxpc3QuaAotQEAgLTMwLDggKzMwLDE0IEBACi0gI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotICNpbmNsdWRlIDxhLm91dC5oPgorQEAgLTg4LDggKzg4LDE0IEBAIHN0cnVjdCBubGlzdCB7CisgCisgI2RlZmluZSBOX0ZPUk1BVAkiJTA4eCIJLyogbmFtZWxpc3QgdmFsdWUgZm9ybWF0OyBYWFggKi8KICAKIC1fX0JFR0lOX0RFQ0xTCiArLyogX19CRUdJTl9ERUNMUyAqLwpAQCAtMTI2LDcgKzEyNyw3IEBACiAgCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvcmVhZHBhc3NwaHJhc2UuaCBiL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKLWluZGV4IGUxZGFjYzMuLjc2ZTBkMzMgMTAwNjQ0CitpbmRleCAxNDc0NGI4Li5mYTczMzYxIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2QvcmVhZHBhc3NwaHJhc2UuaAogKysrIGIvaW5jbHVkZS9ic2QvcmVhZHBhc3NwaHJhc2UuaAogQEAgLTM0LDggKzM0LDE0IEBACkBAIC0xNDUsMTMgKzE0NiwxMyBAQAogKyNlbmRpZgogKy8qIF9fRU5EX0RFQ0xTICovCiAgCi0gI2VuZGlmIC8qICFfUkVBRFBBU1NQSFJBU0VfSF8gKi8KKyAjZW5kaWYgLyogIUxJQkJTRF9SRUFEUEFTU1BIUkFTRV9IICovCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvc3RkaW8uaCBiL2luY2x1ZGUvYnNkL3N0ZGlvLmgKLWluZGV4IDc2OTc0MjUuLmI1YjNlZmQgMTAwNjQ0CitpbmRleCA0YjY5OTgzLi4xODY0NWI3IDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2Qvc3RkaW8uaAogKysrIGIvaW5jbHVkZS9ic2Qvc3RkaW8uaAotQEAgLTQxLDcgKzQxLDEwIEBACi0gI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorQEAgLTQ1LDcgKzQ1LDEwIEBACisgI2VuZGlmCiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogIAogLV9fQkVHSU5fREVDTFMKQEAgLTE2Miw3ICsxNjMsNyBAQAogIGNvbnN0IGNoYXIgKmZtdGNoZWNrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAKICAvKiBYWFg6IFRoZSBmdW5jdGlvbiByZXF1aXJlcyBjb29wZXJhdGlvbiBmcm9tIHRoZSBzeXN0ZW0gbGliYyB0byBzdG9yZSB0aGUKLUBAIC02OSw3ICs3MiwxMCBAQCBGSUxFICpmdW5vcGVuKGNvbnN0IHZvaWQgKmNvb2tpZSwKK0BAIC03Myw3ICs3NiwxMCBAQCBGSUxFICpmdW5vcGVuKGNvbnN0IHZvaWQgKmNvb2tpZSwKICAjZGVmaW5lIGZ3b3Blbihjb29raWUsIGZuKSBmdW5vcGVuKGNvb2tpZSwgTlVMTCwgZm4sIE5VTEwsIE5VTEwpCiAgCiAgaW50IGZwdXJnZShGSUxFICpmcCk7CkBAIC0xNzUsNyArMTc2LDcgQEAKICAjZW5kaWYKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdGRsaWIuaCBiL2luY2x1ZGUvYnNkL3N0ZGxpYi5oCi1pbmRleCAwNjA0Y2FkLi5iOWYwNTE1IDEwMDY0NAoraW5kZXggZWJjOTYzOC4uYzRiNTRiNiAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3N0ZGxpYi5oCiArKysgYi9pbmNsdWRlL2JzZC9zdGRsaWIuaAogQEAgLTQ2LDcgKzQ2LDEwIEBACkBAIC0xODksOCArMTkwLDE3IEBACiArI2VuZGlmCiAgdWludDMyX3QgYXJjNHJhbmRvbSh2b2lkKTsKICB2b2lkIGFyYzRyYW5kb21fc3Rpcih2b2lkKTsKLSB2b2lkIGFyYzRyYW5kb21fYWRkcmFuZG9tKHVfY2hhciAqZGF0LCBpbnQgZGF0bGVuKTsKLUBAIC03Myw2ICs3Niw5IEBAIGxvbmcgbG9uZyBzdHJ0b251bShjb25zdCBjaGFyICpucHRyLCBsb25nIGxvbmcgbWludmFsLCBsb25nIGxvbmcgbWF4dmFsLAorIHZvaWQgYXJjNHJhbmRvbV9hZGRyYW5kb20odW5zaWduZWQgY2hhciAqZGF0LCBpbnQgZGF0bGVuKTsKK0BAIC02Nyw3ICs3MCw3IEBAIGludCBzcmFkaXhzb3J0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKipiYXNlLCBpbnQgbm1lbWIsCisgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdGFibGUsIHVuc2lnbmVkIGVuZGJ5dGUpOworIAorIHZvaWQgKnJlYWxsb2NmKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworLSNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIV9fR0xJQkNfUFJFUkVRKDIsIDI2KQorKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyB2b2lkICpyZWFsbG9jYXJyYXkodm9pZCAqcHRyLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsKKyAjZW5kaWYKKyAKK0BAIC03NSw2ICs3OCw5IEBAIGxvbmcgbG9uZyBzdHJ0b251bShjb25zdCBjaGFyICpucHRyLCBsb25nIGxvbmcgbWludmFsLCBsb25nIGxvbmcgbWF4dmFsLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZXJyc3RyKTsKICAKICBjaGFyICpnZXRic2l6ZShpbnQgKmhlYWRlcmxlbnAsIGxvbmcgKmJsb2Nrc2l6ZXApOwpAQCAtMjAyLDEwICsyMTIsMTAgQEAKICAKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdHJpbmcuaCBiL2luY2x1ZGUvYnNkL3N0cmluZy5oCi1pbmRleCBlZTJmOTUzLi5mYmY4YzU0IDEwMDY0NAoraW5kZXggNjc5OGJmNi4uZmExMTkzZiAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3N0cmluZy5oCiArKysgYi9pbmNsdWRlL2JzZC9zdHJpbmcuaAotQEAgLTM2LDEzICszNiwxOSBAQAorQEAgLTM2LDE1ICszNiwyMSBAQAogICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgCkBAIC0yMTksNyArMjI5LDEwIEBACiAgY2hhciAqc3RybnN0cihjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmZpbmQsIHNpemVfdCBzdHJfbGVuKTsKICB2b2lkIHN0cm1vZGUobW9kZV90IG1vZGUsIGNoYXIgKnN0cik7CiAgCistI2lmIGRlZmluZWQoX0dOVV9TT1VSQ0UpICYmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhX19HTElCQ19QUkVSRVEoMiwgMjUpCisrI2lmIGRlZmluZWQoX0dOVV9TT1VSQ0UpICYmIGRlZmluZWQoX19HTElCQ19fKQogIHZvaWQgZXhwbGljaXRfYnplcm8odm9pZCAqYnVmLCBzaXplX3QgbGVuKTsKKyAjZW5kaWYKIC1fX0VORF9ERUNMUwogKyNpZmRlZiBfX2NwbHVzcGx1cwogK30KQEAgLTIyOCw3ICsyNDEsNyBAQAogIAogICNlbmRpZgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaCBiL2luY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaAotaW5kZXggZTNjNDJlOS4uNDBkMGE1MiAxMDA2NDQKK2luZGV4IGZmMzBjYWMuLjQ2MDBmNmIgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKICsrKyBiL2luY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaAogQEAgLTQzLDEyICs0MywxOCBAQCB0eXBlZGVmIHN0cnVjdCBfc3RyaW5nbGlzdCB7CkBAIC0yNTEsNyArMjY0LDcgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiBfU1RSSU5HTElTVF9IICovCisgI2VuZGlmIC8qIExJQkJTRF9TVFJJTkdMSVNUX0ggKi8KIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC91bmlzdGQuaCBiL2luY2x1ZGUvYnNkL3VuaXN0ZC5oCiBpbmRleCAxZjljNWY4Li41YjJmNGM3IDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2QvdW5pc3RkLmgKQEAgLTI4MCw3ICsyOTMsNyBAQAogIAogICNlbmRpZgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3Zpcy5oIGIvaW5jbHVkZS9ic2QvdmlzLmgKLWluZGV4IDgzNWQyZDYuLjYzYzk1MWUgMTAwNjQ0CitpbmRleCA5NzBkZmRkLi42MjFkM2M2IDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2QvdmlzLmgKICsrKyBiL2luY2x1ZGUvYnNkL3Zpcy5oCiBAQCAtNzQsNyArNzQsMTAgQEAKQEAgLTMwNSw3ICszMTgsNyBAQAogKyNlbmRpZgogKy8qIF9fRU5EX0RFQ0xTICovCiAgCi0gI2VuZGlmIC8qICFfVklTX0hfICovCisgI2VuZGlmIC8qICFMSUJCU0RfVklTX0ggKi8KIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC93Y2hhci5oIGIvaW5jbHVkZS9ic2Qvd2NoYXIuaAogaW5kZXggMzNhNTAwZS4uYWE3MDc0MiAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3djaGFyLmgKQEAgLTM1OSw1ICszNzIsNSBAQAogIAogICNlbmRpZiAvKiAhX1NIQTUxMl9IXyAqLwogLS0gCi0yLjEwLjIKKzEuOS4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MjU0M2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1TVU1NQVJZID0gIkxpYnJhcnkgb2YgdXRpbGl0eSBmdW5jdGlvbnMgZnJvbSBCU0Qgc3lzdGVtcyIKLURFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBwcm92aWRlcyB1c2VmdWwgZnVuY3Rpb25zIGNvbW1vbmx5IGZvdW5kIG9uIEJTRCBzeXN0ZW1zLCBcCi0gICAgICAgICAgICAgICBhbmQgbGFja2luZyBvbiBvdGhlcnMgbGlrZSBHTlUgc3lzdGVtcywgdGh1cyBtYWtpbmcgaXQgZWFzaWVyIHRvIHBvcnQgXAotICAgICAgICAgICAgICAgcHJvamVjdHMgd2l0aCBzdHJvbmcgQlNEIG9yaWdpbnMsIHdpdGhvdXQgbmVlZGluZyB0byBlbWJlZCB0aGUgc2FtZSBcCi0gICAgICAgICAgICAgICBjb2RlIG92ZXIgYW5kIG92ZXIgYWdhaW4gb24gZWFjaCBwcm9qZWN0LiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvd2lraS8iCi0jIFRoZXJlIHNlZW1zIHRvIGJlIG1vcmUgbGljZW5zZXMgdXNlZCBpbiB0aGUgY29kZSwgSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZSwgY29tcGxldGUgbGlzdDoKLSMgT0UgQCB+L3Byb2plY3RzL2xpYmJzZCAkIGdyZXAgXkxpY2Vuc2U6IENPUFlJTkcgIHwgc29ydAotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1OZXRCU0QKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLWF1dGhvcgotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtdmVyYmF0aW0KLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlLVBldGVyLVdlbW0KLSMgTGljZW5zZTogQlNELTMtY2xhdXNlLVJlZ2VudHMKLSMgTGljZW5zZTogQlNELTQtY2xhdXNlLUNocmlzdG9waGVyLUctRGVtZXRyaW91Ci0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1OaWVscy1Qcm92b3MKLSMgTGljZW5zZTogQlNELTUtY2xhdXNlLVBldGVyLVdlbW0KLSMgTGljZW5zZTogQmVlcndhcmUKLSMgTGljZW5zZTogRXhwYXQKLSMgTGljZW5zZTogSVNDCi0jIExpY2Vuc2U6IElTQy1PcmlnaW5hbAotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluCi0jIExpY2Vuc2U6IHB1YmxpYy1kb21haW4tQ29saW4tUGx1bWIKLUxJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlICYgSVNDICYgUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wOGZjNGU2NmJlNDUyNjcxNWRhYjA5YzVmYmE1ZTllOCIKLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLXNyYy1saWJic2Qtb3ZlcmxheS5wYy5pbi1TZXQtQ2ZsYWdzLXRvLXVzZS1JLWluc3RlYWQucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsICA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRhYjdiZWM2MzlhZjE3ZDBhYWNiNTAyMjJiNDc5MTEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2N2ZiZjlkZjFmNDlhZjExZjdmNjg2NjkxMDU3YzhjMGE3NjEzYWU1YTg3MDU3N2JlZjkxNTVkZTM5Zjk2ODciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MmE4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNy5iYgpAQCAtMCwwICsxLDUwIEBACisjIENvcHlyaWdodCAoQykgMjAxMyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIkxpYnJhcnkgb2YgdXRpbGl0eSBmdW5jdGlvbnMgZnJvbSBCU0Qgc3lzdGVtcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBwcm92aWRlcyB1c2VmdWwgZnVuY3Rpb25zIGNvbW1vbmx5IGZvdW5kIG9uIEJTRCBzeXN0ZW1zLCBcCisgICAgICAgICAgICAgICBhbmQgbGFja2luZyBvbiBvdGhlcnMgbGlrZSBHTlUgc3lzdGVtcywgdGh1cyBtYWtpbmcgaXQgZWFzaWVyIHRvIHBvcnQgXAorICAgICAgICAgICAgICAgcHJvamVjdHMgd2l0aCBzdHJvbmcgQlNEIG9yaWdpbnMsIHdpdGhvdXQgbmVlZGluZyB0byBlbWJlZCB0aGUgc2FtZSBcCisgICAgICAgICAgICAgICBjb2RlIG92ZXIgYW5kIG92ZXIgYWdhaW4gb24gZWFjaCBwcm9qZWN0LiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvd2lraS8iCisjIFRoZXJlIHNlZW1zIHRvIGJlIG1vcmUgbGljZW5zZXMgdXNlZCBpbiB0aGUgY29kZSwgSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZSwgY29tcGxldGUgbGlzdDoKKyMgT0UgQCB+L3Byb2plY3RzL2xpYmJzZCAkIGdyZXAgXkxpY2Vuc2U6IENPUFlJTkcgIHwgc29ydAorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKKyMgTGljZW5zZTogQlNELTItY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1OZXRCU0QKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLWF1dGhvcgorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtdmVyYmF0aW0KKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlLVBldGVyLVdlbW0KKyMgTGljZW5zZTogQlNELTMtY2xhdXNlLVJlZ2VudHMKKyMgTGljZW5zZTogQlNELTQtY2xhdXNlLUNocmlzdG9waGVyLUctRGVtZXRyaW91CisjIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1OaWVscy1Qcm92b3MKKyMgTGljZW5zZTogQlNELTUtY2xhdXNlLVBldGVyLVdlbW0KKyMgTGljZW5zZTogQmVlcndhcmUKKyMgTGljZW5zZTogRXhwYXQKKyMgTGljZW5zZTogSVNDCisjIExpY2Vuc2U6IElTQy1PcmlnaW5hbAorIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluCisjIExpY2Vuc2U6IHB1YmxpYy1kb21haW4tQ29saW4tUGx1bWIKK0xJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlICYgSVNDICYgUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wOGZjNGU2NmJlNDUyNjcxNWRhYjA5YzVmYmE1ZTllOCIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLXNyYy1saWJic2Qtb3ZlcmxheS5wYy5pbi1TZXQtQ2ZsYWdzLXRvLXVzZS1JLWluc3RlYWQucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsICA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImQ5ZTY5ODBmYmZlNDRmOTRmZDkyYjg5YTMzY2NlNjdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1NDhmMTBlNWFmNWEwOGIxZTIyODg5Y2U4NDMxNWIxZWJlNDE1MDViMDE1Yzk1OTZiYWQwM2ZkMTNhMTJiMzEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQzNDE5OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSAgPSAiQ2hlY2sgLSB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIGZvciBDIGNvZGUiCi1IT01FUEFHRSA9ICJodHRwOi8vY2hlY2suc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUxJQ0VOU0UgID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vY2hlY2svY2hlY2stJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1M2M1ZTVjNzdkMDkwZTEwM2ExN2YzZWQ3ZmQ3ZDhiOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNWY1MDc2NmFhNmY4ZmU1YTJkZjc1MjY2NmNhMDFhOTUwYWRkNDUwNzlhYTA2NDE2YjgzNzY1YjFjZjcxMDUyIgotCi1TID0gIiR7V09SS0RJUn0vY2hlY2stJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB0ZXhpbmZvCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0FXS19QQVRIPSR7YmluZGlyfS9nYXdrIgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiY2hlY2sgKDw9IDAuOS41KSIKLVJERVBFTkRTXyR7UE59ICs9ICJnYXdrIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY0NmQ0MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSAgPSAiQ2hlY2sgLSB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIGZvciBDIGNvZGUiCitIT01FUEFHRSA9ICJodHRwOi8vY2hlY2suc291cmNlZm9yZ2UubmV0LyIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59L2NoZWNrL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2NoZWNrLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMWIxN2M2MDc1ODIwYTQzNDExOTU5Mjk0MTE4NmY3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjQyMDEwOThiZWUwMGU5MGY1YzRiZGZhOTRhNWQzZWFkOGQ2NDFmOTAyNWI1NjBhMjc3NTVhODNiODI0MjM0IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJjaGVjay9jaGVjay9yZWxlYXNlcy8iCisKK1MgPSAiJHtXT1JLRElSfS9jaGVjay0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHRleGluZm8KKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfQVdLX1BBVEg9JHtiaW5kaXJ9L2dhd2siCisKK1JSRVBMQUNFU18ke1BOfSA9ICJjaGVjayAoPD0gMC45LjUpIgorUkRFUEVORFNfJHtQTn0gKz0gImdhd2siCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgppbmRleCBiMGFmNzU5Li5kODZkZGQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTIuYmIKQEAgLTksMTIgKzksMTIgQEAKIAogU0VDVElPTiA9ICJ4MTEvdXRpbHMiCiBERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDIgemxpYiIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKIAogQklOQ09ORklHID0gIiR7YmluZGlyfS9jcm9jby0wLjYtY29uZmlnIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGd0ay1kb2MgYmluY29uZmlnLWRpc2FibGVkCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGJpbmNvbmZpZy1kaXNhYmxlZAogCiBTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiYzA5ODRmY2UwNzhiYTJjZTI5Zjk1MDBjNmI5ZGRjZSIKIFNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImRkYzRiNTU0NmM5ZmI0MjgwYTUwMTdlMjcwN2ZiZDQ4MzkwMzRlZDFhYmE1YjdkNDM3MjIxMmYzNGY4NGY4NjAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NDBkYTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJXcmFwcGVyIGxpYnJhcnkgZm9yIGV2ZGV2IGRldmljZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmV2ZGV2LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQtWCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGYxY2ZhZWU4ZDc1ZWEzZmJiZmViOTlhOTg3MzA5NTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTFlNTllMzdhMmYwZDM5N2ZmZDdlODNiNzNhZjBlNjM4ZGI4M2I4ZGQwODkwMmVmMGY2NTFhMjFjYzFkZDQyMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzODAxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuOC5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIldyYXBwZXIgbGlicmFyeSBmb3IgZXZkZXYgZGV2aWNlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliZXZkZXYvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVC1YIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzVhYWUwZDM4ZmVlYTZmZGE5N2NhMzgxY2I5MTMyZWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZXZkZXYvbGliZXZkZXYuaDtlbmRsaW5lPTIxO21kNT03ZmY0ZjBiNTExMzI1MmMyZjFhODI4ZTBiYmFkOThkMSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMjVhOGMzOTM5ZTRhZDU5YTVlOWU1ZTFlMzU0ODMyZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDgzZDgxZTQ2NjA5ZGE4YmE4MGNiODI2YzAyZDkwODA3NjRhNmRlYzMzYzgyNjdjY2I3ZTE1ODgzM2Q0YzZkIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC8wMDAxLXRlc3QtZml4LTMyYml0LWxpbnV4LXJlZ3Jlc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvMDAwMS10ZXN0LWZpeC0zMmJpdC1saW51eC1yZWdyZXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZDA4MjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvMDAwMS10ZXN0LWZpeC0zMmJpdC1saW51eC1yZWdyZXNzLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNjlhMzgxM2M1MTNjODRlMDIyMTIyNTBjM2Q1YjhhMDJlY2VmYTY5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE1IEphbiAyMDE4IDA4OjAwOjMzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3Q6IGZpeCAzMmJpdCBsaW51eCByZWdyZXNzCisKK1RoaXMgcGF0Y2ggY29tZXMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbGliZXZlbnQvbGliZXZlbnQuZ2l0LAordGhlIGNvbW1pdCBpcyA2M2M0YmY3OGQ2YWYzYzZmZjQ2ZDJlOGU0YjUzZGQ5ZjU3N2E5Y2E5CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgfCAxICsKKyB0ZXN0L3JlZ3Jlc3NfdXRpbC5jIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDc1MjhkMzcuLmU2NGNiMWYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY2Myw2ICs2NjMsNyBAQCBBQ19DSEVDS19TSVpFT0Yoc2hvcnQpCisgQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCkKKyBBQ19DSEVDS19TSVpFT0Yodm9pZCAqKQorIEFDX0NIRUNLX1NJWkVPRihvZmZfdCkKKytBQ19DSEVDS19TSVpFT0YodGltZV90KQorIAorIEFDX0NIRUNLX1RZUEVTKFtzdHJ1Y3QgaW42X2FkZHIsIHN0cnVjdCBzb2NrYWRkcl9pbjYsIHNhX2ZhbWlseV90LCBzdHJ1Y3QgYWRkcmluZm8sIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlXSwgLCAsCisgWyNkZWZpbmUgX0dOVV9TT1VSQ0UKK2RpZmYgLS1naXQgYS90ZXN0L3JlZ3Jlc3NfdXRpbC5jIGIvdGVzdC9yZWdyZXNzX3V0aWwuYworaW5kZXggZWY2YTE0OC4uMGM3ZWFmYiAxMDA2NDQKKy0tLSBhL3Rlc3QvcmVncmVzc191dGlsLmMKKysrKyBiL3Rlc3QvcmVncmVzc191dGlsLmMKK0BAIC0xNDEyLDEwICsxNDEyLDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZGF0ZV9yZmMxMTIzX2Nhc2UgeworIAl7ICAxMjg5NDMzNjAwLCAiVGh1LCAxMSBOb3YgMjAxMCAwMDowMDowMCBHTVQifSwKKyAJeyAgMTMyMzY0ODAwMCwgIk1vbiwgMTIgRGVjIDIwMTEgMDA6MDA6MDAgR01UIn0sCisgI2lmbmRlZiBfV0lOMzIKKysjaWYgRVZFTlRfX1NJWkVPRl9USU1FX1QgPiA0CisgCS8qKiBJbiB3aW4zMiBjYXNlIHdlIGhhdmUgbWF4ICAgIjIzOjU5OjU5IEphbnVhcnkgMTgsIDIwMzgsIFVUQyIgZm9yIHRpbWUzMiAqLworIAl7ICA0Mjk0OTY3Mjk2LCAiU3VuLCAwNyBGZWIgMjEwNiAwNjoyODoxNiBHTVQifSAvKiAyXjMyICovLAorIAkvKiogSW4gd2luMzIgY2FzZSB3ZSBoYXZlIG1heCAiMjM6NTk6NTksIERlY2VtYmVyIDMxLCAzMDAwLCBVVEMiIGZvciB0aW1lNjQgKi8KKyAJezI1MzQwMjMwMDc5OSwgIkZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UIn0gLyogbG9uZyBsb25nIGZ1dHVyZSBubyBvbmUgY2FuIGltYWdpbmUgKi8sCisrI2VuZGlmIC8qIHRpbWVfdCAhPSAzMmJpdCAqLworIAl7ICAxNDU2NzA0MDAwLCAiTW9uLCAyOSBGZWIgMjAxNiAwMDowMDowMCBHTVQifSAvKiBsZWFwIHllYXIgKi8sCisgI2VuZGlmCisgCXsgIDE0MzU3MDg4MDAsICJXZWQsIDAxIEp1bCAyMDE1IDAwOjAwOjAwIEdNVCJ9IC8qIGxlYXAgc2Vjb25kICovLAorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiCmluZGV4IDEyNzBkNjIuLjgzY2U0NjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKQEAgLTksNiArOSw3IEBACiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cHM6Ly9naXRodWIuY29tL2xpYmV2ZW50L2xpYmV2ZW50L3JlbGVhc2VzL2Rvd25sb2FkL3JlbGVhc2UtJHtQVn0tc3RhYmxlLyR7QlB9LXN0YWJsZS50YXIuZ3ogXAogICAgIGZpbGU6Ly9NYWtlZmlsZS1taXNzaW5nLXRlc3QtZGlyLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS10ZXN0LWZpeC0zMmJpdC1saW51eC1yZWdyZXNzLnBhdGNoIFwKICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoCmluZGV4IDFlOTAxMjUuLjgwYzQwYTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2gKQEAgLTExLDEyICsxMSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCi0tLS0gYS9jb25maWd1cmUuYWN+CTIwMTQtMTEtMTIgMTE6NTY6NTEuMDAwMDAwMDAwICswMDAwCi0rKysgYi9jb25maWd1cmUuYWMJMjAxNi0wMi0wNCAxNDowMjo1My43NjU3MTA1MzIgKzAwMDAKLUBAIC01OTMsNSArNTkzLDUgQEAKK0luZGV4OiBsaWJmZmktMy4yLjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliZmZpLTMuMi4xLm9yaWcvY29uZmlndXJlLmFjCisrKysgbGliZmZpLTMuMi4xL2NvbmZpZ3VyZS5hYworQEAgLTU5Miw3ICs1OTIsNyBAQCBBQ19BUkdfRU5BQkxFKHB1cmlmeS1zYWZldHksCisgCiAgIyBUaGVzZSB2YXJpYWJsZXMgYXJlIG9ubHkgZXZlciB1c2VkIHdoZW4gd2UgY3Jvc3MtYnVpbGQgdG8gWDg2X1dJTjMyLgogICMgQW5kIHdlIG9ubHkgc3VwcG9ydCB0aGlzIHdpdGggR0NDLCBzby4uLgogLWlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgogK2lmIGZhbHNlOyB0aGVuCiAgICBpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgotICAgICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisgICAgIHRvb2xleGVjZGlyPSIke2V4ZWNfcHJlZml4fSIvJyQodGFyZ2V0X2FsaWFzKScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS1leHRyYV8xLjIuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS1leHRyYV8xLjIuNS5iYgppbmRleCAwMTM0NTcyLi5jMGZkODNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMi41LmJiCkBAIC01LDcgKzUsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ZtLWV4dHJhLmg7YmVnaW5saW5lPTg7ZW5kbGluZT0yMTttZDU9ZWYxZjg0ZGE2NGIzYzAxY2NhNDQ3MjEyZjdlZjYwMDciCiAKIFNFQ1RJT04gPSAieDExL2xpYnMiCi1ERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFMgPSAiZ2xpYi0yLjAtbmF0aXZlIGdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcGNtYW5mbS9saWJmbS0ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBcCkBAIC0xOCw2ICsxOCw2IEBACiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtZXh0cmEtb25seSAtLXdpdGgtZ3RrPW5vIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ2V0dGV4dAogCiBkb19jb25maWd1cmVbZGlyc10gPSsgIiR7U30vbTQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS8wMDAxLUVuY2xvc2UtdGV4dC1pbi1wcm9ncmFtbGlzdGluZy1pbnRvLUNEQVRBLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZTUzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaApAQCAtMCwwICsxLDc2IEBACitGcm9tIGVkNGNhOGMwYjE3ZmY1ZDNjNzY4YjkyNDA5YzE3ODdlM2YzZjE4NDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyaXkgR3J5dHNlbmtvIDxhbmRyZWpAcmVwLmtpZXYudWE+CitEYXRlOiBTdW4sIDI2IE5vdiAyMDE3IDIyOjMwOjE1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBFbmNsb3NlIHRleHQgaW4gPHByb2dyYW1saXN0aW5nPiBpbnRvIDwhW0NEQVRBWworCitOZXcgZ3RrLWRvYyBmYWlscyBvbiB0YWctbGlrZSBkYXRhIGluIGl0LgorU2VlIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU4NQorVGhhdCBpcyBkZWZpbml0ZWx5IGJ1ZyBvZiBndGstZG9jIGJ1dCBsZXQgd29ya2Fyb3VuZCBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubHhkZS5vcmcvZ2l0d2ViLz9wPWx4ZGUvbGliZm0uZ2l0O2E9Y29tbWl0O2g9YjA3MmVlMDQwMDQzMmQ3MmZkZjg2YmE5ZmVkNzRhN2UwZWMxMWVjMV0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL2Jhc2UvZm0tbW9kdWxlLmMgfCAxMiArKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZm0tbW9kdWxlLmMgYi9zcmMvYmFzZS9mbS1tb2R1bGUuYworaW5kZXggZDM2NGIyZC4uMmU4Yzk3OCAxMDA2NDQKKy0tLSBhL3NyYy9iYXNlL2ZtLW1vZHVsZS5jCisrKysgYi9zcmMvYmFzZS9mbS1tb2R1bGUuYworQEAgLTQ0LDcgKzQ0LDcgQEAKKyAgKiBvZiB0aGF0IHR5cGUgc2hvdWxkIGluY2x1ZGU6CisgICogPGV4YW1wbGUgaWQ9ImV4YW1wbGUtZm0tZHVtbXktaCI+CisgICogPHRpdGxlPlNhbXBsZSBvZiBmbS1kdW1teS5oPC90aXRsZT4KKy0gKiA8cHJvZ3JhbWxpc3Rpbmc+CisrICogPHByb2dyYW1saXN0aW5nPjwhW0NEQVRBWworICAqICNpbmNsdWRlIDxsaWJmbS9mbS5oPgorICAqCisgICogI2RlZmluZSBGTV9NT0RVTEVfZHVtbXlfVkVSU0lPTiAxCitAQCAtNTQsNyArNTQsNyBAQAorICAqIH0gRm1EdW1teUluaXQ7CisgICoKKyAgKiBleHRlcm4gRm1EdW1teUluaXQgZm1fbW9kdWxlX2luaXRfZHVtbXk7CistICogPC9wcm9ncmFtbGlzdGluZz4KKysgKiBdXT48L3Byb2dyYW1saXN0aW5nPgorICAqIDwvZXhhbXBsZT4KKyAgKiBUaGUgRk1fTU9EVUxFX2R1bW15X1ZFUlNJT04gaXMgYSBudW1iZXIgd2hpY2ggc2hvdWxkIGJlIGluY3JlYXNlZCBlYWNoCisgICogdGltZSBzb21ldGhpbmcgaW4gRm1EdW1teUluaXQgc3RydWN0dXJlIGlzIGNoYW5nZWQuIFRoZSBGbUR1bW15SW5pdAorQEAgLTY1LDcgKzY1LDcgQEAKKyAgKiBtb2R1bGUgaGFuZGxpbmcgaW4geW91ciBjb2RlOgorICAqIDxleGFtcGxlIGlkPSJleGFtcGxlLWZtLWR1bW15LXdpZGdldC1jIj4KKyAgKiA8dGl0bGU+U2FtcGxlIG9mIGZtLWR1bW15LXdpZGdldC5jPC90aXRsZT4KKy0gKiA8cHJvZ3JhbWxpc3Rpbmc+CisrICogPHByb2dyYW1saXN0aW5nPjwhW0NEQVRBWworICAqICNpbmNsdWRlICJmbS1kdW1teS5oIgorICAqCisgICogRk1fTU9EVUxFX0RFRklORV9UWVBFKGR1bW15LCBGbUR1bW15SW5pdCwgMSkKK0BAIC04Nyw3ICs4Nyw3IEBACisgICogICAgICAgICByZXN1bHQgPSBtb2R1bGUtPmdldF9uZXcoInRlc3Qgc2FtcGxlIik7CisgICogICAgIHJldHVybiByZXN1bHQ7CisgICogfQorLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+CisrICogXV0+PC9wcm9ncmFtbGlzdGluZz4KKyAgKiA8L2V4YW1wbGU+CisgICoKKyAgKiBUaGlyZCB0aGluZyBhcHBsaWNhdGlvbiBzaG91bGQgZG8gaXMgdG8gcmVnaXN0ZXIgbW9kdWxlIHR5cGUgb24gdGhlCitAQCAtMTA4LDcgKzEwOCw3IEBACisgICogaW50ZXJmYWNlIChzZWUgdGhlIGZtLWR1bW15LmggaGVhZGVyIGV4YW1wbGUgYWJvdmUpOgorICAqIDxleGFtcGxlIGlkPSJleGFtcGxlLWZtLWR1bW15LXRlc3QtYyI+CisgICogPHRpdGxlPlNhbXBsZSBvZiBtb2R1bGUgZHVtbXkvdGVzdDwvdGl0bGU+CistICogPHByb2dyYW1saXN0aW5nPgorKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKKyAgKiAjaW5jbHVkZSAiZm0tZHVtbXkuaCIKKyAgKgorICAqIEZNX0RFRklORV9NT0RVTEUoZHVtbXksIHRlc3QpCitAQCAtMTIxLDcgKzEyMSw3IEBACisgICogRm1EdW1teUluaXQgZm1fbW9kdWxlX2luaXRfZHVtbXkgPSB7CisgICogICAgIGZtX2R1bW15X3Rlc3RfZ2V0X25ldzsKKyAgKiB9OworLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+CisrICogXV0+PC9wcm9ncmFtbGlzdGluZz4KKyAgKiA8L2V4YW1wbGU+CisgICogVGhlIGZtX21vZHVsZV9pbml0X2R1bW15IHNob3VsZCBiZSBleGFjdGx5IHRoZSBzYW1lIHN0cnVjdHVyZSB0aGF0IGlzCisgICogZGVmaW5lZCBpbiB0aGUgaGVhZGVyIGZpbGUgYWJvdmUuCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIKaW5kZXggMWRkZGRmZC4uNTk2NDA4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgpAQCAtOSwyMiArOSwzNiBAQAogCiAKIFNFQ1RJT04gPSAieDExL2xpYnMiCi1ERVBFTkRTID0gImdsaWItMi4wIHBhbmdvIGd0ayszIG1lbnUtY2FjaGUgaW50bHRvb2wtbmF0aXZlIGxpYmV4aWYgbGliZm0tZXh0cmEgZ2V0dGV4dC1uYXRpdmUiCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBwYW5nbyBndGsrMyBtZW51LWNhY2hlIGludGx0b29sLW5hdGl2ZSBsaWJleGlmIGxpYmZtLWV4dHJhIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL2xpYmZtLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3RseS1jaGVjay10aGUtc3RhbXAtZmlsZS10aGF0LWluZGljYXRlcy1pZi13ZS0ucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3RseS1jaGVjay10aGUtc3RhbXAtZmlsZS10aGF0LWluZGljYXRlcy1pZi13ZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImExYmE5YWU1ZTkyMGYzOGI2NDdkZDUxMWVkZDZjODA3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3MDZiYjEwMjBjZjVmMmQ2ZjVhOTIyNmY2OTJjZTE5ODU5NDcxMzRkY2YyYmRlNjQyNzhiZDA0MjA3NzliNWEiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjaworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ2V0dGV4dCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIEFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWd0az0zIgogCiBkb19jb25maWd1cmVbZGlyc10gPSsgIiR7U30vbTQiCiAKK1BBQ0tBR0VTID0rICJsaWJmbS1ndGsiCiBQQUNLQUdFUyArPSAiJHtQTn0tbWltZSIKK0ZJTEVTX2xpYmZtLWd0ayA9ICIgXAorICAgICR7bGliZGlyfS9saWJmbS1ndGsqc28uKiBcCisgICAgJHtsaWJkaXJ9L2xpYmZtL21vZHVsZXMvZ3RrKiBcCisgICAgJHtiaW5kaXJ9L2xpYmZtLXByZWYtYXBwcyBcCisgICAgJHtiaW5kaXJ9L2x4c2hvcnRjdXQgXAorICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2xpYmZtLXByZWYtYXBwcy5kZXNrdG9wIFwKKyAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9seHNob3J0Y3V0LmRlc2t0b3AgXAorICAgICR7ZGF0YWRpcn0vbGliZm0vaW1hZ2VzL2ZvbGRlci5wbmcgXAorICAgICR7ZGF0YWRpcn0vbGliZm0vaW1hZ2VzL3Vua25vd24ucG5nIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL3VpLyoudWkgXAorIgogRklMRVNfJHtQTn0tbWltZSA9ICIke2RhdGFkaXJ9L21pbWUvIgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZmRkNzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLUZyb20gZWY1NzBlM2QyNzczYzEyMTI2ZTdkM2ZjZGM0ZGI5ZWY4MGE1ZTIxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAxODoxMzoyOCArMDkwMAotU3ViamVjdDogW1BBVENIXSBlY2M6IEFkZCBpbnB1dCB2YWxpZGF0aW9uIGZvciBYMjU1MTkuCi0KLSogY2lwaGVyL2VjYy5jIChlY2NfZGVjcnlwdF9yYXcpOiBBZGQgaW5wdXQgdmFsaWRhdGlvbi4KLSogbXBpL2VjLmMgKGVjX3BfaW5pdCk6IFVzZSBzY3JhdGNoIGJ1ZmZlciBmb3IgYmFkIHBvaW50cy4KLShfZ2NyeV9tcGlfZWNfYmFkX3BvaW50KTogTmV3LgotCi0tLQotCi1Gb2xsb3dpbmcgaXMgdGhlIHBhcGVyIGRlc2NyaWJpbmcgdGhlIGF0dGFjazoKLQotICAgIE1heSB0aGUgRm91cnRoIEJlIFdpdGggWW91OiBBIE1pY3JvYXJjaGl0ZWN0dXJhbCBTaWRlIENoYW5uZWwgQXR0YWNrCi0gICAgb24gUmVhbC1Xb3JsZCBBcHBsaWNhdGlvbnMgb2YgQ3VydmUyNTUxOQotICAgIGJ5IERhbmllbCBHZW5raW4sIEx1a2UgVmFsZW50YSwgYW5kIFl1dmFsIFlhcm9tCi0KLUluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB3ZSBkbyBvdXRwdXQgY2hlY2tpbmcgYW5kIGl0IHJlc3VsdHMgYW4KLWVycm9yIGZvciB0aG9zZSBiYWQgcG9pbnRzLiAgSG93ZXZlciwgd2hlbiBhdHRhY2tlZCwgdGhlIGNvbXB1dGF0aW9uCi13aWxsIGRvbmUgd2l0aCBsZWFrIG9mIHByaXZhdGUga2V5LCBldmVuIGl0IHdpbGwgcmVzdWx0cyBlcnJvcnMuICBUbwotbWl0aWdhdGUgbGVhaywgd2UgYWRkZWQgaW5wdXQgdmFsaWRhdGlvbi4KLQotTm90ZSB0aGF0IHdlIG9ubHkgbGlzdCBiYWQgcG9pbnRzIHdpdGggTVNCPTAuICBCeSBYMjU1MTksIE1TQiBpcwotYWx3YXlzIGNsZWFyZWQuCi0KLUluIGZ1dHVyZSwgd2Ugc2hvdWxkIGltcGxlbWVudCBjb25zdGFudC10aW1lIGZpZWxkIGNvbXB1dGF0aW9uLiAgVGhlbiwKLXRoaXMgaW5wdXQgdmFsaWRhdGlvbiBjb3VsZCBiZSByZW1vdmVkLCBpZiBwZXJmb3JtYW5jZSBpcyBpbXBvcnRhbnQKLWFuZCB3ZSBhcmUgc3VyZSBmb3Igbm8gbGVhay4KLQotQ1ZFLWlkOiBDVkUtMjAxNy0wMzc5Ci1TaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0wMzc5Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjaXBoZXIvZWNjLmMgfCAxNyArKysrKysrKysrKysrKystLQotIG1waS9lYy5jICAgICB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQotIHNyYy9tcGkuaCAgICB8ICAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvZWNjLmMgYi9jaXBoZXIvZWNjLmMKLWluZGV4IGUyNWJmMDkuLjRlM2U1YjEgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvZWNjLmMKLSsrKyBiL2NpcGhlci9lY2MuYwotQEAgLTE2MjgsOSArMTYyOCwyMiBAQCBlY2NfZGVjcnlwdF9yYXcgKGdjcnlfc2V4cF90ICpyX3BsYWluLCBnY3J5X3NleHBfdCBzX2RhdGEsIGdjcnlfc2V4cF90IGtleXBhcm1zKQotICAgaWYgKERCR19DSVBIRVIpCi0gICAgIGxvZ19wcmludHBudCAoImVjY19kZWNyeXB0ICAgIGtHIiwgJmtHLCBOVUxMKTsKLSAKLS0gIGlmICghKGZsYWdzICYgUFVCS0VZX0ZMQUdfREpCX1RXRUFLKQotKyAgaWYgKChmbGFncyAmIFBVQktFWV9GTEFHX0RKQl9UV0VBSykpCi0rICAgIHsKLSAgICAgICAvKiBGb3IgWDI1NTE5LCBieSBpdHMgZGVmaW5pdGlvbiwgdmFsaWRhdGlvbiBzaG91bGQgbm90IGJlIGRvbmUuICAqLwotLSAgICAgICYmICFfZ2NyeV9tcGlfZWNfY3VydmVfcG9pbnQgKCZrRywgZWMpKQotKyAgICAgIC8qIChJbnN0ZWFkLCB3ZSBkbyBvdXRwdXQgY2hlY2suKQotKyAgICAgICAqCi0rICAgICAgICogSG93ZXZlciwgdG8gbWl0aWdhdGUgc2VjcmV0IGtleSBsZWFrIGZyb20gb3VyIGltcGxlbWVudGF0aW9uLAotKyAgICAgICAqIHdlIGFsc28gZG8gaW5wdXQgdmFsaWRhdGlvbiBoZXJlLiAgRm9yIGNvbnN0YW50LXRpbWUKLSsgICAgICAgKiBpbXBsZW1lbnRhdGlvbiwgd2UgY2FuIHJlbW92ZSB0aGlzIGlucHV0IHZhbGlkYXRpb24uCi0rICAgICAgICovCi0rICAgICAgaWYgKF9nY3J5X21waV9lY19iYWRfcG9pbnQgKCZrRywgZWMpKQotKyAgICAgICAgewotKyAgICAgICAgICByYyA9IEdQR19FUlJfSU5WX0RBVEE7Ci0rICAgICAgICAgIGdvdG8gbGVhdmU7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKCFfZ2NyeV9tcGlfZWNfY3VydmVfcG9pbnQgKCZrRywgZWMpKQotICAgICB7Ci0gICAgICAgcmMgPSBHUEdfRVJSX0lOVl9EQVRBOwotICAgICAgIGdvdG8gbGVhdmU7Ci1kaWZmIC0tZ2l0IGEvbXBpL2VjLmMgYi9tcGkvZWMuYwotaW5kZXggYTBmNzM1Ny4uNGMxNjYwMyAxMDA2NDQKLS0tLSBhL21waS9lYy5jCi0rKysgYi9tcGkvZWMuYwotQEAgLTM5Niw2ICszOTYsMjkgQEAgZWNfZ2V0X3R3b19pbnZfcCAobXBpX2VjX3QgZWMpCi0gfQotIAotIAotK3N0YXRpYyBjb25zdCBjaGFyICpjdXJ2ZTI1NTE5X2JhZF9wb2ludHNbXSA9IHsKLSsgICIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLAotKyAgIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSIsCi0rICAiMHgwMGI4NDk1ZjE2MDU2Mjg2ZmRiMTMyOWNlYjhkMDlkYTZhYzQ5ZmYxZmFlMzU2MTZhZWI4NDEzYjdjN2FlYmUwIiwKLSsgICIweDU3MTE5ZmQwZGQ0ZTIyZDg4NjhlMWM1OGM0NWM0NDA0NWJlZjgzOWM1NWIxZDBiMTI0OGM1MGEzYmM5NTljNWYiLAotKyAgIjB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlYyIsCi0rICAiMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVkIiwKLSsgICIweDdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWUiLAotKyAgTlVMTAotK307Ci0rCi0rc3RhdGljIGdjcnlfbXBpX3QKLStzY2FudmFsIChjb25zdCBjaGFyICpzdHJpbmcpCi0rewotKyAgZ3BnX2Vycl9jb2RlX3QgcmM7Ci0rICBnY3J5X21waV90IHZhbDsKLSsKLSsgIHJjID0gX2djcnlfbXBpX3NjYW4gKCZ2YWwsIEdDUllNUElfRk1UX0hFWCwgc3RyaW5nLCAwLCBOVUxMKTsKLSsgIGlmIChyYykKLSsgICAgbG9nX2ZhdGFsICgic2Nhbm5pbmcgRUNDIHBhcmFtZXRlciBmYWlsZWQ6ICVzXG4iLCBncGdfc3RyZXJyb3IgKHJjKSk7Ci0rICByZXR1cm4gdmFsOwotK30KLSsKLSAKLSAvKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVkIGEgY29udGV4dCBmb3IgZWxsaXB0aWMgY3VydmUgYmFzZWQgb24gdGhlCi0gICAgZmllbGQgR0YocCkuICBQIGlzIHRoZSBwcmltZSBzcGVjaWZ5aW5nIHRoaXMgZmllbGQsIEEgaXMgdGhlIGZpcnN0Ci1AQCAtNDM0LDkgKzQ1NywxNyBAQCBlY19wX2luaXQgKG1waV9lY190IGN0eCwgZW51bSBnY3J5X21waV9lY19tb2RlbHMgbW9kZWwsCi0gCi0gICBfZ2NyeV9tcGlfZWNfZ2V0X3Jlc2V0IChjdHgpOwotIAotLSAgLyogQWxsb2NhdGUgc2NyYXRjaCB2YXJpYWJsZXMuICAqLwotLSAgZm9yIChpPTA7IGk8IERJTShjdHgtPnQuc2NyYXRjaCk7IGkrKykKLS0gICAgY3R4LT50LnNjcmF0Y2hbaV0gPSBtcGlfYWxsb2NfbGlrZSAoY3R4LT5wKTsKLSsgIGlmIChtb2RlbCA9PSBNUElfRUNfTU9OVEdPTUVSWSkKLSsgICAgewotKyAgICAgIGZvciAoaT0wOyBpPCBESU0oY3R4LT50LnNjcmF0Y2gpICYmIGN1cnZlMjU1MTlfYmFkX3BvaW50c1tpXTsgaSsrKQotKyAgICAgICAgY3R4LT50LnNjcmF0Y2hbaV0gPSBzY2FudmFsIChjdXJ2ZTI1NTE5X2JhZF9wb2ludHNbaV0pOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBBbGxvY2F0ZSBzY3JhdGNoIHZhcmlhYmxlcy4gICovCi0rICAgICAgZm9yIChpPTA7IGk8IERJTShjdHgtPnQuc2NyYXRjaCk7IGkrKykKLSsgICAgICAgIGN0eC0+dC5zY3JhdGNoW2ldID0gbXBpX2FsbG9jX2xpa2UgKGN0eC0+cCk7Ci0rICAgIH0KLSAKLSAgIC8qIFByZXBhcmUgZm9yIGZhc3QgcmVkdWN0aW9uLiAgKi8KLSAgIC8qIEZJWE1FOiBuZWVkIGEgdGVzdCBmb3IgTklTVCB2YWx1ZXMuICBIb3dldmVyIGl0IGRvZXMgbm90IGdhaW4gdXMKLUBAIC0xNTcyLDMgKzE2MDMsMTcgQEAgX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpCi0gCi0gICByZXR1cm4gcmVzOwotIH0KLSsKLSsKLStpbnQKLStfZ2NyeV9tcGlfZWNfYmFkX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpCi0rewotKyAgaW50IGk7Ci0rICBnY3J5X21waV90IHhfYmFkOwotKwotKyAgZm9yIChpID0gMDsgKHhfYmFkID0gY3R4LT50LnNjcmF0Y2hbaV0pOyBpKyspCi0rICAgIGlmICghbXBpX2NtcCAocG9pbnQtPngsIHhfYmFkKSkKLSsgICAgICByZXR1cm4gMTsKLSsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9zcmMvbXBpLmggYi9zcmMvbXBpLmgKLWluZGV4IGI1Mzg1YjUuLmFlYmE3ZjggMTAwNjQ0Ci0tLS0gYS9zcmMvbXBpLmgKLSsrKyBiL3NyYy9tcGkuaAotQEAgLTI5Niw2ICsyOTYsNyBAQCB2b2lkIF9nY3J5X21waV9lY19tdWxfcG9pbnQgKG1waV9wb2ludF90IHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjcnlfbXBpX3Qgc2NhbGFyLCBtcGlfcG9pbnRfdCBwb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1waV9lY190IGN0eCk7Ci0gaW50ICBfZ2NyeV9tcGlfZWNfY3VydmVfcG9pbnQgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGN0eCk7Ci0raW50IF9nY3J5X21waV9lY19iYWRfcG9pbnQgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGN0eCk7Ci0gCi0gZ2NyeV9tcGlfdCBfZ2NyeV9tcGlfZWNfZWMyb3MgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGVjdHgpOwotIAotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA2LUZpeC1idWlsZGluZy1BQXJjaDMyLUNFLWltcGxlbWVudGF0aW9ucy13aGVuLXRhcmdldC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YjlmZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA2LUZpeC1idWlsZGluZy1BQXJjaDMyLUNFLWltcGxlbWVudGF0aW9ucy13aGVuLXRhcmdldC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1Gcm9tIDRhN2FhMzBhZTlmM2NlNzk4ZGQ4ODZjMmYyZDQxNjRjNDMwMjc3NDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLaXZpbGlubmEgPGp1c3NpLmtpdmlsaW5uYUBpa2kuZmk+Ci1EYXRlOiBTYXQsIDI5IEp1bCAyMDE3IDE0OjM0OjIzICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZGluZyBBQXJjaDMyIENFIGltcGxlbWVudGF0aW9ucyB3aGVuIHRhcmdldCBpcyBBUk12NgotIGFyY2gKLQotKiBjaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlM6IFNlbGVjdCBBUk12OCBhcmNoaXRlY3VyZS4KLSogY2lwaGVyL3Jpam5kYWVsLWFybXY4LWFhcmNoMzItY2UuUzogRGl0dG8uCi0qIGNpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUzogRGl0dG8uCi0qIGNpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TOiBEaXR0by4KLSogY29uZmlndXJlLmFjIChnY3J5X2N2X2djY19pbmxpbmVfYXNtX2FhcmNoMzJfY3J5cHRvKTogRGl0dG8uCi0tLQotCi1SYXNwYmlhbiBkaXN0cmlidXRpb24gZGVmYXVsdHMgdG8gQVJNdjYgYXJjaGl0ZWN0dXJlIHRodXMgJ3JiaXQnCi1pbnN0cnVjdGlvbiBpcyBub3QgYXZhaWxhYmxlIHdpdGggZGVmYXVsdCBjb21waWxlciBmbGFncy4gUGF0Y2gKLWFkZHMgZXhwbGljaXQgYXJjaGl0ZWN0dXJlIHNlbGVjdGlvbiBmb3IgQVJNdjggdG8gZW5hYmxlICdyYml0JwotdXNhZ2Ugd2l0aCBBUk12OC9BQXJjaDMyLUNFIGFzc2VtYmx5IGltcGxlbWVudGF0aW9ucyBvZiBTSEEsCi1HSEFTSCBhbmQgQUVTLgotCi1SZXBvcnRlZC1ieTogQ2hyaXMgSG9ycnkgPHplcmJleUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLaXZpbGlubmEgPGp1c3NpLmtpdmlsaW5uYUBpa2kuZmk+Ci0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgQmFya2VyIDxwYmFya2VyQHRvZ2FubGFicy5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLS0tLQotIGNpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUyB8IDEgKwotIGNpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMgICB8IDEgKwotIGNpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUyAgICAgICB8IDEgKwotIGNpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TICAgICB8IDEgKwotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgKwotIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMgYi9jaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMKLWluZGV4IGI2MWE3ODcxLi4xZGU2NmExNiAxMDA2NDQKLS0tLSBhL2NpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUwotKysrIGIvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TCi1AQCAtMjQsNiArMjQsNyBAQAotICAgICBkZWZpbmVkKEhBVkVfR0NDX0lOTElORV9BU01fQUFSQ0gzMl9DUllQVE8pCi0gCi0gLnN5bnRheCB1bmlmaWVkCi0rLmFyY2ggYXJtdjgtYQotIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKLSAuYXJtCi0gCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL3Jpam5kYWVsLWFybXY4LWFhcmNoMzItY2UuUyBiL2NpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMKLWluZGV4IGYzNzVmNjczLi41YzhmYTNjMCAxMDA2NDQKLS0tLSBhL2NpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMKLSsrKyBiL2NpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMKLUBAIC0yNCw2ICsyNCw3IEBACi0gICAgIGRlZmluZWQoSEFWRV9HQ0NfSU5MSU5FX0FTTV9BQVJDSDMyX0NSWVBUTykKLSAKLSAuc3ludGF4IHVuaWZpZWQKLSsuYXJjaCBhcm12OC1hCi0gLmZwdSBjcnlwdG8tbmVvbi1mcC1hcm12OAotIC5hcm0KLSAKLWRpZmYgLS1naXQgYS9jaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMgYi9jaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMKLWluZGV4IGIwYmM1ZmZlLi5iZjJiMjMzYiAxMDA2NDQKLS0tLSBhL2NpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUwotKysrIGIvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TCi1AQCAtMjQsNiArMjQsNyBAQAotICAgICBkZWZpbmVkKEhBVkVfR0NDX0lOTElORV9BU01fQUFSQ0gzMl9DUllQVE8pICYmIGRlZmluZWQoVVNFX1NIQTEpCi0gCi0gLnN5bnRheCB1bmlmaWVkCi0rLmFyY2ggYXJtdjgtYQotIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKLSAuYXJtCi0gCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMgYi9jaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUwotaW5kZXggMjA0MWEyMzcuLjJiMTdhYjFiIDEwMDY0NAotLS0tIGEvY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMKLSsrKyBiL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TCi1AQCAtMjQsNiArMjQsNyBAQAotICAgICBkZWZpbmVkKEhBVkVfR0NDX0lOTElORV9BU01fQUFSQ0gzMl9DUllQVE8pICYmIGRlZmluZWQoVVNFX1NIQTI1NikKLSAKLSAuc3ludGF4IHVuaWZpZWQKLSsuYXJjaCBhcm12OC1hCi0gLmZwdSBjcnlwdG8tbmVvbi1mcC1hcm12OAotIC5hcm0KLSAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDI3ZmFhN2Y0Li42NmU3Y2Q2NyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTYxOSw2ICsxNjE5LDcgQEAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgR0NDIGlubGluZSBhc3NlbWJsZXIgc3VwcG9ydHMgQUFyY2gzMiBDcnlwdG8gRXh0ZW5zaW9uIGkKLSAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKAotICAgICAgICAgICBbW19fYXNtX18oCi0gICAgICAgICAgICAgICAgICIuc3ludGF4IHVuaWZpZWRcblx0IgotKyAgICAgICAgICAgICAgICAiLmFyY2ggYXJtdjgtYVxuXHQiCi0gICAgICAgICAgICAgICAgICIuYXJtXG5cdCIKLSAgICAgICAgICAgICAgICAgIi5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjhcblx0IgotIAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI5ODJmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJhbCBwdXJwb3NlIGNyeXB0b2dyYXBoaWMgbGlicmFyeSBiYXNlZCBvbiB0aGUgY29kZSBmcm9tIEdudVBHIgotSE9NRVBBR0UgPSAiaHR0cDovL2RpcmVjdG9yeS5mc2Yub3JnL3Byb2plY3QvbGliZ2NyeXB0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgotU0VDVElPTiA9ICJsaWJzIgotCi0jIGhlbHBlciBwcm9ncmFtIGdjcnlwdHJuZCBhbmQgZ2V0cmFuZG9tIGFyZSB1bmRlciBHUEwsIHJlc3QgTEdQTAotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0tZGV2ID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ0VOU0VfZHVtcHNleHAtZGV2ID0gIkdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIgotCi1ERVBFTkRTID0gImxpYmdwZy1lcnJvciIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJnY3J5cHQvbGliZ2NyeXB0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1iZW5jaC1zbG9wZS5jLXdvcmthcm91bmQtSUNFLWZhaWx1cmUtb24tbWlwcy13LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXRlc3RzLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1lY2MtQWRkLWlucHV0LXZhbGlkYXRpb24tZm9yLVgyNTUxOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUZpeC1idWlsZGluZy1BQXJjaDMyLUNFLWltcGxlbWVudGF0aW9ucy13aGVuLXRhcmdldC0ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjExMGNlNDM1MmY5ZWE2ZjU2MGJkYzZjNTY0NGFlOTNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2ZTQ3MGI3ZjJkM2E3MDNlODc0N2YwNWE4YzE5ZDllMTBlMjZlYmYyZDVmM2Q3MWZmNzVhNDBmNTA0ZTEyZWUiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliZ2NyeXB0LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYXNtIgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNhcGFiaWxpdGllcyIKLVBBQ0tBR0VDT05GSUdbY2FwYWJpbGl0aWVzXSA9ICItLXdpdGgtY2FwYWJpbGl0aWVzLC0td2l0aG91dC1jYXBhYmlsaXRpZXMsbGliY2FwIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoaXMgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBvbmUgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKLX0KLQotIyBsaWJnY3J5cHQucGMgaXMgYWRkZWQgbG9jYWxseSBhbmQgdGh1cyBpbnN0YWxsZWQgaGVyZQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvbGliZ2NyeXB0LnBjICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLX0KLQotUEFDS0FHRVMgPSsgImR1bXBzZXhwLWRldiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaG1hYzI1NiIKLUZJTEVTX2R1bXBzZXhwLWRldiArPSAiJHtiaW5kaXJ9L2R1bXBzZXhwIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmU2NTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMi5iYgpAQCAtMCwwICsxLDUzIEBACitTVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKK0hPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKK1NFQ1RJT04gPSAibGlicyIKKworIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgorTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWFuZC11c2UtcGtnLWNvbmZpZy1mb3ItbGliZ2NyeXB0LWluc3RlYWQtb2YtY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXRlc3RzLWJlbmNoLXNsb3BlLmMtd29ya2Fyb3VuZC1JQ0UtZmFpbHVyZS1vbi1taXBzLXcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtdGVzdHMtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiY2ZiMGI1Yzc5ZWFiMDc2ODZiNjg5ODE2MGE0MDcxMzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzgwNjRjYWU3NTU4MTQ0YjEzZWYwZWI4NzA5MzQxMjM4MGVmYTE2YzRlZTMwYWQxMmVjYjU0ODg2YTUyNGMwNyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJnY3J5cHQtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1hc20iCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0xGTEFHUz0nLS10YWc9Q0MnIgorCitQQUNLQUdFQ09ORklHID8/PSAiY2FwYWJpbGl0aWVzIgorUEFDS0FHRUNPTkZJR1tjYXBhYmlsaXRpZXNdID0gIi0td2l0aC1jYXBhYmlsaXRpZXMsLS13aXRob3V0LWNhcGFiaWxpdGllcyxsaWJjYXAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhpcyBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIG9uZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorfQorCisjIGxpYmdjcnlwdC5wYyBpcyBhZGRlZCBsb2NhbGx5IGFuZCB0aHVzIGluc3RhbGxlZCBoZXJlCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy9saWJnY3J5cHQucGMgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnLworfQorCitQQUNLQUdFUyA9KyAiZHVtcHNleHAtZGV2IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9obWFjMjU2IgorRklMRVNfZHVtcHNleHAtZGV2ICs9ICIke2JpbmRpcn0vZHVtcHNleHAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiCmluZGV4IGIyZTJkNTAuLmI3NGYwNzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNy5iYgpAQCAtMjEsNyArMjEsNyBAQAogCiBCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZy1lcnJvci1jb25maWciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyBnZXR0ZXh0IG11bHRpbGliX2hlYWRlcgogQ1BQRkxBR1MgKz0gIi1QIgogZG9fY29tcGlsZV9wcmVwZW5kKCkgewogCVRBUkdFVF9GSUxFPWxpbnV4LWdudQpAQCAtNTMsNiArNTMsNyBAQAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJIyB3ZSBkb24ndCBoYXZlIGNvbW1vbiBsaXNwIGluIE9FCiAJcm0gLXJmICIke0R9JHtkYXRhZGlyfS9jb21tb24tbGlzcC8iCisJb2VfbXVsdGlsaWJfaGVhZGVyIGdwZy1lcnJvci5oIGdwZ3J0LmgKIH0KIAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ3BnLWVycm9yIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsL1JlbW92ZS1jbWFrZS1jaGVjay1mb3ItUGVybC5wYXRjaAppbmRleCBjNWMwY2IwLi5iNTBmNTBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsL1JlbW92ZS1jbWFrZS1jaGVjay1mb3ItUGVybC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsL1JlbW92ZS1jbWFrZS1jaGVjay1mb3ItUGVybC5wYXRjaApAQCAtMTQsMTEgKzE0LDExIEBACiAgQ01ha2VMaXN0cy50eHQgfCAzICstLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGQ1YWFkODAuLjVjYzk4NjMgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC05MSw4ICs5MSw3IEBAIGlmKFNIQVJFRF9PTkxZKQorSW5kZXg6IGxpYmljYWwtMi4wLjAvQ01ha2VMaXN0cy50eHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJpY2FsLTIuMC4wLm9yaWcvQ01ha2VMaXN0cy50eHQKKysrKyBsaWJpY2FsLTIuMC4wL0NNYWtlTGlzdHMudHh0CitAQCAtMTE2LDggKzExNiw3IEBAIGlmKFNIQVJFRF9PTkxZKQogICAgc2V0KExJQlJBUllfVFlQRSBTSEFSRUQpCiAgZW5kaWYoKQogIApAQCAtMjYsOCArMjYsNSBAQAogLWZpbmRfcGFja2FnZShQZXJsIFJFUVVJUkVEKQogK3NldChQRVJMX0VYRUNVVEFCTEUgcGVybCkKICAKLSAjIE1TVkMgc3BlY2lmaWMgZGVmaW5pdGlvbnMKLSBpZihXSU4zMikKLS0tIAotMi4xLjQKLQorICMgRW5zdXJlIGZpbmRpbmcgNjRiaXQgbGlicyB3aGVuIHVzaW5nIDY0LWJpdCBjb21waWxlcnMKKyBpZihDTUFLRV9DTF82NCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiCmluZGV4IGQ0ZmU4NjguLmRjYzIxY2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYgpAQCAtMTcsNSArMTcsMyBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJpY2FsL2xpYmljYWwvcmVsZWFzZXMiCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhL2tzYmEtYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYS9rc2JhLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaAppbmRleCBkMjhkZmQ5Li41YWZlNmRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhL2tzYmEtYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmEva3NiYS1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKQEAgLTYsMTMgKzYsMTMgQEAKIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogCi1JbmRleDogbGlia3NiYS0xLjMuMC9NYWtlZmlsZS5hbQorSW5kZXg6IGxpYmtzYmEtMS4zLjUvTWFrZWZpbGUuYW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJrc2JhLTEuMy4wLm9yaWcvTWFrZWZpbGUuYW0JMjAxNC0wNS0xMyAyMTozOToyMi4zOTAzODU2NDYgKzAwMDAKLSsrKyBsaWJrc2JhLTEuMy4wL01ha2VmaWxlLmFtCTIwMTQtMDUtMTMgMjE6Mzk6MjIuNDYyMzg1NjQ2ICswMDAwCi1AQCAtMjEsNiArMjEsOSBAQAorLS0tIGxpYmtzYmEtMS4zLjUub3JpZy9NYWtlZmlsZS5hbQorKysrIGxpYmtzYmEtMS4zLjUvTWFrZWZpbGUuYW0KK0BAIC0yMCw2ICsyMCw5IEBACisgCiAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQgLUkgZ2wvbTQKLSBBVVRPTUFLRV9PUFRJT05TID0gZGlzdC1iemlwMiBuby1kaXN0LWd6aXAKICAKICtwa2djb25maWdkaXIgPSAke2xpYmRpcn0vcGtnY29uZmlnCiArcGtnY29uZmlnX0RBVEEgPSBrc2JhLnBjCkBAIC0yMCwxMSArMjAsMTEgQEAKICAjIChBIHN1aXRhYmxlIGdpdGxvZy10by1jaGFuZ2Vsb2cgc2NyaXB0IGNhbiBiZSBmb3VuZCBpbiBHbnVQRyBtYXN0ZXIuKQogIEdJVExPR19UT19DSEFOR0VMT0c9Z2l0bG9nLXRvLWNoYW5nZWxvZwogIAotSW5kZXg6IGxpYmtzYmEtMS4zLjAvY29uZmlndXJlLmFjCitJbmRleDogbGlia3NiYS0xLjMuNS9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJrc2JhLTEuMy4wLm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDUtMTMgMjE6Mzk6MjIuMzkwMzg1NjQ2ICswMDAwCi0rKysgbGlia3NiYS0xLjMuMC9jb25maWd1cmUuYWMJMjAxNC0wNS0xMyAyMTozOToyMi40NjIzODU2NDYgKzAwMDAKLUBAIC00MDAsNiArNDAwLDcgQEAKKy0tLSBsaWJrc2JhLTEuMy41Lm9yaWcvY29uZmlndXJlLmFjCisrKysgbGlia3NiYS0xLjMuNS9jb25maWd1cmUuYWMKK0BAIC00MTQsNiArNDE0LDcgQEAgZ2wvTWFrZWZpbGUKICBzcmMvTWFrZWZpbGUKICBzcmMva3NiYS1jb25maWcKICBzcmMvdmVyc2lvbmluZm8ucmMKQEAgLTMyLDEwICszMiwxMCBAQAogIHRlc3RzL01ha2VmaWxlCiAgZG9jL01ha2VmaWxlCiAgXSkKLUluZGV4OiBsaWJrc2JhLTEuMy4wL2tzYmEucGMuaW4KK0luZGV4OiBsaWJrc2JhLTEuMy41L2tzYmEucGMuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBsaWJrc2JhLTEuMy4wL2tzYmEucGMuaW4JMjAxNC0wNS0xMyAyMTozOToyMi40NjIzODU2NDYgKzAwMDAKKy0tLSAvZGV2L251bGwKKysrKyBsaWJrc2JhLTEuMy41L2tzYmEucGMuaW4KIEBAIC0wLDAgKzEsMTcgQEAKICtwcmVmaXg9QHByZWZpeEAKICtleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACkBAIC01NCwxMSArNTQsMTEgQEAKICtMaWJzLnByaXZhdGU6IC1MJHtsaWJkaXJ9IC1sZ3BnLWVycm9yCiArQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KICsKLUluZGV4OiBsaWJrc2JhLTEuMy4wL3NyYy9rc2JhLm00CitJbmRleDogbGlia3NiYS0xLjMuNS9zcmMva3NiYS5tNAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmtzYmEtMS4zLjAub3JpZy9zcmMva3NiYS5tNAkyMDE0LTA1LTEzIDIxOjM5OjIyLjM5MDM4NTY0NiArMDAwMAotKysrIGxpYmtzYmEtMS4zLjAvc3JjL2tzYmEubTQJMjAxNC0wNS0xMyAyMTo0OTowMy42NTAzODI2OTYgKzAwMDAKLUBAIC0yMiwxOCArMjIsNyBAQAorLS0tIGxpYmtzYmEtMS4zLjUub3JpZy9zcmMva3NiYS5tNAorKysrIGxpYmtzYmEtMS4zLjUvc3JjL2tzYmEubTQKK0BAIC0yMiwxOCArMjIsNyBAQCBkbmwgd2l0aCBhIGNoYW5nZWQgQVBJLgogIGRubAogIEFDX0RFRlVOKFtBTV9QQVRIX0tTQkFdLAogIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCkBAIC03Nyw3ICs3Nyw3IEBACiAgICB0bXA9aWZlbHNlKFskMV0sICwxOjEuMC4wLCQxKQogICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgogICAgICAgcmVxX2tzYmFfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAotQEAgLTQzLDQ4ICszMiwxMyBAQAorQEAgLTQzLDQ4ICszMiwxMyBAQCBBQ19ERUZVTihbQU1fUEFUSF9LU0JBXSwKICAgICAgIG1pbl9rc2JhX3ZlcnNpb249IiR0bXAiCiAgICBmaQogIApAQCAtMTI5LDcgKzEyOSw3IEBACiAgICAgICAgICBpZiB0ZXN0ICIkdG1wIiAtZ3QgMCA7IHRoZW4KICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbS1NCQSBBUEkgdmVyc2lvbl0pCiAgICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2tzYmFfYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgotQEAgLTk3LDEwICs1MSw4IEBACitAQCAtOTcsMTAgKzUxLDggQEAgQUNfREVGVU4oW0FNX1BBVEhfS1NCQV0sCiAgICAgICBmaQogICAgZmkKICAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCkBAIC0xNDEsNyArMTQxLDcgQEAKICAgICAgaWYgdGVzdCB4IiRsaWJrc2JhX2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KICAgICAgICBpZiB0ZXN0IHgiJGxpYmtzYmFfY29uZmlnX2hvc3QiICE9IHgiJGhvc3QiIDsgdGhlbgogICAgQUNfTVNHX1dBUk4oW1sKLUBAIC0xMTQsOCArNjYsNiBAQAorQEAgLTExNCw4ICs2Niw2IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0tTQkFdLAogICAgICAgIGZpCiAgICAgIGZpCiAgICBlbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhXzEuMy41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNS5iYgppbmRleCAzNmI2NjcwLi5hN2VhNTNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhXzEuMy41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmFfMS4zLjUuYmIKQEAgLTI0LDMgKzI0LDUgQEAKIAkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQogCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00CiB9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibXBjL2xpYm1wY18xLjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg4MTMyNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibXBjL2xpYm1wY18xLjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgbGlibXBjLmluYwotCi1ERVBFTkRTID0gImdtcCBtcGZyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L21wYy9tcGMtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDZhMWQ1ZjhkZGVhM2FiZDJjYzNlOThmNTgzNTJkMjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjE3ZGVjYzZlYTA5ODg5ZmIwOGVkZTMzMDkxN2EwMGIxNjgwOWI4ZGI4OGMyOWMzMWJmYmI0OWNiZjg4ZWNjMyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cubXVsdGlwcmVjaXNpb24ub3JnL2luZGV4LnBocD9wcm9nPW1wYyZwYWdlPWRvd25sb2FkIgotCi1TID0gIiR7V09SS0RJUn0vbXBjLSR7UFZ9IgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibXBjL2xpYm1wY18xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJtcGMvbGlibXBjXzEuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMjVkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibXBjL2xpYm1wY18xLjEuMC5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIGxpYm1wYy5pbmMKKworREVQRU5EUyA9ICJnbXAgbXBmciIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorU1JDX1VSSSA9ICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9tcGMvbXBjLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQxMjU0MDRlNDFlNDgyZWM2ODI4MmEyZTY4N2Y2YzczIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5ODVjNTM4MTQzYzEyMDhkY2IxYWM0MmNlZGFkNmZmNTJlMjY3YjQ3ZTVmOTcwMTgzYTNlNzUxMjViNDNjMmUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm11bHRpcHJlY2lzaW9uLm9yZy9tcGMvZG93bmxvYWQuaHRtbCIKKworUyA9ICIke1dPUktESVJ9L21wYy0ke1BWfSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDEtUEFUQ0gtZml4LWxpYm5sLTMuNC4wLW11c2wtY29tcGlsZS1wcm9ibGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDEtUEFUQ0gtZml4LWxpYm5sLTMuNC4wLW11c2wtY29tcGlsZS1wcm9ibGVtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMGEyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvMDAwMS1QQVRDSC1maXgtbGlibmwtMy40LjAtbXVzbC1jb21waWxlLXByb2JsZW0ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorU3ViamVjdDogW1BBVENIXSBmaXggbGlibmwtMy40LjAgbXVzbCBjb21waWxlIHByb2JsZW0gIAorQXZvaWQgaW42X2FkZHIgcmVkZWZpbml0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+CistLS0KKyBpbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaWZfYnJpZGdlLmggfCAxIC0KKyBpbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaXB2Ni5oICAgICAgfCAxIC0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaWZfYnJpZGdlLmggYi9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaWZfYnJpZGdlLmgKK2luZGV4IGYyNDA1MGIuLjhmNzQ5MGMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaWZfYnJpZGdlLmgKKysrKyBiL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pZl9icmlkZ2UuaAorQEAgLTE1LDcgKzE1LDYgQEAKKyAKKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KKy0jaW5jbHVkZSA8bGludXgvaW42Lmg+CisgCisgI2RlZmluZSBTWVNGU19CUklER0VfQVRUUgkiYnJpZGdlIgorICNkZWZpbmUgU1lTRlNfQlJJREdFX0ZEQgkiYnJmb3J3YXJkIgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmggYi9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaXB2Ni5oCitpbmRleCBlMDVlNjg0Li5mMTYzNDlkIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaAorKysrIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaAorQEAgLTIsNyArMiw2IEBACisgI2RlZmluZSBfSVBWNl9ICisgCisgI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKy0jaW5jbHVkZSA8bGludXgvaW42Lmg+CisgCisgLyogVGhlIGxhdGVzdCBkcmFmdHMgZGVjbGFyZWQgaW5jcmVhc2UgaW4gbWluaW1hbCBtdHUgdXAgdG8gMTI4MC4gKi8KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sL2ZpeC1wa3Rsb2Nfc3ludGF4X2gtcmFjZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC9maXgtcGt0bG9jX3N5bnRheF9oLXJhY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YWEwYmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sL2ZpeC1wa3Rsb2Nfc3ludGF4X2gtcmFjZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotbGlibmwgaGFzIHByb2dyZXNzZWQgdG8gMC4zLjIgYW5kIHRoZXJlIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbnkKLSJtYWtlIC1qIiBpc3N1ZXMgd2l0aCB0aGlzIGJ1aWxkIGFmdGVyIG15IGxpbWl0ZWQgdGVzdGluZyBvbiB0aGF0Ci1uZXdlciB2ZXJzaW9uIHNvIHdlIGNhbiBhc3N1bWUgdGhpcyBpc3N1ZSBpcyBmaXhlZCB1cHN0cmVhbQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBnbWFpbC5jb20+Ci0KLUluZGV4OiBsaWJubC0zLjIuMjUvbGliL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlibmwtMy4yLjI1Lm9yaWcvbGliL01ha2VmaWxlLmFtCi0rKysgbGlibmwtMy4yLjI1L2xpYi9NYWtlZmlsZS5hbQotQEAgLTQ2LDkgKzQ2LDEyIEBAIENMRUFORklMRVMgPSBcCi0gCi0gIyBIYWNrIHRvIGF2b2lkIHVzaW5nIHlsd3JhcC4gSXQgZG9lcyBub3QgZnVuY3Rpb24gY29ycmVjdGx5IGluIGNvbWJpbmF0aW9uCi0gIyB3aXRoIC0taGVhZGVyLWZpbGU9Ci0rcm91dGUvcGt0bG9jLmxvOiByb3V0ZS9wa3Rsb2Nfc3ludGF4Lmggcm91dGUvcGt0bG9jX2dyYW1tYXIuaAotK3JvdXRlL3BrdGxvY19ncmFtbWFyLmg6IHJvdXRlL3BrdGxvY19ncmFtbWFyLmMKLSByb3V0ZS9wa3Rsb2NfZ3JhbW1hci5jOiByb3V0ZS9wa3Rsb2NfZ3JhbW1hci5sCi0gCSQoQU1fVl9HRU4pICQoTUtESVJfUCkgcm91dGU7ICQoRkxFWCkgLS1oZWFkZXItZmlsZT1yb3V0ZS9wa3Rsb2NfZ3JhbW1hci5oICQoTEZMQUdTKSAtbyAkQCAkXgotIAotK3JvdXRlL3BrdGxvY19zeW50YXguaDogcm91dGUvcGt0bG9jX3N5bnRheC5jCi0gcm91dGUvcGt0bG9jX3N5bnRheC5jOiByb3V0ZS9wa3Rsb2Nfc3ludGF4LnkKLSAJJChBTV9WX0dFTikgJChNS0RJUl9QKSByb3V0ZTsgJChZQUNDKSAtZCAkKFlGTEFHUykgLW8gJEAgJF4KLSAKLUBAIC0xMDIsNyArMTA1LDkgQEAgQlVJTFRfU09VUkNFUyA9IFwKLSAJcm91dGUvY2xzL2VtYXRjaF9ncmFtbWFyLmMgXAotIAlyb3V0ZS9jbHMvZW1hdGNoX3N5bnRheC5jIFwKLSAJcm91dGUvcGt0bG9jX2dyYW1tYXIuYyBcCi0tCXJvdXRlL3BrdGxvY19zeW50YXguYwotKyAgIHJvdXRlL3BrdGxvY19zeW50YXguYyBcCi0rICAgcm91dGUvcGt0bG9jX3N5bnRheC5oIFwKLSsgICByb3V0ZS9wa3Rsb2NfZ3JhbW1hci5oCi0gCi0gRVhUUkFfRElTVCA9IFwKLSAJcm91dGUvcGt0bG9jX2dyYW1tYXIubCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy4yLjI5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuMi4yOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0ODM5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy4yLjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGFwcGxpY2F0aW9ucyBkZWFsaW5nIHdpdGggbmV0bGluayBzb2NrZXRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pbmZyYWRlYWQub3JnL350Z3IvbGlibmwvIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLVBFID0gIjEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rob20zMTEvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7QlBOfSR7QGQuZ2V0VmFyKCdQVicpLnJlcGxhY2UoJy4nLCdfJyl9LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGt0bG9jX3N5bnRheF9oLXJhY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXBjLWZpbGUucGF0Y2ggXAotIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcyIKLQotU1JDX1VSSVttZDVzdW1dID0gImE4YmE2MmE1YzRmODgzZjRlNDkzYTQ2ZDFmMzczM2ZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiZWI1OTNkYzZhYmZmZmExOGE1Yzc4N2IyNzg4NDk3OWMxYjdlN2YxZmQ0NjhjODAxZTNjYzkzOGE2ODU5MjIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibmwtMy5zby4qIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJubC5zby4qIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0iCi1SUkVQTEFDRVNfJHtQTn0gPSAibGlibmwyIgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJubDIiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJubC9jbGkvKi8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGlibmwvY2xpLyovKi5hIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tY2xpICR7UE59LWdlbmwgJHtQTn0taWRpYWcgJHtQTn0tbmYgJHtQTn0tcm91dGUgJHtQTn0teGZybSIKLUZJTEVTXyR7UE59LWNsaSAgID0gIiR7bGliZGlyfS9saWJubC1jbGktMy5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJubC9jbGkvKi8qLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nZW5sLWN0cmwtbGlzdCBcCi0gICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vaWRpYWctc29ja2V0LWRldGFpbHMgXAotICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25mLSogXAotICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25sLSoiCi1GSUxFU18ke1BOfS1nZW5sICA9ICIke2xpYmRpcn0vbGlibmwtZ2VubC0zLnNvLiogXAotICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sLWdlbmwuc28uKiIKLUZJTEVTXyR7UE59LWlkaWFnID0gIiR7bGliZGlyfS9saWJubC1pZGlhZy0zLnNvLioiCi1GSUxFU18ke1BOfS1uZiAgICA9ICIke2xpYmRpcn0vbGlibmwtbmYtMy5zby4qIgotRklMRVNfJHtQTn0tcm91dGUgPSAiJHtsaWJkaXJ9L2xpYm5sLXJvdXRlLTMuc28uKiIKLUZJTEVTXyR7UE59LXhmcm0gID0gIiR7bGliZGlyfS9saWJubC14ZnJtLTMuc28uKiIKLVJSRVBMQUNFU18ke1BOfS1nZW5sID0gImxpYm5sLWdlbmwyIgotUkNPTkZMSUNUU18ke1BOfS1nZW5sID0gImxpYm5sLWdlbmwyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZGM2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy40LjAuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGFwcGxpY2F0aW9ucyBkZWFsaW5nIHdpdGggbmV0bGluayBzb2NrZXRzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pbmZyYWRlYWQub3JnL350Z3IvbGlibmwvIgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCisKK1BFID0gIjEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rob20zMTEvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7QlBOfSR7QGQuZ2V0VmFyKCdQVicpLnJlcGxhY2UoJy4nLCdfJyl9LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGMtZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaCBcCisiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhvbTMxMS8ke0JQTn0vcmVsZWFzZXMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZjcxOTEwYzAzZGIzNjNiNDFlMmVhNjIwNTdhNDMxMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNzI4NzYzN2FlNzFjNmRiNmY4OWUxNDIyYzk5NWYwNDA3ZmYyZmU1MGNlY2Q2MWEzMTJiNmE5YjA5MjFmNWJmIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYm5sLTMuc28uKiBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwuc28uKiBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IgorUlJFUExBQ0VTXyR7UE59ID0gImxpYm5sMiIKK1JDT05GTElDVFNfJHtQTn0gPSAibGlibmwyIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGlibmwvY2xpLyovKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouYSIKKworUEFDS0FHRVMgKz0gIiR7UE59LWNsaSAke1BOfS1nZW5sICR7UE59LWlkaWFnICR7UE59LW5mICR7UE59LXJvdXRlICR7UE59LXhmcm0iCitGSUxFU18ke1BOfS1jbGkgICA9ICIke2xpYmRpcn0vbGlibmwtY2xpLTMuc28uKiBcCisgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwvY2xpLyovKi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2VubC1jdHJsLWxpc3QgXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2lkaWFnLXNvY2tldC1kZXRhaWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZi0qIFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ubC0qIgorRklMRVNfJHtQTn0tZ2VubCAgPSAiJHtsaWJkaXJ9L2xpYm5sLWdlbmwtMy5zby4qIFwKKyAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJubC1nZW5sLnNvLioiCitGSUxFU18ke1BOfS1pZGlhZyA9ICIke2xpYmRpcn0vbGlibmwtaWRpYWctMy5zby4qIgorRklMRVNfJHtQTn0tbmYgICAgPSAiJHtsaWJkaXJ9L2xpYm5sLW5mLTMuc28uKiIKK0ZJTEVTXyR7UE59LXJvdXRlID0gIiR7bGliZGlyfS9saWJubC1yb3V0ZS0zLnNvLioiCitGSUxFU18ke1BOfS14ZnJtICA9ICIke2xpYmRpcn0vbGlibmwteGZybS0zLnNvLioiCitSUkVQTEFDRVNfJHtQTn0tZ2VubCA9ICJsaWJubC1nZW5sMiIKK1JDT05GTElDVFNfJHtQTn0tZ2VubCA9ICJsaWJubC1nZW5sMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTcxODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmEzYmZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTcxODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1saWJwY3JlMi0xMC4yMzogRml4IENWRS0yMDE3LTcxODYKLQotQSBmdXp6IG9uIGxpYnBjcmUxIHRocm91Z2ggdGhlIHBjcmV0ZXN0IHV0aWxpdHkgcmV2ZWFsZWQgYW4gaW52YWxpZCByZWFkIGluIHRoZQotbGlicmFyeS4gRm9yIHdobyBpcyBpbnRlcmVzdGVkIGluIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGJ1Zywgd2lsbAotZm9sbG93IGEgZmVlZGJhY2sgZnJvbSB1cHN0cmVhbToKLQotVGhpcyB3YXMgYSBnZW51aW5lIGJ1ZyBpbiB0aGUgMzItYml0IGxpYnJhcnkuIFRoYW5rcyBmb3IgZmluZGluZyBpdC4gVGhlIGNyYXNoCi13YXMgY2F1c2VkIGJ5IHRyeWluZyB0byBmaW5kIGEgVW5pY29kZSBwcm9wZXJ0eSBmb3IgYSBjb2RlIHZhbHVlIGdyZWF0ZXIgdGhhbgotMHgxMGZmZmYsIHRoZSBVbmljb2RlIG1heGltdW0sIHdoZW4gcnVubmluZyBpbiBub24tVVRGIG1vZGUgKHdoZXJlIGNoYXJhY3RlcgotdmFsdWVzIGNhbiBiZSB1cCB0byAweGZmZmZmZmZmKS4KLQotVGhlIGNvbXBsZXRlIEFTYW4gb3V0cHV0OgotCi0jIHBjcmV0ZXN0IC0zMiAtZCAkRklMRQotPT0xNDc4OD09RVJST1I6IEFkZHJlc3NTYW5pdGl6ZXI6IFNFR1Ygb24gdW5rbm93biBhZGRyZXNzIDB4N2YxYmJmZmVkNGRmIChwYyAweDdmMWJiZWUzZmU2YiBicCAweDdmZmY4YjUwZDhjMCBzcCAweDdmZmY4YjUwZDNhMCBUMCkKLT09MTQ3ODg9PVRoZSBzaWduYWwgaXMgY2F1c2VkIGJ5IGEgUkVBRCBtZW1vcnkgYWNjZXNzLgotICAgICMwIDB4N2YxYmJlZTNmZTZhIGluIG1hdGNoIC90bXAvcG9ydGFnZS9kZXYtbGlicy9saWJwY3JlLTguNDAvd29yay9wY3JlLTguNDAvcGNyZV9leGVjLmM6NTQ3MzoxOAotICAgICMxIDB4N2YxYmJlZTA5MjI2IGluIHBjcmUzMl9leGVjIC90bXAvcG9ydGFnZS9kZXYtbGlicy9saWJwY3JlLTguNDAvd29yay9wY3JlLTguNDAvcGNyZV9leGVjLmM6NjkzNjo4Ci0gICAgIzIgMHg1MjdkNmMgaW4gbWFpbiAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmV0ZXN0LmM6NTIxODo5Ci0gICAgIzMgMHg3ZjFiYmRkZDY3OGYgaW4gX19saWJjX3N0YXJ0X21haW4gL3RtcC9wb3J0YWdlL3N5cy1saWJzL2dsaWJjLTIuMjMtcjMvd29yay9nbGliYy0yLjIzL2NzdS8uLi9jc3UvbGliYy1zdGFydC5jOjI4OQotICAgICM0IDB4NDFiNDM4IGluIF9pbml0ICgvdXNyL2Jpbi9wY3JldGVzdCsweDQxYjQzOCkKLQotQWRkcmVzc1Nhbml0aXplciBjYW4gbm90IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvLgotU1VNTUFSWTogQWRkcmVzc1Nhbml0aXplcjogU0VHViAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjU0NzM6MTggaW4gbWF0Y2gKLT09MTQ3ODg9PUFCT1JUSU5HCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vdmNzLnBjcmUub3JnL3BjcmUyL2NvZGUvdHJ1bmsvc3JjL3BjcmUyX3VjZC5jP3ZpZXc9cGF0Y2gmcjE9MzE2JnIyPTY3MCZzb3J0Ynk9ZGF0ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMl9pbnRlcm5hbC5oP3ZpZXc9cGF0Y2gmcjE9NjAwJnIyPTY3MCZzb3J0Ynk9ZGF0ZV0KLUNWRTogQ1ZFLTIwMTctNzE4NgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tIHRydW5rL3NyYy9wY3JlMl91Y2QuYyAgMjAxNS8wNy8xNyAxNTo0NDo1MSAzMTYKLSsrKyB0cnVuay9zcmMvcGNyZTJfdWNkLmMgIDIwMTcvMDIvMjQgMTg6MjU6MzIgNjcwCi1AQCAtNDEsNiArNDEsMjAgQEAKLSAKLSBjb25zdCBjaGFyICpQUklWKHVuaWNvZGVfdmVyc2lvbikgPSAiOC4wLjAiOwotIAotKy8qIElmIHRoZSAzMi1iaXQgbGlicmFyeSBpcyBydW4gaW4gbm9uLTMyLWJpdCBtb2RlLCBjaGFyYWN0ZXIgdmFsdWVzCi0rZ3JlYXRlciB0aGFuIDB4MTBmZmZmIG1heSBiZSBlbmNvdW50ZXJlZC4gRm9yIHRoZXNlIHdlIHNldCB1cCBhCi0rc3BlY2lhbCByZWNvcmQuICovCi0rCi0rI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgotK2NvbnN0IHVjZF9yZWNvcmQgUFJJVihkdW1teV91Y2RfcmVjb3JkKVtdID0ge3sKLSsgIHVjcF9Db21tb24sICAgIC8qIHNjcmlwdCAqLwotKyAgdWNwX0NuLCAgICAgICAgLyogdHlwZSB1bmFzc2lnbmVkICovCi0rICB1Y3BfZ2JPdGhlciwgICAvKiBncmFwaGVtZSBicmVhayBwcm9wZXJ0eSAqLwotKyAgMCwgICAgICAgICAgICAgLyogY2FzZSBzZXQgKi8KLSsgIDAsICAgICAgICAgICAgIC8qIG90aGVyIGNhc2UgKi8KLSsgIH19OwotKyNlbmRpZgotKwotIC8qIFdoZW4gcmVjb21waWxpbmcgdGFibGVzIHdpdGggYSBuZXcgVW5pY29kZSB2ZXJzaW9uLCBwbGVhc2UgY2hlY2sgdGhlCi0gdHlwZXMgaW4gdGhpcyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBmcm9tIHBjcmUyX2ludGVybmFsLmggKHRoZSBhY3R1YWwKLSBmaWVsZCBuYW1lcyB3aWxsIGJlIGRpZmZlcmVudCk6Ci0tLS0gdHJ1bmsvc3JjL3BjcmUyX2ludGVybmFsLmggMjAxNi8xMS8xOSAxMjo0NjoyNCA2MDAKLSsrKyB0cnVuay9zcmMvcGNyZTJfaW50ZXJuYWwuaCAyMDE3LzAyLzI0IDE4OjI1OjMyIDY3MAotQEAgLTE3NzQsMTAgKzE3NzQsMTcgQEAKLSAvKiBVQ0QgYWNjZXNzIG1hY3JvcyAqLwotIAotICNkZWZpbmUgVUNEX0JMT0NLX1NJWkUgMTI4Ci0tI2RlZmluZSBHRVRfVUNEKGNoKSAoUFJJVih1Y2RfcmVjb3JkcykgKyBcCi0rI2RlZmluZSBSRUFMX0dFVF9VQ0QoY2gpIChQUklWKHVjZF9yZWNvcmRzKSArIFwKLSAgICAgICAgIFBSSVYodWNkX3N0YWdlMilbUFJJVih1Y2Rfc3RhZ2UxKVsoaW50KShjaCkgLyBVQ0RfQkxPQ0tfU0laRV0gKiBcCi0gICAgICAgICBVQ0RfQkxPQ0tfU0laRSArIChpbnQpKGNoKSAlIFVDRF9CTE9DS19TSVpFXSkKLSAKLSsjaWYgUENSRTJfQ09ERV9VTklUX1dJRFRIID09IDMyCi0rI2RlZmluZSBHRVRfVUNEKGNoKSAoKGNoID4gTUFYX1VURl9DT0RFX1BPSU5UKT8gXAotKyAgUFJJVihkdW1teV91Y2RfcmVjb3JkKSA6IFJFQUxfR0VUX1VDRChjaCkpCi0rI2Vsc2UKLSsjZGVmaW5lIEdFVF9VQ0QoY2gpIFJFQUxfR0VUX1VDRChjaCkKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIFVDRF9DSEFSVFlQRShjaCkgICAgR0VUX1VDRChjaCktPmNoYXJ0eXBlCi0gI2RlZmluZSBVQ0RfU0NSSVBUKGNoKSAgICAgIEdFVF9VQ0QoY2gpLT5zY3JpcHQKLSAjZGVmaW5lIFVDRF9DQVRFR09SWShjaCkgICAgUFJJVih1Y3BfZ2VudHlwZSlbVUNEX0NIQVJUWVBFKGNoKV0KLUBAIC0xODM0LDYgKzE4NDEsOSBAQAotICNkZWZpbmUgX3BjcmUyX2RlZmF1bHRfY29tcGlsZV9jb250ZXh0IFBDUkUyX1NVRkZJWChfcGNyZTJfZGVmYXVsdF9jb21waWxlX2NvbnRleHRfKQotICNkZWZpbmUgX3BjcmUyX2RlZmF1bHRfbWF0Y2hfY29udGV4dCAgIFBDUkUyX1NVRkZJWChfcGNyZTJfZGVmYXVsdF9tYXRjaF9jb250ZXh0XykKLSAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X3RhYmxlcyAgICAgICAgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfdGFibGVzXykKLSsjaWYgUENSRTJfQ09ERV9VTklUX1dJRFRIID09IDMyCi0rI2RlZmluZSBfcGNyZTJfZHVtbXlfdWNkX3JlY29yZCAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9kdW1teV91Y2RfcmVjb3JkXykKLSsjZW5kaWYKLSAjZGVmaW5lIF9wY3JlMl9oc3BhY2VfbGlzdCAgICAgICAgICAgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX2hzcGFjZV9saXN0XykKLSAjZGVmaW5lIF9wY3JlMl92c3BhY2VfbGlzdCAgICAgICAgICAgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX3ZzcGFjZV9saXN0XykKLSAjZGVmaW5lIF9wY3JlMl91Y2RfY2FzZWxlc3Nfc2V0cyAgICAgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX3VjZF9jYXNlbGVzc19zZXRzXykKLUBAIC0xODU4LDYgKzE4NjgsOSBAQAotIGV4dGVybiBjb25zdCB1aW50MzJfdCAgICAgICAgICAgICAgICAgIFBSSVYodnNwYWNlX2xpc3QpW107Ci0gZXh0ZXJuIGNvbnN0IHVpbnQzMl90ICAgICAgICAgICAgICAgICAgUFJJVih1Y2RfY2FzZWxlc3Nfc2V0cylbXTsKLSBleHRlcm4gY29uc3QgdWNkX3JlY29yZCAgICAgICAgICAgICAgICBQUklWKHVjZF9yZWNvcmRzKVtdOwotKyNpZiBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggPT0gMzIKLStleHRlcm4gY29uc3QgdWNkX3JlY29yZCAgICAgICAgICAgICAgICBQUklWKGR1bW15X3VjZF9yZWNvcmQpW107Ci0rI2VuZGlmCi0gZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgICAgICAgICAgICAgICAgICAgUFJJVih1Y2Rfc3RhZ2UxKVtdOwotIGV4dGVybiBjb25zdCB1aW50MTZfdCAgICAgICAgICAgICAgICAgIFBSSVYodWNkX3N0YWdlMilbXTsKLSBleHRlcm4gY29uc3QgdWludDMyX3QgICAgICAgICAgICAgICAgICBQUklWKHVjcF9nYnRhYmxlKVtdOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZmFmYzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLWxpYnBjcmUyLTEwLjIzOiBGaXggQ1ZFLTIwMTctODc4NgotCi1UaGUgcGNyZTJ0ZXN0LmMgaW4gUENSRTIgMTAuMjMgYWxsb3dzIHJlbW90ZSBhdHRhY2tlcnMgdG8gY2F1c2UgYSBkZW5pYWwgb2YKLXNlcnZpY2UgKGhlYXAtYmFzZWQgYnVmZmVyIG92ZXJmbG93KSBvciBwb3NzaWJseSBoYXZlIHVuc3BlY2lmaWVkIG90aGVyIGltcGFjdAotdmlhIGEgY3JhZnRlZCByZWd1bGFyIGV4cHJlc3Npb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vdmNzLnBjcmUub3JnL3BjcmUyL2NvZGUvdHJ1bmsvc3JjL3BjcmUydGVzdC5jP3IxPTY5MiZyMj02OTcmdmlldz1wYXRjaF0KLUNWRTogQ1ZFLTIwMTctODc4NgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tIHRydW5rL3NyYy9wY3JlMnRlc3QuYyAgMjAxNy8wMy8yMSAxNjoxODo1NCA2OTIKLSsrKyB0cnVuay9zcmMvcGNyZTJ0ZXN0LmMgIDIwMTcvMDMvMjEgMTg6MzY6MTMgNjk3Ci1AQCAtMTAxNyw5ICsxMDE3LDkgQEAKLSAgIGlmICh0ZXN0X21vZGUgPT0gUENSRThfTU9ERSkgXAotICAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfOChhLEcoYiw4KSxHKEcoYiw4KSxfc2l6ZSkpOyBcCi0gICBlbHNlIGlmICh0ZXN0X21vZGUgPT0gUENSRTE2X01PREUpIFwKLS0gICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUpKTsgXAotKyAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMTYoYSxHKGIsMTYpLEcoRyhiLDE2KSxfc2l6ZS8yKSk7IFwKLSAgIGVsc2UgXAotLSAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZSkpCi0rICAgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8zMihhLEcoYiwzMiksRyhHKGIsMzIpLF9zaXplLzQpKQotIAotICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBcCi0gICBpZiAodGVzdF9tb2RlID09IFBDUkU4X01PREUpIFwKLUBAIC0xMzk5LDYgKzEzOTksOSBAQAotIAotIC8qIC0tLS0tIENvbW1vbiBtYWNyb3MgZm9yIHR3by1tb2RlIGNhc2VzIC0tLS0tICovCi0gCi0rI2RlZmluZSBCWVRFT05FIChCSVRPTkUvOCkKLSsjZGVmaW5lIEJZVEVUV08gKEJJVFRXTy84KQotKwotICNkZWZpbmUgQ0FTVEZMRCh0LGEsYikgXAotICAgKCh0ZXN0X21vZGUgPT0gRyhHKFBDUkUsQklUT05FKSxfTU9ERSkpPyAodCkoRyhhLEJJVE9ORSktPmIpIDogXAotICAgICAodCkoRyhhLEJJVFRXTyktPmIpKQotQEAgLTE0ODEsOSArMTQ4NCw5IEBACi0gCi0gI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAotICAgaWYgKHRlc3RfbW9kZSA9PSBHKEcoUENSRSxCSVRPTkUpLF9NT0RFKSkgXAotLSAgICByID0gRyhwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8sQklUT05FKShhLEcoYixCSVRPTkUpLEcoRyhiLEJJVE9ORSksX3NpemUpKTsgXAotKyAgICByID0gRyhwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8sQklUT05FKShhLEcoYixCSVRPTkUpLEcoRyhiLEJJVE9ORSksX3NpemUvQllURU9ORSkpOyBcCi0gICBlbHNlIFwKLS0gICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVFRXTykoYSxHKGIsQklUVFdPKSxHKEcoYixCSVRUV08pLF9zaXplKSkKLSsgICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVFRXTykoYSxHKGIsQklUVFdPKSxHKEcoYixCSVRUV08pLF9zaXplL0JZVEVUV08pKQotIAotICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBcCi0gICBpZiAodGVzdF9tb2RlID09IEcoRyhQQ1JFLEJJVE9ORSksX01PREUpKSBcCi1AQCAtMTkwNCw3ICsxOTA3LDcgQEAKLSAjZGVmaW5lIFBDUkUyX0RGQV9NQVRDSChhLGIsYyxkLGUsZixnLGgsaSxqKSBcCi0gICBhID0gcGNyZTJfZGZhX21hdGNoXzE2KEcoYiwxNiksKFBDUkUyX1NQVFIxNiljLGQsZSxmLEcoZywxNiksaCxpLGopCi0gI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAotLSAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUpKQotKyAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUvMikpCi0gI2RlZmluZSBQQ1JFMl9HRVRfT1ZFQ1RPUl9DT1VOVChhLGIpIGEgPSBwY3JlMl9nZXRfb3ZlY3Rvcl9jb3VudF8xNihHKGIsMTYpKQotICNkZWZpbmUgUENSRTJfR0VUX1NUQVJUQ0hBUihhLGIpIGEgPSBwY3JlMl9nZXRfc3RhcnRjaGFyXzE2KEcoYiwxNikpCi0gI2RlZmluZSBQQ1JFMl9KSVRfQ09NUElMRShyLGEsYikgciA9IHBjcmUyX2ppdF9jb21waWxlXzE2KEcoYSwxNiksYikKLUBAIC0yMDAwLDcgKzIwMDMsNyBAQAotICNkZWZpbmUgUENSRTJfREZBX01BVENIKGEsYixjLGQsZSxmLGcsaCxpLGopIFwKLSAgIGEgPSBwY3JlMl9kZmFfbWF0Y2hfMzIoRyhiLDMyKSwoUENSRTJfU1BUUjMyKWMsZCxlLGYsRyhnLDMyKSxoLGksaikKLSAjZGVmaW5lIFBDUkUyX0dFVF9FUlJPUl9NRVNTQUdFKHIsYSxiKSBcCi0tICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZSkpCi0rICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZS80KSkKLSAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgYSA9IHBjcmUyX2dldF9vdmVjdG9yX2NvdW50XzMyKEcoYiwzMikpCi0gI2RlZmluZSBQQ1JFMl9HRVRfU1RBUlRDSEFSKGEsYikgYSA9IHBjcmUyX2dldF9zdGFydGNoYXJfMzIoRyhiLDMyKSkKLSAjZGVmaW5lIFBDUkUyX0pJVF9DT01QSUxFKHIsYSxiKSByID0gcGNyZTJfaml0X2NvbXBpbGVfMzIoRyhhLDMyKSxiKQotQEAgLTI4ODksNyArMjg5Miw3IEBACi0gICB7Ci0gICBpZiAocGJ1ZmZlcjMyICE9IE5VTEwpIGZyZWUocGJ1ZmZlcjMyKTsKLSAgIHBidWZmZXIzMl9zaXplID0gNCpsZW4gKyA0OwotLSAgaWYgKHBidWZmZXIzMl9zaXplIDwgMjU2KSBwYnVmZmVyMzJfc2l6ZSA9IDI1NjsKLSsgIGlmIChwYnVmZmVyMzJfc2l6ZSA8IDUxMikgcGJ1ZmZlcjMyX3NpemUgPSA1MTI7Ci0gICBwYnVmZmVyMzIgPSAodWludDMyX3QgKiltYWxsb2MocGJ1ZmZlcjMyX3NpemUpOwotICAgaWYgKHBidWZmZXIzMiA9PSBOVUxMKQotICAgICB7Ci1AQCAtNzYwMCw3ICs3NjAzLDggQEAKLSAgIGludCBlcnJjb2RlOwotICAgY2hhciAqZW5kcHRyOwotIAotLS8qIEVuc3VyZSB0aGUgcmVsZXZhbnQgbm9uLTgtYml0IGJ1ZmZlciBpcyBhdmFpbGFibGUuICovCi0rLyogRW5zdXJlIHRoZSByZWxldmFudCBub24tOC1iaXQgYnVmZmVyIGlzIGF2YWlsYWJsZS4gRW5zdXJlIHRoYXQgaXQgaXMgYXQgCi0rbGVhc3QgMTI4IGNvZGUgdW5pdHMsIGJlY2F1c2UgaXQgaXMgdXNlZCBmb3IgcmV0cmlldmluZyBlcnJvciBtZXNzYWdlcy4gKi8KLSAKLSAjaWZkZWYgU1VQUE9SVF9QQ1JFMl8xNgotICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFMTZfTU9ERSkKLUBAIC03NjIwLDcgKzc2MjQsNyBAQAotICNpZmRlZiBTVVBQT1JUX1BDUkUyXzMyCi0gICBpZiAodGVzdF9tb2RlID09IFBDUkUzMl9NT0RFKQotICAgICB7Ci0tICAgIHBidWZmZXIzMl9zaXplID0gMjU2OwotKyAgICBwYnVmZmVyMzJfc2l6ZSA9IDUxMjsKLSAgICAgcGJ1ZmZlcjMyID0gKHVpbnQzMl90ICopbWFsbG9jKHBidWZmZXIzMl9zaXplKTsKLSAgICAgaWYgKHBidWZmZXIzMiA9PSBOVUxMKQotICAgICAgIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL3BjcmUtY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9wY3JlLWNyb3NzLnBhdGNoCmluZGV4IDk1MTZjYWYuLjg3MWNkZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL3BjcmUtY3Jvc3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvcGNyZS1jcm9zcy5wYXRjaApAQCAtOSwxMSArOSwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDM4ZjFkNDEuLjJiZGUwODMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yOTgsOSArMjk4LDIxIEBAIGJpbl9TQ1JJUFRTID0gcGNyZTItY29uZmlnCitJbmRleDogcGNyZTItMTAuMzAvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwY3JlMi0xMC4zMC5vcmlnL01ha2VmaWxlLmFtCisrKysgcGNyZTItMTAuMzAvTWFrZWZpbGUuYW0KK0BAIC0zMjUsOSArMzI1LDIxIEBAIGJpbl9TQ1JJUFRTID0gcGNyZTItY29uZmlnCiAgIyMgdG8gY29weSBhIGRpc3RyaWJ1dGVkIHNldCBvZiB0YWJsZXMgdGhhdCBhcmUgZGVmaW5lZCBmb3IgQVNDSUkgY29kZS4gSW4gdGhpcwogICMjIGNhc2UsIGRmdGFibGVzIGlzIG5vdCBuZWVkZWQuCiAgCkBAIC0zNSwxMyArMzUsMTMgQEAKICBzcmMvcGNyZTJfY2hhcnRhYmxlcy5jOiBkZnRhYmxlcyQoRVhFRVhUKQogIAlybSAtZiAkQAogIAkuL2RmdGFibGVzJChFWEVFWFQpICRACi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkN2M1N2FhLi5kNmViMGFhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01OSw2ICs1OSwyMyBAQCB0aGVuCi0gICBmaQotIGZpCitJbmRleDogcGNyZTItMTAuMzAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGNyZTItMTAuMzAub3JpZy9jb25maWd1cmUuYWMKKysrKyBwY3JlMi0xMC4zMC9jb25maWd1cmUuYWMKK0BAIC02MCw2ICs2MCwyMyBAQCBmaQorICMgVGhpcyBpcyBhIG5ldyB0aGluZyByZXF1aXJlZCB0byBzdG9wIGEgd2FybmluZyBmcm9tIGF1dG9tYWtlIDEuMTIKKyBtNF9pZmRlZihbQU1fUFJPR19BUl0sIFtBTV9QUk9HX0FSXSkKICAKICtpZiB0ZXN0IHgiJGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCiArICAgIENDX0ZPUl9CVUlMRD0iJHtDQ19GT1JfQlVJTEQtZ2NjfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMmIwMjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCi1uZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKLWxpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKLWRlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAotIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKLW5vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKLVNVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTNkZTM0ZGY0OWUxZmUzYzNiNTlhMDhkZmYyMTQ0ODhiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnBjcmUyLUNWRS0yMDE3LTcxODYucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJjZDAwY2E3ZTI0MDQ5MDQwMDk5YjBhNDZiYjM2NDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGZjNzliOTE4NzcxZjAyZDMzOTY4YmQzNGE3NDlhZDc0ODdmYTEwMTRhZWI3ODdmYWQyOWRkMzkyYjc4YzU2ZSIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZTIiCi0KLVMgPSAiJHtXT1JLRElSfS9wY3JlMi0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUyIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlMi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAotICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotIgotCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfS9zcmMiCi1DRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKLUNYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKLQotUEFDS0FHRVMgPSsgInBjcmUyZ3JlcCBwY3JlMmdyZXAtZG9jIHBjcmUydGVzdCBwY3JlMnRlc3QtZG9jIgotCi1TVU1NQVJZX3BjcmUyZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmUyZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZTJ0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLVNVTU1BUllfcGNyZTJ0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKLUZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCi1GSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKLUZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZjMmQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMwLmJiCkBAIC0wLDAgKzEsNjEgQEAKK0RFU0NSSVBUSU9OID0gIlRoZXJlIGFyZSB0d28gbWFqb3IgdmVyc2lvbnMgb2YgdGhlIFBDUkUgbGlicmFyeS4gVGhlIFwKK25ld2VzdCB2ZXJzaW9uIGlzIFBDUkUyLCB3aGljaCBpcyBhIHJlLXdvcmtpbmcgb2YgdGhlIG9yaWdpbmFsIFBDUkUgXAorbGlicmFyeSB0byBwcm92aWRlIGFuIGVudGlyZWx5IG5ldyBBUEkuIFRoZSBvcmlnaW5hbCwgdmVyeSB3aWRlbHkgXAorZGVwbG95ZWQgUENSRSBsaWJyYXJ5J3MgQVBJIGFuZCBmZWF0dXJlIGFyZSBzdGFibGUsIGZ1dHVyZSByZWxlYXNlcyBcCisgd2lsbCBiZSBmb3IgYnVnZml4ZXMgb25seS4gQWxsIG5ldyBmdXR1cmUgZmVhdHVyZXMgd2lsbCBiZSB0byBQQ1JFMiwgXAorbm90IHRoZSBvcmlnaW5hbCBQQ1JFIDgueCBzZXJpZXMuIgorU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyB2ZXJzaW9uIDIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9MTJkNTVlMTVhMGM2ZGE1YzY0NWJhNDAzODJiZDMyOTMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZTItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wY3JlLWNyb3NzLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImQzYWRmNGIxMzBlZWQ4NTRhNTMwMzkwZjAwMDIwYTY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkwYmQ0MWM2MDVkMzBlMzc0NTc3MWViODE5MjhkNzc5ZjE1ODA4MWE1MWIyZjMxNGJiY2MxZjczZGU1NzczZGIiCisKK0NWRV9QUk9EVUNUID0gInBjcmUyIgorCitTID0gIiR7V09SS0RJUn0vcGNyZTItJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlMiIKK0RFUEVORFMgKz0gImJ6aXAyIHpsaWIiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZTItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKKyAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAorICAgIC0td2l0aC1saW5rLXNpemU9MiBcCisgICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKKyAgICAtLWVuYWJsZS1wY3JlMi0xNiBcCisgICAgLS1lbmFibGUtcGNyZTItMzIgXAorIgorIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KKyMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KK0JVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0vc3JjIgorQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCitDWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCisKK2V4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCisKK1BBQ0tBR0VTID0rICJsaWJwY3JlMi0xNiBsaWJwY3JlMi0zMiBwY3JlMmdyZXAgcGNyZTJncmVwLWRvYyBwY3JlMnRlc3QgcGNyZTJ0ZXN0LWRvYyIKKworU1VNTUFSWV9wY3JlMmdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgorU1VNTUFSWV9wY3JlMmdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCitTVU1NQVJZX3BjcmUydGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCitTVU1NQVJZX3BjcmUydGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKKworRklMRVNfbGlicGNyZTItMTYgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTE2LnNvLioiCitGSUxFU19saWJwY3JlMi0zMiA9ICIke2xpYmRpcn0vbGlicGNyZTItMzIuc28uKiIKK0ZJTEVTX3BjcmUyZ3JlcCA9ICIke2JpbmRpcn0vcGNyZTJncmVwIgorRklMRVNfcGNyZTJncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMmdyZXAuMSIKK0ZJTEVTX3BjcmUydGVzdCA9ICIke2JpbmRpcn0vcGNyZTJ0ZXN0IgorRklMRVNfcGNyZTJ0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMnRlc3QuMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQxLmJiCmluZGV4IDBlYWVkMTguLjAxODdjMDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIKQEAgLTgwLDQgKzgwLDggQEAKIAlmb3IgaSBpbiBSdW5UZXN0IFJ1bkdyZXBUZXN0IHRlc3QtZHJpdmVyOyBcCiAJICBkbyBjcCAke1N9LyRpICR0OyBcCiAJZG9uZQorCSMgU2tpcCB0aGUgZnJfRlIgbG9jYWxlIHRlc3QuIElmIHRoZSBsb2NhbGUgZnJfRlIgaXMgZm91bmQsIGl0IGlzIHRlc3RlZC4KKwkjIElmIG5vdCBmb3VuZCwgdGhlIHRlc3QgaXMgc2tpcHBlZC4gVGhlIHRlc3QgcHJvZ3JhbSBhc3N1bWVzIGZyX0ZSIGlzIG5vbi1VVEYtOAorCSMgbG9jYWxlIHNvIHRoZSB0ZXN0IGZhaWxzIGlmIGZyX0ZSIGlzIFVURi04IGxvY2FsZS4KKwlzZWQgLWkgLWUgJ3M6ZG8zPXllczpkbzM9bm86ZycgJHtEfSR7UFRFU1RfUEFUSH0vUnVuVGVzdCAKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzM5ZjUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgcHJvdmlkaW5nIGF1dG9tYXRpYyBwcm94eSBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHJveHkvbGlicHJveHkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwcm94eS9saWJwcm94eS9pc3N1ZXMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3V0aWxzL3Byb3h5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9NTUxNTJhMTAwNmQ3ZGFmYmVmMzJiYWY5YzMwYTk5YzAiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImU3NTE0Zjc4ZjU0MzIyMTBlMTdhMDFiNmI2MThkZGUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyNWQwNDY4NTAzNDZhNTA1YzA2MTc2NDZmMWU2OGI2NjAwOTJlZmFkZjY2NTU0OGE4OWMyODA5MDAyNjJlYTYiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHJveHkvbGlicHJveHkvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJwcm94eS0oP1A8cHZlcj4uKilcLnRhciIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ25vbWUnLCAnJywgZCl9IGdub21lMyIKLVBBQ0tBR0VDT05GSUdbZ25vbWVdID0gIi1EV0lUSF9HTk9NRT15ZXMsLURXSVRIX0dOT01FPW5vLGdjb25mIgotUEFDS0FHRUNPTkZJR1tnbm9tZTNdID0gIi1EV0lUSF9HTk9NRTM9eWVzLC1EV0lUSF9HTk9NRTM9bm8iCi0KLUVYVFJBX09FQ01BS0UgKz0gIiBcCi0gICAgLURXSVRIX0tERTQ9bm8gXAotICAgIC1EV0lUSF9NT1pKUz1ubyBcCi0gICAgLURXSVRIX05NPW5vIFwKLSAgICAtRFdJVEhfUEVSTD1ubyBcCi0gICAgLURXSVRIX1BZVEhPTj1ubyBcCi0gICAgLURXSVRIX1dFQktJVD1ubyBcCi0gICAgLURMSUJfSU5TVEFMTF9ESVI9JHtsaWJkaXJ9IFwKLSAgICAtRExJQkVYRUNfSU5TVEFMTF9ESVI9JHtsaWJleGVjZGlyfSBcCi0iCi1TRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS8ke1BWfS9tb2R1bGVzIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkxYzlkOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTUuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IHByb3ZpZGluZyBhdXRvbWF0aWMgcHJveHkgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHJveHkvbGlicHJveHkvaXNzdWVzIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly91dGlscy9wcm94eS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTU1MTUyYTEwMDZkN2RhZmJlZjMyYmFmOWMzMGE5OWMwIgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNmIxZDJhMWUxN2E5OWNkM2RlYmFhZTZkMDRhYjE1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NTRkYjQ2NDEyMGM5NTM0NjU0NTkwYjY2ODNjN2ZhMzg4N2IzZGFkMGNhMWM0Y2Q0MTJhZjI0ZmJmY2E2ZDRmIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGlicHJveHktKD9QPHB2ZXI+LiopXC50YXIiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2dub21lJywgJycsIGQpfSBnbm9tZTMiCitQQUNLQUdFQ09ORklHW2dub21lXSA9ICItRFdJVEhfR05PTUU9eWVzLC1EV0lUSF9HTk9NRT1ubyxnY29uZiIKK1BBQ0tBR0VDT05GSUdbZ25vbWUzXSA9ICItRFdJVEhfR05PTUUzPXllcywtRFdJVEhfR05PTUUzPW5vIgorCitFWFRSQV9PRUNNQUtFICs9ICIgXAorICAgIC1EV0lUSF9LREU0PW5vIFwKKyAgICAtRFdJVEhfTU9aSlM9bm8gXAorICAgIC1EV0lUSF9OTT1ubyBcCisgICAgLURXSVRIX1BFUkw9bm8gXAorICAgIC1EV0lUSF9QWVRIT049bm8gXAorICAgIC1EV0lUSF9XRUJLSVQ9bm8gXAorICAgIC1ETElCX0lOU1RBTExfRElSPSR7bGliZGlyfSBcCisgICAgLURMSUJFWEVDX0lOU1RBTExfRElSPSR7bGliZXhlY2Rpcn0gXAorIgorU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vJHtQVn0vbW9kdWxlcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlmOTVlNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkFuIEhUVFAgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbiBDIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJzb3VwIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlieG1sMiBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSIKLQotU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2xpYnNvdXAvJHtTSFJUX1ZFUn0vbGlic291cC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYjMzYWRiNDU5YzIyODNlZmM1YzdkMDljY2RiYmNmYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NDIzMDBjYTFiMWJmOGEzYmJmMmY3ODgyMDMyODdmZjg2MjU0MmQ0ZmMwNDhmMTlhOTJhMDY4YTI3ZDE3YjcyIgotCi1TID0gIiR7V09SS0RJUn0vbGlic291cC0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCi0KLSMgbGlic291cC1nbm9tZSBpcyBlbnRpcmVseSBkZXByZWNhdGVkIGFuZCBqdXN0IHN0dWJzIGluIDIuNDIgb253YXJkcy4gRGlzYWJsZSBieSBkZWZhdWx0LgotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ25vbWVdID0gIi0td2l0aC1nbm9tZSwtLXdpdGhvdXQtZ25vbWUiCi1QQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLS13aXRoLWdzc2FwaSwtLXdpdGhvdXQtZ3NzYXBpLGtyYjUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdmFsYSIKLQotIyBXaGVuIGJ1aWx0IHdpdGhvdXQgZ25vbWUgc3VwcG9ydCwgbGlic291cC0yLjQgd2lsbCBjb250YWluIG9ubHkgb25lIHNoYXJlZCBsaWIKLSMgYW5kIHdpbGwgdGhlcmVmb3JlIGJlY29tZSBzdWJqZWN0IHRvIHJlbmFtaW5nIGJ5IGRlYmlhbi5iYmNsYXNzLiBQcmV2ZW50Ci0jIHJlbmFtaW5nIGluIG9yZGVyIHRvIGtlZXAgdGhlIHBhY2thZ2UgbmFtZSBjb25zaXN0ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotIyBnbm9tZSBzdXBwb3J0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi1ERUJJQU5fTk9BVVRPTkFNRV8ke1BOfSA9ICIxIgotCi0jIGdsaWItbmV0d29ya2luZyBpcyBuZWVkZWQgZm9yIFNTTCwgcHJveGllcywgZXRjLgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ2xpYi1uZXR3b3JraW5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42MC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42MC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZTdmZjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjYwLjMuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJBbiBIVFRQIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW4gQyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGlic291cCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDIgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCisKK1NIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGNmODkzN2QxNjFkM2RkNzFhNjVmMTY4NGUzMTc4MjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWIwZGM3NjJmMjNhYmU0ZTBkMjliNzczNzBlNTM5ZmQzNWYzMWQ4ZThlMDMxOGQ2ZGRjY2ZmMzk1YmU2OGEyMiIKKworUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCisjIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgorUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCisKKyMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCisjIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAorIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKKyMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKKworIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KK1JSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nL2ljb252LW00LXJlbW92ZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nL2ljb252LW00LXJlbW92ZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaAppbmRleCBkNDQ4OTE2Li45ZThjZTIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmcvaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSA4ZDk5YTM2ODYxNTY1NmE4MzVmNTUwMjMyNmFmZDMxY2VjMmNlYmZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzMDU2MjA2NWJhOWU0YzIzOGU3NjEwMGI1ZjlmMGM1YWRkMGU2MzViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTYgU2VwIDIwMTMgMTg6MTY6MTIgKzA4MDAKK0RhdGU6IFR1ZSwgNSBEZWMgMjAxNyAwOTozMDozNiArMDIwMAogU3ViamVjdDogW1BBVENIXSByZW1vdmUgdGhlIHRlc3QgdG8gY29udmVydCBldWMtanAKIAogUmVtb3ZlIHRoZSB0ZXN0ICJUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOgpAQCAtMTMsMjggKzEzLDQ0IEBACiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KLSBnbnVsaWItbTQvaWNvbnYubTQgfCAgIDExIC0tLS0tLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorLS0tCisgZ251bGliLW00L2ljb252Lm00IHwgMjMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjMgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBsaWJ1bmlzdHJpbmctMC45LjQvZ251bGliLW00L2ljb252Lm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlidW5pc3RyaW5nLTAuOS40Lm9yaWcvZ251bGliLW00L2ljb252Lm00CTIwMTQtMTEtMDMgMTc6NDE6MjkuNzU1MDExOTE3ICswMDAwCi0rKysgbGlidW5pc3RyaW5nLTAuOS40L2dudWxpYi1tNC9pY29udi5tNAkyMDE0LTExLTAzIDE3OjQzOjAzLjc5NTAxNDQ4MCArMDAwMAotQEAgLTE1OSwxNyArMTU5LDYgQEAKK2RpZmYgLS1naXQgYS9nbnVsaWItbTQvaWNvbnYubTQgYi9nbnVsaWItbTQvaWNvbnYubTQKK2luZGV4IGIzM2VjZDAuLjczYjZhYTEgMTAwNjQ0CistLS0gYS9nbnVsaWItbTQvaWNvbnYubTQKKysrKyBiL2dudWxpYi1tNC9pY29udi5tNAorQEAgLTE2NSwyOSArMTY1LDYgQEAgQUNfREVGVU4oW0FNX0lDT05WX0xJTktdLAogICAgICAgIH0KICAgIH0KICAjZW5kaWYKIC0gIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcwogLSAgICAgcHJvdmlkZWQuICAqLwotLSAgaWYgKC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLwotLSAgICAgIGljb252X29wZW4gKCJVVEYtOCIsICJFVUMtSlAiKSA9PSAoaWNvbnZfdCkoLTEpCi0tICAgICAgLyogVHJ5IElSSVgsIE9TRi8xIG5hbWVzLiAgKi8KLS0gICAgICAmJiBpY29udl9vcGVuICgiVVRGLTgiLCAiZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpCi0tICAgICAgLyogVHJ5IEFJWCBuYW1lcy4gICovCi0tICAgICAgJiYgaWNvbnZfb3BlbiAoIlVURi04IiwgIklCTS1ldWNKUCIpID09IChpY29udl90KSgtMSkKLS0gICAgICAvKiBUcnkgSFAtVVggbmFtZXMuICAqLwotLSAgICAgICYmIGljb252X29wZW4gKCJ1dGY4IiwgImV1Y0pQIikgPT0gKGljb252X3QpKC0xKSkKLS0gICAgcmVzdWx0IHw9IDE2OworLSAgeworLSAgICAvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KKy0gICAgaWNvbnZfdCBjZDEgPSBpY29udl9vcGVuICgiVVRGLTgiLCAiRVVDLUpQIik7CistICAgIC8qIFRyeSBJUklYLCBPU0YvMSBuYW1lcy4gICovCistICAgIGljb252X3QgY2QyID0gaWNvbnZfb3BlbiAoIlVURi04IiwgImV1Y0pQIik7CistICAgIC8qIFRyeSBBSVggbmFtZXMuICAqLworLSAgICBpY29udl90IGNkMyA9IGljb252X29wZW4gKCJVVEYtOCIsICJJQk0tZXVjSlAiKTsKKy0gICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KKy0gICAgaWNvbnZfdCBjZDQgPSBpY29udl9vcGVuICgidXRmOCIsICJldWNKUCIpOworLSAgICBpZiAoY2QxID09IChpY29udl90KSgtMSkgJiYgY2QyID09IChpY29udl90KSgtMSkKKy0gICAgICAgICYmIGNkMyA9PSAoaWNvbnZfdCkoLTEpICYmIGNkNCA9PSAoaWNvbnZfdCkoLTEpKQorLSAgICAgIHJlc3VsdCB8PSAxNjsKKy0gICAgaWYgKGNkMSAhPSAoaWNvbnZfdCkoLTEpKQorLSAgICAgIGljb252X2Nsb3NlIChjZDEpOworLSAgICBpZiAoY2QyICE9IChpY29udl90KSgtMSkpCistICAgICAgaWNvbnZfY2xvc2UgKGNkMik7CistICAgIGlmIChjZDMgIT0gKGljb252X3QpKC0xKSkKKy0gICAgICBpY29udl9jbG9zZSAoY2QzKTsKKy0gICAgaWYgKGNkNCAhPSAoaWNvbnZfdCkoLTEpKQorLSAgICAgIGljb252X2Nsb3NlIChjZDQpOworLSAgfQogICAgcmV0dXJuIHJlc3VsdDsKLSB9XV0pXSwKLSAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sCisgXV0pXSwKKyAgICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwgLAorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzdhMjEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgQyBhbmQgVW5pY29kZSBzdHJpbmdzIgotCi1ERVNDUklQVElPTiA9ICJUZXh0IGZpbGVzIGFyZSBub3dhZGF5cyB1c3VhbGx5IGVuY29kZWQgaW4gVW5pY29kZSwgYW5kIG1heVwKLSBjb25zaXN0IG9mIHZlcnkgZGlmZmVyZW50IHNjcmlwdHMgZnJvbSBMYXRpbiBsZXR0ZXJzIHRvIENoaW5lc2UgSGFuemlcCi0gd2l0aCBtYW55IGtpbmRzIG9mIHNwZWNpYWwgY2hhcmFjdGVycyBhY2NlbnRzLCByaWdodC10by1sZWZ0IHdyaXRpbmdcCi0gbWFya3MsIGh5cGhlbnMsIFJvbWFuIG51bWJlcnMsIGFuZCBtdWNoIG1vcmUuIEJ1dCB0aGUgUE9TSVggcGxhdGZvcm1cCi0gQVBJcyBmb3IgdGV4dCBkbyBub3QgY29udGFpbiBhZGVxdWF0ZSBmdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aFwKLSBwYXJ0aWN1bGFyIHByb3BlcnRpZXMgb2YgbWFueSBVbmljb2RlIGNoYXJhY3RlcnMuIEluIGZhY3QsIHRoZSBQT1NJWFwKLSBBUElzIGZvciB0ZXh0IGhhdmUgc2V2ZXJhbCBhc3N1bXB0aW9ucyBhdCB0aGVpciBiYXNlIHdoaWNoIGRvbid0IGhvbGRcCi0gZm9yIFVuaWNvZGUgdGV4dC4gIFRoaXMgbGlicmFyeSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZ1wKLSBVbmljb2RlIHN0cmluZ3MgYW5kIGZvciBtYW5pcHVsYXRpbmcgQyBzdHJpbmdzIGFjY29yZGluZyB0byB0aGUgVW5pY29kZVwKLSBzdGFuZGFyZC4gIFRoaXMgcGFja2FnZSBjb250YWlucyBkb2N1bWVudGF0aW9uLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnVuaXN0cmluZy8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJMR1BMdjMrIHwgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT00NTtlbmRsaW5lPTY1O21kNT0wODI4N2QxNmJhOGQ4MzlmYWVkOGQyZGMxNGQ3ZDZhNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvbGlidW5pc3RyaW5nLnRleGk7bWQ1PWI4NmM5ZmQ3YWNhYWM2MjMwMTcyMzk2NDA2MzE5MTJjIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiOGU2NjM0NTRhYTM3MjE4MWVlOGU0NmVkYWEzYmE0YzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWNlMDgxY2JlZTE5NTFiNTU1OTdiMzBlNzAzMGJkYTlkN2IyZjAzNGVmOTAxYTEzNWZmM2EwMjBiZTVhNDFlNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjdjYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjkuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgQyBhbmQgVW5pY29kZSBzdHJpbmdzIgorCitERVNDUklQVElPTiA9ICJUZXh0IGZpbGVzIGFyZSBub3dhZGF5cyB1c3VhbGx5IGVuY29kZWQgaW4gVW5pY29kZSwgYW5kIG1heVwKKyBjb25zaXN0IG9mIHZlcnkgZGlmZmVyZW50IHNjcmlwdHMgZnJvbSBMYXRpbiBsZXR0ZXJzIHRvIENoaW5lc2UgSGFuemlcCisgd2l0aCBtYW55IGtpbmRzIG9mIHNwZWNpYWwgY2hhcmFjdGVycyBhY2NlbnRzLCByaWdodC10by1sZWZ0IHdyaXRpbmdcCisgbWFya3MsIGh5cGhlbnMsIFJvbWFuIG51bWJlcnMsIGFuZCBtdWNoIG1vcmUuIEJ1dCB0aGUgUE9TSVggcGxhdGZvcm1cCisgQVBJcyBmb3IgdGV4dCBkbyBub3QgY29udGFpbiBhZGVxdWF0ZSBmdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aFwKKyBwYXJ0aWN1bGFyIHByb3BlcnRpZXMgb2YgbWFueSBVbmljb2RlIGNoYXJhY3RlcnMuIEluIGZhY3QsIHRoZSBQT1NJWFwKKyBBUElzIGZvciB0ZXh0IGhhdmUgc2V2ZXJhbCBhc3N1bXB0aW9ucyBhdCB0aGVpciBiYXNlIHdoaWNoIGRvbid0IGhvbGRcCisgZm9yIFVuaWNvZGUgdGV4dC4gIFRoaXMgbGlicmFyeSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZ1wKKyBVbmljb2RlIHN0cmluZ3MgYW5kIGZvciBtYW5pcHVsYXRpbmcgQyBzdHJpbmdzIGFjY29yZGluZyB0byB0aGUgVW5pY29kZVwKKyBzdGFuZGFyZC4gIFRoaXMgcGFja2FnZSBjb250YWlucyBkb2N1bWVudGF0aW9uLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnVuaXN0cmluZy8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJMR1BMdjMrIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT00NTtlbmRsaW5lPTY1O21kNT0wODI4N2QxNmJhOGQ4MzlmYWVkOGQyZGMxNGQ3ZDZhNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvbGlidW5pc3RyaW5nLnRleGk7bWQ1PWVmYjgwYTM3OTlhNjBmOTVmZWFmODA2NjFkNGYyMDRjIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNGY2ODllMzdlNGMzYmQ2N2RlNTc4NmFhNTFkOThiMTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjVlOTBjMDhmOWU1NDI3Y2EzYTJjMGM1M2YxOWFhMzhiMjVjNTAwOTEzNTEwYWQyNWFmZWY4NjQ0OGJlYTg0YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaAppbmRleCAwZGZmMmM4Li5jOGZhY2E0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaApAQCAtMjgsMTAgKzI4LDEwIEBACiAgaW5jbHVkZS9saWJ1bndpbmRfaS5oIHwgMSArCiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKLWluZGV4IDQ5N2Y3YzIuLjljMTVhZjEgMTAwNjQ0Ci0tLS0gYS9hY2luY2x1ZGUubTQKLSsrKyBiL2FjaW5jbHVkZS5tNAorSW5kZXg6IGxpYnVud2luZC0xLjIuMS9hY2luY2x1ZGUubTQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ1bndpbmQtMS4yLjEub3JpZy9hY2luY2x1ZGUubTQKKysrKyBsaWJ1bndpbmQtMS4yLjEvYWNpbmNsdWRlLm00CiBAQCAtMjIsMTEgKzIyLDUgQEAgZmldKQogIEFDX0RFRlVOKFtDSEVDS19BVE9NSUNfT1BTXSwKICBbZG5sIENoZWNrIHdoZXRoZXIgdGhlIHN5c3RlbSBoYXMgdGhlIGF0b21pY19vcHMgcGFja2FnZSBpbnN0YWxsZWQuCkBAIC00NSwxOCArNDUsMTUgQEAKIC0jICBBQ19DSEVDS19MSUIoYXRvbWljX29wcywgbWFpbikKICsgIEFDX0NIRUNLX0xJQihhdG9taWNfb3BzLCBtYWluKQogIF0pCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWJ1bndpbmRfaS5oIGIvaW5jbHVkZS9saWJ1bndpbmRfaS5oCi1pbmRleCAyM2Y2MTVlLi5kZWFiZGZkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saWJ1bndpbmRfaS5oCi0rKysgYi9pbmNsdWRlL2xpYnVud2luZF9pLmgKLUBAIC05NSw2ICs5NSw3IEBAIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSAJKHB0aHJlYWRfbXV0ZXhfdW5sb2NrICE9IE5VTEwgPyBwdGhyZWFkX211dGV4X3VubG9jayAobCkgOiAwKQorSW5kZXg6IGxpYnVud2luZC0xLjIuMS9pbmNsdWRlL2xpYnVud2luZF9pLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ1bndpbmQtMS4yLjEub3JpZy9pbmNsdWRlL2xpYnVud2luZF9pLmgKKysrKyBsaWJ1bndpbmQtMS4yLjEvaW5jbHVkZS9saWJ1bndpbmRfaS5oCitAQCAtMTE2LDYgKzExNiw3IEBAIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREUKKyAgICAgICAgIChwdGhyZWFkX211dGV4X3VubG9jayAhPSBOVUxMID8gcHRocmVhZF9tdXRleF91bmxvY2sgKGwpIDogMCkKICAKICAjaWZkZWYgSEFWRV9BVE9NSUNfT1BTX0gKICsjIGRlZmluZSBBT19SRVFVSVJFX0NBUwogICMgaW5jbHVkZSA8YXRvbWljX29wcy5oPgogIHN0YXRpYyBpbmxpbmUgaW50CiAgY21weGNoZ19wdHIgKHZvaWQgKmFkZHIsIHZvaWQgKm9sZCwgdm9pZCAqbmV3KQotLS0gCi0xLjkuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL2ZpeC1taXBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDIyMjM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL2ZpeC1taXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gNWYzNTRjYjdiOWM4NGRhZTAwNmYwZWJkOGFkN2E3OGQ3ZTJhYWQwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhdmUgV2F0c29uIDxkYXZlandhdHNvbkBmYi5jb20+Ci1EYXRlOiBXZWQsIDI1IEphbiAyMDE3IDE2OjE4OjAyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1pcHMvdGlsZWd4OiBBZGQgbWlzc2luZyB1bndpbmRfaS5oIGhlYWRlciBmaWxlCi0KLXJlcG9ydGVkLWJ5OiBKb2huIEtuaWdodCA8Sm9obi5LbmlnaHRAYmVsa2luLmNvbT4KLS0tLQotIHNyYy9NYWtlZmlsZS5hbSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDVkODc0NzU1Li43ZGU0YzQyNSAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMjgwLDcgKzI4MCw3IEBAIGxpYnVud2luZF9ocHBhX2xhX1NPVVJDRVNfaHBwYSA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfaHBwYV9jb21tb24pCVwKLSAJaHBwYS9HcmVzdW1lLmMgaHBwYS9Hc3RlcC5jCi0gCi0gIyBUaGUgbGlzdCBvZiBmaWxlcyB0aGF0IGdvIGluZm8gbGlidW53aW5kIGFuZCBsaWJ1bndpbmQtbWlwczoKLS1ub2luc3RfSEVBREVSUyArPSBtaXBzL2luaXQuaCBtaXBzL29mZnNldHMuaAotK25vaW5zdF9IRUFERVJTICs9IG1pcHMvaW5pdC5oIG1pcHMvb2Zmc2V0cy5oIG1pcHMvdW53aW5kX2kuaAotIGxpYnVud2luZF9sYV9TT1VSQ0VTX21pcHNfY29tbW9uID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19jb21tb24pCSAgICBcCi0gCW1pcHMvaXNfZnByZWcuYyBtaXBzL3JlZ25hbWUuYwotIAotQEAgLTI5OSw3ICsyOTksNyBAQCBsaWJ1bndpbmRfbWlwc19sYV9TT1VSQ0VTX21pcHMgPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX21pcHNfY29tbW9uKQkgICAgXAotIAltaXBzL0dpc19zaWduYWxfZnJhbWUuYyBtaXBzL0dyZWdzLmMgbWlwcy9HcmVzdW1lLmMgbWlwcy9Hc3RlcC5jCi0gCi0gIyBUaGUgbGlzdCBvZiBmaWxlcyB0aGF0IGdvIGluZm8gbGlidW53aW5kIGFuZCBsaWJ1bndpbmQtdGlsZWd4OgotLW5vaW5zdF9IRUFERVJTICs9IHRpbGVneC9pbml0LmggdGlsZWd4L29mZnNldHMuaAotK25vaW5zdF9IRUFERVJTICs9IHRpbGVneC9pbml0LmggdGlsZWd4L29mZnNldHMuaCB0aWxlZ3gvdW53aW5kX2kuaAotIGxpYnVud2luZF9sYV9TT1VSQ0VTX3RpbGVneF9jb21tb24gPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2NvbW1vbikJICAgIFwKLSAJdGlsZWd4L2lzX2ZwcmVnLmMgdGlsZWd4L3JlZ25hbWUuYwotIAotZGlmZiAtLWdpdCBhL3NyYy9taXBzL3Vud2luZF9pLmggYi9zcmMvbWlwcy91bndpbmRfaS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzM4MmRjZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL21pcHMvdW53aW5kX2kuaAotQEAgLTAsMCArMSw0MyBAQAotKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5Ci0rCi0rVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgotKwotK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKwotK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi0raW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rCi0rVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0rRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0rTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLStOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi0rTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgotK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KLSsKLSsjaWZuZGVmIHVud2luZF9pX2gKLSsjZGVmaW5lIHVud2luZF9pX2gKLSsKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rCi0rI2luY2x1ZGUgPGxpYnVud2luZC1taXBzLmg+Ci0rCi0rI2luY2x1ZGUgImxpYnVud2luZF9pLmgiCi0rCi0rI2RlZmluZSBtaXBzX2xvY2sgICAgICAgICAgICAgICAgICAgICAgIFVOV19PQkoobG9jaykKLSsjZGVmaW5lIG1pcHNfbG9jYWxfcmVzdW1lICAgICAgICAgICAgICAgVU5XX09CSihsb2NhbF9yZXN1bWUpCi0rI2RlZmluZSBtaXBzX2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAgICAgIFVOV19PQkoobG9jYWxfYWRkcl9zcGFjZV9pbml0KQotKwotK2V4dGVybiBpbnQgbWlwc19sb2NhbF9yZXN1bWUgKHVud19hZGRyX3NwYWNlX3QgYXMsIHVud19jdXJzb3JfdCAqY3Vyc29yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKLSsKLStleHRlcm4gdm9pZCBtaXBzX2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAodm9pZCk7Ci0rCi0rI2VuZGlmIC8qIHVud2luZF9pX2ggKi8KLWRpZmYgLS1naXQgYS9zcmMvdGlsZWd4L3Vud2luZF9pLmggYi9zcmMvdGlsZWd4L3Vud2luZF9pLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYWM3YmUzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvdGlsZWd4L3Vud2luZF9pLmgKLUBAIC0wLDAgKzEsNDQgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2lmbmRlZiB1bndpbmRfaV9oCi0rI2RlZmluZSB1bndpbmRfaV9oCi0rCi0rI2luY2x1ZGUgPG1lbW9yeS5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsKLSsjaW5jbHVkZSA8bGlidW53aW5kLXRpbGVneC5oPgotKwotKyNpbmNsdWRlICJsaWJ1bndpbmRfaS5oIgotKwotKyNkZWZpbmUgdGlsZWd4X2xvY2FsX3Jlc3VtZSAgICAgICAgICAgIFVOV19PQkoobG9jYWxfcmVzdW1lKQotKyNkZWZpbmUgdGlsZWd4X2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAgIFVOV19PQkoobG9jYWxfYWRkcl9zcGFjZV9pbml0KQotKwotK2V4dGVybiBpbnQgdGlsZWd4X2xvY2FsX3Jlc3VtZSAodW53X2FkZHJfc3BhY2VfdCBhcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVud19jdXJzb3JfdCAqY3Vyc29yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKLSsKLStleHRlcm4gdm9pZCB0aWxlZ3hfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICh2b2lkKTsKLSsKLSsjZW5kaWYgLyogdW53aW5kX2lfaCAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2E3NjI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLjEuYmIKQEAgLTAsMCArMSwyMyBAQAorcmVxdWlyZSBsaWJ1bndpbmQuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNmJhOWU2MGQ5MmZkNmY1NWNkOWRhZGIwODRkZjE5ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjNlY2I5MGUyOGNiZTUzZmJhN2E0YTI3Y2NjZTdhYWQxODhkMzIxMGJiMTk2NGE5MjNhNzMxYTI3YTc1YWNiIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5zYXZhbm5haC5ub25nbnUub3JnL3JlbGVhc2VzL2xpYnVud2luZC9saWJ1bndpbmQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYmFja3RyYWNlLVVzZS1vbmx5LXdpdGgtZ2xpYmMtYW5kLXVjbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXg4Ni1TdHViLW91dC14ODZfbG9jYWxfcmVzdW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLW1pcHMtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkZC1rbm9icy10by1kaXNhYmxlLWVuYWJsZS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwYzMyLUNvbnNpZGVyLXVjb250ZXh0LW1pc21hdGNoZXMtYmV0d2Vlbi1nbGliYy1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlidW53aW5kLTEuMS14MzIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wtaGVhZGVyLWNvbmZsaWN0LnBhdGNoIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS10ZXN0cyAiCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg3LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjMxMmYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXJlcXVpcmUgbGlidW53aW5kLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWVmY2I1ZDdmNzhmZGM4ZjFlZDE3MmEyNmVhNDIwMmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWRlMzhmZmJkYzg4YmQ2OTRkMTAwODE4NjU4NzFjZDJiZmJiMDJhZDhlZjllMTYwNmFlZTE4ZDY1NTMyYjk5MiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc2F2YW5uYWgubm9uZ251Lm9yZy9yZWxlYXNlcy9saWJ1bndpbmQvbGlidW53aW5kLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYtU3R1Yi1vdXQteDg2X2xvY2FsX3Jlc3VtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1taXBzLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQta25vYnMtdG8tZGlzYWJsZS1lbmFibGUtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGMzMi1Db25zaWRlci11Y29udGV4dC1taXNtYXRjaGVzLWJldHdlZW4tZ2xpYmMtYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnVud2luZC0xLjEteDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1taXBzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLWhlYWRlci1jb25mbGljdC5wYXRjaCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMgIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ny8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUxERkxBR1MgKz0gIi1XbCwteixyZWxybywteixub3cgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlY2IyMGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBSQ1UgKHJlYWQtY29weS11cGRhdGUpIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vbHR0bmcub3JnL3VyY3UiCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9sdHRuZy5vcmcvcHJvamVjdC9pc3N1ZXMiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTU0OGQyODczNzI4OWQ3NWE4ZjFlMDFiYTJmZDc4MjUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3VyY3UuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTMyO21kNT00ZGUwZDY4ZDNhOTk3NjQzNzE1MDM2ZDIyMDlhZTFkOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3VyY3UvdWF0b21pYy94ODYuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTIxO21kNT01OGU1MGJiZDhhMmYwNzNiYjU1MDBlNjU1NGFmMGQwYiIKLQotU1JDX1VSSSA9ICJodHRwOi8vbHR0bmcub3JnL2ZpbGVzL3VyY3UvdXNlcnNwYWNlLXJjdS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjlkYWI4NWI2OTI5YzM3ODMzOGI5NTA0YWRjNmFlYTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NiNThhN2JhNTE1MTE5ODA4N2YwMjVkYzhkMTlkODkxOGU5YzZkNTY3NzJmMDM5Njk2YzExMWQ5YWFkMzE5MCIKLQotUyA9ICIke1dPUktESVJ9L3VzZXJzcGFjZS1yY3UtJHtQVn0iCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTljMDRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjEuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjI4MWEyZjkyZmRjMzljNDBhZDZiNzZmNjYzMWZkYmQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMDkyMjBiZTQ0MzVkYzI3ZmNkMjJkMjkxNzA3Yjk0Yjk3ZjE1OWUwYzQ0MmZiY2Q2MGMxNjhmOGY3OWViMDYiCisKK1MgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgoraW5oZXJpdCBhdXRvdG9vbHMKKworQ1BQRkxBR1NfYXBwZW5kX3Jpc2N2NjQgID0gIiAtcHRocmVhZCAtRF9SRUVOVFJBTlQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtQ2hlY2stZm9yLWludGVnZXItb3ZlcmZsb3ctaW4teHNsdEFkZFRleHRTdHJpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtQ2hlY2stZm9yLWludGVnZXItb3ZlcmZsb3ctaW4teHNsdEFkZFRleHRTdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YWFhY2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUNoZWNrLWZvci1pbnRlZ2VyLW92ZXJmbG93LWluLXhzbHRBZGRUZXh0U3RyaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotRnJvbSAwOGFiMjc3NGI4NzBkZTFjN2I1YTQ4NjkzZGY3NWU4MTU0YWRkYWU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBXZWxsbmhvZmVyIDx3ZWxsbmhvZmVyQGFldnVtLmRlPgotRGF0ZTogVGh1LCAxMiBKYW4gMjAxNyAxNTozOTo1MiArMDEwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyBpbiB4c2x0QWRkVGV4dFN0cmluZwotCi1MaW1pdCBidWZmZXIgc2l6ZSBpbiB4c2x0QWRkVGV4dFN0cmluZyB0byBJTlRfTUFYLiBUaGUgaXNzdWUgY2FuIGJlCi1leHBsb2l0ZWQgdG8gdHJpZ2dlciBhbiBvdXQgb2YgYm91bmRzIHdyaXRlIG9uIDY0LWJpdCBzeXN0ZW1zLgotCi1PcmlnaW5hbGx5IHJlcG9ydGVkIHRvIENocm9taXVtOgotCi1odHRwczovL2NyYnVnLmNvbS82NzY2MjMKLQotQ1ZFOiBDVkUtMjAxNy01MDI5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXR1cy5jb20+Ci0KLS0tLQotIGxpYnhzbHQvdHJhbnNmb3JtLmMgICAgIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKy0tLQotIGxpYnhzbHQveHNsdEludGVybmFscy5oIHwgIDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnhzbHQvdHJhbnNmb3JtLmMgYi9saWJ4c2x0L3RyYW5zZm9ybS5jCi1pbmRleCA1MTkxMzNmLi4wMmJmZjM0IDEwMDY0NAotLS0tIGEvbGlieHNsdC90cmFuc2Zvcm0uYwotKysrIGIvbGlieHNsdC90cmFuc2Zvcm0uYwotQEAgLTgxMywxMyArODEzLDMyIEBAIHhzbHRBZGRUZXh0U3RyaW5nKHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyIGN0eHQsIHhtbE5vZGVQdHIgdGFyZ2V0LAotICAgICAgICAgcmV0dXJuKHRhcmdldCk7Ci0gCi0gICAgIGlmIChjdHh0LT5sYXN0dGV4dCA9PSB0YXJnZXQtPmNvbnRlbnQpIHsKLSsgICAgICAgIGludCBtaW5TaXplOwotIAotLQlpZiAoY3R4dC0+bGFzdHR1c2UgKyBsZW4gPj0gY3R4dC0+bGFzdHRzaXplKSB7Ci0rICAgICAgICAvKiBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyBhY2NvdW50aW5nIGZvciBOVUwgdGVybWluYXRvci4gKi8KLSsgICAgICAgIGlmIChsZW4gPj0gSU5UX01BWCAtIGN0eHQtPmxhc3R0dXNlKSB7Ci0rICAgICAgICAgICAgeHNsdFRyYW5zZm9ybUVycm9yKGN0eHQsIE5VTEwsIHRhcmdldCwKLSsgICAgICAgICAgICAgICAgInhzbHRDb3B5VGV4dDogdGV4dCBhbGxvY2F0aW9uIGZhaWxlZFxuIik7Ci0rICAgICAgICAgICAgcmV0dXJuKE5VTEwpOwotKyAgICAgICAgfQotKyAgICAgICAgbWluU2l6ZSA9IGN0eHQtPmxhc3R0dXNlICsgbGVuICsgMTsKLSsKLSsgICAgICAgIGlmIChjdHh0LT5sYXN0dHNpemUgPCBtaW5TaXplKSB7Ci0gCSAgICB4bWxDaGFyICpuZXdidWY7Ci0gCSAgICBpbnQgc2l6ZTsKLSsgICAgICAgICAgICBpbnQgZXh0cmE7Ci0rCi0rICAgICAgICAgICAgLyogRG91YmxlIGJ1ZmZlciBzaXplIGJ1dCBpbmNyZWFzZSBieSBhdCBsZWFzdCAxMDAgYnl0ZXMuICovCi0rICAgICAgICAgICAgZXh0cmEgPSBtaW5TaXplIDwgMTAwID8gMTAwIDogbWluU2l6ZTsKLSsKLSsgICAgICAgICAgICAvKiBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdy4gKi8KLSsgICAgICAgICAgICBpZiAoZXh0cmEgPiBJTlRfTUFYIC0gY3R4dC0+bGFzdHRzaXplKSB7Ci0rICAgICAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBlbHNlIHsKLSsgICAgICAgICAgICAgICAgc2l6ZSA9IGN0eHQtPmxhc3R0c2l6ZSArIGV4dHJhOwotKyAgICAgICAgICAgIH0KLSAKLS0JICAgIHNpemUgPSBjdHh0LT5sYXN0dHNpemUgKyBsZW4gKyAxMDA7Ci0tCSAgICBzaXplICo9IDI7Ci0gCSAgICBuZXdidWYgPSAoeG1sQ2hhciAqKSB4bWxSZWFsbG9jKHRhcmdldC0+Y29udGVudCxzaXplKTsKLSAJICAgIGlmIChuZXdidWYgPT0gTlVMTCkgewotIAkJeHNsdFRyYW5zZm9ybUVycm9yKGN0eHQsIE5VTEwsIHRhcmdldCwKLWRpZmYgLS1naXQgYS9saWJ4c2x0L3hzbHRJbnRlcm5hbHMuaCBiL2xpYnhzbHQveHNsdEludGVybmFscy5oCi1pbmRleCAwNjBiMTc4Li41YWQxNzcxIDEwMDY0NAotLS0tIGEvbGlieHNsdC94c2x0SW50ZXJuYWxzLmgKLSsrKyBiL2xpYnhzbHQveHNsdEludGVybmFscy5oCi1AQCAtMTc1NCw4ICsxNzU0LDggQEAgc3RydWN0IF94c2x0VHJhbnNmb3JtQ29udGV4dCB7Ci0gICAgICAqIFNwZWVkIG9wdGltaXphdGlvbiB3aGVuIGNvYWxlc2NpbmcgdGV4dCBub2RlcwotICAgICAgKi8KLSAgICAgY29uc3QgeG1sQ2hhciAgKmxhc3R0ZXh0OwkJLyogbGFzdCB0ZXh0IG5vZGUgY29udGVudCAqLwotLSAgICB1bnNpZ25lZCBpbnQgICAgbGFzdHRzaXplOwkJLyogbGFzdCB0ZXh0IG5vZGUgc2l6ZSAqLwotLSAgICB1bnNpZ25lZCBpbnQgICAgbGFzdHR1c2U7CQkvKiBsYXN0IHRleHQgbm9kZSB1c2UgKi8KLSsgICAgaW50ICAgICAgICAgICAgIGxhc3R0c2l6ZTsJCS8qIGxhc3QgdGV4dCBub2RlIHNpemUgKi8KLSsgICAgaW50ICAgICAgICAgICAgIGxhc3R0dXNlOwkJLyogbGFzdCB0ZXh0IG5vZGUgdXNlICovCi0gICAgIC8qCi0gICAgICAqIFBlciBDb250ZXh0IERlYnVnZ2luZwotICAgICAgKi8KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUxpbmstbGlicmFyaWVzLXdpdGgtbGlibS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ZmZlYmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUxpbmstbGlicmFyaWVzLXdpdGgtbGlibS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNDg3ZTJmN2UzNWRhZDNkZWVjNzk3OGNlNDQ3OGEzZDRlYTUwNzBlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDEwIEZlYiAyMDE3IDE0OjI2OjU5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIExpbmsgbGlicmFyaWVzIHdpdGggbGlibQotCi1PdGhlcndpc2UgbGlua2luZyB0aGUgcmVzdWx0aW5nIGxpYnJhcmllcyB0byBhIGJpbmFyeSAoZS5nLiB4c2x0cHJvYykKLWZhaWxzIHdoZW4gdXNpbmcgZ29sZCBsaW5rZXI6Ci18wqAuLi9saWJ4c2x0Ly5saWJzL2xpYnhzbHQuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdmbW9kJwotfMKgLi4vbGlieHNsdC8ubGlicy9saWJ4c2x0LnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncG93JwotfMKgLi4vbGliZXhzbHQvLmxpYnMvbGliZXhzbHQuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdmbG9vcicKLXzCoGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbWFpbGluZyBsaXN0LCBGZWIgMTAgMjAxN10KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBsaWJleHNsdC9NYWtlZmlsZS5hbSB8IDIgKy0KLSBsaWJ4c2x0L01ha2VmaWxlLmFtICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmV4c2x0L01ha2VmaWxlLmFtIGIvbGliZXhzbHQvTWFrZWZpbGUuYW0KLWluZGV4IDFjZjUxMzguLjU0NDk1MjQgMTAwNjQ0Ci0tLS0gYS9saWJleHNsdC9NYWtlZmlsZS5hbQotKysrIGIvbGliZXhzbHQvTWFrZWZpbGUuYW0KLUBAIC0yNyw3ICsyNyw3IEBAIGxpYmV4c2x0X2xhX1NPVVJDRVMgPSAgICAgICAgICAgICAgICAgICBcCi0gCWxpYmV4c2x0LmgJCQlcCi0gCWR5bmFtaWMuYwotIAotLWxpYmV4c2x0X2xhX0xJQkFERCA9ICQodG9wX2J1aWxkZGlyKS9saWJ4c2x0L2xpYnhzbHQubGEgJChFWFRSQV9MSUJTKSAkKExJQkdDUllQVF9MSUJTKQotK2xpYmV4c2x0X2xhX0xJQkFERCA9ICQodG9wX2J1aWxkZGlyKS9saWJ4c2x0L2xpYnhzbHQubGEgJChFWFRSQV9MSUJTKSAkKExJQkdDUllQVF9MSUJTKSAkKE1fTElCUykKLSBsaWJleHNsdF9sYV9MREZMQUdTID0gJChXSU4zMl9FWFRSQV9MREZMQUdTKSAtdmVyc2lvbi1pbmZvICQoTElCRVhTTFRfVkVSU0lPTl9JTkZPKQotIAotIG1hbl9NQU5TID0gbGliZXhzbHQuMwotZGlmZiAtLWdpdCBhL2xpYnhzbHQvTWFrZWZpbGUuYW0gYi9saWJ4c2x0L01ha2VmaWxlLmFtCi1pbmRleCBkOWZlZDY4Li45ZDQ0YzNkIDEwMDY0NAotLS0tIGEvbGlieHNsdC9NYWtlZmlsZS5hbQotKysrIGIvbGlieHNsdC9NYWtlZmlsZS5hbQotQEAgLTYyLDcgKzYyLDcgQEAgZWxzZQotIExJQlhTTFRfVkVSU0lPTl9TQ1JJUFQgPQotIGVuZGlmCi0gCi0tbGlieHNsdF9sYV9MSUJBREQgPSAkKExJQlhNTF9MSUJTKSAkKEVYVFJBX0xJQlMpCi0rbGlieHNsdF9sYV9MSUJBREQgPSAkKExJQlhNTF9MSUJTKSAkKE1fTElCUykgJChFWFRSQV9MSUJTKQotIGxpYnhzbHRfbGFfTERGTEFHUyA9CQkJCQlcCi0gCQkkKFdJTjMyX0VYVFJBX0xERkxBR1MpCQkJXAotIAkJJChMSUJYU0xUX1ZFUlNJT05fU0NSSVBUKQkJXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1nY3J5cHQtYW5kLWxpYnhtbDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1nY3J5cHQtYW5kLWxpYnhtbDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxODY3MDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLUZyb20gZWQ3MWFjOTU0OGEyYmI2ZWNkMmRjNWFkODgwYzYwNDk3NWY4NzJiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyIEp1biAyMDE2IDE0OjIwOjA0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBwa2ctY29uZmlnIHRvIGZpbmQgZ2NyeXB0IGFuZCBsaWJ4bWwyLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2xpYnhtbDIgaXMgdXBzdHJlYW1hYmxlXQotCi1SUCAyMDE0LzUvMjIKLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCA3MCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDhiZGY0NWEuLjBiMmIzMTIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTM3Nyw2ICszNzcsOCBAQCBBQ19TVUJTVChweXRob25kaXIpCi0gQUNfU1VCU1QoUFlUSE9OX1NVQkRJUikKLSBBQ19TVUJTVChQWVRIT05fTElCUykKLSAKLStQS0dfUFJPR19QS0dfQ09ORklHCi0rCi0gQUNfQVJHX1dJVEgoY3J5cHRvLCBbICAtLXdpdGgtY3J5cHRvICAgICAgICAgICBBZGQgY3J5cHRvIHN1cHBvcnQgdG8gZXhzbHQgKG9uKV0pCi0gV0lUSF9DUllQVE89MAotIENSWVBUT19URVNURElSPQotQEAgLTM5NCwyNyArMzk2LDE0IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgQ1JZUFRPX1RFU1RESVI9Y3J5cHRvCi0gICAgIDs7Ci0gICAqKQotLSAgICBBQ19QQVRIX1RPT0woTElCR0NSWVBUX0NPTkZJRywgbGliZ2NyeXB0LWNvbmZpZywgbm8pCi0tICAgIGlmIHRlc3QgIiRMSUJHQ1JZUFRfQ09ORklHIiAhPSAibm8iIDsgdGhlbgotLSAgICAgIExJQkdDUllQVF9WRVJTSU9OPWAkTElCR0NSWVBUX0NPTkZJRyAtLXZlcnNpb25gCi0tICAgICAgaWYgdGVzdCBWRVJTSU9OX1RPX05VTUJFUihlY2hvICRMSUJHQ1JZUFRfVkVSU0lPTikgLWx0IFZFUlNJT05fVE9fTlVNQkVSKGVjaG8gIjEuMS40MiIpCi0tICAgICAgdGhlbgotLSAgICAgICAgTElCR0NSWVBUX0NGTEFHUz0iIgotLSAgICAgICAgTElCR0NSWVBUX0xJQlM9IiIKLS0gICAgICAgIGVjaG8gJ2djcnlwdCBsaWJyYXJ5IHZlcnNpb24gPCAxLjEuNDIgLSBDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuJwotLSAgICAgIGVsc2UKLS0gICAgICAgIExJQkdDUllQVF9DRkxBR1M9YCRMSUJHQ1JZUFRfQ09ORklHICRsaWJnY3J5cHRfY29uZmlnX2FyZ3MgLS1jZmxhZ3NgCi0tICAgICAgICBMSUJHQ1JZUFRfTElCUz1gJExJQkdDUllQVF9DT05GSUcgJGxpYmdjcnlwdF9jb25maWdfYXJncyAtLWxpYnNgCi0tICAgICAgICBBQ19ERUZJTkUoSEFWRV9HQ1JZUFQsIDEsIFtEZWZpbmUgaWYgZ2NyeXB0IGxpYnJhcnkgaXMgYXZhaWxhYmxlLl0pCi0tICAgICAgICBlY2hvICdDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIGJlIGF2YWlsYWJsZS4nCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKExJQkdDUllQVCwgW2xpYmdjcnlwdCA+PSAxLjEuNDJdLCBbCi0rICAgICAgICAgIEFDX0RFRklORShIQVZFX0dDUllQVCwgMSwgW0RlZmluZSBpZiBnY3J5cHQgbGlicmFyeSBpcyBhdmFpbGFibGUuXSkKLSsgICAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBiZSBhdmFpbGFibGUuJwotICAgICAgICAgV0lUSF9DUllQVE89MQotICAgICAgICAgQ1JZUFRPX1RFU1RESVI9Y3J5cHRvCi0tICAgICAgZmkKLS0gICAgZWxzZQotLSAgICAgIExJQkdDUllQVF9DRkxBR1M9IiIKLS0gICAgICBMSUJHQ1JZUFRfTElCUz0iIgotLSAgICAgIGVjaG8gJ0NyeXB0byBleHRlbnNpb25zIHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gSW5zdGFsbCBsaWJnY3J5cHQgYW5kIHJlY29uZmlndXJlIHRvIG1ha2UgYXZhaWxhYmxlLicKLS0gICAgZmkKLSsgICAgICAgXSwgWwotKyAgICAgICAgICBlY2hvICdDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEluc3RhbGwgbGliZ2NyeXB0ID49IDEuMS40MiBhbmQgcmVjb25maWd1cmUgdG8gbWFrZSBhdmFpbGFibGUuJwotKyAgICAgICAgXSkKLSBlc2FjCi0gZmkKLSBBQ19TVUJTVChXSVRIX0NSWVBUTykKLUBAIC00NzYsMjQgKzQ2NSw4IEBAIGRubCBvcmlnaW5hbCB3b3JrIC0gTWF0aGlldSBMYWNhZ2UgMzAvMDMvMjAwMAotIGRubCBzb21lIHR3ZWFraW5nIC0gRGF2aWQgSMOkcmRlbWFuIDMwLzEwLzIwMDEKLSBkbmwKLSAKLS1MSUJYTUxfQ09ORklHX1BSRUZJWD0iIgotIExJQlhNTF9TUkM9IiIKLSAKLS1BQ19BUkdfV0lUSChsaWJ4bWwtcHJlZml4LAotLSAgICAgICAgWyAgLS13aXRoLWxpYnhtbC1wcmVmaXg9W1BGWF0JCVNwZWNpZnkgbG9jYXRpb24gb2YgbGlieG1sIGNvbmZpZ10sCi0tCUxJQlhNTF9DT05GSUdfUFJFRklYPSR3aXRodmFsCi0tKQotLSAgICAgICAgCi0tQUNfQVJHX1dJVEgobGlieG1sLWluY2x1ZGUtcHJlZml4LAotLSAgICAgICAgWyAgLS13aXRoLWxpYnhtbC1pbmNsdWRlLXByZWZpeD1bUEZYXQlTcGVjaWZ5IGxvY2F0aW9uIG9mIGxpYnhtbCBoZWFkZXJzXSwKLS0gICAgICAgIExJQlhNTF9DRkxBR1M9Ii1JJHdpdGh2YWwiCi0tKQotLQotLUFDX0FSR19XSVRIKGxpYnhtbC1saWJzLXByZWZpeCwKLS0gICAgICAgIFsgIC0td2l0aC1saWJ4bWwtbGlicy1wcmVmaXg9W1BGWF0JU3BlY2lmeSBsb2NhdGlvbiBvZiBsaWJ4bWwgbGlic10sCi0tICAgICAgICBMSUJYTUxfTElCUz0iLUwkd2l0aHZhbCIKLS0pCi0tCi0gQUNfQVJHX1dJVEgobGlieG1sLXNyYywKLSAJWyAgLS13aXRoLWxpYnhtbC1zcmM9W0RJUl0gICAgICAgICAgICAgIEZvciBsaWJ4bWwgdGhhdHMgbm90IGluc3RhbGxlZCB5ZXQgKHNldHMgYWxsIHRocmVlIGFib3ZlKV0sCi0gCUxJQlhNTF9TUkM9IiR3aXRodmFsIgotQEAgLTU1NiwyOCArNTI5LDkgQEAgdGhlbgotIAlmaQotIGZpCi0gCi0tZG5sCi0tZG5sIG1ha2Ugc3VyZSB4bWwyLWNvbmZpZyBpcyBleGVjdXRhYmxlLAotLWRubCB0ZXN0IHZlcnNpb24gYW5kIGluaXQgb3VyIHZhcmlhYmxlcwotLWRubAotLQotLWlmICR7WE1MX0NPTkZJR30gLS1saWJzIHByaW50ID4gL2Rldi9udWxsIDI+JjEKLS10aGVuCi0tCVhNTFZFUlM9YCRYTUxfQ09ORklHIC0tdmVyc2lvbmAKLS0JaWYgdGVzdCBWRVJTSU9OX1RPX05VTUJFUihlY2hvICRYTUxWRVJTKSAtZ2UgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAkTElCWE1MX1JFUVVJUkVEX1ZFUlNJT04pCi0tCXRoZW4KLS0JCUFDX01TR19SRVNVTFQoJFhNTFZFUlMgZm91bmQpCi0tCWVsc2UKLS0JCUFDX01TR19FUlJPUihWZXJzaW9uICRYTUxWRVJTIGZvdW5kLiBZb3UgbmVlZCBhdCBsZWFzdCBsaWJ4bWwyICRMSUJYTUxfUkVRVUlSRURfVkVSU0lPTiBmb3IgdGhpcyB2ZXJzaW9uIG9mIGxpYnhzbHQpCi0tCWZpCi0tCUxJQlhNTF9MSUJTPSIkTElCWE1MX0xJQlMgYCRYTUxfQ09ORklHIC0tbGlic2AiCi0tCWlmIHRlc3QgIngkTElCWE1MX1NSQyIgPSAieCI7IHRoZW4KLS0JCUxJQlhNTF9DRkxBR1M9IiRMSUJYTUxfQ0ZMQUdTIGAkWE1MX0NPTkZJRyAtLWNmbGFnc2AiCi0tCWZpCi0tZWxzZQotLQlBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYnhtbDIgYW55d2hlcmUsIGNoZWNrIGZ0cDovL3htbHNvZnQub3JnLy5dKQotLWZpCi0tCi0rUEtHX0NIRUNLX01PRFVMRVMoTElCWE1MLCBbbGlieG1sLTIuMCA+PSAkTElCWE1MX1JFUVVJUkVEX1ZFUlNJT05dLCwKLSsgICAgW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbGlieG1sLTIuMCA+PSAkTElCWE1MX1JFUVVJUkVEX1ZFUlNJT04gYW55d2hlcmUsIGNoZWNrIGZ0cDovL3htbHNvZnQub3JnLy5dKV0KLSspCi0gCi0gQUNfU1VCU1QoQ0ZMQUdTKQotIEFDX1NVQlNUKENQUEZMQUdTKQotQEAgLTYwMiw3ICs1NTYsNyBAQCBmaQotIAotIGlmIHRlc3QgIiR3aXRoX3BsdWdpbnMiID0gInllcyIgOyB0aGVuCi0gICBBQ19NU0dfQ0hFQ0tJTkcoW2xpYnhtbDIgbW9kdWxlIHN1cHBvcnRdKQotLSAgV0lUSF9NT0RVTEVTPSJgJFhNTF9DT05GSUcgLS1tb2R1bGVzYCIKLSsgIFdJVEhfTU9EVUxFUz0iYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9bW9kdWxlcyBsaWJ4bWwtMi4wYCIKLSAgIGlmIHRlc3QgIiR7V0lUSF9NT0RVTEVTfSIgPSAiMSI7IHRoZW4KLSAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICBlbHNlCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvcGtnY29uZmlnX2ZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvcGtnY29uZmlnX2ZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZhODAxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZ19maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiBsaWJ4c2x0LTEuMS4yNy9saWJleHNsdC5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnhzbHQtMS4xLjI3Lm9yaWcvbGliZXhzbHQucGMuaW4KLSsrKyBsaWJ4c2x0LTEuMS4yNy9saWJleHNsdC5wYy5pbgotQEAgLTgsNSArOCw1IEBAIE5hbWU6IGxpYmV4c2x0Ci0gVmVyc2lvbjogQExJQkVYU0xUX1ZFUlNJT05ACi0gRGVzY3JpcHRpb246IEVYU0xUIEV4dGVuc2lvbiBsaWJyYXJ5Ci0gUmVxdWlyZXM6IGxpYnhtbC0yLjAKLS1MaWJzOiBARVhTTFRfTElCRElSQCBARVhTTFRfTElCU0AKLStMaWJzOiAtbGV4c2x0IEBFWFNMVF9MSUJESVJAIEBFWFNMVF9MSUJTQAotIENmbGFnczogQEVYU0xUX0lOQ0xVREVESVJACi1JbmRleDogbGlieHNsdC0xLjEuMjcvbGlieHNsdC5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnhzbHQtMS4xLjI3Lm9yaWcvbGlieHNsdC5wYy5pbgotKysrIGxpYnhzbHQtMS4xLjI3L2xpYnhzbHQucGMuaW4KLUBAIC04LDUgKzgsNSBAQCBOYW1lOiBsaWJ4c2x0Ci0gVmVyc2lvbjogQFZFUlNJT05ACi0gRGVzY3JpcHRpb246IFhTTFQgbGlicmFyeSB2ZXJzaW9uIDIuCi0gUmVxdWlyZXM6IGxpYnhtbC0yLjAKLS1MaWJzOiBAWFNMVF9MSUJESVJAIEBYU0xUX0xJQlNAIEBFWFRSQV9MSUJTQAotK0xpYnM6IC1seHNsdCBAWFNMVF9MSUJESVJAIEBYU0xUX0xJQlNAIEBFWFRSQV9MSUJTQAotIENmbGFnczogQFhTTFRfSU5DTFVERURJUkAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMTFiYzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIFhTTFQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly94bWxzb2Z0Lm9yZy9YU0xULyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9MGNkOWEwN2FmYmViMjQwMjZjOWIwM2FlY2ZlYmE0NTgiCi0KLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAibGlieG1sMiIKLQotU1JDX1VSSSA9ICJodHRwOi8veG1sc29mdC5vcmcvc291cmNlcy9saWJ4c2x0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWdfZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1nY3J5cHQtYW5kLWxpYnhtbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItaW50ZWdlci1vdmVyZmxvdy1pbi14c2x0QWRkVGV4dFN0cmluZy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImExMjlkM2M0NGMwMjJkZTNiOWRjZjZkNmYyODhkNzJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1OTc2ZTM4NTc4MzdlNzYxN2IyOWYyMjQ5ZWJiNWVlYWMzNGUyNDkyMDhkMzFmMWZiZjdhNmJhN2E0MDkwY2UiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYnhzbHQtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJ4c2x0LSR7UFZ9IgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3hzbHQtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlCi0KLSMgV2UgZG9uJ3QgREVQRU5EIG9uIGJpbnV0aWxzIGZvciBhbnNpZGVjbC5oIHNvIGVuc3VyZSB3ZSBkb24ndCB1c2UgdGhlIGhlYWRlcgotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXNlZCAtaSAtZSAncy9hbnNpZGVjbC5oLy8nICR7U30vY29uZmlndXJlLmluCi0KLQkjIFRoZSB0aW1lc3RhbXBzIGluIHRoZSAxLjEuMjggdGFyYmFsbCBhcmUgbWVzc2VkIHVwIGNhdXNpbmcgdGhpcyBmaWxlIHRvCi0JIyBhcHBlYXIgb3V0IG9mIGRhdGUuICBUb3VjaCBpdCBzbyB0aGF0IHdlIGRvbid0IHRyeSB0byByZWdlbmVyYXRlIGl0LgotCXRvdWNoICR7U30vZG9jL3hzbHRwcm9jLjEKLX0KLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1weXRob24gLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1tZW0tZGVidWcgLS13aXRob3V0LWNyeXB0byIKLSMgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyByZWNpcGUgaGFkICR7UE59LXV0aWxzCi1SUFJPVklERVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKLVJDT05GTElDVFNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKLVJSRVBMQUNFU18ke1BOfS1iaW4gKz0gIiR7UE59LXV0aWxzIgotCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0veHNsdHByb2MgWE1MX0NBVEFMT0dfRklMRVM9JHtzeXNjb25mZGlyfS94bWwvY2F0YWxvZy54bWwKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJ4c2x0LXBsdWdpbnMiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94c2x0Q29uZi5zaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTAzZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzIuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJHTk9NRSBYU0xUIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8veG1sc29mdC5vcmcvWFNMVC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTBjZDlhMDdhZmJlYjI0MDI2YzliMDNhZWNmZWJhNDU4IgorCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImxpYnhtbDIiCisKK1NSQ19VUkkgPSAiaHR0cDovL3htbHNvZnQub3JnL3NvdXJjZXMvbGlieHNsdC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMWZjNzJmOThlOThiZjQ0NDNmMTY1MTE2NWYzYWExNDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTI2ZWNkMGFiYWY0YTc3ODkwNDE2MjJjMzk1MGMwZTdmMmM0Yzg4MzU0NzE1MTVmZDc3ZWVjNjg0YTM1NTQ2MCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGlieHNsdC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworUyA9ICIke1dPUktESVJ9L2xpYnhzbHQtJHtQVn0iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0veHNsdC1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UKKworIyBXZSBkb24ndCBERVBFTkQgb24gYmludXRpbHMgZm9yIGFuc2lkZWNsLmggc28gZW5zdXJlIHdlIGRvbid0IHVzZSB0aGUgaGVhZGVyCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJc2VkIC1pIC1lICdzL2Fuc2lkZWNsLmgvLycgJHtTfS9jb25maWd1cmUuYWMKKworCSMgVGhlIHRpbWVzdGFtcHMgaW4gdGhlIDEuMS4yOCB0YXJiYWxsIGFyZSBtZXNzZWQgdXAgY2F1c2luZyB0aGlzIGZpbGUgdG8KKwkjIGFwcGVhciBvdXQgb2YgZGF0ZS4gIFRvdWNoIGl0IHNvIHRoYXQgd2UgZG9uJ3QgdHJ5IHRvIHJlZ2VuZXJhdGUgaXQuCisJdG91Y2ggJHtTfS9kb2MveHNsdHByb2MuMQorfQorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXB5dGhvbiAtLXdpdGhvdXQtZGVidWcgLS13aXRob3V0LW1lbS1kZWJ1ZyAtLXdpdGhvdXQtY3J5cHRvIgorIyBvbGRlciB2ZXJzaW9ucyBvZiB0aGlzIHJlY2lwZSBoYWQgJHtQTn0tdXRpbHMKK1JQUk9WSURFU18ke1BOfS1iaW4gKz0gIiR7UE59LXV0aWxzIgorUkNPTkZMSUNUU18ke1BOfS1iaW4gKz0gIiR7UE59LXV0aWxzIgorUlJFUExBQ0VTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCisKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS94c2x0cHJvYyBYTUxfQ0FUQUxPR19GSUxFUz0ke3N5c2NvbmZkaXJ9L3htbC9jYXRhbG9nLnhtbAorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYnhzbHQtcGx1Z2lucyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3hzbHRDb25mLnNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6by9hY2luY2x1ZGUubTQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6by9hY2luY2x1ZGUubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0ZDJjY2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vYWNpbmNsdWRlLm00CisrKyAvZGV2L251bGwKQEAgLTEsMzU4ICswLDAgQEAKLQotQUNfREVGVU4oW21meF9BQ0NfQ0hFQ0tfRU5ESUFOXSwgWwotQUNfQ19CSUdFTkRJQU4oW0FDX0RFRklORShBQ0NfQUJJX0JJR19FTkRJQU4sMSxbRGVmaW5lIHRvIDEgaWYgeW91ciBtYWNoaW5lIGlzIGJpZyBlbmRpYW4uXSldLFtBQ19ERUZJTkUoQUNDX0FCSV9MSVRUTEVfRU5ESUFOLDEsW0RlZmluZSB0byAxIGlmIHlvdXIgbWFjaGluZSBpcyBsaXR0bGUgZW5kaWFuLl0pXSkKLV0pIwotCi1BQ19ERUZVTihbbWZ4X0FDQ19DSEVDS19IRUFERVJTXSwgWwotQUNfSEVBREVSX1RJTUUKLUFDX0NIRUNLX0hFQURFUlMoW2Fzc2VydC5oIGN0eXBlLmggZGlyZW50LmggZXJybm8uaCBmY250bC5oIGZsb2F0LmggbGltaXRzLmggbWFsbG9jLmggbWVtb3J5Lmggc2V0am1wLmggc2lnbmFsLmggc3RkYXJnLmggc3RkZGVmLmggc3RkaW50Lmggc3RkaW8uaCBzdGRsaWIuaCBzdHJpbmcuaCBzdHJpbmdzLmggdGltZS5oIHVuaXN0ZC5oIHV0aW1lLmggc3lzL3N0YXQuaCBzeXMvdGltZS5oIHN5cy90eXBlcy5oIHN5cy93YWl0LmhdKQotXSkjCi0KLUFDX0RFRlVOKFttZnhfQUNDX0NIRUNLX0ZVTkNTXSwgWwotQUNfQ0hFQ0tfRlVOQ1MoYWNjZXNzIGFsbG9jYSBhdGV4aXQgYXRvaSBhdG9sIGNobW9kIGNob3duIGN0aW1lIGRpZmZ0aW1lIGZzdGF0IGdldHRpbWVvZmRheSBnbXRpbWUgbG9jYWx0aW1lIGxvbmdqbXAgbHN0YXQgbWVtY21wIG1lbWNweSBtZW1tb3ZlIG1lbXNldCBta3RpbWUgcXNvcnQgcmFpc2Ugc2V0am1wIHNpZ25hbCBzbnByaW50ZiBzdHJjYXNlY21wIHN0cmNociBzdHJkdXAgc3RyZXJyb3Igc3RyZnRpbWUgc3RyaWNtcCBzdHJuY2FzZWNtcCBzdHJuaWNtcCBzdHJyY2hyIHN0cnN0ciB0aW1lIHVtYXNrIHV0aW1lIHZzbnByaW50ZikKLV0pIwotCi0KLUFDX0RFRlVOKFttZnhfQUNDX0NIRUNLX1NJWkVPRl0sIFsKLUFDX0NIRUNLX1NJWkVPRihzaG9ydCkKLUFDX0NIRUNLX1NJWkVPRihpbnQpCi1BQ19DSEVDS19TSVpFT0YobG9uZykKLQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcgbG9uZykKLUFDX0NIRUNLX1NJWkVPRihfX2ludDE2KQotQUNfQ0hFQ0tfU0laRU9GKF9faW50MzIpCi1BQ19DSEVDS19TSVpFT0YoX19pbnQ2NCkKLQotQUNfQ0hFQ0tfU0laRU9GKHZvaWQgKikKLUFDX0NIRUNLX1NJWkVPRihzaXplX3QpCi1BQ19DSEVDS19TSVpFT0YocHRyZGlmZl90KQotXSkjCi0KLQotIyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgLy8gQ2hlY2sgZm9yIEFDQ19jb25mb3JtYW5jZQotIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLUFDX0RFRlVOKFttZnhfQUNDX0FDQ0NIS10sIFsKLW1meF90bXA9JDEKLW1meF9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwotZG5sIGluIE1ha2VmaWxlLmluICQoSU5DTFVERVMpIHdpbGwgYmUgYmVmb3JlICQoQ1BQRkxBR1MpLCBzbyB3ZSBtaW1pYyB0aGlzIGhlcmUKLXRlc3QgIlgkbWZ4X3RtcCIgPSAiWCIgfHwgQ1BQRkxBR1M9IiRtZnhfdG1wICRDUFBGTEFHUyIKLQotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHlvdXIgY29tcGlsZXIgcGFzc2VzIHRoZSBBQ0MgY29uZm9ybWFuY2UgdGVzdF0pCi0KLUFDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfUFJPR1JBTSgKLVtbI2RlZmluZSBBQ0NfQ09ORklHX05PX0hFQURFUiAxCi0jaW5jbHVkZSAiYWNjL2FjYy5oIgotI2luY2x1ZGUgImFjYy9hY2NfaW5jZC5oIgotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLSNkZWZpbmUgQUNDQ0hLX0FTU0VSVChleHByKSAgICAgQUNDX0NPTVBJTEVfVElNRV9BU1NFUlRfSEVBREVSKGV4cHIpCi0jaW5jbHVkZSAiYWNjL2FjY19jaGsuY2giCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotc3RhdGljIHZvaWQgdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCh2b2lkKSB7Ci0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIEFDQ19DT01QSUxFX1RJTUVfQVNTRVJUKGV4cHIpCi0jaW5jbHVkZSAiYWNjL2FjY19jaGsuY2giCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotfQotI3VuZGVmIE5ERUJVRwotI2luY2x1ZGUgPGFzc2VydC5oPgotc3RhdGljIGludCB0ZXN0X2FjY19ydW5fdGltZV9hc3NlcnQoaW50IHIpIHsKLSNkZWZpbmUgQUNDQ0hLX0FTU0VSVChleHByKSAgICAgYXNzZXJ0KGV4cHIpOwotI2luY2x1ZGUgImFjYy9hY2NfY2hrLmNoIgotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLXJldHVybiByOwotfQotXV0sIFtbCi10ZXN0X2FjY19jb21waWxlX3RpbWVfYXNzZXJ0KCk7Ci1pZiAodGVzdF9hY2NfcnVuX3RpbWVfYXNzZXJ0KDEpICE9IDEpIHJldHVybiAxOwotXV0KLSldKQotCi1tZnhfdG1wPUZBSUxFRAotX0FDX0NPTVBJTEVfSUZFTFNFKFtdLCBbbWZ4X3RtcD15ZXNdKQotcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfb2JqZXh0Ci0KLUNQUEZMQUdTPSRtZnhfc2F2ZV9DUFBGTEFHUwotCi1BQ19NU0dfUkVTVUxUKFskbWZ4X3RtcF0pCi1jYXNlIHgkbWZ4X3RtcCBpbgotICB4cGFzc2VkIHwgeHllcykgOzsKLSAgKikKLSAgICBBQ19NU0dfTk9USUNFKFtdKQotICAgIEFDX01TR19OT1RJQ0UoW1lvdXIgY29tcGlsZXIgZmFpbGVkIHRoZSBBQ0MgY29uZm9ybWFuY2UgdGVzdCAtIGZvciBkZXRhaWxzIHNlZSBdKQotICAgIEFDX01TR19OT1RJQ0UoW2Bjb25maWcubG9nJy4gUGxlYXNlIGNoZWNrIHRoYXQgbG9nIGZpbGUgYW5kIGNvbnNpZGVyIHNlbmRpbmddKQotICAgIEFDX01TR19OT1RJQ0UoW2EgcGF0Y2ggb3IgYnVnLXJlcG9ydCB0byA8JHtQQUNLQUdFX0JVR1JFUE9SVH0+Ll0pCi0gICAgQUNfTVNHX05PVElDRShbVGhhbmtzIGZvciB5b3VyIHN1cHBvcnQuXSkKLSAgICBBQ19NU0dfTk9USUNFKFtdKQotICAgIEFDX01TR19FUlJPUihbQUNDIGNvbmZvcm1hbmNlIHRlc3QgZmFpbGVkLiBTdG9wLl0pCi1kbmwgICAgQVNfRVhJVAotICAgIDs7Ci1lc2FjCi1dKSMgbWZ4X0FDQ19BQ0NDSEsKLQotCi0jIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAvLyBDaGVjayBmb3IgQUNDX2NvbmZvcm1hbmNlCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotQUNfREVGVU4oW21meF9NSU5JQUNDX0FDQ0NIS10sIFsKLW1meF90bXA9JDEKLW1meF9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwotZG5sIGluIE1ha2VmaWxlLmluICQoSU5DTFVERVMpIHdpbGwgYmUgYmVmb3JlICQoQ1BQRkxBR1MpLCBzbyB3ZSBtaW1pYyB0aGlzIGhlcmUKLXRlc3QgIlgkbWZ4X3RtcCIgPSAiWCIgfHwgQ1BQRkxBR1M9IiRtZnhfdG1wICRDUFBGTEFHUyIKLQotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHlvdXIgY29tcGlsZXIgcGFzc2VzIHRoZSBBQ0MgY29uZm9ybWFuY2UgdGVzdF0pCi0KLUFDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfUFJPR1JBTSgKLVtbI2RlZmluZSBBQ0NfQ09ORklHX05PX0hFQURFUiAxCi0jZGVmaW5lIEFDQ19XQU5UX0FDQ19JTkNEX0ggMQotI2luY2x1ZGUgJDIKLQotI2RlZmluZSBBQ0NfV0FOVF9BQ0NfQ0hLX0NIIDEKLSN1bmRlZiBBQ0NDSEtfQVNTRVJUCi0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIEFDQ19DT01QSUxFX1RJTUVfQVNTRVJUX0hFQURFUihleHByKQotI2luY2x1ZGUgJDIKLQotI2RlZmluZSBBQ0NfV0FOVF9BQ0NfQ0hLX0NIIDEKLSN1bmRlZiBBQ0NDSEtfQVNTRVJUCi0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIEFDQ19DT01QSUxFX1RJTUVfQVNTRVJUKGV4cHIpCi1zdGF0aWMgdm9pZCB0ZXN0X2FjY19jb21waWxlX3RpbWVfYXNzZXJ0KHZvaWQpIHsKLSNpbmNsdWRlICQyCi19Ci0KLSN1bmRlZiBOREVCVUcKLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNkZWZpbmUgQUNDX1dBTlRfQUNDX0NIS19DSCAxCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICBhc3NlcnQoZXhwcik7Ci1zdGF0aWMgaW50IHRlc3RfYWNjX3J1bl90aW1lX2Fzc2VydChpbnQgcikgewotI2luY2x1ZGUgJDIKLXJldHVybiByOwotfQotXV0sIFtbCi10ZXN0X2FjY19jb21waWxlX3RpbWVfYXNzZXJ0KCk7Ci1pZiAodGVzdF9hY2NfcnVuX3RpbWVfYXNzZXJ0KDEpICE9IDEpIHJldHVybiAxOwotXV0KLSldKQotCi1tZnhfdG1wPUZBSUxFRAotX0FDX0NPTVBJTEVfSUZFTFNFKFtdLCBbbWZ4X3RtcD15ZXNdKQotcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfb2JqZXh0Ci0KLUNQUEZMQUdTPSRtZnhfc2F2ZV9DUFBGTEFHUwotCi1BQ19NU0dfUkVTVUxUKFskbWZ4X3RtcF0pCi1jYXNlIHgkbWZ4X3RtcCBpbgotICB4cGFzc2VkIHwgeHllcykgOzsKLSAgKikKLSAgICBBQ19NU0dfTk9USUNFKFtdKQotICAgIEFDX01TR19OT1RJQ0UoW1lvdXIgY29tcGlsZXIgZmFpbGVkIHRoZSBBQ0MgY29uZm9ybWFuY2UgdGVzdCAtIGZvciBkZXRhaWxzIHNlZSBdKQotICAgIEFDX01TR19OT1RJQ0UoW2Bjb25maWcubG9nJy4gUGxlYXNlIGNoZWNrIHRoYXQgbG9nIGZpbGUgYW5kIGNvbnNpZGVyIHNlbmRpbmddKQotICAgIEFDX01TR19OT1RJQ0UoW2EgcGF0Y2ggb3IgYnVnLXJlcG9ydCB0byA8JHtQQUNLQUdFX0JVR1JFUE9SVH0+Ll0pCi0gICAgQUNfTVNHX05PVElDRShbVGhhbmtzIGZvciB5b3VyIHN1cHBvcnQuXSkKLSAgICBBQ19NU0dfTk9USUNFKFtdKQotICAgIEFDX01TR19FUlJPUihbQUNDIGNvbmZvcm1hbmNlIHRlc3QgZmFpbGVkLiBTdG9wLl0pCi1kbmwgICAgQVNfRVhJVAotICAgIDs7Ci1lc2FjCi1dKSMgbWZ4X01JTklBQ0NfQUNDQ0hLCi0KLQotCi0jIHNlcmlhbCAxCi0KLUFDX0RFRlVOKFttZnhfUFJPR19DUFBGTEFHU10sIFsKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgQyBwcmVwcm9jZXNzb3IgbmVlZHMgc3BlY2lhbCBmbGFnc10pCi0KLUFDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfUFJPR1JBTSgKLVtbI2luY2x1ZGUgPGxpbWl0cy5oPgotI2lmICgzMjc2NyA+PSA0Mjk0OTY3Mjk1dWwpIHx8ICg2NTUzNXUgPj0gNDI5NDk2NzI5NXVsKQotIyAgaW5jbHVkZSAieW91ciBDIHByZXByb2Nlc3NvciBpcyBicm9rZW4gMSIKLSNlbGlmICgweGZmZmZ1ID09IDB4ZmZmZmZmZmZ1bCkKLSMgIGluY2x1ZGUgInlvdXIgQyBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIDIiCi0jZWxpZiAoMzI3NjcgPj0gVUxPTkdfTUFYKSB8fCAoNjU1MzV1ID49IFVMT05HX01BWCkKLSMgIGluY2x1ZGUgInlvdXIgQyBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIDMiCi0jZW5kaWYKLV1dLCBbWyBdXQotKV0pCi0KLW1meF9zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwotbWZ4X3RtcD1FUlJPUgotZm9yIG1meF9hcmcgaW4gIiIgLW5vLWNwcC1wcmVjb21wCi1kbwotICBDUFBGTEFHUz0iJG1meF9hcmcgJG1meF9zYXZlX0NQUEZMQUdTIgotICBfQUNfQ09NUElMRV9JRkVMU0UoW10sCi1bbWZ4X3RtcD0kbWZ4X2FyZwotYnJlYWtdKQotZG9uZQotQ1BQRkxBR1M9JG1meF9zYXZlX0NQUEZMQUdTCi1ybSAtZiBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQKLWNhc2UgeCRtZnhfdG1wIGluCi0gIHgpCi0gICAgQUNfTVNHX1JFU1VMVChbbm9uZSBuZWVkZWRdKSA7OwotICB4RVJST1IpCi0gICAgQUNfTVNHX1JFU1VMVChbRVJST1JdKQotICAgIEFDX01TR19FUlJPUihbeW91ciBDIHByZXByb2Nlc3NvciBpcyBicm9rZW4gLSBmb3IgZGV0YWlscyBzZWUgY29uZmlnLmxvZ10pCi0gICAgOzsKLSAgKikKLSAgICBBQ19NU0dfUkVTVUxUKFskbWZ4X3RtcF0pCi0gICAgQ1BQRkxBR1M9IiRtZnhfdG1wICRDUFBGTEFHUyIKLSAgICA7OwotZXNhYwotXSkjIG1meF9QUk9HX0NQUEZMQUdTCi0KLQotCi0jIHNlcmlhbCAzCi0KLUFDX0RFRlVOKFttZnhfQ0hFQ0tfSEVBREVSX1NBTkVfTElNSVRTX0hdLCBbCi1BQ19DQUNIRV9DSEVDSyhbd2hldGhlciBsaW1pdHMuaCBpcyBzYW5lXSwKLW1meF9jdl9oZWFkZXJfc2FuZV9saW1pdHNfaCwKLVtBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPGxpbWl0cy5oPgotI2lmICgzMjc2NyA+PSA0Mjk0OTY3Mjk1dWwpIHx8ICg2NTUzNXUgPj0gNDI5NDk2NzI5NXVsKQotIyAgaWYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19HTlVDX18pCi0jICAgIGVycm9yICJ5b3VyIHByZXByb2Nlc3NvciBpcyBicm9rZW4gLSB1c2UgY29tcGlsZXIgb3B0aW9uIC1uby1jcHAtcHJlY29tcCIKLSMgIGVsc2UKLSMgICAgaW5jbHVkZSAieW91ciBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIgotIyAgZW5kaWYKLSNlbmRpZgotI2RlZmluZSBNRlhfMHhmZmZmICAgICAgICAgIDB4ZmZmZgotI2RlZmluZSBNRlhfMHhmZmZmZmZmZkwgICAgIDQyOTQ5NjcyOTV1bAotI2lmICFkZWZpbmVkKENIQVJfQklUKSB8fCAoQ0hBUl9CSVQgIT0gOCkKLSMgIGluY2x1ZGUgImVycm9yIENIQVJfQklUIgotI2VuZGlmCi0jaWYgIWRlZmluZWQoVUNIQVJfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgVUNIQVJfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChVU0hSVF9NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVU0hSVF9NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKFVJTlRfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgVUlOVF9NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKFVMT05HX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVMT05HX01BWCAxIgotI2VuZGlmCi0jaWYgIWRlZmluZWQoU0hSVF9NQVgpCi0jICBpbmNsdWRlICJlcnJvciBTSFJUX01BWCAxIgotI2VuZGlmCi0jaWYgIWRlZmluZWQoSU5UX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIElOVF9NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKExPTkdfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgTE9OR19NQVggMSIKLSNlbmRpZgotI2lmIChVQ0hBUl9NQVggPCAxKQotIyAgaW5jbHVkZSAiZXJyb3IgVUNIQVJfTUFYIDIiCi0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYIDwgMSkKLSMgIGluY2x1ZGUgImVycm9yIFVTSFJUX01BWCAyIgotI2VuZGlmCi0jaWYgKFVJTlRfTUFYIDwgMSkKLSMgIGluY2x1ZGUgImVycm9yIFVJTlRfTUFYIDIiCi0jZW5kaWYKLSNpZiAoVUxPTkdfTUFYIDwgMSkKLSMgIGluY2x1ZGUgImVycm9yIFVMT05HX01BWCAyIgotI2VuZGlmCi0jaWYgKFVDSEFSX01BWCA8IDB4ZmYpCi0jICBpbmNsdWRlICJlcnJvciBVQ0hBUl9NQVggMyIKLSNlbmRpZgotI2lmIChVU0hSVF9NQVggPCBNRlhfMHhmZmZmKQotIyAgaW5jbHVkZSAiZXJyb3IgVVNIUlRfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVUlOVF9NQVggPCBNRlhfMHhmZmZmKQotIyAgaW5jbHVkZSAiZXJyb3IgVUlOVF9NQVggMyIKLSNlbmRpZgotI2lmIChVTE9OR19NQVggPCBNRlhfMHhmZmZmZmZmZkwpCi0jICBpbmNsdWRlICJlcnJvciBVTE9OR19NQVggMyIKLSNlbmRpZgotI2lmIChVU0hSVF9NQVggPiBVSU5UX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVTSFJUX01BWCB2cyBVSU5UX01BWCIKLSNlbmRpZgotI2lmIChVSU5UX01BWCA+IFVMT05HX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVJTlRfTUFYIHZzIFVMT05HX01BWCIKLSNlbmRpZgotXV0sIFtbCi0jaWYgKFVTSFJUX01BWCA9PSBNRlhfMHhmZmZmKQoteyB0eXBlZGVmIGNoYXIgYV9zaG9ydDJhWzEgLSAyICogIShzaXplb2Yoc2hvcnQpID09IDIpXTsgfQotI2VsaWYgKFVTSFJUX01BWCA+PSBNRlhfMHhmZmZmKQoteyB0eXBlZGVmIGNoYXIgYV9zaG9ydDJiWzEgLSAyICogIShzaXplb2Yoc2hvcnQpID4gMildOyB9Ci0jZW5kaWYKLSNpZiAoVUlOVF9NQVggPT0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfaW50MmFbMSAtIDIgKiAhKHNpemVvZihpbnQpID09IDIpXTsgfQotI2VsaWYgKFVJTlRfTUFYID49IE1GWF8weGZmZmYpCi17IHR5cGVkZWYgY2hhciBhX2ludDJiWzEgLSAyICogIShzaXplb2YoaW50KSA+IDIpXTsgfQotI2VuZGlmCi0jaWYgKFVMT05HX01BWCA9PSBNRlhfMHhmZmZmKQoteyB0eXBlZGVmIGNoYXIgYV9sb25nMmFbMSAtIDIgKiAhKHNpemVvZihsb25nKSA9PSAyKV07IH0KLSNlbGlmIChVTE9OR19NQVggPj0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfbG9uZzJiWzEgLSAyICogIShzaXplb2YobG9uZykgPiAyKV07IH0KLSNlbmRpZgotI2lmIChVU0hSVF9NQVggPT0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9zaG9ydDRhWzEgLSAyICogIShzaXplb2Yoc2hvcnQpID09IDQpXTsgfQotI2VsaWYgKFVTSFJUX01BWCA+PSBNRlhfMHhmZmZmZmZmZkwpCi17IHR5cGVkZWYgY2hhciBhX3Nob3J0NGJbMSAtIDIgKiAhKHNpemVvZihzaG9ydCkgPiA0KV07IH0KLSNlbmRpZgotI2lmIChVSU5UX01BWCA9PSBNRlhfMHhmZmZmZmZmZkwpCi17IHR5cGVkZWYgY2hhciBhX2ludDRhWzEgLSAyICogIShzaXplb2YoaW50KSA9PSA0KV07IH0KLSNlbGlmIChVSU5UX01BWCA+PSBNRlhfMHhmZmZmZmZmZkwpCi17IHR5cGVkZWYgY2hhciBhX2ludDRiWzEgLSAyICogIShzaXplb2YoaW50KSA+IDQpXTsgfQotI2VuZGlmCi0jaWYgKFVMT05HX01BWCA9PSBNRlhfMHhmZmZmZmZmZkwpCi17IHR5cGVkZWYgY2hhciBhX2xvbmc0YVsxIC0gMiAqICEoc2l6ZW9mKGxvbmcpID09IDQpXTsgfQotI2VsaWYgKFVMT05HX01BWCA+PSBNRlhfMHhmZmZmZmZmZkwpCi17IHR5cGVkZWYgY2hhciBhX2xvbmc0YlsxIC0gMiAqICEoc2l6ZW9mKGxvbmcpID4gNCldOyB9Ci0jZW5kaWYKLV1dKV0sCi1bbWZ4X2N2X2hlYWRlcl9zYW5lX2xpbWl0c19oPXllc10sCi1bbWZ4X2N2X2hlYWRlcl9zYW5lX2xpbWl0c19oPW5vXSldKQotXSkKLQotIyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgLy8gc3RhbmRhcmQKLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1BQ19ERUZVTihbbWZ4X0xaT19DSEVDS19FTkRJQU5dLCBbCi1BQ19DX0JJR0VORElBTihbQUNfREVGSU5FKExaT19BQklfQklHX0VORElBTiwxLFtEZWZpbmUgdG8gMSBpZiB5b3VyIG1hY2hpbmUgaXMgYmlnIGVuZGlhbi5dKV0sW0FDX0RFRklORShMWk9fQUJJX0xJVFRMRV9FTkRJQU4sMSxbRGVmaW5lIHRvIDEgaWYgeW91ciBtYWNoaW5lIGlzIGxpdHRsZSBlbmRpYW4uXSldKQotXSkjCi0KLQotIyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgLy8KLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1kbmwgbW9yZSB0eXBlcyB3aGljaCBhcmUgbm90IHlldCBjb3ZlcmVkIGJ5IEFDQwotCi1BQ19ERUZVTihbbWZ4X0NIRUNLX1NJWkVPRl0sIFsKLUFDX0NIRUNLX1NJWkVPRihfX2ludDMyKQotQUNfQ0hFQ0tfU0laRU9GKGludG1heF90KQotQUNfQ0hFQ0tfU0laRU9GKHVpbnRtYXhfdCkKLUFDX0NIRUNLX1NJWkVPRihpbnRwdHJfdCkKLUFDX0NIRUNLX1NJWkVPRih1aW50cHRyX3QpCi0KLUFDX0NIRUNLX1NJWkVPRihmbG9hdCkKLUFDX0NIRUNLX1NJWkVPRihkb3VibGUpCi1BQ19DSEVDS19TSVpFT0YobG9uZyBkb3VibGUpCi0KLUFDX0NIRUNLX1NJWkVPRihkZXZfdCkKLUFDX0NIRUNLX1NJWkVPRihmcG9zX3QpCi1BQ19DSEVDS19TSVpFT0YobW9kZV90KQotQUNfQ0hFQ0tfU0laRU9GKG9mZl90KQotQUNfQ0hFQ0tfU0laRU9GKHNzaXplX3QpCi1BQ19DSEVDS19TSVpFT0YodGltZV90KQotXSkjCi0KLQotCi1BQ19ERUZVTihbbWZ4X0NIRUNLX0xJQl9XSU5NTV0sIFsKLWlmIHRlc3QgIlgkR0NDIiA9IFh5ZXM7IHRoZW4KLWNhc2UgJGhvc3Rfb3MgaW4KLWN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSAgICAgdGVzdCAiWCRMSUJTIiAhPSAiWCIgJiYgTElCUz0iJExJQlMgIgotICAgICBMSUJTPSIke0xJQlN9LWx3aW5tbSIgOzsKLSopCi0gICAgIDs7Ci1lc2FjCi1maQotXSkjCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiCmluZGV4IDQ5MGQyMzAuLjhlZWZlYzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4xMC5iYgpAQCAtOCw3ICs4LDYgQEAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvL2Rvd25sb2FkL2x6by0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbWVtY3B5LWluc3RlYWQtb2YtcmVpbnZlbnRpbmctaXQucGF0Y2ggXAogCSAgIGZpbGU6Ly8wMDAxLUFkZC1wa2djb25maWdkaXItdG8tc29sdmUtdGhlLXVuZGVmaW5lLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICAiCiAKQEAgLTE5LDEwICsxOCw2IEBACiAKIEVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQiCiAKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LwotfQotCiBkb19pbnN0YWxsX3B0ZXN0KCkgewogCXQ9JHtEfSR7UFRFU1RfUEFUSH0KIAljcCAke1N9L3V0aWwvY2hlY2suc2ggJHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmM2Y5MTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVNVTU1BUlkgPSAiQyBsaWJyYXJ5IGZvciBtdWx0aXBsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgY29tcHV0YXRpb25zIHdpdGggZXhhY3Qgcm91bmRpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnLyIKLUxJQ0VOU0UgPSAiTEdQTHYzKyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiCmluZGV4IDJkNTljNGEuLmE3OGMwYmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl8zLjEuNS5iYgpAQCAtMSw2ICsxLDEwIEBACi1yZXF1aXJlIG1wZnIuaW5jCitTVU1NQVJZID0gIkMgbGlicmFyeSBmb3IgbXVsdGlwbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGNvbXB1dGF0aW9ucyB3aXRoIGV4YWN0IHJvdW5kaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy8iCitMSUNFTlNFID0gIkxHUEx2MysiCitTRUNUSU9OID0gImRldmVsIgogCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgoraW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCiAJCSAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IgogREVQRU5EUyA9ICJnbXAiCkBAIC0xMyw2ICsxNyw0IEBACiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnL21wZnItY3VycmVudC8iCiAKLVMgPSAiJHtXT1JLRElSfS9tcGZyLSR7UFZ9IgotCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uL3BrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZW9uL25lb24vcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzlkYmE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZW9uL25lb24vcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0tLS0KLSBuZW9uLnBjLmluIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi0tLS0gbmVvbi0wLjMwLjEub3JpZy9uZW9uLnBjLmluCi0rKysgbmVvbi0wLjMwLjEvbmVvbi5wYy5pbgotQEAgLTcsNSArNyw1IEBAIE5hbWU6IG5lb24KLSBEZXNjcmlwdGlvbjogSFRUUC9XZWJEQVYgY2xpZW50IGxpYnJhcnkKLSBWZXJzaW9uOiBATkVPTl9WRVJTSU9OQAotIExpYnM6IC1MJHtsaWJkaXJ9IC1sbmVvbiBATkVPTl9QQ19MSUJTQAotLUxpYnMucHJpdmF0ZTogQE5FT05fTElCU0AKLStMaWJzLnByaXZhdGU6IC1MJHtsaWJkaXJ9IC1seiAtbGdjcnlwdCAtbGdwZy1lcnJvciAtbGV4cGF0IC1sZ251dGxzCi0gQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vbmVvbiBATkVPTl9DRkxBR1NACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZW9uL25lb25fMC4zMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzkyYzU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZW9uL25lb25fMC4zMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBIVFRQIGFuZCBXZWJEQVYgY2xpZW50IGxpYnJhcnkgd2l0aCBhIEMgaW50ZXJmYWNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJkYXYub3JnL25lb24vIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL0NPUFlJTkcuTElCO21kNT1mMzBhOTcxNmVmMzc2MmUzNDY3YTJmNjJiZjc5MGYwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmVfdXRpbHMuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT0yY2FjYTYwOTUzOGVkZGFhNmY2YWRmMTIwYTIxODAzNyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LndlYmRhdi5vcmcvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMjhkNzdiZjE0MDMyZDdmNTA0NmIzOTMwNzA0ZWY0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjBiZDhjZGVjMzI5YjQ4ZjUzYTZmMDAxOTljOTJkNWJhNDBiMGYwMTViMTUzNzE4ZDFiMTVkM2Q5NjdmYmNhIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UgcGtnY29uZmlnCi0KLSMgRW5hYmxlIGdudXRscyBvciBvcGVuc3NsLCBub3QgYm90aAotUEFDS0FHRUNPTkZJRyA/PSAiZXhwYXQgZ251dGxzIGxpYnByb3h5IHdlYmRhdiB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiZXhwYXQgZ251dGxzIHdlYmRhdiB6bGliIgotCi1QQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0IgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1zc2w9Z251dGxzLCxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLS13aXRoLWdzc2FwaSwtLXdpdGhvdXQtZ3NzYXBpLGtyYjUiCi1QQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItLXdpdGgtbGlicHJveHksLS13aXRob3V0LWxpYnByb3h5LGxpYnByb3h5IgotUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtc3NsPW9wZW5zc2wsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3dlYmRhdl0gPSAiLS1lbmFibGUtd2ViZGF2LC0tZGlzYWJsZS13ZWJkYXYsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXNoYXJlZCIKLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0Jb2VfcnVubWFrZSAtQyB0ZXN0Ci19Ci0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbmVvbi1jb25maWciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9maWxlcy9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9maWxlcy9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2RhNzc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvQWRkLXRhcmdldC10by1vbmx5LWJ1aWxkLXRlc3RzLW5vdC1ydW4tdGhlbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNDZlZGYwMWNjOThkYjlmOWZlZWM5ODQ4OTc4MzZkZmRkMjZiZGM4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDEyIEF1ZyAyMDE1IDIzOjI3OjI3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCB0YXJnZXQgdG8gb25seSBidWlsZCB0ZXN0cyAobm90IHJ1biB0aGVtKQotCi1Ob3Qgc2VuZGluZyB1cHN0cmVhbSBhcyB0aGlzIGlzIG9ubHkgYSBzdGFydCBvZiBhIHNvbHV0aW9uIHRvCi1pbnN0YWxsYWJsZSB0ZXN0czogSXQncyB1c2VmdWwgZm9yIHVzIGFscmVhZHkgYXMgaXMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGEgY29tcGxldGUgc29sdXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiAgICAgICAgICAgfCAzICsrKwotIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbiB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMDhlZmI3ZC4uNzkwOTM0MiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTU1LDYgKzU1LDkgQEAgY2xlYW4gZGlzdGNsZWFuIG1vc3RseWNsZWFuIG1haW50YWluZXItY2xlYW4gdGFnczoKLSAJICBlY2hvICJNYWtpbmcgJEAgaW4gJCRkIiA7IChjZCAkJGQgJiYgJChNQUtFKSAkQCk7IGRvbmUKLSAJJChNQUtFKSAkQC1oZXJlCi0gCi0rYnVpbGR0ZXN0OgotKwllY2hvICJNYWtpbmcgJEAgaW4gdGVzdHN1aXRlIiA7IChjZCB0ZXN0c3VpdGUgJiYgJChNQUtFKSAkQCkKLSsKLSBjaGVjay1oZXJlOgotIAl0cnVlCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL01ha2VmaWxlLmluIGIvdGVzdHN1aXRlL01ha2VmaWxlLmluCi1pbmRleCA2YmMxOTA3Li5iYjY1YmYwIDEwMDY0NAotLS0tIGEvdGVzdHN1aXRlL01ha2VmaWxlLmluCi0rKysgYi90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KLUBAIC0xMTYsNiArMTE2LDggQEAgJChUQVJHRVRTKSAkKEVYVFJBX1RBUkdFVFMpOiB0ZXN0dXRpbHMuJChPQkpFWFQpIC4uL25ldHRsZS1pbnRlcm5hbC4kKE9CSkVYVCkgXAotICMgZGF0YS4KLSBWQUxHUklORCA9IHZhbGdyaW5kIC0tZXJyb3ItZXhpdGNvZGU9MSAtLWxlYWstY2hlY2s9ZnVsbCAtLXNob3ctcmVhY2hhYmxlPXllcyBASUZfQVNNQCAtLXBhcnRpYWwtbG9hZHMtb2s9eWVzCi0gCi0rYnVpbGR0ZXN0OiAkKFRTX0FMTCkKLSsKLSAjIFRoZSBQQVRIIHVwZGF0ZSBpcyBmb3IgbG9jYXRpbmcgZGxscyBvbiB3Km5kb3dzLgotIGNoZWNrOiAkKFRTX0FMTCkKLSAJTERfTElCUkFSWV9QQVRIPS4uLy5saWIgUEFUSD0iLi4vLmxpYjokJFBBVEgiIHNyY2Rpcj0iJChzcmNkaXIpIiBcCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuMy9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzIxNmJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuMy9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGZmZWU2YjVmNjIwNGEwMjEwZjcxNzk2OGVjNmNlNTE0ZDcwYWNjYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIYWlxaW5nIEJhaSA8SGFpcWluZy5CYWlAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgOSBEZWMgMjAxNiAxNToyMzoxNyArMDgwMAotU3ViamVjdDogW1BBVENIXSBuZXR0bGU6IGNoZWNrIGhlYWRlciBmaWxlcyBvZiBvcGVuc3NsIG9ubHkgaWYKLSAnZW5hYmxlX29wZW5zc2w9eWVzJy4KLQotVGhlIG9yaWdpbmFsIGNvbmZpZ3VyZSBzY3JpcHQgY2hlY2tzIG9wZW5zc2wgaGVhZGVyIGZpbGVzIHRvIGdlbmVyYXRlCi1jb25maWcuaCBldmVuIGlmICdlbmFibGVfb3BlbnNzbCcgaXMgbm90IHNldCB0byB5ZXMsIHRoaXMgbWFkZSBpbmNvbnNpc3RlbnQKLWJ1aWxkaW5nIGZvciBuZXR0bGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA4ICsrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGVhZDUyYy4uOTgyNzYwZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTg1LDkgKzE4NSwxMSBAQCBBQ19IRUFERVJfVElNRQotIEFDX0NIRUNLX1NJWkVPRihsb25nKQotIEFDX0NIRUNLX1NJWkVPRihzaXplX3QpCi0gCi0tQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9ibG93ZmlzaC5oIG9wZW5zc2wvZGVzLmggb3BlbnNzbC9jYXN0Lmggb3BlbnNzbC9hZXMuaCBvcGVuc3NsL2VjZHNhLmhdLCwKLS1bZW5hYmxlX29wZW5zc2w9bm8KLS0gYnJlYWtdKQotK2lmIHRlc3QgIngkZW5hYmxlX29wZW5zc2wiID0gInh5ZXMiOyB0aGVuCi0rICBBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2Jsb3dmaXNoLmggb3BlbnNzbC9kZXMuaCBvcGVuc3NsL2Nhc3QuaCBvcGVuc3NsL2Flcy5oIG9wZW5zc2wvZWNkc2EuaF0sLAotKyAgW2VuYWJsZV9vcGVuc3NsPW5vCi0rICBicmVha10pCi0rZmkKLSAKLSBBQ19DSEVDS19IRUFERVJTKFt2YWxncmluZC9tZW1jaGVjay5oXSkKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjQvQWRkLXRhcmdldC10by1vbmx5LWJ1aWxkLXRlc3RzLW5vdC1ydW4tdGhlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDA3MDYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorQWRkIHRhcmdldCB0byBvbmx5IGJ1aWxkIHRlc3RzIChub3QgcnVuIHRoZW0pCisKK05vdCBzZW5kaW5nIHVwc3RyZWFtIGFzIHRoaXMgaXMgb25seSBhIHN0YXJ0IG9mIGEgc29sdXRpb24gdG8KK2luc3RhbGxhYmxlIHRlc3RzOiBJdCdzIHVzZWZ1bCBmb3IgdXMgYWxyZWFkeSBhcyBpcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtub3QgYSBjb21wbGV0ZSBzb2x1dGlvbl0KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1JlZmFjdG9yZWQgZm9yIDMuNAorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBuZXR0bGUtMy40L01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0dGxlLTMuNC5vcmlnL01ha2VmaWxlLmluCisrKysgbmV0dGxlLTMuNC9NYWtlZmlsZS5pbgorQEAgLTU1LDYgKzU1LDkgQEAgY2xlYW4gZGlzdGNsZWFuIG1vc3RseWNsZWFuIG1haW50YWluZXItYworIAkgIGVjaG8gIk1ha2luZyAkQCBpbiAkJGQiIDsgKGNkICQkZCAmJiAkKE1BS0UpICRAKTsgZG9uZQorIAkkKE1BS0UpICRALWhlcmUKKyAKKytidWlsZHRlc3Q6CisrCWVjaG8gIk1ha2luZyAkQCBpbiB0ZXN0c3VpdGUiIDsgKGNkIHRlc3RzdWl0ZSAmJiAkKE1BS0UpICRAKQorKworIGNoZWNrLWhlcmU6CisgCXRydWUKKyAKK0luZGV4OiBuZXR0bGUtMy40L3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldHRsZS0zLjQub3JpZy90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KKysrKyBuZXR0bGUtMy40L3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgorQEAgLTEzMSw2ICsxMzEsOCBAQCAkKFRBUkdFVFMpICQoRVhUUkFfVEFSR0VUUyk6IHRlc3R1dGlscy4kCisgIyBkYXRhLgorIFZBTEdSSU5EID0gdmFsZ3JpbmQgLS1lcnJvci1leGl0Y29kZT0xIC0tbGVhay1jaGVjaz1mdWxsIC0tc2hvdy1yZWFjaGFibGU9eWVzIEBJRl9BU01AIC0tcGFydGlhbC1sb2Fkcy1vaz15ZXMKKyAKKytidWlsZHRlc3Q6ICQoVFNfQUxMKQorKworICMgVGhlIFBBVEggdXBkYXRlIGlzIGZvciB3aW5kb3dzIGRsbHMsIERZTERfTElCUkFSWV9QQVRIIGlzIGZvciBPU1guCisgY2hlY2s6ICQoVFNfQUxMKQorIAlMRF9MSUJSQVJZX1BBVEg9Li4vLmxpYiBQQVRIPSIuLi8ubGliOiQkUEFUSCIgRFlMRF9MSUJSQVJZX1BBVEg9Li4vLmxpYiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjQvY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWYyNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGZmZWU2YjVmNjIwNGEwMjEwZjcxNzk2OGVjNmNlNTE0ZDcwYWNjYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIYWlxaW5nIEJhaSA8SGFpcWluZy5CYWlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgOSBEZWMgMjAxNiAxNToyMzoxNyArMDgwMAorU3ViamVjdDogW1BBVENIXSBuZXR0bGU6IGNoZWNrIGhlYWRlciBmaWxlcyBvZiBvcGVuc3NsIG9ubHkgaWYKKyAnZW5hYmxlX29wZW5zc2w9eWVzJy4KKworVGhlIG9yaWdpbmFsIGNvbmZpZ3VyZSBzY3JpcHQgY2hlY2tzIG9wZW5zc2wgaGVhZGVyIGZpbGVzIHRvIGdlbmVyYXRlCitjb25maWcuaCBldmVuIGlmICdlbmFibGVfb3BlbnNzbCcgaXMgbm90IHNldCB0byB5ZXMsIHRoaXMgbWFkZSBpbmNvbnNpc3RlbnQKK2J1aWxkaW5nIGZvciBuZXR0bGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+CisKK3JlZmFjdG9yZWQgZm9yIDMuNC4gcGVuZGluZyBub3QgaW4gYXMgb2YgMy40CisKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogbmV0dGxlLTMuNC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXR0bGUtMy40Lm9yaWcvY29uZmlndXJlLmFjCisrKysgbmV0dGxlLTMuNC9jb25maWd1cmUuYWMKK0BAIC0xODUsOSArMTg1LDExIEBAIEFDX0hFQURFUl9USU1FCisgQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCisgQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCkKKyAKKy1BQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2V2cC5oIG9wZW5zc2wvZWNkc2EuaF0sLAorLVtlbmFibGVfb3BlbnNzbD1ubworLSBicmVha10pCisraWYgdGVzdCAieCRlbmFibGVfb3BlbnNzbCIgPSAieHllcyI7IHRoZW4KKysgIEFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvZXZwLmggb3BlbnNzbC9lY2RzYS5oXSwsCisrICBbZW5hYmxlX29wZW5zc2w9bm8KKysgICBicmVha10pCisrZmkKKyAKKyAjIEZvciB1c2UgYnkgdGhlIHRlc3RzdWl0ZQorIEFDX0NIRUNLX0hFQURFUlMoW3ZhbGdyaW5kL21lbWNoZWNrLmhdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2Rsb3Blbi10ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L2Rsb3Blbi10ZXN0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvZGxvcGVuLXRlc3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9kbG9wZW4tdGVzdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9maWxlcy9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjQvcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL2ZpbGVzL3J1bi1wdGVzdApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L3J1bi1wdGVzdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjUxZmI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsb3cgbGV2ZWwgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5seXNhdG9yLmxpdS5zZS9+bmlzc2UvbmV0dGxlLyIKLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyArPSAiZ21wIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubHlzYXRvci5saXUuc2Uvfm5pc3NlL2FyY2hpdmUvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJuZXR0bGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtb3BlbnNzbCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgaWYgWyAhIC1lICR7U30vYWNpbmNsdWRlLm00IC1hIC1lICR7U30vYWNsb2NhbC5tNCBdOyB0aGVuCi0gICAgICAgICAgICAgICBjcCAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKLSAgICAgICBmaQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICBvZV9ydW5tYWtlIGJ1aWxkdGVzdAotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KLSAgICAgICAgaW5zdGFsbCAke1N9L3Rlc3RzdWl0ZS9nb2xkLWJ1Zy50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLwotICAgICAgICBpbnN0YWxsICR7U30vdGVzdHN1aXRlLyotdGVzdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCi0gICAgICAgICMgdG9vbHMgY2FuIGJlIGZvdW5kIGluIFBBVEgsIG5vdCBpbiAuLi90b29scy8KLSAgICAgICAgc2VkIC1pIC1lICdzfC4uL3Rvb2xzL3x8JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvKi10ZXN0Ci0gICAgICAgIGluc3RhbGwgJHtCfS90ZXN0c3VpdGUvKi10ZXN0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGVfMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGVfMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTUxNjc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgbmV0dGxlLmluYwotCi1MSUNFTlNFID0gIkxHUEx2MysgfCBHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VycGVudC1kZWNyeXB0LmM7YmVnaW5saW5lPTE0O2VuZGxpbmU9MzY7bWQ1PWNhMGQyMjBiYzQxM2UxODQyZWNjNTA3NjkwY2U0MTZlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlcnBlbnQtc2V0LWtleS5jO2JlZ2lubGluZT0xNDtlbmRsaW5lPTM2O21kNT1jYTBkMjIwYmM0MTNlMTg0MmVjYzUwNzY5MGNlNDE2ZSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovL2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgICAgICAgICBmaWxlOi8vZGxvcGVuLXRlc3QucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTBmOTY5Zjc4YTQ2MzcwNGFlNzM1Mjk5NzgxNDhkYmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY5NDI2MjdkNWQwY2ExMTcyMGZlYzE4ZDgxZmMzOGY3ZWY4MzdlYTQxOTdjMWY2MzBlNzFjZTBkNDcwYjExZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTNjYzY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGVfMy40LmJiCkBAIC0wLDAgKzEsNDcgQEAKK1NVTU1BUlkgPSAiQSBsb3cgbGV2ZWwgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5seXNhdG9yLmxpdS5zZS9+bmlzc2UvbmV0dGxlLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zZXJwZW50LWRlY3J5cHQuYztiZWdpbmxpbmU9MTQ7ZW5kbGluZT0zNjttZDU9Y2EwZDIyMGJjNDEzZTE4NDJlY2M1MDc2OTBjZTQxNmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VycGVudC1zZXQta2V5LmM7YmVnaW5saW5lPTE0O2VuZGxpbmU9MzY7bWQ1PWNhMGQyMjBiYzQxM2UxODQyZWNjNTA3NjkwY2U0MTZlIgorCitERVBFTkRTICs9ICJnbXAiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgIGZpbGU6Ly9kbG9wZW4tdGVzdC5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYzBmMTMwMjgyNjQ5OTJmNThlNjdiNGU4OTE1ZjUzZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTdhNDJkZjAyNjU1MGI4NWRhY2E4Mzg5YjZhNjBiYTYzMTNiMDU2N2YzNzQzOTJlNTQ5MTg1ODhhNDExZTk0IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJuZXR0bGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9wZW5zc2wiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLworICAgICAgICBpbnN0YWxsICR7U30vdGVzdHN1aXRlL2dvbGQtYnVnLnR4dCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCisgICAgICAgIGluc3RhbGwgJHtTfS90ZXN0c3VpdGUvKi10ZXN0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KKyAgICAgICAgIyB0b29scyBjYW4gYmUgZm91bmQgaW4gUEFUSCwgbm90IGluIC4uL3Rvb2xzLworICAgICAgICBzZWQgLWkgLWUgJ3N8Li4vdG9vbHMvfHwnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8qLXRlc3QKKyAgICAgICAgaW5zdGFsbCAke0J9L3Rlc3RzdWl0ZS8qLXRlc3QgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS41LmJiCmluZGV4IDU0ZGU3MGMuLmU3ZGI2YWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS41LmJiCkBAIC0xOSwzICsxOSw1IEBACiAKIEZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJucHRoLnNvLioiCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ucHRoLWNvbmZpZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1TU0laRV9NQVgtYW5kLVNJWkVfTUFYLWRlZmluaXRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2JkZDhlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1TU0laRV9NQVgtYW5kLVNJWkVfTUFYLWRlZmluaXRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBmNzU1MWVjNThlMmYwYTg5MjI5NWUwYzJhNjUwMDgzMTAxZTEyYzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjAgTWF5IDIwMTcgMTM6MjQ6MjYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRpbnQuaCBmb3IgU1NJWkVfTUFYIGFuZCBTSVpFX01BWCBkZWZpbml0aW9ucwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHByL3Rlc3RzL3ByZnouYyB8IDQgKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3ByL3Rlc3RzL3ByZnouYyBiL3ByL3Rlc3RzL3ByZnouYwotaW5kZXggMGM1YTQzMi4uOWMxNzU5MCAxMDA2NDQKLS0tLSBhL3ByL3Rlc3RzL3ByZnouYwotKysrIGIvcHIvdGVzdHMvcHJmei5jCi1AQCAtMTAsNyArMTAsOSBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLQotKyNpZmRlZiBYUF9VTklYCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotIGludAotIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIHsKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaAppbmRleCBjMmI3MjU4Li5mMTJhY2M4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCkBAIC00OSw0ICs0OSw0IEBACiAtICAgICAgICAgICAgUFJfTURfQVNGSUxFUz1vc19MaW51eF9wcGMucwogICAgICAgICAgZmkKICAgICAgICAgIDs7Ci0gICAgIG02OGspCisgICAgIGVzYWMgICAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaAppbmRleCBhN2U3ODUzLi5lY2M2ZDMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2gKQEAgLTExLDEyICsxMSwxMiBAQAogU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBuc3ByLTQuOC45L21vemlsbGEvbnNwcnB1Yi9wci90ZXN0cy9NYWtlZmlsZS5pbgorSW5kZXg6IG5zcHIvcHIvdGVzdHMvTWFrZWZpbGUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuc3BycHViLm9yaWcvcHIvdGVzdHMvTWFrZWZpbGUuaW4JMjAxMi0wMi0xMSAwMDowMToxMC40NzYyMjA1MDUgKzAyMDAKLSsrKyBuc3BycHViL3ByL3Rlc3RzL01ha2VmaWxlLmluCTIwMTItMDItMTAgMjM6NTc6NDAuMDAwMDAwMDAwICswMjAwCi1AQCAtMzc5LDcgKzM3OSw3IEBACi0gZW5kaWYKKy0tLSBuc3ByLm9yaWcvcHIvdGVzdHMvTWFrZWZpbGUuaW4KKysrKyBuc3ByL3ByL3Rlc3RzL01ha2VmaWxlLmluCitAQCAtMzE1LDcgKzMxNSw3IEBAIGlmZXEgKCQoT1NfQVJDSCksIFN1bk9TKQorIGVuZGlmICMgU3VuT1MKICAKICBpZmVxICgsJChmaWx0ZXItb3V0IExpbnV4IEdOVSBHTlVfJSwkKE9TX0FSQ0gpKSkKIC0gICAgTERPUFRTICs9IC1YbGlua2VyIC1ycGF0aCAkKEFCU09MVVRFX0xJQl9ESVIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZWY5OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkxICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgotSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCi1MSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVNTSVpFX01BWC1hbmQtU0laRV9NQVgtZGVmaW5pdGkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcHIucGMuaW4gXAotIgotCi1DQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfbGliYy1tdXNsID0gIiBDRkxBR1M9JyR7Q0ZMQUdTfSAtRF9QUl9QT0xMX0FWQUlMQUJMRSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX09GRjY0X1QgLURfUFJfSU5FVDYgLURfUFJfSEFWRV9JTkVUX05UT1AgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9HRVRIT1NUQllOQU1FMiAtRF9QUl9IQVZFX0dFVEFERFJJTkZPIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0lORVQ2X1BST0JFIC1ETk9fRExPUEVOX05VTEwnIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQyZmQ4OTYzYTRiMzk0ZjYyZDQzYmE2MDRmMDNmYWI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliMzEwMmQ5NzY2NTUwNGFlZWU3MzM2M2MxMWEyMWMwNjJhZDY3YTI1MjIyNDIzNjhiN2YwMTlmOTZhNTNjZDEiCi0KLUNWRV9QUk9EVUNUID0gIm5ldHNjYXBlX3BvcnRhYmxlX3J1bnRpbWUiCi0KLVMgPSAiJHtXT1JLRElSfS9uc3ByLSR7UFZ9L25zcHIiCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAicGVybCIKLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1URVNUUyA9ICIgXAotICAgIGFjY2VwdCBcCi0gICAgYWNjZXB0cmVhZCBcCi0gICAgYWNjZXB0cmVhZGVtdSBcCi0gICAgYWZmaW5pdHkgXAotICAgIGFsYXJtIFwKLSAgICBhbm9uZm0gXAotICAgIGF0b21pYyBcCi0gICAgYXR0YWNoIFwKLSAgICBiaWdmaWxlIFwKLSAgICBjbGVhbnVwIFwKLSAgICBjbHRzcnYgIFwKLSAgICBjb25jdXIgXAotICAgIGN2YXIgXAotICAgIGN2YXIyIFwKLSAgICBkbGx0ZXN0IFwKLSAgICBkdG9hIFwKLSAgICBlcnJjb2RlcyBcCi0gICAgZXhpdCBcCi0gICAgZmRjYWNoIFwKLSAgICBmaWxlaW8gXAotICAgIGZvcmVpZ24gXAotICAgIGZvcm1hdHRtIFwKLSAgICBmc3luYyBcCi0gICAgZ2V0aG9zdCBcCi0gICAgZ2V0cHJvdG8gXAotICAgIGkybCBcCi0gICAgaW5pdGNsayBcCi0gICAgaW5ydmFsIFwKLSAgICBpbnN0cnVtdCBcCi0gICAgaW50cmlvIFwKLSAgICBpbnRydXB0IFwKLSAgICBpb190aW1lb3V0IFwKLSAgICBpb2NvbnRociBcCi0gICAgam9pbiBcCi0gICAgam9pbmtrIFwKLSAgICBqb2lua3UgXAotICAgIGpvaW51ayBcCi0gICAgam9pbnV1IFwKLSAgICBsYXllciBcCi0gICAgbGF6eWluaXQgXAotICAgIGxpYmZpbGVuYW1lIFwKLSAgICBsbHRlc3QgXAotICAgIGxvY2sgXAotICAgIGxvY2tmaWxlIFwKLSAgICBsb2dmaWxlIFwKLSAgICBsb2dnZXIgXAotICAgIG1hbnlfY3YgXAotICAgIG11bHRpd2FpdCBcCi0gICAgbmFtZXNobTEgXAotICAgIG5ibGF5ZXIgXAotICAgIG5vbmJsb2NrIFwKLSAgICBudGlvdG8gXAotICAgIG50b2ggXAotICAgIG9wXzJsb25nIFwKLSAgICBvcF9leGNsIFwKLSAgICBvcF9maWxuZiBcCi0gICAgb3BfZmlsb2sgXAotICAgIG9wX25vZmlsIFwKLSAgICBwYXJlbnQgXAotICAgIHBhcnNldG0gXAotICAgIHBlZWsgXAotICAgIHBlcmYgXAotICAgIHBpcGVwaW5nIFwKLSAgICBwaXBlcGluZzIgXAotICAgIHBpcGVzZWxmIFwKLSAgICBwb2xsX25tIFwKLSAgICBwb2xsX3RvIFwKLSAgICBwb2xsYWJsZSBcCi0gICAgcHJmdGVzdCBcCi0gICAgcHJpbWJsb2sgXAotICAgIHByb3ZpZGVyIFwKLSAgICBwcnBvbGxtbCBcCi0gICAgcmFuZmlsZSBcCi0gICAgcmFuZHNlZWQgXAotICAgIHJlaW5pdCBcCi0gICAgcndsb2NrdGVzdCBcCi0gICAgc2VsX3NwZCBcCi0gICAgc2VsY3RfZXIgXAotICAgIHNlbGN0X25tIFwKLSAgICBzZWxjdF90byBcCi0gICAgc2VsaW50ciBcCi0gICAgc2VtYSBcCi0gICAgc2VtYWVyciBcCi0gICAgc2VtYXBpbmcgXAotICAgIHNlbmR6bGYgXAotICAgIHNlcnZlcl90ZXN0IFwKLSAgICBzZXJ2cl9rayBcCi0gICAgc2VydnJfdWsgXAotICAgIHNlcnZyX2t1IFwKLSAgICBzZXJ2cl91dSBcCi0gICAgc2hvcnRfdGhyZWFkIFwKLSAgICBzaWdwaXBlIFwKLSAgICBzb2NrZXQgXAotICAgIHNvY2tvcHQgXAotICAgIHNvY2twaW5nIFwKLSAgICBzcHJpbnRmIFwKLSAgICBzdGFjayBcCi0gICAgc3RkaW8gXAotICAgIHN0cjJhZGRyIFwKLSAgICBzdHJvZCBcCi0gICAgc3dpdGNoIFwKLSAgICBzeXN0ZW0gXAotICAgIHRlc3RiaXQgXAotICAgIHRlc3RmaWxlIFwKLSAgICB0aHJlYWRzIFwKLSAgICB0aW1lbWFjIFwKLSAgICB0aW1ldGVzdCBcCi0gICAgdHBkIFwKLSAgICB1ZHBzcnYgXAotICAgIHZlcmNoZWNrIFwKLSAgICB2ZXJzaW9uIFwKLSAgICB3cml0ZXYgXAotICAgIHhub3RpZnkgXAotICAgIHplcm9sZW4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCW9lX3J1bm1ha2UgQ1JPU1NfQ09NUElMRT0xIENGTEFHUz0iLURYUF9VTklYICR7QlVJTERfQ0ZMQUdTfSIgTERGTEFHUz0iIiBDQz0iJHtCVUlMRF9DQ30iIC1DIGNvbmZpZyBleHBvcnQKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0Jb2VfcnVubWFrZSAtQyBwci90ZXN0cwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EICR7V09SS0RJUn0vbnNwci5wYy5pbiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCi0gICAgc2VkIC1pICBcCi0gICAgLWUgJ3M6TlNQUlZFUlNJT046JHtQVn06ZycgXAotICAgIC1lICdzOk9FUFJFRklYOiR7cHJlZml4fTpnJyBcCi0gICAgLWUgJ3M6T0VMSUJESVI6JHtsaWJkaXJ9OmcnIFwKLSAgICAtZSAnczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9OmcnIFwKLSAgICAtZSAnczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZycgXAotICAgICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKLQotICAgIG1rZGlyIC1wICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3ByL3Rlc3RzL3J1bnRlc3RzLnBsICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3ByL3Rlc3RzL3J1bnRlc3RzLnNoICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGNkICR7Qn0vcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtURVNUU30gJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0KLSAgICAjIGRlbGV0ZSBjb21waWxlLWV0LnBsIGFuZCBwZXJyLnByb3BlcnRpZXMgZnJvbSAke2JpbmRpcn0gYmVjYXVzZSB0aGVzZSBhcmUKLSAgICAjIG9ubHkgdXNlZCB0byBnZW5lcmF0ZSBwcmVyci5jIGFuZCBwcmVyci5oIGZpbGVzIGZyb20gcHJlcnIuZXQgYXQgY29tcGlsZQotICAgICMgdGltZQotICAgIHJtICR7RH0ke2JpbmRpcn0vY29tcGlsZS1ldC5wbCAke0R9JHtiaW5kaXJ9L3ByZXJyLnByb3BlcnRpZXMKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L25zcHIvdGVzdHMvKiAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyogJHtkYXRhZGlyfS9hY2xvY2FsLyogIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUyYzg3MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xOS5iYgpAQCAtMCwwICsxLDE5MCBAQAorU1VNTUFSWSA9ICJOZXRzY2FwZSBQb3J0YWJsZSBSdW50aW1lIExpYnJhcnkiCitIT01FUEFHRSA9ICAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uc3ByLyIKK0xJQ0VOU0UgPSAiR1BMLTIuMCB8IE1QTC0yLjAgfCBMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NvbmZpZ3VyZS5pbjtiZWdpbmxpbmU9MztlbmRsaW5lPTY7bWQ1PTkwYzJmZGVlMzhlNDVkNjMwMmFiY2ZlNDc1YzhiNWM1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluO2JlZ2lubGluZT00O2VuZGxpbmU9Mzg7bWQ1PWJlZGExZGJiOThhNTE1ZjU1N2QzZTU4ZWYwNmJjYTk5IgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy92JHtQVn0vc3JjL25zcHItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKKyIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMWQyNzI4MmFkNjI4NmI2OWQ2YjlmZDA3MjAxZDNkZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZWQ5NTkxN2ZhMjI3NzkxMGQxZDFjZjM2MDMwNjA3ZGNjYzBiYTUyMmJiYTA4ZTJhZjEzYzExM2RjZDhmNzI5IgorCitDVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgorCitTID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgorCitSREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworVEVTVFMgPSAiIFwKKyAgICBhY2NlcHQgXAorICAgIGFjY2VwdHJlYWQgXAorICAgIGFjY2VwdHJlYWRlbXUgXAorICAgIGFmZmluaXR5IFwKKyAgICBhbGFybSBcCisgICAgYW5vbmZtIFwKKyAgICBhdG9taWMgXAorICAgIGF0dGFjaCBcCisgICAgYmlnZmlsZSBcCisgICAgY2xlYW51cCBcCisgICAgY2x0c3J2ICBcCisgICAgY29uY3VyIFwKKyAgICBjdmFyIFwKKyAgICBjdmFyMiBcCisgICAgZGxsdGVzdCBcCisgICAgZHRvYSBcCisgICAgZXJyY29kZXMgXAorICAgIGV4aXQgXAorICAgIGZkY2FjaCBcCisgICAgZmlsZWlvIFwKKyAgICBmb3JlaWduIFwKKyAgICBmb3JtYXR0bSBcCisgICAgZnN5bmMgXAorICAgIGdldGhvc3QgXAorICAgIGdldHByb3RvIFwKKyAgICBpMmwgXAorICAgIGluaXRjbGsgXAorICAgIGlucnZhbCBcCisgICAgaW5zdHJ1bXQgXAorICAgIGludHJpbyBcCisgICAgaW50cnVwdCBcCisgICAgaW9fdGltZW91dCBcCisgICAgaW9jb250aHIgXAorICAgIGpvaW4gXAorICAgIGpvaW5rayBcCisgICAgam9pbmt1IFwKKyAgICBqb2ludWsgXAorICAgIGpvaW51dSBcCisgICAgbGF5ZXIgXAorICAgIGxhenlpbml0IFwKKyAgICBsaWJmaWxlbmFtZSBcCisgICAgbGx0ZXN0IFwKKyAgICBsb2NrIFwKKyAgICBsb2NrZmlsZSBcCisgICAgbG9nZmlsZSBcCisgICAgbG9nZ2VyIFwKKyAgICBtYW55X2N2IFwKKyAgICBtdWx0aXdhaXQgXAorICAgIG5hbWVzaG0xIFwKKyAgICBuYmxheWVyIFwKKyAgICBub25ibG9jayBcCisgICAgbnRpb3RvIFwKKyAgICBudG9oIFwKKyAgICBvcF8ybG9uZyBcCisgICAgb3BfZXhjbCBcCisgICAgb3BfZmlsbmYgXAorICAgIG9wX2ZpbG9rIFwKKyAgICBvcF9ub2ZpbCBcCisgICAgcGFyZW50IFwKKyAgICBwYXJzZXRtIFwKKyAgICBwZWVrIFwKKyAgICBwZXJmIFwKKyAgICBwaXBlcGluZyBcCisgICAgcGlwZXBpbmcyIFwKKyAgICBwaXBlc2VsZiBcCisgICAgcG9sbF9ubSBcCisgICAgcG9sbF90byBcCisgICAgcG9sbGFibGUgXAorICAgIHByZnRlc3QgXAorICAgIHByaW1ibG9rIFwKKyAgICBwcm92aWRlciBcCisgICAgcHJwb2xsbWwgXAorICAgIHJhbmZpbGUgXAorICAgIHJhbmRzZWVkIFwKKyAgICByZWluaXQgXAorICAgIHJ3bG9ja3Rlc3QgXAorICAgIHNlbF9zcGQgXAorICAgIHNlbGN0X2VyIFwKKyAgICBzZWxjdF9ubSBcCisgICAgc2VsY3RfdG8gXAorICAgIHNlbGludHIgXAorICAgIHNlbWEgXAorICAgIHNlbWFlcnIgXAorICAgIHNlbWFwaW5nIFwKKyAgICBzZW5kemxmIFwKKyAgICBzZXJ2ZXJfdGVzdCBcCisgICAgc2VydnJfa2sgXAorICAgIHNlcnZyX3VrIFwKKyAgICBzZXJ2cl9rdSBcCisgICAgc2VydnJfdXUgXAorICAgIHNob3J0X3RocmVhZCBcCisgICAgc2lncGlwZSBcCisgICAgc29ja2V0IFwKKyAgICBzb2Nrb3B0IFwKKyAgICBzb2NrcGluZyBcCisgICAgc3ByaW50ZiBcCisgICAgc3RhY2sgXAorICAgIHN0ZGlvIFwKKyAgICBzdHIyYWRkciBcCisgICAgc3Ryb2QgXAorICAgIHN3aXRjaCBcCisgICAgc3lzdGVtIFwKKyAgICB0ZXN0Yml0IFwKKyAgICB0ZXN0ZmlsZSBcCisgICAgdGhyZWFkcyBcCisgICAgdGltZW1hYyBcCisgICAgdGltZXRlc3QgXAorICAgIHRwZCBcCisgICAgdWRwc3J2IFwKKyAgICB2ZXJjaGVjayBcCisgICAgdmVyc2lvbiBcCisgICAgd3JpdGV2IFwKKyAgICB4bm90aWZ5IFwKKyAgICB6ZXJvbGVuIgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCAke0JVSUxEX0NGTEFHU30iIExERkxBR1M9IiIgQ0M9IiR7QlVJTERfQ0N9IiAtQyBjb25maWcgZXhwb3J0Cit9CisKK2RvX2NvbXBpbGVfYXBwZW5kKCkgeworCW9lX3J1bm1ha2UgLUMgcHIvdGVzdHMKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtRCAke1dPUktESVJ9L25zcHIucGMuaW4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworICAgIHNlZCAtaSAgXAorICAgIC1lICdzOk5TUFJWRVJTSU9OOiR7UFZ9OmcnIFwKKyAgICAtZSAnczpPRVBSRUZJWDoke3ByZWZpeH06ZycgXAorICAgIC1lICdzOk9FTElCRElSOiR7bGliZGlyfTpnJyBcCisgICAgLWUgJ3M6T0VJTkNESVI6JHtpbmNsdWRlZGlyfTpnJyBcCisgICAgLWUgJ3M6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcnIFwKKyAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCisKKyAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5wbCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5zaCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKyAgICBjZCAke0J9L3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7VEVTVFN9ICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cworCisgICAgIyBkZWxldGUgY29tcGlsZS1ldC5wbCBhbmQgcGVyci5wcm9wZXJ0aWVzIGZyb20gJHtiaW5kaXJ9IGJlY2F1c2UgdGhlc2UgYXJlCisgICAgIyBvbmx5IHVzZWQgdG8gZ2VuZXJhdGUgcHJlcnIuYyBhbmQgcHJlcnIuaCBmaWxlcyBmcm9tIHByZXJyLmV0IGF0IGNvbXBpbGUKKyAgICAjIHRpbWUKKyAgICBybSAke0R9JHtiaW5kaXJ9L2NvbXBpbGUtZXQucGwgJHtEfSR7YmluZGlyfS9wcmVyci5wcm9wZXJ0aWVzCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9uc3ByL3Rlc3RzLyogJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCisgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8qICR7ZGF0YWRpcn0vYWNsb2NhbC8qICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLUJ1Zy0xNDM3NzM0LVVzZS1zbnByaW50Zi1pbi1zaWduLmMtci10dGF1YmVydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzEwZjMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2gKQEAgLTAsMCArMSwxMTkgQEAKK0Zyb20gNmY3ZDdiZTk5OTdiYTY3MjdhNWFkN2MzODAwZGY5MDUxMTYwZGMxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBUaG9tc29uIDxtYXJ0aW4udGhvbXNvbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEzIEZlYiAyMDE4IDEyOjMwOjU4ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyAxNDM3NzM0IC0gVXNlIHNucHJpbnRmIGluIHNpZ24uYywgcj10dGF1YmVydAorCistLUhHLS0KK2V4dHJhIDogcmViYXNlX3NvdXJjZSA6IDk3OTIxZWNlNzFmZjg2YjE4ZDMyYjg5MTU5MTYwODI5MGVlZDRkODMKKy0tLQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9uc3MtZGV2L25zcy9jb21taXQvMGE5MDc4YjNjZGU5N2FkZDdjODI1YzlkMTM0NjdhODQwMWFkMGM4OCNkaWZmLWI0MjUxMjE1MWRjMTM3NTM3MDkxZjgyM2Y3NzAxODA0LnBhdGNoXQorCisgbnNzL2NtZC9zaWdudG9vbC9zaWduLmMgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMgYi9uc3MvY21kL3NpZ250b29sL3NpZ24uYworaW5kZXggNmU3NzYwNjlhLi42ZjhlNDM5NDYgMTAwNjQ0CistLS0gYS9uc3MvY21kL3NpZ250b29sL3NpZ24uYworKysrIGIvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKK0BAIC00Myw2ICs0Myw3IEBAIFNpZ25BcmNoaXZlKGNoYXIgKnRyZWUsIGNoYXIgKmtleU5hbWUsIGNoYXIgKnppcF9maWxlLCBpbnQgamF2YXNjcmlwdCwKKyAgICAgaW50IHN0YXR1czsKKyAgICAgY2hhciB0ZW1wZm5bRk5TSVpFXSwgZnVsbGZuW0ZOU0laRV07CisgICAgIGludCBrZXlUeXBlID0gcnNhS2V5OworKyAgICBpbnQgY291bnQ7CisgCisgICAgIG1ldGFmaWxlID0gbWV0YV9maWxlOworICAgICBvcHRpbWl6ZSA9IF9vcHRpbWl6ZTsKK0BAIC04MSw5ICs4MiwxOCBAQCBTaWduQXJjaGl2ZShjaGFyICp0cmVlLCBjaGFyICprZXlOYW1lLCBjaGFyICp6aXBfZmlsZSwgaW50IGphdmFzY3JpcHQsCisgICAgICAgICB9CisgCisgICAgICAgICAvKiByc2EvZHNhIHRvIHppcCAqLworLSAgICAgICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy4lcyIsIGJhc2UsIChrZXlUeXBlID09IGRzYUtleSA/ICJkc2EiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInJzYSIpKTsKKy0gICAgICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICAgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIiA6ICJyc2EiKSk7CisrICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKHRlbXBmbikpIHsKKysgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKKysgICAgICAgICAgICBlcnJvckNvdW50Kys7CisrICAgICAgICAgICAgZXhpdChFUlJYKTsKKysgICAgICAgIH0KKysgICAgICAgIGNvdW50ID0gc25wcmludGYoZnVsbGZuLCBzaXplb2YoZnVsbGZuKSwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBrZXkgbWV0YWRhdGFcbiIpOworKyAgICAgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgICAgICBleGl0KEVSUlgpOworKyAgICAgICAgfQorICAgICAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICAgICAgLyogTG9vcCB0aHJvdWdoIGFsbCBmaWxlcyAmIHN1YmRpcmVjdG9yaWVzLCBhZGQgdG8gYXJjaGl2ZSAqLworQEAgLTkzLDIwICsxMDMsNDQgQEAgU2lnbkFyY2hpdmUoY2hhciAqdHJlZSwgY2hhciAqa2V5TmFtZSwgY2hhciAqemlwX2ZpbGUsIGludCBqYXZhc2NyaXB0LAorICAgICB9CisgICAgIC8qIG1mIHRvIHppcCAqLworICAgICBzdHJjcHkodGVtcGZuLCAiTUVUQS1JTkYvbWFuaWZlc3QubWYiKTsKKy0gICAgc3ByaW50ZihmdWxsZm4sICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgIGNvdW50ID0gc25wcmludGYoZnVsbGZuLCBzaXplb2YoZnVsbGZuKSwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgaWYgKGNvdW50ID49IHNpemVvZihmdWxsZm4pKSB7CisrICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUgbWFuaWZlc3RcbiIpOworKyAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgZXhpdChFUlJYKTsKKysgICAgfQorICAgICBKemlwQWRkKGZ1bGxmbiwgdGVtcGZuLCB6aXBmaWxlLCBjb21wcmVzc2lvbl9sZXZlbCk7CisgCisgICAgIC8qIHNmIHRvIHppcCAqLworLSAgICBzcHJpbnRmKHRlbXBmbiwgIk1FVEEtSU5GLyVzLnNmIiwgYmFzZSk7CistICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICBjb3VudCA9IHNucHJpbnRmKHRlbXBmbiwgc2l6ZW9mKHRlbXBmbiksICJNRVRBLUlORi8lcy5zZiIsIGJhc2UpOworKyAgICBpZiAoY291bnQgPj0gc2l6ZW9mKHRlbXBmbikpIHsKKysgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBzZiBtZXRhZGF0YVxuIik7CisrICAgICAgICBlcnJvckNvdW50Kys7CisrICAgICAgICBleGl0KEVSUlgpOworKyAgICB9CisrICAgIGNvdW50ID0gc25wcmludGYoZnVsbGZuLCBzaXplb2YoZnVsbGZuKSwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgaWYgKGNvdW50ID49IHNpemVvZihmdWxsZm4pKSB7CisrICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUgc2YgbWV0YWRhdGFcbiIpOworKyAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgZXhpdChFUlJYKTsKKysgICAgfQorICAgICBKemlwQWRkKGZ1bGxmbiwgdGVtcGZuLCB6aXBmaWxlLCBjb21wcmVzc2lvbl9sZXZlbCk7CisgCisgICAgIC8qIEFkZCB0aGUgcnNhL2RzYSBmaWxlIHRvIHRoZSB6aXAgYXJjaGl2ZSBub3JtYWxseSAqLworICAgICBpZiAoIXhwaV9hcmMpIHsKKyAgICAgICAgIC8qIHJzYS9kc2EgdG8gemlwICovCistICAgICAgICBzcHJpbnRmKHRlbXBmbiwgIk1FVEEtSU5GLyVzLiVzIiwgYmFzZSwgKGtleVR5cGUgPT0gZHNhS2V5ID8gImRzYSIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAicnNhIikpOworLSAgICAgICAgc3ByaW50ZihmdWxsZm4sICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgICAgICBjb3VudCA9IHNucHJpbnRmKHRlbXBmbiwgc2l6ZW9mKHRlbXBmbiksICJNRVRBLUlORi8lcy4lcyIsIGJhc2UsIChrZXlUeXBlID09IGRzYUtleSA/ICJkc2EiIDogInJzYSIpKTsKKysgICAgICAgIGlmIChjb3VudCA+PSBzaXplb2YodGVtcGZuKSkgeworKyAgICAgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBrZXkgbWV0YWRhdGFcbiIpOworKyAgICAgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgICAgICBleGl0KEVSUlgpOworKyAgICAgICAgfQorKyAgICAgICAgY291bnQgPSBzbnByaW50ZihmdWxsZm4sIHNpemVvZihmdWxsZm4pLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICAgICAgaWYgKGNvdW50ID49IHNpemVvZihmdWxsZm4pKSB7CisrICAgICAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIGtleSBtZXRhZGF0YVxuIik7CisrICAgICAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgICAgIGV4aXQoRVJSWCk7CisrICAgICAgICB9CisgICAgICAgICBKemlwQWRkKGZ1bGxmbiwgdGVtcGZuLCB6aXBmaWxlLCBjb21wcmVzc2lvbl9sZXZlbCk7CisgICAgIH0KKyAKK0BAIC00MDgsNiArNDQyLDcgQEAgc3RhdGljIGludAorIG1hbmlmZXN0b194cGlfZm4oY2hhciAqcmVscGF0aCwgY2hhciAqYmFzZWRpciwgY2hhciAqcmVsZGlyLCBjaGFyICpmaWxlbmFtZSwgdm9pZCAqYXJnKQorIHsKKyAgICAgY2hhciBmdWxsbmFtZVtGTlNJWkVdOworKyAgICBpbnQgY291bnQ7CisgCisgICAgIGlmICh2ZXJib3NpdHkgPj0gMCkgeworICAgICAgICAgUFJfZnByaW50ZihvdXRwdXRGRCwgIi0tPiAlc1xuIiwgcmVscGF0aCk7CitAQCAtNDIxLDcgKzQ1NiwxMCBAQCBtYW5pZmVzdG9feHBpX2ZuKGNoYXIgKnJlbHBhdGgsIGNoYXIgKmJhc2VkaXIsIGNoYXIgKnJlbGRpciwgY2hhciAqZmlsZW5hbWUsIHZvaQorICAgICAgICAgaWYgKCFQTF9IYXNoVGFibGVMb29rdXAoZXh0ZW5zaW9ucywgZXh0KSkKKyAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorLSAgICBzcHJpbnRmKGZ1bGxuYW1lLCAiJXMvJXMiLCBiYXNlZGlyLCByZWxwYXRoKTsKKysgICAgY291bnQgPSBzbnByaW50ZihmdWxsbmFtZSwgc2l6ZW9mKGZ1bGxuYW1lKSwgIiVzLyVzIiwgYmFzZWRpciwgcmVscGF0aCk7CisrICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbG5hbWUpKSB7CisrICAgICAgICByZXR1cm4gMTsKKysgICAgfQorICAgICBKemlwQWRkKGZ1bGxuYW1lLCByZWxwYXRoLCB6aXBmaWxlLCBjb21wcmVzc2lvbl9sZXZlbCk7CisgCisgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWJ1aWxkLWhhY2wtcG9seTEzMDUtYWFyY2g2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI3NmY4OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKKyMgVXNlciBEYWlraSBVZW5vIDxkdWVub0ByZWRoYXQuY29tPgorIyBEYXRlIDE1MTY3MTA1NzQgLTM2MDAKKyMgICAgICBUdWUgSmFuIDIzIDEzOjI5OjM0IDIwMTggKzAxMDAKKyMgTm9kZSBJRCAyN2YyN2NlMjFjMmM2ZmY1YTQ3ZmE5ZTE3YzQzOGIwMDAzNjZjOWM5CisjIFBhcmVudCAgYmUxZGNhNWFjODA1NDFkM2I4MWE4ZGE5ZDQyODU0ZDhiMWNjZWVmYgorQnVpbGQgSGFjbF9Qb2x5MTMwNV82NC5vIG9uIGFhcmNoNjQgZXZlbiB3aXRoIG1ha2UKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAoraHR0cHM6Ly9idWcxNDMyNDU1LmJtb2F0dGFjaG1lbnRzLm9yZy9hdHRhY2htZW50LmNnaT9pZD04OTQ0NjkxCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IG5zcy0zLjM1L25zcy9saWIvZnJlZWJsL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbnNzLTMuMzUub3JpZy9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorKysrIG5zcy0zLjM1L25zcy9saWIvZnJlZWJsL01ha2VmaWxlCitAQCAtNTMzLDcgKzUzMywxMiBAQCBpZm5kZWYgTlNTX0RJU0FCTEVfQ0hBQ0hBUE9MWQorICAgICAgICAgICAgIEVYVFJBX1NSQ1MgKz0gY2hhY2hhMjBfdmVjLmMKKyAgICAgICAgIGVuZGlmCisgICAgIGVsc2UKKy0gICAgICAgIEVYVFJBX1NSQ1MgKz0gcG9seTEzMDUuYworKyAgICAgICAgaWZlcSAoJChDUFVfQVJDSCksYWFyY2g2NCkKKysgICAgICAgICAgICBFWFRSQV9TUkNTICs9IEhhY2xfUG9seTEzMDVfNjQuYworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIEVYVFJBX1NSQ1MgKz0gcG9seTEzMDUuYworKyAgICAgICAgZW5kaWYKKysKKyAgICAgICAgIEVYVFJBX1NSQ1MgKz0gY2hhY2hhMjAuYworICAgICAgICAgVkVSSUZJRURfU1JDUyArPSBIYWNsX0NoYWNoYTIwLmMKKyAgICAgZW5kaWYgIyB4ODZfNjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJiOWJkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCi1ERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCi1kZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKLXNlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCi1BcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAotVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCi12MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNUEwtMi4wIHwgKE1QTC0yLjAgJiBHUEwtMi4wKykgfCAoTVBMLTIuMCAmIExHUEwtMi4xKykiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25zcy9DT1BZSU5HO21kNT0zYjFlODhlMWI5YzBiNWE0YjI4ODFkNDZjY2UwNmExOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0U7bWQ1PTQ5MWYxNThkMDlkOTQ4NDY2YWZjZTg1ZDZmMWZlMThmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRS1NUEw7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgotCi1WRVJTSU9OX0RJUiA9ICIke0BkLmdldFZhcignQlAnKS51cHBlcigpLnJlcGxhY2UoJy0nLCAnXycpLnJlcGxhY2UoJy4nLCAnXycpICsgJ19SVE0nfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9zZWN1cml0eS9uc3MvcmVsZWFzZXMvJHtWRVJTSU9OX0RJUn0vc3JjLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MucGMuaW4gXAotICAgICAgICAgICBmaWxlOi8vc2lnbmxpYnMuc2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImViYjQ0ZjEzOTQyNTBkMmNmNmVjM2MyZTNkNzFmYTIwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzMzQzOTIxNGRjMDNlZTYwZTg2ZDE0MTljMTllMTU2ODk5OGIwNzc2ZGRlOTg3ZjQxZmE3MGNlZDZjZDA4ZGMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKLQotaW5oZXJpdCBzaXRlaW5mbwotCi1ERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCi0KLVREID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCi1URFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKLSAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KLSAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQotICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgotfQotCi1kb19jb21waWxlKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKLSAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0gICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0KLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFXzY0PTEKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFX1gzMj0xCi0gICAgZmkKLQotICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQotCi0gICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KLSAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQotICAgICMKLSAgICAjIG5zcyBwcmV0dHkgbXVjaCBkb2VzIGl0cyBvd24gdGhpbmcgd2l0aCBDRkxBR1MsIHNvIHdlIHB1dCB0aGVtIGludG8gQ0MuCi0gICAgIyBPcHRpbWl6YXRpb24gd2lsbCBnZXQgY2xvYmJlcmVkLCBidXQgbW9zdCBvZiB0aGUgc3R1ZmYgd2lsbCBzdXJ2aXZlLgotICAgICMgVGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgaXMgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIGRlYnVnCi0gICAgIyBzb3VyY2UgZmlsZXMgYW5kIENGTEFHUyBkb2VzIHRoYXQuICBOb3RoaW5nIHVzZXMgQ0NDLgotICAgICMKLSAgICBleHBvcnQgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSIKLSAgICBtYWtlIC1DIC4vbnNzIENDQz0iJHtDWFh9IC1nIiBcCi0gICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCi0gICAgICAgIFJQQVRIPSIke1JQQVRIfSIKLX0KLWRvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgotCi0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgZXhwb3J0IExERkxBR1M9IiIKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCi0gICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICBtYWtlIC1DIC4vbnNzIFwKLSAgICAgICAgQ0NDPSIke0NYWH0iIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAotICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCi0gICAgICAgIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCi0gICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbwotICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCi0gICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KLSAgICBkb25lCi0KLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQotICAgICAgICBmaQotICAgIGRvbmUKLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgIGZpCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMwotICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQotICAgIGRvbmUKLX0KLWRvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCi0gICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCi0gICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbwotICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQotICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICBkb25lCi0gICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLSAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICMgQ3JlYXRlIGEgYmxhbmsgY2VydGlmaWNhdGUKLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCi0gICAgdG91Y2ggLi9lbXB0eV9wYXNzd29yZAotICAgIGNlcnR1dGlsIC1OIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8gLWYgLi9lbXB0eV9wYXNzd29yZAotICAgIGNobW9kIDY0NCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvKi5kYgotICAgIHJtIC4vZW1wdHlfcGFzc3dvcmQKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJuc3MtbmF0aXZlIgotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBpZiBbIC1uICIkRCIgXTsgdGhlbgotICAgICAgICBmb3IgSSBpbiAkRCR7bGliZGlyfS9saWIqLmNoazsgZG8KLSAgICAgICAgICAgIEROPWBkaXJuYW1lICRJYAotICAgICAgICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCi0gICAgICAgICAgICBGTj0kRE4vJEJOLnNvCi0gICAgICAgICAgICBzaGxpYnNpZ24gLWkgJEZOCi0gICAgICAgICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAgICAgICAgICAgICAgICBleGl0IDEKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICBlbHNlCi0gICAgICAgIHNpZ25saWJzLnNoCi0gICAgZmkKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXNtaW1lIgotRklMRVNfJHtQTn0tc21pbWUgPSAiXAotICAgICR7YmluZGlyfS9zbWltZSBcCi0iCi1GSUxFU18ke1BOfSA9ICJcCi0gICAgJHtzeXNjb25mZGlyfSBcCi0gICAgJHtiaW5kaXJ9IFwKLSAgICAke2xpYmRpcn0vbGliKi5jaGsgXAotICAgICR7bGliZGlyfS9saWIqLnNvIFwKLSAgICAiCi1GSUxFU18ke1BOfS1kZXYgPSAiXAotICAgICR7bGliZGlyfS9uc3MgXAotICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCi0gICAgJHtpbmNsdWRlZGlyfS8qIFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmMTkxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzUuYmIKQEAgLTAsMCArMSwyNTUgQEAKK1NVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgorREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAorZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCitzZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAorQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKK1RMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAordjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKKworVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKKyAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLWJ1aWxkLWhhY2wtcG9seTEzMDUtYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUJ1Zy0xNDM3NzM0LVVzZS1zbnByaW50Zi1pbi1zaWduLmMtci10dGF1YmVydC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjk0NjdlYzllNjVjNWFlYjMyNTRhNTAyNTA0OTBmNWY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY0MTI3ZGUwOWJlZGUzOWY1ZmQwZjc4OWQzM2MzNTA0YzVkMjYxZTY5ZWEwMzAyMmQ0NmIzMTliM2UzMmY2ZmEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKKworaW5oZXJpdCBzaXRlaW5mbworCitERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCisKK1REID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCitURFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKKyAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KKyAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQorICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgorfQorCitkb19jb21waWxlKCkgeworICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKKyAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKKyAgICBleHBvcnQgTkFUSVZFX0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisgICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKKworICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9CisgICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKKyAgICBleHBvcnQgTlNfVVNFX0dDQz0xCisgICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCisgICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKKworICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAorICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKKyAgICBleHBvcnQgT1NfQVJDSD1MaW51eAorCisgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGM2NAorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPW1pcHMKKyAgICBlbHNlCisgICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgorICAgIGZpCisKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KKyAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQorICAgICMKKyAgICAjIG5zcyBwcmV0dHkgbXVjaCBkb2VzIGl0cyBvd24gdGhpbmcgd2l0aCBDRkxBR1MsIHNvIHdlIHB1dCB0aGVtIGludG8gQ0MuCisgICAgIyBPcHRpbWl6YXRpb24gd2lsbCBnZXQgY2xvYmJlcmVkLCBidXQgbW9zdCBvZiB0aGUgc3R1ZmYgd2lsbCBzdXJ2aXZlLgorICAgICMgVGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgaXMgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIGRlYnVnCisgICAgIyBzb3VyY2UgZmlsZXMgYW5kIENGTEFHUyBkb2VzIHRoYXQuICBOb3RoaW5nIHVzZXMgQ0NDLgorICAgICMKKyAgICBleHBvcnQgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSIKKyAgICBtYWtlIC1DIC4vbnNzIENDQz0iJHtDWFh9IC1nIiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFJQQVRIPSIke1JQQVRIfSIKK30KK2RvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCisKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgZXhwb3J0IExERkxBR1M9IiIKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisKKyAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQorICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCisgICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQorICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCisKKyAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKKyAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4CisgICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKKworICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjNjQKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1taXBzCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBVU0VfNjQ9MQorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKKyAgICBmaQorCisgICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCisKKyAgICBtYWtlIC1DIC4vbnNzIFwKKyAgICAgICAgQ0NDPSIke0NYWH0iIFwKKyAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKKyAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAorICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCisgICAgICAgIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCisgICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbworICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCisgICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KKyAgICBkb25lCisKKyAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbworICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KKyAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9CisgICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQorICAgICAgICBmaQorICAgIGRvbmUKKyAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KKyAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9CisgICAgICAgIGZpCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMworICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQorICAgIGRvbmUKK30KK2RvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCisgICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCisgICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbworICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQorICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICBkb25lCisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKyAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgQ3JlYXRlIGEgYmxhbmsgY2VydGlmaWNhdGUKKyAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCisgICAgdG91Y2ggLi9lbXB0eV9wYXNzd29yZAorICAgIGNlcnR1dGlsIC1OIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8gLWYgLi9lbXB0eV9wYXNzd29yZAorICAgIGNobW9kIDY0NCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvKi5kYgorICAgIHJtIC4vZW1wdHlfcGFzc3dvcmQKK30KKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJuc3MtbmF0aXZlIgorcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICBpZiBbIC1uICIkRCIgXTsgdGhlbgorICAgICAgICBmb3IgSSBpbiAkRCR7bGliZGlyfS9saWIqLmNoazsgZG8KKyAgICAgICAgICAgIEROPWBkaXJuYW1lICRJYAorICAgICAgICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCisgICAgICAgICAgICBGTj0kRE4vJEJOLnNvCisgICAgICAgICAgICBzaGxpYnNpZ24gLWkgJEZOCisgICAgICAgICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KKyAgICAgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICBlbHNlCisgICAgICAgIHNpZ25saWJzLnNoCisgICAgZmkKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXNtaW1lIgorRklMRVNfJHtQTn0tc21pbWUgPSAiXAorICAgICR7YmluZGlyfS9zbWltZSBcCisiCitGSUxFU18ke1BOfSA9ICJcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtiaW5kaXJ9IFwKKyAgICAke2xpYmRpcn0vbGliKi5jaGsgXAorICAgICR7bGliZGlyfS9saWIqLnNvIFwKKyAgICAiCitGSUxFU18ke1BOfS1kZXYgPSAiXAorICAgICR7bGliZGlyfS9uc3MgXAorICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCisgICAgJHtpbmNsdWRlZGlyfS8qIFwKKyAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4xLjAvZ3BnLWVycm9yX3BrY29uZi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjEuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4xLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9saWJhc3N1YW5fcGtnY29uZi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMS4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxOWFjZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIgotREVTQ1JJUFRJT04gPSAiXAotCVBpbmVudHJ5IGlzIGEgY29sbGVjdGlvbiBvZiBzaW1wbGUgUElOIG9yIHBhc3NwaHJhc2UgZW50cnkgZGlhbG9ncyB3aGljaCBcCi0JdXRpbGl6ZSB0aGUgQXNzdWFuIHByb3RvY29sIGFzIGRlc2NyaWJlZCBieSB0aGUgYWVneXB0ZW4gcHJvamVjdDsgc2VlIFwKLQlodHRwOi8vd3d3LmdudXBnLm9yZy9hZWd5cHRlbi8gZm9yIGRldGFpbHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL3BpbmVudHJ5L2luZGV4LmVuLmh0bWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2JiZDc5NGUyYTBhMjg5YjlkZmNjOWY1MTNkMTk5NmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGxpYmFzc3VhbiBsaWJncGctZXJyb3IiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGEzZmFkOGIzMWY5YjRjNTUyNmM4ODM3NDk1MDE1ZGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTY3MmMyZWRjMWZlYjAzNjA3NWIxODdjMDc3Mzc4N2IyYWZkMDU0NGY1NTAyNWM2NDVhNzFiNGMyZjc5Mjc1YSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ycGF0aCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXBpbmVudHJ5LXF0NSAgXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAibmN1cnNlcyBsaWJjYXAiCi0KLVBBQ0tBR0VDT05GSUdbbmN1cnNlc10gPSAiLS1lbmFibGUtbmN1cnNlcyAgLS13aXRoLW5jdXJzZXMtaW5jbHVkZS1kaXI9JHtTVEFHSU5HX0lOQ0RJUn0sIC0tZGlzYWJsZS1uY3Vyc2VzLCBuY3Vyc2VzIgotUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsIC0td2l0aG91dC1saWJjYXAsIGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbcXRdID0gIi0tZW5hYmxlLXBpbmVudHJ5LXF0LCAtLWRpc2FibGUtcGluZW50cnktcXQsIHF0NC14MTEiCi1QQUNLQUdFQ09ORklHW2d0azJdID0gIi0tZW5hYmxlLXBpbmVudHJ5LWd0azIsIC0tZGlzYWJsZS1waW5lbnRyeS1ndGsyLCBndGsrIGdsaWItMi4wIgotCi0jVG8gdXNlIGxpYnNlY3JldCwgYWRkIG1ldGEtZ25vbWUKLVBBQ0tBR0VDT05GSUdbc2VjcmV0XSA9ICItLWVuYWJsZS1saWJzZWNyZXQsIC0tZGlzYWJsZS1saWJzZWNyZXQsIGxpYnNlY3JldCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWFhMjYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMS4wLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBzaW1wbGUgUElOIG9yIHBhc3NwaHJhc2UgZW50cnkgZGlhbG9ncyIKK0RFU0NSSVBUSU9OID0gIlwKKwlQaW5lbnRyeSBpcyBhIGNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3Mgd2hpY2ggXAorCXV0aWxpemUgdGhlIEFzc3VhbiBwcm90b2NvbCBhcyBkZXNjcmliZWQgYnkgdGhlIGFlZ3lwdGVuIHByb2plY3Q7IHNlZSBcCisJaHR0cDovL3d3dy5nbnVwZy5vcmcvYWVneXB0ZW4vIGZvciBkZXRhaWxzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9waW5lbnRyeS9pbmRleC5lbi5odG1sIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmQ3OTRlMmEwYTI4OWI5ZGZjYzlmNTEzZDE5OTZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSBsaWJhc3N1YW4gbGliZ3BnLWVycm9yIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9saWJhc3N1YW5fcGtnY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ncGctZXJyb3JfcGtjb25mLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjM4MjkzMTVjYjBhMWU5Y2VkYzA1ZmZlNmRlZjdhMmM2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4MDc2Njg2ZmE3MjRhMjkwZWE0OWNkZjBkMWMwYzE1MDA5MDdkMWI3NTlhM2JjYmZiZWMwMjkzZThmNTY1NzAiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1waW5lbnRyeS1xdDUgIFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm5jdXJzZXMgbGliY2FwIgorCitQQUNLQUdFQ09ORklHW25jdXJzZXNdID0gIi0tZW5hYmxlLW5jdXJzZXMgIC0td2l0aC1uY3Vyc2VzLWluY2x1ZGUtZGlyPSR7U1RBR0lOR19JTkNESVJ9LCAtLWRpc2FibGUtbmN1cnNlcywgbmN1cnNlcyIKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLCAtLXdpdGhvdXQtbGliY2FwLCBsaWJjYXAiCitQQUNLQUdFQ09ORklHW3F0XSA9ICItLWVuYWJsZS1waW5lbnRyeS1xdCwgLS1kaXNhYmxlLXBpbmVudHJ5LXF0LCBxdDQteDExIgorUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItLWVuYWJsZS1waW5lbnRyeS1ndGsyLCAtLWRpc2FibGUtcGluZW50cnktZ3RrMiwgZ3RrKyBnbGliLTIuMCIKKworI1RvIHVzZSBsaWJzZWNyZXQsIGFkZCBtZXRhLWdub21lCitQQUNLQUdFQ09ORklHW3NlY3JldF0gPSAiLS1lbmFibGUtbGlic2VjcmV0LCAtLWRpc2FibGUtbGlic2VjcmV0LCBsaWJzZWNyZXQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWI3MWMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLjEuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJBIEMgcHJvZ3JhbSB0byBydW4gYWxsIGluc3RhbGxlZCBwdGVzdHMiCitERVNDUklQVElPTiA9ICJUaGUgcHRlc3QtcnVubmVyMiBwYWNrYWdlIGluc3RhbGxzIGEgcHRlc3QtcnVubmVyIFwKK3Byb2dyYW0gd2hpY2ggbG9vcHMgdGhyb3VnaCBhbGwgaW5zdGFsbGVkIHB0ZXN0IHRlc3Qgc3VpdGVzIGFuZCBcCitydW5zIHRoZW0gaW4gc2VxdWVuY2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcHRlc3QtcnVubmVyMi9hYm91dC8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDUkVWID0gIjE2NDEzZDcxY2MwNmIwMmE2ZDg1OWMzNWEwMTdjYzQ5Yjg4MjgzZjciCitQViA9ICIyLjEuMStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wdGVzdC1ydW5uZXIyIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lciIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7U30vcHRlc3QtcnVubmVyICR7RH0ke2JpbmRpcn0vcHRlc3QtcnVubmVyCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYzFkYWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIEMgcHJvZ3JhbSB0byBydW4gYWxsIGluc3RhbGxlZCBwdGVzdHMiCi1ERVNDUklQVElPTiA9ICJUaGUgcHRlc3QtcnVubmVyMiBwYWNrYWdlIGluc3RhbGxzIGEgcHRlc3QtcnVubmVyIFwKLXByb2dyYW0gd2hpY2ggbG9vcHMgdGhyb3VnaCBhbGwgaW5zdGFsbGVkIHB0ZXN0IHRlc3Qgc3VpdGVzIGFuZCBcCi1ydW5zIHRoZW0gaW4gc2VxdWVuY2UuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcHRlc3QtcnVubmVyMi9hYm91dC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU1JDUkVWID0gIjhhOTM4MzJkYWQ2MjE1MzVlOTBhYThlMWZiNzRhZTViYTc0M2ZjM2UiCi1QViA9ICIyLjErZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHRlc3QtcnVubmVyMiIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wdGVzdC1ydW5uZXIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcmVhZF9lcnJvcl9tc2cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9yZWFkX2Vycm9yX21zZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWExM2JmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcmVhZF9lcnJvcl9tc2cucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorcm5nLXRvb2xzOiBtb2RpZnkgJ3JlYWQgZXJyb3InIG1lc3NhZ2UKKworTWFrZSB0aGUgJ3JlYWQgZXJyb3InIG1lc3NhZ2UgbW9yZSBkZXNjcmlwdGl2ZS4KKworQ29waWVkIGZyb20gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2F0dGFjaG1lbnQuY2dpP2lkPTEyOTU4NTcKK2FuZCBtb2RpZmllZCBpbiBvbmUgcGxhY2UgdG8gYXBwbHkgc3VjY2Vzc2Z1bGx5LiAgRXJyb3IgbWVzc2FnZSBkdXJpbmcKK2Jvb3RzdHJhcCBtb2RpZmllZCB0byBzaG93IGRldmljZSBuYW1lLgorCitVcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKKy0tLSBhL3JuZ2QuYworKysrIGIvcm5nZC5jCitAQCAtMjQ3LDggKzI0NywxMSBAQCBzdGF0aWMgdm9pZCBkb19sb29wKGludCByYW5kb21fc3RlcCkKKyAJCQkJY29udGludWU7CS8qIGZhaWxlZCwgbm8gd29yayAqLworIAorIAkJCXJldHZhbCA9IGl0ZXItPnhyZWFkKGJ1Ziwgc2l6ZW9mIGJ1ZiwgaXRlcik7CistCQkJaWYgKHJldHZhbCkKKysJCQlpZiAocmV0dmFsKSB7CisrCQkJCW1lc3NhZ2UoTE9HX0RBRU1PTnxMT0dfRVJSLAorKwkJCQkJIkVycm9yIHJlYWRpbmcgZnJvbSBlbnRyb3B5IHNvdXJjZVxuIik7CisgCQkJCWNvbnRpbnVlOwkvKiBmYWlsZWQsIG5vIHdvcmsgKi8KKysJCQl9CisgCisgCQkJd29ya19kb25lID0gdHJ1ZTsKKyAKKy0tLSBhL3JuZ2RfZW50c291cmNlLmMKKysrKyBiL3JuZ2RfZW50c291cmNlLmMKK0BAIC02MywxMCArNjMsOCBAQCBpbnQgeHJlYWQodm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgc3RydWN0CisgCQlzaXplIC09IHI7CisgCX0KKyAKKy0JaWYgKHNpemUpIHsKKy0JCW1lc3NhZ2UoTE9HX0RBRU1PTnxMT0dfRVJSLCAicmVhZCBlcnJvclxuIik7CisrCWlmIChzaXplKQorIAkJcmV0dXJuIC0xOworLQl9CisgCXJldHVybiAwOworIH0KKyAKK0BAIC0xNTIsNyArMTUwLDcgQEAgZXJyb3Jfb3V0OgorIH0KKyAKKyAvKiBJbml0aWFsaXplIGVudHJvcHkgc291cmNlICovCistc3RhdGljIGludCBkaXNjYXJkX2luaXRpYWxfZGF0YShzdHJ1Y3Qgcm5nICplbnRfc3JjKQorK3N0YXRpYyBpbnQgZGlzY2FyZF9pbml0aWFsX2RhdGEoc3RydWN0IHJuZyAqZW50X3NyYywgaW50ICpidWYpCisgeworIAkvKiBUcmFzaCAzMiBiaXRzIG9mIHdoYXQgaXMgcHJvYmFibHkgc3RhbGUgKG5vbi1yYW5kb20pCisgCSAqIGluaXRpYWwgc3RhdGUgZnJvbSB0aGUgUk5HLiAgRm9yIEludGVsJ3MsIDggYml0cyB3b3VsZAorQEAgLTE2NCwxMCArMTYyLDEyIEBAIHN0YXRpYyBpbnQgZGlzY2FyZF9pbml0aWFsX2RhdGEoc3RydWN0IHIKKyAJeHJlYWQodGVtcGJ1Ziwgc2l6ZW9mKHRlbXBidWYpLCBlbnRfc3JjKTsKKyAKKyAJLyogUmV0dXJuIDMyIGJpdHMgb2YgYm9vdHN0cmFwIGRhdGEgKi8KKy0JeHJlYWQodGVtcGJ1Ziwgc2l6ZW9mKHRlbXBidWYpLCBlbnRfc3JjKTsKKysJaWYgKHhyZWFkKHRlbXBidWYsIHNpemVvZih0ZW1wYnVmKSwgZW50X3NyYykgIT0gMCkKKysJCXJldHVybiAtMTsKKyAKKy0JcmV0dXJuIHRlbXBidWZbMF0gfCAodGVtcGJ1ZlsxXSA8PCA4KSB8CisrCSpidWYgPSB0ZW1wYnVmWzBdIHwgKHRlbXBidWZbMV0gPDwgOCkgfAorIAkJKHRlbXBidWZbMl0gPDwgMTYpIHwgKHRlbXBidWZbM10gPDwgMjQpOworKwlyZXR1cm4gMDsKKyB9CisgCisgLyoKK0BAIC0xNzUsNiArMTc1LDggQEAgc3RhdGljIGludCBkaXNjYXJkX2luaXRpYWxfZGF0YShzdHJ1Y3QgcgorICAqLworIGludCBpbml0X2VudHJvcHlfc291cmNlKHN0cnVjdCBybmcgKmVudF9zcmMpCisgeworKwlpbnQgYm9vdHN0cmFwOworKworIAllbnRfc3JjLT5ybmdfZmQgPSBvcGVuKGVudF9zcmMtPnJuZ19uYW1lLCBPX1JET05MWSk7CisgCWlmIChlbnRfc3JjLT5ybmdfZmQgPT0gLTEpIHsKKyAJCXJldHVybiAxOworQEAgLTE4Miw3ICsxODQsMTEgQEAgaW50IGluaXRfZW50cm9weV9zb3VyY2Uoc3RydWN0IHJuZyAqZW50XworIAlzcmNfbGlzdF9hZGQoZW50X3NyYyk7CisgCS8qIEJvb3RzdHJhcCBGSVBTIHRlc3RzICovCisgCWVudF9zcmMtPmZpcHNjdHggPSBtYWxsb2Moc2l6ZW9mKGZpcHNfY3R4X3QpKTsKKy0JZmlwc19pbml0KGVudF9zcmMtPmZpcHNjdHgsIGRpc2NhcmRfaW5pdGlhbF9kYXRhKGVudF9zcmMpKTsKKysJaWYgKGRpc2NhcmRfaW5pdGlhbF9kYXRhKGVudF9zcmMsICZib290c3RyYXApICE9IDApIHsKKysJCW1lc3NhZ2UoTE9HX0VSUnxMT0dfSU5GTywgIlJlYWQgZmFpbHVyZSBpbiAlcyBkdXJpbmcgYm9vdHN0cmFwXG4iLGVudF9zcmMtPnJuZ19uYW1lKTsKKysJCXJldHVybiAxOworKwl9CisrCWZpcHNfaW5pdChlbnRfc3JjLT5maXBzY3R4LCBib290c3RyYXApOworIAlyZXR1cm4gMDsKKyB9CisgCistLS0gYS9ybmd0ZXN0LmMKKysrKyBiL3JuZ3Rlc3QuYworQEAgLTMzNSw2ICszMzUsNyBAQCBzdGF0aWMgaW50IGRpc2NhcmRfaW5pdGlhbF9kYXRhKHZvaWQpCisgCisgCXJldHVybiB0ZW1wYnVmWzBdIHwgKHRlbXBidWZbMV0gPDwgOCkgfAorIAkJKHRlbXBidWZbMl0gPDwgMTYpIHwgKHRlbXBidWZbM10gPDwgMjQpOworKworIH0KKyAKKyBzdGF0aWMgdm9pZCBkb19ybmdfZmlwc190ZXN0X2xvb3AoIHZvaWQgKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIKaW5kZXggNGE2NmJlZC4uYjNjOWZkOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCkBAIC03LDYgKzcsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtYXJndW1lbnQtdG8tY29udHJvbC10aGUtbGliYXJncC1kZXBlbmRlbmN5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3VuZGVycXVvdGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcm5nLXRvb2xzLTUtZml4LXRleHRyZWxzLW9uLVBJQy14ODYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVhZF9lcnJvcl9tc2cucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0IFwKICAgICAgICAgICAgZmlsZTovL3JuZ2Quc2VydmljZSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmL25vcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmL25vcnBhdGgucGF0Y2gKaW5kZXggMzgwZjVkMC4uYzM5MjQ0NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi9ub3JwYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zZXJmL3NlcmYvbm9ycGF0aC5wYXRjaApAQCAtNSwxMSArNSwxMSBAQAogCiBSUCAyMDE0LzcvMTcKIAotSW5kZXg6IHNlcmYtMS4zLjYvU0NvbnN0cnVjdAorSW5kZXg6IHNlcmYtMS4zLjkvU0NvbnN0cnVjdAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNlcmYtMS4zLjYub3JpZy9TQ29uc3RydWN0CTIwMTQtMDctMTcgMTk6NTc6NTcuNzI0Mzg5MTUwICswMDAwCi0rKysgc2VyZi0xLjMuNi9TQ29uc3RydWN0CTIwMTQtMDctMTcgMjA6MDQ6MjEuNzg0Mzk5NjE2ICswMDAwCi1AQCAtMjE4LDggKzIxOCw3IEBACistLS0gc2VyZi0xLjMuOS5vcmlnL1NDb25zdHJ1Y3QKKysrKyBzZXJmLTEuMy45L1NDb25zdHJ1Y3QKK0BAIC0yMjQsOCArMjI0LDcgQEAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgZWxzZToKICAgIExJQk5BTUVTVEFUSUMgPSAnc2VyZi0ke01BSk9SfScKICAKQEAgLTE3LDkgKzE3LDkgQEAKIC0gICAgICAgICAgIFBEQj0nJHtUQVJHRVQuZmlsZWJhc2V9LnBkYicpCiArZW52LkFwcGVuZChQREI9JyR7VEFSR0VULmZpbGViYXNlfS5wZGInKQogIAotICNmb3IgaSBpbiBlbnY6Ci0gIyAgICBwcmludChzdHIoZW52W2ldKSkKLUBAIC0zNzEsMTIgKzM3MCw2IEBACisgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICMgIGxpbmtmbGFncy5hcHBlbmQoJy1XbCwtaW5zdGFsbF9uYW1lLEBleGVjdXRhYmxlX3BhdGgvJXMuZHlsaWInICUgKExJQk5BTUUsKSkKK0BAIC0zODUsMTIgKzM4NCw2IEBAIGlmIGdzc2FwaSBhbmQgQ0FMTE9VVF9PS0FZOgogIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgZW52LkFwcGVuZChDUFBERUZJTkVTPVsnU0VSRl9IQVZFX1NTUEknXSkKICAKQEAgLTMyLDggKzMyLDggQEAKICAjIFNldCB1cCB0aGUgY29uc3RydWN0aW9uIG9mIHNlcmYtKi5wYwogIHBrZ2NvbmZpZyA9IGVudi5UZXh0ZmlsZSgnc2VyZi0lZC5wYycgJSAoTUFKT1IsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LkZpbGUoJ2J1aWxkL3NlcmYucGMuaW4nKSwKLUBAIC00NDYsNyArNDM5LDYgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOVj17J1BBVEgnIDogb3MuZW52aXJvblsnUEFUSCddfSkpCitAQCAtNDYxLDcgKzQ1NCw2IEBAIGVsc2U6CisgICBURVNUX0VYRVMgPSBbIG9zLnBhdGguam9pbigndGVzdCcsICclcycgJSAocHJvZykpIGZvciBwcm9nIGluIFRFU1RfUFJPR1JBTVMgXQogIAogICMgRmluZCB0aGUgKGR5bmFtaWMpIGxpYnJhcnkgaW4gdGhpcyBkaXJlY3RvcnkKIC10ZW52LlJlcGxhY2UoUlBBVEg9dGhpc2RpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoCmluZGV4IDNjOWYxZWEuLjI2MmZmNzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaApAQCAtOCwxNiArOCwxOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CiAKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTQ0LDcgKzQ0LDkgQEAgJChwa2djb25maWdfREFUQSk6IGNvbmZpZy5zdGF0dXMKLSBASU5UTFRPT0xfWE1MX1JVTEVACi0gQElOVExUT09MX0RFU0tUT1BfUlVMRUAKK0luZGV4OiBzaGFyZWQtbWltZS1pbmZvLTEuOS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNoYXJlZC1taW1lLWluZm8tMS45Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBzaGFyZWQtbWltZS1pbmZvLTEuOS9NYWtlZmlsZS5hbQorQEAgLTUwLDcgKzUwLDkgQEAgZWxzZQorICAgdXBkYXRlX21pbWVfZGF0YWJhc2U9IiQodG9wX2J1aWxkZGlyKS91cGRhdGUtbWltZS1kYXRhYmFzZSQoRVhFRVhUKSIKKyBlbmRpZgogIAogLWluc3RhbGwtZGF0YS1ob29rOiBpbnN0YWxsLWJpblBST0dSQU1TCiArIyBkbyBOT1QgbWFrZSB0aGlzIGRlcGVuZGVudCBvbiBhbnl0aGluZyEKICsjCiAraW5zdGFsbC1kYXRhLWhvb2s6CiAgaWYgRU5BQkxFX1VQREFURV9NSU1FREIKLSAJJChERVNURElSKSIkKGJpbmRpcikvdXBkYXRlLW1pbWUtZGF0YWJhc2UiIC1WICIkKERFU1RESVIpJChkYXRhZGlyKS9taW1lIgorIAkkKHVwZGF0ZV9taW1lX2RhdGFiYXNlKSAtViAiJChERVNURElSKSQoZGF0YWRpcikvbWltZSIKICBlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL3BhcmFsbGVsbWFrZS5wYXRjaAppbmRleCA4NGM0ZDAzLi5mZWEzNGE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL3BhcmFsbGVsbWFrZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL3BhcmFsbGVsbWFrZS5wYXRjaApAQCAtMTEsMTcgKzExLDE3IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KIAotSW5kZXg6IHNoYXJlZC1taW1lLWluZm8tMS4wL01ha2VmaWxlLmFtCitJbmRleDogc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzaGFyZWQtbWltZS1pbmZvLTEuMC5vcmlnL01ha2VmaWxlLmFtCi0rKysgc2hhcmVkLW1pbWUtaW5mby0xLjAvTWFrZWZpbGUuYW0KKy0tLSBzaGFyZWQtbWltZS1pbmZvLTEuOS5vcmlnL01ha2VmaWxlLmFtCisrKysgc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KIEBAIC0xLDUgKzEsMyBAQAogLVNVQkRJUlM9LiBwbwogLQogIEFNX0NQUEZMQUdTID0gJChBTExfQ0ZMQUdTKQogIAogIHBhY2thZ2VzZGlyID0gJChkYXRhZGlyKS9taW1lL3BhY2thZ2VzCi1AQCAtNzIsOCArNzAsNyBAQCB1bmluc3RhbGwtaG9vazoKK0BAIC04MSw4ICs3OSw3IEBAIGVuZGlmCiAgCiAgYWxsOiAkKGRlZmF1bHRtYWtlZGVwcykKICAKQEAgLTI5LDUgKzI5LDUgQEAKIC0JJChBTV9WX0dFTikgJChNQUtFKSAtQyBwbyBzaGFyZWQtbWltZS1pbmZvLnBvdAogK2NyZWF0ZS1wb3Q6IHBvCiAgCi0gY2hlY2s6IGNyZWF0ZS1wb3QgZnJlZWRlc2t0b3Aub3JnLnhtbCB1cGRhdGUtbWltZS1kYXRhYmFzZSBjaGVjay10cmFuc2xhdGlvbnMKLSAJaWYgdGVzdCAtZSAkKHRvcF9idWlsZGRpcikvZnJlZWRlc2t0b3Aub3JnLnhtbDsgdGhlbiBcCisgbG9jYWwtdGVzdDogY3JlYXRlLXBvdCBmcmVlZGVza3RvcC5vcmcueG1sIHVwZGF0ZS1taW1lLWRhdGFiYXNlJChFWEVFWFQpCisgaWYgQ1JPU1NfQ09NUElMSU5HCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDlkOTk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHNoYXJlZC1taW1lLWluZm8uaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9wYXJhbGxlbG1ha2UucGF0Y2ggXAotCSAgICBmaWxlOi8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNmRjYWRjZTc2NDYwNTU1MmZjOTU2NTYzZWZhMDU4YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYWY1NWVmMWEwMzE5ODA1Yjc0YWI0MGQzMzFhMzk2MmM5MDU0NzdkNzZjMDg2ZjQ5ZTM0ZGM5NjM2MzU4OWU5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWIyNzNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjkuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIHNoYXJlZC1taW1lLWluZm8uaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9wYXJhbGxlbG1ha2UucGF0Y2ggXAorCSAgICBmaWxlOi8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NTEwMzg4OWI5MTI0Mjg1MGFhNDdmMDkzMjVlNzk4YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YzAxMzNlYzRlMjI4ZTQxYmRmNTJmNzI2ZDI3MWEyZDgyMTQ5OWMyYWI5N2FmZDNhYTNkNmNmNDNlZmNkYzgzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhYzQyOGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZpeCBDVkUtMjAxNy0xMzY4NQotCi1UaGUgZHVtcF9jYWxsYmFjayBmdW5jdGlvbiBpbiBTUUxpdGUgMy4yMC4wIGFsbG93cyByZW1vdGUgYXR0YWNrZXJzIHRvCi1jYXVzZSBhIGRlbmlhbCBvZiBzZXJ2aWNlIChFWENfQkFEX0FDQ0VTUyBhbmQgYXBwbGljYXRpb24gY3Jhc2gpIHZpYSBhCi1jcmFmdGVkIGZpbGUuCi0KLVJlZmVyZW5jZXM6Ci1odHRwczovL3NxbGl0ZS5vcmcvc3JjL2luZm8vMDJmMGY0YzU0ZjI4MTliMwotaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3NxbGl0ZS11c2VycyU0MG1haWxpbmdsaXN0cy5zcWxpdGUub3JnL21zZzEwNTMxNC5odG1sCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc3FsaXRlLm9yZy9zcmMvaW5mby9jZjBkMzcxNWNhYWM5MTQ5XQotCi1DVkU6IENWRS0yMDE3LTEzNjg1Ci0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogc3JjL3NoZWxsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNyYy9zaGVsbC5jCi0rKysgc3JjL3NoZWxsLmMKLUBAIC0yNjU3LDEwICsyNjU3LDExIEBACi0gICBpbnQgKmFpVHlwZSAgICAgIC8qIENvbHVtbiB0eXBlcyAqLwotICl7Ci0gICBpbnQgaTsKLSAgIFNoZWxsU3RhdGUgKnAgPSAoU2hlbGxTdGF0ZSopcEFyZzsKLSAKLSsgIGlmKCBhekFyZz09MCApIHJldHVybiAwOwotICAgc3dpdGNoKCBwLT5jTW9kZSApewotICAgICBjYXNlIE1PREVfTGluZTogewotICAgICAgIGludCB3ID0gNTsKLSAgICAgICBpZiggYXpBcmc9PTAgKSBicmVhazsKLSAgICAgICBmb3IoaT0wOyBpPG5Bcmc7IGkrKyl7Ci1AQCAtMzAwNywxMCArMzAwOCwxMSBAQAotICovCi0gc3RhdGljIGludCBjYXB0dXJlT3V0cHV0Q2FsbGJhY2sodm9pZCAqcEFyZywgaW50IG5BcmcsIGNoYXIgKiphekFyZywgY2hhciAqKmF6KXsKLSAgIFNoZWxsVGV4dCAqcCA9IChTaGVsbFRleHQqKXBBcmc7Ci0gICBpbnQgaTsKLSAgIFVOVVNFRF9QQVJBTUVURVIoYXopOwotKyAgaWYoIGF6QXJnPT0wICkgcmV0dXJuIDA7Ci0gICBpZiggcC0+biApIGFwcGVuZFRleHQocCwgInwiLCAwKTsKLSAgIGZvcihpPTA7IGk8bkFyZzsgaSsrKXsKLSAgICAgaWYoIGkgKSBhcHBlbmRUZXh0KHAsICIsIiwgMCk7Ci0gICAgIGlmKCBhekFyZ1tpXSApIGFwcGVuZFRleHQocCwgYXpBcmdbaV0sIDApOwotICAgfQotQEAgLTM4ODgsMTEgKzM4OTAsMTEgQEAKLSAgIGNvbnN0IGNoYXIgKnpUeXBlOwotICAgY29uc3QgY2hhciAqelNxbDsKLSAgIFNoZWxsU3RhdGUgKnAgPSAoU2hlbGxTdGF0ZSAqKXBBcmc7Ci0gCi0gICBVTlVTRURfUEFSQU1FVEVSKGF6Tm90VXNlZCk7Ci0tICBpZiggbkFyZyE9MyApIHJldHVybiAxOwotKyAgaWYoIG5BcmchPTMgfHwgYXpBcmc9PTAgKSByZXR1cm4gMDsKLSAgIHpUYWJsZSA9IGF6QXJnWzBdOwotICAgelR5cGUgPSBhekFyZ1sxXTsKLSAgIHpTcWwgPSBhekFyZ1syXTsKLSAKLSAgIGlmKCBzdHJjbXAoelRhYmxlLCAic3FsaXRlX3NlcXVlbmNlIik9PTAgKXsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTA4MjU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHNxbGl0ZTMuaW5jCi0KLUxJQ0VOU0UgPSAiUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcWxpdGUzLmg7ZW5kbGluZT0xMTttZDU9Nzg2ZDNkYzU4MWVmZjAzZjRmZDllNGE3N2VkMDBjNjYiCi0KLVNSQ19VUkkgPSAiXAotICBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvMjAxNy9zcWxpdGUtYXV0b2NvbmYtJHtTUUxJVEVfUFZ9LnRhci5neiBcCi0gIGZpbGU6Ly9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaCBcCi0gICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMjYyYTI4YjczY2MzMzBlN2U4MzUyMGM4Y2UxNGU0ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzODE0YzZmNjI5ZmY5Mzk2OGIyYjM3YTcwNDk3Y2ZlOThiMzY2YmY1ODdhMjI2MWE1NmE1Zjc1MGFmNmFlNmEwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY4ODY1OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIyLjAuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBzcWxpdGUzLmluYworCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgorCitTUkNfVVJJID0gIlwKKyAgaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTgvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAorICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOTZiNTY0OGQ1NDJlOGFmYTZhYjdmZmI4ZGI4ZGRjM2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjgyNGFiMTIzOGI3MDZiYzY2MTI3MzIwYWZiZGZmYjA5NjM2MTEzMGUyMzI5MWYyNjkyOGEwMjdiODg1YzYxMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDguMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcyMDg0MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TVU1NQVJZID0gIlZpcnR1YWwgdGVybWluYWwgZW11bGF0b3IgR1RLKyB3aWRnZXQgbGlicmFyeSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD12dGUiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgbGlicGNyZTIgaW50bHRvb2wtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdwZXJmLW5hdGl2ZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotIyB2YXBpZ2VuLm00IGlzIHJlcXVpcmVkIHdoZW4gdmFsYSBpcyBub3QgcHJlc2VudCAoYnV0IHRoZSBvbmUgZnJvbSB2YWxhIHNob3VsZCBiZSB1c2VkIG5vcm1hbGx5KQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG9uLXQtZW5hYmxlLXN0YWNrLXByb3RlY3Rpb24tYnktZGVmYXVsdC5wYXRjaCBcCi0gICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2YWxhJywgJycsICdmaWxlOi8vMDAwMS1BZGQtbTQtdmFwaWdlbi5tNC5wYXRjaCcsIGQpIH0gXAotICAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYjMwMDY3NWFjNWYyNjlhYTZlYjQ4ZmU4OWEwZDcyNmQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJhM2E5ZmIxODI3NDBiMzkyYTQ1Y2QzZjQ2ZmE2MWE5ODVmNjhiYjZiMTgxN2I1MmRhZWMyMjAzNGM0NjE1OGMzIgotCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKLQotIyBJbnN0ZWFkIG9mICJpbmhlcml0IHZhbGEiIHdlIGRvIHRoZSByZWxldmFudCBzZXR0aW5ncyBoZXJlIHNvIHdlIGNhbgotIyBzZXQgREVQRU5EUyBiYXNlZCBvbiBQQUNLQUdFQ09ORklHLgotCi0jIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgU1RBR0lOR19EQVRBRElSCi0jIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgotCi0jIEhlbHAgZy1pci1zY2FubmVyIGZpbmQgdGhlIC5zbyBmb3IgbGlua2luZwotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvLmxpYnMiCi19Ci0KLSMgUGFja2FnZSBhZGRpdGlvbmFsIGZpbGVzCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vdmFsYS92YXBpLyoiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3ZhbGFdID0gIi0tZW5hYmxlLXZhbGEsLS1kaXNhYmxlLXZhbGEsdmFsYS1uYXRpdmUgdmFsYSIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdC1hcHBsaWNhdGlvbiIKLQotIyBsaWJ0b29sIGFkZHMgIi1ub3N0ZGxpYiIgd2hlbiBnKysgaXMgdXNlZC4gVGhpcyBicmVha3MgUElFIGJ1aWxkcy4KLSMgVXNlIGxpYnRvb2wtY3Jvc3MgKHdoaWNoIGhhcyBhIGhhY2sgdG8gcHJldmVudCB0aGF0KSBpbnN0ZWFkLgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiCi0KLVBBQ0tBR0VTID0rICJsaWJ2dGUiCi1GSUxFU19saWJ2dGUgPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41MC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41MC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOWVlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjUwLjIuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKKyMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvbi10LWVuYWJsZS1zdGFjay1wcm90ZWN0aW9uLWJ5LWRlZmF1bHQucGF0Y2ggXAorICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsYScsICcnLCAnZmlsZTovLzAwMDEtQWRkLW00LXZhcGlnZW4ubTQucGF0Y2gnLCBkKSB9IFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjE5MTJjZmQxZDljZGQzMGNlYmViOTA4NTA3YWNhZGM1IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNzlkZDMxNmJmYWZmNDhmMmZiNzRkMDY2YmFhZTBkODMwZTFmNDQ0MzY3OTZmZTQxMGE1NzI5N2U1YzVmMDljZiIKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCisKKyMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KKyMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KKworIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcworZXhwb3J0IFNUQUdJTkdfREFUQURJUgorIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKKworIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjLy5saWJzIgorfQorCisjIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItLWVuYWJsZS12YWxhLC0tZGlzYWJsZS12YWxhLHZhbGEtbmF0aXZlIHZhbGEiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3QtYXBwbGljYXRpb24iCisKKyMgbGlidG9vbCBhZGRzICItbm9zdGRsaWIiIHdoZW4gZysrIGlzIHVzZWQuIFRoaXMgYnJlYWtzIFBJRSBidWlsZHMuCisjIFVzZSBsaWJ0b29sLWNyb3NzICh3aGljaCBoYXMgYSBoYWNrIHRvIHByZXZlbnQgdGhhdCkgaW5zdGVhZC4KK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgorCitQQUNLQUdFUyA9KyAibGlidnRlIgorRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm0tbGludXgKaW5kZXggZTZiOWE3Mi4uZmIzYzgxZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm0tbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm0tbGludXgKQEAgLTMsNyArMyw2IEBACiBhY19jdl9zaXplb2ZfY2hhcj0ke2FjX2N2X3NpemVvZl9jaGFyPTF9CiBhY19jdl9zaXplb2Zfd2NoYXJfdD0ke2FjX2N2X3NpemVvZl93Y2hhcl90PTF9CiBhY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0ke2FjX2N2X3NpemVvZl91bnNpZ25lZF9jaGFyPTF9Ci1hY19jdl9zaXplb2ZfYm9vbD0ke2FjX2N2X3NpemVvZl9ib29sPTF9CiBhY19jdl9zaXplb2ZfY2hhcl9wPSR7YWNfY3Zfc2l6ZW9mX2ludF9wPTR9CiBhY19jdl9zaXplb2ZfaW50PSR7YWNfY3Zfc2l6ZW9mX2ludD00fQogYWNfY3Zfc2l6ZW9mX2ludF9wPSR7YWNfY3Zfc2l6ZW9mX2ludF9wPTR9CkBAIC0xNDIsNyArMTQxLDYgQEAKIGNsYW1hdl9hdl9mdW5jX3dvcmtpbmdfc25wcmludGZfbG9uZz0ke2NsYW1hdl9hdl9mdW5jX3dvcmtpbmdfc25wcmludGZfbG9uZz15ZXN9CiBjbGFtYXZfYXZfaGF2ZV9pbl9wb3J0X3Q9JHtjbGFtYXZfYXZfaGF2ZV9pbl9wb3J0X3Q9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fYWRkcl90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fYWRkcl90PXllc30KLWFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9JHthY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXllc30KIAogI2RidXMKIGFjX2N2X2hhdmVfYWJzdHJhY3Rfc29ja2V0cz0ke2FjX2N2X2hhdmVfYWJzdHJhY3Rfc29ja2V0cz15ZXN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uCmluZGV4IDVjY2MxNGYuLmZmNTUyMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uCkBAIC0xOCw0ICsxOCw0IEBACiAjIHB5dGhvbjogZGVhY3RpdmF0ZSBhIHJ1bnRpbWUgY2hlY2sgZm9yIGlwdjYtc3VwcG9ydCBpbiBweXRob24gPj0yLjcuMSB0aGF0IGZhaWxzIHdoZW4gY3Jvc3MtY29tcGlsaW5nCiBhY19jdl9idWdneV9nZXRhZGRyaW5mbz1ubwogCi1hY19jdl9wYXRoX1NFRD1zZWQKK2FjX2N2X3BhdGhfU0VEPSR7YWNfY3ZfcGF0aF9TRUQ9c2VkfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eAppbmRleCAyOTU4NzE2Li43MWVjOTYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eApAQCAtNDgsNiArNDgsNyBAQAogCiAjIGNvcmV1dGlscwogZ2xfY3ZfZnVuY19mc3RhdGF0X3plcm9fZmxhZz0ke2dsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9eWVzfQorZ2xfY3ZfaGF2ZV9wcm9jX3VwdGltZT0ke2dsX2N2X2hhdmVfcHJvY191cHRpbWU9eWVzfQogCiAjIG15c3FsCiBhY19jdl9zeXNfcmVzdGFydGFibGVfc3lzY2FsbHM9JHthY19jdl9zeXNfcmVzdGFydGFibGVfc3lzY2FsbHM9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wKaW5kZXggMjZmYzEwMy4uMWI0ZmMzMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1tdXNsCkBAIC0xMiw2ICsxMiw3IEBACiBhY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3dWlkX3I9eWVzfQogYWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPXllc30KIGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm89JHthY19jdl9mdW5jX2dldGFkZHJpbmZvPXllc30KK2FjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9JHthY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXllc30KIAogIyBnbGliCiBnbGliX2N2X3N0cmxjcHk9JHtnbGliX2N2X3N0cmxjcHk9bm99CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgppbmRleCA0ZmJmNThjLi5jNWUzNTRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KQEAgLTUzLDcgKzUzLDYgQEAKIGNsYW1hdl9hdl9mdW5jX3dvcmtpbmdfc25wcmludGZfbG9uZz0ke2NsYW1hdl9hdl9mdW5jX3dvcmtpbmdfc25wcmludGZfbG9uZz15ZXN9CiBjbGFtYXZfYXZfaGF2ZV9pbl9wb3J0X3Q9JHtjbGFtYXZfYXZfaGF2ZV9pbl9wb3J0X3Q9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fYWRkcl90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fYWRkcl90PXllc30KLWFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9JHthY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXllc30KIAogIyBjdnMKIGN2c19jdl9mdW5jX3ByaW50Zl9wdHI9JHtjdnNfY3ZfZnVuY19wcmludGZfcHRyPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWljcm9ibGF6ZS1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWljcm9ibGF6ZS1saW51eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmE0MGM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taWNyb2JsYXplLWxpbnV4CkBAIC0wLDAgKzEsNTQgQEAKKyMgZ2VuZXJhbAorYWNfY3ZfdmFfdmFsX2NvcHk9JHthY19jdl92YV92YWxfY29weT15ZXN9CithY19jdl9zaXplb2ZfX19pbnQ2ND0ke2FjX2N2X3NpemVvZl9fX2ludDY0PTB9CithY19jdl9zaXplb2ZfY2hhcj0ke2FjX2N2X3NpemVvZl9jaGFyPTF9CithY19jdl9zaXplb2ZfaW50PSR7YWNfY3Zfc2l6ZW9mX2ludD00fQorYWNfY3Zfc2l6ZW9mX2xvbmc9JHthY19jdl9zaXplb2ZfbG9uZz00fQorYWNfY3Zfc2l6ZW9mX2xvbmdfaW50PSR7YWNfY3Zfc2l6ZW9mX2xvbmdfaW50PTR9CithY19jdl9zaXplb2ZfbG9uZ19sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz04fQorYWNfY3Zfc2l6ZW9mX3Nob3J0PSR7YWNfY3Zfc2l6ZW9mX3Nob3J0PTJ9CithY19jdl9zaXplb2Zfc2hvcnRfaW50PSR7YWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0yfQorYWNfY3Zfc2l6ZW9mX3NpemVfdD0ke2FjX2N2X3NpemVvZl9zaXplX3Q9NH0KK2FjX2N2X3NpemVvZl9zc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NpemVfdD00fQorYWNfY3Zfc2l6ZW9mX3ZvaWRfcD0ke2FjX2N2X3NpemVvZl92b2lkX3A9NH0KK2FjX2N2X3NpemVvZl9mbG9hdD0ke2FjX2N2X3NpemVvZl9mbG9hdD00fQorYWNfY3Zfc2l6ZW9mX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9kb3VibGU9OH0KK2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZT04fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkPSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkPTR9CithY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0ke2FjX2N2X3NpemVvZl91bnNpZ25lZF9jaGFyPTF9CithY19jdl9zaXplb2ZfdW5zaWduZWRfc2hvcnQ9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfc2hvcnQ9Mn0KK2FjX2N2X3NpemVvZl91bnNpZ25lZF9pbnQ9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfaW50PTR9CithY19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZz0ke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nPTR9CithY19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZ19sb25nPSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmdfbG9uZz04fQorYWNfY3Zfc2l6ZW9mX3NpZ25lZF9jaGFyPSR7YWNfY3Zfc2l6ZW9mX3NpZ25lZF9jaGFyPTF9CithY19jdl91Y2hhcj0ke2FjX2N2X3VjaGFyPW5vfQorYWNfY3ZfdWludD0ke2FjX2N2X3VpbnQ9eWVzfQorYWNfY3ZfdWxvbmc9JHthY19jdl91bG9uZz15ZXN9CithY19jdl91c2hvcnQ9JHthY19jdl91c2hvcnQ9eWVzfQorCisjIGdsaWIKK2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQorZ2xpYl9jdl9oYXNfX2lubGluZT0ke2dsaWJfY3ZfaGFzX19pbmxpbmU9eWVzfQorZ2xpYl9jdl9oYXNfX2lubGluZV9fPSR7Z2xpYl9jdl9oYXNfX2lubGluZV9fPXllc30KK2dsaWJfY3ZfaGFzaW5saW5lPSR7Z2xpYl9jdl9oYXNpbmxpbmU9eWVzfQorZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9CitnbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQorZ2xpYl9jdl92YV9jb3B5PSR7Z2xpYl9jdl92YV9jb3B5PXllc30KK2dsaWJfY3ZfdmFfdmFsX2NvcHk9JHtnbGliX2N2X3ZhX3ZhbF9jb3B5PXllc30KK2dsaWJfY3ZfX192YV9jb3B5PSR7Z2xpYl9jdl9fX3ZhX2NvcHk9eWVzfQorCisjIGdsaWItMi4wCitnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9CithY19jdl9hbGlnbm9mX2d1aW50MzI9NAorYWNfY3ZfYWxpZ25vZl9ndWludDY0PTgKK2FjX2N2X2FsaWdub2ZfdW5zaWduZWRfbG9uZz00CitnbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9MjR9CitnbGliX2N2X3NpemVvZl9pbnRtYXhfdD0ke2dsaWJfY3Zfc2l6ZW9mX2ludG1heF90PTh9CitnbGliX2N2X3NpemVvZl9wdHJkaWZmX3Q9JHtnbGliX2N2X3NpemVvZl9wdHJkaWZmX3Q9NH0KK2dsaWJfY3Zfc2l6ZW9mX3NpemVfdD0ke2dsaWJfY3Zfc2l6ZW9mX3NpemVfdD00fQorZ2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD0ke2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9NH0KK2dsaWJfY3Zfc3lzX3VzZV9waWRfbmljZW5lc3Nfc3Vycm9nYXRlPSR7Z2xpYl9jdl9zeXNfdXNlX3BpZF9uaWNlbmVzc19zdXJyb2dhdGU9eWVzfQorCisjIHN0YXJ0dXAtbm90aWZpY2F0aW9uCitsZl9jdl9zYW5lX3JlYWxsb2M9eWVzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CmluZGV4IDViYWU3NDguLjY3YTNmYzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eApAQCAtMjMyLDcgKzIzMiw2IEBACiBhY19jdl9zaXplb2ZfY2hhcj0ke2FjX2N2X3NpemVvZl9jaGFyPTF9CiBhY19jdl9zaXplb2Zfd2NoYXJfdD0ke2FjX2N2X3NpemVvZl93Y2hhcl90PTF9CiBhY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0ke2FjX2N2X3NpemVvZl91bnNpZ25lZF9jaGFyPTF9Ci1hY19jdl9zaXplb2ZfYm9vbD0ke2FjX2N2X3NpemVvZl9ib29sPTF9CiBhY19jdl9zaXplb2ZfY2hhcl9wPSR7YWNfY3Zfc2l6ZW9mX2ludF9wPTR9CiBhY19jdl9zaXplb2ZfaW50PSR7YWNfY3Zfc2l6ZW9mX2ludD00fQogYWNfY3Zfc2l6ZW9mX2ludF9wPSR7YWNfY3Zfc2l6ZW9mX2ludF9wPTR9CkBAIC0zNzIsNyArMzcxLDYgQEAKIGNsYW1hdl9hdl9mdW5jX3dvcmtpbmdfc25wcmludGZfbG9uZz0ke2NsYW1hdl9hdl9mdW5jX3dvcmtpbmdfc25wcmludGZfbG9uZz15ZXN9CiBjbGFtYXZfYXZfaGF2ZV9pbl9wb3J0X3Q9JHtjbGFtYXZfYXZfaGF2ZV9pbl9wb3J0X3Q9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fYWRkcl90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fYWRkcl90PXllc30KLWFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9JHthY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPXllc30KIAogI2RidXMKIGFjX2N2X2hhdmVfYWJzdHJhY3Rfc29ja2V0cz0ke2FjX2N2X2hhdmVfYWJzdHJhY3Rfc29ja2V0cz15ZXN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcG93ZXJwYzMyLWxpbnV4CmluZGV4IDA2ZDk2MWYuLmYzN2U5MTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcG93ZXJwYzMyLWxpbnV4CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcG93ZXJwYzMyLWxpbnV4CkBAIC0xLDYgKzEsNSBAQAogYWNfY3ZfZnVuY19zZXR2YnVmX3JldmVyc2VkPW5vCiBhY19jdl9zaXplb2ZfX19pbnQ2ND0ke2FjX2N2X3NpemVvZl9fX2ludDY0PTB9Ci1hY19jdl9zaXplb2ZfYm9vbD0ke2FjX2N2X3NpemVvZl9ib29sPTF9CiBhY19jdl9zaXplb2ZfY2hhcj0ke2FjX2N2X3NpemVvZl9jaGFyPTF9CiBhY19jdl9zaXplb2ZfY2hhcl9wPSR7YWNfY3Zfc2l6ZW9mX2NoYXJfcD00fQogYWNfY3Zfc2l6ZW9mX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9kb3VibGU9OH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcmlzY3YzMi1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcmlzY3YzMi1saW51eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2RlNjI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9yaXNjdjMyLWxpbnV4CkBAIC0wLDAgKzEsMTEgQEAKKyMgZ2VuZXJhbAorYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKK2FjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04CithY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9NAorCisjIGdsaWItMi4wCitnbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KK2dsaWJfY3ZfdXNjb3JlPSR7Z2xpYl9jdl91c2NvcmU9bm99CisKKyMgc3RhcnR1cC1ub3RpZmljYXRpb24KK2xmX2N2X3NhbmVfcmVhbGxvYz0ke2xmX2N2X3NhbmVfcmVhbGxvYz15ZXN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2NjQtbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2NjQtbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhiYzVmMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcmlzY3Y2NC1saW51eApAQCAtMCwwICsxLDExIEBACisjIGdlbmVyYWwKK2FjX2N2X2FsaWdub2ZfZ3VpbnQzMj00CithY19jdl9hbGlnbm9mX2d1aW50NjQ9OAorYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTgKKworIyBnbGliLTIuMAorZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99CitnbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQorCisjIHN0YXJ0dXAtbm90aWZpY2F0aW9uCitsZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgppbmRleCBmYzRkNmFkLi45N2M5NjkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgpAQCAtMjI3LDcgKzIyNyw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICMgbGlibmV0IAogYWNfY3ZfbGJsX3VuYWxpZ25lZF9mYWlsPSR7YWNfY3ZfbGJsX3VuYWxpZ25lZF9mYWlsPW5vfQo=