<?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>177217</bug_id>
          
          <creation_ts>2017-09-19 19:46:52 -0700</creation_ts>
          <short_desc>Do more math in terms of FloatSizes and FloatPoints</short_desc>
          <delta_ts>2017-09-27 12:20:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1350630</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-19 19:46:52 -0700</bug_when>
    <thetext>Do more math in terms of FloatSizes and FloatPoints</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350634</commentid>
    <comment_count>1</comment_count>
      <attachid>321282</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-19 19:49:31 -0700</bug_when>
    <thetext>Created attachment 321282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350637</commentid>
    <comment_count>2</comment_count>
      <attachid>321284</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-19 20:20:37 -0700</bug_when>
    <thetext>Created attachment 321284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350673</commentid>
    <comment_count>3</comment_count>
      <attachid>321284</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-19 23:13:58 -0700</bug_when>
    <thetext>Comment on attachment 321284
Patch

Clearing flags on attachment: 321284

Committed r222253: &lt;http://trac.webkit.org/changeset/222253&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350674</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-19 23:13:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353317</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:20:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693100&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321282</attachid>
            <date>2017-09-19 19:49:31 -0700</date>
            <delta_ts>2017-09-19 20:20:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177217-20170919194930.patch</filename>
            <type>text/plain</type>
            <size>66257</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I4OGIzNjE2YzljMjcy
OGNmYjc0YzA5MDNiYWY3ZmUxYjNkYjQ5MS4uYzk1OWI3MDExOTZlYWU4MWEwMzk2ZmQ5MzgyYzA5
NTdkMzZlY2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxNy0wOS0xOSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBEbyBtb3JlIG1h
dGggaW4gdGVybXMgb2YgRmxvYXRTaXplcyBhbmQgRmxvYXRQb2ludHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzIxNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIG9wZXJhdG9yLyhj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmKSwgR3JhcGhpY3NDb250ZXh0Ojp0cmFu
c2xhdGUoY29uc3QgRmxvYXRQb2ludCYpCisgICAgICAgIGFuZCBGbG9hdFJlY3Quc2NhbGUoRmxv
YXRTaXplKSBhbmQgdXNlIHRoZW0gaW4gbG90cyBvZiBwbGFjZXMgdG8gZG8gbWF0aCBpbiB0ZXJt
cyBvZiBwb2ludHMgYW5kIHNpemVzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAg
KiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tOgorICAgICAgICAoLVtXZWJUZXh0SW5k
aWNhdG9yVmlldyBpbml0V2l0aEZyYW1lOnRleHRJbmRpY2F0b3I6bWFyZ2luOm9mZnNldDpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6
ZHJhd05hbWVkSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdDcm9zc2ZhZGVT
dWJpbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpGbG9hdFJlY3Q6OmNlbnRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9h
dFJlY3Q6OnNjYWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaDoK
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpk
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzY2FsZUZhY3RvckZvckRyYXdpbmcg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpk
cmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkUm91bmRlZFJlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGx5Um90YXRpb25Gb3JQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpkcmF3UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNm
b3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6dHJhbnNsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VNYXBCZXR3ZWVuUmVjdHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YmVnaW5GaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5IGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OnBhaW50U2VhcmNoRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNCdXR0b24pOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmRy
YXdDb250ZW50SW50b01hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnJlc291cmNlQm91bmRpbmdCb3gpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjbGlwVG9UZXh0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlTWFya2VyOjptYXJrZXJUcmFuc2Zvcm1hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6bWFya2VyQ29udGVudFRyYW5zZm9ybWF0aW9uIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVu
dEludG9NYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OnJlc291cmNlQm91bmRpbmdCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6Y2FsY3VsYXRlTG9jYWxUcmFu
c2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3Jv
dW5kKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmJ1aWxkVHJhbnNmb3JtRm9yUHJv
Z3Jlc3MpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NWR0VsZW1lbnQ6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtIGNvbnN0KToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6OmRyYXcpOgorCiAyMDE3LTA5LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE9uIGlPUywgZ2V0RGF0YSBjYW4ndCBnZXQgdGV4dCBzZXQgYnkg
c2V0RGF0YSBkdXJpbmcgY29weSBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MWMzYTFlMzhkYmZiOTM3MmUx
OGUxZGQyNWVlOTdkZmM2MGNlOTY0Li5iNDg2ZWIyM2U3MjdhZjEyYjc4NGU2NDJkODExYzg4OWNl
ZGFlYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA5LTE5ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIERvIG1vcmUgbWF0aCBpbiB0
ZXJtcyBvZiBGbG9hdFNpemVzIGFuZCBGbG9hdFBvaW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wZXJhdG9yLyhjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFNpemUmKSwgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoY29uc3QgRmxv
YXRQb2ludCYpCisgICAgICAgIGFuZCBGbG9hdFJlY3Quc2NhbGUoRmxvYXRTaXplKSBhbmQgdXNl
IHRoZW0gaW4gbG90cyBvZiBwbGFjZXMgdG8gZG8gbWF0aCBpbiB0ZXJtcyBvZiBwb2ludHMgYW5k
IHNpemVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0
OjpjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjppbWFnZUZvclJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhaW50U25hcHNob3RB
dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzbmFwc2hvdE5vZGUpOgorCiAyMDE3
LTA5LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE9uIGlP
UywgZ2V0RGF0YSBjYW4ndCBnZXQgdGV4dCBzZXQgYnkgc2V0RGF0YSBkdXJpbmcgY29weSBldmVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKaW5kZXggOWUwZGY4MGI3NmQ2NDhiZmZmNDA1YmZlOGM3OWUzNTJiMTIw
Y2M5YS4uYzI1YTAyMmJkMWY0ZDE1NjI1ZDg3OTBjMDBhYjcyNWNlMmFhMjhlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCkBAIC0xNjUxLDkgKzE2NTEsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlbywgYwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKICAgICBjLT5jbGlw
KGRzdFJlY3QpOwotICAgIGMtPnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOwor
ICAgIGMtPnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGMtPnNjYWxlKEZsb2F0
U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkg
LyBzcmNSZWN0LmhlaWdodCgpKSk7Ci0gICAgYy0+dHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNy
Y1JlY3QueSgpKTsKKyAgICBjLT50cmFuc2xhdGUoLXNyY1JlY3QubG9jYXRpb24oKSk7CiAgICAg
dmlkZW8ucGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoKmMsIEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIHNpemUodmlkZW8pKSk7CiAgICAgc3RhdGVTYXZlci5yZXN0b3JlKCk7CiAgICAgZGlkRHJh
dyhkc3RSZWN0KTsKQEAgLTE3NzgsOCArMTc3OCw4IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShU
CiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIEFm
ZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zvcm0gPSBjLT5nZXRDVE0oKTsKICAgICBJbnRS
ZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChlZmZlY3RpdmVU
cmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3QpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS50
cmFuc2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCkueCgpLCAtdHJhbnNm
b3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS55KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgp
LnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0LndpZHRoKCksIGNyb3BwZWRPZmZzZXQuaGVpZ2h0KCkp
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJl
Y3QubG9jYXRpb24oKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKGNyb3BwZWRP
ZmZzZXQpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3RpdmVUcmFuc2Zv
cm0pOwogICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCksIGFk
anVzdGVkRGVzdCwgc3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKIApAQCAtMjY0MiwxMiArMjY0
MiwxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJva2Up
OwogCiAgICAgICAgIGlmICh1c2VNYXhXaWR0aCkgewotICAgICAgICAgICAgbWFza0ltYWdlQ29u
dGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkg
LSBtYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUo
bG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgICAgIC8vIFdlIGRyYXcg
d2hlbiBmb250V2lkdGggaXMgMCBzbyBjb21wb3NpdGluZyBvcGVyYXRpb25zIChlZywgYSAiY29w
eSIgb3ApIHN0aWxsIHdvcmsuCiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxlKEZs
b2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwog
ICAgICAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0
UnVuLCBGbG9hdFBvaW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RS
ZWFkeSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRy
YW5zbGF0ZSgtbWFza1JlY3QueCgpLCAtbWFza1JlY3QueSgpKTsKKyAgICAgICAgICAgIG1hc2tJ
bWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgICAg
IGZvbnRQcm94eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwgdGV4dFJ1biwgbG9jYXRp
b24sIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQog
CkBAIC0yNjYzLDcgKzI2NjMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKICAgICBpZiAodXNlTWF4V2lk
dGgpIHsKLSAgICAgICAgYy0+dHJhbnNsYXRlKGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpKTsK
KyAgICAgICAgYy0+dHJhbnNsYXRlKGxvY2F0aW9uKTsKICAgICAgICAgLy8gV2UgZHJhdyB3aGVu
IGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBv
cCkgc3RpbGwgd29yay4KICAgICAgICAgYy0+c2NhbGUoRmxvYXRTaXplKChmb250V2lkdGggPiAw
ID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CiAgICAgICAgIGxvY2F0aW9uID0gRmxv
YXRQb2ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGlj
YXRvcldpbmRvdy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5k
b3cubW0KaW5kZXggOTQ1ZGFiMDllNWQzNTFiODNhMDA4OGRmN2MxYWIyYjQ4YjlkNDhlMC4uY2Qx
YTU2ZWU4NDk3NGY4MDM3YjFjZWE0Y2RjZmU4YzFkYWEwZTc4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xODMsNyArMTgzLDcgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9y
OihUZXh0SW5kaWNhdG9yJil0ZXh0SW4KIAogICAgICAgICBQYXRoIHRyYW5zbGF0ZWRQYXRoOwog
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKC1wYXRoQm91bmRpbmdSZWN0LngoKSwgLXBhdGhCb3VuZGluZ1JlY3QueSgpKTsKKyAg
ICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtcGF0aEJvdW5kaW5nUmVjdC5sb2NhdGlvbigpKTsK
ICAgICAgICAgdHJhbnNsYXRlZFBhdGguYWRkUGF0aChwYXRoLCB0cmFuc2Zvcm0pOwogCiAgICAg
ICAgIEZsb2F0UmVjdCBvZmZzZXRUZXh0UmVjdCA9IHBhdGhCb3VuZGluZ1JlY3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZS5jcHAKaW5kZXggN2U0ZDM3M2Q1NGNkMWQ1NjM0NzgzZjMxMmM5MGY5MmRk
MjE2N2RiYi4uODIyOWYxY2Y5N2FlMDFlNGQ4NjM2OGI0NmJhMjgyMWRjZDg5Mjg1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgVGhlbWU6OmRy
YXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGCiAKICAgICAvLyBEcmF3IGEgZ2VuZXJpYyBXaXJlbGVzcyBQbGF5YmFjayBpY29u
LgogCi0gICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUocmVjdC5zaXplKCkud2lkdGgoKSAvIDEw
MCwgcmVjdC5zaXplKCkuaGVpZ2h0KCkgLyAxMDApKTsKKyAgICBjb250ZXh0LnNjYWxlKHJlY3Qu
c2l6ZSgpIC8gMTAwKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSg4LCAxKTsKIAogICAgIFBhdGgg
b3V0bGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCAwMzYyNzRlOTEyNDU3YTUyNDg5
ZWQ3MjkxNzM4NTM4M2RjMTA1YzIyLi5lYzg1NmM4ZjdhZGEyZTI0ODViZjRkOTAzNDNmOTI0OTg2
MmIwNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRp
YyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIElt
YWdlJiBpbWFnZSwgQ29tcG9zCiAgICAgICAgIGNvbnRleHQuc2V0QWxwaGEob3BhY2l0eSk7CiAK
ICAgICBpZiAodGFyZ2V0U2l6ZSAhPSBpbWFnZVNpemUpCi0gICAgICAgIGNvbnRleHQuc2NhbGUo
RmxvYXRTaXplKHRhcmdldFNpemUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJnZXRT
aXplLmhlaWdodCgpIC8gaW1hZ2VTaXplLmhlaWdodCgpKSk7CisgICAgICAgIGNvbnRleHQuc2Nh
bGUodGFyZ2V0U2l6ZSAvIGltYWdlU2l6ZSk7CiAKICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZSwgSW50UG9pbnQoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoZHJhd0ltYWdlT3BlcmF0aW9uKSk7
CiAKQEAgLTkxLDEwICs5MSwxMCBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKICAgICBjb250ZXh0
LmNsaXAoZHN0UmVjdCk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJl
Y3QueSgpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAg
IGlmIChkc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgY29udGV4dC5z
Y2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0
LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNvbnRleHQudHJhbnNsYXRlKC1z
cmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShkc3RSZWN0
LnNpemUoKSAvIHNyY1JlY3Quc2l6ZSgpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc3JjUmVj
dC5sb2NhdGlvbigpKTsKICAgICAKICAgICBkcmF3Q3Jvc3NmYWRlKGNvbnRleHQpOwogICAgIHJl
dHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UmVjdC5oCmluZGV4IDM3NDVlMWYyOTQ5YTQ4NjM5YzQxZWY4ZDcxY2E1
NTdiOGQyMjMxM2MuLmU1NWYxN2JmYzlkNzRjNzQ0MWM5NmIwM2ZhNWRhNmY3YjMyY2I3MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCkBAIC05OCw3
ICs5OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZS5pc1plcm8oKTsgfQogICAgIGJvb2wgaXNFeHByZXNzaWJsZUFzSW50UmVjdCgpIGNvbnN0Owog
Ci0gICAgRmxvYXRQb2ludCBjZW50ZXIoKSBjb25zdCB7IHJldHVybiBGbG9hdFBvaW50KHgoKSAr
IHdpZHRoKCkgLyAyLCB5KCkgKyBoZWlnaHQoKSAvIDIpOyB9CisgICAgRmxvYXRQb2ludCBjZW50
ZXIoKSBjb25zdCB7IHJldHVybiBsb2NhdGlvbigpICsgc2l6ZSgpIC8gMjsgfQogCiAgICAgdm9p
ZCBtb3ZlKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIHsgbV9sb2NhdGlvbiArPSBkZWx0YTsgfSAK
ICAgICB2b2lkIG1vdmVCeShjb25zdCBGbG9hdFBvaW50JiBkZWx0YSkgeyBtX2xvY2F0aW9uLm1v
dmUoZGVsdGEueCgpLCBkZWx0YS55KCkpOyB9CkBAIC0xNjYsNiArMTY2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgaW5mbGF0ZShmbG9hdCBkKSB7IGluZmxhdGVYKGQpOyBpbmZsYXRlWShkKTsgfQog
ICAgIHZvaWQgc2NhbGUoZmxvYXQgcykgeyBzY2FsZShzLCBzKTsgfQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5KTsKKyAgICB2b2lkIHNjYWxlKEZsb2F0
U2l6ZSBzaXplKSB7IHNjYWxlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7IH0KIAogICAg
IEZsb2F0UmVjdCB0cmFuc3Bvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChtX2xv
Y2F0aW9uLnRyYW5zcG9zZWRQb2ludCgpLCBtX3NpemUudHJhbnNwb3NlZFNpemUoKSk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAppbmRleCA4MzE3
MTllYjdkY2NmODg1YmJhYTc0ZGU4MGJjMGVmZmQyYjdjN2Y4Li4xYzNkN2YxMjQ1OTY5ZTgxNmNk
NDFkNTk4Y2U2MDgxNTgzZWJiMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFNpemUuaApAQCAtMjAyLDYgKzIwMiwxMSBAQCBpbmxpbmUgRmxvYXRTaXplIG9w
ZXJhdG9yKihjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKICAgICByZXR1
cm4gRmxvYXRTaXplKGEud2lkdGgoKSAqIGIud2lkdGgoKSwgYS5oZWlnaHQoKSAqIGIuaGVpZ2h0
KCkpOwogfQogCitpbmxpbmUgRmxvYXRTaXplIG9wZXJhdG9yLyhjb25zdCBGbG9hdFNpemUmIGEs
IGNvbnN0IEZsb2F0U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gRmxvYXRTaXplKGEud2lkdGgoKSAv
IGIud2lkdGgoKSwgYS5oZWlnaHQoKSAvIGIuaGVpZ2h0KCkpOworfQorCiBpbmxpbmUgRmxvYXRT
aXplIG9wZXJhdG9yLyhjb25zdCBGbG9hdFNpemUmIGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJu
IEZsb2F0U2l6ZShhLndpZHRoKCkgLyBiLCBhLmhlaWdodCgpIC8gYik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGVjOGRl
ZWZkYTY2ZWRmNzQxMGM3NDNjNDJjYmIxMGVkMzQ4ZGVhNTQuLjc2MGRiNjY0ZmYwZWZlNGI4MTFj
MTExMTQ5YTlkMjc5ZDk5NTI4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC00NiwxMCArNDYsMTAgQEAgSW1hZ2VEcmF3
UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWMKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
ZGVzdENvbnRleHQpOwogICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21w
b3NpdGVPcCwgYmxlbmRNb2RlKTsKICAgICBkZXN0Q29udGV4dC5jbGlwKGRlc3RSZWN0KTsKLSAg
ICBkZXN0Q29udGV4dC50cmFuc2xhdGUoZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkpOworICAg
IGRlc3RDb250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVz
dFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQotICAgICAgICBkZXN0Q29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZGVzdFJlY3Qu
aGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7Ci0gICAgZGVzdENvbnRleHQudHJhbnNsYXRl
KC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICAgICAgZGVzdENvbnRleHQuc2NhbGUo
ZGVzdFJlY3Quc2l6ZSgpIC8gc3JjUmVjdC5zaXplKCkpOworICAgIGRlc3RDb250ZXh0LnRyYW5z
bGF0ZSgtc3JjUmVjdC5sb2NhdGlvbigpKTsKICAgICBkZXN0Q29udGV4dC5maWxsUmVjdChGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCBtX2dyYWRpZW50LmdldCgpKTsKICAgICByZXR1
cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggOThmOGEwMzQwNDhj
MjBkNmQwYWEwOTZhMGE3M2IyMjU3NTIzZjNjOC4uOTU4N2U2Nzg4YjVhNmY2ZDMxMTQxMzY1NjM4
MzY1ZmM4NGYxMzVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBGbG9hdFNpemUg
R3JhcGhpY3NDb250ZXh0OjpzY2FsZUZhY3RvckZvckRyYXdpbmcoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29ucwogewogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0o
R3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICBhdXRv
IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB0cmFuc2Zvcm0ubWFwUmVjdChkZXN0UmVjdCk7Ci0gICAg
cmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybWVkRGVzdFJlY3Qud2lkdGgoKSAv
IHNyY1JlY3Qud2lkdGgoKSksIHN0YXRpY19jYXN0PGZsb2F0Pih0cmFuc2Zvcm1lZERlc3RSZWN0
LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkgfTsKKyAgICByZXR1cm4gdHJhbnNmb3JtZWRE
ZXN0UmVjdC5zaXplKCkgLyBzcmNSZWN0LnNpemUoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYjgyNDRh
OTY3MWZkM2U2YzNlNzMxZjNhNTcxZDNiZWQzMTE4NDM1Yy4uNGQzZmJlNzgxZjYxMGNiZWQ4M2Zk
Y2RkZjE4NDZkNWI2ZDZmOGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ3Niw2ICs0NzYsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKICAgICB2b2lk
IHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7CiAgICAgdm9pZCB0cmFuc2xhdGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKSB7IHRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
OyB9CisgICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCYgcCkgeyB0cmFuc2xhdGUo
cC54KCksIHAueSgpKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJhbnNsYXRlKGZsb2F0
IHgsIGZsb2F0IHkpOwogCiAgICAgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYsIGNvbnN0
IEZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
CmluZGV4IGI5ZGYyODVmMTdhNmE1ZDE2MWE5ODc5NTVjYTIwMmNhMDVhMWY4NzcuLjBmZWIyZDI3
YmRkZTEyODU1ZTY2Mjk3ZGMwMWMzMzNkODU3ZDhiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEyNSwxMSArMTI1LDEwIEBAIEltYWdlRHJhd1Jl
c3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjCiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCiAgICAgICAgIGludHJp
bnNpY1RpbGVTaXplLnNldEhlaWdodChzY2FsZWRUaWxlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBG
bG9hdFNpemUgc2NhbGUoc2NhbGVkVGlsZVNpemUud2lkdGgoKSAvIGludHJpbnNpY1RpbGVTaXpl
LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgIHNjYWxlZFRpbGVTaXplLmhlaWdodCgpIC8g
aW50cmluc2ljVGlsZVNpemUuaGVpZ2h0KCkpOworICAgIEZsb2F0U2l6ZSBzY2FsZShzY2FsZWRU
aWxlU2l6ZSAvIGludHJpbnNpY1RpbGVTaXplKTsKIAogICAgIEZsb2F0UmVjdCBvbmVUaWxlUmVj
dDsKLSAgICBGbG9hdFNpemUgYWN0dWFsVGlsZVNpemUoc2NhbGVkVGlsZVNpemUud2lkdGgoKSAr
IHNwYWNpbmcud2lkdGgoKSwgc2NhbGVkVGlsZVNpemUuaGVpZ2h0KCkgKyBzcGFjaW5nLmhlaWdo
dCgpKTsKKyAgICBGbG9hdFNpemUgYWN0dWFsVGlsZVNpemUgPSBzY2FsZWRUaWxlU2l6ZSArIHNw
YWNpbmc7CiAgICAgb25lVGlsZVJlY3Quc2V0WChkZXN0UmVjdC54KCkgKyBmbW9kZihmbW9kZigt
c3JjUG9pbnQueCgpLCBhY3R1YWxUaWxlU2l6ZS53aWR0aCgpKSAtIGFjdHVhbFRpbGVTaXplLndp
ZHRoKCksIGFjdHVhbFRpbGVTaXplLndpZHRoKCkpKTsKICAgICBvbmVUaWxlUmVjdC5zZXRZKGRl
c3RSZWN0LnkoKSArIGZtb2RmKGZtb2RmKC1zcmNQb2ludC55KCksIGFjdHVhbFRpbGVTaXplLmhl
aWdodCgpKSAtIGFjdHVhbFRpbGVTaXplLmhlaWdodCgpLCBhY3R1YWxUaWxlU2l6ZS5oZWlnaHQo
KSkpOwogICAgIG9uZVRpbGVSZWN0LnNldFNpemUoc2NhbGVkVGlsZVNpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGVhMmRk
NWQ1ODkyYTVjZDJiYmRiYWI4NDU3YjIxMmU4ZWM3ODU3YTcuLjdkYjU0OGI1YjExYWE5NjRiNDk5
NDRkMGZjZTk5NTI4OGQ5NWFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgRmxvYXRTaXplIEltYWdl
QnVmZmVyOjpjbGFtcGVkU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIEZsb2F0U2l6ZSYgc2Nh
bGUpCiAgICAgICAgIHJldHVybiBzaXplOwogCiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0g
SW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKHNpemUpOwotICAgIHNjYWxlID0gRmxvYXRTaXplKGNs
YW1wZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCksIGNsYW1wZWRTaXplLmhlaWdodCgpIC8g
c2l6ZS5oZWlnaHQoKSk7CisgICAgc2NhbGUgPSBjbGFtcGVkU2l6ZSAvIHNpemU7CiAgICAgQVNT
RVJUKCFzaXplTmVlZHNDbGFtcGluZyhjbGFtcGVkU2l6ZSkpOwogICAgIEFTU0VSVCghc2l6ZU5l
ZWRzQ2xhbXBpbmcoc2l6ZSwgc2NhbGUpKTsKICAgICByZXR1cm4gY2xhbXBlZFNpemU7CkBAIC0y
MTEsNyArMjExLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBTZXQgdXAgYSBjb3JyZXNwb25kaW5nIHNjYWxlIGZhY3RvciBvbiB0
aGUgZ3JhcGhpY3MgY29udGV4dC4KLSAgICBidWZmZXItPmNvbnRleHQoKS5zY2FsZShGbG9hdFNp
emUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgp
IC8gc2l6ZS5oZWlnaHQoKSkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNp
emUgLyBzaXplKTsKICAgICByZXR1cm4gYnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKaW5kZXggNjRkMmQ5MDA2MTIyNzcxYTAzYmIy
ODY2NjUxZTY1YmZhNzAxYjkxZi4uMmFlMDNiNjQ0NGMyMzI4MWNjMWU0OTYxYTc3ZDg3ZjhiMGY4
YjRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0
U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUu
aApAQCAtMTM2LDcgKzEzNiw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTGF5
b3V0VW5pdCBtX3dpZHRoLCBtX2hlaWdodDsKKyAgICBMYXlvdXRVbml0IG1fd2lkdGg7CisgICAg
TGF5b3V0VW5pdCBtX2hlaWdodDsKIH07CiAKIGlubGluZSBMYXlvdXRTaXplJiBvcGVyYXRvcis9
KExheW91dFNpemUmIGEsIGNvbnN0IExheW91dFNpemUmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmNwcAppbmRleCA4YjNkNGI4MDM4YWQ2YWZmN2YwYTRmMWIxYzg1ODZhMTU5NWU4MGRjLi45YmUy
ZWRhOGFmNGNlNGE4NWRhNTA0ZjAyZjAzMWFlNTE4N2MzODUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5jcHAKQEAgLTQ2LDEwICs0NiwxMCBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRgogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250
ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKICAgICBj
b250ZXh0LmNsaXAoZHN0UmVjdCk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCks
IGRzdFJlY3QueSgpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkp
OwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKICAgICAgICAgY29u
dGV4dC5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBk
c3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNvbnRleHQudHJhbnNs
YXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgt
c3JjUmVjdC5sb2NhdGlvbigpKTsKIAogICAgIFRoZW1lOjpzaW5nbGV0b24oKS5kcmF3TmFtZWRJ
bWFnZShtX25hbWUsIGNvbnRleHQsIGRzdFJlY3QpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZERyYXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmlu
ZGV4IDQ1NGJjNTMxYmIzZDk5OWY5NzgyNmQyMTY1M2FjYjI0YTNlNWQ1MWQuLjI5NjkyYWFmYTg4
ZjBiNWQ3OWNmOTNjMzljYjdmMzRmNGUyZTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFk
aWksCiAgICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0U2l6ZSByYWRpdXMocm91bmRpbmdSYWRp
aSk7Ci0gICAgRmxvYXRTaXplIGhhbGZTaXplKHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QuaGVpZ2h0
KCkgLyAyKTsKKyAgICBGbG9hdFNpemUgaGFsZlNpemUgPSByZWN0LnNpemUoKSAvIDI7CiAKICAg
ICAvLyBBcHBseSB0aGUgU1ZHIGNvcm5lciByYWRpdXMgY29uc3RyYWludHMsIHBlciB0aGUgcmVj
dCBzZWN0aW9uIG9mIHRoZSBTVkcgc2hhcGVzIHNwZWM6IGlmCiAgICAgLy8gb25lIG9mIHJ4LHJ5
IGlzIG5lZ2F0aXZlLCB0aGVuIHRoZSBvdGhlciBjb3JuZXIgcmFkaXVzIHZhbHVlIGlzIHVzZWQu
IElmIGJvdGggdmFsdWVzIGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkMjRjMTBmMTZhNjg2ZjFhNDYwMDg4
ZWIxNjQzMDRmMmJjZGI0MDNmLi4xNDYxZTI4YzJlN2Q2ZTA0MGQ2NmZhNTc3ODA5OGYyMWJiYTk0
NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRT
aXplCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gU2V0IHVwIGEgY29ycmVzcG9u
ZGluZyBzY2FsZSBmYWN0b3Igb24gdGhlIGdyYXBoaWNzIGNvbnRleHQuCi0gICAgYnVmZmVyLT5j
b250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKHNjYWxlZFNpemUud2lkdGgoKSAvIHNpemUud2lkdGgo
KSwgc2NhbGVkU2l6ZS5oZWlnaHQoKSAvIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBidWZmZXItPmNv
bnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcAppbmRleCAyNDI5YjRiYjc5YjM1N2E3MTY4MzM5ODg4NjAwOWEzZjdh
MzAxYjI2Li5lYzg0ZjZmMDFlNTEyZGE4MWVhMGY3ZGRhMmMyYjE2NjI1Njk2OTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjCiAg
ICAgLy8gZHJhd1BERlBhZ2UoKSByZWxpZXMgb24gZHJhd2luZyB0aGUgd2hvbGUgUERGIGludG8g
YSBjb250ZXh0IHN0YXJ0aW5nIGF0ICgwLCAwKS4gV2UgbmVlZAogICAgIC8vIHRvIHRyYW5zZm9y
bSB0aGUgZGVzdGluYXRpb24gY29udGV4dCBzdWNoIHRoYXQgc3JjUmVjdCBvZiB0aGUgc291cmNl
IGNvbnRleHQgd2lsbCBiZSBkcmF3bgogICAgIC8vIGluIGRzdFJlY3Qgb2YgZGVzdGluYXRpb24g
Y29udGV4dC4KLSAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSAtIHNyY1JlY3QueCgp
LCBkc3RSZWN0LnkoKSAtIHNyY1JlY3QueSgpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RS
ZWN0LmxvY2F0aW9uKCkgLSBzcmNSZWN0LmxvY2F0aW9uKCkpOwogICAgIGNvbnRleHQuc2NhbGUo
RmxvYXRTaXplKGhTY2FsZSwgLXZTY2FsZSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1z
cmNSZWN0LmhlaWdodCgpKTsKIH0KQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBhcHBs
eVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBGbG9hdFNpemUg
c2l6ZSwgaQogICAgIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gOTApCiAgICAgICAgIGNvbnRleHQu
dHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVl
cyA9PSAxODApCi0gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNpemUpOwogICAgIGVsc2UgaWYg
KHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNpemUu
d2lkdGgoKSwgMCk7CiAKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhcHBseVJvdGF0
aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgc2l6ZSgpLCBtX3JvdGF0aW9uRGVncmVlcyk7CiAKLSAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LngoKSwgLW1fY3JvcEJveC55KCkpOworICAg
IGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24oKSk7CiAKICNpZiBVU0UoRElS
RUNUMkQpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCA5NjNmMWE1OTM2Yjk1ZThl
NjEzYjhiMmQ0YjVhMjRmNDM1OTMzZDBjLi5iNGJkNjhmMzIzYTQ4N2U4MmI5M2ZhOWJkZmQ4Mjhl
ZWY0ZmYxNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxl
SW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07Ci0gICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUo
aW5NYXhFZmZlY3RMb2NhdGlvbi54KCkgLSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZm
ZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICBwYXR0ZXJuVHJh
bnNmb3JtLnRyYW5zbGF0ZShpbk1heEVmZmVjdExvY2F0aW9uIC0gbWF4RWZmZWN0TG9jYXRpb24p
OwogICAgIHBhdHRlcm4uZ2V0KCkuc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKHBhdHRlcm5UcmFu
c2Zvcm0pOwogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdl
LT5jb250ZXh0KCk7CiAgICAgZmlsdGVyQ29udGV4dC5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBh
dHRlcm4pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcAppbmRleCA2Zjk1NjQ2MTgwZTIy
NDg4ZGJiN2NhZjdjMDliMWI4MDRlN2MwOTYzLi5lZWJmMjI4YTFjNDkzNGQ4MjYzMjgwZDg2ZGY2
MzcxYzVmNGZhZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCkBAIC0yMDIsNiAr
MjAyLDExIEBAIEFmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGUoY29u
c3QgRmxvYXRQb2ludCYgdCkKICAgICByZXR1cm4gdHJhbnNsYXRlKHQueCgpLCB0LnkoKSk7CiB9
CiAKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGUoY29uc3QgRmxv
YXRTaXplJiB0KQoreworICAgIHJldHVybiB0cmFuc2xhdGUodC53aWR0aCgpLCB0LmhlaWdodCgp
KTsKK30KKwogQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OnJvdGF0ZUZyb21WZWN0
b3IoZG91YmxlIHgsIGRvdWJsZSB5KQogewogICAgIHJldHVybiByb3RhdGUocmFkMmRlZyhhdGFu
Mih5LCB4KSkpOwpAQCAtMjQ5LDcgKzI1NCw3IEBAIEFmZmluZVRyYW5zZm9ybSBtYWtlTWFwQmV0
d2VlblJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFJlY3QmIGRlCiB7
CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KGRlc3QueCgpIC0gc291cmNlLngoKSwgZGVzdC55KCkgLSBzb3VyY2UueSgpKTsKLSAgICB0cmFu
c2Zvcm0uc2NhbGUoZGVzdC53aWR0aCgpIC8gc291cmNlLndpZHRoKCksIGRlc3QuaGVpZ2h0KCkg
LyBzb3VyY2UuaGVpZ2h0KCkpOworICAgIHRyYW5zZm9ybS5zY2FsZShkZXN0LnNpemUoKSAvIHNv
dXJjZS5zaXplKCkpOwogICAgIHJldHVybiB0cmFuc2Zvcm07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3Jt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRy
YW5zZm9ybS5oCmluZGV4IDY4YmI1MjU2MThjNjA5YzkyMmY2OWU2OWRhZTkyNWUwMzFmNDFiNjgu
LjRmMDM0YjBlYzY1ZjlhYjZiMzQ2YTNlZDdhMzkxYzI5NjA0YWRjNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3Jt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZp
bmVUcmFuc2Zvcm0uaApAQCAtMTEyLDEyICsxMTIsMTMgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIEFmZmluZVRyYW5zZm9ybSYgbXVsdGlwbHkoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBv
dGhlcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUp
OwogICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpOyAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlTm9uVW5pZm9ybShkb3VibGUg
c3gsIGRvdWJsZSBzeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3JtJiBzY2Fs
ZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpOyAvLyBTYW1lIGFzIHNjYWxlKHN4LCBz
eSkuCiAgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShjb25zdCBGbG9h
dFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIHJvdGF0ZShkb3Vi
bGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSYgcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91
YmxlIHkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9ybSYgdHJhbnNsYXRlKGRv
dWJsZSB0eCwgZG91YmxlIHR5KTsKICAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgQWZmaW5lVHJhbnNmb3JtJiBzaGVhcihkb3VibGUgc3gsIGRvdWJsZSBzeSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3JtJiBmbGlwWCgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IEFmZmluZVRyYW5zZm9ybSYgZmxpcFkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCAwNzJlMmI0MmQ1MGNjYzdlOTlhMmU2Mzdh
NTg4ZDMxNDVkZDAyMDIyLi43MTJjNDQ5YTBkYjY1NjRkZjZjYTgwN2MwODMyZDFkZTFhNjFmMzlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFj
Lm1tCkBAIC01NTQsNyArNTU0LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAKICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgY29u
dGV4dC5jbGlwKGRhbWFnZVJlY3QpOwotICAgIGNvbnRleHQudHJhbnNsYXRlKHNjcm9sbGJhci5m
cmFtZVJlY3QoKS54KCksIHNjcm9sbGJhci5mcmFtZVJlY3QoKS55KCkpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKHNjcm9sbGJhci5mcmFtZVJlY3QoKS5sb2NhdGlvbigpKTsKICAgICBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwogICAgIHNjcm9sbGVy
SW1wUGFpbnQoc2Nyb2xsYmFyTWFwKCktPmdldCgmc2Nyb2xsYmFyKS5nZXQoKSwgc2Nyb2xsYmFy
LmVuYWJsZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRl
eCA1Y2RlNTQ4OGE5ZjEwMDU2ZGZkMjQ1MjAxZDIyMGQ2NGIzYjMxMmE1Li5lZWU1MjhmMTIyNzRl
YjA2YTZmMDZjYTI0ZDRmMDUyNzdmYTdlODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCkBAIC00MTUsOSArNDE1LDkgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVC
dXR0b24oQ29udHJvbFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQK
ICAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBmKSB7CiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRX
aWR0aChpbmZsYXRlZFJlY3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICBpbmZsYXRl
ZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwotICAg
ICAgICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgp
KTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwog
ICAgICAgICBjb250ZXh0LnNjYWxlKHpvb21GYWN0b3IpOwotICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIH0KIAogICAgIExv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CkBAIC00Mjks
NyArNDI5LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJvbFBhcnQgYnV0
dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQKICAgICBib29sIGlzQ2VsbEZvY3Vz
ZWQgPSBjb250cm9sU3RhdGVzLnN0YXRlcygpICYgQ29udHJvbFN0YXRlczo6Rm9jdXNTdGF0ZTsK
IAogICAgIGlmIChbdG9nZ2xlQnV0dG9uQ2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5nXSkgewot
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3Qu
eSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkp
OwogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgwLCAtaW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKIApAQCAtNTQwLDkgKzU0
MCw5IEBAIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xT
dGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzCiAgICAgICAgIGlmICh6b29tRmFjdG9yICE9
IDEuMGYpIHsKICAgICAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qu
d2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdo
dChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOworICAgICAg
ICAgICAgY29udGV4dC50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgICAg
ICAgICAgY29udGV4dC5zY2FsZSh6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGNvbnRleHQudHJh
bnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIApAQCAtNjExLDkgKzYxMSw5IEBAIHN0YXRpYyB2b2lkIHBhaW50U3RlcHBl
cihDb250cm9sU3RhdGVzJiBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QK
ICAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBmKSB7CiAgICAgICAgIHJlY3Quc2V0V2lkdGgocmVj
dC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVp
Z2h0KCkgLyB6b29tRmFjdG9yKTsKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUocmVjdC54KCks
IHJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUocmVjdC5sb2NhdGlvbigpKTsK
ICAgICAgICAgY29udGV4dC5zY2FsZSh6b29tRmFjdG9yKTsKLSAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoLXJlY3QueCgpLCAtcmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgt
cmVjdC5sb2NhdGlvbigpKTsKICAgICB9CiAgICAgQ0dSZWN0IGJvdW5kcyhyZWN0KTsKICAgICBD
R1JlY3QgYmFja2dyb3VuZEJvdW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGU1YmYwNGRiMjNkMmFjYjk3OTVhMzJlOWE0
OGU4M2IyYjM4NTJmOTMuLjEzZTRmYTI4YjEzNWFjNDMxYjQxNTQ2ZDk2OGQ2MGE2NzE1MTFhYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6
OmJlZ2luRmlsdGVyRWZmZWN0KCkKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgY29udGV4dCBzbyB0
aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgbGF5ZXIgaXMgY2FwdHVyZWQgaW4gdGhlIG9mZnNjcmVl
biBtZW1vcnkgYnVmZmVyLgogICAgIHNvdXJjZUdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAg
IHNvdXJjZUdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1tX3BhaW50T2Zmc2V0LngoKSwgLW1f
cGFpbnRPZmZzZXQueSgpKTsKKyAgICBzb3VyY2VHcmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgt
bV9wYWludE9mZnNldCk7CiAgICAgc291cmNlR3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QobV9y
ZXBhaW50UmVjdCk7CiAgICAgc291cmNlR3JhcGhpY3NDb250ZXh0LT5jbGlwKG1fcmVwYWludFJl
Y3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAppbmRleCA0NjRhMzYzMzJkZTJjZjA3OTdmNmYwYjU4Y2IzYzlhMGNiYTA2OGU5Li5l
YzIxNmZiMjQ3YjZkN2MxMTNiODFkMTgwMTllMzQzMjgwY2QzMmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTY4NSw3ICs2
ODUsNyBAQCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2hvb3Nl
SW50ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhpY3NDbwogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3Qg
SW50UmVjdCYgbWFza1JlY3QsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYg
c2Nyb2xsZWRQYWludFJlY3QpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xh
dGUoLW1hc2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7CisgICAgbWFza0ltYWdlQ29udGV4dC50
cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgdGV4
dCB0byB0aGUgY2xpcC4gV2UgZG8gdGhpcyBieSBwYWludGluZyB1c2luZyBhIHNwZWNpYWwgcGFp
bnQgcGhhc2UgdGhhdCBzaWduYWxzIHRvCiAgICAgLy8gSW5saW5lVGV4dEJveGVzIHRoYXQgdGhl
eSBzaG91bGQganVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCkBAIC0yNDM3LDcg
KzI0MzcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25z
dCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgIGNvbnRl
eHQuY2xpcChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSk7CiAKICAgICAgICAgICAgIElu
dFNpemUgZXh0cmFPZmZzZXQoMiAqIHJvdW5kVG9JbnQocGFpbnRSZWN0LndpZHRoKCkpICsgc3Rk
OjptYXgoMCwgc2hhZG93T2Zmc2V0LndpZHRoKCkpICsgc2hhZG93UGFpbnRpbmdFeHRlbnQgLSAy
ICogc2hhZG93U3ByZWFkICsgMSwgMCk7Ci0gICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShl
eHRyYU9mZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CisgICAgICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZShleHRyYU9mZnNldCk7CiAgICAgICAgICAgICBzaGFkb3dPZmZzZXQg
LT0gZXh0cmFPZmZzZXQ7CiAKICAgICAgICAgICAgIGlmIChzaGFkb3ctPmlzV2Via2l0Qm94U2hh
ZG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcAppbmRleCBkYjM4YzczM2JiYjIxODQ4NWZkNDJkNTAwODNhMWNhZDdlNGQxODg5Li43
YjMxNmQwYmNmYWE2MjUyZTc0ODQ4YjllMDA1NmVmYmMwYjE4YzI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTM3OSw5ICsz
NzksNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRSZXBsYWNlbWVudFRleHRHZW9t
ZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bAogICAgIHRleHRXaWR0aCA9IGZvbnQud2lk
dGgocnVuKTsKIAogICAgIHJlcGxhY2VtZW50VGV4dFJlY3Quc2V0U2l6ZShGbG9hdFNpemUodGV4
dFdpZHRoICsgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RMZWZ0VGV4dE1hcmdpbiArIChpbmNs
dWRlc0Fycm93ID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSaWdodFRleHRNYXJnaW5XaXRo
QXJyb3cgOiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJpZ2h0VGV4dE1hcmdpbiksIHJlcGxh
Y2VtZW50VGV4dFJvdW5kZWRSZWN0SGVpZ2h0KSk7Ci0gICAgZmxvYXQgeCA9IChjb250ZW50UmVj
dC5zaXplKCkud2lkdGgoKSAvIDIgLSByZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS53aWR0aCgp
IC8gMikgKyBjb250ZW50UmVjdC5sb2NhdGlvbigpLngoKTsKLSAgICBmbG9hdCB5ID0gKGNvbnRl
bnRSZWN0LnNpemUoKS5oZWlnaHQoKSAvIDIgLSByZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5o
ZWlnaHQoKSAvIDIpICsgY29udGVudFJlY3QubG9jYXRpb24oKS55KCk7Ci0gICAgcmVwbGFjZW1l
bnRUZXh0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KHgsIHkpKTsKKyAgICByZXBsYWNlbWVu
dFRleHRSZWN0LnNldExvY2F0aW9uKGNvbnRlbnRSZWN0LmxvY2F0aW9uKCkgKyAoY29udGVudFJl
Y3Quc2l6ZSgpIC8gMiAtIHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgpIC8gMikpOwogCiAgICAg
aW5kaWNhdG9yUmVjdCA9IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDJlNDc0MDA0MTk1MjJmMGMzYWY4NmIzYzJhZTI4
OGUyMTA4NTRlZjcuLjI1MTM5ZTk5ZGE2MjVmYTZjZTJlZDBmZjIyN2NjYzQ4Y2Y4YmQ5ZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNzExNSw3ICs3MTE1
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW4KICAgICBMYXlvdXRTaXplIG1vdmVPZmZzZXQg
PSByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uTG9jYXRpb24oKSAtIChwYWludE9mZnNldCArIHJl
Z2lvbkNvbnRlbnRCb3gubG9jYXRpb24oKSkgKyB0b0xheW91dFNpemUocmVnaW9uLT5mcmFnbWVu
dENvbnRhaW5lcigpLnNjcm9sbFBvc2l0aW9uKCkpOwogICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQ
YWludE9mZnNldCA9IHJvdW5kUG9pbnRUb0RldmljZVBpeGVscyh0b0xheW91dFBvaW50KG1vdmVP
ZmZzZXQpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAg
Y29udGV4dC5zYXZlKCk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUoLWFkanVzdGVkUGFpbnRPZmZz
ZXQueCgpLCAtYWRqdXN0ZWRQYWludE9mZnNldC55KCkpOworICAgIGNvbnRleHQudHJhbnNsYXRl
KC1hZGp1c3RlZFBhaW50T2Zmc2V0KTsKIAogICAgIExheW91dFNpemUgc3VicGl4ZWxPZmZzZXQg
PSBtb3ZlT2Zmc2V0IC0gdG9MYXlvdXRTaXplKExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZz
ZXQpKTsKICAgICBwYWludERpcnR5UmVjdC5tb3ZlKG1vdmVPZmZzZXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA4Y2I5NzRlZDIx
OGEzNWRhY2MyMzRhYmJlZGE1YjdmZjVhZmYzNTAxLi4wZWYxMmM3ZjdhZjU0NzUyOGM1ZDhjZTRl
NGIyOGIxZWJkYTJlNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcApAQCAtMjYxNyw3ICsyNjE3LDcgQEAgdm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
R3JhcGgKICAgICB9IGVsc2UgaWYgKGdyYXBoaWNzTGF5ZXIgPT0gbGF5ZXJGb3JTY3JvbGxDb3Ju
ZXIoKSkgewogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBzY3JvbGxDb3JuZXJBbmRSZXNpemVy
ID0gbV9vd25pbmdMYXllci5zY3JvbGxDb3JuZXJBbmRSZXNpemVyUmVjdCgpOwogICAgICAgICBj
b250ZXh0LnNhdmUoKTsKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lckFu
ZFJlc2l6ZXIueCgpLCAtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci55KCkpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci5sb2NhdGlvbigpKTsKICAgICAg
ICAgTGF5b3V0UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBMYXlvdXRSZWN0KGNsaXApOwogICAgICAg
ICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9sbENvcm5lckFuZFJlc2l6ZXIubG9jYXRpb24o
KSk7CiAgICAgICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgSW50
UG9pbnQoKSwgc25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDA2ZTcx
MDA4YTAzOTNiODg4YmI0MDg1ZmI1ZDczNjc5OTQzMWE5MTAuLjczMjkwYzE2OGEwNDkxOWZkZWM3
YjI5OTIxNjIyMTc4NjFlMTMzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yODg4LDcgKzI4ODgsNyBAQCB2b2lkIHBh
aW50U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlYwogCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29uc3QgSW50UmVj
dCYgc2Nyb2xsYmFyUmVjdCA9IHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7Ci0gICAgY29udGV4dC50
cmFuc2xhdGUoLXNjcm9sbGJhclJlY3QueCgpLCAtc2Nyb2xsYmFyUmVjdC55KCkpOworICAgIGNv
bnRleHQudHJhbnNsYXRlKC1zY3JvbGxiYXJSZWN0LmxvY2F0aW9uKCkpOwogICAgIEludFJlY3Qg
dHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9s
bGJhclJlY3QubG9jYXRpb24oKSk7CiAgICAgc2Nyb2xsYmFyLT5wYWludChjb250ZXh0LCB0cmFu
c2Zvcm1lZENsaXApOwpAQCAtMjkwNSw3ICsyOTA1LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
R3IKICAgICBlbHNlIGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkp
IHsKICAgICAgICAgY29uc3QgSW50UmVjdCYgc2Nyb2xsQ29ybmVyID0gbV9yZW5kZXJWaWV3LmZy
YW1lVmlldygpLnNjcm9sbENvcm5lclJlY3QoKTsKICAgICAgICAgY29udGV4dC5zYXZlKCk7Ci0g
ICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1zY3JvbGxDb3JuZXIueCgpLCAtc2Nyb2xsQ29ybmVy
LnkoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1zY3JvbGxDb3JuZXIubG9jYXRpb24o
KSk7CiAgICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gcGl4ZWxTbmFwcGVkUmVjdEZv
ckludGVncmFsUG9zaXRpb25lZEl0ZW1zOwogICAgICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5
KHNjcm9sbENvcm5lci5sb2NhdGlvbigpKTsKICAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpLnBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIHRyYW5zZm9ybWVkQ2xpcCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKaW5kZXggMTNj
ZWYxNjJmNWQ0YjdkYzVkZGRmNDA0NzkyYWRkNDUwZjgwNWFiMi4uM2U4YTc2MjZjODE3YWNmMDYy
YjA0NmJmZTk4YzU0ZTA3NjMwZmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcApAQCAtOTEsMTEgKzkxLDEwIEBAIHN0YXRpYyBGbG9h
dFJlY3QgZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQoY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjCiAgICAgZmxvYXQgem9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKTsKICAgICBGbG9hdFJlY3QgdW56b29tZWRSZWN0KG9yaWdpbmFsUmVjdCk7CiAgICAgaWYg
KHpvb21MZXZlbCAhPSAxLjBmKSB7Ci0gICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpv
b21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHVuem9vbWVkUmVjdC5zZXRI
ZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0Lnko
KSk7CisgICAgICAgIHVuem9vbWVkUmVjdC5zZXRTaXplKHVuem9vbWVkUmVjdC5zaXplKCkgLyB6
b29tTGV2ZWwpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21l
ZFJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoem9v
bUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVk
UmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC5sb2NhdGlvbigpKTsKICAgICB9CiAgICAgcmV0dXJu
IHVuem9vbWVkUmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQppbmRleCBmMDBjODM5N2I1OGE0MWFhOTMxMjhhMjI2YWFlNzVhNmZiOWFjNTRlLi41YTIz
MDViYTJlOGYxNjM2MzU1OTJhY2NiNzA3MTNjMmY1NDQ3NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC05NDksOSArOTQ5LDkgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBQYWludEluZm8KICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgaW5m
bGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAg
ICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29t
TGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZShpbmZsYXRlZFJl
Y3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50
cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLnNjYWxlKHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJh
bnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAg
ICAgfQogCiAgICAgcGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnRJZk5l
Y2Vzc2FyeShwb3B1cEJ1dHRvbiwgcmVuZGVyZXIsIHBhaW50SW5mbywgaW5mbGF0ZWRSZWN0KTsK
QEAgLTE1ODMsMTEgKzE1ODMsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJU
aHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKIAogICAgIEZs
b2F0UmVjdCB1bnpvb21lZFJlY3QgPSBib3VuZHM7CiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBm
KSB7Ci0gICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAv
IHpvb21MZXZlbCk7Ci0gICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0
LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFu
c2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHVuem9v
bWVkUmVjdC5zZXRTaXplKHVuem9vbWVkUmVjdC5zaXplKCkgLyB6b29tTGV2ZWwpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QubG9jYXRpb24oKSk7
CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoem9vbUxldmVsKTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21l
ZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9v
bWVkUmVjdC5sb2NhdGlvbigpKTsKICAgICB9CiAKICAgICBib29sIHNob3VsZERyYXdDZWxsID0g
dHJ1ZTsKQEAgLTE2MTYsOSArMTYxNSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2Vh
cmNoRmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiAgICAg
aWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1
bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5z
ZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0
LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVj
dC5sb2NhdGlvbigpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZSh6b29tTGV2
ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0
LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRy
YW5zbGF0ZSgtdW56b29tZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIH0KIAogICAgIC8vIFNldCB0
aGUgc2VhcmNoIGJ1dHRvbiB0byBuaWwgYmVmb3JlIGRyYXdpbmcuICBUaGVuIHJlc2V0IGl0IHNv
IHdlIGNhbiBkcmF3IGl0IGxhdGVyLgpAQCAtMTc0MiwxMSArMTc0MSwxMCBAQCBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlckJveCYg
Ym94LCBjb25zdCBQYQogCiAgICAgRmxvYXRSZWN0IHVuem9vbWVkUmVjdChwYWludGluZ1Bvcywg
bG9jYWxCb3VuZHMuc2l6ZSgpKTsKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKLSAgICAg
ICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVs
KTsKLSAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkg
LyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpv
b21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgdW56b29tZWRSZWN0LnNl
dFNpemUodW56b29tZWRSZWN0LnNpemUoKSAvIHpvb21MZXZlbCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZSh6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0Lmxv
Y2F0aW9uKCkpOwogICAgIH0KICAgICBbW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxsXSBkcmF3V2l0
aEZyYW1lOnVuem9vbWVkUmVjdCBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKGJveCldOwogICAgIFtb
c2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIHNldENvbnRyb2xWaWV3Om5pbF07CkBAIC0xODc4LDEx
ICsxODc2LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBQCiAgICAgCiAgICAgRmxvYXRSZWN0
IHVuem9vbWVkUmVjdChwYWludGluZ1BvcywgbG9jYWxCb3VuZHMuc2l6ZSgpKTsKICAgICBpZiAo
em9vbUxldmVsICE9IDEuMGYpIHsKLSAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9v
bWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgdW56b29tZWRSZWN0LnNldEhl
aWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgp
KTsKKyAgICAgICAgdW56b29tZWRSZWN0LnNldFNpemUodW56b29tZWRSZWN0LnNpemUoKSAvIHpv
b21MZXZlbCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVk
UmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZSh6b29t
TGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRS
ZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIH0KIAogICAgIFtbc2Vh
cmNoIHNlYXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmlldzpk
b2N1bWVudFZpZXdGb3IoYm94KV07CkBAIC0yMTE0LDcgKzIxMTEsNyBAQCBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlciwgY29ucwogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
cGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS50
cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnRy
YW5zbGF0ZShyZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgSW50UmVjdCBpbm5lckZyYW1lKEludFBv
aW50KCksIHJlY3Quc2l6ZSgpKTsKICAgICBbY2VsbCBkcmF3V2l0aEZyYW1lOmlubmVyRnJhbWUg
aW5WaWV3OmRvY3VtZW50Vmlld0ZvcihyZW5kZXJlcildOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggYjMx
ZjAyMTFjM2UwZGFjNmY0MjQ2YTc5MTM4ODdmYTM2ZGM5NGZlOS4uMTNhODE3OGQ0NTNlYWZlMjdi
YWQ5YzcxMTNmZDczNDA4ZTBkYTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0zOCw3ICszOCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6UmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR0Jsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KQotICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQogewogfQogCkBAIC0xMTEsNyAr
MTEwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQoY29uc3QgTGF5b3V0UmVjdCYgcmVwYWkKIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0CiB7
CiAgICAgbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtID0gbG9jYWxUcmFuc2Zvcm0oKTsKLSAgICBt
X2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm0udHJhbnNsYXRlKG1fdmlld3BvcnQueCgpLCBtX3ZpZXdw
b3J0LnkoKSk7CisgICAgbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtLnRyYW5zbGF0ZShtX3ZpZXdw
b3J0LmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmgKaW5kZXggMTAxMTM1M2E1ZWVhOTg0YWI2NjU5MDc0ZWJmZjcxYjFiMWZlYzli
YS4uMzQ2MWQyYzA1ZWEyMGVlYzQyZTgzY2ZmMmI3ODY1M2I2MTgyMWVjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgK
QEAgLTY3LDEwICs2NywxMCBAQCBwcml2YXRlOgogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFmZmluZVRyYW5z
Zm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFu
c2Zvcm07IH0KIAotICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA6IDE7Ci0gICAgRmxv
YXRSZWN0IG1fdmlld3BvcnQ7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxUcmFuc2Zvcm07
CiAgICAgbXV0YWJsZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOwor
ICAgIEZsb2F0UmVjdCBtX3ZpZXdwb3J0OworICAgIGJvb2wgbV9uZWVkc1RyYW5zZm9ybVVwZGF0
ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAppbmRleCA2YTg3NTExMzliODQwYTBlMzZhYjMyOTFjMTZkNTMxMjI2OTYzNGJhLi5hNGZjZDMy
YWE1MTdlY2YxNGMzYzYzYzhlOGU4MzA0ZWY1ZWViZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBA
IC0xMTIsOCArMTEyLDggQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5
Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIC8vIE9ubHkgb25l
IHZpc2libGUgc2hhcGUvcGF0aCB3YXMgZm91bmQuIERpcmVjdGx5IGNvbnRpbnVlIGNsaXBwaW5n
IGFuZCB0cmFuc2Zvcm0gdGhlIGNvbnRlbnQgdG8gdXNlcnNwYWNlIGlmIG5lY2Vzc2FyeS4KICAg
ICBpZiAoY2xpcFBhdGhFbGVtZW50KCkuY2xpcFBhdGhVbml0cygpID09IFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgewogICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gdHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5n
Qm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKLSAgICAgICAgdHJhbnNmb3JtLnNjYWxl
Tm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5o
ZWlnaHQoKSk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gu
bG9jYXRpb24oKSk7CisgICAgICAgIHRyYW5zZm9ybS5zY2FsZShvYmplY3RCb3VuZGluZ0JveC5z
aXplKCkpOwogICAgICAgICBjbGlwUGF0aC50cmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICB9CiAK
QEAgLTE4Miw4ICsxODIsOCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6ZHJhd0Nv
bnRlbnRJbnRvTWFza0ltYWdlKGNvbnN0IENsaXBwZXJNYXNrSW1hZ2UmCiAKICAgICBBZmZpbmVU
cmFuc2Zvcm0gbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKICAgICBpZiAoY2xpcFBhdGhFbGVt
ZW50KCkuY2xpcFBhdGhVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpF
Q1RCT1VORElOR0JPWCkgewotICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnRyYW5z
bGF0ZShvYmplY3RCb3VuZGluZ0JveC54KCksIG9iamVjdEJvdW5kaW5nQm94LnkoKSk7Ci0gICAg
ICAgIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5k
aW5nQm94LndpZHRoKCksIG9iamVjdEJvdW5kaW5nQm94LmhlaWdodCgpKTsKKyAgICAgICAgbWFz
a0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRp
b24oKSk7CisgICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24uc2NhbGUob2JqZWN0Qm91
bmRpbmdCb3guc2l6ZSgpKTsKICAgICAgICAgbWFza0NvbnRleHQuY29uY2F0Q1RNKG1hc2tDb250
ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIApAQCAtMjY1LDggKzI2NSw4IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRSZWN0
JiBvYmplY3RCb3VuZGluCiAKICAgICBpZiAoY2xpcFBhdGhFbGVtZW50KCkuY2xpcFBhdGhVbml0
cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgewog
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKLSAg
ICAgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgp
LCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CisgICAgICAgIHRyYW5zZm9ybS5zY2Fs
ZShvYmplY3RCb3VuZGluZ0JveC5zaXplKCkpOwogICAgICAgICBwb2ludCA9IHRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKICAg
ICB9CiAKQEAgLTMwMSw4ICszMDEsOCBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyOjpyZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZQogICAgIGlm
IChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAgIEZsb2F0UmVjdCBvYmplY3RC
b3VuZGluZ0JveCA9IG9iamVjdC5vYmplY3RCb3VuZGluZ0JveCgpOwogICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJv
dW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKLSAgICAgICAgdHJhbnNmb3Jt
LnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGlu
Z0JveC5oZWlnaHQoKSk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRp
bmdCb3gubG9jYXRpb24oKSk7CisgICAgICAgIHRyYW5zZm9ybS5zY2FsZShvYmplY3RCb3VuZGlu
Z0JveC5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJhbnNmb3JtLm1hcFJlY3QobV9jbGlwQm91
bmRhcmllcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCBlNTUxMzZkNDgyMDk2
Mjc2OTY1ZjUzMGY1Mjk5NzViNzNlZDY5ZGU4Li4xOThhMGViMWU0MDRjNTRmMzJiMmY0YTA4YzQz
M2Q3ZjhiMzI4NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTgzLDggKzgzLDggQEAgc3Rh
dGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xpcFRvVGV4dE1hc2soR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBzdGQ6OnVuaXEKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4OwogICAgIGlm
IChib3VuZGluZ0JveE1vZGUpIHsKICAgICAgICAgRmxvYXRSZWN0IG1hc2tCb3VuZGluZ0JveCA9
IHRleHRSb290QmxvY2stPm9iamVjdEJvdW5kaW5nQm94KCk7Ci0gICAgICAgIG1hdHJpeC50cmFu
c2xhdGUobWFza0JvdW5kaW5nQm94LngoKSwgbWFza0JvdW5kaW5nQm94LnkoKSk7Ci0gICAgICAg
IG1hdHJpeC5zY2FsZU5vblVuaWZvcm0obWFza0JvdW5kaW5nQm94LndpZHRoKCksIG1hc2tCb3Vu
ZGluZ0JveC5oZWlnaHQoKSk7CisgICAgICAgIG1hdHJpeC50cmFuc2xhdGUobWFza0JvdW5kaW5n
Qm94LmxvY2F0aW9uKCkpOworICAgICAgICBtYXRyaXguc2NhbGUobWFza0JvdW5kaW5nQm94LnNp
emUoKSk7CiAgICAgfQogICAgIG1hdHJpeCAqPSBncmFkaWVudFRyYW5zZm9ybTsKICAgICByZXR1
cm4gbWF0cml4OwpAQCAtMTMyLDggKzEzMiw4IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAj
ZWxzZQogICAgICAgICBpZiAoZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCAmJiAhb2JqZWN0Qm91bmRpbmdCb3guaXNFbXB0eSgp
KSB7CiAjZW5kaWYKLSAgICAgICAgICAgIGdyYWRpZW50RGF0YS0+dXNlcnNwYWNlVHJhbnNmb3Jt
LnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC54KCksIG9iamVjdEJvdW5kaW5nQm94LnkoKSk7
Ci0gICAgICAgICAgICBncmFkaWVudERhdGEtPnVzZXJzcGFjZVRyYW5zZm9ybS5zY2FsZU5vblVu
aWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0
KCkpOworICAgICAgICAgICAgZ3JhZGllbnREYXRhLT51c2Vyc3BhY2VUcmFuc2Zvcm0udHJhbnNs
YXRlKG9iamVjdEJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOworICAgICAgICAgICAgZ3JhZGllbnRE
YXRhLT51c2Vyc3BhY2VUcmFuc2Zvcm0uc2NhbGUob2JqZWN0Qm91bmRpbmdCb3guc2l6ZSgpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hcmtlci5jcHAKaW5kZXggNzUzNjBhZTZhMWQzNmFiNzJkZWEwZWU0Mjk1MDUwZTdkNzM0
ZmU2MC4uNTM4ZTIxY2QwNDQxYTIyODAxYzZkM2FhYjkwODFhYzBiZjhlZjBhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
cmtlci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXI6Om1hcmtlclRyYW5zZm9ybWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmCiAgICAg
Ym9vbCB1c2VTdHJva2VXaWR0aCA9IG1hcmtlckVsZW1lbnQoKS5tYXJrZXJVbml0cygpID09IFNW
R01hcmtlclVuaXRzU3Ryb2tlV2lkdGg7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
OwotICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob3JpZ2luLngoKSwgb3JpZ2luLnkoKSk7CisgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZShvcmlnaW4pOwogICAgIHRyYW5zZm9ybS5yb3RhdGUobWFya2Vy
QW5nbGUgPT0gLTEgPyBhdXRvQW5nbGUgOiBtYXJrZXJBbmdsZSk7CiAgICAgdHJhbnNmb3JtID0g
bWFya2VyQ29udGVudFRyYW5zZm9ybWF0aW9uKHRyYW5zZm9ybSwgcmVmZXJlbmNlUG9pbnQoKSwg
dXNlU3Ryb2tlV2lkdGggPyBzdHJva2VXaWR0aCA6IC0xKTsKICAgICByZXR1cm4gdHJhbnNmb3Jt
OwpAQCAtMTMyLDcgKzEzMiw3IEBAIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdSZXNvdXJjZU1h
cmtlcjo6bWFya2VyQ29udGVudFRyYW5zZm9ybWF0aW9uKGNvbnN0IEFmZmluCiAgICAgaWYgKHN0
cm9rZVdpZHRoICE9IC0xKQogICAgICAgICB0cmFuc2Zvcm1hdGlvbi5zY2FsZU5vblVuaWZvcm0o
c3Ryb2tlV2lkdGgsIHN0cm9rZVdpZHRoKTsKIAotICAgIHRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0
ZSgtbWFwcGVkT3JpZ2luLngoKSwgLW1hcHBlZE9yaWdpbi55KCkpOworICAgIHRyYW5zZm9ybWF0
aW9uLnRyYW5zbGF0ZSgtbWFwcGVkT3JpZ2luKTsKICAgICByZXR1cm4gdHJhbnNmb3JtYXRpb247
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYWE5NjBlMmY4YjY3OTBlNjgyZDVkYmZlYTUyYTdj
MGNmM2E2Y2NhNC4uYmNkNmJkZjNmNmI2YjA5YjUxZmM3MmI2NDJkYjUyZTk4MTEzNGI5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHAKQEAgLTkzLDggKzkzLDggQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1hc2tlckRhdGEsIEMK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKICAgICBpZiAo
bWFza0VsZW1lbnQoKS5tYXNrQ29udGVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAgIEZsb2F0UmVjdCBvYmplY3RCb3Vu
ZGluZ0JveCA9IG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKLSAgICAgICAgbWFza0NvbnRl
bnRUcmFuc2Zvcm1hdGlvbi50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RC
b3VuZGluZ0JveC55KCkpOwotICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnNjYWxl
Tm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5o
ZWlnaHQoKSk7CisgICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKG9i
amVjdEJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOworICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9y
bWF0aW9uLnNjYWxlKG9iamVjdEJvdW5kaW5nQm94LnNpemUoKSk7CiAgICAgICAgIG1hc2tJbWFn
ZUNvbnRleHQuY29uY2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIApA
QCAtMTUyLDggKzE1Miw4IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6cmVz
b3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjCiAgICAgRmxvYXRSZWN0
IG1hc2tSZWN0ID0gbV9tYXNrQ29udGVudEJvdW5kYXJpZXM7CiAgICAgaWYgKG1hc2tFbGVtZW50
KCkubWFza0NvbnRlbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpF
Q1RCT1VORElOR0JPWCkgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91
bmRpbmdCb3gueSgpKTsKLSAgICAgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RC
b3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7CisgICAgICAg
IHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CisgICAg
ICAgIHRyYW5zZm9ybS5zY2FsZShvYmplY3RCb3VuZGluZ0JveC5zaXplKCkpOwogICAgICAgICBt
YXNrUmVjdCA9IHRyYW5zZm9ybS5tYXBSZWN0KG1hc2tSZWN0KTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAppbmRleCBkM2ExZTNjOTA5MTRmMmY1OGQ5NjQ4ZTdiMjFjNzVjNzg0YjQ0MTczLi45
ODBlZTNlNjk4NTVlNDgzNDU3MTQwNWU3ZDcxMzdiZTJkN2Q3NDk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCkBAIC0xMTgsOCArMTE4LDggQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0
dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKIAogICAgIC8v
IENvbXB1dGUgcGF0dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlvbi4KIAotICAgIHBhdHRlcm5EYXRh
LT50cmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVCb3VuZGFyaWVzLngoKSwgdGlsZUJvdW5kYXJpZXMu
eSgpKTsKLSAgICBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtLnNjYWxlKHRpbGVCb3VuZGFyaWVzLndp
ZHRoKCkgLyB0aWxlSW1hZ2VTaXplLndpZHRoKCksIHRpbGVCb3VuZGFyaWVzLmhlaWdodCgpIC8g
dGlsZUltYWdlU2l6ZS5oZWlnaHQoKSk7CisgICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybS50cmFu
c2xhdGUodGlsZUJvdW5kYXJpZXMubG9jYXRpb24oKSk7CisgICAgcGF0dGVybkRhdGEtPnRyYW5z
Zm9ybS5zY2FsZSh0aWxlQm91bmRhcmllcy5zaXplKCkgLyB0aWxlSW1hZ2VTaXplKTsKIAogICAg
IEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLnBhdHRlcm5U
cmFuc2Zvcm0oKTsKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQpAQCAt
MjU4LDggKzI1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0CiAgICAgR3JhcGhpY3NDb250
ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAKICAgICAvLyBU
aGUgaW1hZ2UgYnVmZmVyIHJlcHJlc2VudHMgdGhlIGZpbmFsIHJlbmRlcmVkIHNpemUsIHNvIHRo
ZSBjb250ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRvIGF2b2lkIHBpeGVsYXRpb24pLgotICAgIHRp
bGVJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzLndpZHRoKCkgLyB0aWxlQm91bmRhcmllcy53aWR0aCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy5oZWlnaHQo
KSAvIHRpbGVCb3VuZGFyaWVzLmhlaWdodCgpKSk7CisgICAgdGlsZUltYWdlQ29udGV4dC5zY2Fs
ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy5zaXplKCkgLyB0aWxlQm91bmRhcmllcy5z
aXplKCkpOwogCiAgICAgLy8gQXBwbHkgdGlsZSBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMuCiAgICAg
aWYgKCF0aWxlSW1hZ2VUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lci5jcHAKaW5kZXggMGIwOGExN2I4YTA3N2ZmNWFkOGJkNjA5ZGFiZTZjMmE1YTk1YThi
ZC4uNDQ5ODg2ZDEwNzk0ODNiYWU0MzI3YTQ2YTU2OTUzMDc3Yjk3ZDZmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lcjo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBtX2xvY2FsVHJhbnNmb3JtID0gZWxlbWVudC5hbmltYXRlZExv
Y2FsVHJhbnNmb3JtKCk7Ci0gICAgbV9sb2NhbFRyYW5zZm9ybS50cmFuc2xhdGUobV9sYXN0VHJh
bnNsYXRpb24ud2lkdGgoKSwgbV9sYXN0VHJhbnNsYXRpb24uaGVpZ2h0KCkpOworICAgIG1fbG9j
YWxUcmFuc2Zvcm0udHJhbnNsYXRlKG1fbGFzdFRyYW5zbGF0aW9uKTsKICAgICBtX25lZWRzVHJh
bnNmb3JtVXBkYXRlID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBj
OWIwZjVlNWFjNzA2YTg4MTFkMjVjNDRmMTU0ZTNjMzFmMTViNDcyLi42N2FlZGI0YmE0YTdkZjE0
OTg4MjZkZjc5ZTM2NTc0MTMwNmY1Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0Ugogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKQogewogICAgIEludFNpemUgY2xhbXBlZFNp
emUgPSByb3VuZGVkSW50U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwotICAgIEludFNpemUgdW5j
bGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKKyAgICBGbG9h
dFNpemUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsK
IAogICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCiAgICAgaWYgKGNsYW1w
ZWRTaXplLmlzRW1wdHkoKSkKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UgogICAgIEdyYXBoaWNzQ29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNv
bnRleHQoKTsKIAogICAgIC8vIENvbXBlbnNhdGUgcm91bmRpbmcgZWZmZWN0cywgYXMgdGhlIGFi
c29sdXRlIHRhcmdldCByZWN0IGlzIHVzaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYW5kIHRo
ZSBpbWFnZSBidWZmZXIgc2l6ZSBpcyBpbnRlZ2VyLgotICAgIGltYWdlQ29udGV4dC5zY2FsZShG
bG9hdFNpemUodW5jbGFtcGVkU2l6ZS53aWR0aCgpIC8gdGFyZ2V0UmVjdC53aWR0aCgpLCB1bmNs
YW1wZWRTaXplLmhlaWdodCgpIC8gdGFyZ2V0UmVjdC5oZWlnaHQoKSkpOworICAgIGltYWdlQ29u
dGV4dC5zY2FsZSh1bmNsYW1wZWRTaXplIC8gdGFyZ2V0UmVjdC5zaXplKCkpOwogCiAgICAgcmV0
dXJuIGltYWdlQnVmZmVyOwogfQpAQCAtMzU0LDcgKzM1NCw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5n
Q29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICBpZiAoKGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJv
dW5kaW5nQm94LnNpemUoKSksIENvbG9yU3BhY2VTUkdCLCBtX3BhaW50SW5mby0+Y29udGV4dCgp
KSkpIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyZWRSZW5kZXJpbmdDb250
ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgICAgIGJ1ZmZlcmVkUmVuZGVy
aW5nQ29udGV4dC50cmFuc2xhdGUoLWJvdW5kaW5nQm94LngoKSwgLWJvdW5kaW5nQm94LnkoKSk7
CisgICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQudHJhbnNsYXRlKC1ib3VuZGlu
Z0JveC5sb2NhdGlvbigpKTsKICAgICAgICAgICAgIFBhaW50SW5mbyBidWZmZXJlZEluZm8oKm1f
cGFpbnRJbmZvKTsKICAgICAgICAgICAgIGJ1ZmZlcmVkSW5mby5zZXRDb250ZXh0KGJ1ZmZlcmVk
UmVuZGVyaW5nQ29udGV4dCk7CiAgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4o
Km1fcmVuZGVyZXIpLnBhaW50Rm9yZWdyb3VuZChidWZmZXJlZEluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggZTgwOGQ3OTY5ZGY1
NTIyZmIyMjM5NmFjOWJkNDk4NjQ0NTI3MDc3OC4uMjlhYTA1NGQxNjIzNmVhNTAyNmVkMGI5ZmZi
NDQ4M2NmZDA0MDQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxl
bWVudDo6YnVpbGRUcmFuc2Zvcm1Gb3JQcm9ncmVzcyhBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm8K
ICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gdHJhdmVyc2FsU3RhdGUuY3VycmVudCgpOwogICAg
IGZsb2F0IGFuZ2xlID0gdHJhdmVyc2FsU3RhdGUubm9ybWFsQW5nbGUoKTsKIAotICAgIHRyYW5z
Zm9ybS0+dHJhbnNsYXRlKHBvc2l0aW9uLngoKSwgcG9zaXRpb24ueSgpKTsKKyAgICB0cmFuc2Zv
cm0tPnRyYW5zbGF0ZShwb3NpdGlvbik7CiAgICAgUm90YXRlTW9kZSByb3RhdGVNb2RlID0gdGhp
cy0+cm90YXRlTW9kZSgpOwogICAgIGlmIChyb3RhdGVNb2RlICE9IFJvdGF0ZUF1dG8gJiYgcm90
YXRlTW9kZSAhPSBSb3RhdGVBdXRvUmV2ZXJzZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGJmYTkxNzJlODkxY2M2NDMwOGYzNDYyNGU3NGU1
ZWU5YjNhN2EzMjguLjg5ODc5YTljMDRjMTgzNGM0MGM0YWExNmFkMjM0MzE1ZTkyNWNkNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCBBZmZp
bmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0o
U1ZHTG9jYXRhYmxlOjpDVE1TYwogICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGRv
Y3VtZW50KCkudmlldygpKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9z
aXRpb24gPSB2aWV3LT5zY3JvbGxQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgIHNjcm9sbFBv
c2l0aW9uLnNjYWxlKHpvb21GYWN0b3IpOwotICAgICAgICAgICAgICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUoLXNjcm9sbFBvc2l0aW9uLngoKSwgLXNjcm9sbFBvc2l0aW9uLnkoKSk7CisgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtc2Nyb2xsUG9zaXRpb24pOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggMjNjZWFlNTRmMDhmNDg1ZGJkMTllZTNmZGMzMGFhODVkY2FhZTYwZS4uNDI2
ZTI1ZTRiMDA3MDg0NWYwMjBhNmQyYmYwOTRmOWQ4YjNjMjZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yOTgsMTQgKzI5OCwxNCBAQCBJbWFnZURyYXdS
ZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlYwogICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgIH0KIAotICAgIEZsb2F0U2l6
ZSBzY2FsZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0
KCkgLyBzcmNSZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFNpemUgc2NhbGUoZHN0UmVjdC5zaXpl
KCkgLyBzcmNSZWN0LnNpemUoKSk7CiAgICAgCiAgICAgLy8gV2UgY2FuIG9ubHkgZHJhdyB0aGUg
ZW50aXJlIGZyYW1lLCBjbGlwcGVkIHRvIHRoZSByZWN0IHdlIHdhbnQuIFNvIGNvbXB1dGUgd2hl
cmUgdGhlIHRvcCBsZWZ0CiAgICAgLy8gb2YgdGhlIGltYWdlIHdvdWxkIGJlIGlmIHdlIHdlcmUg
ZHJhd2luZyB3aXRob3V0IGNsaXBwaW5nLCBhbmQgdHJhbnNsYXRlIGFjY29yZGluZ2x5LgogICAg
IEZsb2F0U2l6ZSB0b3BMZWZ0T2Zmc2V0KHNyY1JlY3QubG9jYXRpb24oKS54KCkgKiBzY2FsZS53
aWR0aCgpLCBzcmNSZWN0LmxvY2F0aW9uKCkueSgpICogc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZs
b2F0UG9pbnQgZGVzdE9mZnNldCA9IGRzdFJlY3QubG9jYXRpb24oKSAtIHRvcExlZnRPZmZzZXQ7
CiAKLSAgICBjb250ZXh0LnRyYW5zbGF0ZShkZXN0T2Zmc2V0LngoKSwgZGVzdE9mZnNldC55KCkp
OworICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RPZmZzZXQpOwogICAgIGNvbnRleHQuc2NhbGUo
c2NhbGUpOwogCiAgICAgdmlldy0+cmVzaXplKGNvbnRhaW5lclNpemUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmOTlkMmYzZWIy
NDcyMTRhNmYwMWQzZDhjMWIxYjI0YTFjNGY1ODRiLi41MDM3ZGEzNDZjNDFlZmQzMWI5NTYwZDky
OGMxOGE2ZmEwNmNhNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTE2NTgsOCArMTY1OCw4IEBAIC0gKHZvaWQpX2RpZENvbW1pdExh
eWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJU
cmVlCiAKICAgICAgICAgICAgIGlmIChhcmVFc3NlbnRpYWxseUVxdWFsQXNGbG9hdChjb250ZW50
Wm9vbVNjYWxlKHNlbGYpLCBfc2NhbGVUb1Jlc3RvcmUpKSB7CiAgICAgICAgICAgICAgICAgQ0dS
ZWN0IHVub2JzY3VyZWRSZWN0ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KHNlbGYuYm91bmRzLCBf
b2JzY3VyZWRJbnNldHMpOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bm9i
c2N1cmVkQ29udGVudFNpemVBdE5ld1NjYWxlKHVub2JzY3VyZWRSZWN0LnNpemUud2lkdGggLyBf
c2NhbGVUb1Jlc3RvcmUsIHVub2JzY3VyZWRSZWN0LnNpemUuaGVpZ2h0IC8gX3NjYWxlVG9SZXN0
b3JlKTsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRvcExlZnRJbkRvY3Vt
ZW50Q29vcmRpbmF0ZXModW5vYnNjdXJlZENlbnRlclRvUmVzdG9yZS54KCkgLSB1bm9ic2N1cmVk
Q29udGVudFNpemVBdE5ld1NjYWxlLndpZHRoKCkgLyAyLCB1bm9ic2N1cmVkQ2VudGVyVG9SZXN0
b3JlLnkoKSAtIHVub2JzY3VyZWRDb250ZW50U2l6ZUF0TmV3U2NhbGUuaGVpZ2h0KCkgLyAyKTsK
KyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgdW5vYnNjdXJlZENvbnRlbnRTaXpl
QXROZXdTY2FsZSA9IEZsb2F0U2l6ZSh1bm9ic2N1cmVkUmVjdC5zaXplKSAvIF9zY2FsZVRvUmVz
dG9yZTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRvcExlZnRJbkRvY3Vt
ZW50Q29vcmRpbmF0ZXMgPSB1bm9ic2N1cmVkQ2VudGVyVG9SZXN0b3JlIC0gdW5vYnNjdXJlZENv
bnRlbnRTaXplQXROZXdTY2FsZSAvIDI7CiAKICAgICAgICAgICAgICAgICB0b3BMZWZ0SW5Eb2N1
bWVudENvb3JkaW5hdGVzLnNjYWxlKF9zY2FsZVRvUmVzdG9yZSk7CiAgICAgICAgICAgICAgICAg
dG9wTGVmdEluRG9jdW1lbnRDb29yZGluYXRlcy5tb3ZlQnkoV2ViQ29yZTo6RmxvYXRQb2ludCgt
X29ic2N1cmVkSW5zZXRzLmxlZnQsIC1fb2JzY3VyZWRJbnNldHMudG9wKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5t
bQppbmRleCA1OTQzZjFlYzVmYmMzZTkzMmE4YWQwZWUzZjFkZjNiYzE5M2NmZmFjLi40YmI1ZWMx
ZmM4ZGMzYzlhNTlhYTUxYzJmOGJkYjNkNDIxNzAzMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTU3
LDEwICs1Nyw5IEBAIHN0YXRpYyBVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKmNyZWF0ZVRhcmdldGVk
RHJhZ1ByZXZpZXcoVUlJbWFnZSAqaW1hZ2UsIFVJVmlldyAqCiAgICAgaWYgKGZyYW1lSW5Db250
YWluZXJDb29yZGluYXRlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgZmxvYXQgd2lkdGhTY2FsaW5nUmF0aW8gPSBmcmFtZUluQ29udGFpbmVyQ29vcmRpbmF0ZXMu
d2lkdGgoKSAvIGZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLndpZHRoKCk7Ci0gICAgZmxvYXQg
aGVpZ2h0U2NhbGluZ1JhdGlvID0gZnJhbWVJbkNvbnRhaW5lckNvb3JkaW5hdGVzLmhlaWdodCgp
IC8gZnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMuaGVpZ2h0KCk7CisgICAgRmxvYXRTaXplIHNj
YWxpbmdSYXRpbyA9IGZyYW1lSW5Db250YWluZXJDb29yZGluYXRlcyAvIGZyYW1lSW5Sb290Vmll
d0Nvb3JkaW5hdGVzOwogICAgIGZvciAoYXV0byByZWN0IDogY2xpcHBpbmdSZWN0c0luRnJhbWVD
b29yZGluYXRlcykgewotICAgICAgICByZWN0LnNjYWxlKHdpZHRoU2NhbGluZ1JhdGlvLCBoZWln
aHRTY2FsaW5nUmF0aW8pOworICAgICAgICByZWN0LnNjYWxlKHNjYWxpbmdSYXRpbyk7CiAgICAg
ICAgIFtjbGlwcGluZ1JlY3RWYWx1ZXNJbkZyYW1lQ29vcmRpbmF0ZXMgYWRkT2JqZWN0OltOU1Zh
bHVlIHZhbHVlV2l0aENHUmVjdDpyZWN0XV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggMmRhNjFjODlhNWQ3MmU4MzY5NzhkNGE0
NWY2OWE3YzUxZmJmYzQ1Ni4uZDkwYmQ2NGI5N2VjN2FiOTljYWUxZWJmN2JkZDBiOTNhYzNhYjY0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAt
MTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFt
ZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcGFpbnRpCiAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGVhclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSk7CiAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsK
ICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKGJpdG1hcFNjYWxlRmFjdG9yKTsKLSAgICBncmFw
aGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55
KCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QubG9jYXRp
b24oKSk7CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkUGFpbnRT
ZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247CiAgICAgaWYgKG9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggZDQ2YzkyZDBhYmYw
NmU0MWNlNDY5ZmI3NmM4OTUwN2I1YjJjNTIzZS4uN2JkNmE0MmU3NDQ1MDZlNGE1MjI3ZThjMzk5
OTBkODViMjVhOTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb24KICAg
ICBwYWludFJlY3QubW92ZShmcmFtZVZpZXctPmZyYW1lUmVjdCgpLngoKSwgZnJhbWVWaWV3LT5m
cmFtZVJlY3QoKS55KCkpOwogICAgIHBhaW50UmVjdC5tb3ZlQnkoLWZyYW1lVmlldy0+c2Nyb2xs
UG9zaXRpb24oKSk7CiAKLSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRSZWN0
LngoKSwgLXBhaW50UmVjdC55KCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1w
YWludFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZp
b3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBQYWludEJlaGF2aW9yIHBhaW50
QmVoYXZpb3IgPSBvbGRQYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkg
fCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzIHwgUGFpbnRCZWhhdmlvclNu
YXBzaG90dGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggMjdlZTcyMzhkNTEzODgyZWIyODM3MGM5MDk5MDkwODY0NTc1Y2ZiNC4uMGVhYmU2
NTk5MGQ5MTdlMWQ5MWQ5MWUyYjllNGZiMzBkODQyYjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5NjksNyArMTk2OSw3IEBAIHN0YXRp
YyB2b2lkIHBhaW50U25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYgYml0bWFwU2l6ZSwKICAgICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoc2Nh
bGVGYWN0b3IpOwotICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNuYXBzaG90UmVjdC54
KCksIC1zbmFwc2hvdFJlY3QueSgpKTsKKyAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC1z
bmFwc2hvdFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25h
cHNob3Qgc2hvdWxkUGFpbnRTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247
CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxp
Z2h0aW5nKQpAQCAtMjA4OSw3ICsyMDg5LDcgQEAgUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpz
bmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9kZSwgU25hcHNob3RPcHRpb25zIG9wdGkKICAg
ICB9CiAKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBncmFw
aGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LngoKSwgLXNuYXBzaG90UmVjdC55
KCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1zbmFwc2hvdFJlY3QubG9jYXRp
b24oKSk7CiAKICAgICBDb2xvciBzYXZlZEJhY2tncm91bmRDb2xvciA9IGZyYW1lVmlldy0+YmFz
ZUJhY2tncm91bmRDb2xvcigpOwogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321284</attachid>
            <date>2017-09-19 20:20:37 -0700</date>
            <delta_ts>2017-09-19 23:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177217-20170919202036.patch</filename>
            <type>text/plain</type>
            <size>66576</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I4OGIzNjE2YzljMjcy
OGNmYjc0YzA5MDNiYWY3ZmUxYjNkYjQ5MS4uMDViMzc4NTgwZTA0ODYzMjk2MmVkNDkwYzVkZmJk
MWRiOGYwNmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxNy0wOS0xOSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBEbyBtb3JlIG1h
dGggaW4gdGVybXMgb2YgRmxvYXRTaXplcyBhbmQgRmxvYXRQb2ludHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzIxNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIG9wZXJhdG9yLyhj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmKSwgR3JhcGhpY3NDb250ZXh0Ojp0cmFu
c2xhdGUoY29uc3QgRmxvYXRQb2ludCYpLAorICAgICAgICBGbG9hdFJlY3Quc2NhbGUoRmxvYXRT
aXplKSBhbmQgQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJikKKyAg
ICAgICAgYW5kIHVzZSB0aGVtIGluIGxvdHMgb2YgcGxhY2VzIHRvIGRvIG1hdGggaW4gdGVybXMg
b2YgcG9pbnRzIGFuZCBzaXplcy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICog
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbToKKyAgICAgICAgKC1bV2ViVGV4dEluZGlj
YXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5kaWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmRy
YXdOYW1lZEltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3Vi
aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmxvYXRSZWN0OjpjZW50ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRS
ZWN0OjpzY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvci8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2NhbGVGYWN0b3JGb3JEcmF3aW5nIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJh
d1RpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFkZFJvdW5kZWRSZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjphcHBs
eVJvdGF0aW9uRm9yUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6ZHJhd1BERlBhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9y
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OnRyYW5zbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjptYWtlTWFwQmV0d2VlblJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRUb2dnbGVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6
cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTdGVwcGVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeSBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U2Nyb2xsYmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpwYWludE1lbnVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNlYXJjaEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWlu
dFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xp
cHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3
Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyOjpyZXNvdXJjZUJvdW5kaW5nQm94KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xpcFRvVGV4dE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlcjo6bWFya2VyVHJhbnNmb3JtYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6Om1hcmtlckNvbnRlbnRUcmFuc2Zvcm1hdGlvbiBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2Vy
OjpyZXNvdXJjZUJvdW5kaW5nQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OmNhbGN1bGF0ZUxvY2FsVHJhbnNm
b3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3Vu
ZCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpidWlsZFRyYW5zZm9ybUZvclByb2dy
ZXNzKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybSBjb25zdCk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpkcmF3KToKKwogMjAxNy0wOS0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBPbiBpT1MsIGdldERhdGEgY2FuJ3QgZ2V0IHRleHQgc2V0IGJ5IHNl
dERhdGEgZHVyaW5nIGNvcHkgZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTFjM2ExZTM4ZGJmYjkzNzJlMThl
MWRkMjVlZTk3ZGZjNjBjZTk2NC4uMTM3N2JkMGUwMTQ1YzU0N2FlZGU1NDkyMzljZTZkMTIwMzk1
Njk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNy0wOS0xOSAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBEbyBtb3JlIG1hdGggaW4gdGVy
bXMgb2YgRmxvYXRTaXplcyBhbmQgRmxvYXRQb2ludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcGVyYXRvci8oY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiksIEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGNvbnN0IEZsb2F0
UG9pbnQmKSwKKyAgICAgICAgRmxvYXRSZWN0LnNjYWxlKEZsb2F0U2l6ZSkgYW5kIEFmZmluZVRy
YW5zZm9ybTo6dHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYpCisgICAgICAgIGFuZCB1c2UgdGhl
bSBpbiBsb3RzIG9mIHBsYWNlcyB0byBkbyBtYXRoIGluIHRlcm1zIG9mIHBvaW50cyBhbmQgc2l6
ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OmNy
ZWF0ZVRhcmdldGVkRHJhZ1ByZXZpZXcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmltYWdlRm9yUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGFpbnRTbmFwc2hvdEF0U2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90Tm9kZSk6CisKIDIwMTctMDkt
MTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgT24gaU9TLCBn
ZXREYXRhIGNhbid0IGdldCB0ZXh0IHNldCBieSBzZXREYXRhIGR1cmluZyBjb3B5IGV2ZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAppbmRleCA5ZTBkZjgwYjc2ZDY0OGJmZmY0MDViZmU4Yzc5ZTM1MmIxMjBjYzlh
Li5jMjVhMDIyYmQxZjRkMTU2MjVkODc5MGMwMGFiNzI1Y2UyYWEyOGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTE2NTEsOSArMTY1MSw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvLCBjCiAKICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOwogICAgIGMtPmNsaXAoZHN0
UmVjdCk7Ci0gICAgYy0+dHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAg
Yy0+dHJhbnNsYXRlKGRzdFJlY3QubG9jYXRpb24oKSk7CiAgICAgYy0+c2NhbGUoRmxvYXRTaXpl
KGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSAvIHNy
Y1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjLT50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVj
dC55KCkpOworICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC5sb2NhdGlvbigpKTsKICAgICB2aWRl
by5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCgqYywgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSh2aWRlbykpKTsKICAgICBzdGF0ZVNhdmVyLnJlc3RvcmUoKTsKICAgICBkaWREcmF3KGRz
dFJlY3QpOwpAQCAtMTc3OCw4ICsxNzc4LDggQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQKICAg
ICBhZGp1c3RlZERlc3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgQWZmaW5l
VHJhbnNmb3JtIGVmZmVjdGl2ZVRyYW5zZm9ybSA9IGMtPmdldENUTSgpOwogICAgIEludFJlY3Qg
dHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGVmZmVjdGl2ZVRyYW5z
Zm9ybS5tYXBSZWN0KGFkanVzdGVkRGVzdCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1l
ZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5s
b2NhdGlvbigpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNl
dCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7
CiAgICAgZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0
ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogCkBAIC0yNjQyLDEyICsyNjQyLDEy
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0
IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0
VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAK
ICAgICAgICAgaWYgKHVzZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LnRyYW5zbGF0ZShsb2NhdGlvbi54KCkgLSBtYXNrUmVjdC54KCksIGxvY2F0aW9uLnkoKSAtIG1h
c2tSZWN0LnkoKSk7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZShsb2Nh
dGlvbiAtIG1hc2tSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICAgICAgLy8gV2UgZHJhdyB3aGVu
IGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5IiBv
cCkgc3RpbGwgd29yay4KICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRT
aXplKChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CiAgICAg
ICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1hc2tJbWFnZUNvbnRleHQsIHRleHRSdW4s
IEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNs
YXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0ltYWdl
Q29udGV4dC50cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICAgICAgZm9u
dFByb3h5LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBsb2NhdGlvbiwg
Rm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwogICAgICAgICB9CiAKQEAg
LTI2NjMsNyArMjY2Myw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4
dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOwogICAgIGlmICh1c2VNYXhXaWR0aCkg
ewotICAgICAgICBjLT50cmFuc2xhdGUobG9jYXRpb24ueCgpLCBsb2NhdGlvbi55KCkpOworICAg
ICAgICBjLT50cmFuc2xhdGUobG9jYXRpb24pOwogICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9u
dFdpZHRoIGlzIDAgc28gY29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBz
dGlsbCB3b3JrLgogICAgICAgICBjLT5zY2FsZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAo
d2lkdGggLyBmb250V2lkdGgpIDogMCksIDEpKTsKICAgICAgICAgbG9jYXRpb24gPSBGbG9hdFBv
aW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9y
V2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5t
bQppbmRleCA5NDVkYWIwOWU1ZDM1MWI4M2EwMDg4ZGY3YzFhYjJiNDhiOWQ0OGUwLi5jZDFhNTZl
ZTg0OTc0ZjgwMzdiMWNlYTRjZGNmZThjMWRhYTBlNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KQEAgLTE4Myw3ICsxODMsNyBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHRleHRJbmRpY2F0b3I6KFRl
eHRJbmRpY2F0b3ImKXRleHRJbgogCiAgICAgICAgIFBhdGggdHJhbnNsYXRlZFBhdGg7CiAgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUoLXBhdGhCb3VuZGluZ1JlY3QueCgpLCAtcGF0aEJvdW5kaW5nUmVjdC55KCkpOworICAgICAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1wYXRoQm91bmRpbmdSZWN0LmxvY2F0aW9uKCkpOwogICAg
ICAgICB0cmFuc2xhdGVkUGF0aC5hZGRQYXRoKHBhdGgsIHRyYW5zZm9ybSk7CiAKICAgICAgICAg
RmxvYXRSZWN0IG9mZnNldFRleHRSZWN0ID0gcGF0aEJvdW5kaW5nUmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lLmNwcAppbmRleCA3ZTRkMzczZDU0Y2QxZDU2MzQ3ODNmMzEyYzkwZjkyZGQyMTY3
ZGJiLi44MjI5ZjFjZjk3YWUwMWU0ZDg2MzY4YjQ2YmEyODIxZGNkODkyODU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGhlbWUuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBUaGVtZTo6ZHJhd05h
bWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEYKIAogICAgIC8vIERyYXcgYSBnZW5lcmljIFdpcmVsZXNzIFBsYXliYWNrIGljb24uCiAK
LSAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCBy
ZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOworICAgIGNvbnRleHQuc2NhbGUocmVjdC5zaXpl
KCkgLyAxMDApOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDgsIDEpOwogCiAgICAgUGF0aCBvdXRs
aW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDAzNjI3NGU5MTI0NTdhNTI0ODllZDcy
OTE3Mzg1MzgzZGMxMDVjMjIuLmVjODU2YzhmN2FkYTJlMjQ4NWJmNGQ5MDM0M2Y5MjQ5ODYyYjA2
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIHZv
aWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2Um
IGltYWdlLCBDb21wb3MKICAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKIAogICAg
IGlmICh0YXJnZXRTaXplICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC5zY2FsZShGbG9h
dFNpemUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRoKCksIHRhcmdldFNpemUu
aGVpZ2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZSh0
YXJnZXRTaXplIC8gaW1hZ2VTaXplKTsKIAogICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJ
bnRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsKIApA
QCAtOTEsMTAgKzkxLDEwIEBAIEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogICAgIGNvbnRleHQuY2xp
cChkc3RSZWN0KTsKLSAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55
KCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QubG9jYXRpb24oKSk7CiAgICAgaWYg
KGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQotICAgICAgICBjb250ZXh0LnNjYWxl
KEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVp
Z2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUoLXNyY1Jl
Y3QueCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKGRzdFJlY3Quc2l6
ZSgpIC8gc3JjUmVjdC5zaXplKCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0Lmxv
Y2F0aW9uKCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSZWN0LmgKaW5kZXggMzc0NWUxZjI5NDlhNDg2MzljNDFlZjhkNzFjYTU1N2I4
ZDIyMzEzYy4uZTU1ZjE3YmZjOWQ3NGM3NDQxYzk2YjAzZmE1ZGE2ZjdiMzJjYjcxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKQEAgLTk4LDcgKzk4
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmlz
WmVybygpOyB9CiAgICAgYm9vbCBpc0V4cHJlc3NpYmxlQXNJbnRSZWN0KCkgY29uc3Q7CiAKLSAg
ICBGbG9hdFBvaW50IGNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UG9pbnQoeCgpICsgd2lk
dGgoKSAvIDIsIHkoKSArIGhlaWdodCgpIC8gMik7IH0KKyAgICBGbG9hdFBvaW50IGNlbnRlcigp
IGNvbnN0IHsgcmV0dXJuIGxvY2F0aW9uKCkgKyBzaXplKCkgLyAyOyB9CiAKICAgICB2b2lkIG1v
dmUoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgeyBtX2xvY2F0aW9uICs9IGRlbHRhOyB9IAogICAg
IHZvaWQgbW92ZUJ5KGNvbnN0IEZsb2F0UG9pbnQmIGRlbHRhKSB7IG1fbG9jYXRpb24ubW92ZShk
ZWx0YS54KCksIGRlbHRhLnkoKSk7IH0KQEAgLTE2Niw2ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbmZsYXRlKGZsb2F0IGQpIHsgaW5mbGF0ZVgoZCk7IGluZmxhdGVZKGQpOyB9CiAgICAg
dm9pZCBzY2FsZShmbG9hdCBzKSB7IHNjYWxlKHMsIHMpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzY2FsZShmbG9hdCBzeCwgZmxvYXQgc3kpOworICAgIHZvaWQgc2NhbGUoRmxvYXRTaXpl
IHNpemUpIHsgc2NhbGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsgfQogCiAgICAgRmxv
YXRSZWN0IHRyYW5zcG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KG1fbG9jYXRp
b24udHJhbnNwb3NlZFBvaW50KCksIG1fc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCmluZGV4IDgzMTcxOWVi
N2RjY2Y4ODViYmFhNzRkZTgwYmMwZWZmZDJiN2M3ZjguLjFjM2Q3ZjEyNDU5NjllODE2Y2Q0MWQ1
OThjZTYwODE1ODNlYmIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0U2l6ZS5oCkBAIC0yMDIsNiArMjAyLDExIEBAIGlubGluZSBGbG9hdFNpemUgb3BlcmF0
b3IqKGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQogICAgIHJldHVybiBG
bG9hdFNpemUoYS53aWR0aCgpICogYi53aWR0aCgpLCBhLmhlaWdodCgpICogYi5oZWlnaHQoKSk7
CiB9CiAKK2lubGluZSBGbG9hdFNpemUgb3BlcmF0b3IvKGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29u
c3QgRmxvYXRTaXplJiBiKQoreworICAgIHJldHVybiBGbG9hdFNpemUoYS53aWR0aCgpIC8gYi53
aWR0aCgpLCBhLmhlaWdodCgpIC8gYi5oZWlnaHQoKSk7Cit9CisKIGlubGluZSBGbG9hdFNpemUg
b3BlcmF0b3IvKGNvbnN0IEZsb2F0U2l6ZSYgYSwgZmxvYXQgYikKIHsKICAgICByZXR1cm4gRmxv
YXRTaXplKGEud2lkdGgoKSAvIGIsIGEuaGVpZ2h0KCkgLyBiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggZWM4ZGVlZmRh
NjZlZGY3NDEwYzc0M2M0MmNiYjEwZWQzNDhkZWE1NC4uNzYwZGI2NjRmZjBlZmU0YjgxMWMxMTEx
NDlhOWQyNzlkOTk1MjhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTQ2LDEwICs0NiwxMCBAQCBJbWFnZURyYXdSZXN1
bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlYwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0
Q29udGV4dCk7CiAgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0
ZU9wLCBibGVuZE1vZGUpOwogICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwotICAgIGRl
c3RDb250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgZGVz
dENvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVj
dC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCi0gICAgICAgIGRlc3RDb250ZXh0LnNjYWxlKEZs
b2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWln
aHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0Q29udGV4dC50cmFuc2xhdGUoLXNy
Y1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBkZXN0Q29udGV4dC5zY2FsZShkZXN0
UmVjdC5zaXplKCkgLyBzcmNSZWN0LnNpemUoKSk7CisgICAgZGVzdENvbnRleHQudHJhbnNsYXRl
KC1zcmNSZWN0LmxvY2F0aW9uKCkpOwogICAgIGRlc3RDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIHNpemUoKSksIG1fZ3JhZGllbnQuZ2V0KCkpOwogICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5OGY4YTAzNDA0OGMyMGQ2
ZDBhYTA5NmEwYTczYjIyNTc1MjNmM2M4Li45NTg3ZTY3ODhiNWE2ZjZkMzExNDEzNjU2MzgzNjVm
Yzg0ZjEzNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEwNDAsNyArMTA0MCw3IEBAIEZsb2F0U2l6ZSBHcmFw
aGljc0NvbnRleHQ6OnNjYWxlRmFjdG9yRm9yRHJhd2luZyhjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zCiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdldENUTShHcmFw
aGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpOwogICAgIGF1dG8gdHJh
bnNmb3JtZWREZXN0UmVjdCA9IHRyYW5zZm9ybS5tYXBSZWN0KGRlc3RSZWN0KTsKLSAgICByZXR1
cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4odHJhbnNmb3JtZWREZXN0UmVjdC53aWR0aCgpIC8gc3Jj
UmVjdC53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybWVkRGVzdFJlY3QuaGVp
Z2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSB9OworICAgIHJldHVybiB0cmFuc2Zvcm1lZERlc3RS
ZWN0LnNpemUoKSAvIHNyY1JlY3Quc2l6ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiODI0NGE5Njcx
ZmQzZTZjM2U3MzFmM2E1NzFkM2JlZDMxMTg0MzVjLi40ZDNmYmU3ODFmNjEwY2JlZDgzZmRjZGRm
MTg0NmQ1YjZkNmY4YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDc2LDYgKzQ3Niw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIHZvaWQgcm90
YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUpIHsgdHJhbnNsYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7IH0K
KyAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiBwKSB7IHRyYW5zbGF0ZShwLngo
KSwgcC55KCkpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwg
ZmxvYXQgeSk7CiAKICAgICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgRmxv
YXRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5k
ZXggYjlkZjI4NWYxN2E2YTVkMTYxYTk4Nzk1NWNhMjAyY2EwNWExZjg3Ny4uMGZlYjJkMjdiZGRl
MTI4NTVlNjYyOTdkYzAxYzMzM2Q4NTdkOGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTI1LDExICsxMjUsMTAgQEAgSW1hZ2VEcmF3UmVzdWx0
IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWMKICAgICBpZiAoaGFzUmVsYXRpdmVIZWlnaHQoKSkKICAgICAgICAgaW50cmluc2lj
VGlsZVNpemUuc2V0SGVpZ2h0KHNjYWxlZFRpbGVTaXplLmhlaWdodCgpKTsKIAotICAgIEZsb2F0
U2l6ZSBzY2FsZShzY2FsZWRUaWxlU2l6ZS53aWR0aCgpIC8gaW50cmluc2ljVGlsZVNpemUud2lk
dGgoKSwKLSAgICAgICAgICAgICAgICAgICAgc2NhbGVkVGlsZVNpemUuaGVpZ2h0KCkgLyBpbnRy
aW5zaWNUaWxlU2l6ZS5oZWlnaHQoKSk7CisgICAgRmxvYXRTaXplIHNjYWxlKHNjYWxlZFRpbGVT
aXplIC8gaW50cmluc2ljVGlsZVNpemUpOwogCiAgICAgRmxvYXRSZWN0IG9uZVRpbGVSZWN0Owot
ICAgIEZsb2F0U2l6ZSBhY3R1YWxUaWxlU2l6ZShzY2FsZWRUaWxlU2l6ZS53aWR0aCgpICsgc3Bh
Y2luZy53aWR0aCgpLCBzY2FsZWRUaWxlU2l6ZS5oZWlnaHQoKSArIHNwYWNpbmcuaGVpZ2h0KCkp
OworICAgIEZsb2F0U2l6ZSBhY3R1YWxUaWxlU2l6ZSA9IHNjYWxlZFRpbGVTaXplICsgc3BhY2lu
ZzsKICAgICBvbmVUaWxlUmVjdC5zZXRYKGRlc3RSZWN0LngoKSArIGZtb2RmKGZtb2RmKC1zcmNQ
b2ludC54KCksIGFjdHVhbFRpbGVTaXplLndpZHRoKCkpIC0gYWN0dWFsVGlsZVNpemUud2lkdGgo
KSwgYWN0dWFsVGlsZVNpemUud2lkdGgoKSkpOwogICAgIG9uZVRpbGVSZWN0LnNldFkoZGVzdFJl
Y3QueSgpICsgZm1vZGYoZm1vZGYoLXNyY1BvaW50LnkoKSwgYWN0dWFsVGlsZVNpemUuaGVpZ2h0
KCkpIC0gYWN0dWFsVGlsZVNpemUuaGVpZ2h0KCksIGFjdHVhbFRpbGVTaXplLmhlaWdodCgpKSk7
CiAgICAgb25lVGlsZVJlY3Quc2V0U2l6ZShzY2FsZWRUaWxlU2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggZWEyZGQ1ZDU4
OTJhNWNkMmJiZGJhYjg0NTdiMjEyZThlYzc4NTdhNy4uN2RiNTQ4YjViMTFhYTk2NGI0OTk0NGQw
ZmNlOTk1Mjg4ZDk1YWRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBGbG9hdFNpemUgSW1hZ2VCdWZm
ZXI6OmNsYW1wZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRTaXplJiBzY2FsZSkK
ICAgICAgICAgcmV0dXJuIHNpemU7CiAKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFn
ZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoc2l6ZSk7Ci0gICAgc2NhbGUgPSBGbG9hdFNpemUoY2xhbXBl
ZFNpemUud2lkdGgoKSAvIHNpemUud2lkdGgoKSwgY2xhbXBlZFNpemUuaGVpZ2h0KCkgLyBzaXpl
LmhlaWdodCgpKTsKKyAgICBzY2FsZSA9IGNsYW1wZWRTaXplIC8gc2l6ZTsKICAgICBBU1NFUlQo
IXNpemVOZWVkc0NsYW1waW5nKGNsYW1wZWRTaXplKSk7CiAgICAgQVNTRVJUKCFzaXplTmVlZHND
bGFtcGluZyhzaXplLCBzY2FsZSkpOwogICAgIHJldHVybiBjbGFtcGVkU2l6ZTsKQEAgLTIxMSw3
ICsyMTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIFNldCB1cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRoZSBn
cmFwaGljcyBjb250ZXh0LgotICAgIGJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShz
Y2FsZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBz
aXplLmhlaWdodCgpKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAv
IHNpemUpOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAppbmRleCA2NGQyZDkwMDYxMjI3NzFhMDNiYjI4NjY2
NTFlNjViZmE3MDFiOTFmLi4yYWUwM2I2NDQ0YzIzMjgxY2MxZTQ5NjFhNzdkODdmOGIwZjhiNGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXpl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCkBA
IC0xMzYsNyArMTM2LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBMYXlvdXRV
bml0IG1fd2lkdGgsIG1faGVpZ2h0OworICAgIExheW91dFVuaXQgbV93aWR0aDsKKyAgICBMYXlv
dXRVbml0IG1faGVpZ2h0OwogfTsKIAogaW5saW5lIExheW91dFNpemUmIG9wZXJhdG9yKz0oTGF5
b3V0U2l6ZSYgYSwgY29uc3QgTGF5b3V0U2l6ZSYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3Bw
CmluZGV4IDhiM2Q0YjgwMzhhZDZhZmY3ZjBhNGYxYjFjODU4NmExNTk1ZTgwZGMuLjliZTJlZGE4
YWY0Y2U0YTg1ZGE1MDRmMDJmMDMxYWU1MTg3YzM4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmNwcApAQCAtNDYsMTAgKzQ2LDEwIEBAIEltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGNvbnRleHQu
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogICAgIGNvbnRl
eHQuY2xpcChkc3RSZWN0KTsKLSAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0
UmVjdC55KCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QubG9jYXRpb24oKSk7CiAg
ICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQogICAgICAgICBjb250ZXh0
LnNjYWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJl
Y3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUo
LXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKC1zcmNS
ZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgVGhlbWU6OnNpbmdsZXRvbigpLmRyYXdOYW1lZEltYWdl
KG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkRHJhdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKaW5kZXgg
NDU0YmM1MzFiYjNkOTk5Zjk3ODI2ZDIxNjUzYWNiMjRhM2U1ZDUxZC4uMjk2OTJhYWZhODhmMGI1
ZDc5Y2Y5M2MzOWNiN2YzNGY0ZTJlNDNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSwK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRTaXplIHJhZGl1cyhyb3VuZGluZ1JhZGlpKTsK
LSAgICBGbG9hdFNpemUgaGFsZlNpemUocmVjdC53aWR0aCgpIC8gMiwgcmVjdC5oZWlnaHQoKSAv
IDIpOworICAgIEZsb2F0U2l6ZSBoYWxmU2l6ZSA9IHJlY3Quc2l6ZSgpIC8gMjsKIAogICAgIC8v
IEFwcGx5IHRoZSBTVkcgY29ybmVyIHJhZGl1cyBjb25zdHJhaW50cywgcGVyIHRoZSByZWN0IHNl
Y3Rpb24gb2YgdGhlIFNWRyBzaGFwZXMgc3BlYzogaWYKICAgICAvLyBvbmUgb2YgcngscnkgaXMg
bmVnYXRpdmUsIHRoZW4gdGhlIG90aGVyIGNvcm5lciByYWRpdXMgdmFsdWUgaXMgdXNlZC4gSWYg
Ym90aCB2YWx1ZXMgYXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGQyNGMxMGYxNmE2ODZmMWE0NjAwODhlYjE2
NDMwNGYyYmNkYjQwM2YuLjE0NjFlMjhjMmU3ZDZlMDQwZDY2ZmE1Nzc4MDk4ZjIxYmJhOTQ0NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBTZXQgdXAgYSBjb3JyZXNwb25kaW5n
IHNjYWxlIGZhY3RvciBvbiB0aGUgZ3JhcGhpY3MgY29udGV4dC4KLSAgICBidWZmZXItPmNvbnRl
eHQoKS5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgpLCBz
Y2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkpOworICAgIGJ1ZmZlci0+Y29udGV4
dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsKICAgICByZXR1cm4gYnVmZmVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCmluZGV4IDI0MjliNGJiNzliMzU3YTcxNjgzMzk4ODg2MDA5YTNmN2EzMDFi
MjYuLmVjODRmNmYwMWU1MTJkYTgxZWEwZjdkZGEyYzJiMTY2MjU2OTY5ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZv
clBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAv
LyBkcmF3UERGUGFnZSgpIHJlbGllcyBvbiBkcmF3aW5nIHRoZSB3aG9sZSBQREYgaW50byBhIGNv
bnRleHQgc3RhcnRpbmcgYXQgKDAsIDApLiBXZSBuZWVkCiAgICAgLy8gdG8gdHJhbnNmb3JtIHRo
ZSBkZXN0aW5hdGlvbiBjb250ZXh0IHN1Y2ggdGhhdCBzcmNSZWN0IG9mIHRoZSBzb3VyY2UgY29u
dGV4dCB3aWxsIGJlIGRyYXduCiAgICAgLy8gaW4gZHN0UmVjdCBvZiBkZXN0aW5hdGlvbiBjb250
ZXh0LgotICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpIC0gc3JjUmVjdC54KCksIGRz
dFJlY3QueSgpIC0gc3JjUmVjdC55KCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3Qu
bG9jYXRpb24oKSAtIHNyY1JlY3QubG9jYXRpb24oKSk7CiAgICAgY29udGV4dC5zY2FsZShGbG9h
dFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLXNyY1Jl
Y3QuaGVpZ2h0KCkpOwogfQpAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5Um90
YXRpb25Gb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEZsb2F0U2l6ZSBzaXpl
LCBpCiAgICAgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSA5MCkKICAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoMCwgc2l6ZS5oZWlnaHQoKSk7CiAgICAgZWxzZSBpZiAocm90YXRpb25EZWdyZWVzID09
IDE4MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZSk7CiAgICAgZWxzZSBpZiAocm90
YXRpb25EZWdyZWVzID09IDI3MCkKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZS53aWR0
aCgpLCAwKTsKIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJh
d1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGFwcGx5Um90YXRpb25G
b3JQYWludGluZyhjb250ZXh0LCBzaXplKCksIG1fcm90YXRpb25EZWdyZWVzKTsKIAotICAgIGNv
bnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gueCgpLCAtbV9jcm9wQm94LnkoKSk7CisgICAgY29u
dGV4dC50cmFuc2xhdGUoLW1fY3JvcEJveC5sb2NhdGlvbigpKTsKIAogI2lmIFVTRShESVJFQ1Qy
RCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDk2M2YxYTU5MzZiOTVlOGU2MTNi
OGIyZDRiNWEyNGY0MzU5MzNkMGMuLmI0YmQ2OGYzMjNhNDg3ZTgyYjkzZmE5YmRmZDgyOGVlZjRm
ZjE2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFn
ZUNvcHkucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICBBZmZpbmVUcmFuc2Zv
cm0gcGF0dGVyblRyYW5zZm9ybTsKLSAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZShpbk1h
eEVmZmVjdExvY2F0aW9uLngoKSAtIG1heEVmZmVjdExvY2F0aW9uLngoKSwgaW5NYXhFZmZlY3RM
b2NhdGlvbi55KCkgLSBtYXhFZmZlY3RMb2NhdGlvbi55KCkpOworICAgIHBhdHRlcm5UcmFuc2Zv
cm0udHJhbnNsYXRlKGluTWF4RWZmZWN0TG9jYXRpb24gLSBtYXhFZmZlY3RMb2NhdGlvbik7CiAg
ICAgcGF0dGVybi5nZXQoKS5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9y
bSk7CiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKTsKICAgICBmaWx0ZXJDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVy
bikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCmluZGV4IDZmOTU2NDYxODBlMjI0ODhk
YmI3Y2FmN2MwOWIxYjgwNGU3YzA5NjMuLmVlYmYyMjhhMWM0OTM0ZDgyNjMyODBkODZkZjYzNzFj
NWY0ZmFlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKQEAgLTIwMiw2ICsyMDIs
MTEgQEAgQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OnRyYW5zbGF0ZShjb25zdCBG
bG9hdFBvaW50JiB0KQogICAgIHJldHVybiB0cmFuc2xhdGUodC54KCksIHQueSgpKTsKIH0KIAor
QWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OnRyYW5zbGF0ZShjb25zdCBGbG9hdFNp
emUmIHQpCit7CisgICAgcmV0dXJuIHRyYW5zbGF0ZSh0LndpZHRoKCksIHQuaGVpZ2h0KCkpOwor
fQorCiBBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6cm90YXRlRnJvbVZlY3Rvcihk
b3VibGUgeCwgZG91YmxlIHkpCiB7CiAgICAgcmV0dXJuIHJvdGF0ZShyYWQyZGVnKGF0YW4yKHks
IHgpKSk7CkBAIC0yNDksNyArMjU0LDcgQEAgQWZmaW5lVHJhbnNmb3JtIG1ha2VNYXBCZXR3ZWVu
UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGUKIHsKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoZGVz
dC54KCkgLSBzb3VyY2UueCgpLCBkZXN0LnkoKSAtIHNvdXJjZS55KCkpOwotICAgIHRyYW5zZm9y
bS5zY2FsZShkZXN0LndpZHRoKCkgLyBzb3VyY2Uud2lkdGgoKSwgZGVzdC5oZWlnaHQoKSAvIHNv
dXJjZS5oZWlnaHQoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKGRlc3Quc2l6ZSgpIC8gc291cmNl
LnNpemUoKSk7CiAgICAgcmV0dXJuIHRyYW5zZm9ybTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNm
b3JtLmgKaW5kZXggNjhiYjUyNTYxOGM2MDljOTIyZjY5ZTY5ZGFlOTI1ZTAzMWY0MWI2OC4uNGYw
MzRiMGVjNjVmOWFiNmIzNDZhM2VkN2EzOTFjMjk2MDRhZGM2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRy
YW5zZm9ybS5oCkBAIC0xMTIsMTIgKzExMiwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgQWZmaW5lVHJhbnNmb3JtJiBtdWx0aXBseShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG90aGVy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlKGRvdWJsZSk7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSk7IAotICAgIFdF
QkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9ybSYgc2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwg
ZG91YmxlIHN5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlTm9u
VW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSk7IC8vIFNhbWUgYXMgc2NhbGUoc3gsIHN5KS4K
ICAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlKGNvbnN0IEZsb2F0U2l6
ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9ybSYgcm90YXRlKGRvdWJsZSk7
CiAgICAgQWZmaW5lVHJhbnNmb3JtJiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUg
eSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2xhdGUoZG91Ymxl
IHR4LCBkb3VibGUgdHkpOwogICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNsYXRlKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBB
ZmZpbmVUcmFuc2Zvcm0mIHNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsKICAgICBXRUJDT1JF
X0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0mIGZsaXBYKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgQWZm
aW5lVHJhbnNmb3JtJiBmbGlwWSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IDA3MmUyYjQyZDUwY2NjN2U5OWEyZTYzN2E1ODhk
MzE0NWRkMDIwMjIuLjcxMmM0NDlhMGRiNjU2NGRmNmNhODA3YzA4MzJkMWRlMWE2MWYzOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0K
QEAgLTU1NCw3ICs1NTQsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxi
YXImIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogICAgIAogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBjb250ZXh0
LmNsaXAoZGFtYWdlUmVjdCk7Ci0gICAgY29udGV4dC50cmFuc2xhdGUoc2Nyb2xsYmFyLmZyYW1l
UmVjdCgpLngoKSwgc2Nyb2xsYmFyLmZyYW1lUmVjdCgpLnkoKSk7CisgICAgY29udGV4dC50cmFu
c2xhdGUoc2Nyb2xsYmFyLmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpOwogICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CiAgICAgc2Nyb2xsZXJJbXBQ
YWludChzY3JvbGxiYXJNYXAoKS0+Z2V0KCZzY3JvbGxiYXIpLmdldCgpLCBzY3JvbGxiYXIuZW5h
YmxlZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDVj
ZGU1NDg4YTlmMTAwNTZkZmQyNDUyMDFkMjIwZDY0YjNiMzEyYTUuLmVlZTUyOGYxMjI3NGViMDZh
NmYwNmNhMjRkNGYwNTI3N2ZhN2U4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KQEAgLTQxNSw5ICs0MTUsOSBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRv
bihDb250cm9sUGFydCBidXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdAogICAg
IGlmICh6b29tRmFjdG9yICE9IDEuMGYpIHsKICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldFdpZHRo
KGluZmxhdGVkUmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAgICAgICAgIGluZmxhdGVkUmVj
dC5zZXRIZWlnaHQoaW5mbGF0ZWRSZWN0LmhlaWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAg
IGNvbnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAg
ICAgIGNvbnRleHQuc2NhbGUoem9vbUZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQudHJhbnNsYXRl
KC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQu
dHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgfQogCiAgICAgTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKQEAgLTQyOSw3ICs0
MjksNyBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBidXR0b25U
eXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdAogICAgIGJvb2wgaXNDZWxsRm9jdXNlZCA9
IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCkgJiBDb250cm9sU3RhdGVzOjpGb2N1c1N0YXRlOwogCiAg
ICAgaWYgKFt0b2dnbGVCdXR0b25DZWxsIF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddKSB7Ci0gICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkp
OworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAg
ICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgICAgIGNvbnRleHQu
dHJhbnNsYXRlKDAsIC1pbmZsYXRlZFJlY3QuaGVpZ2h0KCkpOwogCkBAIC01NDAsOSArNTQwLDkg
QEAgc3RhdGljIHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRl
cyYgY29udHJvbFN0YXRlcywgR3JhcGhpY3MKICAgICAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4w
ZikgewogICAgICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0
aCgpIC8gem9vbUZhY3Rvcik7CiAgICAgICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGlu
ZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LnNjYWxlKHpvb21GYWN0b3IpOwotICAgICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgICAgIGNv
bnRleHQudHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCkBAIC02MTEsOSArNjExLDkgQEAgc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENv
bnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAg
IGlmICh6b29tRmFjdG9yICE9IDEuMGYpIHsKICAgICAgICAgcmVjdC5zZXRXaWR0aChyZWN0Lndp
ZHRoKCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgcmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQo
KSAvIHpvb21GYWN0b3IpOwotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShyZWN0LngoKSwgcmVj
dC55KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShyZWN0LmxvY2F0aW9uKCkpOwogICAg
ICAgICBjb250ZXh0LnNjYWxlKHpvb21GYWN0b3IpOwotICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1yZWN0
LmxvY2F0aW9uKCkpOwogICAgIH0KICAgICBDR1JlY3QgYm91bmRzKHJlY3QpOwogICAgIENHUmVj
dCBiYWNrZ3JvdW5kQm91bmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0
ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggZTViZjA0ZGIyM2QyYWNiOTc5NWEzMmU5YTQ4ZTgz
YjJiMzg1MmY5My4uMTNlNGZhMjhiMTM1YWM0MzFiNDE1NDZkOTY4ZDYwYTY3MTUxMWFiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3Bw
CkBAIC00MzksNyArNDM5LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YmVn
aW5GaWx0ZXJFZmZlY3QoKQogCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBjb250ZXh0IHNvIHRoYXQg
dGhlIGNvbnRlbnRzIG9mIHRoZSBsYXllciBpcyBjYXB0dXJlZCBpbiB0aGUgb2Zmc2NyZWVuIG1l
bW9yeSBidWZmZXIuCiAgICAgc291cmNlR3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7Ci0gICAgc291
cmNlR3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLW1fcGFpbnRPZmZzZXQueCgpLCAtbV9wYWlu
dE9mZnNldC55KCkpOworICAgIHNvdXJjZUdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1tX3Bh
aW50T2Zmc2V0KTsKICAgICBzb3VyY2VHcmFwaGljc0NvbnRleHQtPmNsZWFyUmVjdChtX3JlcGFp
bnRSZWN0KTsKICAgICBzb3VyY2VHcmFwaGljc0NvbnRleHQtPmNsaXAobV9yZXBhaW50UmVjdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCmluZGV4IDQ2NGEzNjMzMmRlMmNmMDc5N2Y2ZjBiNThjYjNjOWEwY2JhMDY4ZTkuLmVjMjE2
ZmIyNDdiNmQ3YzExM2I4MWQxODAxOWUzNDMyODBjZDMyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNjg1LDcgKzY4NSw3
IEBAIEludGVycG9sYXRpb25RdWFsaXR5IFJlbmRlckJveE1vZGVsT2JqZWN0OjpjaG9vc2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdCBJbnRS
ZWN0JiBtYXNrUmVjdCwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiBzY3Jv
bGxlZFBhaW50UmVjdCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQg
PSBtYXNrSW1hZ2UtPmNvbnRleHQoKTsKLSAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgt
bWFza1JlY3QueCgpLCAtbWFza1JlY3QueSgpKTsKKyAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5z
bGF0ZSgtbWFza1JlY3QubG9jYXRpb24oKSk7CiAKICAgICAvLyBOb3cgYWRkIHRoZSB0ZXh0IHRv
IHRoZSBjbGlwLiBXZSBkbyB0aGlzIGJ5IHBhaW50aW5nIHVzaW5nIGEgc3BlY2lhbCBwYWludCBw
aGFzZSB0aGF0IHNpZ25hbHMgdG8KICAgICAvLyBJbmxpbmVUZXh0Qm94ZXMgdGhhdCB0aGV5IHNo
b3VsZCBqdXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUgY2xpcC4KQEAgLTI0MzcsNyArMjQz
Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBh
aW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgY29udGV4dC5j
bGlwKHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpKTsKIAogICAgICAgICAgICAgSW50U2l6
ZSBleHRyYU9mZnNldCgyICogcm91bmRUb0ludChwYWludFJlY3Qud2lkdGgoKSkgKyBzdGQ6Om1h
eCgwLCBzaGFkb3dPZmZzZXQud2lkdGgoKSkgKyBzaGFkb3dQYWludGluZ0V4dGVudCAtIDIgKiBz
aGFkb3dTcHJlYWQgKyAxLCAwKTsKLSAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGV4dHJh
T2Zmc2V0LndpZHRoKCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGV4dHJhT2Zmc2V0KTsKICAgICAgICAgICAgIHNoYWRvd09mZnNldCAtPSBl
eHRyYU9mZnNldDsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3co
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCmluZGV4IGRiMzhjNzMzYmJiMjE4NDg1ZmQ0MmQ1MDA4M2ExY2FkN2U0ZDE4ODkuLjdiMzE2
ZDBiY2ZhYTYyNTJlNzQ4NDhiOWUwMDU2ZWZiYzBiMThjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMzc5LDkgKzM3OSw3
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5
KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsCiAgICAgdGV4dFdpZHRoID0gZm9udC53aWR0aChy
dW4pOwogCiAgICAgcmVwbGFjZW1lbnRUZXh0UmVjdC5zZXRTaXplKEZsb2F0U2l6ZSh0ZXh0V2lk
dGggKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFyZ2luICsgKGluY2x1ZGVz
QXJyb3cgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJpZ2h0VGV4dE1hcmdpbldpdGhBcnJv
dyA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmlnaHRUZXh0TWFyZ2luKSwgcmVwbGFjZW1l
bnRUZXh0Um91bmRlZFJlY3RIZWlnaHQpKTsKLSAgICBmbG9hdCB4ID0gKGNvbnRlbnRSZWN0LnNp
emUoKS53aWR0aCgpIC8gMiAtIHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgpLndpZHRoKCkgLyAy
KSArIGNvbnRlbnRSZWN0LmxvY2F0aW9uKCkueCgpOwotICAgIGZsb2F0IHkgPSAoY29udGVudFJl
Y3Quc2l6ZSgpLmhlaWdodCgpIC8gMiAtIHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgpLmhlaWdo
dCgpIC8gMikgKyBjb250ZW50UmVjdC5sb2NhdGlvbigpLnkoKTsKLSAgICByZXBsYWNlbWVudFRl
eHRSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoeCwgeSkpOworICAgIHJlcGxhY2VtZW50VGV4
dFJlY3Quc2V0TG9jYXRpb24oY29udGVudFJlY3QubG9jYXRpb24oKSArIChjb250ZW50UmVjdC5z
aXplKCkgLyAyIC0gcmVwbGFjZW1lbnRUZXh0UmVjdC5zaXplKCkgLyAyKSk7CiAKICAgICBpbmRp
Y2F0b3JSZWN0ID0gcmVwbGFjZW1lbnRUZXh0UmVjdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggMmU0NzQwMDQxOTUyMmYwYzNhZjg2YjNjMmFlMjg4ZTIx
MDg1NGVmNy4uMjUxMzllOTlkYTYyNWZhNmNlMmVkMGZmMjI3Y2NjNDhjZjhiZDllNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MTE1LDcgKzcxMTUsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFJlbgogICAgIExheW91dFNpemUgbW92ZU9mZnNldCA9IHJl
Z2lvbi0+Zmxvd1RocmVhZFBvcnRpb25Mb2NhdGlvbigpIC0gKHBhaW50T2Zmc2V0ICsgcmVnaW9u
Q29udGVudEJveC5sb2NhdGlvbigpKSArIHRvTGF5b3V0U2l6ZShyZWdpb24tPmZyYWdtZW50Q29u
dGFpbmVyKCkuc2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBhaW50
T2Zmc2V0ID0gcm91bmRQb2ludFRvRGV2aWNlUGl4ZWxzKHRvTGF5b3V0UG9pbnQobW92ZU9mZnNl
dCksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBjb250
ZXh0LnNhdmUoKTsKLSAgICBjb250ZXh0LnRyYW5zbGF0ZSgtYWRqdXN0ZWRQYWludE9mZnNldC54
KCksIC1hZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLWFk
anVzdGVkUGFpbnRPZmZzZXQpOwogCiAgICAgTGF5b3V0U2l6ZSBzdWJwaXhlbE9mZnNldCA9IG1v
dmVPZmZzZXQgLSB0b0xheW91dFNpemUoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCkp
OwogICAgIHBhaW50RGlydHlSZWN0Lm1vdmUobW92ZU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDhjYjk3NGVkMjE4YTM1
ZGFjYzIzNGFiYmVkYTViN2ZmNWFmZjM1MDEuLjBlZjEyYzdmN2FmNTQ3NTI4YzVkOGNlNGU0YjI4
YjFlYmRhMmU2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0yNjE3LDcgKzI2MTcsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFw
aAogICAgIH0gZWxzZSBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZvclNjcm9sbENvcm5lcigp
KSB7CiAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIHNjcm9sbENvcm5lckFuZFJlc2l6ZXIgPSBt
X293bmluZ0xheWVyLnNjcm9sbENvcm5lckFuZFJlc2l6ZXJSZWN0KCk7CiAgICAgICAgIGNvbnRl
eHQuc2F2ZSgpOwotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsQ29ybmVyQW5kUmVz
aXplci54KCksIC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLnkoKSk7CisgICAgICAgIGNvbnRleHQu
dHJhbnNsYXRlKC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLmxvY2F0aW9uKCkpOwogICAgICAgICBM
YXlvdXRSZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IExheW91dFJlY3QoY2xpcCk7CiAgICAgICAgIHRy
YW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyQW5kUmVzaXplci5sb2NhdGlvbigpKTsK
ICAgICAgICAgbV9vd25pbmdMYXllci5wYWludFNjcm9sbENvcm5lcihjb250ZXh0LCBJbnRQb2lu
dCgpLCBzbmFwcGVkSW50UmVjdCh0cmFuc2Zvcm1lZENsaXApKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMDZlNzEwMDhh
MDM5M2I4ODhiYjQwODVmYjVkNzM2Nzk5NDMxYTkxMC4uNzMyOTBjMTY4YTA0OTE5ZmRlYzdiMjk5
MjE2MjIxNzg2MWUxMzNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI4ODgsNyArMjg4OCw3IEBAIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjCiAKICAgICBjb250ZXh0LnNhdmUoKTsKICAgICBjb25zdCBJbnRSZWN0JiBz
Y3JvbGxiYXJSZWN0ID0gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKLSAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc2Nyb2xsYmFyUmVjdC54KCksIC1zY3JvbGxiYXJSZWN0LnkoKSk7CisgICAgY29udGV4
dC50cmFuc2xhdGUoLXNjcm9sbGJhclJlY3QubG9jYXRpb24oKSk7CiAgICAgSW50UmVjdCB0cmFu
c2Zvcm1lZENsaXAgPSBjbGlwOwogICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsYmFy
UmVjdC5sb2NhdGlvbigpKTsKICAgICBzY3JvbGxiYXItPnBhaW50KGNvbnRleHQsIHRyYW5zZm9y
bWVkQ2xpcCk7CkBAIC0yOTA1LDcgKzI5MDUsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcgog
ICAgIGVsc2UgaWYgKGdyYXBoaWNzTGF5ZXIgPT0gbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSkgewog
ICAgICAgICBjb25zdCBJbnRSZWN0JiBzY3JvbGxDb3JuZXIgPSBtX3JlbmRlclZpZXcuZnJhbWVW
aWV3KCkuc2Nyb2xsQ29ybmVyUmVjdCgpOwogICAgICAgICBjb250ZXh0LnNhdmUoKTsKLSAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lci54KCksIC1zY3JvbGxDb3JuZXIueSgp
KTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lci5sb2NhdGlvbigpKTsK
ICAgICAgICAgSW50UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50
ZWdyYWxQb3NpdGlvbmVkSXRlbXM7CiAgICAgICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Ny
b2xsQ29ybmVyLmxvY2F0aW9uKCkpOwogICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCku
cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcAppbmRleCAxM2NlZjE2
MmY1ZDRiN2RjNWRkZGY0MDQ3OTJhZGQ0NTBmODA1YWIyLi4zZThhNzYyNmM4MTdhY2YwNjJiMDQ2
YmZlOThjNTRlMDc2MzBmZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhQ29udHJvbHMuY3BwCkBAIC05MSwxMSArOTEsMTAgQEAgc3RhdGljIEZsb2F0UmVj
dCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dChjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGMKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgp
OwogICAgIEZsb2F0UmVjdCB1bnpvb21lZFJlY3Qob3JpZ2luYWxSZWN0KTsKICAgICBpZiAoem9v
bUxldmVsICE9IDEuMGYpIHsKLSAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVk
UmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdo
dCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsK
KyAgICAgICAgdW56b29tZWRSZWN0LnNldFNpemUodW56b29tZWRSZWN0LnNpemUoKSAvIHpvb21M
ZXZlbCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVj
dC5sb2NhdGlvbigpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZSh6b29tTGV2
ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0
LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRy
YW5zbGF0ZSgtdW56b29tZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIH0KICAgICByZXR1cm4gdW56
b29tZWRSZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CmluZGV4IGYwMGM4Mzk3YjU4YTQxYWE5MzEyOGEyMjZhYWU3NWE2ZmI5YWM1NGUuLjkyODdkNDAw
OTMwN2M4MmZjNzk2NDdjZWExZWU1OWNhZTA5ZmZkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTk0OSw5ICs5NDksOSBAQCBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SW5mbwogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICBpbmZsYXRl
ZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAg
ICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZl
bCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54
KCksIGluZmxhdGVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5z
bGF0ZShpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuc2NhbGUoem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xh
dGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICB9
CiAKICAgICBwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNz
YXJ5KHBvcHVwQnV0dG9uLCByZW5kZXJlciwgcGFpbnRJbmZvLCBpbmZsYXRlZFJlY3QpOwpAQCAt
MTU4MywxMSArMTU4MywxMCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1i
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogCiAgICAgRmxvYXRS
ZWN0IHVuem9vbWVkUmVjdCA9IGJvdW5kczsKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsK
LSAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9v
bUxldmVsKTsKLSAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVp
Z2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0
ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgdW56b29tZWRS
ZWN0LnNldFNpemUodW56b29tZWRSZWN0LnNpemUoKSAvIHpvb21MZXZlbCk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC5sb2NhdGlvbigpKTsKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZSh6b29tTGV2ZWwpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVj
dC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRS
ZWN0LmxvY2F0aW9uKCkpOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkRHJhd0NlbGwgPSB0cnVl
OwpAQCAtMTYxMSwxNCArMTYxMCwxMiBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJj
aEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogCiAgICAg
ZmxvYXQgem9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKIAotICAgIEludFJl
Y3QgdW56b29tZWRSZWN0ID0gcjsKLQorICAgIEZsb2F0UmVjdCB1bnpvb21lZFJlY3QgPSByOwog
ICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewotICAgICAgICB1bnpvb21lZFJlY3Quc2V0V2lk
dGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwotICAgICAgICB1bnpvb21lZFJl
Y3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVk
UmVjdC55KCkpOworICAgICAgICB1bnpvb21lZFJlY3Quc2V0U2l6ZSh1bnpvb21lZFJlY3Quc2l6
ZSgpIC8gem9vbUxldmVsKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUo
dW56b29tZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNj
YWxlKHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11
bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QubG9jYXRpb24oKSk7CiAgICAgfQogCiAg
ICAgLy8gU2V0IHRoZSBzZWFyY2ggYnV0dG9uIHRvIG5pbCBiZWZvcmUgZHJhd2luZy4gIFRoZW4g
cmVzZXQgaXQgc28gd2UgY2FuIGRyYXcgaXQgbGF0ZXIuCkBAIC0xNzQyLDExICsxNzM5LDEwIEBA
IGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3Qg
UmVuZGVyQm94JiBib3gsIGNvbnN0IFBhCiAKICAgICBGbG9hdFJlY3QgdW56b29tZWRSZWN0KHBh
aW50aW5nUG9zLCBsb2NhbEJvdW5kcy5zaXplKCkpOwogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4w
ZikgewotICAgICAgICB1bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkg
LyB6b29tTGV2ZWwpOwotICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVj
dC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJh
bnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICB1bnpv
b21lZFJlY3Quc2V0U2l6ZSh1bnpvb21lZFJlY3Quc2l6ZSgpIC8gem9vbUxldmVsKTsKKyAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LmxvY2F0aW9uKCkp
OwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKHpvb21MZXZlbCk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29t
ZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpv
b21lZFJlY3QubG9jYXRpb24oKSk7CiAgICAgfQogICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNl
bGxdIGRyYXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IoYm94
KV07CiAgICAgW1tzZWFyY2ggY2FuY2VsQnV0dG9uQ2VsbF0gc2V0Q29udHJvbFZpZXc6bmlsXTsK
QEAgLTE4NzgsMTEgKzE4NzQsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFAKICAgICAKICAg
ICBGbG9hdFJlY3QgdW56b29tZWRSZWN0KHBhaW50aW5nUG9zLCBsb2NhbEJvdW5kcy5zaXplKCkp
OwogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewotICAgICAgICB1bnpvb21lZFJlY3Quc2V0
V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwotICAgICAgICB1bnpvb21l
ZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9v
bWVkUmVjdC55KCkpOworICAgICAgICB1bnpvb21lZFJlY3Quc2V0U2l6ZSh1bnpvb21lZFJlY3Qu
c2l6ZSgpIC8gem9vbUxldmVsKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xh
dGUodW56b29tZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnNjYWxlKHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRl
KC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QubG9jYXRpb24oKSk7CiAgICAgfQog
CiAgICAgW1tzZWFyY2ggc2VhcmNoQnV0dG9uQ2VsbF0gZHJhd1dpdGhGcmFtZTp1bnpvb21lZFJl
Y3QgaW5WaWV3OmRvY3VtZW50Vmlld0Zvcihib3gpXTsKQEAgLTIxMTQsNyArMjEwOSw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50SW1hZ2VDb250cm9sc0J1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBjb25zCiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxv
Y2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICBwYWludEluZm8u
Y29udGV4dCgpLnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkudHJhbnNsYXRlKHJlY3QubG9jYXRpb24oKSk7CiAKICAgICBJbnRSZWN0IGlubmVy
RnJhbWUoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkpOwogICAgIFtjZWxsIGRyYXdXaXRoRnJhbWU6
aW5uZXJGcmFtZSBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKHJlbmRlcmVyKV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cAppbmRleCBiMzFmMDIxMWMzZTBkYWM2ZjQyNDZhNzkxMzg4N2ZhMzZkYzk0ZmU5Li4xM2E4MTc4
ZDQ1M2VhZmUyN2JhZDljNzExM2ZkNzM0MDhlMGRhMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTM4
LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
OjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHQmxvY2soZWxlbWVudCwgV1RG
TW92ZShzdHlsZSkpCi0gICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiB7CiB9CiAK
QEAgLTExMSw3ICsxMTAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBMYXlvdXRSZWN0JiByZXBhaQogY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkgY29uc3QKIHsKICAgICBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm0gPSBsb2NhbFRyYW5zZm9y
bSgpOwotICAgIG1fbG9jYWxUb1BhcmVudFRyYW5zZm9ybS50cmFuc2xhdGUobV92aWV3cG9ydC54
KCksIG1fdmlld3BvcnQueSgpKTsKKyAgICBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm0udHJhbnNs
YXRlKG1fdmlld3BvcnQubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIG1fbG9jYWxUb1BhcmVudFRy
YW5zZm9ybTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCAxMDExMzUzYTVlZWE5ODRhYjY2NTkwNzRlYmZm
NzFiMWIxZmVjOWJhLi4zNDYxZDJjMDVlYTIwZWVjNDJlODNjZmYyYjc4NjUzYjYxODIxZWMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaApAQCAtNjcsMTAgKzY3LDEwIEBAIHByaXZhdGU6CiAgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
QWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9sb2NhbFRyYW5zZm9ybTsgfQogCi0gICAgYm9vbCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlIDog
MTsKLSAgICBGbG9hdFJlY3QgbV92aWV3cG9ydDsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2Nh
bFRyYW5zZm9ybTsKICAgICBtdXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJlbnRU
cmFuc2Zvcm07CisgICAgRmxvYXRSZWN0IG1fdmlld3BvcnQ7CisgICAgYm9vbCBtX25lZWRzVHJh
bnNmb3JtVXBkYXRlIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwCmluZGV4IDZhODc1MTEzOWI4NDBhMGUzNmFiMzI5MWMxNmQ1MzEyMjY5NjM0
YmEuLmE0ZmNkMzJhYTUxN2VjZjE0YzNjNjNjOGU4ZTgzMDRlZjVlZWJkYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
cjo6cGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAg
Ly8gT25seSBvbmUgdmlzaWJsZSBzaGFwZS9wYXRoIHdhcyBmb3VuZC4gRGlyZWN0bHkgY29udGlu
dWUgY2xpcHBpbmcgYW5kIHRyYW5zZm9ybSB0aGUgY29udGVudCB0byB1c2Vyc3BhY2UgaWYgbmVj
ZXNzYXJ5LgogICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZH
VW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2Jq
ZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0JveC55KCkpOwotICAgICAgICB0cmFu
c2Zvcm0uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9iamVjdEJv
dW5kaW5nQm94LmhlaWdodCgpKTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvYmplY3RC
b3VuZGluZ0JveC5sb2NhdGlvbigpKTsKKyAgICAgICAgdHJhbnNmb3JtLnNjYWxlKG9iamVjdEJv
dW5kaW5nQm94LnNpemUoKSk7CiAgICAgICAgIGNsaXBQYXRoLnRyYW5zZm9ybSh0cmFuc2Zvcm0p
OwogICAgIH0KIApAQCAtMTgyLDggKzE4Miw4IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoY29uc3QgQ2xpcHBlck1hc2tJbWFnZSYKIAog
ICAgIEFmZmluZVRyYW5zZm9ybSBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uOwogICAgIGlmIChj
bGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7Ci0gICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3Jt
YXRpb24udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gu
eSgpKTsKLSAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi5zY2FsZU5vblVuaWZvcm0o
b2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOwor
ICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0ZShvYmplY3RCb3VuZGlu
Z0JveC5sb2NhdGlvbigpKTsKKyAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi5zY2Fs
ZShvYmplY3RCb3VuZGluZ0JveC5zaXplKCkpOwogICAgICAgICBtYXNrQ29udGV4dC5jb25jYXRD
VE0obWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAgfQogCkBAIC0yNjUsOCArMjY1LDgg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudChjb25z
dCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KIAogICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5j
bGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5E
SU5HQk9YKSB7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0Jv
eC55KCkpOwotICAgICAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5n
Qm94LndpZHRoKCksIG9iamVjdEJvdW5kaW5nQm94LmhlaWdodCgpKTsKKyAgICAgICAgdHJhbnNm
b3JtLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC5sb2NhdGlvbigpKTsKKyAgICAgICAgdHJh
bnNmb3JtLnNjYWxlKG9iamVjdEJvdW5kaW5nQm94LnNpemUoKSk7CiAgICAgICAgIHBvaW50ID0g
dHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQo
cG9pbnQpOwogICAgIH0KIApAQCAtMzAxLDggKzMwMSw4IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OnJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JiBv
YmplCiAgICAgaWYgKGNsaXBQYXRoRWxlbWVudCgpLmNsaXBQYXRoVW5pdHMoKSA9PSBTVkdVbml0
VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIHsKICAgICAgICAgRmxvYXRS
ZWN0IG9iamVjdEJvdW5kaW5nQm94ID0gb2JqZWN0Lm9iamVjdEJvdW5kaW5nQm94KCk7CiAgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0JveC55KCkpOwotICAgICAg
ICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9i
amVjdEJvdW5kaW5nQm94LmhlaWdodCgpKTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShv
YmplY3RCb3VuZGluZ0JveC5sb2NhdGlvbigpKTsKKyAgICAgICAgdHJhbnNmb3JtLnNjYWxlKG9i
amVjdEJvdW5kaW5nQm94LnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cmFuc2Zvcm0ubWFwUmVj
dChtX2NsaXBCb3VuZGFyaWVzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IGU1
NTEzNmQ0ODIwOTYyNzY5NjVmNTMwZjUyOTk3NWI3M2VkNjlkZTguLjE5OGEwZWIxZTQwNGM1NGYz
MmIyZjRhMDhjNDMzZDdmOGIzMjg0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtODMsOCAr
ODMsOCBAQCBzdGF0aWMgaW5saW5lIEFmZmluZVRyYW5zZm9ybSBjbGlwVG9UZXh0TWFzayhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5pcQogICAgIEFmZmluZVRyYW5zZm9ybSBtYXRy
aXg7CiAgICAgaWYgKGJvdW5kaW5nQm94TW9kZSkgewogICAgICAgICBGbG9hdFJlY3QgbWFza0Jv
dW5kaW5nQm94ID0gdGV4dFJvb3RCbG9jay0+b2JqZWN0Qm91bmRpbmdCb3goKTsKLSAgICAgICAg
bWF0cml4LnRyYW5zbGF0ZShtYXNrQm91bmRpbmdCb3gueCgpLCBtYXNrQm91bmRpbmdCb3gueSgp
KTsKLSAgICAgICAgbWF0cml4LnNjYWxlTm9uVW5pZm9ybShtYXNrQm91bmRpbmdCb3gud2lkdGgo
KSwgbWFza0JvdW5kaW5nQm94LmhlaWdodCgpKTsKKyAgICAgICAgbWF0cml4LnRyYW5zbGF0ZSht
YXNrQm91bmRpbmdCb3gubG9jYXRpb24oKSk7CisgICAgICAgIG1hdHJpeC5zY2FsZShtYXNrQm91
bmRpbmdCb3guc2l6ZSgpKTsKICAgICB9CiAgICAgbWF0cml4ICo9IGdyYWRpZW50VHJhbnNmb3Jt
OwogICAgIHJldHVybiBtYXRyaXg7CkBAIC0xMzIsOCArMTMyLDggQEAgYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW4KICNlbHNlCiAgICAgICAgIGlmIChncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YICYmICFvYmplY3RCb3VuZGluZ0Jv
eC5pc0VtcHR5KCkpIHsKICNlbmRpZgotICAgICAgICAgICAgZ3JhZGllbnREYXRhLT51c2Vyc3Bh
Y2VUcmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRp
bmdCb3gueSgpKTsKLSAgICAgICAgICAgIGdyYWRpZW50RGF0YS0+dXNlcnNwYWNlVHJhbnNmb3Jt
LnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGlu
Z0JveC5oZWlnaHQoKSk7CisgICAgICAgICAgICBncmFkaWVudERhdGEtPnVzZXJzcGFjZVRyYW5z
Zm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CisgICAgICAgICAg
ICBncmFkaWVudERhdGEtPnVzZXJzcGFjZVRyYW5zZm9ybS5zY2FsZShvYmplY3RCb3VuZGluZ0Jv
eC5zaXplKCkpOwogICAgICAgICB9CiAKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50
VHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmNwcAppbmRleCA3NTM2MGFlNmExZDM2YWI3MmRlYTBlZTQy
OTUwNTBlN2Q3MzRmZTYwLi41MzhlMjFjZDA0NDFhMjI4MDFjNmQzYWFiOTA4MWFjMGJmOGVmMGFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFya2VyLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEFmZmluZVRyYW5zZm9ybSBS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6bWFya2VyVHJhbnNmb3JtYXRpb24oY29uc3QgRmxvYXRQ
b2ludCYKICAgICBib29sIHVzZVN0cm9rZVdpZHRoID0gbWFya2VyRWxlbWVudCgpLm1hcmtlclVu
aXRzKCkgPT0gU1ZHTWFya2VyVW5pdHNTdHJva2VXaWR0aDsKIAogICAgIEFmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm07Ci0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvcmlnaW4ueCgpLCBvcmlnaW4u
eSgpKTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9yaWdpbik7CiAgICAgdHJhbnNmb3JtLnJv
dGF0ZShtYXJrZXJBbmdsZSA9PSAtMSA/IGF1dG9BbmdsZSA6IG1hcmtlckFuZ2xlKTsKICAgICB0
cmFuc2Zvcm0gPSBtYXJrZXJDb250ZW50VHJhbnNmb3JtYXRpb24odHJhbnNmb3JtLCByZWZlcmVu
Y2VQb2ludCgpLCB1c2VTdHJva2VXaWR0aCA/IHN0cm9rZVdpZHRoIDogLTEpOwogICAgIHJldHVy
biB0cmFuc2Zvcm07CkBAIC0xMzIsNyArMTMyLDcgQEAgQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNW
R1Jlc291cmNlTWFya2VyOjptYXJrZXJDb250ZW50VHJhbnNmb3JtYXRpb24oY29uc3QgQWZmaW4K
ICAgICBpZiAoc3Ryb2tlV2lkdGggIT0gLTEpCiAgICAgICAgIHRyYW5zZm9ybWF0aW9uLnNjYWxl
Tm9uVW5pZm9ybShzdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpOwogCi0gICAgdHJhbnNmb3JtYXRp
b24udHJhbnNsYXRlKC1tYXBwZWRPcmlnaW4ueCgpLCAtbWFwcGVkT3JpZ2luLnkoKSk7CisgICAg
dHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKC1tYXBwZWRPcmlnaW4pOwogICAgIHJldHVybiB0cmFu
c2Zvcm1hdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCBhYTk2MGUyZjhiNjc5MGU2ODJk
NWRiZmVhNTJhN2MwY2YzYTZjY2E0Li5iY2Q2YmRmM2Y2YjZiMDliNTFmYzcyYjY0MmRiNTJlOTgx
MTM0YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtOTMsOCArOTMsOCBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFz
a2VyRGF0YSwgQwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9u
OwogICAgIGlmIChtYXNrRWxlbWVudCgpLm1hc2tDb250ZW50VW5pdHMoKSA9PSBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIHsKICAgICAgICAgRmxvYXRSZWN0
IG9iamVjdEJvdW5kaW5nQm94ID0gb2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpOwotICAgICAg
ICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC54
KCksIG9iamVjdEJvdW5kaW5nQm94LnkoKSk7Ci0gICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3Jt
YXRpb24uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9iamVjdEJv
dW5kaW5nQm94LmhlaWdodCgpKTsKKyAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi50
cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CisgICAgICAgIG1hc2tDb250
ZW50VHJhbnNmb3JtYXRpb24uc2NhbGUob2JqZWN0Qm91bmRpbmdCb3guc2l6ZSgpKTsKICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5jb25jYXRDVE0obWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7
CiAgICAgfQogCkBAIC0xNTIsOCArMTUyLDggQEAgRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpyZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWMKICAg
ICBGbG9hdFJlY3QgbWFza1JlY3QgPSBtX21hc2tDb250ZW50Qm91bmRhcmllczsKICAgICBpZiAo
bWFza0VsZW1lbnQoKS5tYXNrQ29udGVudFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07Ci0gICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gueCgp
LCBvYmplY3RCb3VuZGluZ0JveC55KCkpOwotICAgICAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlm
b3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9iamVjdEJvdW5kaW5nQm94LmhlaWdodCgp
KTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC5sb2NhdGlv
bigpKTsKKyAgICAgICAgdHJhbnNmb3JtLnNjYWxlKG9iamVjdEJvdW5kaW5nQm94LnNpemUoKSk7
CiAgICAgICAgIG1hc2tSZWN0ID0gdHJhbnNmb3JtLm1hcFJlY3QobWFza1JlY3QpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGQzYTFlM2M5MDkxNGYyZjU4ZDk2NDhlN2IyMWM3NWM3
ODRiNDQxNzMuLjk4MGVlM2U2OTg1NWU0ODM0NTcxNDA1ZTdkNzEzN2JlMmQ3ZDc0OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKQEAgLTExOCw4ICsxMTgsOCBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9w
dAogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgogCi0gICAg
cGF0dGVybkRhdGEtPnRyYW5zZm9ybS50cmFuc2xhdGUodGlsZUJvdW5kYXJpZXMueCgpLCB0aWxl
Qm91bmRhcmllcy55KCkpOwotICAgIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0uc2NhbGUodGlsZUJv
dW5kYXJpZXMud2lkdGgoKSAvIHRpbGVJbWFnZVNpemUud2lkdGgoKSwgdGlsZUJvdW5kYXJpZXMu
aGVpZ2h0KCkgLyB0aWxlSW1hZ2VTaXplLmhlaWdodCgpKTsKKyAgICBwYXR0ZXJuRGF0YS0+dHJh
bnNmb3JtLnRyYW5zbGF0ZSh0aWxlQm91bmRhcmllcy5sb2NhdGlvbigpKTsKKyAgICBwYXR0ZXJu
RGF0YS0+dHJhbnNmb3JtLnNjYWxlKHRpbGVCb3VuZGFyaWVzLnNpemUoKSAvIHRpbGVJbWFnZVNp
emUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBtX2F0dHJpYnV0
ZXMucGF0dGVyblRyYW5zZm9ybSgpOwogICAgIGlmICghcGF0dGVyblRyYW5zZm9ybS5pc0lkZW50
aXR5KCkpCkBAIC0yNTgsOCArMjU4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBS
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXQKICAgICBH
cmFwaGljc0NvbnRleHQmIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsK
IAogICAgIC8vIFRoZSBpbWFnZSBidWZmZXIgcmVwcmVzZW50cyB0aGUgZmluYWwgcmVuZGVyZWQg
c2l6ZSwgc28gdGhlIGNvbnRlbnQgaGFzIHRvIGJlIHNjYWxlZCAodG8gYXZvaWQgcGl4ZWxhdGlv
bikuCi0gICAgdGlsZUltYWdlQ29udGV4dC5zY2FsZShGbG9hdFNpemUoY2xhbXBlZEFic29sdXRl
VGlsZUJvdW5kYXJpZXMud2lkdGgoKSAvIHRpbGVCb3VuZGFyaWVzLndpZHRoKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzLmhlaWdodCgpIC8gdGlsZUJvdW5kYXJpZXMuaGVpZ2h0KCkpKTsKKyAgICB0aWxlSW1hZ2VD
b250ZXh0LnNjYWxlKGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLnNpemUoKSAvIHRpbGVC
b3VuZGFyaWVzLnNpemUoKSk7CiAKICAgICAvLyBBcHBseSB0aWxlIGltYWdlIHRyYW5zZm9ybWF0
aW9ucy4KICAgICBpZiAoIXRpbGVJbWFnZVRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyLmNwcAppbmRleCAwYjA4YTE3YjhhMDc3ZmY1YWQ4YmQ2MDlkYWJl
NmMyYTVhOTVhOGJkLi40NDk4ODZkMTA3OTQ4M2JhZTQzMjdhNDZhNTY5NTMwNzdiOTdkNmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBS
ZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fbG9jYWxUcmFuc2Zvcm0gPSBlbGVtZW50
LmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsKLSAgICBtX2xvY2FsVHJhbnNmb3JtLnRyYW5zbGF0
ZShtX2xhc3RUcmFuc2xhdGlvbi53aWR0aCgpLCBtX2xhc3RUcmFuc2xhdGlvbi5oZWlnaHQoKSk7
CisgICAgbV9sb2NhbFRyYW5zZm9ybS50cmFuc2xhdGUobV9sYXN0VHJhbnNsYXRpb24pOwogICAg
IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IGM5YjBmNWU1YWM3MDZhODgxMWQyNWM0NGYxNTRlM2MzMWYxNWI0NzIuLjY3YWVk
YjRiYTRhN2RmMTQ5ODgyNmRmNzllMzY1NzQxMzA2ZjVjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjcyLDcg
KzI3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCiB7CiAgICAgSW50U2l6
ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7Ci0gICAg
SW50U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkp
OworICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVj
dC5zaXplKCkpOwogCiAgICAgLy8gRG9uJ3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KICAg
ICBpZiAoY2xhbXBlZFNpemUuaXNFbXB0eSgpKQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSCiAgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpOwogCiAgICAgLy8gQ29tcGVuc2F0ZSByb3VuZGluZyBlZmZlY3Rz
LCBhcyB0aGUgYWJzb2x1dGUgdGFyZ2V0IHJlY3QgaXMgdXNpbmcgZmxvYXRpbmctcG9pbnQgbnVt
YmVycyBhbmQgdGhlIGltYWdlIGJ1ZmZlciBzaXplIGlzIGludGVnZXIuCi0gICAgaW1hZ2VDb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRTaXplLndpZHRoKCkgLyB0YXJnZXRSZWN0Lndp
ZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0LmhlaWdodCgpKSk7Cisg
ICAgaW1hZ2VDb250ZXh0LnNjYWxlKHVuY2xhbXBlZFNpemUgLyB0YXJnZXRSZWN0LnNpemUoKSk7
CiAKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBT
VkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4mIGltYWdlQnUKICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIGlmICgo
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRl
ZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgQ29sb3JTcGFjZVNSR0IsIG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkpKSkgewogICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBidWZmZXJlZFJl
bmRlcmluZ0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgICAgICAgICAgYnVm
ZmVyZWRSZW5kZXJpbmdDb250ZXh0LnRyYW5zbGF0ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRp
bmdCb3gueSgpKTsKKyAgICAgICAgICAgIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dC50cmFuc2xh
dGUoLWJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOwogICAgICAgICAgICAgUGFpbnRJbmZvIGJ1ZmZl
cmVkSW5mbygqbV9wYWludEluZm8pOwogICAgICAgICAgICAgYnVmZmVyZWRJbmZvLnNldENvbnRl
eHQoYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0KTsKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRl
clNWR0ltYWdlPigqbV9yZW5kZXJlcikucGFpbnRGb3JlZ3JvdW5kKGJ1ZmZlcmVkSW5mbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAppbmRleCBl
ODA4ZDc5NjlkZjU1MjJmYjIyMzk2YWM5YmQ0OTg2NDQ1MjcwNzc4Li4yOWFhMDU0ZDE2MjM2ZWE1
MDI2ZWQwYjlmZmI0NDgzY2ZkMDQwNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpidWlsZFRyYW5zZm9ybUZvclByb2dyZXNzKEFmZmluZVRyYW5zZm9y
bSogdHJhbnNmbwogICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSB0cmF2ZXJzYWxTdGF0ZS5jdXJy
ZW50KCk7CiAgICAgZmxvYXQgYW5nbGUgPSB0cmF2ZXJzYWxTdGF0ZS5ub3JtYWxBbmdsZSgpOwog
Ci0gICAgdHJhbnNmb3JtLT50cmFuc2xhdGUocG9zaXRpb24ueCgpLCBwb3NpdGlvbi55KCkpOwor
ICAgIHRyYW5zZm9ybS0+dHJhbnNsYXRlKHBvc2l0aW9uKTsKICAgICBSb3RhdGVNb2RlIHJvdGF0
ZU1vZGUgPSB0aGlzLT5yb3RhdGVNb2RlKCk7CiAgICAgaWYgKHJvdGF0ZU1vZGUgIT0gUm90YXRl
QXV0byAmJiByb3RhdGVNb2RlICE9IFJvdGF0ZUF1dG9SZXZlcnNlKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggYmZhOTE3MmU4OTFjYzY0MzA4
ZjM0NjI0ZTc0ZTVlZTliM2E3YTMyOC4uODk4NzlhOWMwNGMxODM0YzQwYzRhYTE2YWQyMzQzMTVl
OTI1Y2Q0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtNDM5LDcgKzQz
OSw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFj
ZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjCiAgICAgICAgICAgICBpZiAoRnJhbWVWaWV3
KiB2aWV3ID0gZG9jdW1lbnQoKS52aWV3KCkpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRQb2lu
dCBzY3JvbGxQb3NpdGlvbiA9IHZpZXctPnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAg
ICAgc2Nyb2xsUG9zaXRpb24uc2NhbGUoem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICAgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZSgtc2Nyb2xsUG9zaXRpb24ueCgpLCAtc2Nyb2xsUG9zaXRpb24ueSgp
KTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1zY3JvbGxQb3NpdGlvbik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAppbmRleCAyM2NlYWU1NGYwOGY0ODVkYmQxOWVlM2ZkYzMwYWE4NWRj
YWFlNjBlLi40MjZlMjVlNGIwMDcwODQ1ZjAyMGE2ZDJiZjA5NGY5ZDhiM2MyNmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTI5OCwxNCArMjk4LDE0IEBA
IEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgfQogCi0g
ICAgRmxvYXRTaXplIHNjYWxlKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0
UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpOworICAgIEZsb2F0U2l6ZSBzY2FsZShk
c3RSZWN0LnNpemUoKSAvIHNyY1JlY3Quc2l6ZSgpKTsKICAgICAKICAgICAvLyBXZSBjYW4gb25s
eSBkcmF3IHRoZSBlbnRpcmUgZnJhbWUsIGNsaXBwZWQgdG8gdGhlIHJlY3Qgd2Ugd2FudC4gU28g
Y29tcHV0ZSB3aGVyZSB0aGUgdG9wIGxlZnQKICAgICAvLyBvZiB0aGUgaW1hZ2Ugd291bGQgYmUg
aWYgd2Ugd2VyZSBkcmF3aW5nIHdpdGhvdXQgY2xpcHBpbmcsIGFuZCB0cmFuc2xhdGUgYWNjb3Jk
aW5nbHkuCiAgICAgRmxvYXRTaXplIHRvcExlZnRPZmZzZXQoc3JjUmVjdC5sb2NhdGlvbigpLngo
KSAqIHNjYWxlLndpZHRoKCksIHNyY1JlY3QubG9jYXRpb24oKS55KCkgKiBzY2FsZS5oZWlnaHQo
KSk7CiAgICAgRmxvYXRQb2ludCBkZXN0T2Zmc2V0ID0gZHN0UmVjdC5sb2NhdGlvbigpIC0gdG9w
TGVmdE9mZnNldDsKIAotICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RPZmZzZXQueCgpLCBkZXN0
T2Zmc2V0LnkoKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoZGVzdE9mZnNldCk7CiAgICAgY29u
dGV4dC5zY2FsZShzY2FsZSk7CiAKICAgICB2aWV3LT5yZXNpemUoY29udGFpbmVyU2l6ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4
IGY5OWQyZjNlYjI0NzIxNGE2ZjAxZDNkOGMxYjFiMjRhMWM0ZjU4NGIuLjc1NzI1N2ExYWUwZDQw
YmYyYmMxOGE2MGMwMjI0YTRhYTM3OTY1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTY1OCw4ICsxNjU4LDggQEAgLSAodm9pZClf
ZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uJilsYXllclRyZWUKIAogICAgICAgICAgICAgaWYgKGFyZUVzc2VudGlhbGx5RXF1YWxBc0Zs
b2F0KGNvbnRlbnRab29tU2NhbGUoc2VsZiksIF9zY2FsZVRvUmVzdG9yZSkpIHsKICAgICAgICAg
ICAgICAgICBDR1JlY3QgdW5vYnNjdXJlZFJlY3QgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3Qoc2Vs
Zi5ib3VuZHMsIF9vYnNjdXJlZEluc2V0cyk7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6Rmxv
YXRTaXplIHVub2JzY3VyZWRDb250ZW50U2l6ZUF0TmV3U2NhbGUodW5vYnNjdXJlZFJlY3Quc2l6
ZS53aWR0aCAvIF9zY2FsZVRvUmVzdG9yZSwgdW5vYnNjdXJlZFJlY3Quc2l6ZS5oZWlnaHQgLyBf
c2NhbGVUb1Jlc3RvcmUpOwotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdG9w
TGVmdEluRG9jdW1lbnRDb29yZGluYXRlcyh1bm9ic2N1cmVkQ2VudGVyVG9SZXN0b3JlLngoKSAt
IHVub2JzY3VyZWRDb250ZW50U2l6ZUF0TmV3U2NhbGUud2lkdGgoKSAvIDIsIHVub2JzY3VyZWRD
ZW50ZXJUb1Jlc3RvcmUueSgpIC0gdW5vYnNjdXJlZENvbnRlbnRTaXplQXROZXdTY2FsZS5oZWln
aHQoKSAvIDIpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bm9ic2N1cmVk
Q29udGVudFNpemVBdE5ld1NjYWxlID0gV2ViQ29yZTo6RmxvYXRTaXplKHVub2JzY3VyZWRSZWN0
LnNpemUpIC8gX3NjYWxlVG9SZXN0b3JlOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgdG9wTGVmdEluRG9jdW1lbnRDb29yZGluYXRlcyA9IHVub2JzY3VyZWRDZW50ZXJUb1Jl
c3RvcmUgLSB1bm9ic2N1cmVkQ29udGVudFNpemVBdE5ld1NjYWxlIC8gMjsKIAogICAgICAgICAg
ICAgICAgIHRvcExlZnRJbkRvY3VtZW50Q29vcmRpbmF0ZXMuc2NhbGUoX3NjYWxlVG9SZXN0b3Jl
KTsKICAgICAgICAgICAgICAgICB0b3BMZWZ0SW5Eb2N1bWVudENvb3JkaW5hdGVzLm1vdmVCeShX
ZWJDb3JlOjpGbG9hdFBvaW50KC1fb2JzY3VyZWRJbnNldHMubGVmdCwgLV9vYnNjdXJlZEluc2V0
cy50b3ApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IDU5NDNmMWVjNWZiYzNlOTMyYThhZDBlZTNmMWRm
M2JjMTkzY2ZmYWMuLjY0YzhmMDZkYWRmZTExNjIxYjcxMzRhZTcwOWIwMTJlY2VmOWVmY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5tbQpAQCAtNTcsMTAgKzU3LDkgQEAgc3RhdGljIFVJVGFyZ2V0ZWREcmFnUHJl
dmlldyAqY3JlYXRlVGFyZ2V0ZWREcmFnUHJldmlldyhVSUltYWdlICppbWFnZSwgVUlWaWV3ICoK
ICAgICBpZiAoZnJhbWVJbkNvbnRhaW5lckNvb3JkaW5hdGVzLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBmbG9hdCB3aWR0aFNjYWxpbmdSYXRpbyA9IGZyYW1lSW5D
b250YWluZXJDb29yZGluYXRlcy53aWR0aCgpIC8gZnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMu
d2lkdGgoKTsKLSAgICBmbG9hdCBoZWlnaHRTY2FsaW5nUmF0aW8gPSBmcmFtZUluQ29udGFpbmVy
Q29vcmRpbmF0ZXMuaGVpZ2h0KCkgLyBmcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcy5oZWlnaHQo
KTsKKyAgICBGbG9hdFNpemUgc2NhbGluZ1JhdGlvID0gZnJhbWVJbkNvbnRhaW5lckNvb3JkaW5h
dGVzLnNpemUoKSAvIGZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLnNpemUoKTsKICAgICBmb3Ig
KGF1dG8gcmVjdCA6IGNsaXBwaW5nUmVjdHNJbkZyYW1lQ29vcmRpbmF0ZXMpIHsKLSAgICAgICAg
cmVjdC5zY2FsZSh3aWR0aFNjYWxpbmdSYXRpbywgaGVpZ2h0U2NhbGluZ1JhdGlvKTsKKyAgICAg
ICAgcmVjdC5zY2FsZShzY2FsaW5nUmF0aW8pOwogICAgICAgICBbY2xpcHBpbmdSZWN0VmFsdWVz
SW5GcmFtZUNvb3JkaW5hdGVzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6cmVj
dF1dOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUu
Y3BwCmluZGV4IDJkYTYxYzg5YTVkNzJlODM2OTc4ZDRhNDVmNjlhN2M1MWZiZmM0NTYuLmQ5MGJk
NjRiOTdlYzdhYjk5Y2FlMWViZjdiZGQwYjkzYWMzYWI2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGF0aWMg
UmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0
IEludFJlY3QmIHBhaW50aQogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgYml0bWFwU2l6ZSkpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5z
Y2FsZShiaXRtYXBTY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUo
LXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQtPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgRnJhbWVWaWV3
OjpTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJ
bmNsdWRlU2VsZWN0aW9uOwogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwCmluZGV4IGQ0NmM5MmQwYWJmMDZlNDFjZTQ2OWZiNzZjODk1MDdiNWIy
YzUyM2UuLjdiZDZhNDJlNzQ0NTA2ZTRhNTIyN2U4YzM5OTkwZDg1YjI1YTk4MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTQwLDcgKzE0
MCw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVy
ZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9uCiAgICAgcGFpbnRSZWN0Lm1vdmUoZnJhbWVW
aWV3LT5mcmFtZVJlY3QoKS54KCksIGZyYW1lVmlldy0+ZnJhbWVSZWN0KCkueSgpKTsKICAgICBw
YWludFJlY3QubW92ZUJ5KC1mcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwogCi0gICAgZ3Jh
cGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVjdC54KCksIC1wYWludFJlY3QueSgpKTsK
KyAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpOwog
CiAgICAgUGFpbnRCZWhhdmlvciBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJl
aGF2aW9yKCk7CiAgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yID0gb2xkUGFpbnRCZWhh
dmlvciB8IFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycyB8IFBhaW50QmVoYXZpb3JTbmFwc2hvdHRpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDI3ZWU3MjM4ZDUxMzg4
MmViMjgzNzBjOTA5OTA5MDg2NDU3NWNmYjQuLjBlYWJlNjU5OTBkOTE3ZTFkOTFkOTFlMmI5ZTRm
YjMwZDg0MmIxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0xOTY5LDcgKzE5NjksNyBAQCBzdGF0aWMgdm9pZCBwYWludFNuYXBzaG90QXRT
aXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIGJpdG1hcFNpemUsCiAgICAg
fQogCiAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBncmFwaGlj
c0NvbnRleHQudHJhbnNsYXRlKC1zbmFwc2hvdFJlY3QueCgpLCAtc25hcHNob3RSZWN0LnkoKSk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9uKCkp
OwogCiAgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0
aW9uID0gRnJhbWVWaWV3OjpJbmNsdWRlU2VsZWN0aW9uOwogICAgIGlmIChvcHRpb25zICYgU25h
cHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZykKQEAgLTIwODksNyArMjA4
OSw3IEBAIFJlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5v
ZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucyBvcHRpCiAgICAgfQogCiAgICAgZ3JhcGhpY3NDb250
ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUo
LXNuYXBzaG90UmVjdC54KCksIC1zbmFwc2hvdFJlY3QueSgpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQtPnRyYW5zbGF0ZSgtc25hcHNob3RSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgQ29sb3Igc2F2
ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXctPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>