ZGlmZiAtLWdpdCBhL2RvYy93aXovbWF0ZXJpYWwgYi9kb2Mvd2l6L21hdGVyaWFsCmluZGV4IGNiZjgwMjIuLjdiYWZkYjggMTAwNjQ0Ci0tLSBhL2RvYy93aXovbWF0ZXJpYWwKKysrIGIvZG9jL3dpei9tYXRlcmlhbApAQCAtMjYsNzMgKzI2LDc1IEBACiAgICAgICAgZWluIFNwZWVyIHp1IDgwJSBhdXMgSG9seiB1bmQgenUgMjAlIGF1cyBNZXRhbGwgKFNwZWVyc3BpdHplKSAKICAgICAgICBiZXN0ZWhlbjoKIAotCVNldFByb3AoUF9NQVRFUklBTCwgKFtNQVRfTUlTQ19NRVRBTDoyMCxNQVRfTUlTQ19XT09EOjgwXSkpCisgICAgICAgIFNldFByb3AoUF9NQVRFUklBTCwgKFtNQVRfTUlTQ19NRVRBTDoyMCxNQVRfTUlTQ19XT09EOjgwXSkpCiAKICAgICAgICAoWnVyIFZlcmVpbmZhY2h1bmcgaXN0IGVzIGVybGF1YnQsIGJlaSBTZXRQcm9wIGVpbiBlaW56ZWxuZXMgTWF0ZXJpYWwgCiAgICAgICAgIG9kZXIgZWluIEFycmF5IGF1cyBNYXRlcmlhbGllbiBhbnp1Z2ViZW4sIGJlaWRlcyB3aXJkIGF1dG9tYXRpc2NoIAogICAgICAgICB1bWdld2FuZGVsdCBpbiBlaW4gTWFwcGluZyBtaXQgZ2xlaWNoZW4gQW50ZWlsZW4gYWxsZXIgTWF0ZXJpYWxpZW4uKQogCi0gICAgIERlZmF1bHRzIGb8ciBQX01BVEVSSUFMOgotCVdhZmZlbiBnZW5lcmVsbDoJICAgKFtNQVRfTUlTQ19NRVRBTDoxMDBdKQotCVNjaHdlcnRlcjoJCSAgIChbTUFUX01JU0NfTUVUQUw6MTAwXSkKLSAgICAJTWVzc2VyOgkJCSAgIChbTUFUX01JU0NfTUVUQUw6ODAsIE1BVF9NSVNDX1dPT0Q6MjBdKQotCUFleHRlOgkJCSAgIChbTUFUX01JU0NfTUVUQUw6NTAsIE1BVF9NSVNDX1dPT0Q6NTBdKQotCVNwZWVyZToJCQkgICAoW01BVF9NSVNDX01FVEFMOjIwLCBNQVRfTUlTQ19XT09EOjgwXSkKLQlLZXVsZW46CQkJICAgKFtNQVRfTUlTQ19XT09EOjEwMF0pCi0JUnVlc3R1bmdlbiBnZW5lcmVsbDoJICAgKFtNQVRfTEVBVEhFUjoxMDBdKQotCUtvZXJwZXJydWVzdHVuZ2VuLCBIZWxtZSwKLQlSaW5nZSwgQW11bGV0dGUsIFNjaGlsZGU6ICAoW01BVF9NSVNDX01FVEFMOjEwMF0pCi0JVW1oYWVuZ2UsIEhvc2VuOgkgICAoW01BVF9DTE9USDoxMDBdKQotCUhhbmRzY2h1aGUsIFNjaHVoZToJICAgKFtNQVRfTEVBVEhFUjoxMDBdKQotCWFuZGVyZSBEaW5nZToJCSAgIChbTUFUX01JU0M6MTAwXSkKKyAgICAgRGVmYXVsdHMgZnVlciBQX01BVEVSSUFMOgorICAgICAgICBXYWZmZW4gZ2VuZXJlbGw6ICAgICAgICAgICAoW01BVF9NSVNDX01FVEFMOjEwMF0pCisgICAgICAgIFNjaHdlcnRlcjogICAgICAgICAgICAgICAgIChbTUFUX01JU0NfTUVUQUw6MTAwXSkKKyAgICAgICAgTWVzc2VyOiAgICAgICAgICAgICAgICAgICAgKFtNQVRfTUlTQ19NRVRBTDo4MCwgTUFUX01JU0NfV09PRDoyMF0pCisgICAgICAgIEFleHRlOiAgICAgICAgICAgICAgICAgICAgIChbTUFUX01JU0NfTUVUQUw6NTAsIE1BVF9NSVNDX1dPT0Q6NTBdKQorICAgICAgICBTcGVlcmU6ICAgICAgICAgICAgICAgICAgICAoW01BVF9NSVNDX01FVEFMOjIwLCBNQVRfTUlTQ19XT09EOjgwXSkKKyAgICAgICAgS2V1bGVuOiAgICAgICAgICAgICAgICAgICAgKFtNQVRfTUlTQ19XT09EOjEwMF0pCisgICAgICAgIFJ1ZXN0dW5nZW4gZ2VuZXJlbGw6ICAgICAgIChbTUFUX0xFQVRIRVI6MTAwXSkKKyAgICAgICAgS29lcnBlcnJ1ZXN0dW5nZW4sIEhlbG1lLAorICAgICAgICBSaW5nZSwgQW11bGV0dGUsIFNjaGlsZGU6ICAoW01BVF9NSVNDX01FVEFMOjEwMF0pCisgICAgICAgIFVtaGFlbmdlLCBIb3NlbjogICAgICAgICAgIChbTUFUX0NMT1RIOjEwMF0pCisgICAgICAgIEhhbmRzY2h1aGUsIFNjaHVoZTogICAgICAgIChbTUFUX0xFQVRIRVI6MTAwXSkKKyAgICAgICAgYW5kZXJlIERpbmdlOiAgICAgICAgICAgICAgKFtNQVRfTUlTQzoxMDBdKQogCiAgICAgICBVZWJlcnNpY2h0IHVlYmVyIGRpZSBNZXRob2RlbiBhbiBPYmpla3RlbiAoL3N0ZC90aGluZy9kZXNjcmlwdGlvbik6Ci0JaW50IFF1ZXJ5TWF0ZXJpYWwoc3RyaW5nIG1hdCk6Ci0JLSBnaWJ0ICUgZGVzIE1hdGVyaWFsYW50ZWlscyB2b24gbWF0IGFtIE9iamVrdCB6dXJ1ZWNrCi0JaW50IFF1ZXJ5TWF0ZXJpYWxHcm91cChzdHJpbmcgZ3JwKToKLQktIGdpYnQgJSBkZXMgTWF0ZXJpYWxncnVwcGVuYW50ZWlscyB2b24gZ3JwIGFtIE9iamVrdCB6dXJ1ZWNrCi0Jc3RyaW5nIE1hdGVyaWFsTGlzdChpbnQgY2FzdXMsIG1peGVkIGlkaW5mKToKLQktIGdpYnQgU3RyaW5nIG1pdCBadXNhbW1lbnNldHp1bmcgZGVzIE9iamVrdGVzIHp1cnVlY2sKKyAgICAgICAgaW50IFF1ZXJ5TWF0ZXJpYWwoc3RyaW5nIG1hdCk6CisgICAgICAgIC0gZ2lidCAlIGRlcyBNYXRlcmlhbGFudGVpbHMgdm9uIG1hdCBhbSBPYmpla3QgenVydWVjaworICAgICAgICBpbnQgUXVlcnlNYXRlcmlhbEdyb3VwKHN0cmluZyBncnApOgorICAgICAgICAtIGdpYnQgJSBkZXMgTWF0ZXJpYWxncnVwcGVuYW50ZWlscyB2b24gZ3JwIGFtIE9iamVrdCB6dXJ1ZWNrCisgICAgICAgIHN0cmluZyBNYXRlcmlhbExpc3QoaW50IGNhc3VzLCBtaXhlZCBpZGluZik6CisgICAgICAgIC0gZ2lidCBTdHJpbmcgbWl0IFp1c2FtbWVuc2V0enVuZyBkZXMgT2JqZWt0ZXMgenVydWVjawogCiAgICAgICBVZWJlcnNpY2h0IHVlYmVyIGRpZSBNZXRob2RlbiBhbSBNYXN0ZXIgKE1BVEVSSUFMREIpOgotCXN0cmluZyAqR2V0TWF0TWVtYmVyc2hpcChzdHJpbmcgbWF0KToKLQktIGFsbGUgR3J1cHBlbiwgaW4gZGVuZW4gZGFzIE1hdGVyaWFsIG1hdCBpc3QKLQlzdHJpbmcgKkdldEdyb3VwTWVtYmVycyhzdHJpbmcgZ3JwKToKLQktIGFsbGUgTWF0ZXJpYWxpZW4sIGRpZSBpbiBkZXIgR3J1cHBlIGdycCBzaW5kCi0Jc3RyaW5nIE1hdGVyaWFsTmFtZShzdHJpbmcgbWF0LCBpbnQgY2FzdXMsIG1peGVkIGlkaW5mKToKLQktIGVyZ2lidCBkaWUgc3BpZWxlcmxlc2JhcmUgQW5nYWJlIGVpbmVzIE1hdGVyaWFscyBtYXQKLQlzdHJpbmcgR3JvdXBOYW1lKHN0cmluZyBncnApOgotCS0gZXJnaWJ0IHNwaWVsZXJsZXNiYXJlIEFuZ2FiZSBkZXIgR3J1cHBlIGdycAotCXN0cmluZyBDb252TWF0ZXJpYWxMaXN0KG1peGVkIG1hdHMsIGludCBjYXN1cywgbWl4ZWQgaWRpbmYpOgotICAJLSB3aXJkIHZvbiBNYXRlcmlhbExpc3QoKSBtaXQgZGVuIE1hdGVyaWFsaWVuIGRlcyBPYmpla3RlcyBnZXJ1ZmVuCi0Jdm9pZCBEdW1wKCk6Ci0gIAktIHNjaHJlaWJ0IE1hdGVyaWFsaWVuIHVuZCBHcnVwcGVuIGluIC9wL2RhZW1vbi9zYXZlL01BVEVSSUFMUwotCXN0cmluZyAqQWxsTWF0ZXJpYWxzKCk6Ci0JLSBMaXN0ZSBhbGxlciBha3R1ZWxsZW4gTWF0ZXJpYWxpZW4KLQlzdHJpbmcgKkFsbEdyb3VwcygpOgotCS0gTGlzdGUgYWxsZXIgYWt0dWVsbGVuIEdydXBwZW4KKyAgICAgICAgc3RyaW5nICpHZXRNYXRNZW1iZXJzaGlwKHN0cmluZyBtYXQpOgorICAgICAgICAtIGFsbGUgR3J1cHBlbiwgaW4gZGVuZW4gZGFzIE1hdGVyaWFsIG1hdCBpc3QKKyAgICAgICAgc3RyaW5nICpHZXRHcm91cE1lbWJlcnMoc3RyaW5nIGdycCk6CisgICAgICAgIC0gYWxsZSBNYXRlcmlhbGllbiwgZGllIGluIGRlciBHcnVwcGUgZ3JwIHNpbmQKKyAgICAgICAgc3RyaW5nIE1hdGVyaWFsTmFtZShzdHJpbmcgbWF0LCBpbnQgY2FzdXMsIG1peGVkIGlkaW5mKToKKyAgICAgICAgLSBlcmdpYnQgZGllIHNwaWVsZXJsZXNiYXJlIEFuZ2FiZSBlaW5lcyBNYXRlcmlhbHMgbWF0CisgICAgICAgIHN0cmluZyBHcm91cE5hbWUoc3RyaW5nIGdycCk6CisgICAgICAgIC0gZXJnaWJ0IHNwaWVsZXJsZXNiYXJlIEFuZ2FiZSBkZXIgR3J1cHBlIGdycAorICAgICAgICBzdHJpbmcgQ29udk1hdGVyaWFsTGlzdChtaXhlZCBtYXRzLCBpbnQgY2FzdXMsIG1peGVkIGlkaW5mKToKKyAgICAgICAgLSB3aXJkIHZvbiBNYXRlcmlhbExpc3QoKSBtaXQgZGVuIE1hdGVyaWFsaWVuIGRlcyBPYmpla3RlcyBnZXJ1ZmVuCisgICAgICAgIHZvaWQgRHVtcCgpOgorICAgICAgICAtIHNjaHJlaWJ0IE1hdGVyaWFsaWVuIHVuZCBHcnVwcGVuIGluIC9wL2RhZW1vbi9zYXZlL01BVEVSSUFMUworICAgICAgICBzdHJpbmcgKkFsbE1hdGVyaWFscygpOgorICAgICAgICAtIExpc3RlIGFsbGVyIGFrdHVlbGxlbiBNYXRlcmlhbGllbgorICAgICAgICBzdHJpbmcgKkFsbEdyb3VwcygpOgorICAgICAgICAtIExpc3RlIGFsbGVyIGFrdHVlbGxlbiBHcnVwcGVuCiAKICAgICAgIEZhbGxzIGV1Y2ggZWluIE1hdGVyaWFsIGZlaGx0OgotCS0gZmFsbHMgZXMga2VpbiBnZW5hdSBwYXNzZW5kZXMgTWF0ZXJpYWwgZ2lidCwgc29sbHRlIG1hbiBkYXMgYW0gCi0JICBlaGVzdGVuIHBhc3NlbmRlIE1BVF9NSVNDLU1hdGVyaWFsIHZlcndlbmRlbi4KLQktIGZhbGxzIGVzIHNpY2ggbG9obmVuIHd1ZXJkZSwgZGFzIGJpc2hlciBub2NoIG5pY2h0IGRlZmluaWVydGUgCi0JICBNYXRlcmlhbCBlaW56dWJhdWVuICh3ZW5uIGVzIGhhZXVmaWcgZ2VudWcgdmVyd2VuZGV0IHdpcmQpLCBiaXR0ZSAKLQkgIE1haWwgYW4gZWluZW4gRU0gKC0+IG1hbiBBZGRNYXRlcmlhbCgpICkKLQktIHZlcnNjaGllZGVuZSBFaWdlbnNjaGFmdGVuIGxhc3NlbiBzaWNoIGtvbWJpbmllcmVuLiBaLkIuIGJlc3RlaHQgCi0JICBlaW4gKHVuYmVrYW5udGVzKSBleHBsb3NpdmVzIEdhcyB6dSAxMDAlIGF1cyBHYXMgdW5kIHp1IDEwMCUgYXVzIAotCSAgZXhwbG9zaXZlbSBNYXRlcmlhbC4gSW5zb2Zlcm4ga2FubiBtYW4gZXMgbWl0CisgICAgICAgIC0gZmFsbHMgZXMga2VpbiBnZW5hdSBwYXNzZW5kZXMgTWF0ZXJpYWwgZ2lidCwgc29sbHRlIG1hbiBkYXMgYW0gCisgICAgICAgICAgZWhlc3RlbiBwYXNzZW5kZSBNQVRfTUlTQy1NYXRlcmlhbCB2ZXJ3ZW5kZW4uCisgICAgICAgIC0gZmFsbHMgZXMgc2ljaCBsb2huZW4gd3VlcmRlLCBkYXMgYmlzaGVyIG5vY2ggbmljaHQgZGVmaW5pZXJ0ZSAKKyAgICAgICAgICBNYXRlcmlhbCBlaW56dWJhdWVuICh3ZW5uIGVzIGhhZXVmaWcgZ2VudWcgdmVyd2VuZGV0IHdpcmQpLCBiaXR0ZSAKKyAgICAgICAgICBNYWlsIGFuIGVpbmVuIEVNICgtPiBtYW4gQWRkTWF0ZXJpYWwoKSApCisgICAgICAgIC0gdmVyc2NoaWVkZW5lIEVpZ2Vuc2NoYWZ0ZW4gbGFzc2VuIHNpY2gga29tYmluaWVyZW4uIFouQi4gYmVzdGVodCAKKyAgICAgICAgICBlaW4gKHVuYmVrYW5udGVzKSBleHBsb3NpdmVzIEdhcyB6dSAxMDAlIGF1cyBHYXMgdW5kIHp1IDEwMCUgYXVzIAorICAgICAgICAgIGV4cGxvc2l2ZW0gTWF0ZXJpYWwuIEluc29mZXJuIGthbm4gbWFuIGVzIG1pdAogICAgICAgICAgIFNldFByb3AoUF9NQVRFUklBTCwgKFtNQVRfTUlTQ19HQVM6MTAwLCBNQVRfTUlTQ19FWFBMT1NJVkU6MTAwXSkpCiAgICAgICAgICAgenVzYW1tZW5zZXR6ZW4uCiAKIFNJRUhFIEFVQ0g6Ci0gICAgIEtvbnplcHRlOgkgIG1hdGVyaWFsZXJrZW5udW5nCisgICAgIEtvbnplcHRlOiAgICBtYXRlcmlhbGVya2VubnVuZwogICAgICBHcnVuZGxlZ2VuZDogUF9NQVRFUklBTCwgL3N5cy90aGluZy9tYXRlcmlhbC5oCiAgICAgIE1ldGhvZGVuOiAgICBRdWVyeU1hdGVyaWFsKCksIFF1ZXJ5TWF0ZXJpYWxHcm91cCgpLCBNYXRlcmlhbExpc3QoKSwKLSAgICAgTGlzdGVuOgkgIEFsbE1hdGVyaWFscygpLCBBbGxHcm91cHMoKSwgRHVtcCgpCi0JCSAgbWF0ZXJpYWxsaXN0ZSwgbWF0ZXJpYWxncnVwcGVuCi0gICAgIE1hc3RlcjoJICBBZGRNYXRlcmlhbCgpLCBDb252TWF0ZXJpYWxMaXN0KCksIE1hdGVyaWFsR3JvdXAoKSwKLQkJICBHcm91cE5hbWUoKSwgTWF0ZXJpYWxOYW1lKCksCi0JCSAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQotICAgICBTb25zdGlnZXM6CSAgUF9NQVRFUklBTF9LTk9XTEVER0UKKyAgICAgTGlzdGVuOiAgICAgIEFsbE1hdGVyaWFscygpLCBBbGxHcm91cHMoKSwgRHVtcCgpCisgICAgICAgICAgICAgICAgICBtYXRlcmlhbGxpc3RlLCBtYXRlcmlhbGdydXBwZW4KKyAgICAgTWFzdGVyOiAgICAgIEFkZE1hdGVyaWFsKCksIENvbnZNYXRlcmlhbExpc3QoKSwgTWF0ZXJpYWxHcm91cCgpLAorICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lKCksIE1hdGVyaWFsTmFtZSgpLAorICAgICAgICAgICAgICAgICAgR2V0R3JvdXBNZW1iZXJzKCksIEdldE1hdE1lbWJlcnNoaXAoKQorICAgICBTb25zdGlnZXM6ICAgUF9NQVRFUklBTF9LTk9XTEVER0UKIAotNy4gTWFpIDIwMDQgR2xvaW5zb24KK0xFVFpURSBBRU5ERVJVTkc6CisgICAgMjcuIEphbnVhciAyMDE4IGR1cmNoIERlYWRkeQorCg==