<?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>206603</bug_id>
          
          <creation_ts>2020-01-22 11:29:51 -0800</creation_ts>
          <short_desc>[32-bits][JIT] Fix build issues.</short_desc>
          <delta_ts>2020-01-22 16:00:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206611</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1609645</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-01-22 11:29:51 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609730</commentid>
    <comment_count>1</comment_count>
      <attachid>388466</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-01-22 13:50:57 -0800</bug_when>
    <thetext>Created attachment 388466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609740</commentid>
    <comment_count>2</comment_count>
      <attachid>388466</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-22 14:05:43 -0800</bug_when>
    <thetext>Comment on attachment 388466
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609751</commentid>
    <comment_count>3</comment_count>
      <attachid>388466</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-01-22 14:28:48 -0800</bug_when>
    <thetext>Comment on attachment 388466
Patch

Thank you very much for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609767</commentid>
    <comment_count>4</comment_count>
      <attachid>388466</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 15:13:03 -0800</bug_when>
    <thetext>Comment on attachment 388466
Patch

Clearing flags on attachment: 388466

Committed r254947: &lt;https://trac.webkit.org/changeset/254947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609768</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 15:13:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609826</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-22 15:58:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/58814748&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388466</attachid>
            <date>2020-01-22 13:50:57 -0800</date>
            <delta_ts>2020-01-22 15:13:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206603-20200122185055.patch</filename>
            <type>text/plain</type>
            <size>69997</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZjJkOGUyMWU4Yjc0NmZlNjkzNzlmNWJlNDU0MWJkNjVmZWRlZjQ1Li41YTU2MmI4ZTI5YmNkYTAz
MzJkN2IyYmFjNTY0MzA0ZGE0YWExYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMjAtMDEtMjIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFszMi1iaXRzXVtKSVRdIEZpeCBidWlsZCBpc3N1ZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2MDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkanVz
dGluZyBwbGFjZXMgdG8gdXNlIFZpcnR1YWxSZWdpc3RlciBpbnN0ZWFkIG9mCisgICAgICAgIG9m
ZnNldCBkaXJlY3RseSwgdG8gbWFrZSAzMi1iaXQgSklUIGNvbXBpbGFibGUgYWdhaW4uIE9yaWdp
bmFsIGF1dGhvcnMKKyAgICAgICAgb2YgdGhpcyBwYXRjaCBhcmUgUGF1bG8gTWF0b3MgYW5kIEd1
aWxsYXVtZSBFbW9udC4KKworICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklU
QXJpdGhtZXRpYzMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZEFuZEp1bXApOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF91bnNpZ25lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QmluYXJ5RG91
YmxlT3ApOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRDYWxsUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldCk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVDYWxsRXZhbFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
T3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRMb2FkVGFnKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFBheWxvYWQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpJVDo6Z2V0
T3BlcmFuZENvbnN0YW50SW50KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2V0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX21vdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbmQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfbmV3X29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlk
ZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luc3RhbmNlb2Yp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2lzX2VtcHR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3Vu
ZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWRfb3JfbnVs
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
c19jZWxsX3dpdGhfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19vYmplY3Qp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX25vdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfanRydWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
amVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2puZXFfcHRyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9qZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcSk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcFN0cmljdEVxSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9l
cV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rv
X251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19udW1lcmljKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3N0cmluZyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BhcmVudF9zY29wZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3
aXRjaF9jaGFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlz
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfY2hlY2tfdGR6KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2hhc19z
dHJ1Y3R1cmVfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaGFzX2luZGV4
ZWRfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2hhc19pbmRleGVk
X3Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9kaXJlY3RfcG5hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1
dF9nZXR0ZXJfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3NldHRlcl9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVs
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlTdG9yYWdlUHV0
QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9p
ZF9kaXJlY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9kaXJl
Y3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfaW5fYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRSZXNvbHZlQ2xvc3VyZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEdldENsb3N1cmVWYXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21f
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9mcm9tX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0R2xvYmFsVmFyaWFibGUpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRQdXRHbG9iYWxWYXJpYWJsZUluZGlyZWN0KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0UHV0Q2xvc3VyZVZhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9f
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2ludGVybmFsX2ZpZWxkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNl
SklULmg6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90SlNDZWxs
KToKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkSW50MzIpOgorICAgICAg
ICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWREb3VibGUpOgorCiAyMDIwLTAxLTIyICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQXR0ZW1w
dCB0byBmaXggQnl0ZWNvZGVJbmRleCBoYW5kbGluZyBpbiAzMmJpdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggZjZmMDliOTJhMGNjZjI2NzBlYTdmNmMwZWZiMGJkMTcxNTIwNzU1MS4uNTVh
OTcwYmU2NzVhOWI3Mzc1YWY3YWFjNDg1ZDEzYjI2OGJiMDI2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCkBAIC00MTEsNyArNDExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGRvdWJs
ZSBnZXRPcGVyYW5kQ29uc3RhbnREb3VibGUoVmlydHVhbFJlZ2lzdGVyIHNyYyk7CiAKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBib29sIGdldE9wZXJhbmRDb25zdGFudEludChWaXJ0
dWFsUmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCBpbnQmIG9wLCBpbnQzMl90JiBj
b25zdGFudCk7CisgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW50KFZpcnR1YWxSZWdp
c3RlciBvcDEsIFZpcnR1YWxSZWdpc3RlciBvcDIsIFZpcnR1YWxSZWdpc3RlciYgb3AsIGludDMy
X3QmIGNvbnN0YW50KTsKIAogICAgICAgICB2b2lkIGVtaXRMb2FkVGFnKFZpcnR1YWxSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCB0YWcpOwogICAgICAgICB2b2lkIGVtaXRMb2FkUGF5bG9hZChWaXJ0dWFs
UmVnaXN0ZXIsIFJlZ2lzdGVySUQgcGF5bG9hZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKaW5kZXggMTYxMTQ2YjJlNTA4ZDc2NjczZDk5
YjYyNmRiNmRmMDRiZmQ0YTZiZS4uYzFkNGQxOWZhYWNmNzI5YTVjMzZhZTdlZTVmZjk5OTA3MWU0
MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMy
XzY0LmNwcApAQCAtNDgsOCArNDgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpbwogICAgIEp1
bXBMaXN0IG5vdEludDMyT3AyOwogCiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcD4oKTsKLSAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7Ci0gICAgaW50
IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBvcDEg
PSBieXRlY29kZS5tX2xoczsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AyID0gYnl0ZWNvZGUubV9y
aHM7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXRMYWJlbCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbGVzcy4KQEAgLTEwMiw4ICsx
MDIsOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5z
aWduZWRBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kaXRpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcD4oKTsKLSAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0KCk7Ci0gICAgaW50
IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBvcDEg
PSBieXRlY29kZS5tX2xoczsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AyID0gYnl0ZWNvZGUubV9y
aHM7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXRMYWJlbCk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkg
ewpAQCAtMTIyLDkgKzEyMiw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpl
bWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVj
dGlvbi0+YXM8T3A+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwot
ICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKLSAgICBpbnQgb3AyID0gYnl0
ZWNvZGUubV9yaHMub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2Rl
Lm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3AyID0gYnl0ZWNvZGUubV9yaHM7CiAKICAgICBpZiAoaXNPcGVyYW5k
Q29uc3RhbnRJbnQob3AxKSkgewogICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1QzLCByZWdUMik7
CkBAIC0xNDMsOCArMTQzLDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVt
aXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEluc3RydWN0aW9uICppbnN0cnVjdGlvbiwgRG91
YmxlQ29uZGl0aW9uLCBzaXplX3QgKEpJVF9PUEVSQVRJT04gKm9wZXJhdGlvbikoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpLCBib29sIGludmVydCwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIGludCBvcDEgPSBieXRlY29kZS5tX2xocy5v
ZmZzZXQoKTsKLSAgICBpbnQgb3AyID0gYnl0ZWNvZGUubV9yaHMub2Zmc2V0KCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1fbGhzOworICAgIFZpcnR1YWxSZWdpc3RlciBv
cDIgPSBieXRlY29kZS5tX3JoczsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGlu
c3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAogICAgIGxpbmtBbGxTbG93Q2Fz
ZXMoaXRlcik7CkBAIC0xNTgsOCArMTU4LDggQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1
bXBTbG93KGNvbnN0IEluc3RydWN0aW9uICppbnN0cnVjdGlvbiwgRG91YmxlQ29uZGl0aW8KIHZv
aWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BV
bnNpZ25lZD4oKTsKLSAgICBpbnQgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0g
ICAgaW50IG9wMSA9IGJ5dGVjb2RlLm1fb3BlcmFuZC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmVzdWx0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9
IGJ5dGVjb2RlLm1fb3BlcmFuZDsKICAgICAKICAgICBlbWl0TG9hZChvcDEsIHJlZ1QxLCByZWdU
MCk7CiAgICAgCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdW5zaWduZWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29w
X2luYyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5jPigpOwotICAgIGludCBzcmNE
c3QgPSBieXRlY29kZS5tX3NyY0RzdC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Jj
RHN0ID0gYnl0ZWNvZGUubV9zcmNEc3Q7CiAKICAgICBlbWl0TG9hZChzcmNEc3QsIHJlZ1QxLCBy
ZWdUMCk7CiAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbmMoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX2RlYyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVjPigpOwotICAgIGludCBzcmNEc3QgPSBi
eXRlY29kZS5tX3NyY0RzdC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjRHN0ID0g
Ynl0ZWNvZGUubV9zcmNEc3Q7CiAKICAgICBlbWl0TG9hZChzcmNEc3QsIHJlZ1QxLCByZWdUMCk7
CiAKQEAgLTIwMCw4ICsyMDAsOCBAQCB2b2lkIEpJVDo6ZW1pdEJpbmFyeURvdWJsZU9wKGNvbnN0
IEluc3RydWN0aW9uICppbnN0cnVjdGlvbiwgT3BlcmFuZFR5cGVzIHR5cGVzLAogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgaW50IG9wY29kZUlEID0gT3A6
Om9wY29kZUlEOwogICAgIGludCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBieXRl
Y29kZS5tX3RhcmdldExhYmVsKTsKLSAgICBpbnQgb3AxID0gYnl0ZWNvZGUubV9saHMub2Zmc2V0
KCk7Ci0gICAgaW50IG9wMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOworICAgIFZpcnR1YWxS
ZWdpc3RlciBvcDEgPSBieXRlY29kZS5tX2xoczsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AyID0g
Ynl0ZWNvZGUubV9yaHM7CiAKICAgICBpZiAoIW5vdEludDMyT3AxLmVtcHR5KCkpIHsKICAgICAg
ICAgLy8gRG91YmxlIGNhc2UgMTogT3AxIGlzIG5vdCBpbnQzMjsgT3AyIGlzIHVua25vd24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZDcxN2UxODRk
MmM1OTk5YWFiMmNlYWY0MzgwMmYxNjZiODBlY2QxOC4uYTMyMDgxY2I2OWRiMDEzZjc5M2VjNDI1
YjE1OTZhY2Y5NGViM2ZhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBK
SVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1p
dFN0b3JlKGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpLCByZWdUMSwgcmVnVDApOworICAgIGVtaXRT
dG9yZShieXRlY29kZS5tX2RzdCwgcmVnVDEsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfcmV0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BSZXQ+KCk7Ci0gICAgaW50IHZh
bHVlID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFs
dWUgPSBieXRlY29kZS5tX3ZhbHVlOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdU
MCk7CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9w
JiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3Rh
dGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOwogCiAgICAgaWYgKE9wOjpvcGNvZGVJRCA9
PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBlbWl0TG9hZChy
ZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDAp
LCByZWdUMCwgcmVnVDEpOworICAgICAgICBlbWl0TG9hZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0
ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSksIHJl
Z1QwLCByZWdUMSk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7
CiAgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCByZWdUMSk7CiAgICAgICAgIHN0b3JlMzIocmVnVDEsIG1ldGFkYXRhLm1fY2FsbExpbmtJ
bmZvLm1fYXJyYXlQcm9maWxlLmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CkBAIC0x
NzYsOCArMTc2LDggQEAgc3RkOjplbmFibGVfaWZfdDwKIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUo
Y29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qIGluZm8pCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBPcDo6b3Bjb2RlSUQ7Ci0gICAgaW50IHRoaXNWYWx1ZSA9IGJ5dGVjb2RlLm1f
dGhpc1ZhbHVlLm9mZnNldCgpOwotICAgIGludCBhcmd1bWVudHMgPSBieXRlY29kZS5tX2FyZ3Vt
ZW50cy5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1ZhbHVlID0gYnl0ZWNvZGUu
bV90aGlzVmFsdWU7CisgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50cyA9IGJ5dGVjb2RlLm1f
YXJndW1lbnRzOwogICAgIGludCBmaXJzdEZyZWVSZWdpc3RlciA9IGJ5dGVjb2RlLm1fZmlyc3RG
cmVlLm9mZnNldCgpOwogICAgIGludCBmaXJzdFZhckFyZ09mZnNldCA9IGJ5dGVjb2RlLm1fZmly
c3RWYXJBcmc7CiAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUNhbGxFdmFs
U2xvd0Nhc2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhcwog
ICAgIGluZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwsIENvZGVPcmlnaW4obV9ieXRl
Y29kZUluZGV4KSwgcmVnVDApOwogCiAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLWJ5dGVjb2Rl
Lm1fYXJndjsKLSAgICBpbnQgY2FsbGVlID0gYnl0ZWNvZGUubV9jYWxsZWUub2Zmc2V0KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1fY2FsbGVlOwogCiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIHsK
ICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIGludCBjYWxsZWUgPSBieXRlY29kZS5tX2Nh
bGxlZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gYnl0ZWNvZGUubV9j
YWxsZWU7CiAKICAgICAvKiBDYWxsZXIgYWx3YXlzOgogICAgICAgICAtIFVwZGF0ZXMgY2FsbEZy
YW1lUmVnaXN0ZXIgdG8gY2FsbGVlIGNhbGxGcmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKaW5kZXggYTdmZmE0M2Q4M2IxNDRjYTBhYmY4Y2YzY2ZlYTlhODQ5ZmY4Zjcw
Yy4uYTJiNTc3YzZiMGExZTdiZGE1NjE4M2Q5Njc5NDkwM2IyNjc4MjNlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTM3OSwyMSArMzc5LDIxIEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBKSVQ6OmVtaXRJbml0UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGRzdCkKIGlu
bGluZSB2b2lkIEpJVDo6ZW1pdExvYWRUYWcoVmlydHVhbFJlZ2lzdGVyIHJlZywgUmVnaXN0ZXJJ
RCB0YWcpCiB7CiAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpIHsKLSAgICAgICAgbW92ZShJbW0z
MihnZXRDb25zdGFudE9wZXJhbmQoaW5kZXgpLnRhZygpKSwgdGFnKTsKKyAgICAgICAgbW92ZShJ
bW0zMihnZXRDb25zdGFudE9wZXJhbmQocmVnKS50YWcoKSksIHRhZyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBsb2FkMzIodGFnRm9yKGluZGV4KSwgdGFnKTsKKyAgICBsb2FkMzIo
dGFnRm9yKHJlZyksIHRhZyk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWRQYXlsb2Fk
KFZpcnR1YWxSZWdpc3RlciByZWcsIFJlZ2lzdGVySUQgcGF5bG9hZCkKIHsKICAgICBpZiAocmVn
LmlzQ29uc3RhbnQoKSkgewotICAgICAgICBtb3ZlKEltbTMyKGdldENvbnN0YW50T3BlcmFuZChp
bmRleCkucGF5bG9hZCgpKSwgcGF5bG9hZCk7CisgICAgICAgIG1vdmUoSW1tMzIoZ2V0Q29uc3Rh
bnRPcGVyYW5kKHJlZykucGF5bG9hZCgpKSwgcGF5bG9hZCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBsb2FkMzIocGF5bG9hZEZvcihpbmRleCksIHBheWxvYWQpOworICAgIGxvYWQz
MihwYXlsb2FkRm9yKHJlZyksIHBheWxvYWQpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRM
b2FkKGNvbnN0IEpTVmFsdWUmIHYsIFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQp
CkBAIC00MDIsNyArNDAyLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZChjb25zdCBKU1Zh
bHVlJiB2LCBSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXlsb2FkKQogICAgIG1vdmUoSW1t
MzIodi50YWcoKSksIHRhZyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXQo
VmlydHVhbFJlZ2lzdGVyIHNyYywgSlNWYWx1ZVJlZ3MgZHN0KQorQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgc3JjLCBKU1ZhbHVl
UmVncyBkc3QpCiB7CiAgICAgZW1pdExvYWQoc3JjLCBkc3QudGFnR1BSKCksIGRzdC5wYXlsb2Fk
R1BSKCkpOwogfQpAQCAtNTA1LDcgKzUwNSw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3Jl
KFZpcnR1YWxSZWdpc3RlciByZWcsIGNvbnN0IEpTVmFsdWUgY29uc3RhbnQsIFJlZ2lzdGVyCiAK
IGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdp
c3RlciByZWcpCiB7Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZSh2
aXJ0dWFsUmVnaXN0ZXJJbmRleCkpIHsKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90
SW1tZWRpYXRlKHJlZykpIHsKICAgICAgICAgaWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAg
ICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBlbHNlCkBAIC01MTUsNyArNTE1LDcg
QEAgaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJl
Z2lzdGVyIHJlZykKIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoVmlydHVhbFJlZ2lzdGVyIHJlZywgUmVnaXN0ZXJJRCB0YWcpCiB7Ci0gICAgaWYgKCFtX2Nv
ZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZSh2aXJ0dWFsUmVnaXN0ZXJJbmRleCkpIHsKKyAg
ICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKHJlZykpIHsKICAgICAgICAg
aWYgKHJlZy5pc0NvbnN0YW50KCkpCiAgICAgICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwog
ICAgICAgICBlbHNlCkBAIC01MjgsNyArNTI4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6
aXNPcGVyYW5kQ29uc3RhbnRJbnQoVmlydHVhbFJlZ2lzdGVyIHNyYykKICAgICByZXR1cm4gc3Jj
LmlzQ29uc3RhbnQoKSAmJiBnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5pc0ludDMyKCk7CiB9CiAK
LUFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmdldE9wZXJhbmRDb25zdGFudEludChWaXJ0dWFsUmVn
aXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCBpbnQmIG9wLCBpbnQzMl90JiBjb25zdGFu
dCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmdldE9wZXJhbmRDb25zdGFudEludChWaXJ0dWFs
UmVnaXN0ZXIgb3AxLCBWaXJ0dWFsUmVnaXN0ZXIgb3AyLCBWaXJ0dWFsUmVnaXN0ZXImIG9wLCBp
bnQzMl90JiBjb25zdGFudCkKIHsKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkg
ewogICAgICAgICBjb25zdGFudCA9IGdldENvbnN0YW50T3BlcmFuZChvcDEpLmFzSW50MzIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBh
NzY3YzkxNzhhNWE2NDg5MmJlMDBiZGY3NTQ2NTk1MzEwYjMyYzQ5Li5jZDY2N2IyZTU4NzgyMGUz
NzM1Y2QzODEzOTM2Zjk2YTk4Yzc5NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE1v
dj4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNy
YyA9IGJ5dGVjb2RlLm1fc3JjLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV9zcmM7
CiAgICAgCi0gICAgaWYgKG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMp
KQorICAgIGlmIChzcmMuaXNDb25zdGFudCgpKQogICAgICAgICBlbWl0U3RvcmUoZHN0LCBnZXRD
b25zdGFudE9wZXJhbmQoc3JjKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGVtaXRMb2FkKHNyYywg
cmVnVDEsIHJlZ1QwKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgQVNTRVJUKHJldHVy
blZhbHVlR1BSICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEVuZD4oKTsKLSAgICBlbWl0TG9hZChieXRlY29kZS5tX3Zh
bHVlLm9mZnNldCgpLCByZWdUMSwgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRMb2FkKGJ5dGVj
b2RlLm1fdmFsdWUsIHJlZ1QxLCByZXR1cm5WYWx1ZUdQUik7CiAgICAgZW1pdFJlc3RvcmVDYWxs
ZWVTYXZlcygpOwogICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgcmV0KCk7CkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVz
dWx0UmVnLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvciksIGFsbG9jYXRvclJlZywg
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2hSZWcsIHNsb3dDYXNl
cyk7CiAgICAgICAgIGVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHN0cnVj
dHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7
Ci0gICAgICAgIGVtaXRTdG9yZUNlbGwoYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCksIHJlc3VsdFJl
Zyk7CisgICAgICAgIGVtaXRTdG9yZUNlbGwoYnl0ZWNvZGUubV9kc3QsIHJlc3VsdFJlZyk7CiAg
ICAgfQogfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19v
YmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIAog
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmV3T2JqZWN0Pigp
OwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwot
ICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtZXRh
ZGF0YS5tX29iamVjdEFsbG9jYXRpb25Qcm9maWxlLnN0cnVjdHVyZSgpOwogICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3T2JqZWN0LCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgc3RydWN0dXJl
KTsKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTE3LDkgKzEx
Nyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiB2b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlk
ZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BPdmVycmlkZXNI
YXNJbnN0YW5jZT4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0g
ICAgaW50IGNvbnN0cnVjdG9yID0gYnl0ZWNvZGUubV9jb25zdHJ1Y3Rvci5vZmZzZXQoKTsKLSAg
ICBpbnQgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VWYWx1ZS5vZmZz
ZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmly
dHVhbFJlZ2lzdGVyIGNvbnN0cnVjdG9yID0gYnl0ZWNvZGUubV9jb25zdHJ1Y3RvcjsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5dGVjb2RlLm1faGFzSW5zdGFuY2VW
YWx1ZTsKIAogICAgIGVtaXRMb2FkUGF5bG9hZChoYXNJbnN0YW5jZVZhbHVlLCByZWdUMCk7CiAg
ICAgLy8gV2UgZG9uJ3QganVtcCBpZiB3ZSBrbm93IHdoYXQgU3ltYm9sLmhhc0luc3RhbmNlIHdv
dWxkIGRvLgpAQCAtMTQ1LDkgKzE0NSw5IEBAIHZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19o
YXNfaW5zdGFuY2UoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQg
SklUOjplbWl0X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElu
c3RhbmNlb2Y+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAg
IGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7Ci0gICAgaW50IHByb3RvID0g
Ynl0ZWNvZGUubV9wcm90b3R5cGUub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9
IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1f
dmFsdWU7CisgICAgVmlydHVhbFJlZ2lzdGVyIHByb3RvID0gYnl0ZWNvZGUubV9wcm90b3R5cGU7
CiAKICAgICAvLyBMb2FkIHRoZSBvcGVyYW5kcyBpbnRvIHJlZ2lzdGVycy4KICAgICAvLyBXZSB1
c2UgcmVnVDAgZm9yIGJhc2VWYWwgc2luY2Ugd2Ugd2lsbCBiZSBkb25lIHdpdGggdGhpcyBmaXJz
dCwgYW5kIHdlIGNhbiB0aGVuIHVzZSBpdCBmb3IgdGhlIHJlc3VsdC4KQEAgLTE4Miw5ICsxODIs
OSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7
CiAgICAgCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbnN0
YW5jZW9mPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBp
bnQgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwotICAgIGludCBwcm90byA9IGJ5
dGVjb2RlLm1fcHJvdG90eXBlLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3Zh
bHVlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm90byA9IGJ5dGVjb2RlLm1fcHJvdG90eXBlOwog
ICAgIAogICAgIEpJVEluc3RhbmNlT2ZHZW5lcmF0b3ImIGdlbiA9IG1faW5zdGFuY2VPZnNbbV9p
bnN0YW5jZU9mSW5kZXgrK107CiAgICAgCkBAIC0yMDAsMTAgKzIwMCwxMCBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVgogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluc3RhbmNlb2ZDdXN0b20+KCk7Ci0g
ICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAgIGludCB2YWx1ZSA9IGJ5
dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7Ci0gICAgaW50IGNvbnN0cnVjdG9yID0gYnl0ZWNvZGUu
bV9jb25zdHJ1Y3Rvci5vZmZzZXQoKTsKLSAgICBpbnQgaGFzSW5zdGFuY2VWYWx1ZSA9IGJ5dGVj
b2RlLm1faGFzSW5zdGFuY2VWYWx1ZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY29uc3RydWN0b3IgPSBieXRlY29kZS5tX2Nv
bnN0cnVjdG9yOworICAgIFZpcnR1YWxSZWdpc3RlciBoYXNJbnN0YW5jZVZhbHVlID0gYnl0ZWNv
ZGUubV9oYXNJbnN0YW5jZVZhbHVlOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdU
MCk7CiAgICAgZW1pdExvYWRQYXlsb2FkKGNvbnN0cnVjdG9yLCByZWdUMik7CkBAIC0yMTUsOCAr
MjE1LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFYKIHZvaWQgSklUOjplbWl0X29wX2lzX2Vt
cHR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc0VtcHR5PigpOwotICAgIGludCBk
c3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5t
X29wZXJhbmQub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKICAg
ICAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBjb21wYXJlMzIoRXF1
YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyksIHJlZ1QwKTsK
QEAgLTIyNyw4ICsyMjcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0eShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZp
bmVkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJc1VuZGVmaW5lZD4oKTsKLSAgICBp
bnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHZhbHVlID0gYnl0ZWNv
ZGUubV9vcGVyYW5kLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQ7
CiAgICAgCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0Nl
bGwgPSBicmFuY2hJZkNlbGwocmVnVDEpOwpAQCAtMjU1LDggKzI1NSw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2lzX3VuZGVmaW5lZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcElzVW5kZWZpbmVkT3JOdWxsPigpOwotICAgIGludCBkc3QgPSBieXRl
Y29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQu
b2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAg
IFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKIAogICAgIGVtaXRM
b2FkVGFnKHZhbHVlLCByZWdUMCk7CiAgICAgc3RhdGljX2Fzc2VydCgoSlNWYWx1ZTo6VW5kZWZp
bmVkVGFnICsgMSA9PSBKU1ZhbHVlOjpOdWxsVGFnKSAmJiAoSlNWYWx1ZTo6TnVsbFRhZyAmIDB4
MSksICIiKTsKQEAgLTI2OCw4ICsyNjgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmlu
ZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfYm9vbGVhbihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNC
b29sZWFuPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBp
bnQgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5
dGVjb2RlLm1fb3BlcmFuZDsKICAgICAKICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwog
ICAgIGNvbXBhcmUzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFu
VGFnKSwgcmVnVDApOwpAQCAtMjc5LDggKzI3OSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2Jv
b2xlYW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjpl
bWl0X29wX2lzX251bWJlcihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNOdW1iZXI+
KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAgIGludCB2YWx1
ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUu
bV9vcGVyYW5kOwogICAgIAogICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7CiAgICAgYWRk
MzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CkBAIC0yOTEsOCArMjkxLDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSXNDZWxsV2l0aFR5cGU+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1f
ZHN0Lm9mZnNldCgpOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFuZC5vZmZzZXQo
KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV9vcGVyYW5kOwogICAgIGludCB0eXBlID0gYnl0
ZWNvZGUubV90eXBlOwogCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CkBAIC0z
MTEsOCArMzExLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX2lzX29i
amVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSXNPYmplY3Q+KCk7Ci0gICAgaW50
IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fb3BlcmFuZC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV9vcGVyYW5kOwog
CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwg
PSBicmFuY2hJZk5vdENlbGwocmVnVDEpOwpAQCAtMzMwLDggKzMzMCw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2lzX29iamVjdChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BUb1ByaW1pdGl2ZT4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0
KCk7Ci0gICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fc3JjLm9mZnNldCgpOworICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0g
Ynl0ZWNvZGUubV9zcmM7CiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKQEAg
LTM2Myw4ICszNjMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcm9wZXJ0eV9rZXkoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX3NldF9m
dW5jdGlvbl9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRGdW5jdGlvbk5h
bWU+KCk7Ci0gICAgaW50IGZ1bmMgPSBieXRlY29kZS5tX2Z1bmN0aW9uLm9mZnNldCgpOwotICAg
IGludCBuYW1lID0gYnl0ZWNvZGUubV9uYW1lLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBmdW5jID0gYnl0ZWNvZGUubV9mdW5jdGlvbjsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbmFtZSA9
IGJ5dGVjb2RlLm1fbmFtZTsKICAgICBlbWl0TG9hZFBheWxvYWQoZnVuYywgcmVnVDEpOwogICAg
IGVtaXRMb2FkKG5hbWUsIHJlZ1QzLCByZWdUMik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TZXRGdW5jdGlvbk5hbWUsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgcmVnVDEsIEpT
VmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOwpAQCAtMzczLDggKzM3Myw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX3NldF9mdW5jdGlvbl9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9ub3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcE5vdD4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAg
aW50IHNyYyA9IGJ5dGVjb2RlLm1fb3BlcmFuZC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVj
b2RlLm1fb3BlcmFuZDsKIAogICAgIGVtaXRMb2FkVGFnKHNyYywgcmVnVDApOwogCkBAIC0zODgs
NyArMzg4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEpmYWxzZT4oKTsKLSAgICBpbnQgY29uZCA9IGJ5dGVjb2RlLm1fY29u
ZGl0aW9uLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBjb25kID0gYnl0ZWNvZGUubV9j
b25kaXRpb247CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1
Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAgICAgZW1pdExvYWQoY29uZCwgcmVn
VDEsIHJlZ1QwKTsKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29w
X2p0cnVlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BKdHJ1ZT4oKTsKLSAgICBpbnQg
Y29uZCA9IGJ5dGVjb2RlLm1fY29uZGl0aW9uLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBjb25kID0gYnl0ZWNvZGUubV9jb25kaXRpb247CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVt
cFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwogCiAg
ICAgZW1pdExvYWQoY29uZCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9qdHJ1ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEplcU51bGw+KCk7Ci0gICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAgICAgdW5zaWdu
ZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFy
Z2V0TGFiZWwpOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwpAQCAtNDQzLDcg
KzQ0Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcEpuZXFOdWxsPigpOwotICAgIGludCBzcmMgPSBieXRlY29k
ZS5tX3ZhbHVlLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBieXRlY29kZS5t
X3ZhbHVlOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVudEluc3RydWN0
aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEs
IHJlZ1QwKTsKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29w
X2p1bmRlZmluZWRfb3JfbnVsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSnVuZGVm
aW5lZE9yTnVsbD4oKTsKLSAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgp
OworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAgICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1f
dGFyZ2V0TGFiZWwpOwogCiAgICAgZW1pdExvYWRUYWcodmFsdWUsIHJlZ1QwKTsKQEAgLTQ4MSw3
ICs0ODEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qdW5kZWZpbmVkX29yX251bGwoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX2pudW5kZWZp
bmVkX29yX251bGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEpudW5kZWZpbmVkT3JO
dWxsPigpOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKICAgICB1bnNpZ25lZCB0
YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRM
YWJlbCk7CiAKICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwpAQCAtNDk0LDggKzQ5NCw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BKbmVxUHRyPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgIGludCBzcmMgPSBieXRlY29kZS5tX3ZhbHVlLm9mZnNldCgpOwot
ICAgIEpTVmFsdWUgc3BlY2lhbFBvaW50ZXIgPSBnZXRDb25zdGFudE9wZXJhbmQoYnl0ZWNvZGUu
bV9zcGVjaWFsUG9pbnRlci5vZmZzZXQoKSk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5
dGVjb2RlLm1fdmFsdWU7CisgICAgSlNWYWx1ZSBzcGVjaWFsUG9pbnRlciA9IGdldENvbnN0YW50
T3BlcmFuZChieXRlY29kZS5tX3NwZWNpYWxQb2ludGVyKTsKICAgICBBU1NFUlQoc3BlY2lhbFBv
aW50ZXIuaXNDZWxsKCkpOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoY3VycmVu
dEluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKIApAQCAtNTEyLDkgKzUxMiw5
IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BF
cT4oKTsKIAotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQg
c3JjMSA9IGJ5dGVjb2RlLm1fbGhzLm9mZnNldCgpOwotICAgIGludCBzcmMyID0gYnl0ZWNvZGUu
bV9yaHMub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OworICAgIFZpcnR1YWxSZWdpc3RlciBzcmMxID0gYnl0ZWNvZGUubV9saHM7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHNyYzIgPSBieXRlY29kZS5tX3JoczsKIAogICAgIGVtaXRMb2FkMihzcmMxLCBy
ZWdUMSwgcmVnVDAsIHNyYzIsIHJlZ1QzLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMykpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2VxKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEVxPigpOwotICAgIGludCBkc3QgPSBi
eXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Q7CiAKICAgICBKdW1wTGlzdCBzdG9yZVJlc3VsdDsKICAgICBKdW1wTGlzdCBnZW5l
cmljQ2FzZTsKQEAgLTU1Nyw4ICs1NTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXEoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcEplcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBq
dW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7Ci0g
ICAgaW50IHNyYzEgPSBieXRlY29kZS5tX2xocy5vZmZzZXQoKTsKLSAgICBpbnQgc3JjMiA9IGJ5
dGVjb2RlLm1fcmhzLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBzcmMxID0gYnl0ZWNv
ZGUubV9saHM7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNyYzIgPSBieXRlY29kZS5tX3JoczsKIAog
ICAgIGVtaXRMb2FkMihzcmMxLCByZWdUMSwgcmVnVDAsIHNyYzIsIHJlZ1QzLCByZWdUMik7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMykpOwpAQCAtNjAz
LDkgKzYwMyw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qZXEoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiB2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcE5lcT4oKTsKLSAgICBpbnQgZHN0ID0g
Ynl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNyYzEgPSBieXRlY29kZS5tX2xocy5v
ZmZzZXQoKTsKLSAgICBpbnQgc3JjMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNldCgpOworICAgIFZp
cnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
c3JjMSA9IGJ5dGVjb2RlLm1fbGhzOworICAgIFZpcnR1YWxSZWdpc3RlciBzcmMyID0gYnl0ZWNv
ZGUubV9yaHM7CiAKICAgICBlbWl0TG9hZDIoc3JjMSwgcmVnVDEsIHJlZ1QwLCBzcmMyLCByZWdU
MywgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgcmVn
VDMpKTsKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcE5lcT4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0
KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwogCiAgICAgSnVt
cExpc3Qgc3RvcmVSZXN1bHQ7CiAgICAgSnVtcExpc3QgZ2VuZXJpY0Nhc2U7CkBAIC02NDksOCAr
NjQ5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSm5lcT4oKTsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRMYWJlbCk7Ci0gICAgaW50IHNyYzEgPSBieXRl
Y29kZS5tX2xocy5vZmZzZXQoKTsKLSAgICBpbnQgc3JjMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNl
dCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBzcmMxID0gYnl0ZWNvZGUubV9saHM7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHNyYzIgPSBieXRlY29kZS5tX3JoczsKIAogICAgIGVtaXRMb2FkMihzcmMx
LCByZWdUMSwgcmVnVDAsIHNyYzIsIHJlZ1QzLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMykpOwpAQCAtNjcxLDkgKzY3MSw5IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5cGUgdHlwZSkK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAg
ICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNyYzEgPSBieXRl
Y29kZS5tX2xocy5vZmZzZXQoKTsKLSAgICBpbnQgc3JjMiA9IGJ5dGVjb2RlLm1fcmhzLm9mZnNl
dCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgc3JjMSA9IGJ5dGVjb2RlLm1fbGhzOworICAgIFZpcnR1YWxSZWdpc3RlciBz
cmMyID0gYnl0ZWNvZGUubV9yaHM7CiAKICAgICBlbWl0TG9hZDIoc3JjMSwgcmVnVDEsIHJlZ1Qw
LCBzcmMyLCByZWdUMywgcmVnVDIpOwogCkBAIC03MTIsOCArNzEyLDggQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcFN0cmljdEVxSnVtcChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBDb21waWxlT3AKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcD4oKTsKICAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24s
IGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwotICAgIGludCBzcmMxID0gYnl0ZWNvZGUubV9saHMu
b2Zmc2V0KCk7Ci0gICAgaW50IHNyYzIgPSBieXRlY29kZS5tX3Jocy5vZmZzZXQoKTsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgc3JjMSA9IGJ5dGVjb2RlLm1fbGhzOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBzcmMyID0gYnl0ZWNvZGUubV9yaHM7CiAKICAgICBlbWl0TG9hZDIoc3JjMSwgcmVnVDEsIHJl
Z1QwLCBzcmMyLCByZWdUMywgcmVnVDIpOwogCkBAIC03NjgsOCArNzY4LDggQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2puc3RyaWN0ZXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEVxTnVsbD4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qu
b2Zmc2V0KCk7Ci0gICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fb3BlcmFuZC5vZmZzZXQoKTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHNyYyA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEs
IHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKTsK
QEAgLTgwMCw4ICs4MDAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wTmVxTnVsbD4oKTsKLSAgICBpbnQgZHN0ID0g
Ynl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IHNyYyA9IGJ5dGVjb2RlLm1fb3BlcmFu
ZC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIHNyYyA9IGJ5dGVjb2RlLm1fb3BlcmFuZDsKIAogICAgIGVtaXRM
b2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoSWZO
b3RDZWxsKHJlZ1QxKTsKQEAgLTgzNCw3ICs4MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90aHJv
dyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVGhyb3c+KCk7CiAgICAgQVNTRVJUKHJlZ1Qw
ID09IHJldHVyblZhbHVlR1BSKTsKICAgICBjb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcih2bSgpLnRvcEVudHJ5RnJhbWUpOwotICAgIGVtaXRMb2FkKGJ5dGVjb2Rl
Lm1fdmFsdWUub2Zmc2V0KCksIHJlZ1QxLCByZWdUMCk7CisgICAgZW1pdExvYWQoYnl0ZWNvZGUu
bV92YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uTm9FeGNlcHRpb25DaGVj
ayhvcGVyYXRpb25UaHJvdywgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApKTsKICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwogfQpA
QCAtODQyLDggKzg0Miw4IEBAIHZvaWQgSklUOjplbWl0X29wX3Rocm93KGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1iZXIoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvTnVtYmVyPigpOwotICAgIGludCBkc3QgPSBi
eXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgc3JjID0gYnl0ZWNvZGUubV9vcGVyYW5k
Lm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV9vcGVyYW5kOwogCiAgICAgZW1pdExv
YWQoc3JjLCByZWdUMSwgcmVnVDApOwogCkBAIC04NTksOCArODU5LDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdG9fbnVtYmVyKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2
b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BUb051bWVyaWM+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwot
ICAgIGludCBzcmMgPSBieXRlY29kZS5tX29wZXJhbmQub2Zmc2V0KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBzcmMgPSBi
eXRlY29kZS5tX29wZXJhbmQ7CiAgICAgSlNWYWx1ZVJlZ3MgYXJndW1lbnRWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKTsKIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKQEAgLTg4MSw4
ICs4ODEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19udW1lcmljKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF90b19zdHJpbmcoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvU3RyaW5nPigpOwotICAgIGludCBkc3QgPSBieXRl
Y29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgc3JjID0gYnl0ZWNvZGUubV9vcGVyYW5kLm9m
ZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNvZGUubV9vcGVyYW5kOwogCiAgICAgZW1pdExvYWQo
c3JjLCByZWdUMSwgcmVnVDApOwogCkBAIC04OTYsOCArODk2LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fc3RyaW5nKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lk
IEpJVDo6ZW1pdF9vcF90b19vYmplY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRv
T2JqZWN0PigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBp
bnQgc3JjID0gYnl0ZWNvZGUubV9vcGVyYW5kLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc3JjID0gYnl0ZWNv
ZGUubV9vcGVyYW5kOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCkBAIC05
MzUsMTQgKzkzNSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEFk
ZHJlc3MocmVnVDMsIFZNOjpleGNlcHRpb25PZmZzZXQoKSkpOwogCi0gICAgdW5zaWduZWQgZXhj
ZXB0aW9uID0gYnl0ZWNvZGUubV9leGNlcHRpb24ub2Zmc2V0KCk7Ci0gICAgZW1pdFN0b3JlKGV4
Y2VwdGlvbiwgcmVnVDEsIHJlZ1QyKTsKKyAgICBlbWl0U3RvcmUoYnl0ZWNvZGUubV9leGNlcHRp
b24sIHJlZ1QxLCByZWdUMik7CiAKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgRXhjZXB0aW9u
Ojp2YWx1ZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxv
YWQpKSwgcmVnVDApOwogICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBFeGNlcHRpb246OnZhbHVl
T2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlZ1Qx
KTsKIAotICAgIHVuc2lnbmVkIHRocm93blZhbHVlID0gYnl0ZWNvZGUubV90aHJvd25WYWx1ZS5v
ZmZzZXQoKTsKLSAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CisgICAg
ZW1pdFN0b3JlKGJ5dGVjb2RlLm1fdGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiAKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAvLyBGSVhNRTogY29uc2lkZXIgaW5saW5lIGNhY2hpbmcgdGhl
IHByb2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcKQEAgLTk3NywxMCArOTc1LDEw
IEBAIHZvaWQgSklUOjplbWl0X29wX2lkZW50aXR5X3dpdGhfcHJvZmlsZShjb25zdCBJbnN0cnVj
dGlvbiopCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRQYXJlbnRTY29wZT4oKTsKLSAgICBpbnQgY3VycmVudFNjb3Bl
ID0gYnl0ZWNvZGUubV9zY29wZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY3VycmVu
dFNjb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudFNj
b3BlLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU1Njb3BlOjpvZmZzZXRP
Zk5leHQoKSksIHJlZ1QwKTsKLSAgICBlbWl0U3RvcmVDZWxsKGJ5dGVjb2RlLm1fZHN0Lm9mZnNl
dCgpLCByZWdUMCk7CisgICAgZW1pdFN0b3JlQ2VsbChieXRlY29kZS5tX2RzdCwgcmVnVDApOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC05ODgsNyArOTg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dp
dGNoX2ltbShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNoSW1tPigpOwogICAgIHNp
emVfdCB0YWJsZUluZGV4ID0gYnl0ZWNvZGUubV90YWJsZUluZGV4OwogICAgIHVuc2lnbmVkIGRl
ZmF1bHRPZmZzZXQgPSBqdW1wVGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV9k
ZWZhdWx0T2Zmc2V0KTsKLSAgICB1bnNpZ25lZCBzY3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0
aW5lZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NydXRpbmVlID0gYnl0ZWNvZGUu
bV9zY3J1dGluZWU7CiAKICAgICAvLyBjcmVhdGUganVtcCB0YWJsZSBmb3Igc3dpdGNoIGRlc3Rp
bmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgogICAgIFNpbXBsZUp1bXBUYWJs
ZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7
CkBAIC0xMDA1LDcgKzEwMDMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcihjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wU3dpdGNoQ2hhcj4oKTsKICAgICBzaXplX3QgdGFibGVJ
bmRleCA9IGJ5dGVjb2RlLm1fdGFibGVJbmRleDsKICAgICB1bnNpZ25lZCBkZWZhdWx0T2Zmc2V0
ID0ganVtcFRhcmdldChjdXJyZW50SW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fZGVmYXVsdE9mZnNl
dCk7Ci0gICAgdW5zaWduZWQgc2NydXRpbmVlID0gYnl0ZWNvZGUubV9zY3J1dGluZWUub2Zmc2V0
KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNjcnV0aW5lZSA9IGJ5dGVjb2RlLm1fc2NydXRpbmVl
OwogCiAgICAgLy8gY3JlYXRlIGp1bXAgdGFibGUgZm9yIHN3aXRjaCBkZXN0aW5hdGlvbnMsIHRy
YWNrIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KICAgICBTaW1wbGVKdW1wVGFibGUqIGp1bXBUYWJs
ZSA9ICZtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwpAQCAtMTAyMiw3
ICsxMDIwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyhjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wU3dpdGNoU3RyaW5nPigpOwogICAgIHNpemVfdCB0YWJsZUluZGV4ID0g
Ynl0ZWNvZGUubV90YWJsZUluZGV4OwogICAgIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQgPSBqdW1w
VGFyZ2V0KGN1cnJlbnRJbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV9kZWZhdWx0T2Zmc2V0KTsKLSAg
ICB1bnNpZ25lZCBzY3J1dGluZWUgPSBieXRlY29kZS5tX3NjcnV0aW5lZS5vZmZzZXQoKTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc2NydXRpbmVlID0gYnl0ZWNvZGUubV9zY3J1dGluZWU7CiAKICAg
ICAvLyBjcmVhdGUganVtcCB0YWJsZSBmb3Igc3dpdGNoIGRlc3RpbmF0aW9ucywgdHJhY2sgdGhp
cyBzd2l0Y2ggc3RhdGVtZW50LgogICAgIFN0cmluZ0p1bXBUYWJsZSoganVtcFRhYmxlID0gJm1f
Y29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CkBAIC0xMDUxLDcg
KzEwNDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIC8vIHJlZ2lzdGVycyB0byB6YXAgc3RhbGUgcG9pbnRlcnMs
IHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcHJvbG9uZ2luZwogICAgIC8vIG9iamVjdCBsaWZldGlt
ZSBhbmQgaW5jcmVhc2luZyBHQyBwcmVzc3VyZS4KICAgICBmb3IgKGludCBpID0gQ29kZUJsb2Nr
OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7IGkgPCBt
X2NvZGVCbG9jay0+bnVtVmFycygpOyArK2kpCi0gICAgICAgIGVtaXRTdG9yZSh2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGVtaXRT
dG9yZSh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSwganNVbmRlZmluZWQoKSk7CiAKICAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX2VudGVyKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwpAQCAtMTA2MCw3ICsxMDU4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wR2V0U2NvcGU+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0
Lm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKICAg
ICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIHJl
Z1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2Nv
cGVDaGFpbigpKSwgcmVnVDApOwogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CkBAIC0x
MDcwLDcgKzEwNjgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgY2FsbGVlID0gYnl0ZWNv
ZGUubV9jYWxsZWUub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVj
b2RlLm1fY2FsbGVlOwogICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiogY2FjaGVkRnVuY3Rp
b24gPSAmbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CiAgICAgUmVnaXN0ZXJJRCBjYWxsZWVSZWcg
PSByZWdUMDsKICAgICBSZWdpc3RlcklEIHJhcmVEYXRhUmVnID0gcmVnVDQ7CkBAIC0xMDk4LDcg
KzEwOTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGxvYWQ4KEFkZHJlc3Moc3RydWN0dXJlUmVnLCBT
dHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKICAgICBlbWl0
SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKICAgICBhZGRT
bG93Q2FzZShzbG93Q2FzZXMpOwotICAgIGVtaXRTdG9yZUNlbGwoYnl0ZWNvZGUubV9kc3Qub2Zm
c2V0KCksIHJlc3VsdFJlZyk7CisgICAgZW1pdFN0b3JlQ2VsbChieXRlY29kZS5tX2RzdCwgcmVz
dWx0UmVnKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTEwNiw3ICsxMTA0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwogICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFN0
cnVjdHVyZUlEKiBjYWNoZWRTdHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZUlEOwotICAgIGludCB0aGlzUmVnaXN0ZXIgPSBieXRlY29kZS5tX3NyY0RzdC5vZmZzZXQoKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyID0gYnl0ZWNvZGUubV9zcmNEc3Q7CiAK
ICAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7CiAKQEAgLTExMjAsMTYg
KzExMTgsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKLSAgICBlbWl0TG9hZFRhZyhieXRl
Y29kZS5tX3RhcmdldFZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSwgcmVnVDApOworICAgIGVtaXRM
b2FkVGFnKGJ5dGVjb2RlLm1fdGFyZ2V0VmlydHVhbFJlZ2lzdGVyLCByZWdUMCk7CiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoSWZFbXB0eShyZWdUMCkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9o
YXNfc3RydWN0dXJlX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eT4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0
KCk7Ci0gICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7Ci0gICAgaW50IGVu
dW1lcmF0b3IgPSBieXRlY29kZS5tX2VudW1lcmF0b3Iub2Zmc2V0KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNv
ZGUubV9lbnVtZXJhdG9yOwogCiAgICAgZW1pdExvYWRQYXlsb2FkKGJhc2UsIHJlZ1QwKTsKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSk7CkBAIC0xMTc0LDkgKzExNzIsOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSGFzSW5kZXhlZFByb3BlcnR5PigpOwogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBkc3QgPSBieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQo
KTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Lm9mZnNldCgpOworICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkg
PSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fY29kZUJs
b2NrLT5hZGRCeVZhbEluZm8oKTsKICAgICAKQEAgLTEyMjIsOSArMTIyMCw5IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eShjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uCiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSGFzSW5kZXhlZFByb3BlcnR5Pigp
OwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5Lm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgIEJ5VmFs
SW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0uYnlWYWxJbmZvOwogCiAgICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOwpAQCAt
MTI0MSwxMCArMTIzOSwxMCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaGFzX2luZGV4ZWRfcHJv
cGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbgogdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2RpcmVjdF9wbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
RGlyZWN0UG5hbWU+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwot
ICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOwotICAgIGludCBpbmRleCA9
IGJ5dGVjb2RlLm1faW5kZXgub2Zmc2V0KCk7Ci0gICAgaW50IGVudW1lcmF0b3IgPSBieXRlY29k
ZS5tX2VudW1lcmF0b3Iub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVj
b2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXg7CisgICAgVmlydHVh
bFJlZ2lzdGVyIGVudW1lcmF0b3IgPSBieXRlY29kZS5tX2VudW1lcmF0b3I7CiAKICAgICAvLyBD
aGVjayB0aGF0IGJhc2UgaXMgYSBjZWxsCiAgICAgZW1pdExvYWRQYXlsb2FkKGJhc2UsIHJlZ1Qw
KTsKQEAgLTEyODIsOSArMTI4MCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9kaXJlY3RfcG5h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0
X29wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWU+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2Rl
Lm1fZHN0Lm9mZnNldCgpOwotICAgIGludCBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJh
dG9yLm9mZnNldCgpOwotICAgIGludCBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXgub2Zmc2V0KCk7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxS
ZWdpc3RlciBlbnVtZXJhdG9yID0gYnl0ZWNvZGUubV9lbnVtZXJhdG9yOworICAgIFZpcnR1YWxS
ZWdpc3RlciBpbmRleCA9IGJ5dGVjb2RlLm1faW5kZXg7CiAKICAgICBlbWl0TG9hZFBheWxvYWQo
aW5kZXgsIHJlZ1QwKTsKICAgICBlbWl0TG9hZFBheWxvYWQoZW51bWVyYXRvciwgcmVnVDEpOwpA
QCAtMTMwNyw5ICsxMzA1LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9zdHJ1Y3R1
cmVfcG5hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGkKIHZvaWQgSklUOjpl
bWl0X29wX2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRW51bWVyYXRvckdlbmVyaWNQbmFtZT4oKTsKLSAgICBpbnQgZHN0ID0gYnl0ZWNvZGUu
bV9kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IGVudW1lcmF0b3IgPSBieXRlY29kZS5tX2VudW1lcmF0
b3Iub2Zmc2V0KCk7Ci0gICAgaW50IGluZGV4ID0gYnl0ZWNvZGUubV9pbmRleC5vZmZzZXQoKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGVudW1lcmF0b3IgPSBieXRlY29kZS5tX2VudW1lcmF0b3I7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGluZGV4ID0gYnl0ZWNvZGUubV9pbmRleDsKIAogICAgIGVtaXRMb2FkUGF5bG9hZChp
bmRleCwgcmVnVDApOwogICAgIGVtaXRMb2FkUGF5bG9hZChlbnVtZXJhdG9yLCByZWdUMSk7CkBA
IC0xMzM0LDcgKzEzMzIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFByb2ZpbGVUeXBlPigpOwogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwogICAgIFR5cGVMb2NhdGlvbiogY2Fj
aGVkVHlwZUxvY2F0aW9uID0gbWV0YWRhdGEubV90eXBlTG9jYXRpb247Ci0gICAgaW50IHZhbHVl
VG9Qcm9maWxlID0gYnl0ZWNvZGUubV90YXJnZXRWaXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVG9Qcm9maWxlID0gYnl0ZWNvZGUubV90YXJnZXRWaXJ0
dWFsUmVnaXN0ZXI7CiAKICAgICAvLyBMb2FkIHBheWxvYWQgaW4gVDAuIExvYWQgdGFnIGluIFQz
LgogICAgIGVtaXRMb2FkUGF5bG9hZCh2YWx1ZVRvUHJvZmlsZSwgcmVnVDApOwpAQCAtMTQwOCw3
ICsxNDA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3QKICAgICBlbnN1cmVTaGFkb3dDaGlj
a2VuUGFja2V0KHZtKCksIHNoYWRvd1BhY2tldFJlZywgc2NyYXRjaDFSZWcsIHNjcmF0Y2gyUmVn
KTsKIAogICAgIHNjcmF0Y2gxUmVnID0gcmVnVDQ7Ci0gICAgZW1pdExvYWRQYXlsb2FkKGJ5dGVj
b2RlLm1fc2NvcGUub2Zmc2V0KCksIHJlZ1QzKTsKKyAgICBlbWl0TG9hZFBheWxvYWQoYnl0ZWNv
ZGUubV9zY29wZSwgcmVnVDMpOwogICAgIGxvZ1NoYWRvd0NoaWNrZW5Qcm9sb2d1ZVBhY2tldChz
aGFkb3dQYWNrZXRSZWcsIHNjcmF0Y2gxUmVnLCByZWdUMyk7CiB9CiAKQEAgLTE0MjIsMTAgKzE0
MjAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBHUFJSZWcgc2NyYXRjaDFSZWcg
PSBub25BcmdHUFIwOyAvLyBUaGlzIG11c3QgYmUgYSBub24tYXJndW1lbnQgcmVnaXN0ZXIuCiAg
ICAgR1BSUmVnIHNjcmF0Y2gyUmVnID0gcmVnVDI7CiAgICAgZW5zdXJlU2hhZG93Q2hpY2tlblBh
Y2tldCh2bSgpLCBzaGFkb3dQYWNrZXRSZWcsIHNjcmF0Y2gxUmVnLCBzY3JhdGNoMlJlZyk7Ci0g
ICAgZW1pdExvYWRQYXlsb2FkKGJ5dGVjb2RlLm1fdGhpc1ZhbHVlLm9mZnNldCgpLCByZWdUMik7
Ci0gICAgZW1pdExvYWRUYWcoYnl0ZWNvZGUubV90aGlzVmFsdWUub2Zmc2V0KCksIHJlZ1QxKTsK
KyAgICBlbWl0TG9hZFBheWxvYWQoYnl0ZWNvZGUubV90aGlzVmFsdWUsIHJlZ1QyKTsKKyAgICBl
bWl0TG9hZFRhZyhieXRlY29kZS5tX3RoaXNWYWx1ZSwgcmVnVDEpOwogICAgIEpTVmFsdWVSZWdz
IHRoaXNSZWdzKHJlZ1QxLCByZWdUMik7Ci0gICAgZW1pdExvYWRQYXlsb2FkKGJ5dGVjb2RlLm1f
c2NvcGUub2Zmc2V0KCksIHJlZ1QzKTsKKyAgICBlbWl0TG9hZFBheWxvYWQoYnl0ZWNvZGUubV9z
Y29wZSwgcmVnVDMpOwogICAgIGxvZ1NoYWRvd0NoaWNrZW5UYWlsUGFja2V0KHNoYWRvd1BhY2tl
dFJlZywgdGhpc1JlZ3MsIHJlZ1QzLCBtX2NvZGVCbG9jaywgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZGRjYTcxYWFiMTNiMDIxMTRjNTk3MTA0MmE5
MTNhYmI4YzlhMWY3NC4uNWViMjBiMzU1NTk4M2NhNDVmZTBjNjlhYjNkOGYzYjkzYTZjMTk3MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQ
dXRHZXR0ZXJCeUlkPigpOwotICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgp
OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGludCBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgaW50IG9wdGlvbnMgPSBieXRlY29k
ZS5tX2F0dHJpYnV0ZXM7Ci0gICAgaW50IGdldHRlciA9IGJ5dGVjb2RlLm1fYWNjZXNzb3Iub2Zm
c2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGdldHRlciA9IGJ5dGVjb2RlLm1fYWNjZXNzb3I7
CiAKICAgICBlbWl0TG9hZFBheWxvYWQoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRMb2FkUGF5bG9h
ZChnZXR0ZXIsIHJlZ1QzKTsKQEAgLTYzLDEwICs2MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfZ2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRTZXR0ZXJCeUlkPigpOwotICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNl
Lm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwog
ICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgaW50IG9wdGlvbnMg
PSBieXRlY29kZS5tX2F0dHJpYnV0ZXM7Ci0gICAgaW50IHNldHRlciA9IGJ5dGVjb2RlLm1fYWNj
ZXNzb3Iub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNldHRlciA9IGJ5dGVjb2RlLm1f
YWNjZXNzb3I7CiAKICAgICBlbWl0TG9hZFBheWxvYWQoYmFzZSwgcmVnVDEpOwogICAgIGVtaXRM
b2FkUGF5bG9hZChzZXR0ZXIsIHJlZ1QzKTsKQEAgLTc2LDExICs3NiwxMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyU2V0dGVyQnlJZD4oKTsKLSAgICBpbnQg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFz
ZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3Bl
cnR5OwogICAgIGludCBhdHRyaWJ1dGVzID0gYnl0ZWNvZGUubV9hdHRyaWJ1dGVzOwotICAgIGlu
dCBnZXR0ZXIgPSBieXRlY29kZS5tX2dldHRlci5vZmZzZXQoKTsKLSAgICBpbnQgc2V0dGVyID0g
Ynl0ZWNvZGUubV9zZXR0ZXIub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGdldHRlciA9
IGJ5dGVjb2RlLm1fZ2V0dGVyOworICAgIFZpcnR1YWxSZWdpc3RlciBzZXR0ZXIgPSBieXRlY29k
ZS5tX3NldHRlcjsKIAogICAgIGVtaXRMb2FkUGF5bG9hZChiYXNlLCByZWdUMSk7CiAgICAgZW1p
dExvYWRQYXlsb2FkKGdldHRlciwgcmVnVDMpOwpAQCAtOTEsMTAgKzkxLDEwIEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0R2V0dGVyQnlWYWw+KCk7Ci0gICAgaW50IGJh
c2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7Ci0gICAgaW50IHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OwogICAgIGludDMyX3QgYXR0cmlidXRlcyA9IGJ5dGVjb2RlLm1fYXR0cmlidXRlczsK
LSAgICBpbnQgZ2V0dGVyID0gYnl0ZWNvZGUubV9hY2Nlc3Nvci5vZmZzZXQoKTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgZ2V0dGVyID0gYnl0ZWNvZGUubV9hY2Nlc3NvcjsKIAogICAgIGVtaXRMb2Fk
UGF5bG9hZChiYXNlLCByZWdUMik7CiAgICAgZW1pdExvYWQocHJvcGVydHksIHJlZ1QxLCByZWdU
MCk7CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X3NldHRlcl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1
dFNldHRlckJ5VmFsPigpOwotICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgp
OwotICAgIGludCBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHkub2Zmc2V0KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKICAgICBpbnQzMl90IGF0dHJpYnV0
ZXMgPSBieXRlY29kZS5tX2F0dHJpYnV0ZXM7Ci0gICAgaW50IHNldHRlciA9IGJ5dGVjb2RlLm1f
YWNjZXNzb3Iub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNldHRlciA9IGJ5dGVjb2Rl
Lm1fYWNjZXNzb3I7CiAKICAgICBlbWl0TG9hZFBheWxvYWQoYmFzZSwgcmVnVDIpOwogICAgIGVt
aXRMb2FkKHByb3BlcnR5LCByZWdUMSwgcmVnVDApOwpAQCAtMTE5LDggKzExOSw4IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0
Lm9mZnNldCgpOwotICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOworICAg
IFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQsIGRzdCwgbV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBtX2NvZGVCbG9jay0+aWRl
bnRpZmllcihwcm9wZXJ0eSkuaW1wbCgpKTsKQEAgLTEyOSw5ICsxMjksOSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcERlbEJ5VmFsPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsK
LSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKLSAgICBpbnQgcHJvcGVy
dHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Lm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3Bl
cnR5OwogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywg
cmVnVDIpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxKU1Jlc3VsdCwg
ZHN0LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOwogfQpAQCAtMTQwLDkgKzE0MCw5IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cEdldEJ5VmFsPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spOwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBp
bnQgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKLSAgICBpbnQgcHJvcGVydHkgPSBi
eXRlY29kZS5tX3Byb3BlcnR5Lm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBi
eXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owog
ICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAog
ICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIp
OwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiB7CiAgICAgaWYg
KGhhc0FueVNsb3dDYXNlcyhpdGVyKSkgewogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldEJ5VmFsPigpOwotICAgICAgICBpbnQgZHN0ID0gYnl0ZWNv
ZGUubV9kc3Qub2Zmc2V0KCk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayk7CiAgICAgICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZTsKIApAQCAtMTk5LDggKzE5OSw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcD4oKTsKICAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKLSAgICBpbnQgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5Lm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7
CiAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOwog
ICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbygpOwog
ICAgIApAQCAtMjQ5LDggKzI0OSw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0
Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgaW50
IGJhc2UgPSBieXRlY29kZS5tX2Jhc2Uub2Zmc2V0KCk7Ci0gICAgaW50IHZhbHVlID0gYnl0ZWNv
ZGUubV92YWx1ZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwog
ICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKIAog
ICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTMxMCw4ICszMTAsOCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3A+CiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9w
IGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogewogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIGludCBiYXNlID0gYnl0ZWNv
ZGUubV9iYXNlLm9mZnNldCgpOwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zm
c2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAg
VmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKICAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CiAKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CkBAIC0zNTEsOCArMzUxLDggQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVt
aXRQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgT3AgYnl0ZWMKICAg
ICAvLyBiYXNlOiB0YWcocmVnVDEpLCBwYXlsb2FkKHJlZ1QwKQogICAgIC8vIHByb3BlcnR5OiB0
YWcocmVnVDMpLCBwYXlsb2FkKHJlZ1QyKQogCi0gICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jh
c2Uub2Zmc2V0KCk7Ci0gICAgaW50IHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogCiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKICAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2so
YnlWYWxJbmZvLCByZWdUMiwgcmVnVDIsIHByb3BlcnR5TmFtZSwgc2xvd0Nhc2VzKTsKQEAgLTM4
NiwxNCArMzg2LDE0IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGJvb2wgaXNEaXJl
Y3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJl
Y3Q7Ci0gICAgaW50IGJhc2U7Ci0gICAgaW50IHByb3BlcnR5OwotICAgIGludCB2YWx1ZTsKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlOwogCiAgICAgYXV0byBsb2FkID0gWyZdKGF1dG8gYnl0
ZWNvZGUpIHsKLSAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKLSAgICAg
ICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Lm9mZnNldCgpOwotICAgICAgICB2YWx1
ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7CisgICAgICAgIGJhc2UgPSBieXRlY29kZS5t
X2Jhc2U7CisgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICAgICAg
dmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBA
IC00MjEsOCArNDIxLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKIHZvaWQgSklUOjplbWl0
X29wX3RyeV9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRyeUdldEJ5
SWQ+KCk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAgIGludCBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3Qg
PSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1f
YmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50
aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEs
IHJlZ1QwKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdHJ5X2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0bwogICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CiAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFRyeUdldEJ5SWQ+KCk7Ci0gICAgaW50IHJlc3VsdFZSZWcgPSBieXRl
Y29kZS5tX2RzdC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5
dGVjb2RlLm1fZHN0OwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOwpAQCAtNDYwLDggKzQ2
MCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90cnlfZ2V0X2J5X2lkKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWRfZGlyZWN0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0Pigp
OwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7
CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVy
KGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKIAogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdU
MCk7CkBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZF9k
aXJlY3QoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmUKICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkRGlyZWN0PigpOwotICAgIGludCByZXN1bHRWUmVnID0gYnl0ZWNv
ZGUubV9kc3Qub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFZSZWcgPSBieXRl
Y29kZS5tX2RzdDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2st
PmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKQEAgLTUwMCw4ICs1MDAs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcEdldEJ5SWQ+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7Ci0gICAgaW50IGRzdCA9IGJ5dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwot
ICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxv
Y2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogICAgIAogICAgIGVtaXRMb2Fk
KGJhc2UsIHJlZ1QxLCByZWdUMCk7CkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2wKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpOwotICAgIGludCByZXN1bHRW
UmVnID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dFZSZWcgPSBieXRlY29kZS5tX2RzdDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKQEAg
LTU0NCw5ICs1NDQsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbAogdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
QnlJZFdpdGhUaGlzPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsK
LSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKLSAgICBpbnQgdGhpc1ZS
ZWcgPSBieXRlY29kZS5tX3RoaXNWYWx1ZS5vZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29k
ZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNWUmVnID0gYnl0ZWNvZGUubV90aGlz
VmFsdWU7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVu
dGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsKICAgICAKICAgICBlbWl0TG9hZChiYXNlLCBy
ZWdUMSwgcmVnVDApOwpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9n
ZXRfYnlfaWRfd2l0aF90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZFdpdGhUaGlzPigpOwotICAgIGludCByZXN1bHRW
UmVnID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3Vs
dFZSZWcgPSBieXRlY29kZS5tX2RzdDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYo
bV9jb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpOwogCiAgICAgSklU
R2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzV2l0aFRoaXNbbV9nZXRC
eUlkV2l0aFRoaXNJbmRleCsrXTsKQEAgLTU4OSw4ICs1ODksOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAv
LyBzdWNoIHRoYXQgdGhlIFN0cnVjdHVyZSAmIG9mZnNldCBhcmUgYWx3YXlzIGF0IHRoZSBzYW1l
IGRpc3RhbmNlIGZyb20gdGhpcy4KICAgICAKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dEJ5SWQ+KCk7Ci0gICAgaW50IGJhc2UgPSBieXRlY29kZS5tX2Jh
c2Uub2Zmc2V0KCk7Ci0gICAgaW50IHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZS5vZmZzZXQoKTsK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogICAgIGJvb2wgZGlyZWN0ID0gISEo
Ynl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5SWRJc0RpcmVjdCk7CiAgICAgCiAgICAgZW1pdExvYWQy
KGJhc2UsIHJlZ1QxLCByZWdUMCwgdmFsdWUsIHJlZ1QzLCByZWdUMik7CkBAIC02MTUsNyArNjE1
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2wKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwogCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRCeUlk
PigpOwotICAgIGludCBiYXNlID0gYnl0ZWNvZGUubV9iYXNlLm9mZnNldCgpOworICAgIFZpcnR1
YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7
CiAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMpOwpAQCAtNjM0LDggKzYzNCw4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOwotICAgIGludCBkc3QgPSBieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQo
KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkpKTsK
IAogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7CkBAIC02NTYsNyArNjU2LDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7Ci0g
ICAgaW50IHJlc3VsdFZSZWcgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0VlJlZyA9IGJ5dGVjb2RlLm1fZHN0OwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5
KSk7CiAKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1faW5CeUlkc1ttX2luQnlJZElu
ZGV4KytdOwpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hl
Y2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKICAgICBhZGRTbG93Q2FzZShicmFuY2g4
KEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT52YXJJ
bmplY3Rpb25XYXRjaHBvaW50KCktPmFkZHJlc3NPZlN0YXRlKCkpLCBUcnVzdGVkSW1tMzIoSXNJ
bnZhbGlkYXRlZCkpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRSZXNvbHZlQ2xvc3VyZShpbnQgZHN0
LCBpbnQgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRo
KQordm9pZCBKSVQ6OmVtaXRSZXNvbHZlQ2xvc3VyZShWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBWaXJ0
dWFsUmVnaXN0ZXIgc2NvcGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVk
IGRlcHRoKQogewogICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsK
QEAgLTY4OSw4ICs2ODksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BSZXNvbHZlU2NvcGU+KCk7CiAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgaW50IGRzdCA9IGJ5
dGVjb2RlLm1fZHN0Lm9mZnNldCgpOwotICAgIGludCBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGUu
b2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAg
IFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IGJ5dGVjb2RlLm1fc2NvcGU7CiAgICAgUmVzb2x2ZVR5
cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlOwogICAgIHVuc2lnbmVkIGRl
cHRoID0gbWV0YWRhdGEubV9sb2NhbFNjb3BlRGVwdGg7CiAKQEAgLTc5MSw3ICs3OTEsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJl
Q2hlY2soaW50IHNjb3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KQordm9pZCBKSVQ6OmVt
aXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKFZpcnR1YWxSZWdpc3RlciBzY29wZSwgU3RydWN0dXJl
Kiogc3RydWN0dXJlU2xvdCkKIHsKICAgICBlbWl0TG9hZChzY29wZSwgcmVnVDEsIHJlZ1QwKTsK
ICAgICBsb2FkUHRyKHN0cnVjdHVyZVNsb3QsIHJlZ1QyKTsKQEAgLTgxMSw3ICs4MTEsNyBAQCB2
b2lkIEpJVDo6ZW1pdEdldFZhckZyb21JbmRpcmVjdFBvaW50ZXIoSlNWYWx1ZSoqIG9wZXJhbmQs
IEdQUlJlZyB0YWcsIEdQUlJlZyBwYQogICAgIGxvYWQzMihBZGRyZXNzKHBheWxvYWQsIFBheWxv
YWRPZmZzZXQpLCBwYXlsb2FkKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRHZXRDbG9zdXJlVmFyKGlu
dCBzY29wZSwgdWludHB0cl90IG9wZXJhbmQpCit2b2lkIEpJVDo6ZW1pdEdldENsb3N1cmVWYXIo
VmlydHVhbFJlZ2lzdGVyIHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCkKIHsKICAgICBlbWl0TG9h
ZChzY29wZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNMZXhp
Y2FsRW52aXJvbm1lbnQ6Om9mZnNldE9mVmFyaWFibGVzKCkgKyBvcGVyYW5kICogc2l6ZW9mKFJl
Z2lzdGVyKSArIFRhZ09mZnNldCksIHJlZ1QxKTsKQEAgLTgyMiw4ICs4MjIsOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
R2V0RnJvbVNjb3BlPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5vZmZzZXQoKTsKLSAg
ICBpbnQgc2NvcGUgPSBieXRlY29kZS5tX3Njb3BlLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSBi
eXRlY29kZS5tX3Njb3BlOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEu
bV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAgICAgU3RydWN0dXJlKiogc3RydWN0dXJlU2xv
dCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlLnNsb3QoKTsKICAgICB1aW50cHRyX3QqIG9wZXJhbmRT
bG90ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPigmbWV0YWRhdGEubV9vcGVyYW5kKTsK
QEAgLTkzNywxMSArOTM3LDExIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29w
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0CiAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKIAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wR2V0RnJvbVNjb3BlPigpOwotICAgIGludCBkc3QgPSBieXRlY29kZS5tX2RzdC5v
ZmZzZXQoKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CiAgICAg
Y2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwg
b3BlcmF0aW9uR2V0RnJvbVNjb3BlLCBkc3QsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwg
Y3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxWYXJpYWJs
ZShKU1ZhbHVlKiBvcGVyYW5kLCBpbnQgdmFsdWUsIFdhdGNocG9pbnRTZXQqIHNldCkKK3ZvaWQg
SklUOjplbWl0UHV0R2xvYmFsVmFyaWFibGUoSlNWYWx1ZSogb3BlcmFuZCwgVmlydHVhbFJlZ2lz
dGVyIHZhbHVlLCBXYXRjaHBvaW50U2V0KiBzZXQpCiB7CiAgICAgZW1pdExvYWQodmFsdWUsIHJl
Z1QxLCByZWdUMCk7CiAgICAgZW1pdE5vdGlmeVdyaXRlKHNldCk7CkBAIC05NTAsNyArOTUwLDcg
QEAgdm9pZCBKSVQ6OmVtaXRQdXRHbG9iYWxWYXJpYWJsZShKU1ZhbHVlKiBvcGVyYW5kLCBpbnQg
dmFsdWUsIFdhdGNocG9pbnRTZXQqIHNldCkKICAgICBzdG9yZTMyKHJlZ1QwLCBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHJhd0FkZHJlc3MgKyBQYXlsb2FkT2Zmc2V0KSk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0UHV0R2xvYmFsVmFyaWFibGVJbmRpcmVjdChKU1ZhbHVlKiogYWRkcmVzc09mT3BlcmFuZCwg
aW50IHZhbHVlLCBXYXRjaHBvaW50U2V0KiogaW5kaXJlY3RXYXRjaHBvaW50U2V0KQordm9pZCBK
SVQ6OmVtaXRQdXRHbG9iYWxWYXJpYWJsZUluZGlyZWN0KEpTVmFsdWUqKiBhZGRyZXNzT2ZPcGVy
YW5kLCBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUsIFdhdGNocG9pbnRTZXQqKiBpbmRpcmVjdFdhdGNo
cG9pbnRTZXQpCiB7CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgbG9h
ZFB0cihpbmRpcmVjdFdhdGNocG9pbnRTZXQsIHJlZ1QyKTsKQEAgLTk2MCw3ICs5NjAsNyBAQCB2
b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcmlhYmxlSW5kaXJlY3QoSlNWYWx1ZSoqIGFkZHJlc3NP
Zk9wZXJhbmQsIGludCB2YWx1ZSwgVwogICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVnVDIs
IFBheWxvYWRPZmZzZXQpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRQdXRDbG9zdXJlVmFyKGludCBz
Y29wZSwgdWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1ZSwgV2F0Y2hwb2ludFNldCogc2V0KQor
dm9pZCBKSVQ6OmVtaXRQdXRDbG9zdXJlVmFyKFZpcnR1YWxSZWdpc3RlciBzY29wZSwgdWludHB0
cl90IG9wZXJhbmQsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV2F0Y2hwb2ludFNldCogc2V0KQog
ewogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOwogICAgIGVtaXRMb2FkKHNjb3Bl
LCByZWdUMSwgcmVnVDApOwpAQCAtOTczLDggKzk3Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0VG9TY29wZT4oKTsK
ICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAg
ICBpbnQgc2NvcGUgPSBieXRlY29kZS5tX3Njb3BlLm9mZnNldCgpOwotICAgIGludCB2YWx1ZSA9
IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0g
Ynl0ZWNvZGUubV9zY29wZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5t
X3ZhbHVlOwogICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyA9IGNvcGllZEdldFB1dEluZm8oYnl0
ZWNvZGUpOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gZ2V0UHV0SW5mby5yZXNvbHZl
VHlwZSgpOwogICAgIFN0cnVjdHVyZSoqIHN0cnVjdHVyZVNsb3QgPSBtZXRhZGF0YS5tX3N0cnVj
dHVyZS5zbG90KCk7CkBAIC0xMTA1LDggKzExMDUsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cgogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRGcm9tQXJndW1lbnRzPigpOwotICAgIGludCBkc3QgPSBieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKTsKLSAgICBpbnQgYXJndW1lbnRzID0gYnl0ZWNvZGUubV9hcmd1bWVu
dHMub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0Owor
ICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHMgPSBieXRlY29kZS5tX2FyZ3VtZW50czsKICAg
ICBpbnQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwogICAgIAogICAgIGVtaXRMb2FkUGF5bG9h
ZChhcmd1bWVudHMsIHJlZ1QwKTsKQEAgLTExMTksOSArMTExOSw5IEBAIHZvaWQgSklUOjplbWl0
X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0VG9Bcmd1bWVudHM+KCk7Ci0gICAgaW50IGFyZ3VtZW50cyA9IGJ5
dGVjb2RlLm1fYXJndW1lbnRzLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVu
dHMgPSBieXRlY29kZS5tX2FyZ3VtZW50czsKICAgICBpbnQgaW5kZXggPSBieXRlY29kZS5tX2lu
ZGV4OwotICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWUub2Zmc2V0KCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKICAgICAKICAgICBlbWl0V3Jp
dGVCYXJyaWVyKGFyZ3VtZW50cywgdmFsdWUsIFNob3VsZEZpbHRlclZhbHVlKTsKICAgICAKQEAg
LTExMzUsOCArMTEzNSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9pbnRlcm5hbF9maWVsZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0SW50ZXJuYWxGaWVsZD4oKTsKICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCk7Ci0gICAgaW50IGJhc2UgPSBieXRlY29kZS5t
X2Jhc2Uub2Zmc2V0KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0
OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIHVuc2ln
bmVkIGluZGV4ID0gYnl0ZWNvZGUubV9pbmRleDsKICAgICBBU1NFUlQoaW5kZXggPCBKU1Byb21p
c2U6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwogCkBAIC0xMTUwLDggKzExNTAsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHZvaWQgSklUOjplbWl0X29wX3B1dF9pbnRlcm5hbF9maWVsZChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0SW50ZXJuYWxGaWVsZD4oKTsKLSAgICBpbnQg
YmFzZSA9IGJ5dGVjb2RlLm1fYmFzZS5vZmZzZXQoKTsKLSAgICBpbnQgdmFsdWUgPSBieXRlY29k
ZS5tX3ZhbHVlLm9mZnNldCgpOworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUu
bV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CiAg
ICAgdW5zaWduZWQgaW5kZXggPSBieXRlY29kZS5tX2luZGV4OwogICAgIEFTU0VSVChpbmRleCA8
IEpTUHJvbWlzZTo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCA1ODI3MTNlNjQwODdhNTFmNTkzOWI5MGI5
ODU0NWRmMTMzZDBjNmFhLi44MDE1MmRhOTE2NzY1NDJmN2E5NTY2ODgwOTI1MDJkYmY4ZWQxZTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC03Miwy
MCArNzIsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6
Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXIg
PCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CisgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVn
aXN0ZXIgPCBWaXJ0dWFsUmVnaXN0ZXIoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpKTsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICB9CiAgICAgCiAgICAgaW5saW5l
IEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEludDMyKFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHZpcnR1YWxSZWdpc3RlciA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsK
KyAgICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3RlciA8IFZpcnR1YWxSZWdpc3RlcihGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCkpOwogICAgICAgICBsb2FkUHRyKHBheWxvYWRGb3IodmlydHVh
bFJlZ2lzdGVyKSwgZHN0KTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdG
b3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAg
ICAgfQogCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0TG9hZERvdWJsZShWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyLCBGUFJlZ2lzdGVy
SUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotICAgICAgICBBU1NFUlQodmlydHVh
bFJlZ2lzdGVyIDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOworICAgICAgICBBU1NFUlQo
dmlydHVhbFJlZ2lzdGVyIDwgVmlydHVhbFJlZ2lzdGVyKEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4KSk7CiAgICAgICAgIGxvYWRQdHIodGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHNjcmF0Y2gp
OwogICAgICAgICBKdW1wIGlzRG91YmxlID0gYnJhbmNoMzIoQmVsb3csIHNjcmF0Y2gsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKTsKICAgICAgICAgSnVtcCBub3RJbnQgPSBicmFu
Y2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>