<?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>206514</bug_id>
          
          <creation_ts>2020-01-20 14:49:33 -0800</creation_ts>
          <short_desc>[GTK] WebDriver: screenshot ignores CSS transformations or WebGL content.</short_desc>
          <delta_ts>2022-09-20 22:53:13 -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>WebDriver</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207266</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=242214</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=242215</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=245119</see_also>
          <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="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608869</commentid>
    <comment_count>0</comment_count>
      <attachid>388261</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-01-20 14:49:33 -0800</bug_when>
    <thetext>Created attachment 388261
python script to reproduce the issue with selenium

When using the WebDriver screenshot feature to take a snapshoot of the WebView, the snapshot produced ignores CSS transformations or WebGL content

For example, taking a screenshot of any of this URLs, will produce an incorrect screenshot:

1) http://wpt.live/css/css-transforms/perspective-origin-001.html 
On the screen you only see a green square (test passes), but on the screenshot you see the red square (like if the test has failed)

2) https://webkit.org/blog-files/3d-transforms/poster-circle.html
On the screen you see a cylinder moving, but on the screenshot you see flat squares (no cylinder form)

3) https://webglsamples.org/aquarium/aquarium.html
On the screen you see an aquarium and fishes moving, but on the screenshot you don&apos;t see the aquarium or any fish (just a grey area)


This issue affects both Safari Driver and WebKitGTK WebDriver.

When using Chrome driver, the screenshot captures the expected content.

I&apos;m attaching a simple script with python and selenium to reproduce the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608950</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-21 00:25:23 -0800</bug_when>
    <thetext>In the case of GTK, WebPage::scaledSnapshotWithOptions() doesn&apos;t work when accelerated compositing is enabled. To fix this, we would need to take the screenshot from the UI process, like we do for the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609012</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-01-21 06:40:52 -0800</bug_when>
    <thetext>Due to this bug (at least) the following WPT tests are failing on https://wpt.fyi

css/css-transforms/perspective-origin-001.html
css/css-transforms/perspective-origin-001.html
css/css-transforms/perspective-origin-002.html
css/css-transforms/perspective-origin-003.html
css/css-transforms/perspective-origin-004.html
css/css-transforms/perspective-origin-005.html
css/css-transforms/perspective-origin-006.html
css/css-transforms/perspective-origin-x.html
css/css-transforms/perspective-origin-xy.html
css/css-transforms/perspective-translateZ-0.html
css/css-transforms/perspective-translateZ-negative.html
css/css-transforms/perspective-translateZ-positive.html
css/css-transforms/text-perspective-001.html
css/css-transforms/transform-3d-rotateY-stair-above-001.xht
css/css-transforms/transform3d-matrix3d-005.html
css/css-transforms/transform3d-perspective-006.html
css/css-transforms/transform3d-preserve3d-011.html
css/css-transforms/transform3d-scale-004.html
css/css-transforms/transform3d-sorting-001.html
css/css-transforms/transofrmed-preserve-3d-1.html

This is because the WPT runner uses webdriver to take the screenshot of the test and its reftest in order to later compare the screenshots (png images).
The test generates a correct result, but WebDriver fails to produce a correct screenshot from it.

Example at: https://wpt.fyi/results/css/css-transforms/perspective-origin-001.html?label=experimental&amp;label=master&amp;product=chrome&amp;product=firefox&amp;product=safari&amp;product=webkitgtk&amp;aligned
(click on compare to see the images produced, and then on &quot;Run in your browser on wpt.live&quot; to see how it runs ok on the browser)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610094</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-23 07:51:44 -0800</bug_when>
    <thetext>This requires platform specific changes, so I&apos;ll use this bug for the GTK port fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610096</commentid>
    <comment_count>4</comment_count>
      <attachid>388544</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-23 08:04:27 -0800</bug_when>
    <thetext>Created attachment 388544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610097</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-01-23 08:05:11 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610105</commentid>
    <comment_count>6</comment_count>
      <attachid>388547</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-23 08:15:27 -0800</bug_when>
    <thetext>Created attachment 388547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611871</commentid>
    <comment_count>7</comment_count>
      <attachid>388547</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-01-28 04:56:51 -0800</bug_when>
    <thetext>Comment on attachment 388547
Patch

r=me
Tested it. It fixes the issue. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612359</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-29 01:52:25 -0800</bug_when>
    <thetext>Committed r255343: &lt;https://trac.webkit.org/changeset/255343&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612360</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-29 01:53:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/58985212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615057</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-02-05 08:39:22 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #8)
&gt; Committed r255343: &lt;https://trac.webkit.org/changeset/255343&gt;

New passes on wpt.fyi: https://wpt.fyi/results/css/css-transforms?diff&amp;filter=ADC&amp;run_id=412940006&amp;run_id=430010015 (at least all perspective-origin* ones and likely others)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>388261</attachid>
            <date>2020-01-20 14:49:33 -0800</date>
            <delta_ts>2020-01-20 14:49:33 -0800</delta_ts>
            <desc>python script to reproduce the issue with selenium</desc>
            <filename>webdriver_screenshoot_css_transformations_webgl_reproducer.py</filename>
            <type>text/plain</type>
            <size>993</size>
            <attacher name="Carlos Alberto Lopez Perez">clopez</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCmZyb20gc2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgpmcm9t
IHRpbWUgaW1wb3J0IHNsZWVwCmltcG9ydCBzeXMKCnRlc3RfdXJscyA9IFsiaHR0cDovL3dwdC5s
aXZlL2Nzcy9jc3MtdHJhbnNmb3Jtcy9wZXJzcGVjdGl2ZS1vcmlnaW4tMDAxLmh0bWwiLAogICAg
ICAgICAgICAgImh0dHBzOi8vd2Via2l0Lm9yZy9ibG9nLWZpbGVzLzNkLXRyYW5zZm9ybXMvcG9z
dGVyLWNpcmNsZS5odG1sIiwKICAgICAgICAgICAgICJodHRwczovL3dlYmdsc2FtcGxlcy5vcmcv
YXF1YXJpdW0vYXF1YXJpdW0uaHRtbCJdCgppZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGlu
dXgnKToKICAgIGJyb3dzZXJfZHJpdmVyID0gd2ViZHJpdmVyLldlYktpdEdUSygpCmVsc2U6CiAg
ICBicm93c2VyX2RyaXZlciA9IHdlYmRyaXZlci5TYWZhcmkoZXhlY3V0YWJsZV9wYXRoPScvQXBw
bGljYXRpb25zL1NhZmFyaSBUZWNobm9sb2d5IFByZXZpZXcuYXBwL0NvbnRlbnRzL01hY09TL3Nh
ZmFyaWRyaXZlcicpCgojIyB1bmNvbW1lbnQgdG8gdGVzdCB3aXRoIGNocm9tZToKI2Jyb3dzZXJf
ZHJpdmVyID0gd2ViZHJpdmVyLmNocm9tZSgpCmZvciB0ZXN0X3VybCBpbiB0ZXN0X3VybHM6CiAg
ICBicm93c2VyX2RyaXZlci5nZXQodGVzdF91cmwpCiAgICB0ZXN0X2ZpbGVfbmFtZV9wbmcgPSAn
dGVzdF8lcy5wbmcnICUgdGVzdF91cmwuc3BsaXQoJy8nKVstMTpdWzBdLnJlcGxhY2UoJy5odG1s
JywnJykKICAgICNzbGVlcCgyKSAjIGFkZGluZyBhIHNsZWVwIGJlZm9yZSB0YWtpbmcgdGhlIHNj
cmVlbnNob3QgZG9lc24ndCBoZWxwCiAgICBwcmludCgiQ2FwdHVyaW5nIHNjcmVlbnNob290IG9m
IFVSTCAlcyB0byBmaWxlICVzIiAlKHRlc3RfdXJsLCB0ZXN0X2ZpbGVfbmFtZV9wbmcpKQogICAg
aW1hZ2UgPSBicm93c2VyX2RyaXZlci5zYXZlX3NjcmVlbnNob3QodGVzdF9maWxlX25hbWVfcG5n
KQpicm93c2VyX2RyaXZlci5xdWl0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388544</attachid>
            <date>2020-01-23 08:04:27 -0800</date>
            <delta_ts>2020-01-23 08:15:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wd-screenshots.diff</filename>
            <type>text/plain</type>
            <size>30930</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggNTI4ZDRmYTVhMzEuLjRkNWM0NWU0MTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJEcml2ZXI6IHNjcmVlbnNob3Qg
aWdub3JlcyBDU1MgdHJhbnNmb3JtYXRpb25zIG9yIFdlYkdMIGNvbnRlbnQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjp0YWtlU2NyZWVuc2hvdCk6IEFsd2F5cyBzZXQgY2xp
cFRvVmlld3BvcnQgdG8gdHJ1ZS4KKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAg
ICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6dGFrZUVsZW1lbnRTY3JlZW5zaG90
KTogU3RvcCBwcmV0ZW5kaW5nIGEgR0VUIGNvbW1hbmQgY2FuIGhhdmUgYm9keS4KKwogMjAyMC0w
MS0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgV2ViRHJpdmVyOiBwcmVzc2VkIHZpcnR1YWwga2V5cyBub3QgY29ycmVjdGx5IGhhbmRsZWQg
aW4gYWN0aW9uIHNlcXVlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggOWVjYjJjOTRjNDguLjlm
YjQwMjcwMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTI3NTAsOCArMjc1MCw3IEBAIHZvaWQg
U2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoT3B0aW9uYWw8U3RyaW5nPiBlbGVtZW50SUQsIE9wdGlv
bmFsPGJvb2w+IHNjcm9sbEluCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZy
YW1lSGFuZGxlIl9zLCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAg
IGlmIChlbGVtZW50SUQpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoIm5vZGVI
YW5kbGUiX3MsIGVsZW1lbnRJRC52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0Qm9vbGVhbigiY2xpcFRvVmlld3BvcnQiX3MsIHRydWUpOworICAgICAg
ICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKCJjbGlwVG9WaWV3cG9ydCJfcywgdHJ1ZSk7CiAgICAg
ICAgIGlmIChzY3JvbGxJbnRvVmlldy52YWx1ZU9yKGZhbHNlKSkKICAgICAgICAgICAgIHBhcmFt
ZXRlcnMtPnNldEJvb2xlYW4oInNjcm9sbEludG9WaWV3SWZOZWVkZWQiX3MsIHRydWUpOwogICAg
ICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJ0YWtlU2NyZWVuc2hvdCJfcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYo
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lv
bkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDgzYTRkNjFlMDc5Li5jNGIzOWMwM2Q0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC0yMjM4LDE1ICsyMjM4LDEyIEBA
IHZvaWQgV2ViRHJpdmVyU2VydmljZTo6dGFrZUVsZW1lbnRTY3JlZW5zaG90KFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgcGFyYW1ldGVycywKICAgICBpZiAoIWVsZW1lbnRJRCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYm9vbCBzY3JvbGxJbnRvVmlldyA9IHRydWU7Ci0gICAgcGFyYW1ldGVycy0+
Z2V0Qm9vbGVhbigic2Nyb2xsIl9zLCBzY3JvbGxJbnRvVmlldyk7Ci0KLSAgICBtX3Nlc3Npb24t
PndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZShbdGhpcywgZWxlbWVudElELCBzY3JvbGxJbnRv
VmlldywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29t
bWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT53YWl0Rm9yTmF2
aWdhdGlvblRvQ29tcGxldGUoW3RoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIG1fc2Vzc2lvbi0+dGFrZVNjcmVlbnNob3QoZWxlbWVudElELnZhbHVlKCks
IHNjcm9sbEludG9WaWV3LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1f
c2Vzc2lvbi0+dGFrZVNjcmVlbnNob3QoZWxlbWVudElELnZhbHVlKCksIHRydWUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5OTEzY2IxMjFj
Ny4uNGFiNmU1NWVkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMDEtMjMgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IFdlYkRyaXZlcjogc2NyZWVuc2hvdCBpZ25vcmVzIENTUyB0cmFuc2Zvcm1hdGlvbnMgb3IgV2Vi
R0wgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoKSBkb2Vzbid0IHdvcmsgd2hl
biBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBlbmFibGVkLiBUbyBmaXggdGhpcywgd2UKKyAg
ICAgICAgbmVlZCB0byB0YWtlIHRoZSBzY3JlZW5zaG90IGZyb20gdGhlIFVJIHByb2Nlc3MsIGxp
a2Ugd2UgZG8gZm9yIHRoZSBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojp0YWtlVmlld1NuYXBzaG90KTogUGFzcyBjbGlwIHJlY3RhbmdsZSB0byB3ZWJraXRXZWJWaWV3
QmFzZVRha2VWaWV3U25hcHNob3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QpOiBVc2Ug
dGhlIGdpdmVuIGNsaXAgcmVjdGFuZ2xlIGlmIG5vdCBudWxsb3B0LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OnRha2VTY3JlZW5zaG90KTogSW4gY2FzZSBvZiBmdWxs
IHdlYiB2aWV3IHNuYXBzaG90IGp1c3QgY2FsbAorICAgICAgICBXZWJQYWdlUHJveHk6OnRha2VW
aWV3U25hcHNob3QoKSB3aXRoIGEgbnVsbG9wdCBjbGlwIHJlY3RhbmdsZS4gSW4gY2FzZSBvZiBl
bGVtZW50IHNuYXBzaG90LCBzZW5kCisgICAgICAgIFNuYXBzaG90UmVjdEZvclNjcmVlbnNob3Qg
bWVzc2FnZSB0byB0aGUgd2ViIHByb2Nlc3MgdG8gZ2V0IHRoZSBjbGlwIHJlY3RhbmdsZSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIFdlYlBhZ2VQcm94eTo6dGFrZVZpZXdTbmFwc2hvdCgpLgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNv
ZGVkUE5HRGF0YSk6IEVtcHR5IGltcGxlbWVudGF0aW9uIGZvciBvdGhlciBwb3J0cy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOiBNYWtlIHBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoKSBzdGF0aWMuCisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmJhc2U2NEVuY29kZWRQTkdEYXRhKTogTW92ZWQgY29tbW9uIGNvZGUgdG8g
dGhpcyBuZXcgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKTogTmV3IGZ1bmN0aW9uIHRvIGdldCB0
aGUgZW5jb2RlZCBQTkcgZnJvbSBhIFZpZXdTbmFwc2hvdC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOiBBZGQgb3B0aW9uYWwgY2xpcCByZWN0YW5nbGUgcGFyYW1ldGVyIHRvIHRh
a2VWaWV3U25hcHNob3QoKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3Qp
OiBQYXNzIG51bGxvcHQgdG8gdGFrZVZpZXdTbmFwc2hvdCgpLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFw
c2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdEVsZW1lbnRSZWN0Rm9yU2Ny
ZWVuc2hvdCk6IFJlbmFtZWQgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBuZXcgSVBDIG1lc3NhZ2Ug
aGFuZGxlci4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFr
ZVNjcmVlbnNob3QpOiBDYWxsIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoKSB0byBnZXQgdGhl
IHNuYXBzaG90CisgICAgICAgIHJlY3RhbmdsZSBhbmQgY29udmVydCBpdCB0byBkb2N1bWVudCBj
b29yZHMuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNuYXBz
aG90UmVjdEZvclNjcmVlbnNob3QpOiBHZXQgdGhlIHNuYXBzaG90IHJlY3RhbmdsZSBpbiBjbGll
bnQgY29vcmRzLgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgU25hcHNob3RSZWN0Rm9yU2NyZWVuc2hv
dCBtZXNzYWdlLgorCiAyMDIwLTAxLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZWR1Y2UgdGhlIG1heGltdW0gdGltZSB3ZSB3
YWl0IGZvciBkcmF3IGV2ZW50cyBpbiBEcmF3aW5nTW9uaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBiMTI1MmRhZjc0
Mi4uYzUyZjc1MWE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0yODgsOSArMjg4LDkgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICAgICAgd2Via2l0V2ViVmlld1NlbGVjdGlv
bkRpZENoYW5nZShXRUJLSVRfV0VCX1ZJRVcobV92aWV3V2lkZ2V0KSk7CiB9CiAKLVJlZlB0cjxW
aWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KCkKK1JlZlB0cjxW
aWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdl
YkNvcmU6OkludFJlY3Q+JiYgY2xpcFJlY3QpCiB7Ci0gICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdC
YXNlVGFrZVZpZXdTbmFwc2hvdChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsK
KyAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBzaG90KFdFQktJVF9XRUJf
VklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoY2xpcFJlY3QpKTsKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApp
bmRleCBkN2M5MDRhNTEyYS4uZTUyNmY0ZjFmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duPiBjcmVhdGVEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24oV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAjZW5kaWYK
ICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxWaWV3
U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Vmlld1Nu
YXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92
ZXJyaWRlOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgdm9pZCBzdGFydERyYWcoUmVm
PFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+JiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAppbmRleCAwZDU4YmIzNjY5ZC4uYjFkYzdmOWVhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0xNzU0LDEy
ICsxNzU0LDExIEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnBy
aXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRhdGUoeyB9KTsKIH0KIAotUmVmUHRyPFdl
YktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQorUmVmUHRyPFdlYktpdDo6Vmlld1Nu
YXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBPcHRpb25hbDxJbnRSZWN0PiYmIGNsaXBSZWN0KQogewog
ICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJv
eHkuZ2V0KCk7CiAKLSAgICBJbnRTaXplIHNpemUgPSBwYWdlLT52aWV3U2l6ZSgpOwotCisgICAg
SW50U2l6ZSBzaXplID0gY2xpcFJlY3QgPyBjbGlwUmVjdC0+c2l6ZSgpIDogcGFnZS0+dmlld1Np
emUoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7
CiAgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZSk7CiAKQEAgLTE3NjcsNiArMTc2NiwxMSBAQCBS
ZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFw
c2hvdChXZWJLaXRXZWJWaWV3QmFzZQogICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKHN1
cmZhY2UuZ2V0KCksIGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSk7CiAKICAgICBSZWZQdHI8Y2Fp
cm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZS5nZXQoKSkpOworICAgIGlm
IChjbGlwUmVjdCkgeworICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIC1jbGlwUmVj
dC0+eCgpLCAtY2xpcFJlY3QtPnkoKSk7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjci5nZXQo
KSwgY2xpcFJlY3QtPngoKSwgY2xpcFJlY3QtPnkoKSwgY2xpcFJlY3QtPndpZHRoKCksIGNsaXBS
ZWN0LT5oZWlnaHQoKSk7CisgICAgICAgIGNhaXJvX2NsaXAoY3IuZ2V0KCkpOworICAgIH0KICAg
ICB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSksIGNy
LmdldCgpKTsKIAogICAgIHJldHVybiBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZh
Y2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IDFkZmUxODE2ZTI2Li5kZmMwMmRhODQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC04NCw3ICs4NCw3IEBAIFdlYktpdDo6RHJhZ0FuZERy
b3BIYW5kbGVyJiB3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcihXZWJLaXRXZWJW
aWV3QmFzCiAKIFdlYktpdDo6R2VzdHVyZUNvbnRyb2xsZXImIHdlYmtpdFdlYlZpZXdCYXNlR2Vz
dHVyZUNvbnRyb2xsZXIoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIAotUmVmUHRyPFdlYktpdDo6Vmll
d1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2ViS2l0V2ViVmll
d0Jhc2UqKTsKK1JlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VU
YWtlVmlld1NuYXBzaG90KFdlYktpdFdlYlZpZXdCYXNlKiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50
UmVjdD4mJik7CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRFbmFibGVCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlKFdlYktpdFdlYlZpZXdCYXNlKiwgYm9vbCBlbmFibGVkKTsKIFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyKiB3ZWJraXRXZWJWaWV3QmFzZVZpZXdHZXN0dXJlQ29u
dHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBj
MTI0NDhlZGU0ZS4uMmJhODg2YjFmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yMDA4
LDEwICsyMDA4LDQ1IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnRha2VTY3JlZW5zaG90
KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wCiAgICAgU3RyaW5nIG5vZGVI
YW5kbGUgPSBvcHRpb25hbE5vZGVIYW5kbGUgPyAqb3B0aW9uYWxOb2RlSGFuZGxlIDogZW1wdHlT
dHJpbmcoKTsKICAgICBib29sIGNsaXBUb1ZpZXdwb3J0ID0gb3B0aW9uYWxDbGlwVG9WaWV3cG9y
dCA/ICpvcHRpb25hbENsaXBUb1ZpZXdwb3J0IDogZmFsc2U7CiAKKyNpZiBQTEFURk9STShHVEsp
CisgICAgRnVuY3Rpb248dm9pZChXZWJQYWdlUHJveHkmLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRS
ZWN0PiYmLCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik+IHRha2VWaWV3U25hcHNvdCA9
IFtdKFdlYlBhZ2VQcm94eSYgcGFnZSwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJiByZWN0
LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJiBjYWxsYmFjaykgeworICAgICAgICBwYWdl
LmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoW3BhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBy
ZWN0ID0gV1RGTW92ZShyZWN0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0g
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihJbnRlcm5hbEVycm9yKTsKKworICAgICAgICAgICAgYXV0byBz
bmFwc2hvdCA9IHBhZ2UtPnRha2VWaWV3U25hcHNob3QoV1RGTW92ZShyZWN0KSk7CisgICAgICAg
ICAgICBpZiAoIXNuYXBzaG90KQorICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3IpOworCisgICAgICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGJhc2U2NEVuY29kZWREYXRhID0gcGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YSgq
c25hcHNob3QpOworICAgICAgICAgICAgaWYgKCFiYXNlNjRFbmNvZGVkRGF0YSkKKyAgICAgICAg
ICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihJbnRlcm5hbEVycm9yKTsK
KworICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKGJhc2U2NEVuY29kZWREYXRhLnZh
bHVlKCkpOworICAgICAgICB9KTsKKyAgICB9OworCisgICAgaWYgKG5vZGVIYW5kbGUuaXNFbXB0
eSgpKSB7CisgICAgICAgIHRha2VWaWV3U25hcHNvdCgqcGFnZSwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QmJik+IGNvbXBs
ZXRpb25IYW5kbGVyID0gW3BhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgY2FsbGJhY2sgPSBjYWxsYmFj
ay5jb3B5UmVmKCksIHRha2VWaWV3U25hcHNvdCA9IFdURk1vdmUodGFrZVZpZXdTbmFwc290KV0o
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QmJiByZWN0KSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGVycm9yVHlwZSkgeworICAgICAgICAgICAgY2FsbGJhY2stPnNl
bmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKCplcnJvclR5cGUp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRha2VWaWV3U25h
cHNvdChwYWdlLmdldCgpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
fTsKKworICAgIHBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6U25hcHNob3RSZWN0Rm9yU2NyZWVuc2hvdChwYWdlLT53ZWJQYWdlSUQo
KSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmll
d3BvcnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjZWxzZQogICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX25leHRTY3JlZW5zaG90Q2FsbGJhY2tJRCsrOwogICAgIG1fc2NyZWVu
c2hvdENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAg
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6VGFrZVNjcmVl
bnNob3QocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsIG5vZGVIYW5kbGUsIHNjcm9sbEludG9W
aWV3SWZOZWVkZWQsIGNsaXBUb1ZpZXdwb3J0LCBjYWxsYmFja0lEKSwgMCk7CisjZW5kaWYKIH0K
IAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkVGFrZVNjcmVlbnNob3QodWludDY0X3Qg
Y2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCkBAIC0yMDM3LDYgKzIwNzIsMTEgQEAgT3B0aW9u
YWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVk
UE5HRGF0YShjb25zdCBTaGEKIHsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQorCitPcHRp
b25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29k
ZWRQTkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYpCit7CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKK30KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0FJUk8pCiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggOTI3NWQ1ZTFiNWMuLjIzYjk5
MmYzY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIE9wZW5Q
YW5lbFBhcmFtZXRlcnM7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBWaWV3U25hcHNo
b3Q7CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDsKIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OwpAQCAtMjYwLDcgKzI2
MSw4IEBAIHByaXZhdGU6CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRF
UkFDVElPTlMpCiAKICAgICAvLyBHZXQgYmFzZTY0LWVuY29kZWQgUE5HIGRhdGEgZnJvbSBhIGJp
dG1hcC4KLSAgICBPcHRpb25hbDxTdHJpbmc+IHBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
U3RyaW5nPiBwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gcGxhdGZvcm1HZXRC
YXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3U25hcHNob3QmKTsKIAogICAgIC8vIFNhdmUg
YmFzZTY0LWVuY29kZWQgZmlsZSBjb250ZW50cyB0byBhIGxvY2FsIGZpbGUgcGF0aCBhbmQgcmV0
dXJuIHRoZSBwYXRoLgogICAgIC8vIFRoaXMgcmV1c2VzIHRoZSBiYXNlbmFtZSBvZiB0aGUgcmVt
b3RlIGZpbGUgcGF0aCBzbyB0aGF0IHRoZSBmaWxlbmFtZSBleHBvc2VkIHRvIERPTSBBUEkgcmVt
YWlucyB0aGUgc2FtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3Bw
CmluZGV4IGFiZDc3OWZlNzU2Li5lMTZiYjM1MDEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9t
YXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKIAorI2luY2x1ZGUgIlZpZXdT
bmFwc2hvdFN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1
ZGUgPGNhaXJvL2NhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0zMywx
OCArMzQsMTMgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLU9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFz
ZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkK
K3N0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVuY29kZWRQTkdEYXRhKGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSkKIHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgaWYg
KCFiaXRtYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIHN1cmZh
Y2UgPSBiaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOwogICAgIGlmICghc3VyZmFjZSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBw
bmdEYXRhOwotICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShzdXJmYWNlLmdl
dCgpLCBbXSh2b2lkKiB1c2VyRGF0YSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKSAtPiBjYWlyb19zdGF0dXNfdCB7CisgICAgY2Fpcm9fc3VyZmFjZV93cml0ZV90
b19wbmdfc3RyZWFtKHN1cmZhY2UsIFtdKHZvaWQqIHVzZXJEYXRhLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIC0+IGNhaXJvX3N0YXR1c190IHsKICAgICAgICAg
YXV0byogcG5nRGF0YSA9IHN0YXRpY19jYXN0PFZlY3Rvcjx1bnNpZ25lZCBjaGFyPio+KHVzZXJE
YXRhKTsKICAgICAgICAgcG5nRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIHJl
dHVybiBDQUlST19TVEFUVVNfU1VDQ0VTUzsKQEAgLTU2LDUgKzUyLDIwIEBAIE9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhCiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZShwbmdEYXRhKTsKIH0KIAorT3B0
aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNv
ZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKQoreworICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gc3VyZmFjZSA9IGJpdG1hcC0+Y3JlYXRlQ2Fp
cm9TdXJmYWNlKCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQTkdEYXRhKHN1cmZhY2UuZ2V0
KCkpOworfQorCitPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYgc25hcHNob3QpCit7
CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQTkdEYXRhKHNuYXBzaG90LnN1cmZhY2UoKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggOWNiNzgwZjQwN2YuLmM1ZWU0ZjZjZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgUmVmUHRyPFZpZXdT
bmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxWaWV3
U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikg
PSAwOwogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCmluZGV4IGNjNzhmYTMwNzgyLi4yMzMxOTJhOGYxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApAQCAt
ODksNyArODksNyBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViQmFja0ZvcndhcgogCiAgICAgd2ViUGFnZVByb3h5
LndpbGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbSk7CiAKLSAgICBhdXRvIHNuYXBzaG90
ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKKyAgICBhdXRvIHNuYXBzaG90ID0g
d2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoV1RGOjpudWxsb3B0KTsKICAgICBpZiAoIXNu
YXBzaG90KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDZmMWEzZWEwYjQ1Li4wOTZhNTk0MjZiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MjYwLDkgKzgyNjAsOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVFbGVt
ZW50SXNGb2N1c2VkKQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBQTEFURk9STShHVEspCi1SZWZQdHI8Vmlld1NuYXBzaG90PiBXZWJQYWdlUHJveHk6
OnRha2VWaWV3U25hcHNob3QoKQorUmVmUHRyPFZpZXdTbmFwc2hvdD4gV2ViUGFnZVByb3h5Ojp0
YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYgY2xpcFJlY3QpCiB7
Ci0gICAgcmV0dXJuIHBhZ2VDbGllbnQoKS50YWtlVmlld1NuYXBzaG90KCk7CisgICAgcmV0dXJu
IHBhZ2VDbGllbnQoKS50YWtlVmlld1NuYXBzaG90KFdURk1vdmUoY2xpcFJlY3QpKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQ3N2NkM2Zm
NTY3Li4zMmVlOTUwOTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTEzNTEsNyArMTM1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uKEZ1bmN0aW9uPHZvaWQoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBQTEFURk9STShHVEspCi0gICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hv
dCgpOworICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0aW9uYWw8
V2ViQ29yZTo6SW50UmVjdD4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRl
eCBhMDdjNWQzZjZlYi4uZjY4NzAzZjZhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToK
ICAgICBDQUxheWVyKiBhY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsgfQogCi0gICAgUmVm
UHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVj
dD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNvbW1p
dFBvdGVudGlhbFRhcEZhaWxlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGRiZmIzNDkwMGFkLi5hMGVmZGUz
MWFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQpAQCAtNTEzLDcgKzUxMyw3IEBAIENBTGF5ZXIgKlBhZ2VDbGllbnRJbXBsOjphY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUmVmUHRyPFZpZXdTbmFwc2hvdD4gUGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNo
b3QoKQorUmVmUHRyPFZpZXdTbmFwc2hvdD4gUGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNo
b3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikKIHsKICAgICByZXR1cm4gW21fd2ViVmll
dyBfdGFrZVZpZXdTbmFwc2hvdF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IDgwMTZiNTZjMTYwLi4xMTA2ZDQyOGU0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAg
LTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8
Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFZp
ZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNv
bnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTUFDX0dFU1RV
UkVfRVZFTlRTKQogICAgIHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShj
b25zdCBOYXRpdmVXZWJHZXN0dXJlRXZlbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBiZjdkYzEzMmIxZS4u
ZDZkNTljZTkxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KQEAgLTU2NSw3ICs1NjUsNyBAQCBDQUxheWVyICpQYWdlQ2xpZW50SW1w
bDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aW1wbC0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOwogfQogCi1SZWZQdHI8Vmll
d1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCgpCitSZWZQdHI8Vmll
d1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJD
b3JlOjpJbnRSZWN0PiYmKQogewogICAgIHJldHVybiBtX2ltcGwtPnRha2VWaWV3U25hcHNob3Qo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggMThkMDIyMzhlNTEu
LjBkYjM4NWM0MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtODA2
LDcgKzgwNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2V0RmlsZXNGb3JJ
bnB1dEZpbGVVcGxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGOjpudWxsb3B0KTsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RS
ZWN0Rm9yU2NyZWVuc2hvdChXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50
LCBib29sIGNsaXBUb1ZpZXdwb3J0KQorc3RhdGljIFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RF
bGVtZW50UmVjdEZvclNjcmVlbnNob3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVudCog
ZWxlbWVudCwgYm9vbCBjbGlwVG9WaWV3cG9ydCkKIHsKICAgICBhdXRvKiBmcmFtZVZpZXcgPSBw
YWdlLm1haW5GcmFtZVZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKQEAgLTgzMiwxOSArODMy
LDQzIEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3Qo
V2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVuCiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFu
ZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxl
OworICAgIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QocGFnZUlELCBmcmFtZUlELCBub2RlSGFu
ZGxlLCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjbGlwVG9WaWV3cG9ydCwgW3RoaXMsIHBhZ2VJ
RCwgZnJhbWVJRCwgY2FsbGJhY2tJRF0gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JTdHJpbmcsIFdl
YkNvcmU6OkludFJlY3QmJiByZWN0KSB7CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGhhbmRsZTsKKyAgICAgICAgaWYgKGVycm9yU3RyaW5nKSB7CisgICAgICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFu
ZGxlLCAqZXJyb3JTdHJpbmcpLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KHBhZ2VJRCk7CisgICAgICAgIEFTU0VSVChwYWdlKTsKKyAgICAgICAgV2ViRnJhbWUqIGZyYW1l
ID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6
IHBhZ2UtPm1haW5XZWJGcmFtZSgpOworICAgICAgICBBU1NFUlQoZnJhbWUgJiYgZnJhbWUtPmNv
cmVGcmFtZSgpKTsKKyAgICAgICAgYXV0byBzbmFwc2hvdFJlY3QgPSBXZWJDb3JlOjpJbnRSZWN0
KGZyYW1lLT5jb3JlRnJhbWUoKS0+bWFpbkZyYW1lKCkudmlldygpLT5jbGllbnRUb0RvY3VtZW50
UmVjdChyZWN0KSk7CisgICAgICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBwYWdlLT5zY2Fs
ZWRTbmFwc2hvdFdpdGhPcHRpb25zKHNuYXBzaG90UmVjdCwgMSwgU25hcHNob3RPcHRpb25zU2hh
cmVhYmxlKTsKKyAgICAgICAgaWYgKCFpbWFnZSkgeworICAgICAgICAgICAgU3RyaW5nIHNjcmVl
bnNob3RFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlOjpTY3JlZW5zaG90RXJyb3IpOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0
b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgc2Ny
ZWVuc2hvdEVycm9yVHlwZSksIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
KyAgICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxlLCB7IH0pLCAwKTsK
KyAgICB9KTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJl
Y3RGb3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgU3RyaW5n
IHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxl
LCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIFdlYkZyYW1lKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJGcmFtZSgqZnJhbWVJRCkgOiBwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkpIHsKICAgICAgICAgU3RyaW5nIGZyYW1lTm90Rm91
bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0
RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JN
ZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNl
c3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgZnJhbWVOb3RGb3Vu
ZEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5k
RXJyb3JUeXBlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NTIsMzYgKzg3
NiwyOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgTwogICAgIGlmICghbm9kZUhhbmRsZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkTm9kZUhhbmRsZShub2RlSGFuZGxlKSkgewog
ICAgICAgICAgICAgU3RyaW5nIGludmFsaWROb2RlSWRlbnRpZmllcnJyb3JUeXBlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZE5vZGVJ
ZGVudGlmaWVyKTsKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpE
aWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIGludmFsaWROb2RlSWRlbnRpZmll
cnJyb3JUeXBlKSwgMCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkTm9k
ZUlkZW50aWZpZXJycm9yVHlwZSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoKmZyYW1lLCBu
b2RlSGFuZGxlKTsKICAgICAgICAgaWYgKCFjb3JlRWxlbWVudCkgewogICAgICAgICAgICAgU3Ry
aW5nIG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7Ci0gICAgICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFu
ZGxlLCBub2RlTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG5vZGVOb3RGb3VuZEVycm9yVHlwZSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChjb3JlRWxlbWVudCAmJiBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkKQotICAgICAgICBjb3JlRWxlbWVudC0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChm
YWxzZSk7CisgICAgICAgIGNvcmVFbGVtZW50LT5zY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShm
YWxzZSk7CiAKICAgICBTdHJpbmcgc2NyZWVuc2hvdEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OlNjcmVlbnNob3RFcnJvcik7Ci0g
ICAgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QgPSBzbmFwc2hvdFJlY3RGb3JTY3JlZW5z
aG90KCpwYWdlLCBjb3JlRWxlbWVudCwgY2xpcFRvVmlld3BvcnQpOworICAgIFdlYkNvcmU6Oklu
dFJlY3Qgc25hcHNob3RSZWN0ID0gc25hcHNob3RFbGVtZW50UmVjdEZvclNjcmVlbnNob3QoKnBh
Z2UsIGNvcmVFbGVtZW50LCBjbGlwVG9WaWV3cG9ydCk7CiAgICAgaWYgKHNuYXBzaG90UmVjdC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRh
a2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgc2NyZWVuc2hvdEVycm9yVHlwZSksIDAp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9
IHBhZ2UtPnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoc25hcHNob3RSZWN0LCAxLCBTbmFwc2hv
dE9wdGlvbnNTaGFyZWFibGUpOwotICAgIGlmICghaW1hZ2UpIHsKLSAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRs
ZSwgc2NyZWVuc2hvdEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
Y3JlZW5zaG90RXJyb3JUeXBlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRU
YWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsgfSksIDApOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6SW50UmVjdChmcmFtZS0+Y29yZUZyYW1l
KCktPm1haW5GcmFtZSgpLnZpZXcoKS0+ZG9jdW1lbnRUb0NsaWVudFJlY3Qoc25hcHNob3RSZWN0
KSkpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JG
cmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXggN2ZkMGU3ZWRjNWEuLjE4NWQxNzU3YWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC03Niw2ICs3Niw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CiAgICAgdm9pZCBz
ZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUsIFZlY3RvcjxT
dHJpbmc+JiYgZmlsZW5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmlu
Zz4pPiYmKTsKICAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwg
Ym9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFN0
cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRv
Vmlld3BvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29y
ZTo6SW50UmVjdCYmKT4mJik7CiAgICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4pPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIGNvb2tpZU5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZDFjOThhZjBhMy4u
OWJiMGM0ZDllNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbgpAQCAtMzgsNiArMzgsOCBAQCBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgVGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJv
b2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKKyAgICBTbmFwc2hvdFJl
Y3RGb3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0KSAtPiAoT3B0aW9u
YWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCkgQXN5bmMKKwogICAg
IEdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYwogICAg
IERlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388547</attachid>
            <date>2020-01-23 08:15:27 -0800</date>
            <delta_ts>2020-01-28 04:56:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wd-screenshots.diff</filename>
            <type>text/plain</type>
            <size>30984</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggNTI4ZDRmYTVhMzEuLjRkNWM0NWU0MTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJEcml2ZXI6IHNjcmVlbnNob3Qg
aWdub3JlcyBDU1MgdHJhbnNmb3JtYXRpb25zIG9yIFdlYkdMIGNvbnRlbnQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjp0YWtlU2NyZWVuc2hvdCk6IEFsd2F5cyBzZXQgY2xp
cFRvVmlld3BvcnQgdG8gdHJ1ZS4KKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAg
ICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6dGFrZUVsZW1lbnRTY3JlZW5zaG90
KTogU3RvcCBwcmV0ZW5kaW5nIGEgR0VUIGNvbW1hbmQgY2FuIGhhdmUgYm9keS4KKwogMjAyMC0w
MS0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgV2ViRHJpdmVyOiBwcmVzc2VkIHZpcnR1YWwga2V5cyBub3QgY29ycmVjdGx5IGhhbmRsZWQg
aW4gYWN0aW9uIHNlcXVlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggOWVjYjJjOTRjNDguLjlm
YjQwMjcwMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTI3NTAsOCArMjc1MCw3IEBAIHZvaWQg
U2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoT3B0aW9uYWw8U3RyaW5nPiBlbGVtZW50SUQsIE9wdGlv
bmFsPGJvb2w+IHNjcm9sbEluCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImZy
YW1lSGFuZGxlIl9zLCBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAg
IGlmIChlbGVtZW50SUQpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoIm5vZGVI
YW5kbGUiX3MsIGVsZW1lbnRJRC52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0Qm9vbGVhbigiY2xpcFRvVmlld3BvcnQiX3MsIHRydWUpOworICAgICAg
ICBwYXJhbWV0ZXJzLT5zZXRCb29sZWFuKCJjbGlwVG9WaWV3cG9ydCJfcywgdHJ1ZSk7CiAgICAg
ICAgIGlmIChzY3JvbGxJbnRvVmlldy52YWx1ZU9yKGZhbHNlKSkKICAgICAgICAgICAgIHBhcmFt
ZXRlcnMtPnNldEJvb2xlYW4oInNjcm9sbEludG9WaWV3SWZOZWVkZWQiX3MsIHRydWUpOwogICAg
ICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJ0YWtlU2NyZWVuc2hvdCJfcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYo
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lv
bkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDgzYTRkNjFlMDc5Li5jNGIzOWMwM2Q0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC0yMjM4LDE1ICsyMjM4LDEyIEBA
IHZvaWQgV2ViRHJpdmVyU2VydmljZTo6dGFrZUVsZW1lbnRTY3JlZW5zaG90KFJlZlB0cjxKU09O
OjpPYmplY3Q+JiYgcGFyYW1ldGVycywKICAgICBpZiAoIWVsZW1lbnRJRCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYm9vbCBzY3JvbGxJbnRvVmlldyA9IHRydWU7Ci0gICAgcGFyYW1ldGVycy0+
Z2V0Qm9vbGVhbigic2Nyb2xsIl9zLCBzY3JvbGxJbnRvVmlldyk7Ci0KLSAgICBtX3Nlc3Npb24t
PndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZShbdGhpcywgZWxlbWVudElELCBzY3JvbGxJbnRv
VmlldywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29t
bWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT53YWl0Rm9yTmF2
aWdhdGlvblRvQ29tcGxldGUoW3RoaXMsIGVsZW1lbnRJRCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKSB7CiAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIG1fc2Vzc2lvbi0+dGFrZVNjcmVlbnNob3QoZWxlbWVudElELnZhbHVlKCks
IHNjcm9sbEludG9WaWV3LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1f
c2Vzc2lvbi0+dGFrZVNjcmVlbnNob3QoZWxlbWVudElELnZhbHVlKCksIHRydWUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5OTEzY2IxMjFj
Ny4uNGFiNmU1NWVkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjAtMDEtMjMgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
IFdlYkRyaXZlcjogc2NyZWVuc2hvdCBpZ25vcmVzIENTUyB0cmFuc2Zvcm1hdGlvbnMgb3IgV2Vi
R0wgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjUxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoKSBkb2Vzbid0IHdvcmsgd2hl
biBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBlbmFibGVkLiBUbyBmaXggdGhpcywgd2UKKyAg
ICAgICAgbmVlZCB0byB0YWtlIHRoZSBzY3JlZW5zaG90IGZyb20gdGhlIFVJIHByb2Nlc3MsIGxp
a2Ugd2UgZG8gZm9yIHRoZSBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojp0YWtlVmlld1NuYXBzaG90KTogUGFzcyBjbGlwIHJlY3RhbmdsZSB0byB3ZWJraXRXZWJWaWV3
QmFzZVRha2VWaWV3U25hcHNob3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QpOiBVc2Ug
dGhlIGdpdmVuIGNsaXAgcmVjdGFuZ2xlIGlmIG5vdCBudWxsb3B0LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OnRha2VTY3JlZW5zaG90KTogSW4gY2FzZSBvZiBmdWxs
IHdlYiB2aWV3IHNuYXBzaG90IGp1c3QgY2FsbAorICAgICAgICBXZWJQYWdlUHJveHk6OnRha2VW
aWV3U25hcHNob3QoKSB3aXRoIGEgbnVsbG9wdCBjbGlwIHJlY3RhbmdsZS4gSW4gY2FzZSBvZiBl
bGVtZW50IHNuYXBzaG90LCBzZW5kCisgICAgICAgIFNuYXBzaG90UmVjdEZvclNjcmVlbnNob3Qg
bWVzc2FnZSB0byB0aGUgd2ViIHByb2Nlc3MgdG8gZ2V0IHRoZSBjbGlwIHJlY3RhbmdsZSBhbmQg
dGhlbiBjYWxsCisgICAgICAgIFdlYlBhZ2VQcm94eTo6dGFrZVZpZXdTbmFwc2hvdCgpLgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNv
ZGVkUE5HRGF0YSk6IEVtcHR5IGltcGxlbWVudGF0aW9uIGZvciBvdGhlciBwb3J0cy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOiBNYWtlIHBs
YXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoKSBzdGF0aWMuCisgICAgICAgICogVUlQcm9j
ZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmJhc2U2NEVuY29kZWRQTkdEYXRhKTogTW92ZWQgY29tbW9uIGNvZGUgdG8g
dGhpcyBuZXcgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKTogTmV3IGZ1bmN0aW9uIHRvIGdldCB0
aGUgZW5jb2RlZCBQTkcgZnJvbSBhIFZpZXdTbmFwc2hvdC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOiBBZGQgb3B0aW9uYWwgY2xpcCByZWN0YW5nbGUgcGFyYW1ldGVyIHRvIHRh
a2VWaWV3U25hcHNob3QoKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3Qp
OiBQYXNzIG51bGxvcHQgdG8gdGFrZVZpZXdTbmFwc2hvdCgpLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFw
c2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdEVsZW1lbnRSZWN0Rm9yU2Ny
ZWVuc2hvdCk6IFJlbmFtZWQgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBuZXcgSVBDIG1lc3NhZ2Ug
aGFuZGxlci4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFr
ZVNjcmVlbnNob3QpOiBDYWxsIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoKSB0byBnZXQgdGhl
IHNuYXBzaG90CisgICAgICAgIHJlY3RhbmdsZSBhbmQgY29udmVydCBpdCB0byBkb2N1bWVudCBj
b29yZHMuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNuYXBz
aG90UmVjdEZvclNjcmVlbnNob3QpOiBHZXQgdGhlIHNuYXBzaG90IHJlY3RhbmdsZSBpbiBjbGll
bnQgY29vcmRzLgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgU25hcHNob3RSZWN0Rm9yU2NyZWVuc2hv
dCBtZXNzYWdlLgorCiAyMDIwLTAxLTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZWR1Y2UgdGhlIG1heGltdW0gdGltZSB3ZSB3
YWl0IGZvciBkcmF3IGV2ZW50cyBpbiBEcmF3aW5nTW9uaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBiMTI1MmRhZjc0
Mi4uYzUyZjc1MWE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0yODgsOSArMjg4LDkgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKICAgICAgICAgd2Via2l0V2ViVmlld1NlbGVjdGlv
bkRpZENoYW5nZShXRUJLSVRfV0VCX1ZJRVcobV92aWV3V2lkZ2V0KSk7CiB9CiAKLVJlZlB0cjxW
aWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KCkKK1JlZlB0cjxW
aWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdl
YkNvcmU6OkludFJlY3Q+JiYgY2xpcFJlY3QpCiB7Ci0gICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdC
YXNlVGFrZVZpZXdTbmFwc2hvdChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsK
KyAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VUYWtlVmlld1NuYXBzaG90KFdFQktJVF9XRUJf
VklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoY2xpcFJlY3QpKTsKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApp
bmRleCBkN2M5MDRhNTEyYS4uZTUyNmY0ZjFmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8V2ViRGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duPiBjcmVhdGVEYXRh
TGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24oV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAjZW5kaWYK
ICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxWaWV3
U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Vmlld1Nu
YXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92
ZXJyaWRlOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgdm9pZCBzdGFydERyYWcoUmVm
PFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+JiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAppbmRleCAwZDU4YmIzNjY5ZC4uYjFkYzdmOWVhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0xNzU0LDEy
ICsxNzU0LDExIEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICAgICAgd2Via2l0V2ViVmlld0Jhc2UtPnBy
aXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT51cGRhdGUoeyB9KTsKIH0KIAotUmVmUHRyPFdl
YktpdDo6Vmlld1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQorUmVmUHRyPFdlYktpdDo6Vmlld1Nu
YXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBPcHRpb25hbDxJbnRSZWN0PiYmIGNsaXBSZWN0KQogewog
ICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJv
eHkuZ2V0KCk7CiAKLSAgICBJbnRTaXplIHNpemUgPSBwYWdlLT52aWV3U2l6ZSgpOwotCisgICAg
SW50U2l6ZSBzaXplID0gY2xpcFJlY3QgPyBjbGlwUmVjdC0+c2l6ZSgpIDogcGFnZS0+dmlld1Np
emUoKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7
CiAgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZSk7CiAKQEAgLTE3NjcsNiArMTc2NiwxMSBAQCBS
ZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+IHdlYmtpdFdlYlZpZXdCYXNlVGFrZVZpZXdTbmFw
c2hvdChXZWJLaXRXZWJWaWV3QmFzZQogICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKHN1
cmZhY2UuZ2V0KCksIGRldmljZVNjYWxlLCBkZXZpY2VTY2FsZSk7CiAKICAgICBSZWZQdHI8Y2Fp
cm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoc3VyZmFjZS5nZXQoKSkpOworICAgIGlm
IChjbGlwUmVjdCkgeworICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIC1jbGlwUmVj
dC0+eCgpLCAtY2xpcFJlY3QtPnkoKSk7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjci5nZXQo
KSwgY2xpcFJlY3QtPngoKSwgY2xpcFJlY3QtPnkoKSwgY2xpcFJlY3QtPndpZHRoKCksIGNsaXBS
ZWN0LT5oZWlnaHQoKSk7CisgICAgICAgIGNhaXJvX2NsaXAoY3IuZ2V0KCkpOworICAgIH0KICAg
ICB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSksIGNy
LmdldCgpKTsKIAogICAgIHJldHVybiBWaWV3U25hcHNob3Q6OmNyZWF0ZShXVEZNb3ZlKHN1cmZh
Y2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IDFkZmUxODE2ZTI2Li5kZmMwMmRhODQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC04NCw3ICs4NCw3IEBAIFdlYktpdDo6RHJhZ0FuZERy
b3BIYW5kbGVyJiB3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcihXZWJLaXRXZWJW
aWV3QmFzCiAKIFdlYktpdDo6R2VzdHVyZUNvbnRyb2xsZXImIHdlYmtpdFdlYlZpZXdCYXNlR2Vz
dHVyZUNvbnRyb2xsZXIoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIAotUmVmUHRyPFdlYktpdDo6Vmll
d1NuYXBzaG90PiB3ZWJraXRXZWJWaWV3QmFzZVRha2VWaWV3U25hcHNob3QoV2ViS2l0V2ViVmll
d0Jhc2UqKTsKK1JlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4gd2Via2l0V2ViVmlld0Jhc2VU
YWtlVmlld1NuYXBzaG90KFdlYktpdFdlYlZpZXdCYXNlKiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50
UmVjdD4mJik7CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRFbmFibGVCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlKFdlYktpdFdlYlZpZXdCYXNlKiwgYm9vbCBlbmFibGVkKTsKIFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyKiB3ZWJraXRXZWJWaWV3QmFzZVZpZXdHZXN0dXJlQ29u
dHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBj
MTI0NDhlZGU0ZS4uMmJhODg2YjFmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yMDA4
LDEwICsyMDA4LDQ1IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnRha2VTY3JlZW5zaG90
KGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wCiAgICAgU3RyaW5nIG5vZGVI
YW5kbGUgPSBvcHRpb25hbE5vZGVIYW5kbGUgPyAqb3B0aW9uYWxOb2RlSGFuZGxlIDogZW1wdHlT
dHJpbmcoKTsKICAgICBib29sIGNsaXBUb1ZpZXdwb3J0ID0gb3B0aW9uYWxDbGlwVG9WaWV3cG9y
dCA/ICpvcHRpb25hbENsaXBUb1ZpZXdwb3J0IDogZmFsc2U7CiAKKyNpZiBQTEFURk9STShHVEsp
CisgICAgRnVuY3Rpb248dm9pZChXZWJQYWdlUHJveHkmLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRS
ZWN0PiYmLCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJik+IHRha2VWaWV3U25hcHNvdCA9
IFtdKFdlYlBhZ2VQcm94eSYgcGFnZSwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJiByZWN0
LCBSZWY8VGFrZVNjcmVlbnNob3RDYWxsYmFjaz4mJiBjYWxsYmFjaykgeworICAgICAgICBwYWdl
LmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoW3BhZ2UgPSBtYWtlUmVmKHBhZ2UpLCBy
ZWN0ID0gV1RGTW92ZShyZWN0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZXJyb3IgIT0g
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICAgICAgICAgICAgICBBU1lOQ19GQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihJbnRlcm5hbEVycm9yKTsKKworICAgICAgICAgICAgYXV0byBz
bmFwc2hvdCA9IHBhZ2UtPnRha2VWaWV3U25hcHNob3QoV1RGTW92ZShyZWN0KSk7CisgICAgICAg
ICAgICBpZiAoIXNuYXBzaG90KQorICAgICAgICAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SKEludGVybmFsRXJyb3IpOworCisgICAgICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGJhc2U2NEVuY29kZWREYXRhID0gcGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YSgq
c25hcHNob3QpOworICAgICAgICAgICAgaWYgKCFiYXNlNjRFbmNvZGVkRGF0YSkKKyAgICAgICAg
ICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihJbnRlcm5hbEVycm9yKTsK
KworICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKGJhc2U2NEVuY29kZWREYXRhLnZh
bHVlKCkpOworICAgICAgICB9KTsKKyAgICB9OworCisgICAgaWYgKG5vZGVIYW5kbGUuaXNFbXB0
eSgpKSB7CisgICAgICAgIHRha2VWaWV3U25hcHNvdCgqcGFnZSwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QmJik+IGNvbXBs
ZXRpb25IYW5kbGVyID0gW3BhZ2UgPSBtYWtlUmVmKCpwYWdlKSwgY2FsbGJhY2sgPSBjYWxsYmFj
ay5jb3B5UmVmKCksIHRha2VWaWV3U25hcHNvdCA9IFdURk1vdmUodGFrZVZpZXdTbmFwc290KV0o
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QmJiByZWN0KSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGVycm9yVHlwZSkgeworICAgICAgICAgICAgY2FsbGJhY2stPnNl
bmRGYWlsdXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKCplcnJvclR5cGUp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRha2VWaWV3U25h
cHNvdChwYWdlLmdldCgpLCBXVEZNb3ZlKHJlY3QpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
fTsKKworICAgIHBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6U25hcHNob3RSZWN0Rm9yU2NyZWVuc2hvdChwYWdlLT53ZWJQYWdlSUQo
KSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgY2xpcFRvVmll
d3BvcnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjZWxzZQogICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX25leHRTY3JlZW5zaG90Q2FsbGJhY2tJRCsrOwogICAgIG1fc2NyZWVu
c2hvdENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAgICAg
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6VGFrZVNjcmVl
bnNob3QocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsIG5vZGVIYW5kbGUsIHNjcm9sbEludG9W
aWV3SWZOZWVkZWQsIGNsaXBUb1ZpZXdwb3J0LCBjYWxsYmFja0lEKSwgMCk7CisjZW5kaWYKIH0K
IAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkVGFrZVNjcmVlbnNob3QodWludDY0X3Qg
Y2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YUhhbmRs
ZSwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpCkBAIC0yMDM3LDYgKzIwNzIsMTEgQEAgT3B0aW9u
YWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVk
UE5HRGF0YShjb25zdCBTaGEKIHsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQorCitPcHRp
b25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29k
ZWRQTkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYpCit7CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKK30KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0FJUk8pCiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggOTI3NWQ1ZTFiNWMuLjIzYjk5
MmYzY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIE9wZW5Q
YW5lbFBhcmFtZXRlcnM7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBWaWV3U25hcHNo
b3Q7CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDsKIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OwpAQCAtMjYwLDcgKzI2
MSw4IEBAIHByaXZhdGU6CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRF
UkFDVElPTlMpCiAKICAgICAvLyBHZXQgYmFzZTY0LWVuY29kZWQgUE5HIGRhdGEgZnJvbSBhIGJp
dG1hcC4KLSAgICBPcHRpb25hbDxTdHJpbmc+IHBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8
U3RyaW5nPiBwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gcGxhdGZvcm1HZXRC
YXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWV3U25hcHNob3QmKTsKIAogICAgIC8vIFNhdmUg
YmFzZTY0LWVuY29kZWQgZmlsZSBjb250ZW50cyB0byBhIGxvY2FsIGZpbGUgcGF0aCBhbmQgcmV0
dXJuIHRoZSBwYXRoLgogICAgIC8vIFRoaXMgcmV1c2VzIHRoZSBiYXNlbmFtZSBvZiB0aGUgcmVt
b3RlIGZpbGUgcGF0aCBzbyB0aGF0IHRoZSBmaWxlbmFtZSBleHBvc2VkIHRvIERPTSBBUEkgcmVt
YWlucyB0aGUgc2FtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3Bw
CmluZGV4IGFiZDc3OWZlNzU2Li4wMjM5YzRhMDcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9t
YXRpb25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKIAorI2luY2x1ZGUgIlZpZXdT
bmFwc2hvdFN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgogI2luY2x1
ZGUgPGNhaXJvL2NhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0zMywx
OCArMzQsMTMgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLU9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFz
ZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkK
K3N0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVuY29kZWRQTkdEYXRhKGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSkKIHsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgaWYg
KCFiaXRtYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIHN1cmZh
Y2UgPSBiaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOwogICAgIGlmICghc3VyZmFjZSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBw
bmdEYXRhOwotICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVhbShzdXJmYWNlLmdl
dCgpLCBbXSh2b2lkKiB1c2VyRGF0YSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKSAtPiBjYWlyb19zdGF0dXNfdCB7CisgICAgY2Fpcm9fc3VyZmFjZV93cml0ZV90
b19wbmdfc3RyZWFtKHN1cmZhY2UsIFtdKHZvaWQqIHVzZXJEYXRhLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIC0+IGNhaXJvX3N0YXR1c190IHsKICAgICAgICAg
YXV0byogcG5nRGF0YSA9IHN0YXRpY19jYXN0PFZlY3Rvcjx1bnNpZ25lZCBjaGFyPio+KHVzZXJE
YXRhKTsKICAgICAgICAgcG5nRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIHJl
dHVybiBDQUlST19TVEFUVVNfU1VDQ0VTUzsKQEAgLTU2LDUgKzUyLDI0IEBAIE9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0Rh
dGEoY29uc3QgU2hhCiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZShwbmdEYXRhKTsKIH0KIAorT3B0
aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNv
ZGVkUE5HRGF0YShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKQoreworICAg
IGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gc3VyZmFjZSA9IGJpdG1hcC0+Y3JlYXRlQ2Fp
cm9TdXJmYWNlKCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQTkdEYXRhKHN1cmZhY2UuZ2V0
KCkpOworfQorCitPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYgc25hcHNob3QpCit7
CisjaWYgUExBVEZPUk0oR1RLKQorICAgIHJldHVybiBiYXNlNjRFbmNvZGVkUE5HRGF0YShzbmFw
c2hvdC5zdXJmYWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlm
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggOWNiNzgwZjQwN2YuLmM1ZWU0ZjZjZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgUmVmUHRyPFZp
ZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxW
aWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4m
JikgPSAwOwogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuY3BwCmluZGV4IGNjNzhmYTMwNzgyLi4yMzMxOTJhOGYx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFwc2hvdChX
ZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViQmFja0ZvcndhcgogCiAgICAgd2ViUGFnZVBy
b3h5LndpbGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbSk7CiAKLSAgICBhdXRvIHNuYXBz
aG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoKTsKKyAgICBhdXRvIHNuYXBzaG90
ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoV1RGOjpudWxsb3B0KTsKICAgICBpZiAo
IXNuYXBzaG90KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDZmMWEzZWEwYjQ1Li4wOTZhNTk0MjZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MjYwLDkgKzgyNjAsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRpdGFibGVF
bGVtZW50SXNGb2N1c2VkKQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspCi1SZWZQdHI8Vmlld1NuYXBzaG90PiBXZWJQYWdlUHJv
eHk6OnRha2VWaWV3U25hcHNob3QoKQorUmVmUHRyPFZpZXdTbmFwc2hvdD4gV2ViUGFnZVByb3h5
Ojp0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYgY2xpcFJlY3Qp
CiB7Ci0gICAgcmV0dXJuIHBhZ2VDbGllbnQoKS50YWtlVmlld1NuYXBzaG90KCk7CisgICAgcmV0
dXJuIHBhZ2VDbGllbnQoKS50YWtlVmlld1NuYXBzaG90KFdURk1vdmUoY2xpcFJlY3QpKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQ3N2Nk
M2ZmNTY3Li4zMmVlOTUwOTM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uKEZ1bmN0aW9uPHZvaWQoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShHVEspCi0gICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFw
c2hvdCgpOworICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0aW9u
YWw8V2ViQ29yZTo6SW50UmVjdD4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApp
bmRleCBhMDdjNWQzZjZlYi4uZjY4NzAzZjZhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0
ZToKICAgICBDQUxheWVyKiBhY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92
ZXJyaWRlIHsgcmV0dXJuIExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsgfQogCi0gICAg
UmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50
UmVjdD4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2Vi
Q29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNv
bW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGRiZmIzNDkwMGFkLi5hMGVm
ZGUzMWFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQpAQCAtNTEzLDcgKzUxMyw3IEBAIENBTGF5ZXIgKlBhZ2VDbGllbnRJbXBsOjph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUmVmUHRyPFZpZXdTbmFwc2hvdD4gUGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25h
cHNob3QoKQorUmVmUHRyPFZpZXdTbmFwc2hvdD4gUGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25h
cHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikKIHsKICAgICByZXR1cm4gW21fd2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IDgwMTZiNTZjMTYwLi4xMTA2ZDQyOGU0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
QEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CiAKLSAgICBSZWZQ
dHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3Jl
KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTUFDX0dF
U1RVUkVfRVZFTlRTKQogICAgIHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZShjb25zdCBOYXRpdmVXZWJHZXN0dXJlRXZlbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBiZjdkYzEzMmIx
ZS4uZDZkNTljZTkxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KQEAgLTU2NSw3ICs1NjUsNyBAQCBDQUxheWVyICpQYWdlQ2xpZW50
SW1wbDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJu
IG1faW1wbC0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpOwogfQogCi1SZWZQdHI8
Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCgpCitSZWZQdHI8
Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxX
ZWJDb3JlOjpJbnRSZWN0PiYmKQogewogICAgIHJldHVybiBtX2ltcGwtPnRha2VWaWV3U25hcHNo
b3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggMThkMDIyMzhl
NTEuLjNmNWI2MTgxZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAt
ODA2LDcgKzgwNiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2V0RmlsZXNG
b3JJbnB1dEZpbGVVcGxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsKIH0KIAotc3RhdGljIFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpFbGVtZW50KiBlbGVt
ZW50LCBib29sIGNsaXBUb1ZpZXdwb3J0KQorc3RhdGljIFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RFbGVtZW50UmVjdEZvclNjcmVlbnNob3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVu
dCogZWxlbWVudCwgYm9vbCBjbGlwVG9WaWV3cG9ydCkKIHsKICAgICBhdXRvKiBmcmFtZVZpZXcg
PSBwYWdlLm1haW5GcmFtZVZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKQEAgLTgzMiwxOSAr
ODMyLDQzIEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNo
b3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVuCiAKIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFu
ZGxlOworICAgIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QocGFnZUlELCBmcmFtZUlELCBub2Rl
SGFuZGxlLCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBjbGlwVG9WaWV3cG9ydCwgW3BhZ2VJRCwg
ZnJhbWVJRCwgY2FsbGJhY2tJRF0gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JTdHJpbmcsIFdlYkNv
cmU6OkludFJlY3QmJiByZWN0KSB7CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKKyAgICAgICAgaWYgKGVycm9yU3RyaW5nKSB7CisgICAgICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxl
LCAqZXJyb3JTdHJpbmcpLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CisgICAgICAgIEFTU0VSVChwYWdlKTsKKyAgICAgICAgV2ViRnJhbWUqIGZyYW1lID0g
ZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6IHBh
Z2UtPm1haW5XZWJGcmFtZSgpOworICAgICAgICBBU1NFUlQoZnJhbWUgJiYgZnJhbWUtPmNvcmVG
cmFtZSgpKTsKKyAgICAgICAgYXV0byBzbmFwc2hvdFJlY3QgPSBXZWJDb3JlOjpJbnRSZWN0KGZy
YW1lLT5jb3JlRnJhbWUoKS0+bWFpbkZyYW1lKCkudmlldygpLT5jbGllbnRUb0RvY3VtZW50UmVj
dChyZWN0KSk7CisgICAgICAgIFJlZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBwYWdlLT5zY2FsZWRT
bmFwc2hvdFdpdGhPcHRpb25zKHNuYXBzaG90UmVjdCwgMSwgU25hcHNob3RPcHRpb25zU2hhcmVh
YmxlKTsKKyAgICAgICAgaWYgKCFpbWFnZSkgeworICAgICAgICAgICAgU3RyaW5nIHNjcmVlbnNo
b3RFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0
RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JN
ZXNzYWdlOjpTY3JlZW5zaG90RXJyb3IpOworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgc2NyZWVu
c2hvdEVycm9yVHlwZSksIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAg
ICAgICAgaW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxlLCB7IH0pLCAwKTsKKyAg
ICB9KTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RG
b3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBz
Y3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgU3RyaW5nIHdp
bmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhl
bHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxlLCB3
aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3
aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIFdlYkZyYW1lKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZSgqZnJhbWVJRCkgOiBwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
IHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkpIHsKICAgICAgICAgU3RyaW5nIGZyYW1lTm90Rm91bmRF
cnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNz
YWdlOjpGcmFtZU5vdEZvdW5kKTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Np
b246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgZnJhbWVOb3RGb3VuZEVy
cm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJy
b3JUeXBlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NTIsMzYgKzg3Niwy
OSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgTwogICAgIGlmICghbm9kZUhhbmRsZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkTm9kZUhhbmRsZShub2RlSGFuZGxlKSkgewogICAg
ICAgICAgICAgU3RyaW5nIGludmFsaWROb2RlSWRlbnRpZmllcnJyb3JUeXBlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZE5vZGVJZGVu
dGlmaWVyKTsKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRU
YWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIGludmFsaWROb2RlSWRlbnRpZmllcnJy
b3JUeXBlKSwgMCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkTm9kZUlk
ZW50aWZpZXJycm9yVHlwZSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoKmZyYW1lLCBub2Rl
SGFuZGxlKTsKICAgICAgICAgaWYgKCFjb3JlRWxlbWVudCkgewogICAgICAgICAgICAgU3RyaW5n
IG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25I
ZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7Ci0gICAgICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxl
LCBub2RlTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG5vZGVOb3RGb3VuZEVycm9yVHlwZSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmIChjb3JlRWxlbWVudCAmJiBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkKQotICAgICAgICBjb3JlRWxlbWVudC0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxz
ZSk7CisgICAgICAgIGNvcmVFbGVtZW50LT5zY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShmYWxz
ZSk7CiAKICAgICBTdHJpbmcgc2NyZWVuc2hvdEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OlNjcmVlbnNob3RFcnJvcik7Ci0gICAg
V2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QgPSBzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90
KCpwYWdlLCBjb3JlRWxlbWVudCwgY2xpcFRvVmlld3BvcnQpOworICAgIFdlYkNvcmU6OkludFJl
Y3Qgc25hcHNob3RSZWN0ID0gc25hcHNob3RFbGVtZW50UmVjdEZvclNjcmVlbnNob3QoKnBhZ2Us
IGNvcmVFbGVtZW50LCBjbGlwVG9WaWV3cG9ydCk7CiAgICAgaWYgKHNuYXBzaG90UmVjdC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VT
Y3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgc2NyZWVuc2hvdEVycm9yVHlwZSksIDApOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IHBh
Z2UtPnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoc25hcHNob3RSZWN0LCAxLCBTbmFwc2hvdE9w
dGlvbnNTaGFyZWFibGUpOwotICAgIGlmICghaW1hZ2UpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
QXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwg
c2NyZWVuc2hvdEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzY3Jl
ZW5zaG90RXJyb3JUeXBlLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW1h
Z2UtPmJpdG1hcCgpLmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZE9ubHkpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtl
U2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsgfSksIDApOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6SW50UmVjdChmcmFtZS0+Y29yZUZyYW1lKCkt
Pm1haW5GcmFtZSgpLnZpZXcoKS0+ZG9jdW1lbnRUb0NsaWVudFJlY3Qoc25hcHNob3RSZWN0KSkp
OwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFt
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXggN2ZkMGU3ZWRjNWEuLjE4NWQxNzU3YWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC03Niw2ICs3Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CiAgICAgdm9pZCBzZXRG
aWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIG5vZGVIYW5kbGUsIFZlY3RvcjxTdHJp
bmc+JiYgZmlsZW5hbWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4p
PiYmKTsKICAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFN0cmlu
ZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmll
d3BvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6
SW50UmVjdCYmKT4mJik7CiAgICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4p
PiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCBlZDFjOThhZjBhMy4uOWJi
MGM0ZDllNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbgpAQCAtMzgsNiArMzgsOCBAQCBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgVGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wg
Y2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKKyAgICBTbmFwc2hvdFJlY3RG
b3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBz
Y3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0KSAtPiAoT3B0aW9uYWw8
U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCkgQXN5bmMKKwogICAgIEdl
dENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4g
ZXJyb3JUeXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYwogICAgIERl
bGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRp
b25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIH0K
</data>
<flag name="review"
          id="404266"
          type_id="1"
          status="+"
          setter="clopez"
    />
          </attachment>
      

    </bug>

</bugzilla>