<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>177492</bug_id>
          
          <creation_ts>2017-09-26 10:52:15 -0700</creation_ts>
          <short_desc>[Curl] Change member variable of CurlHandle to use std::unique_ptr</short_desc>
          <delta_ts>2017-09-27 12:16:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>galpeter</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1352741</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-26 10:52:15 -0700</bug_when>
    <thetext>With this change, the client of CurlHandle is independent from its lifecycle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352755</commentid>
    <comment_count>1</comment_count>
      <attachid>321845</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-26 11:10:50 -0700</bug_when>
    <thetext>Created attachment 321845
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352766</commentid>
    <comment_count>2</comment_count>
      <attachid>321849</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-09-26 11:22:11 -0700</bug_when>
    <thetext>Created attachment 321849
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352780</commentid>
    <comment_count>3</comment_count>
      <attachid>321849</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-26 12:03:38 -0700</bug_when>
    <thetext>Comment on attachment 321849
patch

Clearing flags on attachment: 321849

Committed r222511: &lt;http://trac.webkit.org/changeset/222511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352781</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-26 12:03:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353250</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:16:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/34692914&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321845</attachid>
            <date>2017-09-26 11:10:50 -0700</date>
            <delta_ts>2017-09-26 11:22:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>177492-1.diff</filename>
            <type>text/plain</type>
            <size>26169</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZmQwOWUwOGFlNS4uMWE0YmFhMWM0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNy0wOS0yNiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIENoYW5nZSBtZW1iZXIgdmFyaWFibGUgb2YgQ3VybEhh
bmRsZSB0byB1c2Ugc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxEb3dubG9hZDo6Z2V0UmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybERvd25sb2FkOjpzZXR1cFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxE
b3dubG9hZDo6ZGlkQ29tcGxldGVUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93
bmxvYWQ6OmRpZENhbmNlbFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9h
ZDo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmFk
ZEhlYWRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0QXV0aGVudGljYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldHVwVHJhbnNm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZENv
bXBsZXRlVHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVs
ZWdhdGU6OmRpZENhbmNlbFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlQWxsSGVhZGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6aGFuZGxlTG9jYWxSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldHVwUE9T
VCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0dXBQ
VVQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldHVw
Rm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6
OmFwcGx5QXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
dXJsRGVsZWdhdGU6OmdldE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6d2lsbFNldHVwU3NsQ3R4KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlSGVhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERl
bGVnYXRlLmg6CisKIDIwMTctMDktMjUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbV2ViSURMXSBGYWN0b3Igb3V0IElzRXhjZXB0aW9uT3IgY2hlY2sgZnJvbSB0b0pT
L3RvSlNOZXdseUNyZWF0ZWQgc2lnbmF0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDFlOTdlNGM2YzY3Li42
YzRlOWE1ZGQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTU3LDEwICs1Nyw4IEBAIHZvaWQgQ3VybERvd25s
b2FkOjppbml0KEN1cmxEb3dubG9hZExpc3RlbmVyKiBsaXN0ZW5lciwgY29uc3QgVVJMJiB1cmwp
CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9tdXRleCk7Ci0KICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgbV91cmwg
PSB1cmw7CisgICAgbV9yZXF1ZXN0LnNldFVSTCh1cmwpOwogfQogCiB2b2lkIEN1cmxEb3dubG9h
ZDo6aW5pdChDdXJsRG93bmxvYWRMaXN0ZW5lciogbGlzdGVuZXIsIFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
QEAgLTY4LDExICs2Niw4IEBAIHZvaWQgQ3VybERvd25sb2FkOjppbml0KEN1cmxEb3dubG9hZExp
c3RlbmVyKiBsaXN0ZW5lciwgUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSCiAgICAgaWYgKCFsaXN0
ZW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHJl
cXVlc3QudXJsKCkpOwotCi0gICAgaW5pdChsaXN0ZW5lciwgdXJsKTsKLQotICAgIGFkZEhlYWRl
cnMocmVxdWVzdCk7CisgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOworICAgIG1fcmVxdWVzdCA9
IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIGJvb2wgQ3VybERvd25sb2FkOjpzdGFydCgp
CkBAIC04OSwxMCArODQsNyBAQCBib29sIEN1cmxEb3dubG9hZDo6Y2FuY2VsKCkKIAogUmVzb3Vy
Y2VSZXNwb25zZSBDdXJsRG93bmxvYWQ6OmdldFJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX211dGV4KTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1f
cmVzcG9uc2VVcmwsIG1fcmVzcG9uc2VNSU1FVHlwZSwgMCwgbV9yZXNwb25zZVRleHRFbmNvZGlu
Z05hbWUpOwotICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChtX2h0dHBIZWFkZXJGaWVs
ZE5hbWUsIG1faHR0cEhlYWRlckZpZWxkVmFsdWUpOwotICAgIHJldHVybiByZXNwb25zZTsKKyAg
ICByZXR1cm4gbV9yZXNwb25zZTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OnJldGFpbigpCkBA
IC0xMDcsMTkgKzk5LDE5IEBAIHZvaWQgQ3VybERvd25sb2FkOjpyZWxlYXNlKCkKIAogQ1VSTCog
Q3VybERvd25sb2FkOjpzZXR1cFRyYW5zZmVyKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X211dGV4KTsKLQotICAgIG1fY3VybEhhbmRsZS5pbml0aWFsaXplKCk7Ci0gICAgbV9jdXJsSGFu
ZGxlLmVuYWJsZVNoYXJlSGFuZGxlKCk7Ci0KLSAgICBtX2N1cmxIYW5kbGUuc2V0VXJsKG1fdXJs
KTsKLSAgICBtX2N1cmxIYW5kbGUuc2V0SGVhZGVyQ2FsbGJhY2tGdW5jdGlvbihoZWFkZXJDYWxs
YmFjaywgdGhpcyk7Ci0gICAgbV9jdXJsSGFuZGxlLnNldFdyaXRlQ2FsbGJhY2tGdW5jdGlvbih3
cml0ZUNhbGxiYWNrLCB0aGlzKTsKLSAgICBtX2N1cmxIYW5kbGUuZW5hYmxlRm9sbG93TG9jYXRp
b24oKTsKLSAgICBtX2N1cmxIYW5kbGUuZW5hYmxlSHR0cEF1dGhlbnRpY2F0aW9uKENVUkxBVVRI
X0FOWSk7Ci0gICAgbV9jdXJsSGFuZGxlLnNldENBQ2VydFBhdGgoQ3VybENvbnRleHQ6OnNpbmds
ZXRvbigpLnNzbEhhbmRsZSgpLmdldENBQ2VydFBhdGgoKSk7Ci0KLSAgICByZXR1cm4gbV9jdXJs
SGFuZGxlLmhhbmRsZSgpOworICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Vy
bEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUtPmluaXRpYWxpemUoKTsKKyAgICBtX2N1cmxI
YW5kbGUtPmVuYWJsZVNoYXJlSGFuZGxlKCk7CisKKyAgICBtX2N1cmxIYW5kbGUtPnNldFVybCht
X3JlcXVlc3QudXJsKCkpOworICAgIG1fY3VybEhhbmRsZS0+YXBwZW5kUmVxdWVzdEhlYWRlcnMo
bV9yZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSk7CisgICAgbV9jdXJsSGFuZGxlLT5zZXRIZWFk
ZXJDYWxsYmFja0Z1bmN0aW9uKGhlYWRlckNhbGxiYWNrLCB0aGlzKTsKKyAgICBtX2N1cmxIYW5k
bGUtPnNldFdyaXRlQ2FsbGJhY2tGdW5jdGlvbih3cml0ZUNhbGxiYWNrLCB0aGlzKTsKKyAgICBt
X2N1cmxIYW5kbGUtPmVuYWJsZUZvbGxvd0xvY2F0aW9uKCk7CisgICAgbV9jdXJsSGFuZGxlLT5l
bmFibGVIdHRwQXV0aGVudGljYXRpb24oQ1VSTEFVVEhfQU5ZKTsKKyAgICBtX2N1cmxIYW5kbGUt
PnNldENBQ2VydFBhdGgoQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgpLmdldENB
Q2VydFBhdGgoKSk7CisKKyAgICByZXR1cm4gbV9jdXJsSGFuZGxlLT5oYW5kbGUoKTsKIH0KIAog
dm9pZCBDdXJsRG93bmxvYWQ6OmRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUgcmVzdWx0KQpA
QCAtMTMwLDExICsxMjIsMTMgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZENvbXBsZXRlVHJhbnNm
ZXIoQ1VSTGNvZGUgcmVzdWx0KQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaWRGYWlsKCk7CiAgICAgfSk7CisKKyAgICBtX2N1cmxIYW5kbGUgPSBudWxscHRyOwog
fQogCiB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkQ2FuY2VsVHJhbnNmZXIoKQogewotCisgICAgbV9j
dXJsSGFuZGxlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OmNsb3NlRmlsZSgp
CkBAIC0xNjYsMjcgKzE2MCwyMCBAQCB2b2lkIEN1cmxEb3dubG9hZDo6d3JpdGVEYXRhVG9GaWxl
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQogICAgICAgICB3cml0ZVRvRmlsZShtX3RlbXBI
YW5kbGUsIGRhdGEsIHNpemUpOwogfQogCi12b2lkIEN1cmxEb3dubG9hZDo6YWRkSGVhZGVycyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9tdXRleCk7Ci0gICAgbV9jdXJsSGFuZGxlLmFwcGVuZFJlcXVlc3RIZWFkZXJzKHJlcXVlc3Qu
aHR0cEhlYWRlckZpZWxkcygpKTsKLX0KLQogdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVI
ZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9t
dXRleCk7CiAKICAgICBpZiAoaGVhZGVyID09ICJcclxuIiB8fCBoZWFkZXIgPT0gIlxuIikgewot
Ci0gICAgICAgIGF1dG8gaHR0cENvZGUgPSBtX2N1cmxIYW5kbGUuZ2V0UmVzcG9uc2VDb2RlKCk7
CisgICAgICAgIGF1dG8gaHR0cENvZGUgPSBtX2N1cmxIYW5kbGUtPmdldFJlc3BvbnNlQ29kZSgp
OwogCiAgICAgICAgIGlmIChodHRwQ29kZSAmJiAqaHR0cENvZGUgPj0gMjAwICYmICpodHRwQ29k
ZSA8IDMwMCkgewotICAgICAgICAgICAgYXV0byB1cmwgPSBtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0
aXZlVVJMKCk7CisgICAgICAgICAgICBhdXRvIHVybCA9IG1fY3VybEhhbmRsZS0+Z2V0RWZmZWN0
aXZlVVJMKCk7CisKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgICAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSBsb2NhbFJlc3BvbnNlID0gcHJvdGVjdGVkVGhpcy0+Z2V0
UmVzcG9uc2UoKTsKLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Jlc3BvbnNlVXJs
ID0gdXJsOwotICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcmVzcG9uc2VNSU1FVHlw
ZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobG9jYWxSZXNwb25zZS5odHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSk7Ci0gICAgICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+bV9yZXNwb25zZVRleHRFbmNvZGluZ05hbWUgPSBleHRyYWN0Q2hhcnNldEZy
b21NZWRpYVR5cGUobG9jYWxSZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRUeXBlKSk7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9yZXNwb25z
ZS5zZXRVUkwodXJsKTsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Jlc3BvbnNl
LnNldE1pbWVUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUocHJvdGVjdGVkVGhpcy0+
bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkp
OworICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcmVzcG9uc2Uuc2V0VGV4dEVuY29k
aW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUocHJvdGVjdGVkVGhpcy0+bV9yZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkpOwogCiAg
ICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiAgICAg
ICAgICAgICB9KTsKQEAgLTE5NSw4ICsxODIsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVj
ZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBoZWFkZXIgPSBoZWFkZXIuaXNvbGF0
ZWRDb3B5KCldIHsKICAgICAgICAgICAgIGludCBzcGxpdFBvcyA9IGhlYWRlci5maW5kKCI6Iik7
CiAgICAgICAgICAgICBpZiAoc3BsaXRQb3MgIT0gLTEpCi0gICAgICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9odHRwSGVhZGVyRmllbGROYW1lID0gaGVhZGVyLmxlZnQoc3BsaXRQb3MpOwot
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1faHR0cEhlYWRlckZpZWxkVmFsdWUgPSBo
ZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaGVh
ZGVyLmxlZnQoc3BsaXRQb3MpLCBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3RyaXBX
aGl0ZVNwYWNlKCkpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggMmE4MGU0MDFm
OWMuLmU3MGEyNDhlZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ3Vy
bEpvYk1hbmFnZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CkBAIC02OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXRhaW4oKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2UoKSBvdmVycmlkZTsKIAotICAgIENVUkwqIGhhbmRs
ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fY3VybEhhbmRsZS5oYW5kbGUoKTsgfQorICAgIENVUkwq
IGhhbmRsZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fY3VybEhhbmRsZSA/IG1fY3VybEhhbmRsZS0+
aGFuZGxlKCkgOiBudWxscHRyOyB9CiAgICAgQ1VSTCogc2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwpAQCAtNzcsOCArNzgsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgbW92ZUZpbGVUb0Rlc3RpbmF0aW9uKCk7CiAgICAgdm9pZCB3cml0ZURh
dGFUb0ZpbGUoY29uc3QgY2hhciogZGF0YSwgaW50IHNpemUpOwogCi0gICAgdm9pZCBhZGRIZWFk
ZXJzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotCiAgICAgLy8gQ2FsbGVkIG9uIGRvd25sb2Fk
IHRocmVhZC4KICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodm9pZCogZGF0YSwgaW50IHNpemUpOwpAQCAtOTIs
MTYgKzkxLDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHNpemVfdCB3cml0ZUNhbGxiYWNrKGNo
YXIqIHB0ciwgc2l6ZV90LCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpOwogICAgIHN0YXRpYyBz
aXplX3QgaGVhZGVyQ2FsbGJhY2soY2hhciogcHRyLCBzaXplX3QsIHNpemVfdCBubWVtYiwgdm9p
ZCogZGF0YSk7CiAKLSAgICBDdXJsSGFuZGxlIG1fY3VybEhhbmRsZTsKLSAgICBVUkwgbV91cmw7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxIYW5kbGU+IG1fY3VybEhhbmRsZTsKKyAgICBSZXNv
dXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
KwogICAgIFN0cmluZyBtX3RlbXBQYXRoOwogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAg
IFBsYXRmb3JtRmlsZUhhbmRsZSBtX3RlbXBIYW5kbGUgeyBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlIH07Ci0gICAgVVJMIG1fcmVzcG9uc2VVcmw7Ci0gICAgU3RyaW5nIG1fcmVzcG9uc2VNSU1F
VHlwZTsKLSAgICBTdHJpbmcgbV9yZXNwb25zZVRleHRFbmNvZGluZ05hbWU7Ci0gICAgU3RyaW5n
IG1faHR0cEhlYWRlckZpZWxkTmFtZTsKLSAgICBTdHJpbmcgbV9odHRwSGVhZGVyRmllbGRWYWx1
ZTsKICAgICBib29sIG1fZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSB7IGZhbHNlIH07CiAgICAgbXV0
YWJsZSBMb2NrIG1fbXV0ZXg7CiAgICAgQ3VybERvd25sb2FkTGlzdGVuZXIqIG1fbGlzdGVuZXIg
eyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcAppbmRleCBh
OTBhYTQwY2NhYy4uNzc5ZDZkYzBjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVn
YXRlLmNwcApAQCAtNTksMTEgKzU5LDYgQEAgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OlJl
c291cmNlSGFuZGxlQ3VybERlbGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAg
Y29uc3QgVVJMJiB1cmwgPSBtX2ZpcnN0UmVxdWVzdC51cmwoKTsKIAotICAgIGlmICh1cmwuaXNM
b2NhbEZpbGUoKSkgewotICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIE1JTUUgdHlwZSBiYXNlZCBv
biB0aGUgcGF0aC4KLSAgICAgICAgcmVzcG9uc2UoKS5zZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgodXJsKSk7Ci0gICAgfQotCiAgICAgaWYgKG1fY3VzdG9t
SFRUUEhlYWRlckZpZWxkcy5zaXplKCkpIHsKICAgICAgICAgYXV0byYgY2FjaGUgPSBDdXJsQ2Fj
aGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpOwogICAgICAgICBib29sIGhhc0NhY2hlSGVhZGVycyA9
IG1fY3VzdG9tSFRUUEhlYWRlckZpZWxkcy5jb250YWlucyhIVFRQSGVhZGVyTmFtZTo6SWZNb2Rp
ZmllZFNpbmNlKSB8fCBtX2N1c3RvbUhUVFBIZWFkZXJGaWVsZHMuY29udGFpbnMoSFRUUEhlYWRl
ck5hbWU6OklmTm9uZU1hdGNoKTsKQEAgLTEwNiw3ICsxMDEsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ3VybERlbGVnYXRlOjpzdGFydChib29sIGlzU3luY1JlcXVlc3QpCiAgICAgICAgIHNldHVw
VHJhbnNmZXIoKTsKIAogICAgICAgICAvLyBjdXJsX2Vhc3lfcGVyZm9ybSBibG9ja3MgdW50aWwg
dGhlIHRyYW5zZmVyIGlzIGZpbmlzaGVkLgotICAgICAgICBDVVJMY29kZSByZXN1bHRDb2RlID0g
bV9jdXJsSGFuZGxlLnBlcmZvcm0oKTsKKyAgICAgICAgQ1VSTGNvZGUgcmVzdWx0Q29kZSA9IG1f
Y3VybEhhbmRsZS0+cGVyZm9ybSgpOwogICAgICAgICBkaWRDb21wbGV0ZVRyYW5zZmVyKHJlc3Vs
dENvZGUpOwogICAgICAgICByZWxlYXNlKCk7CiAgICAgfQpAQCAtMTI4LDEzICsxMjMsMTYgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRl
ZmVycykKICAgICBtX2RlZmVyc0xvYWRpbmcgPSBkZWZlcnM7CiAKICAgICBhdXRvIGFjdGlvbiA9
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgeworICAgICAgICBpZiAoIXByb3Rl
Y3RlZFRoaXMtPm1fY3VybEhhbmRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+bV9kZWZlcnNMb2FkaW5nKSB7Ci0gICAgICAgICAgICBDVVJMY29k
ZSBlcnJvciA9IHByb3RlY3RlZFRoaXMtPm1fY3VybEhhbmRsZS5wYXVzZShDVVJMUEFVU0VfQUxM
KTsKKyAgICAgICAgICAgIENVUkxjb2RlIGVycm9yID0gcHJvdGVjdGVkVGhpcy0+bV9jdXJsSGFu
ZGxlLT5wYXVzZShDVVJMUEFVU0VfQUxMKTsKICAgICAgICAgICAgIC8vIElmIHdlIGNvdWxkIG5v
dCBkZWZlciB0aGUgaGFuZGxlLCBzbyBkb24ndCBkbyBpdC4KICAgICAgICAgICAgIGlmIChlcnJv
ciAhPSBDVVJMRV9PSykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBDVVJMY29kZSBlcnJvciA9IHByb3RlY3RlZFRoaXMtPm1fY3VybEhhbmRs
ZS5wYXVzZShDVVJMUEFVU0VfQ09OVCk7CisgICAgICAgICAgICBDVVJMY29kZSBlcnJvciA9IHBy
b3RlY3RlZFRoaXMtPm1fY3VybEhhbmRsZS0+cGF1c2UoQ1VSTFBBVVNFX0NPTlQpOwogICAgICAg
ICAgICAgaWYgKGVycm9yICE9IENVUkxFX09LKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVzdGFy
dGluZyB0aGUgaGFuZGxlIGhhcyBmYWlsZWQgc28ganVzdCBjYW5jZWwgaXQuCiAgICAgICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+bV9oYW5kbGUtPmNhbmNlbCgpOwpAQCAtMTUwLDcgKzE0OCw4
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldEF1dGhlbnRpY2F0aW9uKGNv
bnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyCiAgICAgYXV0byBhY3Rpb24gPSBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1c2VyID0gdXNlci5pc29sYXRlZENvcHkoKSwgcGFzcyA9
IHBhc3MuaXNvbGF0ZWRDb3B5KCldKCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3VzZXIg
PSB1c2VyOwogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Bhc3MgPSBwYXNzOwotICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX2N1cmxIYW5kbGUuc2V0SHR0cEF1dGhVc2VyUGFzcyh1c2VyLCBwYXNz
KTsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fY3VybEhhbmRsZSkKKyAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fY3VybEhhbmRsZS0+c2V0SHR0cEF1dGhVc2VyUGFzcyh1c2VyLCBw
YXNzKTsKICAgICB9OwogCiAgICAgQ3VybEpvYk1hbmFnZXI6OnNpbmdsZXRvbigpLmNhbGxPbkpv
YlRocmVhZChXVEZNb3ZlKGFjdGlvbikpOwpAQCAtMTgzLDc1ICsxODIsNzQgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6cmVsZWFzZSgpCiAKIENVUkwqIFJlc291cmNlSGFuZGxl
Q3VybERlbGVnYXRlOjpzZXR1cFRyYW5zZmVyKCkKIHsKLSAgICBDdXJsQ29udGV4dCYgY29udGV4
dCA9IEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKTsKLQotICAgIG1fY3VybEhhbmRsZS5pbml0aWFs
aXplKCk7CisgICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsSGFuZGxlPigp
OworICAgIG1fY3VybEhhbmRsZS0+aW5pdGlhbGl6ZSgpOwogCiAgICAgaWYgKG1fZGVmZXJzTG9h
ZGluZykgewotICAgICAgICBDVVJMY29kZSBlcnJvciA9IG1fY3VybEhhbmRsZS5wYXVzZShDVVJM
UEFVU0VfQUxMKTsKKyAgICAgICAgQ1VSTGNvZGUgZXJyb3IgPSBtX2N1cmxIYW5kbGUtPnBhdXNl
KENVUkxQQVVTRV9BTEwpOwogICAgICAgICAvLyBJZiB3ZSBkaWQgbm90IHBhdXNlIHRoZSBoYW5k
bGUsIHdlIHdvdWxkIEFTU0VSVCBpbiB0aGUKICAgICAgICAgLy8gaGVhZGVyIGNhbGxiYWNrLiBT
byBqdXN0IGFzc2VydCBoZXJlLgogICAgICAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9
PSBDVVJMRV9PSyk7CiAgICAgfQogCiAjaWZuZGVmIE5ERUJVRwotICAgIG1fY3VybEhhbmRsZS5l
bmFibGVWZXJib3NlSWZVc2VkKCk7Ci0gICAgbV9jdXJsSGFuZGxlLmVuYWJsZVN0ZEVycklmVXNl
ZCgpOworICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlVmVyYm9zZUlmVXNlZCgpOworICAgIG1fY3Vy
bEhhbmRsZS0+ZW5hYmxlU3RkRXJySWZVc2VkKCk7CiAjZW5kaWYKIAogICAgIGF1dG8mIHNzbEhh
bmRsZSA9IEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zc2xIYW5kbGUoKTsKIAotICAgIG1fY3Vy
bEhhbmRsZS5zZXRTc2xWZXJpZnlQZWVyKEN1cmxIYW5kbGU6OlZlcmlmeVBlZXI6OkVuYWJsZSk7
Ci0gICAgbV9jdXJsSGFuZGxlLnNldFNzbFZlcmlmeUhvc3QoQ3VybEhhbmRsZTo6VmVyaWZ5SG9z
dDo6U3RyaWN0TmFtZUNoZWNrKTsKLSAgICBtX2N1cmxIYW5kbGUuc2V0V3JpdGVDYWxsYmFja0Z1
bmN0aW9uKGRpZFJlY2VpdmVEYXRhQ2FsbGJhY2ssIHRoaXMpOwotICAgIG1fY3VybEhhbmRsZS5z
ZXRIZWFkZXJDYWxsYmFja0Z1bmN0aW9uKGRpZFJlY2VpdmVIZWFkZXJDYWxsYmFjaywgdGhpcyk7
Ci0gICAgbV9jdXJsSGFuZGxlLmVuYWJsZUF1dG9SZWZlcmVyKCk7Ci0gICAgbV9jdXJsSGFuZGxl
LmVuYWJsZUZvbGxvd0xvY2F0aW9uKCk7Ci0gICAgbV9jdXJsSGFuZGxlLmVuYWJsZUh0dHBBdXRo
ZW50aWNhdGlvbihDVVJMQVVUSF9BTlkpOwotICAgIG1fY3VybEhhbmRsZS5lbmFibGVTaGFyZUhh
bmRsZSgpOwotICAgIG1fY3VybEhhbmRsZS5lbmFibGVUaW1lb3V0KCk7Ci0gICAgbV9jdXJsSGFu
ZGxlLmVuYWJsZUFsbG93ZWRQcm90b2NvbHMoKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNldFNzbFZl
cmlmeVBlZXIoQ3VybEhhbmRsZTo6VmVyaWZ5UGVlcjo6RW5hYmxlKTsKKyAgICBtX2N1cmxIYW5k
bGUtPnNldFNzbFZlcmlmeUhvc3QoQ3VybEhhbmRsZTo6VmVyaWZ5SG9zdDo6U3RyaWN0TmFtZUNo
ZWNrKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNldFdyaXRlQ2FsbGJhY2tGdW5jdGlvbihkaWRSZWNl
aXZlRGF0YUNhbGxiYWNrLCB0aGlzKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNldEhlYWRlckNhbGxi
YWNrRnVuY3Rpb24oZGlkUmVjZWl2ZUhlYWRlckNhbGxiYWNrLCB0aGlzKTsKKyAgICBtX2N1cmxI
YW5kbGUtPmVuYWJsZUF1dG9SZWZlcmVyKCk7CisgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVGb2xs
b3dMb2NhdGlvbigpOworICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlSHR0cEF1dGhlbnRpY2F0aW9u
KENVUkxBVVRIX0FOWSk7CisgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVTaGFyZUhhbmRsZSgpOwor
ICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlVGltZW91dCgpOworICAgIG1fY3VybEhhbmRsZS0+ZW5h
YmxlQWxsb3dlZFByb3RvY29scygpOwogCiAgICAgYXV0byBzc2xDbGllbnRDZXJ0aWZpY2F0ZSA9
IHNzbEhhbmRsZS5nZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShtX2ZpcnN0UmVxdWVzdC51cmwoKS5o
b3N0KCkpOwogICAgIGlmIChzc2xDbGllbnRDZXJ0aWZpY2F0ZSkgewotICAgICAgICBtX2N1cmxI
YW5kbGUuc2V0U3NsQ2VydChzc2xDbGllbnRDZXJ0aWZpY2F0ZS0+Zmlyc3QudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5zZXRTc2xDZXJ0VHlwZSgiUDEyIik7Ci0gICAgICAg
IG1fY3VybEhhbmRsZS5zZXRTc2xLZXlQYXNzd29yZChzc2xDbGllbnRDZXJ0aWZpY2F0ZS0+c2Vj
b25kLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2N1cmxIYW5kbGUtPnNldFNzbENlcnQoc3Ns
Q2xpZW50Q2VydGlmaWNhdGUtPmZpcnN0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2N1cmxI
YW5kbGUtPnNldFNzbENlcnRUeXBlKCJQMTIiKTsKKyAgICAgICAgbV9jdXJsSGFuZGxlLT5zZXRT
c2xLZXlQYXNzd29yZChzc2xDbGllbnRDZXJ0aWZpY2F0ZS0+c2Vjb25kLnV0ZjgoKS5kYXRhKCkp
OwogICAgIH0KIAogICAgIGlmIChzc2xIYW5kbGUuc2hvdWxkSWdub3JlU1NMRXJyb3JzKCkpCi0g
ICAgICAgIG1fY3VybEhhbmRsZS5zZXRTc2xWZXJpZnlQZWVyKEN1cmxIYW5kbGU6OlZlcmlmeVBl
ZXI6OkRpc2FibGUpOworICAgICAgICBtX2N1cmxIYW5kbGUtPnNldFNzbFZlcmlmeVBlZXIoQ3Vy
bEhhbmRsZTo6VmVyaWZ5UGVlcjo6RGlzYWJsZSk7CiAgICAgZWxzZQotICAgICAgICBtX2N1cmxI
YW5kbGUuc2V0U3NsQ3R4Q2FsbGJhY2tGdW5jdGlvbih3aWxsU2V0dXBTc2xDdHhDYWxsYmFjaywg
dGhpcyk7CisgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0U3NsQ3R4Q2FsbGJhY2tGdW5jdGlvbih3
aWxsU2V0dXBTc2xDdHhDYWxsYmFjaywgdGhpcyk7CiAKLSAgICBtX2N1cmxIYW5kbGUuc2V0Q0FD
ZXJ0UGF0aChzc2xIYW5kbGUuZ2V0Q0FDZXJ0UGF0aCgpKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNl
dENBQ2VydFBhdGgoc3NsSGFuZGxlLmdldENBQ2VydFBhdGgoKSk7CiAKLSAgICBtX2N1cmxIYW5k
bGUuZW5hYmxlQWNjZXB0RW5jb2RpbmcoKTsKLSAgICBtX2N1cmxIYW5kbGUuc2V0VXJsKG1fZmly
c3RSZXF1ZXN0LnVybCgpKTsKLSAgICBtX2N1cmxIYW5kbGUuZW5hYmxlQ29va2llSmFySWZFeGlz
dHMoKTsKKyAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUFjY2VwdEVuY29kaW5nKCk7CisgICAgbV9j
dXJsSGFuZGxlLT5zZXRVcmwobV9maXJzdFJlcXVlc3QudXJsKCkpOworICAgIG1fY3VybEhhbmRs
ZS0+ZW5hYmxlQ29va2llSmFySWZFeGlzdHMoKTsKIAogICAgIGlmIChtX2N1c3RvbUhUVFBIZWFk
ZXJGaWVsZHMuc2l6ZSgpKQotICAgICAgICBtX2N1cmxIYW5kbGUuYXBwZW5kUmVxdWVzdEhlYWRl
cnMobV9jdXN0b21IVFRQSGVhZGVyRmllbGRzKTsKKyAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBl
bmRSZXF1ZXN0SGVhZGVycyhtX2N1c3RvbUhUVFBIZWFkZXJGaWVsZHMpOwogCiAgICAgU3RyaW5n
IG1ldGhvZCA9IG1fZmlyc3RSZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICBpZiAoIkdFVCIgPT0g
bWV0aG9kKQotICAgICAgICBtX2N1cmxIYW5kbGUuZW5hYmxlSHR0cEdldFJlcXVlc3QoKTsKKyAg
ICAgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVIdHRwR2V0UmVxdWVzdCgpOwogICAgIGVsc2UgaWYg
KCJQT1NUIiA9PSBtZXRob2QpCiAgICAgICAgIHNldHVwUE9TVCgpOwogICAgIGVsc2UgaWYgKCJQ
VVQiID09IG1ldGhvZCkKICAgICAgICAgc2V0dXBQVVQoKTsKICAgICBlbHNlIGlmICgiSEVBRCIg
PT0gbWV0aG9kKQotICAgICAgICBtX2N1cmxIYW5kbGUuZW5hYmxlSHR0cEhlYWRSZXF1ZXN0KCk7
CisgICAgICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlSHR0cEhlYWRSZXF1ZXN0KCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5zZXRIdHRwQ3VzdG9tUmVxdWVzdChtZXRob2QpOwor
ICAgICAgICBtX2N1cmxIYW5kbGUtPnNldEh0dHBDdXN0b21SZXF1ZXN0KG1ldGhvZCk7CiAgICAg
ICAgIHNldHVwUFVUKCk7CiAgICAgfQogCiAgICAgYXBwbHlBdXRoZW50aWNhdGlvbigpOwogCi0g
ICAgbV9jdXJsSGFuZGxlLmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKKyAgICBtX2N1cmxIYW5kbGUt
PmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKIAotICAgIHJldHVybiBtX2N1cmxIYW5kbGUuaGFuZGxl
KCk7CisgICAgcmV0dXJuIG1fY3VybEhhbmRsZS0+aGFuZGxlKCk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUgcmVzdWx0
KQpAQCAtMjg1LDExICsyODMsMTMgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6
ZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSByZXN1bHQpCiAgICAgfQogCiAgICAgbV9mb3Jt
RGF0YVN0cmVhbSA9IG51bGxwdHI7CisgICAgbV9jdXJsSGFuZGxlID0gbnVsbHB0cjsKIH0KIAog
dm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkQ2FuY2VsVHJhbnNmZXIoKQogewog
ICAgIG1fZm9ybURhdGFTdHJlYW0gPSBudWxscHRyOworICAgIG1fY3VybEhhbmRsZSA9IG51bGxw
dHI7CiB9CiAKIFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpy
ZXNwb25zZSgpCkBAIC0zMjIsMTIgKzMyMiwxMSBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaXNIdHRw
SW5mbyhpbnQgc3RhdHVzQ29kZSkKICAgICByZXR1cm4gMTAwIDw9IHN0YXR1c0NvZGUgJiYgc3Rh
dHVzQ29kZSA8IDIwMDsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZUFsbEhlYWRlcnMobG9uZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGgs
IHVpbnQxNl90IGNvbm5lY3RQb3J0LCBsb25nIGF2YWlsYWJsZUh0dHBBdXRoKQordm9pZCBSZXNv
dXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUFsbEhlYWRlcnMoVVJMIHVybCwgbG9u
ZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGgsIHVpbnQxNl90IGNvbm5lY3RQb3J0
LCBsb25nIGF2YWlsYWJsZUh0dHBBdXRoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKLSAgICByZXNwb25zZSgpLnNldFVSTChtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0aXZlVVJMKCkp
OwotCisgICAgcmVzcG9uc2UoKS5zZXRVUkwodXJsKTsKICAgICByZXNwb25zZSgpLnNldEV4cGVj
dGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKICAgICByZXNwb25zZSgpLnNldEhUVFBT
dGF0dXNDb2RlKGh0dHBDb2RlKTsKICAgICByZXNwb25zZSgpLnNldE1pbWVUeXBlKGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUocmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlKSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBAIC00MDQs
NyArNDAzLDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmhhbmRsZUxvY2Fs
UmVjZWl2ZVJlc3BvbnNlKCkKICAgICAvLyB3aGljaCBtZWFucyB0aGUgUmVzb3VyY2VMb2FkZXIn
cyByZXNwb25zZSBkb2VzIG5vdCBjb250YWluIHRoZSBVUkwuCiAgICAgLy8gUnVuIHRoZSBjb2Rl
IGhlcmUgZm9yIGxvY2FsIGZpbGVzIHRvIHJlc29sdmUgdGhlIGlzc3VlLgogICAgIC8vIFRPRE86
IFNlZSBpZiB0aGVyZSBpcyBhIGJldHRlciBhcHByb2FjaCBmb3IgaGFuZGxpbmcgdGhpcy4KLSAg
ICByZXNwb25zZSgpLnNldFVSTChtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0aXZlVVJMKCkpOworICAg
IFVSTCB1cmwgPSBtX2N1cmxIYW5kbGUtPmdldEVmZmVjdGl2ZVVSTCgpOworICAgIEFTU0VSVCh1
cmwuaXNWYWxpZCgpKTsKKyAgICByZXNwb25zZSgpLnNldFVSTCh1cmwpOworCisgICAgLy8gRGV0
ZXJtaW5lIHRoZSBNSU1FIHR5cGUgYmFzZWQgb24gdGhlIHBhdGguCisgICAgcmVzcG9uc2UoKS5z
ZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgodXJsKSk7CiAg
ICAgcmVzcG9uc2UoKS5zZXRSZXNwb25zZUZpcmVkKHRydWUpOwogICAgIGlmIChtX2hhbmRsZS0+
Y2xpZW50KCkpCiAgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KG1faGFuZGxlLCBSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKCkpKTsKQEAgLTUzMSw3ICs1MzUs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpoYW5kbGVEYXRhVVJMKCkKIAog
dm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0dXBQT1NUKCkKIHsKLSAgICBtX2N1
cmxIYW5kbGUuZW5hYmxlSHR0cFBvc3RSZXF1ZXN0KCk7CisgICAgbV9jdXJsSGFuZGxlLT5lbmFi
bGVIdHRwUG9zdFJlcXVlc3QoKTsKIAogICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGdldEZvcm1F
bGVtZW50c0NvdW50KCk7CiAgICAgaWYgKCFudW1FbGVtZW50cykKQEAgLTU0MSw3ICs1NDUsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpzZXR1cFBPU1QoKQogICAgIGlmIChu
dW1FbGVtZW50cyA9PSAxKSB7CiAgICAgICAgIG1fcG9zdEJ5dGVzID0gbV9maXJzdFJlcXVlc3Qu
aHR0cEJvZHkoKS0+ZmxhdHRlbigpOwogICAgICAgICBpZiAobV9wb3N0Qnl0ZXMuc2l6ZSgpKQot
ICAgICAgICAgICAgbV9jdXJsSGFuZGxlLnNldFBvc3RGaWVsZHMobV9wb3N0Qnl0ZXMuZGF0YSgp
LCBtX3Bvc3RCeXRlcy5zaXplKCkpOworICAgICAgICAgICAgbV9jdXJsSGFuZGxlLT5zZXRQb3N0
RmllbGRzKG1fcG9zdEJ5dGVzLmRhdGEoKSwgbV9wb3N0Qnl0ZXMuc2l6ZSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNTUwLDEwICs1NTQsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUN1cmxEZWxlZ2F0ZTo6c2V0dXBQT1NUKCkKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxl
Z2F0ZTo6c2V0dXBQVVQoKQogewotICAgIG1fY3VybEhhbmRsZS5lbmFibGVIdHRwUHV0UmVxdWVz
dCgpOworICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlSHR0cFB1dFJlcXVlc3QoKTsKIAogICAgIC8v
IERpc2FibGUgdGhlIEV4cGVjdDogMTAwIGNvbnRpbnVlIGhlYWRlcgotICAgIG1fY3VybEhhbmRs
ZS5yZW1vdmVSZXF1ZXN0SGVhZGVyKCJFeHBlY3QiKTsKKyAgICBtX2N1cmxIYW5kbGUtPnJlbW92
ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOwogCiAgICAgc2l6ZV90IG51bUVsZW1lbnRzID0gZ2V0
Rm9ybUVsZW1lbnRzQ291bnQoKTsKICAgICBpZiAoIW51bUVsZW1lbnRzKQpAQCAtNTgwLDcgKzU4
NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldHVwRm9ybURhdGEoYm9v
bCBpc1Bvc3RSZXF1ZXN0KQogICAgIFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+IGVsZW1lbnRzID0g
bV9maXJzdFJlcXVlc3QuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKTsKICAgICBzaXplX3QgbnVtRWxl
bWVudHMgPSBlbGVtZW50cy5zaXplKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgbG9uZyBsb25nIG1h
eEN1cmxPZmZUID0gbV9jdXJsSGFuZGxlLm1heEN1cmxPZmZUKCk7CisgICAgc3RhdGljIGNvbnN0
IGxvbmcgbG9uZyBtYXhDdXJsT2ZmVCA9IG1fY3VybEhhbmRsZS0+bWF4Q3VybE9mZlQoKTsKIAog
ICAgIC8vIE9idGFpbiB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZm9ybSBkYXRhCiAgICAgY3VybF9v
ZmZfdCBzaXplID0gMDsKQEAgLTYwNiwxOCArNjEwLDE4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
dXJsRGVsZWdhdGU6OnNldHVwRm9ybURhdGEoYm9vbCBpc1Bvc3RSZXF1ZXN0KQogCiAgICAgLy8g
Y1VSTCBndWVzc2VzIHRoYXQgd2Ugd2FudCBjaHVua2VkIGVuY29kaW5nIGFzIGxvbmcgYXMgd2Ug
c3BlY2lmeSB0aGUgaGVhZGVyCiAgICAgaWYgKGNodW5rZWRUcmFuc2ZlcikKLSAgICAgICAgbV9j
dXJsSGFuZGxlLmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2Vk
Iik7CisgICAgICAgIG1fY3VybEhhbmRsZS0+YXBwZW5kUmVxdWVzdEhlYWRlcigiVHJhbnNmZXIt
RW5jb2Rpbmc6IGNodW5rZWQiKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGlzUG9zdFJlcXVl
c3QpCi0gICAgICAgICAgICBtX2N1cmxIYW5kbGUuc2V0UG9zdEZpZWxkTGFyZ2Uoc2l6ZSk7Cisg
ICAgICAgICAgICBtX2N1cmxIYW5kbGUtPnNldFBvc3RGaWVsZExhcmdlKHNpemUpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2N1cmxIYW5kbGUuc2V0SW5GaWxlU2l6ZUxhcmdlKHNpemUp
OworICAgICAgICAgICAgbV9jdXJsSGFuZGxlLT5zZXRJbkZpbGVTaXplTGFyZ2Uoc2l6ZSk7CiAg
ICAgfQogCiAgICAgbV9mb3JtRGF0YVN0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybURhdGFT
dHJlYW0+KCk7CiAgICAgbV9mb3JtRGF0YVN0cmVhbS0+c2V0SFRUUEJvZHkobV9maXJzdFJlcXVl
c3QuaHR0cEJvZHkoKSk7CiAKLSAgICBtX2N1cmxIYW5kbGUuc2V0UmVhZENhbGxiYWNrRnVuY3Rp
b24od2lsbFNlbmREYXRhQ2FsbGJhY2ssIHRoaXMpOworICAgIG1fY3VybEhhbmRsZS0+c2V0UmVh
ZENhbGxiYWNrRnVuY3Rpb24od2lsbFNlbmREYXRhQ2FsbGJhY2ssIHRoaXMpOwogfQogCiB2b2lk
IFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjphcHBseUF1dGhlbnRpY2F0aW9uKCkKQEAgLTYy
OCwyMCArNjMyLDIwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmFwcGx5QXV0
aGVudGljYXRpb24oKQogICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgdXNlciA9IG1faW5pdGlhbENyZWRlbnRpYWwudXNlcigpOwogICAgICAgICBwYXNz
d29yZCA9IG1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKTsKLSAgICAgICAgbV9jdXJsSGFu
ZGxlLmVuYWJsZUh0dHBBdXRoZW50aWNhdGlvbihDVVJMQVVUSF9CQVNJQyk7CisgICAgICAgIG1f
Y3VybEhhbmRsZS0+ZW5hYmxlSHR0cEF1dGhlbnRpY2F0aW9uKENVUkxBVVRIX0JBU0lDKTsKICAg
ICB9CiAKICAgICAvLyBJdCBzZWVtcyB3ZSBuZWVkIHRvIHNldCBDVVJMT1BUX1VTRVJQV0QgZXZl
biBpZiB1c2VybmFtZSBhbmQgcGFzc3dvcmQgaXMgZW1wdHkuCiAgICAgLy8gT3RoZXJ3aXNlIGNV
Ukwgd2lsbCBub3QgYXV0b21hdGljYWxseSBjb250aW51ZSB3aXRoIGEgbmV3IHJlcXVlc3QgYWZ0
ZXIgYSA0MDEgcmVzcG9uc2UuCiAKICAgICAvLyBjdXJsIENVUkxPUFRfVVNFUlBXRCBleHBlY3Rz
IHVzZXJuYW1lOnBhc3N3b3JkCi0gICAgbV9jdXJsSGFuZGxlLnNldEh0dHBBdXRoVXNlclBhc3Mo
dXNlciwgcGFzc3dvcmQpOworICAgIG1fY3VybEhhbmRsZS0+c2V0SHR0cEF1dGhVc2VyUGFzcyh1
c2VyLCBwYXNzd29yZCk7CiB9CiAKIE5ldHdvcmtMb2FkTWV0cmljcyBSZXNvdXJjZUhhbmRsZUN1
cmxEZWxlZ2F0ZTo6Z2V0TmV0d29ya0xvYWRNZXRyaWNzKCkKIHsKICAgICBOZXR3b3JrTG9hZE1l
dHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzOwotICAgIGlmIChhdXRvIG1ldHJpY3MgPSBtX2N1cmxI
YW5kbGUuZ2V0TmV0d29ya0xvYWRNZXRyaWNzKCkpCisgICAgaWYgKGF1dG8gbWV0cmljcyA9IG1f
Y3VybEhhbmRsZS0+Z2V0TmV0d29ya0xvYWRNZXRyaWNzKCkpCiAgICAgICAgIG5ldHdvcmtMb2Fk
TWV0cmljcyA9ICptZXRyaWNzOwogCiAgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljczsKQEAg
LTY0OSw3ICs2NTMsNyBAQCBOZXR3b3JrTG9hZE1ldHJpY3MgUmVzb3VyY2VIYW5kbGVDdXJsRGVs
ZWdhdGU6OmdldE5ldHdvcmtMb2FkTWV0cmljcygpCiAKIENVUkxjb2RlIFJlc291cmNlSGFuZGxl
Q3VybERlbGVnYXRlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogewotICAgIG1fc3Ns
VmVyaWZpZXIuc2V0Q3VybEhhbmRsZSgmbV9jdXJsSGFuZGxlKTsKKyAgICBtX3NzbFZlcmlmaWVy
LnNldEN1cmxIYW5kbGUobV9jdXJsSGFuZGxlLmdldCgpKTsKICAgICBtX3NzbFZlcmlmaWVyLnNl
dEhvc3ROYW1lKG1fZmlyc3RSZXF1ZXN0LnVybCgpLmhvc3QoKSk7CiAgICAgbV9zc2xWZXJpZmll
ci5zZXRTc2xDdHgoc3NsQ3R4KTsKIApAQCAtNjgyLDcgKzY4Niw3IEBAIHNpemVfdCBSZXNvdXJj
ZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAg
ICAgKi8KICAgICBpZiAoaGVhZGVyID09IEF0b21pY1N0cmluZygiXHJcbiIpIHx8IGhlYWRlciA9
PSBBdG9taWNTdHJpbmcoIlxuIikpIHsKICAgICAgICAgbG9uZyBodHRwQ29kZSA9IDA7Ci0gICAg
ICAgIGlmIChhdXRvIGNvZGUgPSBtX2N1cmxIYW5kbGUuZ2V0UmVzcG9uc2VDb2RlKCkpCisgICAg
ICAgIGlmIChhdXRvIGNvZGUgPSBtX2N1cmxIYW5kbGUtPmdldFJlc3BvbnNlQ29kZSgpKQogICAg
ICAgICAgICAgaHR0cENvZGUgPSAqY29kZTsKIAogICAgICAgICBpZiAoIWh0dHBDb2RlKSB7CkBA
IC02OTYsMjUgKzcwMCwyNyBAQCBzaXplX3QgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRp
ZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuIGhlYWRl
ci5sZW5ndGgoKTsKICAgICAgICAgfQogCisgICAgICAgIFVSTCB1cmwgPSBtX2N1cmxIYW5kbGUt
PmdldEVmZmVjdGl2ZVVSTCgpOworCiAgICAgICAgIGxvbmcgbG9uZyBjb250ZW50TGVuZ3RoID0g
MDsKLSAgICAgICAgaWYgKGF1dG8gbGVuZ3RoID0gbV9jdXJsSGFuZGxlLmdldENvbnRlbnRMZW5n
dGgoKSkKKyAgICAgICAgaWYgKGF1dG8gbGVuZ3RoID0gbV9jdXJsSGFuZGxlLT5nZXRDb250ZW50
TGVuZ3RoKCkpCiAgICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gKmxlbmd0aDsKIAogICAgICAg
ICB1aW50MTZfdCBjb25uZWN0UG9ydCA9IDA7Ci0gICAgICAgIGlmIChhdXRvIHBvcnQgPSBtX2N1
cmxIYW5kbGUuZ2V0UHJpbWFyeVBvcnQoKSkKKyAgICAgICAgaWYgKGF1dG8gcG9ydCA9IG1fY3Vy
bEhhbmRsZS0+Z2V0UHJpbWFyeVBvcnQoKSkKICAgICAgICAgICAgIGNvbm5lY3RQb3J0ID0gKnBv
cnQ7CiAKICAgICAgICAgbG9uZyBhdmFpbGFibGVBdXRoID0gQ1VSTEFVVEhfTk9ORTsKLSAgICAg
ICAgaWYgKGF1dG8gYXV0aCA9IG1fY3VybEhhbmRsZS5nZXRIdHRwQXV0aEF2YWlsKCkpCisgICAg
ICAgIGlmIChhdXRvIGF1dGggPSBtX2N1cmxIYW5kbGUtPmdldEh0dHBBdXRoQXZhaWwoKSkKICAg
ICAgICAgICAgIGF2YWlsYWJsZUF1dGggPSAqYXV0aDsKIAogICAgICAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgICAgICBkaWRSZWNlaXZlQWxsSGVhZGVycyhodHRwQ29kZSwgY29udGVu
dExlbmd0aCwgY29ubmVjdFBvcnQsIGF2YWlsYWJsZUF1dGgpOworICAgICAgICAgICAgZGlkUmVj
ZWl2ZUFsbEhlYWRlcnModXJsLCBodHRwQ29kZSwgY29udGVudExlbmd0aCwgY29ubmVjdFBvcnQs
IGF2YWlsYWJsZUF1dGgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaHR0cENvZGUsIGNvbnRlbnRM
ZW5ndGgsIGNvbm5lY3RQb3J0LCBhdmFpbGFibGVBdXRoXSB7CisgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcHlVcmwgPSB1cmwu
aXNvbGF0ZWRDb3B5KCksIGh0dHBDb2RlLCBjb250ZW50TGVuZ3RoLCBjb25uZWN0UG9ydCwgYXZh
aWxhYmxlQXV0aF0gewogICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9oYW5k
bGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kaWRSZWNlaXZlQWxsSGVhZGVycyhodHRwQ29kZSwgY29udGVudExlbmd0aCwgY29u
bmVjdFBvcnQsIGF2YWlsYWJsZUF1dGgpOworICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpZFJlY2VpdmVBbGxIZWFkZXJzKGNvcHlVcmwsIGh0dHBDb2RlLCBjb250ZW50TGVuZ3RoLCBj
b25uZWN0UG9ydCwgYXZhaWxhYmxlQXV0aCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CkBAIC03NTAsNyArNzU2LDcgQEAgc2l6ZV90IFJlc291cmNlSGFuZGxlQ3Vy
bERlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAvLyB0aGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IGFwcGFyZW50bHkgaXMuIENVUkwg
d3JpdGVzIHRoZSBkYXRhCiAgICAgLy8gb2YgaHRtbCBwYWdlIGV2ZW4gaWYgaXQgaXMgYSByZWRp
cmVjdCB0aGF0IHdhcyBoYW5kbGVkIGludGVybmFsbHkKICAgICAvLyBjYW4gYmUgb2JzZXJ2ZWQg
ZS5nLiBvbiBnbWFpbC5jb20KLSAgICBpZiAoYXV0byBodHRwQ29kZSA9IG1fY3VybEhhbmRsZS5n
ZXRSZXNwb25zZUNvZGUoKSkgeworICAgIGlmIChhdXRvIGh0dHBDb2RlID0gbV9jdXJsSGFuZGxl
LT5nZXRSZXNwb25zZUNvZGUoKSkgewogICAgICAgICBpZiAoKmh0dHBDb2RlID49IDMwMCAmJiAq
aHR0cENvZGUgPCA0MDApCiAgICAgICAgICAgICByZXR1cm4gcmVjZWl2ZUJ5dGVzOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmgKaW5kZXggNWExZWJkNDU0MmMuLmM4NjQw
MDMzNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaApAQCAtNjUsNyArNjUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmV0YWluKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxl
YXNlKCkgb3ZlcnJpZGU7CiAKLSAgICBDVVJMKiBoYW5kbGUoKSBvdmVycmlkZSB7IHJldHVybiBt
X2N1cmxIYW5kbGUuaGFuZGxlKCk7IH0KKyAgICBDVVJMKiBoYW5kbGUoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2N1cmxIYW5kbGUgPyBtX2N1cmxIYW5kbGUtPmhhbmRsZSgpIDogbnVsbHB0cjsgfQog
ICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbXBsZXRl
VHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsVHJhbnNmZXIo
KSBvdmVycmlkZTsKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0dXBB
dXRoZW50aWNhdGlvbigpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQWxsSGVhZGVycyhsb25nIGh0
dHBDb2RlLCBsb25nIGxvbmcgY29udGVudExlbmd0aCwgdWludDE2X3QgY29ubmVjdFBvcnQsIGxv
bmcgYXZhaWxhYmxlSHR0cEF1dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZUFsbEhlYWRlcnMoVVJM
LCBsb25nIGh0dHBDb2RlLCBsb25nIGxvbmcgY29udGVudExlbmd0aCwgdWludDE2X3QgY29ubmVj
dFBvcnQsIGxvbmcgYXZhaWxhYmxlSHR0cEF1dGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNvbnRl
bnREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgaGFuZGxlTG9jYWxSZWNlaXZl
UmVzcG9uc2UoKTsKICAgICB2b2lkIHByZXBhcmVTZW5kRGF0YShjaGFyKiwgc2l6ZV90IGJsb2Nr
U2l6ZSwgc2l6ZV90IG51bWJlck9mQmxvY2tzKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9kZWZlcnNMb2FkaW5nOwogICAgIGJvb2wgbV9hZGRlZENhY2hlVmFsaWRh
dGlvbkhlYWRlcnMgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKLSAg
ICBDdXJsSGFuZGxlIG1fY3VybEhhbmRsZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybEhhbmRs
ZT4gbV9jdXJsSGFuZGxlOwogICAgIEN1cmxTU0xWZXJpZmllciBtX3NzbFZlcmlmaWVyOwogICAg
IC8vIFVzZWQgYnkgYm90aCB0aHJlYWRzLgogICAgIGJvb2wgbV9pc1N5bmNSZXF1ZXN0IHsgZmFs
c2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321849</attachid>
            <date>2017-09-26 11:22:11 -0700</date>
            <delta_ts>2017-09-26 12:03:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>177492-1.diff</filename>
            <type>text/plain</type>
            <size>26169</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZmQwOWUwOGFlNS4uMWE0YmFhMWM0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNy0wOS0yNiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIENoYW5nZSBtZW1iZXIgdmFyaWFibGUgb2YgQ3VybEhh
bmRsZSB0byB1c2Ugc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxEb3dubG9hZDo6Z2V0UmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybERvd25sb2FkOjpzZXR1cFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxE
b3dubG9hZDo6ZGlkQ29tcGxldGVUcmFuc2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93
bmxvYWQ6OmRpZENhbmNlbFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxEb3dubG9h
ZDo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmFk
ZEhlYWRlcnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJs
RGVsZWdhdGU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0QXV0aGVudGljYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldHVwVHJhbnNm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZENv
bXBsZXRlVHJhbnNmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVs
ZWdhdGU6OmRpZENhbmNlbFRyYW5zZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlQWxsSGVhZGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6aGFuZGxlTG9jYWxSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldHVwUE9T
VCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0dXBQ
VVQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldHVw
Rm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6
OmFwcGx5QXV0aGVudGljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
dXJsRGVsZWdhdGU6OmdldE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6d2lsbFNldHVwU3NsQ3R4KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlSGVhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERl
bGVnYXRlLmg6CisKIDIwMTctMDktMjUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbV2ViSURMXSBGYWN0b3Igb3V0IElzRXhjZXB0aW9uT3IgY2hlY2sgZnJvbSB0b0pT
L3RvSlNOZXdseUNyZWF0ZWQgc2lnbmF0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDFlOTdlNGM2YzY3Li42
YzRlOWE1ZGQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTU3LDEwICs1Nyw4IEBAIHZvaWQgQ3VybERvd25s
b2FkOjppbml0KEN1cmxEb3dubG9hZExpc3RlbmVyKiBsaXN0ZW5lciwgY29uc3QgVVJMJiB1cmwp
CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9tdXRleCk7Ci0KICAgICBtX2xpc3RlbmVyID0gbGlzdGVuZXI7Ci0gICAgbV91cmwg
PSB1cmw7CisgICAgbV9yZXF1ZXN0LnNldFVSTCh1cmwpOwogfQogCiB2b2lkIEN1cmxEb3dubG9h
ZDo6aW5pdChDdXJsRG93bmxvYWRMaXN0ZW5lciogbGlzdGVuZXIsIFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
QEAgLTY4LDExICs2Niw4IEBAIHZvaWQgQ3VybERvd25sb2FkOjppbml0KEN1cmxEb3dubG9hZExp
c3RlbmVyKiBsaXN0ZW5lciwgUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSCiAgICAgaWYgKCFsaXN0
ZW5lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHJl
cXVlc3QudXJsKCkpOwotCi0gICAgaW5pdChsaXN0ZW5lciwgdXJsKTsKLQotICAgIGFkZEhlYWRl
cnMocmVxdWVzdCk7CisgICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOworICAgIG1fcmVxdWVzdCA9
IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIGJvb2wgQ3VybERvd25sb2FkOjpzdGFydCgp
CkBAIC04OSwxMCArODQsNyBAQCBib29sIEN1cmxEb3dubG9hZDo6Y2FuY2VsKCkKIAogUmVzb3Vy
Y2VSZXNwb25zZSBDdXJsRG93bmxvYWQ6OmdldFJlc3BvbnNlKCkgY29uc3QKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX211dGV4KTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKG1f
cmVzcG9uc2VVcmwsIG1fcmVzcG9uc2VNSU1FVHlwZSwgMCwgbV9yZXNwb25zZVRleHRFbmNvZGlu
Z05hbWUpOwotICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChtX2h0dHBIZWFkZXJGaWVs
ZE5hbWUsIG1faHR0cEhlYWRlckZpZWxkVmFsdWUpOwotICAgIHJldHVybiByZXNwb25zZTsKKyAg
ICByZXR1cm4gbV9yZXNwb25zZTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OnJldGFpbigpCkBA
IC0xMDcsMTkgKzk5LDE5IEBAIHZvaWQgQ3VybERvd25sb2FkOjpyZWxlYXNlKCkKIAogQ1VSTCog
Q3VybERvd25sb2FkOjpzZXR1cFRyYW5zZmVyKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlciht
X211dGV4KTsKLQotICAgIG1fY3VybEhhbmRsZS5pbml0aWFsaXplKCk7Ci0gICAgbV9jdXJsSGFu
ZGxlLmVuYWJsZVNoYXJlSGFuZGxlKCk7Ci0KLSAgICBtX2N1cmxIYW5kbGUuc2V0VXJsKG1fdXJs
KTsKLSAgICBtX2N1cmxIYW5kbGUuc2V0SGVhZGVyQ2FsbGJhY2tGdW5jdGlvbihoZWFkZXJDYWxs
YmFjaywgdGhpcyk7Ci0gICAgbV9jdXJsSGFuZGxlLnNldFdyaXRlQ2FsbGJhY2tGdW5jdGlvbih3
cml0ZUNhbGxiYWNrLCB0aGlzKTsKLSAgICBtX2N1cmxIYW5kbGUuZW5hYmxlRm9sbG93TG9jYXRp
b24oKTsKLSAgICBtX2N1cmxIYW5kbGUuZW5hYmxlSHR0cEF1dGhlbnRpY2F0aW9uKENVUkxBVVRI
X0FOWSk7Ci0gICAgbV9jdXJsSGFuZGxlLnNldENBQ2VydFBhdGgoQ3VybENvbnRleHQ6OnNpbmds
ZXRvbigpLnNzbEhhbmRsZSgpLmdldENBQ2VydFBhdGgoKSk7Ci0KLSAgICByZXR1cm4gbV9jdXJs
SGFuZGxlLmhhbmRsZSgpOworICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Vy
bEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUtPmluaXRpYWxpemUoKTsKKyAgICBtX2N1cmxI
YW5kbGUtPmVuYWJsZVNoYXJlSGFuZGxlKCk7CisKKyAgICBtX2N1cmxIYW5kbGUtPnNldFVybCht
X3JlcXVlc3QudXJsKCkpOworICAgIG1fY3VybEhhbmRsZS0+YXBwZW5kUmVxdWVzdEhlYWRlcnMo
bV9yZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSk7CisgICAgbV9jdXJsSGFuZGxlLT5zZXRIZWFk
ZXJDYWxsYmFja0Z1bmN0aW9uKGhlYWRlckNhbGxiYWNrLCB0aGlzKTsKKyAgICBtX2N1cmxIYW5k
bGUtPnNldFdyaXRlQ2FsbGJhY2tGdW5jdGlvbih3cml0ZUNhbGxiYWNrLCB0aGlzKTsKKyAgICBt
X2N1cmxIYW5kbGUtPmVuYWJsZUZvbGxvd0xvY2F0aW9uKCk7CisgICAgbV9jdXJsSGFuZGxlLT5l
bmFibGVIdHRwQXV0aGVudGljYXRpb24oQ1VSTEFVVEhfQU5ZKTsKKyAgICBtX2N1cmxIYW5kbGUt
PnNldENBQ2VydFBhdGgoQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgpLmdldENB
Q2VydFBhdGgoKSk7CisKKyAgICByZXR1cm4gbV9jdXJsSGFuZGxlLT5oYW5kbGUoKTsKIH0KIAog
dm9pZCBDdXJsRG93bmxvYWQ6OmRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUgcmVzdWx0KQpA
QCAtMTMwLDExICsxMjIsMTMgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZENvbXBsZXRlVHJhbnNm
ZXIoQ1VSTGNvZGUgcmVzdWx0KQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaWRGYWlsKCk7CiAgICAgfSk7CisKKyAgICBtX2N1cmxIYW5kbGUgPSBudWxscHRyOwog
fQogCiB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkQ2FuY2VsVHJhbnNmZXIoKQogewotCisgICAgbV9j
dXJsSGFuZGxlID0gbnVsbHB0cjsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OmNsb3NlRmlsZSgp
CkBAIC0xNjYsMjcgKzE2MCwyMCBAQCB2b2lkIEN1cmxEb3dubG9hZDo6d3JpdGVEYXRhVG9GaWxl
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBzaXplKQogICAgICAgICB3cml0ZVRvRmlsZShtX3RlbXBI
YW5kbGUsIGRhdGEsIHNpemUpOwogfQogCi12b2lkIEN1cmxEb3dubG9hZDo6YWRkSGVhZGVycyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9tdXRleCk7Ci0gICAgbV9jdXJsSGFuZGxlLmFwcGVuZFJlcXVlc3RIZWFkZXJzKHJlcXVlc3Qu
aHR0cEhlYWRlckZpZWxkcygpKTsKLX0KLQogdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVI
ZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9t
dXRleCk7CiAKICAgICBpZiAoaGVhZGVyID09ICJcclxuIiB8fCBoZWFkZXIgPT0gIlxuIikgewot
Ci0gICAgICAgIGF1dG8gaHR0cENvZGUgPSBtX2N1cmxIYW5kbGUuZ2V0UmVzcG9uc2VDb2RlKCk7
CisgICAgICAgIGF1dG8gaHR0cENvZGUgPSBtX2N1cmxIYW5kbGUtPmdldFJlc3BvbnNlQ29kZSgp
OwogCiAgICAgICAgIGlmIChodHRwQ29kZSAmJiAqaHR0cENvZGUgPj0gMjAwICYmICpodHRwQ29k
ZSA8IDMwMCkgewotICAgICAgICAgICAgYXV0byB1cmwgPSBtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0
aXZlVVJMKCk7CisgICAgICAgICAgICBhdXRvIHVybCA9IG1fY3VybEhhbmRsZS0+Z2V0RWZmZWN0
aXZlVVJMKCk7CisKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgICAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSBsb2NhbFJlc3BvbnNlID0gcHJvdGVjdGVkVGhpcy0+Z2V0
UmVzcG9uc2UoKTsKLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Jlc3BvbnNlVXJs
ID0gdXJsOwotICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcmVzcG9uc2VNSU1FVHlw
ZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobG9jYWxSZXNwb25zZS5odHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSk7Ci0gICAgICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+bV9yZXNwb25zZVRleHRFbmNvZGluZ05hbWUgPSBleHRyYWN0Q2hhcnNldEZy
b21NZWRpYVR5cGUobG9jYWxSZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRUeXBlKSk7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9yZXNwb25z
ZS5zZXRVUkwodXJsKTsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Jlc3BvbnNl
LnNldE1pbWVUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUocHJvdGVjdGVkVGhpcy0+
bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkp
OworICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcmVzcG9uc2Uuc2V0VGV4dEVuY29k
aW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUocHJvdGVjdGVkVGhpcy0+bV9yZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkpOwogCiAg
ICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiAgICAg
ICAgICAgICB9KTsKQEAgLTE5NSw4ICsxODIsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVj
ZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBoZWFkZXIgPSBoZWFkZXIuaXNvbGF0
ZWRDb3B5KCldIHsKICAgICAgICAgICAgIGludCBzcGxpdFBvcyA9IGhlYWRlci5maW5kKCI6Iik7
CiAgICAgICAgICAgICBpZiAoc3BsaXRQb3MgIT0gLTEpCi0gICAgICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9odHRwSGVhZGVyRmllbGROYW1lID0gaGVhZGVyLmxlZnQoc3BsaXRQb3MpOwot
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1faHR0cEhlYWRlckZpZWxkVmFsdWUgPSBo
ZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaGVh
ZGVyLmxlZnQoc3BsaXRQb3MpLCBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3RyaXBX
aGl0ZVNwYWNlKCkpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggMmE4MGU0MDFm
OWMuLmU3MGEyNDhlZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ3Vy
bEpvYk1hbmFnZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CkBAIC02OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXRhaW4oKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2UoKSBvdmVycmlkZTsKIAotICAgIENVUkwqIGhhbmRs
ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fY3VybEhhbmRsZS5oYW5kbGUoKTsgfQorICAgIENVUkwq
IGhhbmRsZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fY3VybEhhbmRsZSA/IG1fY3VybEhhbmRsZS0+
aGFuZGxlKCkgOiBudWxscHRyOyB9CiAgICAgQ1VSTCogc2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwpAQCAtNzcsOCArNzgsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgbW92ZUZpbGVUb0Rlc3RpbmF0aW9uKCk7CiAgICAgdm9pZCB3cml0ZURh
dGFUb0ZpbGUoY29uc3QgY2hhciogZGF0YSwgaW50IHNpemUpOwogCi0gICAgdm9pZCBhZGRIZWFk
ZXJzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotCiAgICAgLy8gQ2FsbGVkIG9uIGRvd25sb2Fk
IHRocmVhZC4KICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEodm9pZCogZGF0YSwgaW50IHNpemUpOwpAQCAtOTIs
MTYgKzkxLDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHNpemVfdCB3cml0ZUNhbGxiYWNrKGNo
YXIqIHB0ciwgc2l6ZV90LCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpOwogICAgIHN0YXRpYyBz
aXplX3QgaGVhZGVyQ2FsbGJhY2soY2hhciogcHRyLCBzaXplX3QsIHNpemVfdCBubWVtYiwgdm9p
ZCogZGF0YSk7CiAKLSAgICBDdXJsSGFuZGxlIG1fY3VybEhhbmRsZTsKLSAgICBVUkwgbV91cmw7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEN1cmxIYW5kbGU+IG1fY3VybEhhbmRsZTsKKyAgICBSZXNv
dXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
KwogICAgIFN0cmluZyBtX3RlbXBQYXRoOwogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAg
IFBsYXRmb3JtRmlsZUhhbmRsZSBtX3RlbXBIYW5kbGUgeyBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlIH07Ci0gICAgVVJMIG1fcmVzcG9uc2VVcmw7Ci0gICAgU3RyaW5nIG1fcmVzcG9uc2VNSU1F
VHlwZTsKLSAgICBTdHJpbmcgbV9yZXNwb25zZVRleHRFbmNvZGluZ05hbWU7Ci0gICAgU3RyaW5n
IG1faHR0cEhlYWRlckZpZWxkTmFtZTsKLSAgICBTdHJpbmcgbV9odHRwSGVhZGVyRmllbGRWYWx1
ZTsKICAgICBib29sIG1fZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSB7IGZhbHNlIH07CiAgICAgbXV0
YWJsZSBMb2NrIG1fbXV0ZXg7CiAgICAgQ3VybERvd25sb2FkTGlzdGVuZXIqIG1fbGlzdGVuZXIg
eyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmNwcAppbmRleCBh
OTBhYTQwY2NhYy4uNzc5ZDZkYzBjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVn
YXRlLmNwcApAQCAtNTksMTEgKzU5LDYgQEAgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OlJl
c291cmNlSGFuZGxlQ3VybERlbGVnYXRlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiB7CiAgICAg
Y29uc3QgVVJMJiB1cmwgPSBtX2ZpcnN0UmVxdWVzdC51cmwoKTsKIAotICAgIGlmICh1cmwuaXNM
b2NhbEZpbGUoKSkgewotICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIE1JTUUgdHlwZSBiYXNlZCBv
biB0aGUgcGF0aC4KLSAgICAgICAgcmVzcG9uc2UoKS5zZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgodXJsKSk7Ci0gICAgfQotCiAgICAgaWYgKG1fY3VzdG9t
SFRUUEhlYWRlckZpZWxkcy5zaXplKCkpIHsKICAgICAgICAgYXV0byYgY2FjaGUgPSBDdXJsQ2Fj
aGVNYW5hZ2VyOjpnZXRJbnN0YW5jZSgpOwogICAgICAgICBib29sIGhhc0NhY2hlSGVhZGVycyA9
IG1fY3VzdG9tSFRUUEhlYWRlckZpZWxkcy5jb250YWlucyhIVFRQSGVhZGVyTmFtZTo6SWZNb2Rp
ZmllZFNpbmNlKSB8fCBtX2N1c3RvbUhUVFBIZWFkZXJGaWVsZHMuY29udGFpbnMoSFRUUEhlYWRl
ck5hbWU6OklmTm9uZU1hdGNoKTsKQEAgLTEwNiw3ICsxMDEsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ3VybERlbGVnYXRlOjpzdGFydChib29sIGlzU3luY1JlcXVlc3QpCiAgICAgICAgIHNldHVw
VHJhbnNmZXIoKTsKIAogICAgICAgICAvLyBjdXJsX2Vhc3lfcGVyZm9ybSBibG9ja3MgdW50aWwg
dGhlIHRyYW5zZmVyIGlzIGZpbmlzaGVkLgotICAgICAgICBDVVJMY29kZSByZXN1bHRDb2RlID0g
bV9jdXJsSGFuZGxlLnBlcmZvcm0oKTsKKyAgICAgICAgQ1VSTGNvZGUgcmVzdWx0Q29kZSA9IG1f
Y3VybEhhbmRsZS0+cGVyZm9ybSgpOwogICAgICAgICBkaWRDb21wbGV0ZVRyYW5zZmVyKHJlc3Vs
dENvZGUpOwogICAgICAgICByZWxlYXNlKCk7CiAgICAgfQpAQCAtMTI4LDEzICsxMjMsMTYgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRl
ZmVycykKICAgICBtX2RlZmVyc0xvYWRpbmcgPSBkZWZlcnM7CiAKICAgICBhdXRvIGFjdGlvbiA9
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgeworICAgICAgICBpZiAoIXByb3Rl
Y3RlZFRoaXMtPm1fY3VybEhhbmRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+bV9kZWZlcnNMb2FkaW5nKSB7Ci0gICAgICAgICAgICBDVVJMY29k
ZSBlcnJvciA9IHByb3RlY3RlZFRoaXMtPm1fY3VybEhhbmRsZS5wYXVzZShDVVJMUEFVU0VfQUxM
KTsKKyAgICAgICAgICAgIENVUkxjb2RlIGVycm9yID0gcHJvdGVjdGVkVGhpcy0+bV9jdXJsSGFu
ZGxlLT5wYXVzZShDVVJMUEFVU0VfQUxMKTsKICAgICAgICAgICAgIC8vIElmIHdlIGNvdWxkIG5v
dCBkZWZlciB0aGUgaGFuZGxlLCBzbyBkb24ndCBkbyBpdC4KICAgICAgICAgICAgIGlmIChlcnJv
ciAhPSBDVVJMRV9PSykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBDVVJMY29kZSBlcnJvciA9IHByb3RlY3RlZFRoaXMtPm1fY3VybEhhbmRs
ZS5wYXVzZShDVVJMUEFVU0VfQ09OVCk7CisgICAgICAgICAgICBDVVJMY29kZSBlcnJvciA9IHBy
b3RlY3RlZFRoaXMtPm1fY3VybEhhbmRsZS0+cGF1c2UoQ1VSTFBBVVNFX0NPTlQpOwogICAgICAg
ICAgICAgaWYgKGVycm9yICE9IENVUkxFX09LKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVzdGFy
dGluZyB0aGUgaGFuZGxlIGhhcyBmYWlsZWQgc28ganVzdCBjYW5jZWwgaXQuCiAgICAgICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+bV9oYW5kbGUtPmNhbmNlbCgpOwpAQCAtMTUwLDcgKzE0OCw4
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldEF1dGhlbnRpY2F0aW9uKGNv
bnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyCiAgICAgYXV0byBhY3Rpb24gPSBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1c2VyID0gdXNlci5pc29sYXRlZENvcHkoKSwgcGFzcyA9
IHBhc3MuaXNvbGF0ZWRDb3B5KCldKCkgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3VzZXIg
PSB1c2VyOwogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Bhc3MgPSBwYXNzOwotICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX2N1cmxIYW5kbGUuc2V0SHR0cEF1dGhVc2VyUGFzcyh1c2VyLCBwYXNz
KTsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fY3VybEhhbmRsZSkKKyAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fY3VybEhhbmRsZS0+c2V0SHR0cEF1dGhVc2VyUGFzcyh1c2VyLCBw
YXNzKTsKICAgICB9OwogCiAgICAgQ3VybEpvYk1hbmFnZXI6OnNpbmdsZXRvbigpLmNhbGxPbkpv
YlRocmVhZChXVEZNb3ZlKGFjdGlvbikpOwpAQCAtMTgzLDc1ICsxODIsNzQgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6cmVsZWFzZSgpCiAKIENVUkwqIFJlc291cmNlSGFuZGxl
Q3VybERlbGVnYXRlOjpzZXR1cFRyYW5zZmVyKCkKIHsKLSAgICBDdXJsQ29udGV4dCYgY29udGV4
dCA9IEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKTsKLQotICAgIG1fY3VybEhhbmRsZS5pbml0aWFs
aXplKCk7CisgICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsSGFuZGxlPigp
OworICAgIG1fY3VybEhhbmRsZS0+aW5pdGlhbGl6ZSgpOwogCiAgICAgaWYgKG1fZGVmZXJzTG9h
ZGluZykgewotICAgICAgICBDVVJMY29kZSBlcnJvciA9IG1fY3VybEhhbmRsZS5wYXVzZShDVVJM
UEFVU0VfQUxMKTsKKyAgICAgICAgQ1VSTGNvZGUgZXJyb3IgPSBtX2N1cmxIYW5kbGUtPnBhdXNl
KENVUkxQQVVTRV9BTEwpOwogICAgICAgICAvLyBJZiB3ZSBkaWQgbm90IHBhdXNlIHRoZSBoYW5k
bGUsIHdlIHdvdWxkIEFTU0VSVCBpbiB0aGUKICAgICAgICAgLy8gaGVhZGVyIGNhbGxiYWNrLiBT
byBqdXN0IGFzc2VydCBoZXJlLgogICAgICAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCBlcnJvciA9
PSBDVVJMRV9PSyk7CiAgICAgfQogCiAjaWZuZGVmIE5ERUJVRwotICAgIG1fY3VybEhhbmRsZS5l
bmFibGVWZXJib3NlSWZVc2VkKCk7Ci0gICAgbV9jdXJsSGFuZGxlLmVuYWJsZVN0ZEVycklmVXNl
ZCgpOworICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlVmVyYm9zZUlmVXNlZCgpOworICAgIG1fY3Vy
bEhhbmRsZS0+ZW5hYmxlU3RkRXJySWZVc2VkKCk7CiAjZW5kaWYKIAogICAgIGF1dG8mIHNzbEhh
bmRsZSA9IEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zc2xIYW5kbGUoKTsKIAotICAgIG1fY3Vy
bEhhbmRsZS5zZXRTc2xWZXJpZnlQZWVyKEN1cmxIYW5kbGU6OlZlcmlmeVBlZXI6OkVuYWJsZSk7
Ci0gICAgbV9jdXJsSGFuZGxlLnNldFNzbFZlcmlmeUhvc3QoQ3VybEhhbmRsZTo6VmVyaWZ5SG9z
dDo6U3RyaWN0TmFtZUNoZWNrKTsKLSAgICBtX2N1cmxIYW5kbGUuc2V0V3JpdGVDYWxsYmFja0Z1
bmN0aW9uKGRpZFJlY2VpdmVEYXRhQ2FsbGJhY2ssIHRoaXMpOwotICAgIG1fY3VybEhhbmRsZS5z
ZXRIZWFkZXJDYWxsYmFja0Z1bmN0aW9uKGRpZFJlY2VpdmVIZWFkZXJDYWxsYmFjaywgdGhpcyk7
Ci0gICAgbV9jdXJsSGFuZGxlLmVuYWJsZUF1dG9SZWZlcmVyKCk7Ci0gICAgbV9jdXJsSGFuZGxl
LmVuYWJsZUZvbGxvd0xvY2F0aW9uKCk7Ci0gICAgbV9jdXJsSGFuZGxlLmVuYWJsZUh0dHBBdXRo
ZW50aWNhdGlvbihDVVJMQVVUSF9BTlkpOwotICAgIG1fY3VybEhhbmRsZS5lbmFibGVTaGFyZUhh
bmRsZSgpOwotICAgIG1fY3VybEhhbmRsZS5lbmFibGVUaW1lb3V0KCk7Ci0gICAgbV9jdXJsSGFu
ZGxlLmVuYWJsZUFsbG93ZWRQcm90b2NvbHMoKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNldFNzbFZl
cmlmeVBlZXIoQ3VybEhhbmRsZTo6VmVyaWZ5UGVlcjo6RW5hYmxlKTsKKyAgICBtX2N1cmxIYW5k
bGUtPnNldFNzbFZlcmlmeUhvc3QoQ3VybEhhbmRsZTo6VmVyaWZ5SG9zdDo6U3RyaWN0TmFtZUNo
ZWNrKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNldFdyaXRlQ2FsbGJhY2tGdW5jdGlvbihkaWRSZWNl
aXZlRGF0YUNhbGxiYWNrLCB0aGlzKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNldEhlYWRlckNhbGxi
YWNrRnVuY3Rpb24oZGlkUmVjZWl2ZUhlYWRlckNhbGxiYWNrLCB0aGlzKTsKKyAgICBtX2N1cmxI
YW5kbGUtPmVuYWJsZUF1dG9SZWZlcmVyKCk7CisgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVGb2xs
b3dMb2NhdGlvbigpOworICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlSHR0cEF1dGhlbnRpY2F0aW9u
KENVUkxBVVRIX0FOWSk7CisgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVTaGFyZUhhbmRsZSgpOwor
ICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlVGltZW91dCgpOworICAgIG1fY3VybEhhbmRsZS0+ZW5h
YmxlQWxsb3dlZFByb3RvY29scygpOwogCiAgICAgYXV0byBzc2xDbGllbnRDZXJ0aWZpY2F0ZSA9
IHNzbEhhbmRsZS5nZXRTU0xDbGllbnRDZXJ0aWZpY2F0ZShtX2ZpcnN0UmVxdWVzdC51cmwoKS5o
b3N0KCkpOwogICAgIGlmIChzc2xDbGllbnRDZXJ0aWZpY2F0ZSkgewotICAgICAgICBtX2N1cmxI
YW5kbGUuc2V0U3NsQ2VydChzc2xDbGllbnRDZXJ0aWZpY2F0ZS0+Zmlyc3QudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5zZXRTc2xDZXJ0VHlwZSgiUDEyIik7Ci0gICAgICAg
IG1fY3VybEhhbmRsZS5zZXRTc2xLZXlQYXNzd29yZChzc2xDbGllbnRDZXJ0aWZpY2F0ZS0+c2Vj
b25kLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2N1cmxIYW5kbGUtPnNldFNzbENlcnQoc3Ns
Q2xpZW50Q2VydGlmaWNhdGUtPmZpcnN0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2N1cmxI
YW5kbGUtPnNldFNzbENlcnRUeXBlKCJQMTIiKTsKKyAgICAgICAgbV9jdXJsSGFuZGxlLT5zZXRT
c2xLZXlQYXNzd29yZChzc2xDbGllbnRDZXJ0aWZpY2F0ZS0+c2Vjb25kLnV0ZjgoKS5kYXRhKCkp
OwogICAgIH0KIAogICAgIGlmIChzc2xIYW5kbGUuc2hvdWxkSWdub3JlU1NMRXJyb3JzKCkpCi0g
ICAgICAgIG1fY3VybEhhbmRsZS5zZXRTc2xWZXJpZnlQZWVyKEN1cmxIYW5kbGU6OlZlcmlmeVBl
ZXI6OkRpc2FibGUpOworICAgICAgICBtX2N1cmxIYW5kbGUtPnNldFNzbFZlcmlmeVBlZXIoQ3Vy
bEhhbmRsZTo6VmVyaWZ5UGVlcjo6RGlzYWJsZSk7CiAgICAgZWxzZQotICAgICAgICBtX2N1cmxI
YW5kbGUuc2V0U3NsQ3R4Q2FsbGJhY2tGdW5jdGlvbih3aWxsU2V0dXBTc2xDdHhDYWxsYmFjaywg
dGhpcyk7CisgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0U3NsQ3R4Q2FsbGJhY2tGdW5jdGlvbih3
aWxsU2V0dXBTc2xDdHhDYWxsYmFjaywgdGhpcyk7CiAKLSAgICBtX2N1cmxIYW5kbGUuc2V0Q0FD
ZXJ0UGF0aChzc2xIYW5kbGUuZ2V0Q0FDZXJ0UGF0aCgpKTsKKyAgICBtX2N1cmxIYW5kbGUtPnNl
dENBQ2VydFBhdGgoc3NsSGFuZGxlLmdldENBQ2VydFBhdGgoKSk7CiAKLSAgICBtX2N1cmxIYW5k
bGUuZW5hYmxlQWNjZXB0RW5jb2RpbmcoKTsKLSAgICBtX2N1cmxIYW5kbGUuc2V0VXJsKG1fZmly
c3RSZXF1ZXN0LnVybCgpKTsKLSAgICBtX2N1cmxIYW5kbGUuZW5hYmxlQ29va2llSmFySWZFeGlz
dHMoKTsKKyAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUFjY2VwdEVuY29kaW5nKCk7CisgICAgbV9j
dXJsSGFuZGxlLT5zZXRVcmwobV9maXJzdFJlcXVlc3QudXJsKCkpOworICAgIG1fY3VybEhhbmRs
ZS0+ZW5hYmxlQ29va2llSmFySWZFeGlzdHMoKTsKIAogICAgIGlmIChtX2N1c3RvbUhUVFBIZWFk
ZXJGaWVsZHMuc2l6ZSgpKQotICAgICAgICBtX2N1cmxIYW5kbGUuYXBwZW5kUmVxdWVzdEhlYWRl
cnMobV9jdXN0b21IVFRQSGVhZGVyRmllbGRzKTsKKyAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBl
bmRSZXF1ZXN0SGVhZGVycyhtX2N1c3RvbUhUVFBIZWFkZXJGaWVsZHMpOwogCiAgICAgU3RyaW5n
IG1ldGhvZCA9IG1fZmlyc3RSZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICBpZiAoIkdFVCIgPT0g
bWV0aG9kKQotICAgICAgICBtX2N1cmxIYW5kbGUuZW5hYmxlSHR0cEdldFJlcXVlc3QoKTsKKyAg
ICAgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVIdHRwR2V0UmVxdWVzdCgpOwogICAgIGVsc2UgaWYg
KCJQT1NUIiA9PSBtZXRob2QpCiAgICAgICAgIHNldHVwUE9TVCgpOwogICAgIGVsc2UgaWYgKCJQ
VVQiID09IG1ldGhvZCkKICAgICAgICAgc2V0dXBQVVQoKTsKICAgICBlbHNlIGlmICgiSEVBRCIg
PT0gbWV0aG9kKQotICAgICAgICBtX2N1cmxIYW5kbGUuZW5hYmxlSHR0cEhlYWRSZXF1ZXN0KCk7
CisgICAgICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlSHR0cEhlYWRSZXF1ZXN0KCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIG1fY3VybEhhbmRsZS5zZXRIdHRwQ3VzdG9tUmVxdWVzdChtZXRob2QpOwor
ICAgICAgICBtX2N1cmxIYW5kbGUtPnNldEh0dHBDdXN0b21SZXF1ZXN0KG1ldGhvZCk7CiAgICAg
ICAgIHNldHVwUFVUKCk7CiAgICAgfQogCiAgICAgYXBwbHlBdXRoZW50aWNhdGlvbigpOwogCi0g
ICAgbV9jdXJsSGFuZGxlLmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKKyAgICBtX2N1cmxIYW5kbGUt
PmVuYWJsZVByb3h5SWZFeGlzdHMoKTsKIAotICAgIHJldHVybiBtX2N1cmxIYW5kbGUuaGFuZGxl
KCk7CisgICAgcmV0dXJuIG1fY3VybEhhbmRsZS0+aGFuZGxlKCk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUgcmVzdWx0
KQpAQCAtMjg1LDExICsyODMsMTMgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6
ZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSByZXN1bHQpCiAgICAgfQogCiAgICAgbV9mb3Jt
RGF0YVN0cmVhbSA9IG51bGxwdHI7CisgICAgbV9jdXJsSGFuZGxlID0gbnVsbHB0cjsKIH0KIAog
dm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkQ2FuY2VsVHJhbnNmZXIoKQogewog
ICAgIG1fZm9ybURhdGFTdHJlYW0gPSBudWxscHRyOworICAgIG1fY3VybEhhbmRsZSA9IG51bGxw
dHI7CiB9CiAKIFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpy
ZXNwb25zZSgpCkBAIC0zMjIsMTIgKzMyMiwxMSBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaXNIdHRw
SW5mbyhpbnQgc3RhdHVzQ29kZSkKICAgICByZXR1cm4gMTAwIDw9IHN0YXR1c0NvZGUgJiYgc3Rh
dHVzQ29kZSA8IDIwMDsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlk
UmVjZWl2ZUFsbEhlYWRlcnMobG9uZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGgs
IHVpbnQxNl90IGNvbm5lY3RQb3J0LCBsb25nIGF2YWlsYWJsZUh0dHBBdXRoKQordm9pZCBSZXNv
dXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUFsbEhlYWRlcnMoVVJMIHVybCwgbG9u
ZyBodHRwQ29kZSwgbG9uZyBsb25nIGNvbnRlbnRMZW5ndGgsIHVpbnQxNl90IGNvbm5lY3RQb3J0
LCBsb25nIGF2YWlsYWJsZUh0dHBBdXRoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKLSAgICByZXNwb25zZSgpLnNldFVSTChtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0aXZlVVJMKCkp
OwotCisgICAgcmVzcG9uc2UoKS5zZXRVUkwodXJsKTsKICAgICByZXNwb25zZSgpLnNldEV4cGVj
dGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKICAgICByZXNwb25zZSgpLnNldEhUVFBT
dGF0dXNDb2RlKGh0dHBDb2RlKTsKICAgICByZXNwb25zZSgpLnNldE1pbWVUeXBlKGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUocmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlKSkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBAIC00MDQs
NyArNDAzLDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmhhbmRsZUxvY2Fs
UmVjZWl2ZVJlc3BvbnNlKCkKICAgICAvLyB3aGljaCBtZWFucyB0aGUgUmVzb3VyY2VMb2FkZXIn
cyByZXNwb25zZSBkb2VzIG5vdCBjb250YWluIHRoZSBVUkwuCiAgICAgLy8gUnVuIHRoZSBjb2Rl
IGhlcmUgZm9yIGxvY2FsIGZpbGVzIHRvIHJlc29sdmUgdGhlIGlzc3VlLgogICAgIC8vIFRPRE86
IFNlZSBpZiB0aGVyZSBpcyBhIGJldHRlciBhcHByb2FjaCBmb3IgaGFuZGxpbmcgdGhpcy4KLSAg
ICByZXNwb25zZSgpLnNldFVSTChtX2N1cmxIYW5kbGUuZ2V0RWZmZWN0aXZlVVJMKCkpOworICAg
IFVSTCB1cmwgPSBtX2N1cmxIYW5kbGUtPmdldEVmZmVjdGl2ZVVSTCgpOworICAgIEFTU0VSVCh1
cmwuaXNWYWxpZCgpKTsKKyAgICByZXNwb25zZSgpLnNldFVSTCh1cmwpOworCisgICAgLy8gRGV0
ZXJtaW5lIHRoZSBNSU1FIHR5cGUgYmFzZWQgb24gdGhlIHBhdGguCisgICAgcmVzcG9uc2UoKS5z
ZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgodXJsKSk7CiAg
ICAgcmVzcG9uc2UoKS5zZXRSZXNwb25zZUZpcmVkKHRydWUpOwogICAgIGlmIChtX2hhbmRsZS0+
Y2xpZW50KCkpCiAgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KG1faGFuZGxlLCBSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKCkpKTsKQEAgLTUzMSw3ICs1MzUs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpoYW5kbGVEYXRhVVJMKCkKIAog
dm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6c2V0dXBQT1NUKCkKIHsKLSAgICBtX2N1
cmxIYW5kbGUuZW5hYmxlSHR0cFBvc3RSZXF1ZXN0KCk7CisgICAgbV9jdXJsSGFuZGxlLT5lbmFi
bGVIdHRwUG9zdFJlcXVlc3QoKTsKIAogICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGdldEZvcm1F
bGVtZW50c0NvdW50KCk7CiAgICAgaWYgKCFudW1FbGVtZW50cykKQEAgLTU0MSw3ICs1NDUsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjpzZXR1cFBPU1QoKQogICAgIGlmIChu
dW1FbGVtZW50cyA9PSAxKSB7CiAgICAgICAgIG1fcG9zdEJ5dGVzID0gbV9maXJzdFJlcXVlc3Qu
aHR0cEJvZHkoKS0+ZmxhdHRlbigpOwogICAgICAgICBpZiAobV9wb3N0Qnl0ZXMuc2l6ZSgpKQot
ICAgICAgICAgICAgbV9jdXJsSGFuZGxlLnNldFBvc3RGaWVsZHMobV9wb3N0Qnl0ZXMuZGF0YSgp
LCBtX3Bvc3RCeXRlcy5zaXplKCkpOworICAgICAgICAgICAgbV9jdXJsSGFuZGxlLT5zZXRQb3N0
RmllbGRzKG1fcG9zdEJ5dGVzLmRhdGEoKSwgbV9wb3N0Qnl0ZXMuc2l6ZSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNTUwLDEwICs1NTQsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUN1cmxEZWxlZ2F0ZTo6c2V0dXBQT1NUKCkKIAogdm9pZCBSZXNvdXJjZUhhbmRsZUN1cmxEZWxl
Z2F0ZTo6c2V0dXBQVVQoKQogewotICAgIG1fY3VybEhhbmRsZS5lbmFibGVIdHRwUHV0UmVxdWVz
dCgpOworICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxlSHR0cFB1dFJlcXVlc3QoKTsKIAogICAgIC8v
IERpc2FibGUgdGhlIEV4cGVjdDogMTAwIGNvbnRpbnVlIGhlYWRlcgotICAgIG1fY3VybEhhbmRs
ZS5yZW1vdmVSZXF1ZXN0SGVhZGVyKCJFeHBlY3QiKTsKKyAgICBtX2N1cmxIYW5kbGUtPnJlbW92
ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOwogCiAgICAgc2l6ZV90IG51bUVsZW1lbnRzID0gZ2V0
Rm9ybUVsZW1lbnRzQ291bnQoKTsKICAgICBpZiAoIW51bUVsZW1lbnRzKQpAQCAtNTgwLDcgKzU4
NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OnNldHVwRm9ybURhdGEoYm9v
bCBpc1Bvc3RSZXF1ZXN0KQogICAgIFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+IGVsZW1lbnRzID0g
bV9maXJzdFJlcXVlc3QuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKTsKICAgICBzaXplX3QgbnVtRWxl
bWVudHMgPSBlbGVtZW50cy5zaXplKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgbG9uZyBsb25nIG1h
eEN1cmxPZmZUID0gbV9jdXJsSGFuZGxlLm1heEN1cmxPZmZUKCk7CisgICAgc3RhdGljIGNvbnN0
IGxvbmcgbG9uZyBtYXhDdXJsT2ZmVCA9IG1fY3VybEhhbmRsZS0+bWF4Q3VybE9mZlQoKTsKIAog
ICAgIC8vIE9idGFpbiB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZm9ybSBkYXRhCiAgICAgY3VybF9v
ZmZfdCBzaXplID0gMDsKQEAgLTYwNiwxOCArNjEwLDE4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
dXJsRGVsZWdhdGU6OnNldHVwRm9ybURhdGEoYm9vbCBpc1Bvc3RSZXF1ZXN0KQogCiAgICAgLy8g
Y1VSTCBndWVzc2VzIHRoYXQgd2Ugd2FudCBjaHVua2VkIGVuY29kaW5nIGFzIGxvbmcgYXMgd2Ug
c3BlY2lmeSB0aGUgaGVhZGVyCiAgICAgaWYgKGNodW5rZWRUcmFuc2ZlcikKLSAgICAgICAgbV9j
dXJsSGFuZGxlLmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2Vk
Iik7CisgICAgICAgIG1fY3VybEhhbmRsZS0+YXBwZW5kUmVxdWVzdEhlYWRlcigiVHJhbnNmZXIt
RW5jb2Rpbmc6IGNodW5rZWQiKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGlzUG9zdFJlcXVl
c3QpCi0gICAgICAgICAgICBtX2N1cmxIYW5kbGUuc2V0UG9zdEZpZWxkTGFyZ2Uoc2l6ZSk7Cisg
ICAgICAgICAgICBtX2N1cmxIYW5kbGUtPnNldFBvc3RGaWVsZExhcmdlKHNpemUpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2N1cmxIYW5kbGUuc2V0SW5GaWxlU2l6ZUxhcmdlKHNpemUp
OworICAgICAgICAgICAgbV9jdXJsSGFuZGxlLT5zZXRJbkZpbGVTaXplTGFyZ2Uoc2l6ZSk7CiAg
ICAgfQogCiAgICAgbV9mb3JtRGF0YVN0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybURhdGFT
dHJlYW0+KCk7CiAgICAgbV9mb3JtRGF0YVN0cmVhbS0+c2V0SFRUUEJvZHkobV9maXJzdFJlcXVl
c3QuaHR0cEJvZHkoKSk7CiAKLSAgICBtX2N1cmxIYW5kbGUuc2V0UmVhZENhbGxiYWNrRnVuY3Rp
b24od2lsbFNlbmREYXRhQ2FsbGJhY2ssIHRoaXMpOworICAgIG1fY3VybEhhbmRsZS0+c2V0UmVh
ZENhbGxiYWNrRnVuY3Rpb24od2lsbFNlbmREYXRhQ2FsbGJhY2ssIHRoaXMpOwogfQogCiB2b2lk
IFJlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlOjphcHBseUF1dGhlbnRpY2F0aW9uKCkKQEAgLTYy
OCwyMCArNjMyLDIwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmFwcGx5QXV0
aGVudGljYXRpb24oKQogICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgdXNlciA9IG1faW5pdGlhbENyZWRlbnRpYWwudXNlcigpOwogICAgICAgICBwYXNz
d29yZCA9IG1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKTsKLSAgICAgICAgbV9jdXJsSGFu
ZGxlLmVuYWJsZUh0dHBBdXRoZW50aWNhdGlvbihDVVJMQVVUSF9CQVNJQyk7CisgICAgICAgIG1f
Y3VybEhhbmRsZS0+ZW5hYmxlSHR0cEF1dGhlbnRpY2F0aW9uKENVUkxBVVRIX0JBU0lDKTsKICAg
ICB9CiAKICAgICAvLyBJdCBzZWVtcyB3ZSBuZWVkIHRvIHNldCBDVVJMT1BUX1VTRVJQV0QgZXZl
biBpZiB1c2VybmFtZSBhbmQgcGFzc3dvcmQgaXMgZW1wdHkuCiAgICAgLy8gT3RoZXJ3aXNlIGNV
Ukwgd2lsbCBub3QgYXV0b21hdGljYWxseSBjb250aW51ZSB3aXRoIGEgbmV3IHJlcXVlc3QgYWZ0
ZXIgYSA0MDEgcmVzcG9uc2UuCiAKICAgICAvLyBjdXJsIENVUkxPUFRfVVNFUlBXRCBleHBlY3Rz
IHVzZXJuYW1lOnBhc3N3b3JkCi0gICAgbV9jdXJsSGFuZGxlLnNldEh0dHBBdXRoVXNlclBhc3Mo
dXNlciwgcGFzc3dvcmQpOworICAgIG1fY3VybEhhbmRsZS0+c2V0SHR0cEF1dGhVc2VyUGFzcyh1
c2VyLCBwYXNzd29yZCk7CiB9CiAKIE5ldHdvcmtMb2FkTWV0cmljcyBSZXNvdXJjZUhhbmRsZUN1
cmxEZWxlZ2F0ZTo6Z2V0TmV0d29ya0xvYWRNZXRyaWNzKCkKIHsKICAgICBOZXR3b3JrTG9hZE1l
dHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzOwotICAgIGlmIChhdXRvIG1ldHJpY3MgPSBtX2N1cmxI
YW5kbGUuZ2V0TmV0d29ya0xvYWRNZXRyaWNzKCkpCisgICAgaWYgKGF1dG8gbWV0cmljcyA9IG1f
Y3VybEhhbmRsZS0+Z2V0TmV0d29ya0xvYWRNZXRyaWNzKCkpCiAgICAgICAgIG5ldHdvcmtMb2Fk
TWV0cmljcyA9ICptZXRyaWNzOwogCiAgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljczsKQEAg
LTY0OSw3ICs2NTMsNyBAQCBOZXR3b3JrTG9hZE1ldHJpY3MgUmVzb3VyY2VIYW5kbGVDdXJsRGVs
ZWdhdGU6OmdldE5ldHdvcmtMb2FkTWV0cmljcygpCiAKIENVUkxjb2RlIFJlc291cmNlSGFuZGxl
Q3VybERlbGVnYXRlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogewotICAgIG1fc3Ns
VmVyaWZpZXIuc2V0Q3VybEhhbmRsZSgmbV9jdXJsSGFuZGxlKTsKKyAgICBtX3NzbFZlcmlmaWVy
LnNldEN1cmxIYW5kbGUobV9jdXJsSGFuZGxlLmdldCgpKTsKICAgICBtX3NzbFZlcmlmaWVyLnNl
dEhvc3ROYW1lKG1fZmlyc3RSZXF1ZXN0LnVybCgpLmhvc3QoKSk7CiAgICAgbV9zc2xWZXJpZmll
ci5zZXRTc2xDdHgoc3NsQ3R4KTsKIApAQCAtNjgyLDcgKzY4Niw3IEBAIHNpemVfdCBSZXNvdXJj
ZUhhbmRsZUN1cmxEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAg
ICAgKi8KICAgICBpZiAoaGVhZGVyID09IEF0b21pY1N0cmluZygiXHJcbiIpIHx8IGhlYWRlciA9
PSBBdG9taWNTdHJpbmcoIlxuIikpIHsKICAgICAgICAgbG9uZyBodHRwQ29kZSA9IDA7Ci0gICAg
ICAgIGlmIChhdXRvIGNvZGUgPSBtX2N1cmxIYW5kbGUuZ2V0UmVzcG9uc2VDb2RlKCkpCisgICAg
ICAgIGlmIChhdXRvIGNvZGUgPSBtX2N1cmxIYW5kbGUtPmdldFJlc3BvbnNlQ29kZSgpKQogICAg
ICAgICAgICAgaHR0cENvZGUgPSAqY29kZTsKIAogICAgICAgICBpZiAoIWh0dHBDb2RlKSB7CkBA
IC02OTYsMjUgKzcwMCwyNyBAQCBzaXplX3QgUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGU6OmRp
ZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuIGhlYWRl
ci5sZW5ndGgoKTsKICAgICAgICAgfQogCisgICAgICAgIFVSTCB1cmwgPSBtX2N1cmxIYW5kbGUt
PmdldEVmZmVjdGl2ZVVSTCgpOworCiAgICAgICAgIGxvbmcgbG9uZyBjb250ZW50TGVuZ3RoID0g
MDsKLSAgICAgICAgaWYgKGF1dG8gbGVuZ3RoID0gbV9jdXJsSGFuZGxlLmdldENvbnRlbnRMZW5n
dGgoKSkKKyAgICAgICAgaWYgKGF1dG8gbGVuZ3RoID0gbV9jdXJsSGFuZGxlLT5nZXRDb250ZW50
TGVuZ3RoKCkpCiAgICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gKmxlbmd0aDsKIAogICAgICAg
ICB1aW50MTZfdCBjb25uZWN0UG9ydCA9IDA7Ci0gICAgICAgIGlmIChhdXRvIHBvcnQgPSBtX2N1
cmxIYW5kbGUuZ2V0UHJpbWFyeVBvcnQoKSkKKyAgICAgICAgaWYgKGF1dG8gcG9ydCA9IG1fY3Vy
bEhhbmRsZS0+Z2V0UHJpbWFyeVBvcnQoKSkKICAgICAgICAgICAgIGNvbm5lY3RQb3J0ID0gKnBv
cnQ7CiAKICAgICAgICAgbG9uZyBhdmFpbGFibGVBdXRoID0gQ1VSTEFVVEhfTk9ORTsKLSAgICAg
ICAgaWYgKGF1dG8gYXV0aCA9IG1fY3VybEhhbmRsZS5nZXRIdHRwQXV0aEF2YWlsKCkpCisgICAg
ICAgIGlmIChhdXRvIGF1dGggPSBtX2N1cmxIYW5kbGUtPmdldEh0dHBBdXRoQXZhaWwoKSkKICAg
ICAgICAgICAgIGF2YWlsYWJsZUF1dGggPSAqYXV0aDsKIAogICAgICAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgICAgICBkaWRSZWNlaXZlQWxsSGVhZGVycyhodHRwQ29kZSwgY29udGVu
dExlbmd0aCwgY29ubmVjdFBvcnQsIGF2YWlsYWJsZUF1dGgpOworICAgICAgICAgICAgZGlkUmVj
ZWl2ZUFsbEhlYWRlcnModXJsLCBodHRwQ29kZSwgY29udGVudExlbmd0aCwgY29ubmVjdFBvcnQs
IGF2YWlsYWJsZUF1dGgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaHR0cENvZGUsIGNvbnRlbnRM
ZW5ndGgsIGNvbm5lY3RQb3J0LCBhdmFpbGFibGVBdXRoXSB7CisgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcHlVcmwgPSB1cmwu
aXNvbGF0ZWRDb3B5KCksIGh0dHBDb2RlLCBjb250ZW50TGVuZ3RoLCBjb25uZWN0UG9ydCwgYXZh
aWxhYmxlQXV0aF0gewogICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9oYW5k
bGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kaWRSZWNlaXZlQWxsSGVhZGVycyhodHRwQ29kZSwgY29udGVudExlbmd0aCwgY29u
bmVjdFBvcnQsIGF2YWlsYWJsZUF1dGgpOworICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpZFJlY2VpdmVBbGxIZWFkZXJzKGNvcHlVcmwsIGh0dHBDb2RlLCBjb250ZW50TGVuZ3RoLCBj
b25uZWN0UG9ydCwgYXZhaWxhYmxlQXV0aCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CkBAIC03NTAsNyArNzU2LDcgQEAgc2l6ZV90IFJlc291cmNlSGFuZGxlQ3Vy
bERlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAvLyB0aGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IGFwcGFyZW50bHkgaXMuIENVUkwg
d3JpdGVzIHRoZSBkYXRhCiAgICAgLy8gb2YgaHRtbCBwYWdlIGV2ZW4gaWYgaXQgaXMgYSByZWRp
cmVjdCB0aGF0IHdhcyBoYW5kbGVkIGludGVybmFsbHkKICAgICAvLyBjYW4gYmUgb2JzZXJ2ZWQg
ZS5nLiBvbiBnbWFpbC5jb20KLSAgICBpZiAoYXV0byBodHRwQ29kZSA9IG1fY3VybEhhbmRsZS5n
ZXRSZXNwb25zZUNvZGUoKSkgeworICAgIGlmIChhdXRvIGh0dHBDb2RlID0gbV9jdXJsSGFuZGxl
LT5nZXRSZXNwb25zZUNvZGUoKSkgewogICAgICAgICBpZiAoKmh0dHBDb2RlID49IDMwMCAmJiAq
aHR0cENvZGUgPCA0MDApCiAgICAgICAgICAgICByZXR1cm4gcmVjZWl2ZUJ5dGVzOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmxEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybERlbGVnYXRlLmgKaW5kZXggNWExZWJkNDU0MmMuLmM4NjQw
MDMzNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsRGVsZWdhdGUuaApAQCAtNjUsNyArNjUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmV0YWluKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxl
YXNlKCkgb3ZlcnJpZGU7CiAKLSAgICBDVVJMKiBoYW5kbGUoKSBvdmVycmlkZSB7IHJldHVybiBt
X2N1cmxIYW5kbGUuaGFuZGxlKCk7IH0KKyAgICBDVVJMKiBoYW5kbGUoKSBvdmVycmlkZSB7IHJl
dHVybiBtX2N1cmxIYW5kbGUgPyBtX2N1cmxIYW5kbGUtPmhhbmRsZSgpIDogbnVsbHB0cjsgfQog
ICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbXBsZXRl
VHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsVHJhbnNmZXIo
KSBvdmVycmlkZTsKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0dXBB
dXRoZW50aWNhdGlvbigpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQWxsSGVhZGVycyhsb25nIGh0
dHBDb2RlLCBsb25nIGxvbmcgY29udGVudExlbmd0aCwgdWludDE2X3QgY29ubmVjdFBvcnQsIGxv
bmcgYXZhaWxhYmxlSHR0cEF1dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZUFsbEhlYWRlcnMoVVJM
LCBsb25nIGh0dHBDb2RlLCBsb25nIGxvbmcgY29udGVudExlbmd0aCwgdWludDE2X3QgY29ubmVj
dFBvcnQsIGxvbmcgYXZhaWxhYmxlSHR0cEF1dGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNvbnRl
bnREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgaGFuZGxlTG9jYWxSZWNlaXZl
UmVzcG9uc2UoKTsKICAgICB2b2lkIHByZXBhcmVTZW5kRGF0YShjaGFyKiwgc2l6ZV90IGJsb2Nr
U2l6ZSwgc2l6ZV90IG51bWJlck9mQmxvY2tzKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9kZWZlcnNMb2FkaW5nOwogICAgIGJvb2wgbV9hZGRlZENhY2hlVmFsaWRh
dGlvbkhlYWRlcnMgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKLSAg
ICBDdXJsSGFuZGxlIG1fY3VybEhhbmRsZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VybEhhbmRs
ZT4gbV9jdXJsSGFuZGxlOwogICAgIEN1cmxTU0xWZXJpZmllciBtX3NzbFZlcmlmaWVyOwogICAg
IC8vIFVzZWQgYnkgYm90aCB0aHJlYWRzLgogICAgIGJvb2wgbV9pc1N5bmNSZXF1ZXN0IHsgZmFs
c2UgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>