R2l0IGNvbW1pdCA1NzVmMDkxMjU1MmI0ZWEwNzU0ODc5NjcwYmRkMGRiMmIxZjJmMDQyIGJ5IERt aXRyeSBLYXpha292LgpDb21taXR0ZWQgb24gMDMvMDYvMjAxNiBhdCAxMzoyNS4KUHVzaGVkIGJ5 IGRrYXpha292IGludG8gYnJhbmNoICdtYXN0ZXInLgoKQWxsb3cgYXV0by1lbmFibGluZyB0aGUg bXVsdGlwcm9wZXJ0eSB3aWRnZXQgYnkganVzdCBjbGlja2luZyBvbiBpdAoKSWYgeW91IG9wZW4g dGhlIFByb3BlcnRpZXMgZGlhbG9nIGZvciBtdWx0aXBsZSBsYXllcnMsIHRoZSBjb250cm9scwpm b3IgdGhlIHByb3BlcnRpZXMgdGhhdCB2YXJ5IGFtb25nIHRoZSBsYXllcnMgKGUuZy4gbGF5ZXIg bmFtZSkgd2lsbApiZSBpbml0aWFsbHkgZGlzYWJsZWQuIEJlZm9yZSB0aGlzIHBhdGNoIHlvdSBz aG91bGQgaGF2ZSBlbmFibGVkCnRoZW0gbWFudWFsbHkgYnkgY2xpY2tpbmcgb24gYSBjaGVja2Jv eCBuZWFyYnksIG5vdyBpdCBpcyBwZXJmZWN0bHkKZW5vdWdoIGp1c3QgdG8gY2xpY2sgb24gdGhl IGNvbnRyb2wgaXRzZWxmIGFuZCBpdCB3aWxsIGJlY29tZSBlbmFibGVkLgoKUmVmIFQxMDYKQ0M6 a2ltYWdlc2hvcEBrZGUub3JnCgpNICArNCAgICAtMCAgICBsaWJzL3VpL2RpYWxvZ3Mva2lzX2Rs Z19sYXllcl9wcm9wZXJ0aWVzLmNjCk0gICs0NiAgIC0wICAgIGxpYnMvdWkva2lzX211bHRpbm9k ZV9wcm9wZXJ0eS5jcHAKTSAgKzE2ICAgLTAgICAgbGlicy91aS9raXNfbXVsdGlub2RlX3Byb3Bl cnR5LmgKCmh0dHA6Ly9jb21taXRzLmtkZS5vcmcva3JpdGEvNTc1ZjA5MTI1NTJiNGVhMDc1NDg3 OTY3MGJkZDBkYjJiMWYyZjA0MgoKZGlmZiAtLWdpdCBhL2xpYnMvdWkvZGlhbG9ncy9raXNfZGxn X2xheWVyX3Byb3BlcnRpZXMuY2MgYi9saWJzL3VpL2RpYWxvZ3Mva2lzX2RsZ19sYXllcl9wcm9w ZXJ0aWVzLmNjCmluZGV4IDVjMDM0M2EuLjMyZDM4N2MgMTAwNjQ0Ci0tLSBhL2xpYnMvdWkvZGlh bG9ncy9raXNfZGxnX2xheWVyX3Byb3BlcnRpZXMuY2MKKysrIGIvbGlicy91aS9kaWFsb2dzL2tp c19kbGdfbGF5ZXJfcHJvcGVydGllcy5jYwpAQCAtMTAxLDYgKzEwMSw3IEBAIEtpc0RsZ0xheWVy UHJvcGVydGllczo6S2lzRGxnTGF5ZXJQcm9wZXJ0aWVzKEtpc05vZGVMaXN0IG5vZGVzLCBLaXNW aWV3TWFuYWdlciAqCiAgICAgZC0+cGFnZS0+ZWRpdE5hbWUtPnNldEZvY3VzKCk7CiAgICAgZC0+ bmFtZVByb3BlcnR5LnJlc2V0KG5ldyBLaXNNdWx0aW5vZGVOYW1lUHJvcGVydHkobm9kZXMpKTsK ICAgICBkLT5uYW1lUHJvcGVydHktPmNvbm5lY3RJZ25vcmVDaGVja0JveChkLT5wYWdlLT5jaGtO YW1lKTsKKyAgICBkLT5uYW1lUHJvcGVydHktPmNvbm5lY3RBdXRvRW5hYmxlV2lkZ2V0KGQtPnBh Z2UtPmVkaXROYW1lKTsKICAgICBkLT5uYW1lUHJvcGVydHktPmNvbm5lY3RWYWx1ZUNoYW5nZWRT aWduYWwodGhpcywgU0xPVChzbG90TmFtZVZhbHVlQ2hhbmdlZEludGVybmFsbHkoKSkpOwogICAg IGNvbm5lY3QoZC0+cGFnZS0+ZWRpdE5hbWUsIFNJR05BTCh0ZXh0Q2hhbmdlZChjb25zdCBRU3Ry aW5nICYpKSwgU0xPVChzbG90TmFtZVZhbHVlQ2hhbmdlZEV4dGVybmFsbHkoKSkpOwogCkBAIC0x MDgsMTIgKzEwOSwxNCBAQCBLaXNEbGdMYXllclByb3BlcnRpZXM6Oktpc0RsZ0xheWVyUHJvcGVy dGllcyhLaXNOb2RlTGlzdCBub2RlcywgS2lzVmlld01hbmFnZXIgKgogICAgIGQtPnBhZ2UtPmlu dE9wYWNpdHktPnNldFN1ZmZpeCgiJSIpOwogICAgIGQtPm9wYWNpdHlQcm9wZXJ0eS5yZXNldChu ZXcgS2lzTXVsdGlub2RlT3BhY2l0eVByb3BlcnR5KG5vZGVzKSk7CiAgICAgZC0+b3BhY2l0eVBy b3BlcnR5LT5jb25uZWN0SWdub3JlQ2hlY2tCb3goZC0+cGFnZS0+Y2hrT3BhY2l0eSk7CisgICAg ZC0+b3BhY2l0eVByb3BlcnR5LT5jb25uZWN0QXV0b0VuYWJsZVdpZGdldChkLT5wYWdlLT5pbnRP cGFjaXR5KTsKICAgICBkLT5vcGFjaXR5UHJvcGVydHktPmNvbm5lY3RWYWx1ZUNoYW5nZWRTaWdu YWwodGhpcywgU0xPVChzbG90T3BhY2l0eVZhbHVlQ2hhbmdlZEludGVybmFsbHkoKSkpOwogICAg IGQtPm9wYWNpdHlQcm9wZXJ0eS0+Y29ubmVjdFZhbHVlQ2hhbmdlZFNpZ25hbCgmZC0+dXBkYXRl c0NvbXByZXNzb3IsIFNMT1Qoc3RhcnQoKSkpOwogICAgIGNvbm5lY3QoZC0+cGFnZS0+aW50T3Bh Y2l0eSwgU0lHTkFMKHZhbHVlQ2hhbmdlZChpbnQpKSwgU0xPVChzbG90T3BhY2l0eVZhbHVlQ2hh bmdlZEV4dGVybmFsbHkoKSkpOwogCiAgICAgZC0+Y29tcG9zaXRlT3BQcm9wZXJ0eS5yZXNldChu ZXcgS2lzTXVsdGlub2RlQ29tcG9zaXRlT3BQcm9wZXJ0eShub2RlcykpOwogICAgIGQtPmNvbXBv c2l0ZU9wUHJvcGVydHktPmNvbm5lY3RJZ25vcmVDaGVja0JveChkLT5wYWdlLT5jaGtDb21wb3Np dGVPcCk7CisgICAgZC0+Y29tcG9zaXRlT3BQcm9wZXJ0eS0+Y29ubmVjdEF1dG9FbmFibGVXaWRn ZXQoZC0+cGFnZS0+Y21iQ29tcG9zaXRlKTsKICAgICBkLT5jb21wb3NpdGVPcFByb3BlcnR5LT5j b25uZWN0VmFsdWVDaGFuZ2VkU2lnbmFsKHRoaXMsIFNMT1Qoc2xvdENvbXBvc2l0ZU9wVmFsdWVD aGFuZ2VkSW50ZXJuYWxseSgpKSk7CiAgICAgZC0+Y29tcG9zaXRlT3BQcm9wZXJ0eS0+Y29ubmVj dFZhbHVlQ2hhbmdlZFNpZ25hbCgmZC0+dXBkYXRlc0NvbXByZXNzb3IsIFNMT1Qoc3RhcnQoKSkp OwogICAgIGNvbm5lY3QoZC0+cGFnZS0+Y21iQ29tcG9zaXRlLCBTSUdOQUwoY3VycmVudEluZGV4 Q2hhbmdlZChpbnQpKSwgU0xPVChzbG90Q29tcG9zaXRlT3BWYWx1ZUNoYW5nZWRFeHRlcm5hbGx5 KCkpKTsKQEAgLTEyMSw2ICsxMjQsNyBAQCBLaXNEbGdMYXllclByb3BlcnRpZXM6Oktpc0RsZ0xh eWVyUHJvcGVydGllcyhLaXNOb2RlTGlzdCBub2RlcywgS2lzVmlld01hbmFnZXIgKgogICAgIGQt PnBhZ2UtPmNvbG9yTGFiZWxTZWxlY3Rvci0+c2V0Rm9jdXNQb2xpY3koUXQ6OlN0cm9uZ0ZvY3Vz KTsKICAgICBkLT5jb2xvckxhYmVsUHJvcGVydHkucmVzZXQobmV3IEtpc011bHRpbm9kZUNvbG9y TGFiZWxQcm9wZXJ0eShub2RlcykpOwogICAgIGQtPmNvbG9yTGFiZWxQcm9wZXJ0eS0+Y29ubmVj dElnbm9yZUNoZWNrQm94KGQtPnBhZ2UtPmNoa0NvbG9yTGFiZWwpOworICAgIGQtPmNvbG9yTGFi ZWxQcm9wZXJ0eS0+Y29ubmVjdEF1dG9FbmFibGVXaWRnZXQoZC0+cGFnZS0+Y29sb3JMYWJlbFNl bGVjdG9yKTsKICAgICBkLT5jb2xvckxhYmVsUHJvcGVydHktPmNvbm5lY3RWYWx1ZUNoYW5nZWRT aWduYWwodGhpcywgU0xPVChzbG90Q29sb3JMYWJlbFZhbHVlQ2hhbmdlZEludGVybmFsbHkoKSkp OwogICAgIGQtPmNvbG9yTGFiZWxQcm9wZXJ0eS0+Y29ubmVjdFZhbHVlQ2hhbmdlZFNpZ25hbCgm ZC0+dXBkYXRlc0NvbXByZXNzb3IsIFNMT1Qoc3RhcnQoKSkpOwogICAgIGNvbm5lY3QoZC0+cGFn ZS0+Y29sb3JMYWJlbFNlbGVjdG9yLCBTSUdOQUwoY3VycmVudEluZGV4Q2hhbmdlZChpbnQpKSwg U0xPVChzbG90Q29sb3JMYWJlbFZhbHVlQ2hhbmdlZEV4dGVybmFsbHkoKSkpOwpkaWZmIC0tZ2l0 IGEvbGlicy91aS9raXNfbXVsdGlub2RlX3Byb3BlcnR5LmNwcCBiL2xpYnMvdWkva2lzX211bHRp bm9kZV9wcm9wZXJ0eS5jcHAKaW5kZXggNzhkNjJjMC4uMWJmZWU1MCAxMDA2NDQKLS0tIGEvbGli cy91aS9raXNfbXVsdGlub2RlX3Byb3BlcnR5LmNwcAorKysgYi9saWJzL3VpL2tpc19tdWx0aW5v ZGVfcHJvcGVydHkuY3BwCkBAIC0zNSw2ICszNSwxMSBAQCB2b2lkIE11bHRpbm9kZVByb3BlcnR5 Q29ubmVjdG9ySW50ZXJmYWNlOjpub3RpZnlWYWx1ZUNoYW5nZWQoKSB7CiAgICAgZW1pdCBzaWdW YWx1ZUNoYW5nZWQoKTsKIH0KIAordm9pZCBNdWx0aW5vZGVQcm9wZXJ0eUNvbm5lY3RvckludGVy ZmFjZTo6Y29ubmVjdEF1dG9FbmFibGVXaWRnZXQoUVdpZGdldCAqd2lkZ2V0KQoreworICAgIFFf VU5VU0VEKHdpZGdldCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiAgICAgICAgICAgICAgIE11bHRp bm9kZVByb3BlcnR5QmFzZUNvbm5lY3RvciAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KQEAgLTYxLDYgKzY2LDQ1IEBAIHZvaWQgTXVsdGlub2RlUHJvcGVydHlCYXNlQ29ubmVjdG9y Ojpjb25uZWN0SWdub3JlQ2hlY2tCb3goUUNoZWNrQm94ICppZ25vcmVCb3gpCiAgICAgfQogfQog CisjaW5jbHVkZSA8UUV2ZW50PgorCitzdHJ1Y3QgQXV0b0VuYWJsZXIgOiBwdWJsaWMgUU9iamVj dCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBBdXRvRW5hYmxlcihRT2JqZWN0ICp3YXRj aGVkLCBLaXNNdWx0aW5vZGVQcm9wZXJ0eUludGVyZmFjZSAqcHJvcGVydHksIFFPYmplY3QgKnBh cmVudCkKKyAgICAgICAgOiBRT2JqZWN0KHBhcmVudCksIG1fd2F0Y2hlZCh3YXRjaGVkKSwgbV9w cm9wZXJ0eShwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIHdhdGNoZWQtPmluc3RhbGxFdmVudEZp bHRlcih0aGlzKTsKKyAgICB9CisKKyAgICBib29sIGV2ZW50RmlsdGVyKFFPYmplY3QgKndhdGNo ZWQsIFFFdmVudCAqIGV2ZW50KSB7CisgICAgICAgIGlmICh3YXRjaGVkICE9IG1fd2F0Y2hlZCkg cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIW1fcHJvcGVydHktPmlzSWdub3JlZCgpKSByZXR1 cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1 dHRvblByZXNzIHx8CisgICAgICAgICAgICBldmVudC0+dHlwZSgpID09IFFFdmVudDo6VGFibGV0 UHJlc3MpIHsKKworICAgICAgICAgICAgZW1pdCBlbmFibGVXaWRnZXQodHJ1ZSk7CisgICAgICAg IH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorUV9TSUdOQUxTOgorICAgIHZvaWQg ZW5hYmxlV2lkZ2V0KGJvb2wgdmFsdWUpOworCitwcml2YXRlOgorICAgIFFPYmplY3QgKm1fd2F0 Y2hlZDsKKyAgICBLaXNNdWx0aW5vZGVQcm9wZXJ0eUludGVyZmFjZSAqbV9wcm9wZXJ0eTsKK307 CisKK3ZvaWQgTXVsdGlub2RlUHJvcGVydHlCYXNlQ29ubmVjdG9yOjpjb25uZWN0QXV0b0VuYWJs ZVdpZGdldChRV2lkZ2V0ICp3aWRnZXQpCit7CisgICAgS0lTX1NBRkVfQVNTRVJUX1JFQ09WRVJf UkVUVVJOKG1faWdub3JlQm94KTsKKworICAgIEF1dG9FbmFibGVyICplbmFibGVyID0gbmV3IEF1 dG9FbmFibGVyKHdpZGdldCwgbV9wYXJlbnQsIHRoaXMpOworICAgIGNvbm5lY3QoZW5hYmxlciwg U0lHTkFMKGVuYWJsZVdpZGdldChib29sKSksIG1faWdub3JlQm94LCBTTE9UKHNldENoZWNrZWQo Ym9vbCkpKTsKK30KKwogdm9pZCBNdWx0aW5vZGVQcm9wZXJ0eUJhc2VDb25uZWN0b3I6OnNsb3RJ Z25vcmVDaGVja0JveENoYW5nZWQoaW50IHN0YXRlKSB7CiAgICAgbV9wYXJlbnQtPnNldElnbm9y ZWQoc3RhdGUgIT0gUXQ6OkNoZWNrZWQpOwogfQpAQCAtODQsMyArMTI4LDUgQEAgS2lzTXVsdGlu b2RlUHJvcGVydHlJbnRlcmZhY2U6Oktpc011bHRpbm9kZVByb3BlcnR5SW50ZXJmYWNlKCkKIEtp c011bHRpbm9kZVByb3BlcnR5SW50ZXJmYWNlOjp+S2lzTXVsdGlub2RlUHJvcGVydHlJbnRlcmZh Y2UoKQogewogfQorCisjaW5jbHVkZSAia2lzX211bHRpbm9kZV9wcm9wZXJ0eS5tb2MiCmRpZmYg LS1naXQgYS9saWJzL3VpL2tpc19tdWx0aW5vZGVfcHJvcGVydHkuaCBiL2xpYnMvdWkva2lzX211 bHRpbm9kZV9wcm9wZXJ0eS5oCmluZGV4IDljZDAzZmUuLmRjMDIyM2MgMTAwNjQ0Ci0tLSBhL2xp YnMvdWkva2lzX211bHRpbm9kZV9wcm9wZXJ0eS5oCisrKyBiL2xpYnMvdWkva2lzX211bHRpbm9k ZV9wcm9wZXJ0eS5oCkBAIC0zMDcsNiArMzA3LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv aWQgY29ubmVjdElnbm9yZUNoZWNrQm94KFFDaGVja0JveCAqaWdub3JlQm94KSA9IDA7CiAgICAg dm9pZCBjb25uZWN0VmFsdWVDaGFuZ2VkU2lnbmFsKGNvbnN0IFFPYmplY3QgKnJlY2VpdmVyLCBj b25zdCBjaGFyICptZXRob2QsIFF0OjpDb25uZWN0aW9uVHlwZSB0eXBlID0gUXQ6OkF1dG9Db25u ZWN0aW9uKTsKIAorICAgIC8qKgorICAgICAqIENsaWNraW5nIG9uIHRoaXMgd2lkZ2V0IHdpbGwg YXV0b21hdGljYWxseSBlbmFibGUgaXQsCisgICAgICogc2V0dGluZyAiSWdub3JlZCIgcHJvcGVy dHkgdG8gZmFsc2UuCisgICAgICoKKyAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMg bm90aGluZy4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdEF1dG9FbmFibGVXaWRn ZXQoUVdpZGdldCAqd2lkZ2V0KTsKKwogUV9TSUdOQUxTOgogICAgIHZvaWQgc2lnVmFsdWVDaGFu Z2VkKCk7CiAKQEAgLTMzMyw2ICszNDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0SWdu b3JlQ2hlY2tCb3goUUNoZWNrQm94ICppZ25vcmVCb3gpOwogICAgIHZvaWQgbm90aWZ5SWdub3Jl Q2hhbmdlZCgpOwogCisgICAgdm9pZCBjb25uZWN0QXV0b0VuYWJsZVdpZGdldChRV2lkZ2V0ICp3 aWRnZXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzbG90SWdub3JlQ2hlY2tCb3hDaGFuZ2Vk KGludCBzdGF0ZSk7CiAKQEAgLTQ2Nyw2ICs0NzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2 b2lkIGNvbm5lY3RWYWx1ZUNoYW5nZWRTaWduYWwoY29uc3QgUU9iamVjdCAqcmVjZWl2ZXIsIGNv bnN0IGNoYXIgKm1ldGhvZCwgUXQ6OkNvbm5lY3Rpb25UeXBlIHR5cGUgPSBRdDo6QXV0b0Nvbm5l Y3Rpb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdElnbm9yZUNoZWNrQm94KFFDaGVj a0JveCAqaWdub3JlQm94KSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdEF1dG9FbmFi bGVXaWRnZXQoUVdpZGdldCAqd2lkZ2V0KSA9IDA7CisKICAgICB2aXJ0dWFsIEtVbmRvMkNvbW1h bmQqIGNyZWF0ZVBvc3RFeGVjdXRpb25VbmRvQ29tbWFuZCgpID0gMDsKIH07CiAKQEAgLTU5NCw2 ICs2MDYsMTAgQEAgcHVibGljOgogICAgICAgICBtX2Nvbm5lY3Rvci0+Y29ubmVjdFZhbHVlQ2hh bmdlZFNpZ25hbChyZWNlaXZlciwgbWV0aG9kLCB0eXBlKTsKICAgICB9CiAKKyAgICB2b2lkIGNv bm5lY3RBdXRvRW5hYmxlV2lkZ2V0KFFXaWRnZXQgKndpZGdldCkgeworICAgICAgICBtX2Nvbm5l Y3Rvci0+Y29ubmVjdEF1dG9FbmFibGVXaWRnZXQod2lkZ2V0KTsKKyAgICB9CisKICAgICAvKioK ICAgICAgKiBJbnRlcmZhY2UgZm9yIHRoZSBjb25uZWN0b3IKICAgICAgKi8KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCktyaXRhIG1haWxpbmcgbGlzdApr aW1hZ2VzaG9wQGtkZS5vcmcKaHR0cHM6Ly9tYWlsLmtkZS5vcmcvbWFpbG1hbi9saXN0aW5mby9r aW1hZ2VzaG9wCg==