--b1_9a7a611d7dfa2d0589be2552c73281b9 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: quoted-printable jyknight updated this revision to Diff 30010. jyknight added a comment. Fix after changes in http://reviews.llvm.org/D11272. http://reviews.llvm.org/D11298 Files: include/clang/AST/Decl.h include/clang/AST/DeclTemplate.h lib/AST/Decl.cpp lib/AST/DeclTemplate.cpp lib/Sema/SemaTemplateDeduction.cpp --b1_9a7a611d7dfa2d0589be2552c73281b9 Content-Type: text/x-patch; charset=utf-8; name="D11298.30010.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D11298.30010.patch" SW5kZXg6IGxpYi9TZW1hL1NlbWFUZW1wbGF0ZURlZHVjdGlvbi5jcHAKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gbGliL1NlbWEvU2VtYVRlbXBsYXRl RGVkdWN0aW9uLmNwcAorKysgbGliL1NlbWEvU2VtYVRlbXBsYXRlRGVkdWN0 aW9uLmNwcApAQCAtMzk4OSw4ICszOTg5LDggQEAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIGZhbHNlLCBmYWxzZSk7CiAg IFF1YWxUeXBlIFRlbXBsQXJnID0gUXVhbFR5cGUoVGVtcGxQYXJhbS0+Z2V0 VHlwZUZvckRlY2woKSwgMCk7CiAgIE5hbWVkRGVjbCAqVGVtcGxQYXJhbVB0 ciA9IFRlbXBsUGFyYW07Ci0gIEZpeGVkU2l6ZVRlbXBsYXRlUGFyYW1ldGVy TGlzdDwxPiBUZW1wbGF0ZVBhcmFtcyhMb2MsIExvYywgJlRlbXBsUGFyYW1Q dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMb2MpOworICBGaXhlZFNpemVUZW1wbGF0ZVBhcmFtZXRl ckxpc3RTdG9yYWdlPDE+IFRlbXBsYXRlUGFyYW1zU3QoCisgICAgICBMb2Ms IExvYywgJlRlbXBsUGFyYW1QdHIsIExvYyk7CiAKICAgUXVhbFR5cGUgRnVu Y1BhcmFtID0gU3Vic3RpdHV0ZUF1dG9UcmFuc2Zvcm0oKnRoaXMsIFRlbXBs QXJnKS5BcHBseShUeXBlKTsKICAgYXNzZXJ0KCFGdW5jUGFyYW0uaXNOdWxs KCkgJiYKQEAgLTQwMDcsMjAgKzQwMDcsMTkgQEAKICAgSW5pdExpc3RFeHBy ICpJbml0TGlzdCA9IGR5bl9jYXN0PEluaXRMaXN0RXhwcj4oSW5pdCk7CiAg IGlmIChJbml0TGlzdCkgewogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGUg PSBJbml0TGlzdC0+Z2V0TnVtSW5pdHMoKTsgaSA8IGU7ICsraSkgewotICAg ICAgaWYgKERlZHVjZVRlbXBsYXRlQXJndW1lbnRCeUxpc3RFbGVtZW50KCp0 aGlzLCAmVGVtcGxhdGVQYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxBcmcsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdExpc3Qt PmdldEluaXQoaSksCisgICAgICBpZiAoRGVkdWNlVGVtcGxhdGVBcmd1bWVu dEJ5TGlzdEVsZW1lbnQoKnRoaXMsIFRlbXBsYXRlUGFyYW1zU3QuZ2V0KCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGVtcGxBcmcsIEluaXRMaXN0LT5nZXRJbml0KGkpLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm8sIERl ZHVjZWQsIFRERikpCiAgICAgICAgIHJldHVybiBEQVJfRmFpbGVkOwogICAg IH0KICAgfSBlbHNlIHsKLSAgICBpZiAoQWRqdXN0RnVuY3Rpb25QYXJtQW5k QXJnVHlwZXNGb3JEZWR1Y3Rpb24oKnRoaXMsICZUZW1wbGF0ZVBhcmFtcywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRnVuY1BhcmFtLCBJbml0VHlwZSwgSW5pdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERGKSkK KyAgICBpZiAoQWRqdXN0RnVuY3Rpb25QYXJtQW5kQXJnVHlwZXNGb3JEZWR1 Y3Rpb24oCisgICAgICAgICAgICAqdGhpcywgVGVtcGxhdGVQYXJhbXNTdC5n ZXQoKSwgRnVuY1BhcmFtLCBJbml0VHlwZSwgSW5pdCwgVERGKSkKICAgICAg IHJldHVybiBEQVJfRmFpbGVkOwogCi0gICAgaWYgKERlZHVjZVRlbXBsYXRl QXJndW1lbnRzQnlUeXBlTWF0Y2goKnRoaXMsICZUZW1wbGF0ZVBhcmFtcywg RnVuY1BhcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluaXRUeXBlLCBJbmZvLCBEZWR1Y2VkLCBUREYpKQorICAg IGlmIChEZWR1Y2VUZW1wbGF0ZUFyZ3VtZW50c0J5VHlwZU1hdGNoKCp0aGlz LCBUZW1wbGF0ZVBhcmFtc1N0LmdldCgpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmNQYXJhbSwgSW5pdFR5cGUs IEluZm8sIERlZHVjZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVERGKSkKICAgICAgIHJldHVybiBEQVJfRmFpbGVk OwogICB9CiAKSW5kZXg6IGxpYi9BU1QvRGVjbFRlbXBsYXRlLmNwcAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvQVNUL0RlY2xUZW1wbGF0ZS5j cHAKKysrIGxpYi9BU1QvRGVjbFRlbXBsYXRlLmNwcApAQCAtNTcsMTEgKzU3 LDggQEAKIFRlbXBsYXRlUGFyYW1ldGVyTGlzdDo6Q3JlYXRlKGNvbnN0IEFT VENvbnRleHQgJkMsIFNvdXJjZUxvY2F0aW9uIFRlbXBsYXRlTG9jLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTEFu Z2xlTG9jLCBOYW1lZERlY2wgKipQYXJhbXMsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1QYXJhbXMsIFNvdXJjZUxvY2F0 aW9uIFJBbmdsZUxvYykgewotICB1bnNpZ25lZCBTaXplID0gc2l6ZW9mKFRl bXBsYXRlUGFyYW1ldGVyTGlzdCkgCi0gICAgICAgICAgICAgICAgKyBzaXpl b2YoTmFtZWREZWNsICopICogTnVtUGFyYW1zOwotICB1bnNpZ25lZCBBbGln biA9IHN0ZDo6bWF4KGxsdm06OmFsaWduT2Y8VGVtcGxhdGVQYXJhbWV0ZXJM aXN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmFs aWduT2Y8TmFtZWREZWNsKj4oKSk7Ci0gIHZvaWQgKk1lbSA9IEMuQWxsb2Nh dGUoU2l6ZSwgQWxpZ24pOworICB2b2lkICpNZW0gPSBDLkFsbG9jYXRlKHRv dGFsU2l6ZVRvQWxsb2M8TmFtZWREZWNsICo+KE51bVBhcmFtcyksCisgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6YWxpZ25PZjxUZW1wbGF0ZVBh cmFtZXRlckxpc3Q+KCkpOwogICByZXR1cm4gbmV3IChNZW0pIFRlbXBsYXRl UGFyYW1ldGVyTGlzdChUZW1wbGF0ZUxvYywgTEFuZ2xlTG9jLCBQYXJhbXMs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51 bVBhcmFtcywgUkFuZ2xlTG9jKTsKIH0KQEAgLTU1Miw3ICs1NDksNyBAQAog ICAgIFRlbXBsYXRlUGFybVBvc2l0aW9uKEQsIFApLCBQYXJhbWV0ZXJQYWNr KHRydWUpLAogICAgIEV4cGFuZGVkUGFyYW1ldGVyUGFjayh0cnVlKSwgTnVt RXhwYW5kZWRUeXBlcyhOdW1FeHBhbmRlZFR5cGVzKSB7CiAgIGlmIChFeHBh bmRlZFR5cGVzICYmIEV4cGFuZGVkVEluZm9zKSB7Ci0gICAgdm9pZCAqKlR5 cGVzQW5kSW5mb3MgPSByZWludGVycHJldF9jYXN0PHZvaWQgKio+KHRoaXMg KyAxKTsKKyAgICB2b2lkICoqVHlwZXNBbmRJbmZvcyA9IGdldFRyYWlsaW5n T2JqZWN0czx2b2lkICo+KCk7CiAgICAgZm9yICh1bnNpZ25lZCBJID0gMDsg SSAhPSBOdW1FeHBhbmRlZFR5cGVzOyArK0kpIHsKICAgICAgIFR5cGVzQW5k SW5mb3NbMipJXSA9IEV4cGFuZGVkVHlwZXNbSV0uZ2V0QXNPcGFxdWVQdHIo KTsKICAgICAgIFR5cGVzQW5kSW5mb3NbMipJICsgMV0gPSBFeHBhbmRlZFRJ bmZvc1tJXTsKQEAgLTU3OSwxMCArNTc2LDkgQEAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbFR5cGUgKkV4cGFuZGVkVHlw ZXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBOdW1FeHBhbmRlZFR5cGVzLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUeXBlU291cmNlSW5mbyAqKkV4cGFuZGVkVEluZm9zKSB7Ci0g IHVuc2lnbmVkIEV4dHJhID0gTnVtRXhwYW5kZWRUeXBlcyAqIDIgKiBzaXpl b2Yodm9pZCopOwotICByZXR1cm4gbmV3IChDLCBEQywgRXh0cmEpIE5vblR5 cGVUZW1wbGF0ZVBhcm1EZWNsKAotICAgICAgREMsIFN0YXJ0TG9jLCBJZExv YywgRCwgUCwgSWQsIFQsIFRJbmZvLAotICAgICAgRXhwYW5kZWRUeXBlcywg TnVtRXhwYW5kZWRUeXBlcywgRXhwYW5kZWRUSW5mb3MpOworICByZXR1cm4g bmV3IChDLCBEQywgYWRkaXRpb25hbFNpemVUb0FsbG9jPHZvaWQgKj4oTnVt RXhwYW5kZWRUeXBlcyAqIDIpKQorICAgICAgTm9uVHlwZVRlbXBsYXRlUGFy bURlY2woREMsIFN0YXJ0TG9jLCBJZExvYywgRCwgUCwgSWQsIFQsIFRJbmZv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kZWRUeXBl cywgTnVtRXhwYW5kZWRUeXBlcywgRXhwYW5kZWRUSW5mb3MpOwogfQogCiBO b25UeXBlVGVtcGxhdGVQYXJtRGVjbCAqCkBAIC01OTUsMTAgKzU5MSwxMCBA QAogTm9uVHlwZVRlbXBsYXRlUGFybURlY2wgKgogTm9uVHlwZVRlbXBsYXRl UGFybURlY2w6OkNyZWF0ZURlc2VyaWFsaXplZChBU1RDb250ZXh0ICZDLCB1 bnNpZ25lZCBJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgTnVtRXhwYW5kZWRUeXBlcykgewotICB1 bnNpZ25lZCBFeHRyYSA9IE51bUV4cGFuZGVkVHlwZXMgKiAyICogc2l6ZW9m KHZvaWQqKTsKLSAgcmV0dXJuIG5ldyAoQywgSUQsIEV4dHJhKSBOb25UeXBl VGVtcGxhdGVQYXJtRGVjbCgKLSAgICAgIG51bGxwdHIsIFNvdXJjZUxvY2F0 aW9uKCksIFNvdXJjZUxvY2F0aW9uKCksIDAsIDAsIG51bGxwdHIsIFF1YWxU eXBlKCksCi0gICAgICBudWxscHRyLCBudWxscHRyLCBOdW1FeHBhbmRlZFR5 cGVzLCBudWxscHRyKTsKKyAgcmV0dXJuIG5ldyAoQywgSUQsIGFkZGl0aW9u YWxTaXplVG9BbGxvYzx2b2lkICo+KE51bUV4cGFuZGVkVHlwZXMgKiAyKSkK KyAgICAgIE5vblR5cGVUZW1wbGF0ZVBhcm1EZWNsKG51bGxwdHIsIFNvdXJj ZUxvY2F0aW9uKCksIFNvdXJjZUxvY2F0aW9uKCksIDAsIDAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBRdWFsVHlwZSgpLCBu dWxscHRyLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTnVtRXhwYW5kZWRUeXBlcywgbnVsbHB0cik7CiB9CiAKIFNvdXJjZVJh bmdlIE5vblR5cGVUZW1wbGF0ZVBhcm1EZWNsOjpnZXRTb3VyY2VSYW5nZSgp IGNvbnN0IHsKQEAgLTYyOCw4ICs2MjQsOCBAQAogICAgIFRlbXBsYXRlUGFy bVBvc2l0aW9uKEQsIFApLCBQYXJhbWV0ZXJQYWNrKHRydWUpLAogICAgIEV4 cGFuZGVkUGFyYW1ldGVyUGFjayh0cnVlKSwgTnVtRXhwYW5kZWRQYXJhbXMo TnVtRXhwYW5zaW9ucykgewogICBpZiAoRXhwYW5zaW9ucykKLSAgICBzdGQ6 Om1lbWNweShyZWludGVycHJldF9jYXN0PHZvaWQqPih0aGlzICsgMSksIEV4 cGFuc2lvbnMsCi0gICAgICAgICAgICAgICAgc2l6ZW9mKFRlbXBsYXRlUGFy YW1ldGVyTGlzdCopICogTnVtRXhwYW5kZWRQYXJhbXMpOworICAgIHN0ZDo6 dW5pbml0aWFsaXplZF9jb3B5KEV4cGFuc2lvbnMsIEV4cGFuc2lvbnMgKyBO dW1FeHBhbmRlZFBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnZXRUcmFpbGluZ09iamVjdHM8VGVtcGxhdGVQYXJhbWV0ZXJMaXN0ICo+ KCkpOwogfQogCiBUZW1wbGF0ZVRlbXBsYXRlUGFybURlY2wgKgpAQCAtNjQ3 LDkgKzY0MywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSWRlbnRpZmllckluZm8gKklkLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGVtcGxhdGVQYXJhbWV0ZXJMaXN0ICpQYXJhbXMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxUZW1w bGF0ZVBhcmFtZXRlckxpc3QgKj4gRXhwYW5zaW9ucykgewotICByZXR1cm4g bmV3IChDLCBEQywgc2l6ZW9mKFRlbXBsYXRlUGFyYW1ldGVyTGlzdCopICog RXhwYW5zaW9ucy5zaXplKCkpCi0gICAgICBUZW1wbGF0ZVRlbXBsYXRlUGFy bURlY2woREMsIEwsIEQsIFAsIElkLCBQYXJhbXMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRXhwYW5zaW9ucy5zaXplKCksIEV4cGFuc2lv bnMuZGF0YSgpKTsKKyAgcmV0dXJuIG5ldyAoQywgREMsCisgICAgICAgICAg ICAgIGFkZGl0aW9uYWxTaXplVG9BbGxvYzxUZW1wbGF0ZVBhcmFtZXRlckxp c3QgKj4oRXhwYW5zaW9ucy5zaXplKCkpKQorICAgICAgVGVtcGxhdGVUZW1w bGF0ZVBhcm1EZWNsKERDLCBMLCBELCBQLCBJZCwgUGFyYW1zLCBFeHBhbnNp b25zLnNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF eHBhbnNpb25zLmRhdGEoKSk7CiB9CiAKIFRlbXBsYXRlVGVtcGxhdGVQYXJt RGVjbCAqCkBAIC02NjEsNyArNjU4LDggQEAKIFRlbXBsYXRlVGVtcGxhdGVQ YXJtRGVjbCAqCiBUZW1wbGF0ZVRlbXBsYXRlUGFybURlY2w6OkNyZWF0ZURl c2VyaWFsaXplZChBU1RDb250ZXh0ICZDLCB1bnNpZ25lZCBJRCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIE51bUV4cGFuc2lvbnMpIHsKLSAgcmV0dXJuIG5ldyAoQywgSUQsIHNp emVvZihUZW1wbGF0ZVBhcmFtZXRlckxpc3QqKSAqIE51bUV4cGFuc2lvbnMp CisgIHJldHVybiBuZXcgKEMsIElELAorICAgICAgICAgICAgICBhZGRpdGlv bmFsU2l6ZVRvQWxsb2M8VGVtcGxhdGVQYXJhbWV0ZXJMaXN0ICo+KE51bUV4 cGFuc2lvbnMpKQogICAgICAgVGVtcGxhdGVUZW1wbGF0ZVBhcm1EZWNsKG51 bGxwdHIsIFNvdXJjZUxvY2F0aW9uKCksIDAsIDAsIG51bGxwdHIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgTnVtRXhwYW5z aW9ucywgbnVsbHB0cik7CiB9CkBAIC02ODIsMTggKzY4MCwxOSBAQAogLy89 PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFRlbXBsYXRl QXJndW1lbnRMaXN0IEltcGxlbWVudGF0aW9uCiAvLz09PS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS09PT0vLworVGVtcGxhdGVBcmd1bWVudExpc3Q6OlRl bXBsYXRlQXJndW1lbnRMaXN0KGNvbnN0IFRlbXBsYXRlQXJndW1lbnQgKkFy Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgTnVtQXJncykKKyAgICA6IEFyZ3VtZW50cyhnZXRUcmFp bGluZ09iamVjdHM8VGVtcGxhdGVBcmd1bWVudD4oKSksIE51bUFyZ3VtZW50 cyhOdW1BcmdzKSB7CisgIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KEFyZ3Ms IEFyZ3MgKyBOdW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBn ZXRUcmFpbGluZ09iamVjdHM8VGVtcGxhdGVBcmd1bWVudD4oKSk7Cit9CisK IFRlbXBsYXRlQXJndW1lbnRMaXN0ICoKIFRlbXBsYXRlQXJndW1lbnRMaXN0 OjpDcmVhdGVDb3B5KEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50 ICpBcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgTnVtQXJncykgewotICBzdGQ6OnNpemVfdCBTaXplID0gc2l6ZW9m KFRlbXBsYXRlQXJndW1lbnRMaXN0KQotICAgICAgICAgICAgICAgICAgICsg TnVtQXJncyAqIHNpemVvZihUZW1wbGF0ZUFyZ3VtZW50KTsKLSAgdm9pZCAq TWVtID0gQ29udGV4dC5BbGxvY2F0ZShTaXplKTsKLSAgVGVtcGxhdGVBcmd1 bWVudCAqU3RvcmVkQXJncyAKLSAgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGVt cGxhdGVBcmd1bWVudCAqPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdGljX2Nhc3Q8VGVtcGxhdGVBcmd1bWVudExpc3QgKj4oTWVt KSArIDEpOwotICBzdGQ6OnVuaW5pdGlhbGl6ZWRfY29weShBcmdzLCBBcmdz ICsgTnVtQXJncywgU3RvcmVkQXJncyk7Ci0gIHJldHVybiBuZXcgKE1lbSkg VGVtcGxhdGVBcmd1bWVudExpc3QoU3RvcmVkQXJncywgTnVtQXJncywgdHJ1 ZSk7CisgIHZvaWQgKk1lbSA9IENvbnRleHQuQWxsb2NhdGUodG90YWxTaXpl VG9BbGxvYzxUZW1wbGF0ZUFyZ3VtZW50PihOdW1BcmdzKSk7CisgIHJldHVy biBuZXcgKE1lbSkgVGVtcGxhdGVBcmd1bWVudExpc3QoQXJncywgTnVtQXJn cyk7CiB9CiAKIEZ1bmN0aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbkluZm8g KgpJbmRleDogbGliL0FTVC9EZWNsLmNwcAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBsaWIvQVNUL0RlY2wuY3BwCisrKyBsaWIvQVNUL0RlY2wuY3Bw CkBAIC0zMTE1LDMzICszMTE1LDM1IEBACiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBVbnJlc29sdmVkU2V0SW1wbCAmVGVt cGxhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU ZW1wbGF0ZUFyZ3VtZW50TGlzdEluZm8gJlRlbXBsYXRlQXJncykgewogICBh c3NlcnQoVGVtcGxhdGVPclNwZWNpYWxpemF0aW9uLmlzTnVsbCgpKTsKLSAg c2l6ZV90IFNpemUgPSBzaXplb2YoRGVwZW5kZW50RnVuY3Rpb25UZW1wbGF0 ZVNwZWNpYWxpemF0aW9uSW5mbyk7Ci0gIFNpemUgKz0gVGVtcGxhdGVBcmdz LnNpemUoKSAqIHNpemVvZihUZW1wbGF0ZUFyZ3VtZW50TG9jKTsKLSAgU2l6 ZSArPSBUZW1wbGF0ZXMuc2l6ZSgpICogc2l6ZW9mKEZ1bmN0aW9uVGVtcGxh dGVEZWNsICopOwotICB2b2lkICpCdWZmZXIgPSBDb250ZXh0LkFsbG9jYXRl KFNpemUpOwogICBEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6 YXRpb25JbmZvICpJbmZvID0KLSAgICBuZXcgKEJ1ZmZlcikgRGVwZW5kZW50 RnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uSW5mbyhUZW1wbGF0ZXMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVGVtcGxhdGVBcmdzKTsKKyAgICAgIERlcGVu ZGVudEZ1bmN0aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbkluZm86OkNyZWF0 ZShDb250ZXh0LCBUZW1wbGF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVB cmdzKTsKICAgVGVtcGxhdGVPclNwZWNpYWxpemF0aW9uID0gSW5mbzsKIH0K IAorRGVwZW5kZW50RnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uSW5m byAqCitEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb25J bmZvOjpDcmVhdGUoCisgICAgQVNUQ29udGV4dCAmQ29udGV4dCwgY29uc3Qg VW5yZXNvbHZlZFNldEltcGwgJlRzLAorICAgIGNvbnN0IFRlbXBsYXRlQXJn dW1lbnRMaXN0SW5mbyAmVEFyZ3MpIHsKKyAgdm9pZCAqQnVmZmVyID0gQ29u dGV4dC5BbGxvY2F0ZSgKKyAgICAgIHRvdGFsU2l6ZVRvQWxsb2M8VGVtcGxh dGVBcmd1bWVudExvYywgRnVuY3Rpb25UZW1wbGF0ZURlY2wgKj4oCisgICAg ICAgICAgVEFyZ3Muc2l6ZSgpLCBUcy5zaXplKCkpKTsKKyAgcmV0dXJuIG5l dyAoQnVmZmVyKSBEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6 YXRpb25JbmZvKFRzLCBUQXJncyk7Cit9CisKIERlcGVuZGVudEZ1bmN0aW9u VGVtcGxhdGVTcGVjaWFsaXphdGlvbkluZm86OgogRGVwZW5kZW50RnVuY3Rp b25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uSW5mbyhjb25zdCBVbnJlc29sdmVk U2V0SW1wbCAmVHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAmVEFyZ3Mp CiAgIDogQW5nbGVMb2NzKFRBcmdzLmdldExBbmdsZUxvYygpLCBUQXJncy5n ZXRSQW5nbGVMb2MoKSkgewotICBzdGF0aWNfYXNzZXJ0KHNpemVvZigqdGhp cykgJSBsbHZtOjpBbGlnbk9mPHZvaWQgKj46OkFsaWdubWVudCA9PSAwLAot ICAgICAgICAgICAgICAgICJUcmFpbGluZyBkYXRhIGlzIHVuYWxpZ25lZCEi KTsKIAogICBOdW1UZW1wbGF0ZXMgPSBUcy5zaXplKCk7CiAgIE51bUFyZ3Mg PSBUQXJncy5zaXplKCk7CiAKLSAgRnVuY3Rpb25UZW1wbGF0ZURlY2wgKipU c0FycmF5ID0KLSAgICBjb25zdF9jYXN0PEZ1bmN0aW9uVGVtcGxhdGVEZWNs Kio+KGdldFRlbXBsYXRlcygpKTsKKyAgRnVuY3Rpb25UZW1wbGF0ZURlY2wg KipUc0FycmF5ID0gZ2V0VHJhaWxpbmdPYmplY3RzPEZ1bmN0aW9uVGVtcGxh dGVEZWNsICo+KCk7CiAgIGZvciAodW5zaWduZWQgSSA9IDAsIEUgPSBUcy5z aXplKCk7IEkgIT0gRTsgKytJKQogICAgIFRzQXJyYXlbSV0gPSBjYXN0PEZ1 bmN0aW9uVGVtcGxhdGVEZWNsPihUc1tJXS0+Z2V0VW5kZXJseWluZ0RlY2wo KSk7CiAKLSAgVGVtcGxhdGVBcmd1bWVudExvYyAqQXJnc0FycmF5ID0KLSAg ICBjb25zdF9jYXN0PFRlbXBsYXRlQXJndW1lbnRMb2MqPihnZXRUZW1wbGF0 ZUFyZ3MoKSk7CisgIFRlbXBsYXRlQXJndW1lbnRMb2MgKkFyZ3NBcnJheSA9 IGdldFRyYWlsaW5nT2JqZWN0czxUZW1wbGF0ZUFyZ3VtZW50TG9jPigpOwog ICBmb3IgKHVuc2lnbmVkIEkgPSAwLCBFID0gVEFyZ3Muc2l6ZSgpOyBJICE9 IEU7ICsrSSkKICAgICBuZXcgKCZBcmdzQXJyYXlbSV0pIFRlbXBsYXRlQXJn dW1lbnRMb2MoVEFyZ3NbSV0pOwogfQpAQCAtMzg5MSwxMyArMzg5MywxMyBA QAogCiBDYXB0dXJlZERlY2wgKkNhcHR1cmVkRGVjbDo6Q3JlYXRlKEFTVENv bnRleHQgJkMsIERlY2xDb250ZXh0ICpEQywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtUGFyYW1zKSB7Ci0gIHJl dHVybiBuZXcgKEMsIERDLCBOdW1QYXJhbXMgKiBzaXplb2YoSW1wbGljaXRQ YXJhbURlY2wgKikpCisgIHJldHVybiBuZXcgKEMsIERDLCBhZGRpdGlvbmFs U2l6ZVRvQWxsb2M8SW1wbGljaXRQYXJhbURlY2wgKj4oTnVtUGFyYW1zKSkK ICAgICAgIENhcHR1cmVkRGVjbChEQywgTnVtUGFyYW1zKTsKIH0KIAogQ2Fw dHVyZWREZWNsICpDYXB0dXJlZERlY2w6OkNyZWF0ZURlc2VyaWFsaXplZChB U1RDb250ZXh0ICZDLCB1bnNpZ25lZCBJRCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtUGFy YW1zKSB7Ci0gIHJldHVybiBuZXcgKEMsIElELCBOdW1QYXJhbXMgKiBzaXpl b2YoSW1wbGljaXRQYXJhbURlY2wgKikpCisgIHJldHVybiBuZXcgKEMsIElE LCBhZGRpdGlvbmFsU2l6ZVRvQWxsb2M8SW1wbGljaXRQYXJhbURlY2wgKj4o TnVtUGFyYW1zKSkKICAgICAgIENhcHR1cmVkRGVjbChudWxscHRyLCBOdW1Q YXJhbXMpOwogfQogCkBAIC00MDQyLDU3ICs0MDQ0LDU1IEBACiAgICAgTmV4 dExvY2FsSW1wb3J0KCkKIHsKICAgYXNzZXJ0KGdldE51bU1vZHVsZUlkZW50 aWZpZXJzKEltcG9ydGVkKSA9PSBJZGVudGlmaWVyTG9jcy5zaXplKCkpOwot ICBTb3VyY2VMb2NhdGlvbiAqU3RvcmVkTG9jcyA9IHJlaW50ZXJwcmV0X2Nh c3Q8U291cmNlTG9jYXRpb24gKj4odGhpcyArIDEpOwotICBtZW1jcHkoU3Rv cmVkTG9jcywgSWRlbnRpZmllckxvY3MuZGF0YSgpLCAKLSAgICAgICAgIElk ZW50aWZpZXJMb2NzLnNpemUoKSAqIHNpemVvZihTb3VyY2VMb2NhdGlvbikp OworICBTb3VyY2VMb2NhdGlvbiAqU3RvcmVkTG9jcyA9IGdldFRyYWlsaW5n T2JqZWN0czxTb3VyY2VMb2NhdGlvbj4oKTsKKyAgc3RkOjp1bmluaXRpYWxp emVkX2NvcHkoSWRlbnRpZmllckxvY3MuYmVnaW4oKSwgSWRlbnRpZmllckxv Y3MuZW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlZExv Y3MpOwogfQogCiBJbXBvcnREZWNsOjpJbXBvcnREZWNsKERlY2xDb250ZXh0 ICpEQywgU291cmNlTG9jYXRpb24gU3RhcnRMb2MsIAogICAgICAgICAgICAg ICAgICAgICAgICBNb2R1bGUgKkltcG9ydGVkLCBTb3VyY2VMb2NhdGlvbiBF bmRMb2MpCiAgIDogRGVjbChJbXBvcnQsIERDLCBTdGFydExvYyksIEltcG9y dGVkQW5kQ29tcGxldGUoSW1wb3J0ZWQsIGZhbHNlKSwKICAgICBOZXh0TG9j YWxJbXBvcnQoKQogewotICAqcmVpbnRlcnByZXRfY2FzdDxTb3VyY2VMb2Nh dGlvbiAqPih0aGlzICsgMSkgPSBFbmRMb2M7CisgICpnZXRUcmFpbGluZ09i amVjdHM8U291cmNlTG9jYXRpb24+KCkgPSBFbmRMb2M7CiB9CiAKIEltcG9y dERlY2wgKkltcG9ydERlY2w6OkNyZWF0ZShBU1RDb250ZXh0ICZDLCBEZWNs Q29udGV4dCAqREMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U291cmNlTG9jYXRpb24gU3RhcnRMb2MsIE1vZHVsZSAqSW1wb3J0ZWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8U291cmNl TG9jYXRpb24+IElkZW50aWZpZXJMb2NzKSB7Ci0gIHJldHVybiBuZXcgKEMs IERDLCBJZGVudGlmaWVyTG9jcy5zaXplKCkgKiBzaXplb2YoU291cmNlTG9j YXRpb24pKQorICByZXR1cm4gbmV3IChDLCBEQywKKyAgICAgICAgICAgICAg YWRkaXRpb25hbFNpemVUb0FsbG9jPFNvdXJjZUxvY2F0aW9uPihJZGVudGlm aWVyTG9jcy5zaXplKCkpKQogICAgICAgSW1wb3J0RGVjbChEQywgU3RhcnRM b2MsIEltcG9ydGVkLCBJZGVudGlmaWVyTG9jcyk7CiB9CiAKIEltcG9ydERl Y2wgKkltcG9ydERlY2w6OkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkMs IERlY2xDb250ZXh0ICpEQywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFN0YXJ0TG9jLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kdWxlICpJbXBv cnRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNvdXJjZUxvY2F0aW9uIEVuZExvYykgewotICBJbXBvcnREZWNsICpJbXBv cnQgPQotICAgICAgbmV3IChDLCBEQywgc2l6ZW9mKFNvdXJjZUxvY2F0aW9u KSkgSW1wb3J0RGVjbChEQywgU3RhcnRMb2MsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydGVk LCBFbmRMb2MpOworICBJbXBvcnREZWNsICpJbXBvcnQgPSBuZXcgKEMsIERD LCBhZGRpdGlvbmFsU2l6ZVRvQWxsb2M8U291cmNlTG9jYXRpb24+KDEpKQor ICAgICAgSW1wb3J0RGVjbChEQywgU3RhcnRMb2MsIEltcG9ydGVkLCBFbmRM b2MpOwogICBJbXBvcnQtPnNldEltcGxpY2l0KCk7CiAgIHJldHVybiBJbXBv cnQ7CiB9CiAKIEltcG9ydERlY2wgKkltcG9ydERlY2w6OkNyZWF0ZURlc2Vy aWFsaXplZChBU1RDb250ZXh0ICZDLCB1bnNpZ25lZCBJRCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBO dW1Mb2NhdGlvbnMpIHsKLSAgcmV0dXJuIG5ldyAoQywgSUQsIE51bUxvY2F0 aW9ucyAqIHNpemVvZihTb3VyY2VMb2NhdGlvbikpCisgIHJldHVybiBuZXcg KEMsIElELCBhZGRpdGlvbmFsU2l6ZVRvQWxsb2M8U291cmNlTG9jYXRpb24+ KE51bUxvY2F0aW9ucykpCiAgICAgICBJbXBvcnREZWNsKEVtcHR5U2hlbGwo KSk7CiB9CiAKIEFycmF5UmVmPFNvdXJjZUxvY2F0aW9uPiBJbXBvcnREZWNs OjpnZXRJZGVudGlmaWVyTG9jcygpIGNvbnN0IHsKICAgaWYgKCFJbXBvcnRl ZEFuZENvbXBsZXRlLmdldEludCgpKQogICAgIHJldHVybiBOb25lOwogCi0g IGNvbnN0IFNvdXJjZUxvY2F0aW9uICpTdG9yZWRMb2NzCi0gICAgPSByZWlu dGVycHJldF9jYXN0PGNvbnN0IFNvdXJjZUxvY2F0aW9uICo+KHRoaXMgKyAx KTsKKyAgY29uc3QgU291cmNlTG9jYXRpb24gKlN0b3JlZExvY3MgPSBnZXRU cmFpbGluZ09iamVjdHM8U291cmNlTG9jYXRpb24+KCk7CiAgIHJldHVybiBs bHZtOjptYWtlQXJyYXlSZWYoU3RvcmVkTG9jcywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZXROdW1Nb2R1bGVJZGVudGlmaWVycyhnZXRJbXBv cnRlZE1vZHVsZSgpKSk7CiB9CiAKIFNvdXJjZVJhbmdlIEltcG9ydERlY2w6 OmdldFNvdXJjZVJhbmdlKCkgY29uc3QgewogICBpZiAoIUltcG9ydGVkQW5k Q29tcGxldGUuZ2V0SW50KCkpCi0gICAgcmV0dXJuIFNvdXJjZVJhbmdlKGdl dExvY2F0aW9uKCksIAotICAgICAgICAgICAgICAgICAgICAgICAqcmVpbnRl cnByZXRfY2FzdDxjb25zdCBTb3VyY2VMb2NhdGlvbiAqPih0aGlzICsgMSkp OwotICAKKyAgICByZXR1cm4gU291cmNlUmFuZ2UoZ2V0TG9jYXRpb24oKSwg KmdldFRyYWlsaW5nT2JqZWN0czxTb3VyY2VMb2NhdGlvbj4oKSk7CisKICAg cmV0dXJuIFNvdXJjZVJhbmdlKGdldExvY2F0aW9uKCksIGdldElkZW50aWZp ZXJMb2NzKCkuYmFjaygpKTsKIH0KSW5kZXg6IGluY2x1ZGUvY2xhbmcvQVNU L0RlY2xUZW1wbGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGlu Y2x1ZGUvY2xhbmcvQVNUL0RlY2xUZW1wbGF0ZS5oCisrKyBpbmNsdWRlL2Ns YW5nL0FTVC9EZWNsVGVtcGxhdGUuaApAQCAtMjAsNiArMjAsNyBAQAogI2lu Y2x1ZGUgImNsYW5nL0FTVC9UZW1wbGF0ZUJhc2UuaCIKICNpbmNsdWRlICJs bHZtL0FEVC9Qb2ludGVyVW5pb24uaCIKICNpbmNsdWRlICJsbHZtL1N1cHBv cnQvQ29tcGlsZXIuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvVHJhaWxp bmdPYmplY3RzLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogCiBuYW1lc3BhY2Ug Y2xhbmcgewpAQCAtNDMsNyArNDQsOSBAQAogCiAvLy8gXGJyaWVmIFN0b3Jl cyBhIGxpc3Qgb2YgdGVtcGxhdGUgcGFyYW1ldGVycyBmb3IgYSBUZW1wbGF0 ZURlY2wgYW5kIGl0cwogLy8vIGRlcml2ZWQgY2xhc3Nlcy4KLWNsYXNzIExM Vk1fQUxJR05BUygvKmFsaWdub2Yodm9pZCopKi8gTExWTV9QVFJfU0laRSkg VGVtcGxhdGVQYXJhbWV0ZXJMaXN0IHsKK2NsYXNzIExMVk1fQUxJR05BUygv KmFsaWdub2Yodm9pZCopKi8gTExWTV9QVFJfU0laRSkgVGVtcGxhdGVQYXJh bWV0ZXJMaXN0IGZpbmFsCisgICAgOiBsbHZtOjpUcmFpbGluZ09iamVjdHM8 VGVtcGxhdGVQYXJhbWV0ZXJMaXN0LCBOYW1lZERlY2wgKj4geworCiAgIC8v LyBUaGUgbG9jYXRpb24gb2YgdGhlICd0ZW1wbGF0ZScga2V5d29yZC4KICAg U291cmNlTG9jYXRpb24gVGVtcGxhdGVMb2M7CiAKQEAgLTU5LDYgKzYyLDEw IEBACiAgIHVuc2lnbmVkIENvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBh Y2sgOiAxOwogCiBwcm90ZWN0ZWQ6CisgIHNpemVfdCBudW1UcmFpbGluZ09i amVjdHMoT3ZlcmxvYWRUb2tlbjxOYW1lZERlY2wgKj4pIGNvbnN0IHsKKyAg ICByZXR1cm4gTnVtUGFyYW1zOworICB9CisKICAgVGVtcGxhdGVQYXJhbWV0 ZXJMaXN0KFNvdXJjZUxvY2F0aW9uIFRlbXBsYXRlTG9jLCBTb3VyY2VMb2Nh dGlvbiBMQW5nbGVMb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICBOYW1l ZERlY2wgKipQYXJhbXMsIHVuc2lnbmVkIE51bVBhcmFtcywKICAgICAgICAg ICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJBbmdsZUxvYyk7CkBA IC03NywxMCArODQsOCBAQAogICAvLy8gXGJyaWVmIEl0ZXJhdGVzIHRocm91 Z2ggdGhlIHRlbXBsYXRlIHBhcmFtZXRlcnMgaW4gdGhpcyBsaXN0LgogICB0 eXBlZGVmIE5hbWVkRGVjbCogY29uc3QqIGNvbnN0X2l0ZXJhdG9yOwogCi0g IGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxO YW1lZERlY2wgKio+KHRoaXMgKyAxKTsgfQotICBjb25zdF9pdGVyYXRvciBi ZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxO YW1lZERlY2wgKiBjb25zdCAqPih0aGlzICsgMSk7Ci0gIH0KKyAgaXRlcmF0 b3IgYmVnaW4oKSB7IHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8TmFtZWRE ZWNsICo+KCk7IH0KKyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7 IHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8TmFtZWREZWNsICo+KCk7IH0K ICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gYmVnaW4oKSArIE51bVBhcmFt czsgfQogICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBi ZWdpbigpICsgTnVtUGFyYW1zOyB9CiAKQEAgLTEzMCw0MCArMTM1LDQ1IEBA CiAgIFNvdXJjZVJhbmdlIGdldFNvdXJjZVJhbmdlKCkgY29uc3QgTExWTV9S RUFET05MWSB7CiAgICAgcmV0dXJuIFNvdXJjZVJhbmdlKFRlbXBsYXRlTG9j LCBSQW5nbGVMb2MpOwogICB9CisKKyAgZnJpZW5kIGNsYXNzIFRyYWlsaW5n T2JqZWN0czsKKyAgdGVtcGxhdGUgPHNpemVfdCBOPiBmcmllbmQgY2xhc3Mg Rml4ZWRTaXplVGVtcGxhdGVQYXJhbWV0ZXJMaXN0U3RvcmFnZTsKIH07CiAK IC8vLyBcYnJpZWYgU3RvcmVzIGEgbGlzdCBvZiB0ZW1wbGF0ZSBwYXJhbWV0 ZXJzIGZvciBhIFRlbXBsYXRlRGVjbCBhbmQgaXRzCiAvLy8gZGVyaXZlZCBj bGFzc2VzLiBTdWl0YWJsZSBmb3IgY3JlYXRpbmcgb24gdGhlIHN0YWNrLgot dGVtcGxhdGU8c2l6ZV90IE4+Ci1jbGFzcyBGaXhlZFNpemVUZW1wbGF0ZVBh cmFtZXRlckxpc3QgOiBwdWJsaWMgVGVtcGxhdGVQYXJhbWV0ZXJMaXN0IHsK LSAgTmFtZWREZWNsICpQYXJhbXNbTl07Cit0ZW1wbGF0ZSA8c2l6ZV90IE4+ IGNsYXNzIEZpeGVkU2l6ZVRlbXBsYXRlUGFyYW1ldGVyTGlzdFN0b3JhZ2Ug eworICBjaGFyIE1lbVtUZW1wbGF0ZVBhcmFtZXRlckxpc3Q6OnRvdGFsU2l6 ZVRvQWxsb2M8TmFtZWREZWNsICo+KE4pXTsKIAogcHVibGljOgotICBGaXhl ZFNpemVUZW1wbGF0ZVBhcmFtZXRlckxpc3QoU291cmNlTG9jYXRpb24gVGVt cGxhdGVMb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT b3VyY2VMb2NhdGlvbiBMQW5nbGVMb2MsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOYW1lZERlY2wgKipQYXJhbXMsIFNvdXJjZUxvY2F0 aW9uIFJBbmdsZUxvYykgOgotICAgIFRlbXBsYXRlUGFyYW1ldGVyTGlzdChU ZW1wbGF0ZUxvYywgTEFuZ2xlTG9jLCBQYXJhbXMsIE4sIFJBbmdsZUxvYykg eworICBGaXhlZFNpemVUZW1wbGF0ZVBhcmFtZXRlckxpc3RTdG9yYWdlKFNv dXJjZUxvY2F0aW9uIFRlbXBsYXRlTG9jLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExBbmdsZUxv YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO YW1lZERlY2wgKipQYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gUkFuZ2xlTG9jKSB7Cisg ICAgbmV3IChNZW0pCisgICAgICAgIFRlbXBsYXRlUGFyYW1ldGVyTGlzdChU ZW1wbGF0ZUxvYywgTEFuZ2xlTG9jLCBQYXJhbXMsIE4sIFJBbmdsZUxvYyk7 CisgIH0KKyAgVGVtcGxhdGVQYXJhbWV0ZXJMaXN0ICpnZXQoKSB7CisgICAg cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVtcGxhdGVQYXJhbWV0ZXJMaXN0 ICo+KE1lbSk7CiAgIH0KIH07CiAKIC8vLyBcYnJpZWYgQSB0ZW1wbGF0ZSBh cmd1bWVudCBsaXN0LgotY2xhc3MgVGVtcGxhdGVBcmd1bWVudExpc3Qgewor Y2xhc3MgVGVtcGxhdGVBcmd1bWVudExpc3QgZmluYWwKKyAgICA6IGxsdm06 OlRyYWlsaW5nT2JqZWN0czxUZW1wbGF0ZUFyZ3VtZW50TGlzdCwgVGVtcGxh dGVBcmd1bWVudD4gewogICAvLy8gXGJyaWVmIFRoZSB0ZW1wbGF0ZSBhcmd1 bWVudCBsaXN0LgotICAvLy8KLSAgLy8vIFRoZSBpbnRlZ2VyIHZhbHVlIHdp bGwgYmUgbm9uLXplcm8gdG8gaW5kaWNhdGUgdGhhdCB0aGlzCi0gIC8vLyB0 ZW1wbGF0ZSBhcmd1bWVudCBsaXN0IGRvZXMgb3duIHRoZSBwb2ludGVyLgot ICBsbHZtOjpQb2ludGVySW50UGFpcjxjb25zdCBUZW1wbGF0ZUFyZ3VtZW50 ICosIDE+IEFyZ3VtZW50czsKKyAgY29uc3QgVGVtcGxhdGVBcmd1bWVudCAq QXJndW1lbnRzOwogCiAgIC8vLyBcYnJpZWYgVGhlIG51bWJlciBvZiB0ZW1w bGF0ZSBhcmd1bWVudHMgaW4gdGhpcyB0ZW1wbGF0ZQogICAvLy8gYXJndW1l bnQgbGlzdC4KICAgdW5zaWduZWQgTnVtQXJndW1lbnRzOwogCiAgIFRlbXBs YXRlQXJndW1lbnRMaXN0KGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0ICZP dGhlcikgPSBkZWxldGU7CiAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFRlbXBs YXRlQXJndW1lbnRMaXN0ICZPdGhlcikgPSBkZWxldGU7CiAKLSAgVGVtcGxh dGVBcmd1bWVudExpc3QoY29uc3QgVGVtcGxhdGVBcmd1bWVudCAqQXJncywg dW5zaWduZWQgTnVtQXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgYm9v bCBPd25lZCkKLSAgICA6IEFyZ3VtZW50cyhBcmdzLCBPd25lZCksIE51bUFy Z3VtZW50cyhOdW1BcmdzKSB7IH0KKyAgLy8gQ29uc3RydWN0cyBhbiBpbnN0 YW5jZSB3aXRoIGFuIGludGVybmFsIEFyZ3VtZW50IGxpc3QsIGNvbnRhaW5p bmcKKyAgLy8gYSBjb3B5IG9mIHRoZSBBcmdzIGFycmF5LiAoQ2FsbGVkIGJ5 IENyZWF0ZUNvcHkpCisgIFRlbXBsYXRlQXJndW1lbnRMaXN0KGNvbnN0IFRl bXBsYXRlQXJndW1lbnQgKkFyZ3MsIHVuc2lnbmVkIE51bUFyZ3MpOwogCiBw dWJsaWM6CiAgIC8vLyBcYnJpZWYgVHlwZSB1c2VkIHRvIGluZGljYXRlIHRo YXQgdGhlIHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QgaXRzZWxmIGlzIGEKQEAg LTE4MCwxOCArMTkwLDE4IEBACiAgIC8vLwogICAvLy8gVGhlIHRlbXBsYXRl IGFyZ3VtZW50IGxpc3QgZG9lcyBub3Qgb3duIHRoZSB0ZW1wbGF0ZSBhcmd1 bWVudHMKICAgLy8vIHByb3ZpZGVkLgotICBleHBsaWNpdCBUZW1wbGF0ZUFy Z3VtZW50TGlzdChPblN0YWNrVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudCAqQXJncywgdW5z aWduZWQgTnVtQXJncykKLSAgICA6IEFyZ3VtZW50cyhBcmdzLCBmYWxzZSks IE51bUFyZ3VtZW50cyhOdW1BcmdzKSB7IH0KKyAgZXhwbGljaXQgVGVtcGxh dGVBcmd1bWVudExpc3QoT25TdGFja1R5cGUsIGNvbnN0IFRlbXBsYXRlQXJn dW1lbnQgKkFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIE51bUFyZ3MpCisgICAgICA6IEFyZ3VtZW50cyhBcmdzKSwg TnVtQXJndW1lbnRzKE51bUFyZ3MpIHt9CiAKICAgLy8vIFxicmllZiBQcm9k dWNlcyBhIHNoYWxsb3cgY29weSBvZiB0aGUgZ2l2ZW4gdGVtcGxhdGUgYXJn dW1lbnQgbGlzdC4KICAgLy8vCiAgIC8vLyBUaGlzIG9wZXJhdGlvbiBhc3N1 bWVzIHRoYXQgdGhlIGlucHV0IGFyZ3VtZW50IGxpc3Qgb3V0bGl2ZXMgaXQu CiAgIC8vLyBUaGlzIHRha2VzIHRoZSBsaXN0IGFzIGEgcG9pbnRlciB0byBh dm9pZCBsb29raW5nIGxpa2UgYSBjb3B5CiAgIC8vLyBjb25zdHJ1Y3Rvciwg c2luY2UgdGhpcyByZWFsbHkgcmVhbGx5IGlzbid0IHNhZmUgdG8gdXNlIHRo YXQKICAgLy8vIHdheS4KICAgZXhwbGljaXQgVGVtcGxhdGVBcmd1bWVudExp c3QoY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3QgKk90aGVyKQotICAgIDog QXJndW1lbnRzKE90aGVyLT5kYXRhKCksIGZhbHNlKSwgTnVtQXJndW1lbnRz KE90aGVyLT5zaXplKCkpIHsgfQorICAgICAgOiBBcmd1bWVudHMoT3RoZXIt PmRhdGEoKSksIE51bUFyZ3VtZW50cyhPdGhlci0+c2l6ZSgpKSB7fQogCiAg IC8vLyBcYnJpZWYgUmV0cmlldmUgdGhlIHRlbXBsYXRlIGFyZ3VtZW50IGF0 IGEgZ2l2ZW4gaW5kZXguCiAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnQgJmdl dCh1bnNpZ25lZCBJZHgpIGNvbnN0IHsKQEAgLTIxMiw5ICsyMjIsOSBAQAog ICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gTnVtQXJndW1lbnRz OyB9CiAKICAgLy8vIFxicmllZiBSZXRyaWV2ZSBhIHBvaW50ZXIgdG8gdGhl IHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QuCi0gIGNvbnN0IFRlbXBsYXRlQXJn dW1lbnQgKmRhdGEoKSBjb25zdCB7Ci0gICAgcmV0dXJuIEFyZ3VtZW50cy5n ZXRQb2ludGVyKCk7Ci0gIH0KKyAgY29uc3QgVGVtcGxhdGVBcmd1bWVudCAq ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIEFyZ3VtZW50czsgfQorCisgIGZyaWVu ZCBjbGFzcyBUcmFpbGluZ09iamVjdHM7CiB9OwogCiB2b2lkICphbGxvY2F0 ZURlZmF1bHRBcmdTdG9yYWdlQ2hhaW4oY29uc3QgQVNUQ29udGV4dCAmQyk7 CkBAIC01NDMsNyArNTUzLDkgQEAKIC8vLyAgIH07CiAvLy8gXGVuZGNvZGUK IGNsYXNzIExMVk1fQUxJR05BUygvKmFsaWdub2YodWludDY0X3QpKi8gOCkK LSAgICBEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb25J bmZvIHsKKyAgICBEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6 YXRpb25JbmZvIGZpbmFsCisgICAgOiBsbHZtOjpUcmFpbGluZ09iamVjdHM8 RGVwZW5kZW50RnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uSW5mbywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUFyZ3VtZW50 TG9jLCBGdW5jdGlvblRlbXBsYXRlRGVjbCAqPiB7CiAgIC8vLyBUaGUgbnVt YmVyIG9mIHBvdGVudGlhbCB0ZW1wbGF0ZSBjYW5kaWRhdGVzLgogICB1bnNp Z25lZCBOdW1UZW1wbGF0ZXM7CiAKQEAgLTU1MywyOSArNTY1LDM1IEBACiAg IC8vLyBUaGUgbG9jYXRpb25zIG9mIHRoZSBsZWZ0IGFuZCByaWdodCBhbmds ZSBicmFja2V0cy4KICAgU291cmNlUmFuZ2UgQW5nbGVMb2NzOwogCi0gIEZ1 bmN0aW9uVGVtcGxhdGVEZWNsICogY29uc3QgKmdldFRlbXBsYXRlcygpIGNv bnN0IHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblRl bXBsYXRlRGVjbCAqY29uc3QgKj4oCi0gICAgICAgICZnZXRUZW1wbGF0ZUFy Z3MoKVtOdW1BcmdzXSk7CisgIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMo T3ZlcmxvYWRUb2tlbjxUZW1wbGF0ZUFyZ3VtZW50TG9jPikgY29uc3Qgewor ICAgIHJldHVybiBOdW1BcmdzOworICB9CisgIHNpemVfdCBudW1UcmFpbGlu Z09iamVjdHMoT3ZlcmxvYWRUb2tlbjxGdW5jdGlvblRlbXBsYXRlRGVjbCAq PikgY29uc3QgeworICAgIHJldHVybiBOdW1UZW1wbGF0ZXM7CiAgIH0KIAot cHVibGljOgogICBEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6 YXRpb25JbmZvKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgVW5yZXNvbHZlZFNldEltcGwgJlRlbXBsYXRlcywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlbXBsYXRlQXJndW1l bnRMaXN0SW5mbyAmVGVtcGxhdGVBcmdzKTsKIAorcHVibGljOgorICBzdGF0 aWMgRGVwZW5kZW50RnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uSW5m byAqCisgIENyZWF0ZShBU1RDb250ZXh0ICZDb250ZXh0LCBjb25zdCBVbnJl c29sdmVkU2V0SW1wbCAmVGVtcGxhdGVzLAorICAgICAgICAgY29uc3QgVGVt cGxhdGVBcmd1bWVudExpc3RJbmZvICZUZW1wbGF0ZUFyZ3MpOworCiAgIC8v LyBcYnJpZWYgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZ1bmN0aW9uIHRlbXBs YXRlcyB0aGF0IHRoaXMgbWlnaHQKICAgLy8vIGJlIGEgc3BlY2lhbGl6YXRp b24gb2YuCiAgIHVuc2lnbmVkIGdldE51bVRlbXBsYXRlcygpIGNvbnN0IHsg cmV0dXJuIE51bVRlbXBsYXRlczsgfQogCiAgIC8vLyBcYnJpZWYgUmV0dXJu cyB0aGUgaSd0aCB0ZW1wbGF0ZSBjYW5kaWRhdGUuCiAgIEZ1bmN0aW9uVGVt cGxhdGVEZWNsICpnZXRUZW1wbGF0ZSh1bnNpZ25lZCBJKSBjb25zdCB7CiAg ICAgYXNzZXJ0KEkgPCBnZXROdW1UZW1wbGF0ZXMoKSAmJiAidGVtcGxhdGUg aW5kZXggb3V0IG9mIHJhbmdlIik7Ci0gICAgcmV0dXJuIGdldFRlbXBsYXRl cygpW0ldOworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8RnVuY3Rp b25UZW1wbGF0ZURlY2wgKj4oKVtJXTsKICAgfQogCiAgIC8vLyBcYnJpZWYg UmV0dXJucyB0aGUgZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnRzIHRoYXQg d2VyZSBnaXZlbi4KICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExvYyAqZ2V0 VGVtcGxhdGVBcmdzKCkgY29uc3QgewotICAgIHJldHVybiByZWludGVycHJl dF9jYXN0PGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMb2MgKj4odGhpcyArIDEp OworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8VGVtcGxhdGVBcmd1 bWVudExvYz4oKTsKICAgfQogCiAgIC8vLyBcYnJpZWYgUmV0dXJucyB0aGUg bnVtYmVyIG9mIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50cyB0aGF0IHdl cmUgZ2l2ZW4uCkBAIC01OTQsNiArNjEyLDggQEAKICAgU291cmNlTG9jYXRp b24gZ2V0UkFuZ2xlTG9jKCkgY29uc3QgewogICAgIHJldHVybiBBbmdsZUxv Y3MuZ2V0RW5kKCk7CiAgIH0KKworICBmcmllbmQgY2xhc3MgVHJhaWxpbmdP YmplY3RzOwogfTsKIAogLy8vIERlY2xhcmF0aW9uIG9mIGEgcmVkZWNsYXJh YmxlIHRlbXBsYXRlLgpAQCAtMTEwOCw4ICsxMTI4LDEwIEBACiAvLy8gQGNv ZGUKIC8vLyB0ZW1wbGF0ZTxpbnQgU2l6ZT4gY2xhc3MgYXJyYXkgeyB9Owog Ly8vIEBlbmRjb2RlCi1jbGFzcyBOb25UeXBlVGVtcGxhdGVQYXJtRGVjbAot ICA6IHB1YmxpYyBEZWNsYXJhdG9yRGVjbCwgcHJvdGVjdGVkIFRlbXBsYXRl UGFybVBvc2l0aW9uIHsKK2NsYXNzIE5vblR5cGVUZW1wbGF0ZVBhcm1EZWNs IGZpbmFsCisgICAgOiBwdWJsaWMgRGVjbGFyYXRvckRlY2wsCisgICAgICBw cm90ZWN0ZWQgVGVtcGxhdGVQYXJtUG9zaXRpb24sCisgICAgICBsbHZtOjpU cmFpbGluZ09iamVjdHM8Tm9uVHlwZVRlbXBsYXRlUGFybURlY2wsIHZvaWQg Kj4gewogICAvLy8gXGJyaWVmIFRoZSBkZWZhdWx0IHRlbXBsYXRlIGFyZ3Vt ZW50LCBpZiBhbnksIGFuZCB3aGV0aGVyIG9yIG5vdAogICAvLy8gaXQgd2Fz IGluaGVyaXRlZC4KICAgdHlwZWRlZiBEZWZhdWx0QXJnU3RvcmFnZTxOb25U eXBlVGVtcGxhdGVQYXJtRGVjbCwgRXhwcio+IERlZkFyZ1N0b3JhZ2U7CkBA IC0xMTI5LDYgKzExNTEsMTAgQEAKICAgLy8vIFxicmllZiBUaGUgbnVtYmVy IG9mIHR5cGVzIGluIGFuIGV4cGFuZGVkIHBhcmFtZXRlciBwYWNrLgogICB1 bnNpZ25lZCBOdW1FeHBhbmRlZFR5cGVzOwogCisgIHNpemVfdCBudW1UcmFp bGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjx2b2lkICo+KSBjb25zdCB7Cisg ICAgcmV0dXJuIE51bUV4cGFuZGVkVHlwZXMgKiAyOworICB9CisKICAgTm9u VHlwZVRlbXBsYXRlUGFybURlY2woRGVjbENvbnRleHQgKkRDLCBTb3VyY2VM b2NhdGlvbiBTdGFydExvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg U291cmNlTG9jYXRpb24gSWRMb2MsIHVuc2lnbmVkIEQsIHVuc2lnbmVkIFAs CiAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXJJbmZvICpJ ZCwgUXVhbFR5cGUgVCwKQEAgLTExNDcsNiArMTE3Myw3IEBACiAgICAgICAg ICAgICAgICAgICAgICAgICAgIFR5cGVTb3VyY2VJbmZvICoqRXhwYW5kZWRU SW5mb3MpOwogCiAgIGZyaWVuZCBjbGFzcyBBU1REZWNsUmVhZGVyOworICBm cmllbmQgY2xhc3MgVHJhaWxpbmdPYmplY3RzOwogCiBwdWJsaWM6CiAgIHN0 YXRpYyBOb25UeXBlVGVtcGxhdGVQYXJtRGVjbCAqCkBAIC0xMjYyLDE1ICsx Mjg5LDE1IEBACiAgIC8vLyBwYWNrLgogICBRdWFsVHlwZSBnZXRFeHBhbnNp b25UeXBlKHVuc2lnbmVkIEkpIGNvbnN0IHsKICAgICBhc3NlcnQoSSA8IE51 bUV4cGFuZGVkVHlwZXMgJiYgIk91dC1vZi1yYW5nZSBleHBhbnNpb24gdHlw ZSBpbmRleCIpOwotICAgIHZvaWQgKiBjb25zdCAqVHlwZXNBbmRJbmZvcyA9 IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqIGNvbnN0Kj4odGhpcyArIDEpOwor ICAgIHZvaWQgKmNvbnN0ICpUeXBlc0FuZEluZm9zID0gZ2V0VHJhaWxpbmdP YmplY3RzPHZvaWQgKj4oKTsKICAgICByZXR1cm4gUXVhbFR5cGU6OmdldEZy b21PcGFxdWVQdHIoVHlwZXNBbmRJbmZvc1syKkldKTsKICAgfQogCiAgIC8v LyBcYnJpZWYgUmV0cmlldmUgYSBwYXJ0aWN1bGFyIGV4cGFuc2lvbiB0eXBl IHNvdXJjZSBpbmZvIHdpdGhpbiBhbgogICAvLy8gZXhwYW5kZWQgcGFyYW1l dGVyIHBhY2suCiAgIFR5cGVTb3VyY2VJbmZvICpnZXRFeHBhbnNpb25UeXBl U291cmNlSW5mbyh1bnNpZ25lZCBJKSBjb25zdCB7CiAgICAgYXNzZXJ0KEkg PCBOdW1FeHBhbmRlZFR5cGVzICYmICJPdXQtb2YtcmFuZ2UgZXhwYW5zaW9u IHR5cGUgaW5kZXgiKTsKLSAgICB2b2lkICogY29uc3QgKlR5cGVzQW5kSW5m b3MgPSByZWludGVycHJldF9jYXN0PHZvaWQgKiBjb25zdCo+KHRoaXMgKyAx KTsKKyAgICB2b2lkICpjb25zdCAqVHlwZXNBbmRJbmZvcyA9IGdldFRyYWls aW5nT2JqZWN0czx2b2lkICo+KCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0 PFR5cGVTb3VyY2VJbmZvICo+KFR5cGVzQW5kSW5mb3NbMipJKzFdKTsKICAg fQogCkBAIC0xMjg2LDkgKzEzMTMsMTAgQEAKIC8vLyBAZW5kY29kZQogLy8v IEEgdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVyIGlzIGEgVGVtcGxhdGVE ZWNsIGJlY2F1c2UgaXQgZGVmaW5lcyB0aGUKIC8vLyBuYW1lIG9mIGEgdGVt cGxhdGUgYW5kIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGFsbG93YWJsZSBm b3Igc3Vic3RpdHV0aW9uLgotY2xhc3MgVGVtcGxhdGVUZW1wbGF0ZVBhcm1E ZWNsIDogcHVibGljIFRlbXBsYXRlRGVjbCwgCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgVGVtcGxhdGVQYXJtUG9zaXRp b24gCi17CitjbGFzcyBUZW1wbGF0ZVRlbXBsYXRlUGFybURlY2wgZmluYWwK KyAgICA6IHB1YmxpYyBUZW1wbGF0ZURlY2wsCisgICAgICBwcm90ZWN0ZWQg VGVtcGxhdGVQYXJtUG9zaXRpb24sCisgICAgICBsbHZtOjpUcmFpbGluZ09i amVjdHM8VGVtcGxhdGVUZW1wbGF0ZVBhcm1EZWNsLCBUZW1wbGF0ZVBhcmFt ZXRlckxpc3QgKj4gewogICB2b2lkIGFuY2hvcigpIG92ZXJyaWRlOwogCiAg IC8vLyBcYnJpZWYgVGhlIGRlZmF1bHQgdGVtcGxhdGUgYXJndW1lbnQsIGlm IGFueS4KQEAgLTEzOTIsNyArMTQyMCw3IEBACiAgIC8vLyBwYWNrLgogICBU ZW1wbGF0ZVBhcmFtZXRlckxpc3QgKmdldEV4cGFuc2lvblRlbXBsYXRlUGFy YW1ldGVycyh1bnNpZ25lZCBJKSBjb25zdCB7CiAgICAgYXNzZXJ0KEkgPCBO dW1FeHBhbmRlZFBhcmFtcyAmJiAiT3V0LW9mLXJhbmdlIGV4cGFuc2lvbiB0 eXBlIGluZGV4Iik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVt cGxhdGVQYXJhbWV0ZXJMaXN0ICpjb25zdCAqPih0aGlzICsgMSlbSV07Cisg ICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxUZW1wbGF0ZVBhcmFtZXRl ckxpc3QgKj4oKVtJXTsKICAgfQogCiAgIGNvbnN0IERlZkFyZ1N0b3JhZ2Ug JmdldERlZmF1bHRBcmdTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gRGVmYXVs dEFyZ3VtZW50OyB9CkBAIC0xNDQyLDYgKzE0NzAsNyBAQAogCiAgIGZyaWVu ZCBjbGFzcyBBU1REZWNsUmVhZGVyOwogICBmcmllbmQgY2xhc3MgQVNURGVj bFdyaXRlcjsKKyAgZnJpZW5kIGNsYXNzIFRyYWlsaW5nT2JqZWN0czsKIH07 CiAKIC8vLyBcYnJpZWYgUmVwcmVzZW50cyBhIGNsYXNzIHRlbXBsYXRlIHNw ZWNpYWxpemF0aW9uLCB3aGljaCByZWZlcnMgdG8KSW5kZXg6IGluY2x1ZGUv Y2xhbmcvQVNUL0RlY2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBp bmNsdWRlL2NsYW5nL0FTVC9EZWNsLmgKKysrIGluY2x1ZGUvY2xhbmcvQVNU L0RlY2wuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImxsdm0vQURU L09wdGlvbmFsLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0NvbXBpbGVy LmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L3Jhd19vc3RyZWFtLmgiCisj aW5jbHVkZSAibGx2bS9TdXBwb3J0L1RyYWlsaW5nT2JqZWN0cy5oIgogCiBu YW1lc3BhY2UgY2xhbmcgewogc3RydWN0IEFTVFRlbXBsYXRlQXJndW1lbnRM aXN0SW5mbzsKQEAgLTM2MTMsNyArMzYxNCwxNSBAQAogCiAvLy8gXGJyaWVm IFRoaXMgcmVwcmVzZW50cyB0aGUgYm9keSBvZiBhIENhcHR1cmVkU3RtdCwg YW5kIHNlcnZlcyBhcyBpdHMKIC8vLyBEZWNsQ29udGV4dC4KLWNsYXNzIENh cHR1cmVkRGVjbCA6IHB1YmxpYyBEZWNsLCBwdWJsaWMgRGVjbENvbnRleHQg eworY2xhc3MgQ2FwdHVyZWREZWNsIGZpbmFsCisgICAgOiBwdWJsaWMgRGVj bCwKKyAgICAgIHB1YmxpYyBEZWNsQ29udGV4dCwKKyAgICAgIGxsdm06OlRy YWlsaW5nT2JqZWN0czxDYXB0dXJlZERlY2wsIEltcGxpY2l0UGFyYW1EZWNs ICo+IHsKK3Byb3RlY3RlZDoKKyAgc2l6ZV90IG51bVRyYWlsaW5nT2JqZWN0 cyhPdmVybG9hZFRva2VuPEltcGxpY2l0UGFyYW1EZWNsPikgeworICAgIHJl dHVybiBOdW1QYXJhbXM7CisgIH0KKwogcHJpdmF0ZToKICAgLy8vIFxicmll ZiBUaGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdG8gdGhlIG91dGxpbmVkIGZ1 bmN0aW9uLgogICB1bnNpZ25lZCBOdW1QYXJhbXM7CkBAIC0zNjI3LDggKzM2 MzYsOSBAQAogICAgICAgTnVtUGFyYW1zKE51bVBhcmFtcyksIENvbnRleHRQ YXJhbSgwKSwgQm9keUFuZE5vdGhyb3cobnVsbHB0ciwgZmFsc2UpIHsgfQog CiAgIEltcGxpY2l0UGFyYW1EZWNsICoqZ2V0UGFyYW1zKCkgY29uc3Qgewot ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEltcGxpY2l0UGFyYW1EZWNs ICoqPigKLSAgICAgICAgICAgICBjb25zdF9jYXN0PENhcHR1cmVkRGVjbCAq Pih0aGlzKSArIDEpOworICAgIC8vIEZJWE1FOiBkb2Vzbid0IHNlZW0gbGlr ZSBpdCBzaG91bGQgYmUgdXNpbmcgYSBjb25zdF9jYXN0LgorICAgIHJldHVy biBjb25zdF9jYXN0PENhcHR1cmVkRGVjbCAqPih0aGlzKQorICAgICAgICAt PmdldFRyYWlsaW5nT2JqZWN0czxJbXBsaWNpdFBhcmFtRGVjbCAqPigpOwog ICB9CiAKIHB1YmxpYzoKQEAgLTM2ODksNiArMzY5OSw3IEBACiAKICAgZnJp ZW5kIGNsYXNzIEFTVERlY2xSZWFkZXI7CiAgIGZyaWVuZCBjbGFzcyBBU1RE ZWNsV3JpdGVyOworICBmcmllbmQgY2xhc3MgVHJhaWxpbmdPYmplY3RzOwog fTsKIAogLy8vIFxicmllZiBEZXNjcmliZXMgYSBtb2R1bGUgaW1wb3J0IGRl Y2xhcmF0aW9uLCB3aGljaCBtYWtlcyB0aGUgY29udGVudHMKQEAgLTM3MDEs NyArMzcxMiw4IEBACiAvLy8KIC8vLyBJbXBvcnQgZGVjbGFyYXRpb25zIGNh biBhbHNvIGJlIGltcGxpY2l0bHkgZ2VuZXJhdGVkIGZyb20KIC8vLyBcI2lu Y2x1ZGUvXCNpbXBvcnQgZGlyZWN0aXZlcy4KLWNsYXNzIEltcG9ydERlY2wg OiBwdWJsaWMgRGVjbCB7CitjbGFzcyBJbXBvcnREZWNsIGZpbmFsIDogcHVi bGljIERlY2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHJh aWxpbmdPYmplY3RzPEltcG9ydERlY2wsIFNvdXJjZUxvY2F0aW9uPiB7CiAg IC8vLyBcYnJpZWYgVGhlIGltcG9ydGVkIG1vZHVsZSwgYWxvbmcgd2l0aCBh IGJpdCB0aGF0IGluZGljYXRlcyB3aGV0aGVyCiAgIC8vLyB3ZSBoYXZlIHNv dXJjZS1sb2NhdGlvbiBpbmZvcm1hdGlvbiBmb3IgZWFjaCBpZGVudGlmaWVy IGluIHRoZSBtb2R1bGUKICAgLy8vIG5hbWUuIApAQCAtMzcxNyw3ICszNzI5 LDggQEAKICAgZnJpZW5kIGNsYXNzIEFTVFJlYWRlcjsKICAgZnJpZW5kIGNs YXNzIEFTVERlY2xSZWFkZXI7CiAgIGZyaWVuZCBjbGFzcyBBU1RDb250ZXh0 OwotICAKKyAgZnJpZW5kIGNsYXNzIFRyYWlsaW5nT2JqZWN0czsKKwogICBJ bXBvcnREZWNsKERlY2xDb250ZXh0ICpEQywgU291cmNlTG9jYXRpb24gU3Rh cnRMb2MsIE1vZHVsZSAqSW1wb3J0ZWQsCiAgICAgICAgICAgICAgQXJyYXlS ZWY8U291cmNlTG9jYXRpb24+IElkZW50aWZpZXJMb2NzKTsKIAo= --b1_9a7a611d7dfa2d0589be2552c73281b9 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits --b1_9a7a611d7dfa2d0589be2552c73281b9--