<?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>183742</bug_id>
          
          <creation_ts>2018-03-19 07:10:25 -0700</creation_ts>
          <short_desc>[Extra zoom mode] Require fullscreen for video playback</short_desc>
          <delta_ts>2018-03-19 14:22:21 -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>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1407358</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-03-19 07:10:25 -0700</bug_when>
    <thetext>Require fullscreen for video playback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407359</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-03-19 07:11:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/38235862&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407360</commentid>
    <comment_count>2</comment_count>
      <attachid>336042</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-03-19 07:26:18 -0700</bug_when>
    <thetext>Created attachment 336042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407362</commentid>
    <comment_count>3</comment_count>
      <attachid>336042</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2018-03-19 07:51:22 -0700</bug_when>
    <thetext>Comment on attachment 336042
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=336042&amp;action=review

&gt; Source/WebCore/Modules/modern-media-controls/media/playback-support.js:52
&gt; +            this.control.visible = true;

This may cause a problem when a compact player is playing inline. Can we differentiate between when we are in extra zoom mode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407363</commentid>
    <comment_count>4</comment_count>
      <attachid>336044</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-03-19 07:57:20 -0700</bug_when>
    <thetext>Created attachment 336044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407377</commentid>
    <comment_count>5</comment_count>
      <attachid>336044</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-03-19 10:01:44 -0700</bug_when>
    <thetext>Comment on attachment 336044
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=336044&amp;action=review

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5272
&gt; -            if (m_mediaSession-&gt;requiresFullscreenForVideoPlayback(*this) &amp;&amp; !isFullscreen())
&gt; +            if (m_mediaSession-&gt;requiresFullscreenForVideoPlayback(*this) &amp;&amp; !isFullscreen()) {
&gt;                  enterFullscreen();
&gt; +#if ENABLE(EXTRA_ZOOM_MODE)
&gt; +                return;
&gt; +#endif
&gt; +            }

Why not just make the early return unconditional? Then this could be moved outside the if() statement; mitigating any side effects to things like &quot;setDisplayMode()&quot; and &quot;clientWillBeginPlayback()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407378</commentid>
    <comment_count>6</comment_count>
      <attachid>336049</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-03-19 10:03:39 -0700</bug_when>
    <thetext>Created attachment 336049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407405</commentid>
    <comment_count>7</comment_count>
      <attachid>336060</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-03-19 11:26:35 -0700</bug_when>
    <thetext>Created attachment 336060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407457</commentid>
    <comment_count>8</comment_count>
      <attachid>336060</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-19 14:22:20 -0700</bug_when>
    <thetext>Comment on attachment 336060
Patch

Clearing flags on attachment: 336060

Committed r229714: &lt;https://trac.webkit.org/changeset/229714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407458</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-19 14:22:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336042</attachid>
            <date>2018-03-19 07:26:18 -0700</date>
            <delta_ts>2018-03-19 07:57:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183742-20180319072618.patch</filename>
            <type>text/plain</type>
            <size>41964</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyM2VjNjUyMzJhYjM2ODQxNGZhMzBi
MGZlOGE4YzA0YmNiYTYxMDIuLjczYmY5MGExNTg3NmFjNWQ0NWZkNDQ3YzRjMmNjYjFkZjc5ZWMx
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDMtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gUmVxdWlyZSBm
dWxsc2NyZWVuIGZvciB2aWRlbyBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODIz
NTg2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE4LTAzLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGRlZmluaW5nIGNvbW1vbmx5LW5hbWVkIHN5
c3RlbSBtYWNyb3Mgb24gYWxsIENvY29hIHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU0ZTk0YjU5
MjI1ZmJmZjM2MzI0NmFjZWEwYzE4NWFjYTBiMjM5MzEuLjJjZGE5NWNiNzIxOThkNTRjMWE5MzIx
NjdiN2Q1ZDMwZTg3Mjg0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxOC0wMy0x
OSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbRXh0
cmEgem9vbSBtb2RlXSBSZXF1aXJlIGZ1bGxzY3JlZW4gZm9yIHZpZGVvIHBsYXliYWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3NDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM4MjM1ODYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWVk
aWEvcGxheWJhY2stc3VwcG9ydC5qczoKKyAgICAgICAgKFBsYXliYWNrU3VwcG9ydC5wcm90b3R5
cGUuc3luY0NvbnRyb2wpOiBBbHdheXMgc2hvdyB0aGUgcGxheSBidXR0b24uCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSk6IFJldHVybiBpbW1lZGlhdGVseSBpZiBwbGF5YmFjayBy
ZXF1aXJlcyBmdWxsc2NyZWVuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpk
aWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6IENhbGwgdXBkYXRlUGxheVN0YXRlIGluIGNhc2Ug
CisgICAgICAgIHBsYXliYWNrIGlzIHBlbmRpbmcuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpwcmVzZW50aW5nVmll
d0NvbnRyb2xsZXIpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIpOiBOZXcuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTW9k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNl
ZWthYmxlUmFuZ2VzQ2hhbmdlZCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW06IFdyYXAgQVZQbGF5ZXJMYXllclZpZXcgc28gd2UgY2Fu
IGNoYW5nZSBpdHMKKyAgICAgICAgYmVoYXZpb3IuCisgICAgICAgIChXZWJBVlBsYXllckxheWVy
Vmlld19wbGF5ZXJMYXllcik6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192aWRlb1Zp
ZXcpOgorICAgICAgICAoYWxsb2NXZWJBVlBsYXllckxheWVyVmlld0luc3RhbmNlKToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBpbml0V2l0aEZ1bGxzY3JlZW5JbnRlcmZh
Y2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgcGxheWVyVmlld0Nv
bnRyb2xsZXJTaG91bGRIYW5kbGVEb25lQnV0dG9uVGFwOl0pOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2Ny
ZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXIgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlRdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJWaWV3Q29udHJvbGxlciBpc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZV0pOgorICAg
ICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGljdHVyZUFjdGl2
ZV0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGlj
dHVyZVN1c3BlbmRlZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHBp
Y3R1cmVJblBpY3R1cmVBY3RpdmVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlciBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgc2hvd3NQbGF5YmFja0NvbnRyb2xzXSk6CisgICAg
ICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xz
Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1
cmVJblBpY3R1cmVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ciBzZXRQbGF5ZXJDb250cm9sbGVyOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250
cm9sbGVyIGF2UGxheWVyVmlld0NvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJW
aWV3Q29udHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdKToKKyAgICAgICAg
KFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAoZmFsbGJhY2tWaWV3Q29udHJvbGxlcik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24pOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXApOgorICAgICAg
ICAoV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKToKKwogMjAxOC0wMy0xOSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBH
Q0MgNC45IGJ1aWxkLWZpeCBhZnRlciByMjI5NjcyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZTdl
ZjM3MzU4NmM0Mzc5MDEwMDZkOGE5MTVjNTg5MDg1NjI5ODM3Yy4uMWNlMmQ0MzMyNjVmMDY2OTcw
NDhhODllZWU2NDMyNGY2YTgxODZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTgtMDMtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gUmVxdWlyZSBmdWxsc2NyZWVuIGZvciB2aWRlbyBw
bGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgzNzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODIzNTg2Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRT
UEkuaDoKKwogMjAxOC0wMy0xNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJBdXRoTl0gSW1wbGVtZW50IGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyNTExMTViY2JjYmEwM2QyMmQxNGZiODBlZTMyNDMyODMzMmUzNWMzLi4y
NWIwMGVkYTAyMWUwN2NlNzU0ZWZiMjU5MWUyZDYxYjFjNTJjNTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDE4LTAzLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFtFeHRyYSB6b29tIG1vZGVdIFJlcXVpcmUgZnVsbHNjcmVlbiBmb3Ig
dmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mzc0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgyMzU4NjI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKC1bV0tWaWRlb0Z1
bGxTY3JlZW5WaWV3Q29udHJvbGxlciBpbml0V2l0aEFWUGxheWVyVmlld0NvbnRyb2xsZXI6XSk6
CisgICAgICAgICgtW1dLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgdmlld0RpZExvYWRd
KToKKyAgICAgICAgKC1bV0tWaWRlb0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciBwcmVmZXJzU3Rh
dHVzQmFySGlkZGVuXSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxz
Y3JlZW4pOgorCiAyMDE4LTAzLTE3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhOXSBJbXBsZW1lbnQgYXV0aGVudGljYXRvck1ha2VDcmVkZW50
aWFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAppbmRleCA1NjY4YTMwNmRkNmMwMjA5MjdjZjM1NmJiN2RlZjIxNzkyNTFj
ZjIwLi43MzVmOGIzZmJkZTJmNWZjMDYyNjhmYTQ4ZDNiM2RhNmNiOTA3NzZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKQEAgLTEwNDIsMTAgKzEwNDIsMTMgQEAKIAogI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAh
UExBVEZPUk0oQVBQTEVUVikgJiYgIUVOQUJMRShNSU5JTUFMX1NJTVVMQVRPUikKICNkZWZpbmUg
RU5BQkxFX0RBVEFfREVURUNUSU9OIDEKLSNkZWZpbmUgSEFWRV9BVktJVCAxCiAjZGVmaW5lIEhB
VkVfUEFSRU5UQUxfQ09OVFJPTFMgMQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oQVBQTEVUVikg
JiYgIUVOQUJMRShNSU5JTUFMX1NJTVVMQVRPUikKKyNkZWZpbmUgSEFWRV9BVktJVCAxCisjZW5k
aWYKKwogI2lmIEVOQUJMRShXRUJHTCkKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFVTRV9P
UEVOR0wgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvbWVkaWEvcGxheWJhY2stc3VwcG9ydC5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL21lZGlhL3BsYXliYWNrLXN1cHBvcnQuanMKaW5kZXgg
NGQ4ZDc3NzExZWY1MWZhNjM0MzhjNzAwZjg5MjQ4OTBlNWVkMTQ0Yi4uZTUwMTg1NTBmZWIyNGM1
NmJjMTdkNGQwMDVlYjk3ODAwM2ViZDFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWVkaWEvcGxheWJhY2stc3VwcG9ydC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9tZWRpYS9wbGF5
YmFjay1zdXBwb3J0LmpzCkBAIC00Nyw5ICs0Nyw5IEBAIGNsYXNzIFBsYXliYWNrU3VwcG9ydCBl
eHRlbmRzIE1lZGlhQ29udHJvbGxlclN1cHBvcnQKICAgICB7CiAgICAgICAgIGNvbnN0IGlzUGF1
c2VkID0gdGhpcy5tZWRpYUNvbnRyb2xsZXIubWVkaWEucGF1c2VkOwogCi0gICAgICAgIC8vIFdl
IGFsd2F5cyBzaG93IHRoZSBwbGF5IGJ1dHRvbiB3aGVuIHRoZSBtZWRpYSBpcyBwYXVzZWQgd2l0
aCBjb21wYWN0IGxheW91dC4KKyAgICAgICAgLy8gV2UgYWx3YXlzIHNob3cgdGhlIHBsYXkgYnV0
dG9uIHdpdGggY29tcGFjdCBsYXlvdXQuCiAgICAgICAgIGlmICh0aGlzLm1lZGlhQ29udHJvbGxl
ci5sYXlvdXRUcmFpdHMgJiBMYXlvdXRUcmFpdHMuQ29tcGFjdCkKLSAgICAgICAgICAgIHRoaXMu
Y29udHJvbC52aXNpYmxlID0gaXNQYXVzZWQ7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2wudmlz
aWJsZSA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuY29udHJvbC5wbGF5
aW5nID0gIWlzUGF1c2VkOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL0FWS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2Nv
YS9BVktpdFNQSS5oCmluZGV4IDQzN2M1NzY2OGJkMmY2NGYwZGJmNjBkY2MxMTIzZjRmODI1OWNi
ZjIuLmYyMThmMDVhZjBiMjkyY2U0NDQ1MjNlZWNlNzg2YTk2NGQ3M2U0NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZLaXRTUEkuaApAQCAtNDEsNiArNDEsNTMgQEAK
ICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9y
dCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5Lmg+CiAKKyNpZiBFTkFC
TEUoRVhUUkFfWk9PTV9NT0RFKQorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXll
ci5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIEFWUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyA6IFVJVmlldworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBBVlBsYXllckxheWVyICpwbGF5ZXJMYXllcjsKK0BlbmQKKworQGludGVyZmFjZSBf
X0FWUGxheWVyTGF5ZXJWaWV3ICAoRGV0YWlscykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXI7CistIChBVlBpY3R1cmVJblBpY3R1cmVQ
bGF5ZXJMYXllclZpZXcqKSBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3OworLSAodm9p
ZClzdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldzsKKy0g
KHZvaWQpc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldzsK
K0BlbmQKKworQGNsYXNzIEFWUGxheWVyTGF5ZXJWaWV3OworQGludGVyZmFjZSBBVlBsYXllclZp
ZXdDb250cm9sbGVyIChBVlBsYXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHlfSW50ZXJuYWwp
CistICh2b2lkKWVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKiBfX251bGxhYmxlIGVy
cm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDoo
Qk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzLCBO
U0Vycm9yICogX19udWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXN0
YXJ0UGljdHVyZUluUGljdHVyZTsKKy0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7CisKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3dzRXhpdEZ1bGxTY3JlZW5CdXR0b247CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVQb3Nz
aWJsZSkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUpIEJPT0wgcGljdHVy
ZUluUGljdHVyZUFjdGl2ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVy
PWlzUGljdHVyZUluUGljdHVyZVN1c3BlbmRlZCkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlU3VzcGVu
ZGVkOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHBpY3R1cmVJblBpY3R1
cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZDsKK0BlbmQKKworQHByb3RvY29sIEFW
UGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZV9XZWJLaXRPbmx5IDxBVlBsYXllclZpZXdDb250
cm9sbGVyRGVsZWdhdGU+CitAb3B0aW9uYWwKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFW
UGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbikgeworICAgIEFWUGxheWVy
Vmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbkRvbmVCdXR0b25UYXBwZWQsCisgICAg
QVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVhc29uRnVsbFNjcmVlbkJ1dHRv
blRhcHBlZCwKKyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25Q
aW5jaEdlc3R1cmVIYW5kbGVkLAorICAgIEFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNj
cmVlblJlYXNvblJlbW90ZUNvbnRyb2xTdG9wRXZlbnRSZWNlaXZlZCwKKyAgICBBVlBsYXllclZp
ZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25QaWN0dXJlSW5QaWN0dXJlU3RhcnRlZAor
fTsKKy0gKEJPT0wpcGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIg
KilwbGF5ZXJWaWV3Q29udHJvbGxlciBzaG91bGRFeGl0RnVsbFNjcmVlbldpdGhSZWFzb246KEFW
UGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbilyZWFzb247CitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKKwogI2Vsc2UKIAogQGludGVyZmFjZSBB
VlBsYXllckNvbnRyb2xsZXIgOiBVSVJlc3BvbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggZjAwYzQzNzg1MzY1NGFiNjM3MWM1MTg5MmYyN2Y0Y2QyZGU2
OTIzNi4uMzM0MjI3NzMzYTVhZWY1ZDhiMmUwNzc2OGQwYTA4OTNhNTI3ZDQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01MjY0LDggKzUyNjQsMTIgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoVXBkYXRlU3RhdGUgdXBkYXRl
U3RhdGUpCiAgICAgICAgIGlmIChwbGF5ZXJQYXVzZWQpIHsKICAgICAgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOwogCi0gICAgICAgICAgICBpZiAobV9t
ZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKnRoaXMpICYm
ICFpc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+cmVxdWly
ZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygqdGhpcykgJiYgIWlzRnVsbHNjcmVlbigpKSB7
CiAgICAgICAgICAgICAgICAgZW50ZXJGdWxsc2NyZWVuKCk7CisjaWYgRU5BQkxFKEVYVFJBX1pP
T01fTU9ERSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gU2V0IHJhdGUsIG11dGVkIGJlZm9yZSBjYWxsaW5nIHBsYXkgaW4g
Y2FzZSB0aGV5IHdlcmUgc2V0IGJlZm9yZSB0aGUgbWVkaWEgZW5naW5lIHdhcyBzZXR1cC4KICAg
ICAgICAgICAgIC8vIFRoZSBtZWRpYSBlbmdpbmUgc2hvdWxkIGp1c3Qgc3Rhc2ggdGhlIHJhdGUg
YW5kIG11dGVkIHZhbHVlcyBzaW5jZSBpdCBpc24ndCBhbHJlYWR5IHBsYXlpbmcuCkBAIC01OTY3
LDYgKzU5NzEsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW50KCkKIHsKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNv
bnRyb2xzKCktPmVudGVyZWRGdWxsc2NyZWVuKCk7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9E
RSkKKyAgICB1cGRhdGVQbGF5U3RhdGUoVXBkYXRlU3RhdGU6OkFzeW5jaHJvbm91c2x5KTsKKyNl
bmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTdG9wQmVpbmdGdWxsc2NyZWVu
RWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGZjODFk
YzJmMGZiN2EwYWRiZjllM2JjYjUwYWU2NWIwNTIxNGVkYTcuLjQ3ODI1NGY4NTk3ODgzMTQyMjlk
NzE2OGNkNjE3YjkyOWI2ZjIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC01NTMsNiArNTUzLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1N1c3BlbmRlZCgp
IGNvbnN0IGZpbmFsOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRCZWNvbWVGdWxsc2Ny
ZWVuRWxlbWVudCgpIG92ZXJyaWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEluaXRpYWxpemF0aW9uKCk7CkBAIC02MDMsNyArNjA1
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIC8v
IEFjdGl2ZURPTU9iamVjdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAppbmRleCAzODdmNzUzMzkxZGEyMDEwNzk2NGE2
MTUxNDcxNzg5OTFjOWI2MWNhLi5kYTUyMTc1MDc0NzA2ZGVmMWYzZGI1MGM0MmYxMTZjMDYwOWI0
NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1vZGVsLmgKQEAgLTMyLDYgKzMyLDExIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudEVudW1zLmgiCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKIAorI2lmIFBM
QVRGT1JNKElPUykKK09CSkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xB
U1MgVUlWaWV3Q29udHJvbGxlcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OwpAQCAtNTEsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBG
bG9hdFNpemUgdmlkZW9EaW1lbnNpb25zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNWaWRlbygpIGNvbnN0ID0gMDsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFVJ
Vmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICB2aXJ0dWFsIFVJVmlld0NvbnRyb2xsZXIgKmNyZWF0ZVZpZGVvRnVsbHNjcmVl
blZpZXdDb250cm9sbGVyKEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKikgeyByZXR1cm4gbnVsbHB0
cjsgfQorI2VuZGlmCiB9OwogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA5NjZlOTdhMDVjYmM4NGE2ZDA1YmI0NjczMjU5N2Yx
ZTg5NmYyNzYyLi42NzVkY2Y0MzAzZjRhYTI5ZmQ3MTE0NGFiMDQ5NGZkNTUwMzQyMzY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIoKQogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllciht
X3ZpZGVvTGF5ZXIuZ2V0KCksIGRlZmF1bHRTaXplKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1MpICYmICFFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIGlmIChbbV92
aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6
KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KHBsYXllcigpLT5m
dWxsc2NyZWVuTW9kZSgpICYgTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlKV07CiAjZW5kaWYKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpICYmICFFTkFCTEUoRVhU
UkFfWk9PTV9NT0RFKQogICAgIGlmIChbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0
UElQTW9kZUVuYWJsZWQ6KG1vZGUgJiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZVBp
Y3R1cmVJblBpY3R1cmUpXTsKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGUzN2EyZWFjNTdkMTFjMzRhZjhmZTNjMTQwOWMw
MDk2NmFiMGY0Y2QuLjBhMzY5NWE3MGI1ODJhZGU3NGQwYzRkM2M5YzNjNWU5MmExOWQzMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KQEAgLTEyOCw2ICsxMjgsNyBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJh
bmdlcyYgdGltZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gc2Vla2FibGVSYW5n
ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAorI2lmICFFTkFC
TEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFu
Z2VzLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5z
dGFydChpKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVS
YW5nZXMuZW5kKGkpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwpAQCAtMTM1LDYgKzEzNiw5IEBAIHZv
aWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChj
b25zdCBUaW1lUmFuZ2VzJiB0aW1lCiAgICAgICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1l
UmFuZ2VNYWtlKENNVGltZU1ha2VXaXRoU2Vjb25kcyhzdGFydCwgMTAwMCksIENNVGltZU1ha2VX
aXRoU2Vjb25kcyhlbmQtc3RhcnQsIDEwMDApKTsKICAgICAgICAgW3NlZWthYmxlUmFuZ2VzIGFk
ZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5nZV1dOwogICAgIH0KKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHRpbWVSYW5nZXMpOworI2VuZGlmCiAKICAgICBbbV9wbGF5
ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJsZVJhbmdlcy5nZXQoKV07
CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRTZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZp
ZWRUaW1lOiBsYXN0TW9kaWZpZWRUaW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggNTJm
OGExMmIzZDQ3YTRjMTUyMjgxNTY4NmU4MTdiMGVhMWZlYTVlZi4uZTExZmMyNTAzYWQ5YWViMmMy
ZDhlM2VkZTZlMGZiZTRmNThmZjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAs
NiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogCi1PQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJVmll
d0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93OwogT0JKQ19DTEFTUyBVSVZpZXc7CkBA
IC00OCw2ICs0Nyw3IEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5
ZXJDb250cm9sbGVyOwogT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKIE9CSkNfQ0xB
U1MgV2ViQVZQbGF5ZXJMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxl
cjsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlOwogT0JKQ19D
TEFTUyBOU0Vycm9yOwogCkBAIC0xNTcsNiArMTU3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
ZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAg
IGJvb2wgaGFzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50TW9kZS5oYXNNb2RlKG1vZGUpOyB9CiAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyKCk7CisgICAgVUlWaWV3Q29udHJvbGxlciAqZnVsbHNjcmVlblZpZXdDb250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gbV92aWV3Q29udHJvbGxlci5nZXQoKTsgfQorICAgIFdlYkFWUGxh
eWVyTGF5ZXJWaWV3KiBwbGF5ZXJMYXllclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3BsYXllckxh
eWVyVmlldy5nZXQoKTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9S
VCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdChQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdCYpOwogCkBAIC0xNzUsNyArMTgxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmPFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKICAg
ICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3BsYXllclZp
ZXdDb250cm9sbGVyRGVsZWdhdGU7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xs
ZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyVmll
d0NvbnRyb2xsZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CiAgICAgVmlkZW9GdWxsc2NyZWVu
TW9kZWwqIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxscHRyIH07CiAgICAgVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0
ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggMDNlZmJkZTIzZjNhNzJjYWZlZGFl
NTQ0ZWM4MjNjNzY5NjI2ZGYyZC4uOTE0YmI3MmQzNmNjZTIzNTJmNDZhMGNhYmEyZTE1ZjMxZGRi
OGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw5ICs0MCwxMSBAQAogI2lt
cG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZU
aW1lLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8VUlLaXQvVUlXaW5kb3cu
aD4KICNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9V
SUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05Myw2ICs5NSwx
MiBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICNlbmRpZgogCiBz
dGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsIHsgMV9zIH07
CitzdGF0aWMgYm9vbCBpZ25vcmVXYXRjaGRvZ0ZvckRlYnVnZ2luZyA9IGZhbHNlOworCitAaW50
ZXJmYWNlIEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKERldGFpbHMpCitAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBzaG93c1BsYXliYWNrQ29udHJvbHM7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
VUlWaWV3KiB2aWV3OworQGVuZAogCiBAY2xhc3MgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
IApAQCAtNDEyLDEwICs0MjAsMjMgQEAgc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdf
c2V0UGxheWVyQ29udHJvbGxlcihpZCBhU2VsZiwgU0VMLCBBVlBsYXllckNvbnQKICAgICBbd2Vi
QVZQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOiBwbGF5ZXJDb250cm9sbGVyXTsKIH0K
IAorc3RhdGljIEFWUGxheWVyTGF5ZXIgKldlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXllckxheWVy
KGlkIGFTZWxmLCBTRUwpCit7CisgICAgX19BVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJW
aWV3ID0gYVNlbGY7CisKKyAgICBpZiAoW2dldF9fQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGlu
c3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwbGF5ZXJMYXllcildKSB7CisgICAg
ICAgIG9iamNfc3VwZXIgc3VwZXJDbGFzcyB7IHBsYXllckxheWVyVmlldywgZ2V0X19BVlBsYXll
ckxheWVyVmlld0NsYXNzKCkgfTsKKyAgICAgICAgYXV0byBzdXBlckNsYXNzTWV0aG9kID0gcmVp
bnRlcnByZXRfY2FzdDxBVlBsYXllckxheWVyICooKikob2JqY19zdXBlciAqLCBTRUwpPihvYmpj
X21zZ1NlbmRTdXBlcik7CisgICAgICAgIHJldHVybiBzdXBlckNsYXNzTWV0aG9kKCZzdXBlckNs
YXNzLCBAc2VsZWN0b3IocGxheWVyTGF5ZXIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gKEFWUGxh
eWVyTGF5ZXIgKilbcGxheWVyTGF5ZXJWaWV3IGxheWVyXTsKK30KKwogc3RhdGljIFVJVmlldyAq
V2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KGlkIGFTZWxmLCBTRUwpCiB7Ci0gICAgX19B
VlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKLSAgICBXZWJBVlBsYXllckxh
eWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIg
cGxheWVyTGF5ZXJdOworICAgIF9fQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9
IGFTZWxmOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQ
bGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwogICAgIENBTGF5ZXIq
IHZpZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1YmxheWVyXTsKICAgICBpZiAo
IXZpZGVvTGF5ZXIgfHwgIXZpZGVvTGF5ZXIuZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7
CkBAIC00ODYsMTIgKzUwNywxNCBAQCBzdGF0aWMgV2ViQVZQbGF5ZXJMYXllclZpZXcgKmFsbG9j
V2ViQVZQbGF5ZXJMYXllclZpZXdJbnN0YW5jZSgpCiAgICAgc3RhdGljIENsYXNzIHRoZUNsYXNz
ID0gbmlsOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgQVNTRVJUKGdldF9fQVZQbGF5ZXJMYXll
clZpZXdDbGFzcygpKTsKICAgICAgICAgdGhlQ2xhc3MgPSBvYmpjX2FsbG9jYXRlQ2xhc3NQYWly
KGdldF9fQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZpZXciLCAw
KTsKICAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYyks
IChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYywgInZAOiIpOwogICAgICAgICBjbGFz
c19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiksIChJ
TVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsKICAg
ICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IocGxheWVyQ29udHJvbGxl
ciksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlciwgIkBAOiIpOwog
ICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRWaWRlb1ZpZXc6
KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1ZpZXcsICJ2QDpAIik7CiAgICAg
ICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHZpZGVvVmlldyksIChJTVAp
V2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3LCAiQEA6Iik7CisgICAgICAgIGNsYXNzX2Fk
ZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHBsYXllckxheWVyKSwgKElNUClXZWJBVlBsYXll
ckxheWVyVmlld19wbGF5ZXJMYXllciwgIkBAOiIpOwogICAgICAgICBjbGFzc19hZGRNZXRob2Qo
dGhlQ2xhc3MsIEBzZWxlY3RvcihzdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBs
YXllckxheWVyVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlk
ZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJ2QDoiKTsKICAgICAgICAgY2xh
c3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc3Rv
cFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywgInZAOiIpOwog
ICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihwaWN0dXJlSW5QaWN0
dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19waWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3LCAiQEA6Iik7CkBAIC01MDUsNiArNTI4LDIwMCBAQCBzdGF0
aWMgV2ViQVZQbGF5ZXJMYXllclZpZXcgKmFsbG9jV2ViQVZQbGF5ZXJMYXllclZpZXdJbnN0YW5j
ZSgpCiAgICAgcmV0dXJuIChXZWJBVlBsYXllckxheWVyVmlldyAqKVt0aGVDbGFzcyBhbGxvY107
CiB9CiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCitAaW50ZXJmYWNlIFdlYkFWUGxheWVyVmll
d0NvbnRyb2xsZXIgOiBOU09iamVjdDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOihWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdCAqKWludGVyZmFjZTsKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuQW5p
bWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZXhpdEZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzdGFydFBp
Y3R1cmVJblBpY3R1cmU7CistICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlOworCistIChCT09M
KXBsYXllclZpZXdDb250cm9sbGVyU2hvdWxkSGFuZGxlRG9uZUJ1dHRvblRhcDooQVZQbGF5ZXJW
aWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyOworQGVuZAorTlNfQVNTVU1FX05P
Tk5VTExfRU5ECisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHsK
KyAgICBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCAqX2Z1bGxzY3JlZW5JbnRlcmZhY2U7
CisgICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+IF9wcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXI7CisgICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xsZXI+IF9hdlBsYXllclZpZXdD
b250cm9sbGVyOworICAgIGlkPEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZV9XZWJLaXRP
bmx5PiBfZGVsZWdhdGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZ1bGxzY3JlZW5J
bnRlcmZhY2U6KFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0ICopaW50ZXJmYWNlCit7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBfZnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKKyAgICBfYXZQbGF5ZXJWaWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlckluc3RhbmNlKCkg
aW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6aW50ZXJmYWNlLT5wbGF5ZXJMYXllclZpZXcoKV0pOwor
I2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgX2F2UGxheWVyVmlld0NvbnRyb2xsZXIu
Z2V0KCkuZGVsZWdhdGUgPSBzZWxmOworI2VuZGlmCisKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAoQk9PTClwbGF5ZXJWaWV3Q29udHJvbGxlclNob3VsZEhhbmRsZURvbmVCdXR0b25UYXA6KEFW
UGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlcgoreworICAgIEFTU0VS
VChwbGF5ZXJWaWV3Q29udHJvbGxlciA9PSBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSk7
CisgICAgaWYgKF9kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIFtfZGVsZWdhdGUgcGxheWVyVmll
d0NvbnRyb2xsZXI6cGxheWVyVmlld0NvbnRyb2xsZXIgc2hvdWxkRXhpdEZ1bGxTY3JlZW5XaXRo
UmVhc29uOkFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbkRvbmVCdXR0
b25UYXBwZWRdOworCisgICAgcmV0dXJuIFlFUzsKK30KKworLSAodm9pZCllbnRlckZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICogX19udWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIF9wcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIgPSBfZnVsbHNjcmVlbkludGVyZmFjZS0+cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7
CisKKyAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lID0gX3ByZXNl
bnRpbmdWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lOworICAgIFtfcHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpfZnVsbHNjcmVlbkludGVyZmFjZS0+
ZnVsbHNjcmVlblZpZXdDb250cm9sbGVyKCkgYW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbjpe
eworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihZRVMsIG5pbCk7CisgICAgfV07CisjZWxzZQorICAgIFtfYXZQbGF5ZXJWaWV3Q29u
dHJvbGxlci5nZXQoKSBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDphbmltYXRlZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisjZW5kaWYKK30KKworLSAodm9pZClleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKiBfX251bGxhYmxlIGVycm9yKSljb21wbGV0aW9uSGFu
ZGxlcgoreworI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgaWYgKCFfcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBbX3ByZXNlbnRpbmdWaWV3
Q29udHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDphbmltYXRlZCBjb21wbGV0
aW9uOl57CisgICAgICAgIF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAg
IGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlF
UywgbmlsKTsKKyAgICB9XTsKKyNlbHNlCisgICAgW19hdlBsYXllclZpZXdDb250cm9sbGVyLmdl
dCgpIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOworI2VuZGlmCit9CisKKy0gKHZvaWQpc3RhcnRQaWN0dXJlSW5QaWN0
dXJlIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUCit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9E
RSkKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbHNlCisgICAgX2F2UGxheWVyVmlld0Nv
bnRyb2xsZXIuZ2V0KCkuc3RhcnRQaWN0dXJlSW5QaWN0dXJlOworI2VuZGlmCit9CisKKy0gKHZv
aWQpc3RvcFBpY3R1cmVJblBpY3R1cmUgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKK3sKKyNpZiBF
TkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vsc2UK
KyAgICBbX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkgc3RvcFBpY3R1cmVJblBpY3R1cmVd
OworI2VuZGlmCit9CisKKy0gKEJPT0wpaXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGUKK3sKKyNp
ZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0
dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmlzUGljdHVyZUluUGljdHVyZVBvc3Np
YmxlOworI2VuZGlmCit9CisKKy0gKEJPT0wpaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlCit7Cisj
aWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAgIHJl
dHVybiBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5pc1BpY3R1cmVJblBpY3R1cmVBY3Rp
dmU7CisjZW5kaWYKK30KKworLSAoQk9PTClpc1BpY3R1cmVJblBpY3R1cmVTdXNwZW5kZWQKK3sK
KyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIHJldHVybiBZRVM7CisjZWxzZQorICAg
IHJldHVybiBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5pc1BpY3R1cmVJblBpY3R1cmVT
dXNwZW5kZWQ7CisjZW5kaWYKK30KKworLSAoQk9PTClwaWN0dXJlSW5QaWN0dXJlQWN0aXZlCit7
CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAg
IHJldHVybiBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5waWN0dXJlSW5QaWN0dXJlQWN0
aXZlOworI2VuZGlmCit9CisKKy0gKEJPT0wpcGljdHVyZUluUGljdHVyZVdhc1N0YXJ0ZWRXaGVu
RW50ZXJpbmdCYWNrZ3JvdW5kCit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICBy
ZXR1cm4gTk87CisjZWxzZQorICAgIHJldHVybiBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQo
KS5waWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmQ7CisjZW5k
aWYKK30KKworLSAoVUlWaWV3ICopIHZpZXcKK3sKKyAgICByZXR1cm4gX2F2UGxheWVyVmlld0Nv
bnRyb2xsZXIuZ2V0KCkudmlldzsKK30KKworLSAoQk9PTClzaG93c1BsYXliYWNrQ29udHJvbHMK
K3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIHJldHVybiBZRVM7CisjZWxzZQor
ICAgIHJldHVybiBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5zaG93c1BsYXliYWNrQ29u
dHJvbHM7CisjZW5kaWYKK30KKworLSAodm9pZClzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6KEJP
T0wpc2hvd3NQbGF5YmFja0NvbnRyb2xzCit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkK
KyAgICBVTlVTRURfUEFSQU0oc2hvd3NQbGF5YmFja0NvbnRyb2xzKTsKKyNlbHNlCisgICAgX2F2
UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuc2hvd3NQbGF5YmFja0NvbnRyb2xzID0gc2hvd3NQ
bGF5YmFja0NvbnRyb2xzOworI2VuZGlmCit9CisKKy0gKHZvaWQpc2V0QWxsb3dzUGljdHVyZUlu
UGljdHVyZVBsYXliYWNrOihCT09MKWFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjaworewor
I2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgVU5VU0VEX1BBUkFNKGFsbG93c1BpY3R1
cmVJblBpY3R1cmVQbGF5YmFjayk7CisjZWxzZQorICAgIF9hdlBsYXllclZpZXdDb250cm9sbGVy
LmdldCgpLmFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayA9IGFsbG93c1BpY3R1cmVJblBp
Y3R1cmVQbGF5YmFjazsKKyNlbmRpZgorfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8QVZQ
bGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQoreworI2lmIEVOQUJMRShFWFRS
QV9aT09NX01PREUpCisgICAgQVNTRVJUKCFkZWxlZ2F0ZSB8fCBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihwbGF5ZXJWaWV3Q29udHJvbGxlcjpzaG91bGRFeGl0RnVsbFNj
cmVlbldpdGhSZWFzb246KV0pOworICAgIF9kZWxlZ2F0ZSA9IGlkPEFWUGxheWVyVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZV9XZWJLaXRPbmx5PihkZWxlZ2F0ZSk7CisjZWxzZQorICAgIF9hdlBsYXll
clZpZXdDb250cm9sbGVyLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGU7CisjZW5kaWYKK30KKwor
LSAodm9pZClzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJD
b250cm9sbGVyCit7CisgICAgX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkucGxheWVyQ29u
dHJvbGxlciA9IHBsYXllckNvbnRyb2xsZXI7Cit9CisKKy0gKEFWUGxheWVyVmlld0NvbnRyb2xs
ZXIgKikgYXZQbGF5ZXJWaWV3Q29udHJvbGxlcgoreworICAgIHJldHVybiBfYXZQbGF5ZXJWaWV3
Q29udHJvbGxlci5nZXQoKTsKK30KKworLSAodm9pZClyZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRy
b2xsZXIKK3sKKyAgICBbX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkgcmVtb3ZlRnJvbVBh
cmVudFZpZXdDb250cm9sbGVyXTsKK30KK0BlbmQKKwogUmVmPFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCiB7CiAgICAg
UmVmPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBpbnRlcmZhY2UgPSBhZG9wdFJlZigq
bmV3IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KHBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZSkpOwpAQCAtNjE5LDYgKzgzNiw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywgY29uc3QgSW50CiAgICAgW0NB
VHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25z
OllFU107CiAKKyNpZiAhRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKICAgICBpZiAoIVtbbV9wYXJl
bnRWaWV3IHdpbmRvd10gX2lzSG9zdGVkSW5Bbm90aGVyUHJvY2Vzc10pIHsKICAgICAgICAgaWYg
KCFtX3dpbmRvdykKICAgICAgICAgICAgIG1fd2luZG93ID0gYWRvcHROUyhbYWxsb2NVSVdpbmRv
d0luc3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpbW2dldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVu
XSBib3VuZHNdXSk7CkBAIC02MzEsNiArODQ5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdCBJbnQK
ICAgICAgICAgW21fd2luZG93IHNldFdpbmRvd0xldmVsOmdldFVJVGV4dEVmZmVjdHNCZW5lYXRo
U3RhdHVzQmFyV2luZG93TGV2ZWwoKSArIDFdOwogICAgICAgICBbbV93aW5kb3cgbWFrZUtleUFu
ZFZpc2libGVdOwogICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCFtX3BsYXllckxheWVyVmlldykK
ICAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBhZG9wdE5TKFthbGxvY1dlYkFWUGxheWVyTGF5
ZXJWaWV3SW5zdGFuY2UoKSBpbml0XSk7CkBAIC02NDMsMjkgKzg2MiwzMCBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1Zp
ZXcsIGNvbnN0IEludAogICAgIH0KIAogICAgIFdlYkFWUGxheWVyTGF5ZXIgKnBsYXllckxheWVy
ID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbbV9wbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwot
CiAgICAgW3BsYXllckxheWVyIHNldE1vZGVsVmlkZW9MYXllckZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgbV9pbmxpbmVSZWN0LndpZHRoKCksIG1faW5saW5lUmVjdC5oZWlnaHQoKSldOwogICAgIFtw
bGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6W3BsYXllckNvbnRyb2xsZXIoKSBjb250ZW50
RGltZW5zaW9uc11dOwogICAgIHBsYXllckxheWVyLmZ1bGxzY3JlZW5JbnRlcmZhY2UgPSB0aGlz
OwogCiAgICAgaWYgKCFtX3BsYXllclZpZXdDb250cm9sbGVyKQotICAgICAgICBtX3BsYXllclZp
ZXdDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5zdGFu
Y2UoKSBpbml0V2l0aFBsYXllckxheWVyVmlldzptX3BsYXllckxheWVyVmlldy5nZXQoKV0pOwor
ICAgICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFWUGxheWVyVmll
d0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnVsbHNjcmVlbkludGVyZmFjZTp0aGlzXSk7CiAK
ICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9d
OwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxh
eWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIoKV07CiAgICAgW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgp
XTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJl
UGxheWJhY2s6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwotCiAgICAgW3BsYXll
ckNvbnRyb2xsZXIoKSBzZXRQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU6bV9hbGxvd3NQaWN0dXJl
SW5QaWN0dXJlUGxheWJhY2tdOwogCisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICBt
X3ZpZXdDb250cm9sbGVyID0gbW9kZWwoKS0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRy
b2xsZXIobV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVy
KTsKKyNlbmRpZgorCiAgICAgaWYgKG1fdmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgW21fdmll
d0NvbnRyb2xsZXIgYWRkQ2hpbGRWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVy
LmdldCgpXTsKKyAgICAgICAgW21fdmlld0NvbnRyb2xsZXIgYWRkQ2hpbGRWaWV3Q29udHJvbGxl
cjptX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmF2UGxheWVyVmlld0NvbnRyb2xsZXJdOwog
ICAgICAgICBbW21fdmlld0NvbnRyb2xsZXIgdmlld10gYWRkU3VidmlldzpbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciB2aWV3XV07CiAgICAgfSBlbHNlCiAgICAgICAgIFttX3BhcmVudFZpZXcgYWRk
U3VidmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XV07CiAKICAgICBbbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZpZXcgY29udmVydFJlY3Q6bV9p
bmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXdd
OwotCiAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xv
cjpjbGVhclVJQ29sb3IoKV07CiAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNl
dEF1dG9yZXNpemluZ01hc2s6KFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlQm90dG9tTWFyZ2lu
IHwgVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVSaWdodE1hcmdpbildOwogCkBAIC03MDYsNiAr
OTI2LDI4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyUGljdHVy
ZUluUGljdHVyZSgpCiAgICAgICAgIGZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCk7CiB9
CiAKK3N0YXRpYyBVSVZpZXdDb250cm9sbGVyICpmYWxsYmFja1ZpZXdDb250cm9sbGVyKFVJVmll
dyAqdmlldykKK3sKKyAgICBmb3IgKFVJVmlldyAqY3VycmVudFZpZXcgPSB2aWV3OyBjdXJyZW50
VmlldzsgY3VycmVudFZpZXcgPSBjdXJyZW50Vmlldy5zdXBlcnZpZXcpIHsKKyAgICAgICAgaWYg
KFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyID0gW2dldFVJVmlld0NvbnRyb2xsZXJD
bGFzcygpIHZpZXdDb250cm9sbGVyRm9yVmlldzpjdXJyZW50Vmlld10pIHsKKyAgICAgICAgICAg
IGlmICghW3ZpZXdDb250cm9sbGVyIHBhcmVudFZpZXdDb250cm9sbGVyXSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdmlld0NvbnRyb2xsZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBmaW5kIGEgdmlldyBjb250cm9sbGVyIHN1aXRhYmxlIHRvIHByZXNl
bnQgZnVsbHNjcmVlbiB2aWRlbyIpOworICAgIHJldHVybiBuaWw7Cit9CisKK1VJVmlld0NvbnRy
b2xsZXIgKlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIoKQoreworICAgIGF1dG8gKmNvbnRyb2xsZXIgPSBtb2RlbCgpLT5wcmVzZW50aW5nVmll
d0NvbnRyb2xsZXIoKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIGNvbnRyb2xsZXIg
PSBmYWxsYmFja1ZpZXdDb250cm9sbGVyKG1fcGFyZW50Vmlldy5nZXQoKSk7CisKKyAgICByZXR1
cm4gY29udHJvbGxlcjsKK30KKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCVwKSIsIHRo
aXMpOwpAQCAtMTAxNSw3ICsxMjU3LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFZpZGVvRnVsbHNjcmUKICAgICBC
T09MIGZpbmlzaGVkID0gcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpEb25lQnV0dG9u
VGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6UGluY2hHZXN0dXJlSGFu
ZGxlZDsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmluaXNoZWQp
OwogCi0gICAgaWYgKCFtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkKKyAgICBpZiAoIW1fd2F0
Y2hkb2dUaW1lci5pc0FjdGl2ZSgpICYmICFpZ25vcmVXYXRjaGRvZ0ZvckRlYnVnZ2luZykKICAg
ICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChkZWZhdWx0V2F0Y2hkb2dUaW1lcklu
dGVydmFsKTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMDEsNyArMTU0Myw3IEBAIGJvb2wg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJl
YXNvbihWaWRlb0Z1bGxzY3JlCiAgICAgQk9PTCBmaW5pc2hlZCA9IHJlYXNvbiA9PSBFeGl0RnVs
bFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3Jl
ZW5SZWFzb246OlBpbmNoR2VzdHVyZUhhbmRsZWQ7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZU5vbmUsIGZpbmlzaGVkKTsKIAotICAgIGlmICghbV93YXRjaGRvZ1RpbWVyLmlz
QWN0aXZlKCkpCisgICAgaWYgKCFtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSAmJiAhaWdub3Jl
V2F0Y2hkb2dGb3JEZWJ1Z2dpbmcpCiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNo
b3QoZGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCk7CiAKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMzYwLDYgKzE2MDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpk
b1NldHVwKCkKICAgICB9CiAgICAgbV9zZXR1cE5lZWRzSW5saW5lUmVjdCA9IGZhbHNlOwogCisj
aWYgIUVOQUJMRShFWFRSQV9aT09NX01PREUpCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwog
ICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAgICAgaWYgKCFbW21f
cGFyZW50VmlldyB3aW5kb3ddIF9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3NdICYmICFtX3dpbmRv
dykgewpAQCAtMTM3NCw2ICsxNjE3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6ZG9TZXR1cCgpCiAgICAgICAgIFttX3dpbmRvdyBzZXRXaW5kb3dMZXZlbDpnZXRVSVRl
eHRFZmZlY3RzQmVuZWF0aFN0YXR1c0JhcldpbmRvd0xldmVsKCkgKyAxXTsKICAgICAgICAgW21f
d2luZG93IG1ha2VLZXlBbmRWaXNpYmxlXTsKICAgICB9CisjZW5kaWYKIAogICAgIGlmICghbV9w
bGF5ZXJMYXllclZpZXcpCiAgICAgICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbYWxs
b2NXZWJBVlBsYXllckxheWVyVmlld0luc3RhbmNlKCkgaW5pdF0pOwpAQCAtMTM5MiwyMyArMTYz
NiwyNSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb1NldHVwKCkKICAg
ICBwbGF5ZXJMYXllci5mdWxsc2NyZWVuSW50ZXJmYWNlID0gdGhpczsKIAogICAgIGlmICghbV9w
bGF5ZXJWaWV3Q29udHJvbGxlcikKLSAgICAgICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFk
b3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQbGF5
ZXJMYXllclZpZXc6bV9wbGF5ZXJMYXllclZpZXcuZ2V0KCldKTsKKyAgICAgICAgbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGFsbG9j
XSBpbml0V2l0aEZ1bGxzY3JlZW5JbnRlcmZhY2U6dGhpc10pOwogCiAgICAgW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsKICAgICBbbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilw
bGF5ZXJDb250cm9sbGVyKCldOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVn
YXRlOm1fcGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07CiAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOm1fYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKLQogICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0
UGljdHVyZUluUGljdHVyZVBvc3NpYmxlOm1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNr
XTsKIAorI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgbV92aWV3Q29udHJvbGxlciA9
IG1vZGVsKCktPmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKG1fcGxheWVyVmll
d0NvbnRyb2xsZXIuZ2V0KCkuYXZQbGF5ZXJWaWV3Q29udHJvbGxlcik7CisjZW5kaWYKKwogICAg
IGlmIChtX3ZpZXdDb250cm9sbGVyKSB7Ci0gICAgICAgIFttX3ZpZXdDb250cm9sbGVyIGFkZENo
aWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CisgICAgICAg
IFttX3ZpZXdDb250cm9sbGVyIGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29u
dHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVyXTsKICAgICAgICAgW1ttX3ZpZXdD
b250cm9sbGVyIHZpZXddIGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11d
OwogICAgIH0gZWxzZQogICAgICAgICBbbV9wYXJlbnRWaWV3IGFkZFN1YnZpZXc6W21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgdmlld11dOwogCiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmll
d10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRSZWN0Om1faW5saW5lUmVjdCB0b1ZpZXc6
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKLQogICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCld
OwogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRBdXRvcmVzaXppbmdNYXNr
OihVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZUJvdHRvbU1hcmdpbiB8IFVJVmlld0F1dG9yZXNp
emluZ0ZsZXhpYmxlUmlnaHRNYXJnaW4pXTsKIApAQCAtMTYyOSw3ICsxODc1LDcgQEAgYm9vbCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6aXNQbGF5aW5nVmlkZW9JbkVuaGFuY2VkRnVs
bHNjcmVlbigpIGNvbnN0CiAKIGJvb2wgV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJl
KCkKIHsKLSNpZiBQTEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpCisjaWYgUExBVEZPUk0oSU9T
KSAmJiBIQVZFKEFWS0lUKSAmJiAhRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKICAgICByZXR1cm4g
W2dldEFWUGljdHVyZUluUGljdHVyZUNvbnRyb2xsZXJDbGFzcygpIGlzUGljdHVyZUluUGljdHVy
ZVN1cHBvcnRlZF07CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckFWS2l0Lm1tCmluZGV4IDNjYzk4ZGY4MDMwMjU3NTk2MmJlNjBiNjY5NjMyMmJhNjg3MTg2
YTYuLjA0MDJmZWNlNjk2OWMzODJiYWZkNzVkOWZjY2QzMmViM2UwNzUwMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtODc4LDcgKzg3OCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50
JiB2aWRlb0VsCiAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VP
YnNlcnZlcih0aGlzKTsKIAogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBhZG9wdE5T
KFthbGxvY1VJVmlld0luc3RhbmNlKCkgaW5pdF0pOwotICAgICAgICAKKwogICAgICAgICBtX2lu
dGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3ZpZGVvRnVsbHNjcmVlblZpZXcuZ2V0KCksIHZp
ZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYuZ2V0KCksIG1vZGUsIGFsbG93c1BpY3R1cmVJ
blBpY3R1cmUsIGZhbHNlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXgg
M2NiODFhNzdkNGFhYTM5OTExMjU5OGE3OTk5MWQ2YTY4NWUxMmE0Yy4uMmI2MzYzMmExZjNjNTdh
ZTBjOGZkZGE2NWY4YjQyM2VmMzJmNmYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgKQEAgLTg1
LDYgKzg1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNWaWRl
bzsgfQogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWRlb0RpbWVuc2lvbnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3ZpZGVvRGltZW5zaW9uczsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSBmaW5hbDsKKyAg
ICBVSVZpZXdDb250cm9sbGVyICpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcihB
VlBsYXllclZpZXdDb250cm9sbGVyKikgZmluYWw7CisjZW5kaWYKIAogICAgIC8vIFZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyCiAgICAgdm9pZCByZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDRmZjI3NzQzMWE2Y2M4YTE3
MGUxNzRjY2IwMmQwOTMzNzUwMmNmMTUuLjdiZjI2NTkwN2UyNGU0ODI1Y2Q3NDYxNzA1YmQ2MGFi
ZjFkODM0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9y
dCAiUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgogI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUv
Q29yZUFuaW1hdGlvbi5oPgpAQCAtNDQsOCArNDUsMTEgQEAKICNpZiBQTEFURk9STShJT1MpCiAj
aW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJVSUtp
dFNQSS5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgogI2VuZGlmCiAKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKIEBpbnRlcmZhY2UgV0tMYXllckhvc3RWaWV3IDogUGxh
dGZvcm1WaWV3CiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSB1aW50MzJfdCBjb250ZXh0
SUQ7CiBAZW5kCkBAIC03Nyw2ICs4MSw0OCBAQAogCiBAZW5kCiAKKyNpZiBQTEFURk9STShJT1Mp
CitAaW50ZXJmYWNlIFdLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgOiBVSVZpZXdDb250
cm9sbGVyCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBVlBsYXllclZpZXdDb250cm9sbGVyOihB
VlBsYXllclZpZXdDb250cm9sbGVyICopdmlld0NvbnRyb2xsZXIgTlNfREVTSUdOQVRFRF9JTklU
SUFMSVpFUjsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5pYk5hbWU6KE5TU3RyaW5nICogX051
bGxhYmxlKW5pYk5hbWVPck5pbCBidW5kbGU6KE5TQnVuZGxlICogX051bGxhYmxlKW5pYkJ1bmRs
ZU9yTmlsIE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5T
Q29kZXIgKilhRGVjb2RlciBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5T
X1VOQVZBSUxBQkxFOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tWaWRlb0Z1bGxTY3JlZW5W
aWV3Q29udHJvbGxlciB7CisgICAgV2Vha09iakNQdHI8QVZQbGF5ZXJWaWV3Q29udHJvbGxlcj4g
X2F2UGxheWVyVmlld0NvbnRyb2xsZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEFW
UGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aE5pYk5hbWU6bmlsIGJ1bmRsZTpu
aWxdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9hdlBsYXllclZpZXdDb250cm9sbGVy
ID0gY29udHJvbGxlcjsKKyAgICBzZWxmLm1vZGFsUHJlc2VudGF0aW9uQ2FwdHVyZXNTdGF0dXNC
YXJBcHBlYXJhbmNlID0gWUVTOworICAgIHNlbGYubW9kYWxQcmVzZW50YXRpb25TdHlsZSA9IFVJ
TW9kYWxQcmVzZW50YXRpb25PdmVyRnVsbFNjcmVlbjsKKworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKXZpZXdEaWRMb2FkCit7CisgICAgW3N1cGVyIHZpZXdEaWRMb2FkXTsKKworICAg
IHNlbGYudmlldy5mcmFtZSA9IFVJU2NyZWVuLm1haW5TY3JlZW4uYm91bmRzOworICAgIHNlbGYu
dmlldy5iYWNrZ3JvdW5kQ29sb3IgPSBbVUlDb2xvciBibGFja0NvbG9yXTsKKyAgICBbX2F2UGxh
eWVyVmlld0NvbnRyb2xsZXIgdmlld10uYXV0b3Jlc2l6aW5nTWFzayA9IFVJVmlld0F1dG9yZXNp
emluZ0ZsZXhpYmxlV2lkdGggfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZUhlaWdodDsKK30K
KworLSAoQk9PTClwcmVmZXJzU3RhdHVzQmFySGlkZGVuCit7CisgICAgcmV0dXJuIFlFUzsKK30K
KworQGVuZAorCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTY3LDYgKzIxMywyMSBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6aXNWaXNpYmxlKCkgY29uc3QKICAgICByZXR1cm4gbV9tYW5hZ2VyID8gbV9tYW5h
Z2VyLT5pc1Zpc2libGUoKSA6IGZhbHNlOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorVUlWaWV3
Q29udHJvbGxlciAqVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpwcmVzZW50aW5nVmlld0Nv
bnRyb2xsZXIoKQoreworICAgIGlmIChtX21hbmFnZXIpCisgICAgICAgIHJldHVybiBtX21hbmFn
ZXItPm1fcGFnZS0+dWlDbGllbnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKKworICAg
IHJldHVybiBudWxscHRyOworfQorCitVSVZpZXdDb250cm9sbGVyICpWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ6OmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKEFWUGxheWVy
Vmlld0NvbnRyb2xsZXIgKmF2UGxheWVyVmlld0NvbnRyb2xsZXIpCit7CisgICAgcmV0dXJuIFtb
V0tWaWRlb0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhBVlBsYXllclZp
ZXdDb250cm9sbGVyOmF2UGxheWVyVmlld0NvbnRyb2xsZXJdOworfQorI2VuZGlmCisKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCgpCiB7
CiAgICAgaWYgKG1fbWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNTMzNjFmMjc1ZmM5NmEz
ODQ3ZmI4YmQwYTNkYTI2OTU1OGQ2ZTIyYS4uMjE0MGJkZDE5ZWE1MTI3NjNlMzIxYjQzMjY1MzAw
MmEzZDc1YjFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTQzOSwxMyArNDM5LDE3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCkKICAgICBpbnRlcmZhY2UtPnNldElzQW5pbWF0aW5nKGZhbHNlKTsKICAgICBpbnRlcmZh
Y2UtPnNldElzRnVsbHNjcmVlbihmYWxzZSk7CiAKLSAgICBpZiAoaW50ZXJmYWNlLT50YXJnZXRJ
c0Z1bGxzY3JlZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVmUHRyPEhUTUxWaWRlb0Vs
ZW1lbnQ+IHZpZGVvRWxlbWVudCA9IG1vZGVsLT52aWRlb0VsZW1lbnQoKTsKICAgICBpZiAoIXZp
ZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2
aWRlb0VsZW1lbnRdIHsKKyAgICAgICAgdmlkZW9FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2NyZWVu
RWxlbWVudCgpOworICAgIH0pOworCisgICAgaWYgKGludGVyZmFjZS0+dGFyZ2V0SXNGdWxsc2Ny
ZWVuKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIGV4aXQgZnVsbHNjcmVlbiBub3cgaWYg
aXQgd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVkIGR1cmluZyBhbiBhbmltYXRpb24uCiAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnRdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRo
aXMtPm1fcGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336044</attachid>
            <date>2018-03-19 07:57:20 -0700</date>
            <delta_ts>2018-03-19 10:03:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183742-20180319075719.patch</filename>
            <type>text/plain</type>
            <size>41789</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyM2VjNjUyMzJhYjM2ODQxNGZhMzBi
MGZlOGE4YzA0YmNiYTYxMDIuLjczYmY5MGExNTg3NmFjNWQ0NWZkNDQ3YzRjMmNjYjFkZjc5ZWMx
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDMtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gUmVxdWlyZSBm
dWxsc2NyZWVuIGZvciB2aWRlbyBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODIz
NTg2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE4LTAzLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGRlZmluaW5nIGNvbW1vbmx5LW5hbWVkIHN5
c3RlbSBtYWNyb3Mgb24gYWxsIENvY29hIHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU0ZTk0YjU5
MjI1ZmJmZjM2MzI0NmFjZWEwYzE4NWFjYTBiMjM5MzEuLjJjZGE5NWNiNzIxOThkNTRjMWE5MzIx
NjdiN2Q1ZDMwZTg3Mjg0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxOC0wMy0x
OSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbRXh0
cmEgem9vbSBtb2RlXSBSZXF1aXJlIGZ1bGxzY3JlZW4gZm9yIHZpZGVvIHBsYXliYWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3NDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM4MjM1ODYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWVk
aWEvcGxheWJhY2stc3VwcG9ydC5qczoKKyAgICAgICAgKFBsYXliYWNrU3VwcG9ydC5wcm90b3R5
cGUuc3luY0NvbnRyb2wpOiBBbHdheXMgc2hvdyB0aGUgcGxheSBidXR0b24uCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSk6IFJldHVybiBpbW1lZGlhdGVseSBpZiBwbGF5YmFjayBy
ZXF1aXJlcyBmdWxsc2NyZWVuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpk
aWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6IENhbGwgdXBkYXRlUGxheVN0YXRlIGluIGNhc2Ug
CisgICAgICAgIHBsYXliYWNrIGlzIHBlbmRpbmcuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpwcmVzZW50aW5nVmll
d0NvbnRyb2xsZXIpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIpOiBOZXcuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTW9k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNl
ZWthYmxlUmFuZ2VzQ2hhbmdlZCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW06IFdyYXAgQVZQbGF5ZXJMYXllclZpZXcgc28gd2UgY2Fu
IGNoYW5nZSBpdHMKKyAgICAgICAgYmVoYXZpb3IuCisgICAgICAgIChXZWJBVlBsYXllckxheWVy
Vmlld19wbGF5ZXJMYXllcik6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192aWRlb1Zp
ZXcpOgorICAgICAgICAoYWxsb2NXZWJBVlBsYXllckxheWVyVmlld0luc3RhbmNlKToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBpbml0V2l0aEZ1bGxzY3JlZW5JbnRlcmZh
Y2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgcGxheWVyVmlld0Nv
bnRyb2xsZXJTaG91bGRIYW5kbGVEb25lQnV0dG9uVGFwOl0pOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2Ny
ZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXIgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlRdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJWaWV3Q29udHJvbGxlciBpc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZV0pOgorICAg
ICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGljdHVyZUFjdGl2
ZV0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGlj
dHVyZVN1c3BlbmRlZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHBp
Y3R1cmVJblBpY3R1cmVBY3RpdmVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlciBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgc2hvd3NQbGF5YmFja0NvbnRyb2xzXSk6CisgICAg
ICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xz
Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1
cmVJblBpY3R1cmVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ciBzZXRQbGF5ZXJDb250cm9sbGVyOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250
cm9sbGVyIGF2UGxheWVyVmlld0NvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJW
aWV3Q29udHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdKToKKyAgICAgICAg
KFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAoZmFsbGJhY2tWaWV3Q29udHJvbGxlcik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24pOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXApOgorICAgICAg
ICAoV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKToKKwogMjAxOC0wMy0xOSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBH
Q0MgNC45IGJ1aWxkLWZpeCBhZnRlciByMjI5NjcyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZTdl
ZjM3MzU4NmM0Mzc5MDEwMDZkOGE5MTVjNTg5MDg1NjI5ODM3Yy4uMWNlMmQ0MzMyNjVmMDY2OTcw
NDhhODllZWU2NDMyNGY2YTgxODZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTgtMDMtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gUmVxdWlyZSBmdWxsc2NyZWVuIGZvciB2aWRlbyBw
bGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgzNzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODIzNTg2Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRT
UEkuaDoKKwogMjAxOC0wMy0xNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJBdXRoTl0gSW1wbGVtZW50IGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyNTExMTViY2JjYmEwM2QyMmQxNGZiODBlZTMyNDMyODMzMmUzNWMzLi4y
NWIwMGVkYTAyMWUwN2NlNzU0ZWZiMjU5MWUyZDYxYjFjNTJjNTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDE4LTAzLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFtFeHRyYSB6b29tIG1vZGVdIFJlcXVpcmUgZnVsbHNjcmVlbiBmb3Ig
dmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mzc0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgyMzU4NjI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKC1bV0tWaWRlb0Z1
bGxTY3JlZW5WaWV3Q29udHJvbGxlciBpbml0V2l0aEFWUGxheWVyVmlld0NvbnRyb2xsZXI6XSk6
CisgICAgICAgICgtW1dLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgdmlld0RpZExvYWRd
KToKKyAgICAgICAgKC1bV0tWaWRlb0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciBwcmVmZXJzU3Rh
dHVzQmFySGlkZGVuXSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxz
Y3JlZW4pOgorCiAyMDE4LTAzLTE3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhOXSBJbXBsZW1lbnQgYXV0aGVudGljYXRvck1ha2VDcmVkZW50
aWFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAppbmRleCA1NjY4YTMwNmRkNmMwMjA5MjdjZjM1NmJiN2RlZjIxNzkyNTFj
ZjIwLi43MzVmOGIzZmJkZTJmNWZjMDYyNjhmYTQ4ZDNiM2RhNmNiOTA3NzZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKQEAgLTEwNDIsMTAgKzEwNDIsMTMgQEAKIAogI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAh
UExBVEZPUk0oQVBQTEVUVikgJiYgIUVOQUJMRShNSU5JTUFMX1NJTVVMQVRPUikKICNkZWZpbmUg
RU5BQkxFX0RBVEFfREVURUNUSU9OIDEKLSNkZWZpbmUgSEFWRV9BVktJVCAxCiAjZGVmaW5lIEhB
VkVfUEFSRU5UQUxfQ09OVFJPTFMgMQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oQVBQTEVUVikg
JiYgIUVOQUJMRShNSU5JTUFMX1NJTVVMQVRPUikKKyNkZWZpbmUgSEFWRV9BVktJVCAxCisjZW5k
aWYKKwogI2lmIEVOQUJMRShXRUJHTCkKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFVTRV9P
UEVOR0wgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvbWVkaWEvcGxheWJhY2stc3VwcG9ydC5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL21lZGlhL3BsYXliYWNrLXN1cHBvcnQuanMKaW5kZXgg
NGQ4ZDc3NzExZWY1MWZhNjM0MzhjNzAwZjg5MjQ4OTBlNWVkMTQ0Yi4uZTUwMTg1NTBmZWIyNGM1
NmJjMTdkNGQwMDVlYjk3ODAwM2ViZDFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWVkaWEvcGxheWJhY2stc3VwcG9ydC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9tZWRpYS9wbGF5
YmFjay1zdXBwb3J0LmpzCkBAIC00Nyw5ICs0Nyw5IEBAIGNsYXNzIFBsYXliYWNrU3VwcG9ydCBl
eHRlbmRzIE1lZGlhQ29udHJvbGxlclN1cHBvcnQKICAgICB7CiAgICAgICAgIGNvbnN0IGlzUGF1
c2VkID0gdGhpcy5tZWRpYUNvbnRyb2xsZXIubWVkaWEucGF1c2VkOwogCi0gICAgICAgIC8vIFdl
IGFsd2F5cyBzaG93IHRoZSBwbGF5IGJ1dHRvbiB3aGVuIHRoZSBtZWRpYSBpcyBwYXVzZWQgd2l0
aCBjb21wYWN0IGxheW91dC4KKyAgICAgICAgLy8gV2UgYWx3YXlzIHNob3cgdGhlIHBsYXkgYnV0
dG9uIHdpdGggY29tcGFjdCBsYXlvdXQuCiAgICAgICAgIGlmICh0aGlzLm1lZGlhQ29udHJvbGxl
ci5sYXlvdXRUcmFpdHMgJiBMYXlvdXRUcmFpdHMuQ29tcGFjdCkKLSAgICAgICAgICAgIHRoaXMu
Y29udHJvbC52aXNpYmxlID0gaXNQYXVzZWQ7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2wudmlz
aWJsZSA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuY29udHJvbC5wbGF5
aW5nID0gIWlzUGF1c2VkOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL0FWS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2Nv
YS9BVktpdFNQSS5oCmluZGV4IDQzN2M1NzY2OGJkMmY2NGYwZGJmNjBkY2MxMTIzZjRmODI1OWNi
ZjIuLmYyMThmMDVhZjBiMjkyY2U0NDQ1MjNlZWNlNzg2YTk2NGQ3M2U0NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZLaXRTUEkuaApAQCAtNDEsNiArNDEsNTMgQEAK
ICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9y
dCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5Lmg+CiAKKyNpZiBFTkFC
TEUoRVhUUkFfWk9PTV9NT0RFKQorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXll
ci5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIEFWUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyA6IFVJVmlldworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBBVlBsYXllckxheWVyICpwbGF5ZXJMYXllcjsKK0BlbmQKKworQGludGVyZmFjZSBf
X0FWUGxheWVyTGF5ZXJWaWV3ICAoRGV0YWlscykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXI7CistIChBVlBpY3R1cmVJblBpY3R1cmVQ
bGF5ZXJMYXllclZpZXcqKSBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3OworLSAodm9p
ZClzdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldzsKKy0g
KHZvaWQpc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldzsK
K0BlbmQKKworQGNsYXNzIEFWUGxheWVyTGF5ZXJWaWV3OworQGludGVyZmFjZSBBVlBsYXllclZp
ZXdDb250cm9sbGVyIChBVlBsYXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHlfSW50ZXJuYWwp
CistICh2b2lkKWVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKiBfX251bGxhYmxlIGVy
cm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDoo
Qk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzLCBO
U0Vycm9yICogX19udWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXN0
YXJ0UGljdHVyZUluUGljdHVyZTsKKy0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7CisKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3dzRXhpdEZ1bGxTY3JlZW5CdXR0b247CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVQb3Nz
aWJsZSkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUpIEJPT0wgcGljdHVy
ZUluUGljdHVyZUFjdGl2ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVy
PWlzUGljdHVyZUluUGljdHVyZVN1c3BlbmRlZCkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlU3VzcGVu
ZGVkOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHBpY3R1cmVJblBpY3R1
cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZDsKK0BlbmQKKworQHByb3RvY29sIEFW
UGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZV9XZWJLaXRPbmx5IDxBVlBsYXllclZpZXdDb250
cm9sbGVyRGVsZWdhdGU+CitAb3B0aW9uYWwKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFW
UGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbikgeworICAgIEFWUGxheWVy
Vmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbkRvbmVCdXR0b25UYXBwZWQsCisgICAg
QVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVhc29uRnVsbFNjcmVlbkJ1dHRv
blRhcHBlZCwKKyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25Q
aW5jaEdlc3R1cmVIYW5kbGVkLAorICAgIEFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNj
cmVlblJlYXNvblJlbW90ZUNvbnRyb2xTdG9wRXZlbnRSZWNlaXZlZCwKKyAgICBBVlBsYXllclZp
ZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25QaWN0dXJlSW5QaWN0dXJlU3RhcnRlZAor
fTsKKy0gKEJPT0wpcGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIg
KilwbGF5ZXJWaWV3Q29udHJvbGxlciBzaG91bGRFeGl0RnVsbFNjcmVlbldpdGhSZWFzb246KEFW
UGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbilyZWFzb247CitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKKwogI2Vsc2UKIAogQGludGVyZmFjZSBB
VlBsYXllckNvbnRyb2xsZXIgOiBVSVJlc3BvbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggZjAwYzQzNzg1MzY1NGFiNjM3MWM1MTg5MmYyN2Y0Y2QyZGU2
OTIzNi4uMzM0MjI3NzMzYTVhZWY1ZDhiMmUwNzc2OGQwYTA4OTNhNTI3ZDQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01MjY0LDggKzUyNjQsMTIgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoVXBkYXRlU3RhdGUgdXBkYXRl
U3RhdGUpCiAgICAgICAgIGlmIChwbGF5ZXJQYXVzZWQpIHsKICAgICAgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOwogCi0gICAgICAgICAgICBpZiAobV9t
ZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKnRoaXMpICYm
ICFpc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+cmVxdWly
ZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygqdGhpcykgJiYgIWlzRnVsbHNjcmVlbigpKSB7
CiAgICAgICAgICAgICAgICAgZW50ZXJGdWxsc2NyZWVuKCk7CisjaWYgRU5BQkxFKEVYVFJBX1pP
T01fTU9ERSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gU2V0IHJhdGUsIG11dGVkIGJlZm9yZSBjYWxsaW5nIHBsYXkgaW4g
Y2FzZSB0aGV5IHdlcmUgc2V0IGJlZm9yZSB0aGUgbWVkaWEgZW5naW5lIHdhcyBzZXR1cC4KICAg
ICAgICAgICAgIC8vIFRoZSBtZWRpYSBlbmdpbmUgc2hvdWxkIGp1c3Qgc3Rhc2ggdGhlIHJhdGUg
YW5kIG11dGVkIHZhbHVlcyBzaW5jZSBpdCBpc24ndCBhbHJlYWR5IHBsYXlpbmcuCkBAIC01OTY3
LDYgKzU5NzEsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW50KCkKIHsKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNv
bnRyb2xzKCktPmVudGVyZWRGdWxsc2NyZWVuKCk7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9E
RSkKKyAgICB1cGRhdGVQbGF5U3RhdGUoVXBkYXRlU3RhdGU6OkFzeW5jaHJvbm91c2x5KTsKKyNl
bmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTdG9wQmVpbmdGdWxsc2NyZWVu
RWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGZjODFk
YzJmMGZiN2EwYWRiZjllM2JjYjUwYWU2NWIwNTIxNGVkYTcuLjQ3ODI1NGY4NTk3ODgzMTQyMjlk
NzE2OGNkNjE3YjkyOWI2ZjIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC01NTMsNiArNTUzLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1N1c3BlbmRlZCgp
IGNvbnN0IGZpbmFsOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRCZWNvbWVGdWxsc2Ny
ZWVuRWxlbWVudCgpIG92ZXJyaWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEluaXRpYWxpemF0aW9uKCk7CkBAIC02MDMsNyArNjA1
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIC8v
IEFjdGl2ZURPTU9iamVjdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAppbmRleCAzODdmNzUzMzkxZGEyMDEwNzk2NGE2
MTUxNDcxNzg5OTFjOWI2MWNhLi5kYTUyMTc1MDc0NzA2ZGVmMWYzZGI1MGM0MmYxMTZjMDYwOWI0
NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1vZGVsLmgKQEAgLTMyLDYgKzMyLDExIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudEVudW1zLmgiCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKIAorI2lmIFBM
QVRGT1JNKElPUykKK09CSkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xB
U1MgVUlWaWV3Q29udHJvbGxlcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OwpAQCAtNTEsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBG
bG9hdFNpemUgdmlkZW9EaW1lbnNpb25zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNWaWRlbygpIGNvbnN0ID0gMDsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFVJ
Vmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICB2aXJ0dWFsIFVJVmlld0NvbnRyb2xsZXIgKmNyZWF0ZVZpZGVvRnVsbHNjcmVl
blZpZXdDb250cm9sbGVyKEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKikgeyByZXR1cm4gbnVsbHB0
cjsgfQorI2VuZGlmCiB9OwogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA5NjZlOTdhMDVjYmM4NGE2ZDA1YmI0NjczMjU5N2Yx
ZTg5NmYyNzYyLi42NzVkY2Y0MzAzZjRhYTI5ZmQ3MTE0NGFiMDQ5NGZkNTUwMzQyMzY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIoKQogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllciht
X3ZpZGVvTGF5ZXIuZ2V0KCksIGRlZmF1bHRTaXplKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1MpICYmICFFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIGlmIChbbV92
aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6
KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KHBsYXllcigpLT5m
dWxsc2NyZWVuTW9kZSgpICYgTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlKV07CiAjZW5kaWYKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpICYmICFFTkFCTEUoRVhU
UkFfWk9PTV9NT0RFKQogICAgIGlmIChbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0
UElQTW9kZUVuYWJsZWQ6KG1vZGUgJiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZVBp
Y3R1cmVJblBpY3R1cmUpXTsKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGUzN2EyZWFjNTdkMTFjMzRhZjhmZTNjMTQwOWMw
MDk2NmFiMGY0Y2QuLjBhMzY5NWE3MGI1ODJhZGU3NGQwYzRkM2M5YzNjNWU5MmExOWQzMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KQEAgLTEyOCw2ICsxMjgsNyBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJh
bmdlcyYgdGltZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gc2Vla2FibGVSYW5n
ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAorI2lmICFFTkFC
TEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFu
Z2VzLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5z
dGFydChpKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVS
YW5nZXMuZW5kKGkpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwpAQCAtMTM1LDYgKzEzNiw5IEBAIHZv
aWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChj
b25zdCBUaW1lUmFuZ2VzJiB0aW1lCiAgICAgICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1l
UmFuZ2VNYWtlKENNVGltZU1ha2VXaXRoU2Vjb25kcyhzdGFydCwgMTAwMCksIENNVGltZU1ha2VX
aXRoU2Vjb25kcyhlbmQtc3RhcnQsIDEwMDApKTsKICAgICAgICAgW3NlZWthYmxlUmFuZ2VzIGFk
ZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5nZV1dOwogICAgIH0KKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHRpbWVSYW5nZXMpOworI2VuZGlmCiAKICAgICBbbV9wbGF5
ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJsZVJhbmdlcy5nZXQoKV07
CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRTZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZp
ZWRUaW1lOiBsYXN0TW9kaWZpZWRUaW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggNTJm
OGExMmIzZDQ3YTRjMTUyMjgxNTY4NmU4MTdiMGVhMWZlYTVlZi4uZTExZmMyNTAzYWQ5YWViMmMy
ZDhlM2VkZTZlMGZiZTRmNThmZjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAs
NiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogCi1PQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJVmll
d0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93OwogT0JKQ19DTEFTUyBVSVZpZXc7CkBA
IC00OCw2ICs0Nyw3IEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5
ZXJDb250cm9sbGVyOwogT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKIE9CSkNfQ0xB
U1MgV2ViQVZQbGF5ZXJMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxl
cjsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlOwogT0JKQ19D
TEFTUyBOU0Vycm9yOwogCkBAIC0xNTcsNiArMTU3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
ZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAg
IGJvb2wgaGFzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50TW9kZS5oYXNNb2RlKG1vZGUpOyB9CiAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyKCk7CisgICAgVUlWaWV3Q29udHJvbGxlciAqZnVsbHNjcmVlblZpZXdDb250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gbV92aWV3Q29udHJvbGxlci5nZXQoKTsgfQorICAgIFdlYkFWUGxh
eWVyTGF5ZXJWaWV3KiBwbGF5ZXJMYXllclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3BsYXllckxh
eWVyVmlldy5nZXQoKTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9S
VCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdChQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdCYpOwogCkBAIC0xNzUsNyArMTgxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmPFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKICAg
ICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3BsYXllclZp
ZXdDb250cm9sbGVyRGVsZWdhdGU7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xs
ZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyVmll
d0NvbnRyb2xsZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CiAgICAgVmlkZW9GdWxsc2NyZWVu
TW9kZWwqIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxscHRyIH07CiAgICAgVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0
ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggMDNlZmJkZTIzZjNhNzJjYWZlZGFl
NTQ0ZWM4MjNjNzY5NjI2ZGYyZC4uN2VkYzgxY2IzYzM2MjgwYTY2YzA3ODVjMzI3NTdlYThhMGQ4
MjQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw5ICs0MCwxMSBAQAogI2lt
cG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZU
aW1lLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8VUlLaXQvVUlXaW5kb3cu
aD4KICNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9V
SUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05Myw2ICs5NSwx
MiBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICNlbmRpZgogCiBz
dGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsIHsgMV9zIH07
CitzdGF0aWMgYm9vbCBpZ25vcmVXYXRjaGRvZ0ZvckRlYnVnZ2luZyA9IGZhbHNlOworCitAaW50
ZXJmYWNlIEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKERldGFpbHMpCitAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBzaG93c1BsYXliYWNrQ29udHJvbHM7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
VUlWaWV3KiB2aWV3OworQGVuZAogCiBAY2xhc3MgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
IApAQCAtNDEyLDEwICs0MjAsMjMgQEAgc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdf
c2V0UGxheWVyQ29udHJvbGxlcihpZCBhU2VsZiwgU0VMLCBBVlBsYXllckNvbnQKICAgICBbd2Vi
QVZQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOiBwbGF5ZXJDb250cm9sbGVyXTsKIH0K
IAorc3RhdGljIEFWUGxheWVyTGF5ZXIgKldlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXllckxheWVy
KGlkIGFTZWxmLCBTRUwpCit7CisgICAgX19BVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJW
aWV3ID0gYVNlbGY7CisKKyAgICBpZiAoW2dldF9fQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGlu
c3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwbGF5ZXJMYXllcildKSB7CisgICAg
ICAgIG9iamNfc3VwZXIgc3VwZXJDbGFzcyB7IHBsYXllckxheWVyVmlldywgZ2V0X19BVlBsYXll
ckxheWVyVmlld0NsYXNzKCkgfTsKKyAgICAgICAgYXV0byBzdXBlckNsYXNzTWV0aG9kID0gcmVp
bnRlcnByZXRfY2FzdDxBVlBsYXllckxheWVyICooKikob2JqY19zdXBlciAqLCBTRUwpPihvYmpj
X21zZ1NlbmRTdXBlcik7CisgICAgICAgIHJldHVybiBzdXBlckNsYXNzTWV0aG9kKCZzdXBlckNs
YXNzLCBAc2VsZWN0b3IocGxheWVyTGF5ZXIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gKEFWUGxh
eWVyTGF5ZXIgKilbcGxheWVyTGF5ZXJWaWV3IGxheWVyXTsKK30KKwogc3RhdGljIFVJVmlldyAq
V2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KGlkIGFTZWxmLCBTRUwpCiB7Ci0gICAgX19B
VlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKLSAgICBXZWJBVlBsYXllckxh
eWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIg
cGxheWVyTGF5ZXJdOworICAgIF9fQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9
IGFTZWxmOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQ
bGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwogICAgIENBTGF5ZXIq
IHZpZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1YmxheWVyXTsKICAgICBpZiAo
IXZpZGVvTGF5ZXIgfHwgIXZpZGVvTGF5ZXIuZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7
CkBAIC00ODYsMTIgKzUwNywxNCBAQCBzdGF0aWMgV2ViQVZQbGF5ZXJMYXllclZpZXcgKmFsbG9j
V2ViQVZQbGF5ZXJMYXllclZpZXdJbnN0YW5jZSgpCiAgICAgc3RhdGljIENsYXNzIHRoZUNsYXNz
ID0gbmlsOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgQVNTRVJUKGdldF9fQVZQbGF5ZXJMYXll
clZpZXdDbGFzcygpKTsKICAgICAgICAgdGhlQ2xhc3MgPSBvYmpjX2FsbG9jYXRlQ2xhc3NQYWly
KGdldF9fQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZpZXciLCAw
KTsKICAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYyks
IChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYywgInZAOiIpOwogICAgICAgICBjbGFz
c19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiksIChJ
TVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsKICAg
ICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IocGxheWVyQ29udHJvbGxl
ciksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlciwgIkBAOiIpOwog
ICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRWaWRlb1ZpZXc6
KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1ZpZXcsICJ2QDpAIik7CiAgICAg
ICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHZpZGVvVmlldyksIChJTVAp
V2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3LCAiQEA6Iik7CisgICAgICAgIGNsYXNzX2Fk
ZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHBsYXllckxheWVyKSwgKElNUClXZWJBVlBsYXll
ckxheWVyVmlld19wbGF5ZXJMYXllciwgIkBAOiIpOwogICAgICAgICBjbGFzc19hZGRNZXRob2Qo
dGhlQ2xhc3MsIEBzZWxlY3RvcihzdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBs
YXllckxheWVyVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlk
ZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJ2QDoiKTsKICAgICAgICAgY2xh
c3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc3Rv
cFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywgInZAOiIpOwog
ICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihwaWN0dXJlSW5QaWN0
dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19waWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3LCAiQEA6Iik7CkBAIC01MDUsNiArNTI4LDE5MSBAQCBzdGF0
aWMgV2ViQVZQbGF5ZXJMYXllclZpZXcgKmFsbG9jV2ViQVZQbGF5ZXJMYXllclZpZXdJbnN0YW5j
ZSgpCiAgICAgcmV0dXJuIChXZWJBVlBsYXllckxheWVyVmlldyAqKVt0aGVDbGFzcyBhbGxvY107
CiB9CiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCitAaW50ZXJmYWNlIFdlYkFWUGxheWVyVmll
d0NvbnRyb2xsZXIgOiBOU09iamVjdDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOihWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdCAqKWludGVyZmFjZTsKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuQW5p
bWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZXhpdEZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzdGFydFBp
Y3R1cmVJblBpY3R1cmU7CistICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlOworCistIChCT09M
KXBsYXllclZpZXdDb250cm9sbGVyU2hvdWxkSGFuZGxlRG9uZUJ1dHRvblRhcDooQVZQbGF5ZXJW
aWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyOworQGVuZAorTlNfQVNTVU1FX05P
Tk5VTExfRU5ECisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHsK
KyAgICBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCAqX2Z1bGxzY3JlZW5JbnRlcmZhY2U7
CisgICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+IF9wcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXI7CisgICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xsZXI+IF9hdlBsYXllclZpZXdD
b250cm9sbGVyOworICAgIGlkPEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZV9XZWJLaXRP
bmx5PiBfZGVsZWdhdGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZ1bGxzY3JlZW5J
bnRlcmZhY2U6KFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0ICopaW50ZXJmYWNlCit7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBfZnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKKyAgICBfYXZQbGF5ZXJWaWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlckluc3RhbmNlKCkg
aW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6aW50ZXJmYWNlLT5wbGF5ZXJMYXllclZpZXcoKV0pOwor
I2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgX2F2UGxheWVyVmlld0NvbnRyb2xsZXIu
Z2V0KCkuZGVsZWdhdGUgPSBzZWxmOworI2VuZGlmCisKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAoQk9PTClwbGF5ZXJWaWV3Q29udHJvbGxlclNob3VsZEhhbmRsZURvbmVCdXR0b25UYXA6KEFW
UGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlcgoreworICAgIEFTU0VS
VChwbGF5ZXJWaWV3Q29udHJvbGxlciA9PSBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSk7
CisgICAgaWYgKF9kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIFtfZGVsZWdhdGUgcGxheWVyVmll
d0NvbnRyb2xsZXI6cGxheWVyVmlld0NvbnRyb2xsZXIgc2hvdWxkRXhpdEZ1bGxTY3JlZW5XaXRo
UmVhc29uOkFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbkRvbmVCdXR0
b25UYXBwZWRdOworCisgICAgcmV0dXJuIFlFUzsKK30KKworLSAodm9pZCllbnRlckZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICogX19udWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIF9wcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIgPSBfZnVsbHNjcmVlbkludGVyZmFjZS0+cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7
CisKKyAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lID0gX3ByZXNl
bnRpbmdWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lOworICAgIFtfcHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpfZnVsbHNjcmVlbkludGVyZmFjZS0+
ZnVsbHNjcmVlblZpZXdDb250cm9sbGVyKCkgYW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbjpe
eworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihZRVMsIG5pbCk7CisgICAgfV07CisjZWxzZQorICAgIFtfYXZQbGF5ZXJWaWV3Q29u
dHJvbGxlci5nZXQoKSBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDphbmltYXRlZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisjZW5kaWYKK30KKworLSAodm9pZClleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKiBfX251bGxhYmxlIGVycm9yKSljb21wbGV0aW9uSGFu
ZGxlcgoreworI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgaWYgKCFfcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBbX3ByZXNlbnRpbmdWaWV3
Q29udHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDphbmltYXRlZCBjb21wbGV0
aW9uOl57CisgICAgICAgIF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAg
IGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlF
UywgbmlsKTsKKyAgICB9XTsKKyNlbHNlCisgICAgW19hdlBsYXllclZpZXdDb250cm9sbGVyLmdl
dCgpIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOworI2VuZGlmCit9CisKKy0gKHZvaWQpc3RhcnRQaWN0dXJlSW5QaWN0
dXJlIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUCit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9E
RSkKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbHNlCisgICAgW19hdlBsYXllclZpZXdD
b250cm9sbGVyLmdldCgpIHN0YXJ0UGljdHVyZUluUGljdHVyZV07CisjZW5kaWYKK30KKworLSAo
dm9pZClzdG9wUGljdHVyZUluUGljdHVyZSBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVAoreworI2lm
IEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZWxz
ZQorICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSBzdG9wUGljdHVyZUluUGljdHVy
ZV07CisjZW5kaWYKK30KKworLSAoQk9PTClpc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZQorewor
I2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgcmV0dXJuIE5POworI2Vsc2UKKyAgICBy
ZXR1cm4gX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuaXNQaWN0dXJlSW5QaWN0dXJlUG9z
c2libGU7CisjZW5kaWYKK30KKworLSAoQk9PTClpc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUKK3sK
KyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAg
cmV0dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmlzUGljdHVyZUluUGljdHVyZUFj
dGl2ZTsKKyNlbmRpZgorfQorCistIChCT09MKXBpY3R1cmVJblBpY3R1cmVBY3RpdmUKK3sKKyNp
ZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0
dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLnBpY3R1cmVJblBpY3R1cmVBY3RpdmU7
CisjZW5kaWYKK30KKworLSAoQk9PTClwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRl
cmluZ0JhY2tncm91bmQKK3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIHJldHVy
biBOTzsKKyNlbHNlCisgICAgcmV0dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLnBp
Y3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZDsKKyNlbmRpZgor
fQorCistIChVSVZpZXcgKikgdmlldworeworICAgIHJldHVybiBfYXZQbGF5ZXJWaWV3Q29udHJv
bGxlci5nZXQoKS52aWV3OworfQorCistIChCT09MKXNob3dzUGxheWJhY2tDb250cm9scworewor
I2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgcmV0dXJuIFlFUzsKKyNlbHNlCisgICAg
cmV0dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLnNob3dzUGxheWJhY2tDb250cm9s
czsKKyNlbmRpZgorfQorCistICh2b2lkKXNldFNob3dzUGxheWJhY2tDb250cm9sczooQk9PTClz
aG93c1BsYXliYWNrQ29udHJvbHMKK3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAg
IFVOVVNFRF9QQVJBTShzaG93c1BsYXliYWNrQ29udHJvbHMpOworI2Vsc2UKKyAgICBfYXZQbGF5
ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5zaG93c1BsYXliYWNrQ29udHJvbHMgPSBzaG93c1BsYXli
YWNrQ29udHJvbHM7CisjZW5kaWYKK30KKworLSAodm9pZClzZXRBbGxvd3NQaWN0dXJlSW5QaWN0
dXJlUGxheWJhY2s6KEJPT0wpYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrCit7CisjaWYg
RU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICBVTlVTRURfUEFSQU0oYWxsb3dzUGljdHVyZUlu
UGljdHVyZVBsYXliYWNrKTsKKyNlbHNlCisgICAgX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0
KCkuYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrID0gYWxsb3dzUGljdHVyZUluUGljdHVy
ZVBsYXliYWNrOworI2VuZGlmCit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxBVlBsYXll
clZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCit7CisjaWYgRU5BQkxFKEVYVFJBX1pP
T01fTU9ERSkKKyAgICBBU1NFUlQoIWRlbGVnYXRlIHx8IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHBsYXllclZpZXdDb250cm9sbGVyOnNob3VsZEV4aXRGdWxsU2NyZWVu
V2l0aFJlYXNvbjopXSk7CisgICAgX2RlbGVnYXRlID0gaWQ8QVZQbGF5ZXJWaWV3Q29udHJvbGxl
ckRlbGVnYXRlX1dlYktpdE9ubHk+KGRlbGVnYXRlKTsKKyNlbHNlCisgICAgX2F2UGxheWVyVmll
d0NvbnRyb2xsZXIuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyNlbmRpZgorfQorCistICh2
b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRy
b2xsZXIKK3sKKyAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5wbGF5ZXJDb250cm9s
bGVyID0gcGxheWVyQ29udHJvbGxlcjsKK30KKworLSAoQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAq
KSBhdlBsYXllclZpZXdDb250cm9sbGVyCit7CisgICAgcmV0dXJuIF9hdlBsYXllclZpZXdDb250
cm9sbGVyLmdldCgpOworfQorCistICh2b2lkKXJlbW92ZUZyb21QYXJlbnRWaWV3Q29udHJvbGxl
cgoreworICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSByZW1vdmVGcm9tUGFyZW50
Vmlld0NvbnRyb2xsZXJdOworfQorQGVuZAorCiBSZWY8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ+IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKIHsKICAgICBSZWY8
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IGludGVyZmFjZSA9IGFkb3B0UmVmKCpuZXcg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKSk7
CkBAIC02MTksNiArODI3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdCBJbnQKICAgICBbQ0FUcmFu
c2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVT
XTsKIAorI2lmICFFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIGlmICghW1ttX3BhcmVudFZp
ZXcgd2luZG93XSBfaXNIb3N0ZWRJbkFub3RoZXJQcm9jZXNzXSkgewogICAgICAgICBpZiAoIW1f
d2luZG93KQogICAgICAgICAgICAgbV93aW5kb3cgPSBhZG9wdE5TKFthbGxvY1VJV2luZG93SW5z
dGFuY2UoKSBpbml0V2l0aEZyYW1lOltbZ2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dIGJv
dW5kc11dKTsKQEAgLTYzMSw2ICs4NDAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0IEludAogICAg
ICAgICBbbV93aW5kb3cgc2V0V2luZG93TGV2ZWw6Z2V0VUlUZXh0RWZmZWN0c0JlbmVhdGhTdGF0
dXNCYXJXaW5kb3dMZXZlbCgpICsgMV07CiAgICAgICAgIFttX3dpbmRvdyBtYWtlS2V5QW5kVmlz
aWJsZV07CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAoIW1fcGxheWVyTGF5ZXJWaWV3KQogICAg
ICAgICBtX3BsYXllckxheWVyVmlldyA9IGFkb3B0TlMoW2FsbG9jV2ViQVZQbGF5ZXJMYXllclZp
ZXdJbnN0YW5jZSgpIGluaXRdKTsKQEAgLTY0MywyOSArODUzLDMwIEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywg
Y29uc3QgSW50CiAgICAgfQogCiAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAo
V2ViQVZQbGF5ZXJMYXllciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07Ci0KICAg
ICBbcGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBt
X2lubGluZVJlY3Qud2lkdGgoKSwgbV9pbmxpbmVSZWN0LmhlaWdodCgpKV07CiAgICAgW3BsYXll
ckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbcGxheWVyQ29udHJvbGxlcigpIGNvbnRlbnREaW1l
bnNpb25zXV07CiAgICAgcGxheWVyTGF5ZXIuZnVsbHNjcmVlbkludGVyZmFjZSA9IHRoaXM7CiAK
ICAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCi0gICAgICAgIG1fcGxheWVyVmlld0Nv
bnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgp
IGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgpXSk7CisgICAg
ICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlciBhbGxvY10gaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNdKTsKIAogICAg
IFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpOT107CiAg
ICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjooQVZQbGF5ZXJD
b250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcigpXTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXREZWxlZ2F0ZTptX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwog
ICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5
YmFjazptX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107Ci0KICAgICBbcGxheWVyQ29u
dHJvbGxlcigpIHNldFBpY3R1cmVJblBpY3R1cmVQb3NzaWJsZTptX2FsbG93c1BpY3R1cmVJblBp
Y3R1cmVQbGF5YmFja107CiAKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIG1fdmll
d0NvbnRyb2xsZXIgPSBtb2RlbCgpLT5jcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxl
cihtX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmF2UGxheWVyVmlld0NvbnRyb2xsZXIpOwor
I2VuZGlmCisKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikgewotICAgICAgICBbbV92aWV3Q29u
dHJvbGxlciBhZGRDaGlsZFZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0
KCldOworICAgICAgICBbbV92aWV3Q29udHJvbGxlciBhZGRDaGlsZFZpZXdDb250cm9sbGVyOm1f
cGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuYXZQbGF5ZXJWaWV3Q29udHJvbGxlcl07CiAgICAg
ICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250
cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKICAgICAgICAgW21fcGFyZW50VmlldyBhZGRTdWJ2
aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKIAogICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVjdDptX2lubGlu
ZVJlY3QgdG9WaWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLnN1cGVydmlld107Ci0K
ICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOmNs
ZWFyVUlDb2xvcigpXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QXV0
b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0b21NYXJnaW4gfCBV
SVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CiAKQEAgLTcwNiw2ICs5MTcs
MjggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJQaWN0dXJlSW5Q
aWN0dXJlKCkKICAgICAgICAgZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAor
c3RhdGljIFVJVmlld0NvbnRyb2xsZXIgKmZhbGxiYWNrVmlld0NvbnRyb2xsZXIoVUlWaWV3ICp2
aWV3KQoreworICAgIGZvciAoVUlWaWV3ICpjdXJyZW50VmlldyA9IHZpZXc7IGN1cnJlbnRWaWV3
OyBjdXJyZW50VmlldyA9IGN1cnJlbnRWaWV3LnN1cGVydmlldykgeworICAgICAgICBpZiAoVUlW
aWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIgPSBbZ2V0VUlWaWV3Q29udHJvbGxlckNsYXNz
KCkgdmlld0NvbnRyb2xsZXJGb3JWaWV3OmN1cnJlbnRWaWV3XSkgeworICAgICAgICAgICAgaWYg
KCFbdmlld0NvbnRyb2xsZXIgcGFyZW50Vmlld0NvbnRyb2xsZXJdKQorICAgICAgICAgICAgICAg
IHJldHVybiB2aWV3Q29udHJvbGxlcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGZpbmQgYSB2aWV3IGNvbnRyb2xsZXIgc3VpdGFibGUgdG8gcHJlc2VudCBm
dWxsc2NyZWVuIHZpZGVvIik7CisgICAgcmV0dXJuIG5pbDsKK30KKworVUlWaWV3Q29udHJvbGxl
ciAqVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXNlbnRpbmdWaWV3Q29udHJvbGxl
cigpCit7CisgICAgYXV0byAqY29udHJvbGxlciA9IG1vZGVsKCktPnByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlcigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgY29udHJvbGxlciA9IGZh
bGxiYWNrVmlld0NvbnRyb2xsZXIobV9wYXJlbnRWaWV3LmdldCgpKTsKKworICAgIHJldHVybiBj
b250cm9sbGVyOworfQorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRl
ckZ1bGxzY3JlZW5TdGFuZGFyZCgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoJXApIiwgdGhpcyk7
CkBAIC0xMDE1LDcgKzEyNDgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24oVmlkZW9GdWxsc2NyZQogICAgIEJPT0wg
ZmluaXNoZWQgPSByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OkRvbmVCdXR0b25UYXBw
ZWQgfHwgcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpQaW5jaEdlc3R1cmVIYW5kbGVk
OwogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCBmaW5pc2hlZCk7CiAK
LSAgICBpZiAoIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKQorICAgIGlmICghbV93YXRjaGRv
Z1RpbWVyLmlzQWN0aXZlKCkgJiYgIWlnbm9yZVdhdGNoZG9nRm9yRGVidWdnaW5nKQogICAgICAg
ICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGRlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2
YWwpOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMwMSw3ICsxNTM0LDcgQEAgYm9vbCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29u
KFZpZGVvRnVsbHNjcmUKICAgICBCT09MIGZpbmlzaGVkID0gcmVhc29uID09IEV4aXRGdWxsU2Ny
ZWVuUmVhc29uOjpEb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJl
YXNvbjo6UGluY2hHZXN0dXJlSGFuZGxlZDsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5y
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSwgZmluaXNoZWQpOwogCi0gICAgaWYgKCFtX3dhdGNoZG9nVGltZXIuaXNBY3Rp
dmUoKSkKKyAgICBpZiAoIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpICYmICFpZ25vcmVXYXRj
aGRvZ0ZvckRlYnVnZ2luZykKICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChk
ZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsKTsKIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTEz
NjAsNiArMTU5Myw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0
dXAoKQogICAgIH0KICAgICBtX3NldHVwTmVlZHNJbmxpbmVSZWN0ID0gZmFsc2U7CiAKKyNpZiAh
RU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAg
W0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKICAgICBpZiAoIVtbbV9wYXJl
bnRWaWV3IHdpbmRvd10gX2lzSG9zdGVkSW5Bbm90aGVyUHJvY2Vzc10gJiYgIW1fd2luZG93KSB7
CkBAIC0xMzc0LDYgKzE2MDgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Ojpkb1NldHVwKCkKICAgICAgICAgW21fd2luZG93IHNldFdpbmRvd0xldmVsOmdldFVJVGV4dEVm
ZmVjdHNCZW5lYXRoU3RhdHVzQmFyV2luZG93TGV2ZWwoKSArIDFdOwogICAgICAgICBbbV93aW5k
b3cgbWFrZUtleUFuZFZpc2libGVdOwogICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCFtX3BsYXll
ckxheWVyVmlldykKICAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBhZG9wdE5TKFthbGxvY1dl
YkFWUGxheWVyTGF5ZXJWaWV3SW5zdGFuY2UoKSBpbml0XSk7CkBAIC0xMzkyLDIzICsxNjI3LDI1
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXAoKQogICAgIHBs
YXllckxheWVyLmZ1bGxzY3JlZW5JbnRlcmZhY2UgPSB0aGlzOwogCiAgICAgaWYgKCFtX3BsYXll
clZpZXdDb250cm9sbGVyKQotICAgICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHRO
UyhbYWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBsYXllckxh
eWVyVmlldzptX3BsYXllckxheWVyVmlldy5nZXQoKV0pOworICAgICAgICBtX3BsYXllclZpZXdD
b250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGlu
aXRXaXRoRnVsbHNjcmVlbkludGVyZmFjZTp0aGlzXSk7CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwogICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXll
ckNvbnRyb2xsZXIoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6
bV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsKICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s6bV9hbGxvd3NQaWN0
dXJlSW5QaWN0dXJlUGxheWJhY2tdOwotCiAgICAgW3BsYXllckNvbnRyb2xsZXIoKSBzZXRQaWN0
dXJlSW5QaWN0dXJlUG9zc2libGU6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwog
CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICBtX3ZpZXdDb250cm9sbGVyID0gbW9k
ZWwoKS0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIobV9wbGF5ZXJWaWV3Q29u
dHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVyKTsKKyNlbmRpZgorCiAgICAgaWYg
KG1fdmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgW21fdmlld0NvbnRyb2xsZXIgYWRkQ2hpbGRW
aWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpXTsKKyAgICAgICAgW21f
dmlld0NvbnRyb2xsZXIgYWRkQ2hpbGRWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9s
bGVyLmdldCgpLmF2UGxheWVyVmlld0NvbnRyb2xsZXJdOwogICAgICAgICBbW21fdmlld0NvbnRy
b2xsZXIgdmlld10gYWRkU3VidmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XV07CiAg
ICAgfSBlbHNlCiAgICAgICAgIFttX3BhcmVudFZpZXcgYWRkU3VidmlldzpbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciB2aWV3XV07CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5m
cmFtZSA9IFttX3BhcmVudFZpZXcgY29udmVydFJlY3Q6bV9pbmxpbmVSZWN0IHRvVmlldzpbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwotCiAgICAgW1ttX3BsYXllclZp
ZXdDb250cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJQ29sb3IoKV07CiAg
ICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEF1dG9yZXNpemluZ01hc2s6KFVJ
Vmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlQm90dG9tTWFyZ2luIHwgVUlWaWV3QXV0b3Jlc2l6aW5n
RmxleGlibGVSaWdodE1hcmdpbildOwogCkBAIC0xNjI5LDcgKzE4NjYsNyBAQCBib29sIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5jZWRGdWxsc2Ny
ZWVuKCkgY29uc3QKIAogYm9vbCBXZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUoKQog
ewotI2lmIFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkKKyNpZiBQTEFURk9STShJT1MpICYm
IEhBVkUoQVZLSVQpICYmICFFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIHJldHVybiBbZ2V0
QVZQaWN0dXJlSW5QaWN0dXJlQ29udHJvbGxlckNsYXNzKCkgaXNQaWN0dXJlSW5QaWN0dXJlU3Vw
cG9ydGVkXTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
QVZLaXQubW0KaW5kZXggM2NjOThkZjgwMzAyNTc1OTYyYmU2MGI2Njk2MzIyYmE2ODcxODZhNi4u
MDQwMmZlY2U2OTY5YzM4MmJhZmQ3NWQ5ZmNjZDMyZWIzZTA3NTAwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktp
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tCkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1lbnQmIHZp
ZGVvRWwKICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKHRoaXMpOwogCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuVmlldyA9IGFkb3B0TlMoW2Fs
bG9jVUlWaWV3SW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgICAgIAorCiAgICAgICAgIG1faW50ZXJm
YWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQoKSwgdmlkZW9F
bGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGlj
dHVyZSwgZmFsc2UpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAzY2I4
MWE3N2Q0YWFhMzk5MTEyNTk4YTc5OTkxZDZhNjg1ZTEyYTRjLi4yYjYzNjMyYTFmM2M1N2FlMGM4
ZmRkYTY1ZjhiNDIzZWYzMmY2ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtODUsNiAr
ODUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9
CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fdmlkZW9EaW1lbnNpb25zOyB9CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFVJ
Vmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIGZpbmFsOworICAgIFVJ
Vmlld0NvbnRyb2xsZXIgKmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKEFWUGxh
eWVyVmlld0NvbnRyb2xsZXIqKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgLy8gVmlkZW9GdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXIKICAgICB2b2lkIHJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNGZmMjc3NDMxYTZjYzhhMTcwZTE3
NGNjYjAyZDA5MzM3NTAyY2YxNS4uN2JmMjY1OTA3ZTI0ZTQ4MjVjZDc0NjE3MDViZDYwYWJmMWQ4
MzQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5TWVz
c2FnZXMuaCIKKyNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHku
aCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3Jl
QW5pbWF0aW9uLmg+CkBAIC00NCw4ICs0NSwxMSBAQAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBv
cnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlVJS2l0U1BJ
LmgiCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CiAjZW5kaWYKIAordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKwogQGludGVyZmFjZSBXS0xheWVySG9zdFZpZXcgOiBQbGF0Zm9y
bVZpZXcKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIHVpbnQzMl90IGNvbnRleHRJRDsK
IEBlbmQKQEAgLTc3LDYgKzgxLDQ4IEBACiAKIEBlbmQKIAorI2lmIFBMQVRGT1JNKElPUykKK0Bp
bnRlcmZhY2UgV0tWaWRlb0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciA6IFVJVmlld0NvbnRyb2xs
ZXIKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEFWUGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxh
eWVyVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlciBOU19ERVNJR05BVEVEX0lOSVRJQUxJ
WkVSOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmliTmFtZTooTlNTdHJpbmcgKiBfTnVsbGFi
bGUpbmliTmFtZU9yTmlsIGJ1bmRsZTooTlNCdW5kbGUgKiBfTnVsbGFibGUpbmliQnVuZGxlT3JO
aWwgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2Rl
ciAqKWFEZWNvZGVyIE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5B
VkFJTEFCTEU7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1ZpZGVvRnVsbFNjcmVlblZpZXdD
b250cm9sbGVyIHsKKyAgICBXZWFrT2JqQ1B0cjxBVlBsYXllclZpZXdDb250cm9sbGVyPiBfYXZQ
bGF5ZXJWaWV3Q29udHJvbGxlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQVZQbGF5
ZXJWaWV3Q29udHJvbGxlcjooQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sK
KyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoTmliTmFtZTpuaWwgYnVuZGxlOm5pbF0p
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2F2UGxheWVyVmlld0NvbnRyb2xsZXIgPSBj
b250cm9sbGVyOworICAgIHNlbGYubW9kYWxQcmVzZW50YXRpb25DYXB0dXJlc1N0YXR1c0JhckFw
cGVhcmFuY2UgPSBZRVM7CisgICAgc2VsZi5tb2RhbFByZXNlbnRhdGlvblN0eWxlID0gVUlNb2Rh
bFByZXNlbnRhdGlvbk92ZXJGdWxsU2NyZWVuOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpdmlld0RpZExvYWQKK3sKKyAgICBbc3VwZXIgdmlld0RpZExvYWRdOworCisgICAgc2Vs
Zi52aWV3LmZyYW1lID0gVUlTY3JlZW4ubWFpblNjcmVlbi5ib3VuZHM7CisgICAgc2VsZi52aWV3
LmJhY2tncm91bmRDb2xvciA9IFtVSUNvbG9yIGJsYWNrQ29sb3JdOworICAgIFtfYXZQbGF5ZXJW
aWV3Q29udHJvbGxlciB2aWV3XS5hdXRvcmVzaXppbmdNYXNrID0gVUlWaWV3QXV0b3Jlc2l6aW5n
RmxleGlibGVXaWR0aCB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0OworfQorCist
IChCT09MKXByZWZlcnNTdGF0dXNCYXJIaWRkZW4KK3sKKyAgICByZXR1cm4gWUVTOworfQorCitA
ZW5kCisKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xNjcsNiArMjEzLDIxIEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250
ZXh0Ojppc1Zpc2libGUoKSBjb25zdAogICAgIHJldHVybiBtX21hbmFnZXIgPyBtX21hbmFnZXIt
PmlzVmlzaWJsZSgpIDogZmFsc2U7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitVSVZpZXdDb250
cm9sbGVyICpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcigpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuIG1fbWFuYWdlci0+
bV9wYWdlLT51aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOworCisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK1VJVmlld0NvbnRyb2xsZXIgKlZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIoQVZQbGF5ZXJWaWV3
Q29udHJvbGxlciAqYXZQbGF5ZXJWaWV3Q29udHJvbGxlcikKK3sKKyAgICByZXR1cm4gW1tXS1Zp
ZGVvRnVsbFNjcmVlblZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFWUGxheWVyVmlld0Nv
bnRyb2xsZXI6YXZQbGF5ZXJWaWV3Q29udHJvbGxlcl07Cit9CisjZW5kaWYKKwogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KCkKIHsKICAg
ICBpZiAobV9tYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA1MzM2MWYyNzVmYzk2YTM4NDdm
YjhiZDBhM2RhMjY5NTU4ZDZlMjJhLi4yMTQwYmRkMTllYTUxMjc2M2UzMjFiNDMyNjUzMDAyYTNk
NzViMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtNDM5LDEzICs0MzksMTcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElk
KQogICAgIGludGVyZmFjZS0+c2V0SXNBbmltYXRpbmcoZmFsc2UpOwogICAgIGludGVyZmFjZS0+
c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKIAotICAgIGlmIChpbnRlcmZhY2UtPnRhcmdldElzRnVs
bHNjcmVlbigpKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVu
dD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIGlmICghdmlkZW9F
bGVtZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVv
RWxlbWVudF0geworICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVt
ZW50KCk7CisgICAgfSk7CisKKyAgICBpZiAoaW50ZXJmYWNlLT50YXJnZXRJc0Z1bGxzY3JlZW4o
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gZXhpdCBmdWxsc2NyZWVuIG5vdyBpZiBpdCB3
YXMgcHJldmlvdXNseSByZXF1ZXN0ZWQgZHVyaW5nIGFuIGFuaW1hdGlvbi4KICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+
bV9wYWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336049</attachid>
            <date>2018-03-19 10:03:39 -0700</date>
            <delta_ts>2018-03-19 11:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183742-20180319100338.patch</filename>
            <type>text/plain</type>
            <size>41881</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyM2VjNjUyMzJhYjM2ODQxNGZhMzBi
MGZlOGE4YzA0YmNiYTYxMDIuLjczYmY5MGExNTg3NmFjNWQ0NWZkNDQ3YzRjMmNjYjFkZjc5ZWMx
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDMtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gUmVxdWlyZSBm
dWxsc2NyZWVuIGZvciB2aWRlbyBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODIz
NTg2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE4LTAzLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGRlZmluaW5nIGNvbW1vbmx5LW5hbWVkIHN5
c3RlbSBtYWNyb3Mgb24gYWxsIENvY29hIHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU0ZTk0YjU5
MjI1ZmJmZjM2MzI0NmFjZWEwYzE4NWFjYTBiMjM5MzEuLjJjZGE5NWNiNzIxOThkNTRjMWE5MzIx
NjdiN2Q1ZDMwZTg3Mjg0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxOC0wMy0x
OSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbRXh0
cmEgem9vbSBtb2RlXSBSZXF1aXJlIGZ1bGxzY3JlZW4gZm9yIHZpZGVvIHBsYXliYWNrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3NDIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM4MjM1ODYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWVk
aWEvcGxheWJhY2stc3VwcG9ydC5qczoKKyAgICAgICAgKFBsYXliYWNrU3VwcG9ydC5wcm90b3R5
cGUuc3luY0NvbnRyb2wpOiBBbHdheXMgc2hvdyB0aGUgcGxheSBidXR0b24uCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSk6IFJldHVybiBpbW1lZGlhdGVseSBpZiBwbGF5YmFjayBy
ZXF1aXJlcyBmdWxsc2NyZWVuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpk
aWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6IENhbGwgdXBkYXRlUGxheVN0YXRlIGluIGNhc2Ug
CisgICAgICAgIHBsYXliYWNrIGlzIHBlbmRpbmcuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpwcmVzZW50aW5nVmll
d0NvbnRyb2xsZXIpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIpOiBOZXcuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTW9k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNl
ZWthYmxlUmFuZ2VzQ2hhbmdlZCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW06IFdyYXAgQVZQbGF5ZXJMYXllclZpZXcgc28gd2UgY2Fu
IGNoYW5nZSBpdHMKKyAgICAgICAgYmVoYXZpb3IuCisgICAgICAgIChXZWJBVlBsYXllckxheWVy
Vmlld19wbGF5ZXJMYXllcik6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192aWRlb1Zp
ZXcpOgorICAgICAgICAoYWxsb2NXZWJBVlBsYXllckxheWVyVmlld0luc3RhbmNlKToKKyAgICAg
ICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBpbml0V2l0aEZ1bGxzY3JlZW5JbnRlcmZh
Y2U6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgcGxheWVyVmlld0Nv
bnRyb2xsZXJTaG91bGRIYW5kbGVEb25lQnV0dG9uVGFwOl0pOgorICAgICAgICAoLVtXZWJBVlBs
YXllclZpZXdDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2Ny
ZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXIgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlRdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJWaWV3Q29udHJvbGxlciBpc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZV0pOgorICAg
ICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGljdHVyZUFjdGl2
ZV0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGlj
dHVyZVN1c3BlbmRlZF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHBp
Y3R1cmVJblBpY3R1cmVBY3RpdmVdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlciBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRdKToK
KyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSk6CisgICAgICAgICgt
W1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgc2hvd3NQbGF5YmFja0NvbnRyb2xzXSk6CisgICAg
ICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xz
Ol0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1
cmVJblBpY3R1cmVQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxl
ciBzZXRQbGF5ZXJDb250cm9sbGVyOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250
cm9sbGVyIGF2UGxheWVyVmlld0NvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJW
aWV3Q29udHJvbGxlciByZW1vdmVGcm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdKToKKyAgICAgICAg
KFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4pOgorICAgICAg
ICAoZmFsbGJhY2tWaWV3Q29udHJvbGxlcik6CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24pOgor
ICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXApOgorICAgICAg
ICAoV2ViQ29yZTo6c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKToKKwogMjAxOC0wMy0xOSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBH
Q0MgNC45IGJ1aWxkLWZpeCBhZnRlciByMjI5NjcyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZTdl
ZjM3MzU4NmM0Mzc5MDEwMDZkOGE5MTVjNTg5MDg1NjI5ODM3Yy4uMWNlMmQ0MzMyNjVmMDY2OTcw
NDhhODllZWU2NDMyNGY2YTgxODZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTgtMDMtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gUmVxdWlyZSBmdWxsc2NyZWVuIGZvciB2aWRlbyBw
bGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgzNzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODIzNTg2Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRT
UEkuaDoKKwogMjAxOC0wMy0xNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJBdXRoTl0gSW1wbGVtZW50IGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyNTExMTViY2JjYmEwM2QyMmQxNGZiODBlZTMyNDMyODMzMmUzNWMzLi4y
NWIwMGVkYTAyMWUwN2NlNzU0ZWZiMjU5MWUyZDYxYjFjNTJjNTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDE4LTAzLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFtFeHRyYSB6b29tIG1vZGVdIFJlcXVpcmUgZnVsbHNjcmVlbiBmb3Ig
dmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mzc0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgyMzU4NjI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKC1bV0tWaWRlb0Z1
bGxTY3JlZW5WaWV3Q29udHJvbGxlciBpbml0V2l0aEFWUGxheWVyVmlld0NvbnRyb2xsZXI6XSk6
CisgICAgICAgICgtW1dLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgdmlld0RpZExvYWRd
KToKKyAgICAgICAgKC1bV0tWaWRlb0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciBwcmVmZXJzU3Rh
dHVzQmFySGlkZGVuXSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29u
dGV4dDo6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
dWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxl
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxz
Y3JlZW4pOgorCiAyMDE4LTAzLTE3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhOXSBJbXBsZW1lbnQgYXV0aGVudGljYXRvck1ha2VDcmVkZW50
aWFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAppbmRleCA1NjY4YTMwNmRkNmMwMjA5MjdjZjM1NmJiN2RlZjIxNzkyNTFj
ZjIwLi43MzVmOGIzZmJkZTJmNWZjMDYyNjhmYTQ4ZDNiM2RhNmNiOTA3NzZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKQEAgLTEwNDIsMTAgKzEwNDIsMTMgQEAKIAogI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAh
UExBVEZPUk0oQVBQTEVUVikgJiYgIUVOQUJMRShNSU5JTUFMX1NJTVVMQVRPUikKICNkZWZpbmUg
RU5BQkxFX0RBVEFfREVURUNUSU9OIDEKLSNkZWZpbmUgSEFWRV9BVktJVCAxCiAjZGVmaW5lIEhB
VkVfUEFSRU5UQUxfQ09OVFJPTFMgMQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oQVBQTEVUVikg
JiYgIUVOQUJMRShNSU5JTUFMX1NJTVVMQVRPUikKKyNkZWZpbmUgSEFWRV9BVktJVCAxCisjZW5k
aWYKKwogI2lmIEVOQUJMRShXRUJHTCkKICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFVTRV9P
UEVOR0wgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEt
Y29udHJvbHMvbWVkaWEvcGxheWJhY2stc3VwcG9ydC5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL21lZGlhL3BsYXliYWNrLXN1cHBvcnQuanMKaW5kZXgg
NGQ4ZDc3NzExZWY1MWZhNjM0MzhjNzAwZjg5MjQ4OTBlNWVkMTQ0Yi4uZTUwMTg1NTBmZWIyNGM1
NmJjMTdkNGQwMDVlYjk3ODAwM2ViZDFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWVkaWEvcGxheWJhY2stc3VwcG9ydC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9tZWRpYS9wbGF5
YmFjay1zdXBwb3J0LmpzCkBAIC00Nyw5ICs0Nyw5IEBAIGNsYXNzIFBsYXliYWNrU3VwcG9ydCBl
eHRlbmRzIE1lZGlhQ29udHJvbGxlclN1cHBvcnQKICAgICB7CiAgICAgICAgIGNvbnN0IGlzUGF1
c2VkID0gdGhpcy5tZWRpYUNvbnRyb2xsZXIubWVkaWEucGF1c2VkOwogCi0gICAgICAgIC8vIFdl
IGFsd2F5cyBzaG93IHRoZSBwbGF5IGJ1dHRvbiB3aGVuIHRoZSBtZWRpYSBpcyBwYXVzZWQgd2l0
aCBjb21wYWN0IGxheW91dC4KKyAgICAgICAgLy8gV2UgYWx3YXlzIHNob3cgdGhlIHBsYXkgYnV0
dG9uIHdpdGggY29tcGFjdCBsYXlvdXQuCiAgICAgICAgIGlmICh0aGlzLm1lZGlhQ29udHJvbGxl
ci5sYXlvdXRUcmFpdHMgJiBMYXlvdXRUcmFpdHMuQ29tcGFjdCkKLSAgICAgICAgICAgIHRoaXMu
Y29udHJvbC52aXNpYmxlID0gaXNQYXVzZWQ7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2wudmlz
aWJsZSA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuY29udHJvbC5wbGF5
aW5nID0gIWlzUGF1c2VkOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL0FWS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2Nv
YS9BVktpdFNQSS5oCmluZGV4IDQzN2M1NzY2OGJkMmY2NGYwZGJmNjBkY2MxMTIzZjRmODI1OWNi
ZjIuLmYyMThmMDVhZjBiMjkyY2U0NDQ1MjNlZWNlNzg2YTk2NGQ3M2U0NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWS2l0U1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZLaXRTUEkuaApAQCAtNDEsNiArNDEsNTMgQEAK
ICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9y
dCA8QVZLaXQvQVZQbGF5ZXJWaWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5Lmg+CiAKKyNpZiBFTkFC
TEUoRVhUUkFfWk9PTV9NT0RFKQorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJMYXll
ci5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIEFWUGljdHVyZUlu
UGljdHVyZVBsYXllckxheWVyVmlldyA6IFVJVmlldworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBBVlBsYXllckxheWVyICpwbGF5ZXJMYXllcjsKK0BlbmQKKworQGludGVyZmFjZSBf
X0FWUGxheWVyTGF5ZXJWaWV3ICAoRGV0YWlscykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXI7CistIChBVlBpY3R1cmVJblBpY3R1cmVQ
bGF5ZXJMYXllclZpZXcqKSBwaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3OworLSAodm9p
ZClzdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldzsKKy0g
KHZvaWQpc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldzsK
K0BlbmQKKworQGNsYXNzIEFWUGxheWVyTGF5ZXJWaWV3OworQGludGVyZmFjZSBBVlBsYXllclZp
ZXdDb250cm9sbGVyIChBVlBsYXllclZpZXdDb250cm9sbGVyX1dlYktpdE9ubHlfSW50ZXJuYWwp
CistICh2b2lkKWVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKiBfX251bGxhYmxlIGVy
cm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDoo
Qk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzLCBO
U0Vycm9yICogX19udWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKXN0
YXJ0UGljdHVyZUluUGljdHVyZTsKKy0gKHZvaWQpc3RvcFBpY3R1cmVJblBpY3R1cmU7CisKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3dzRXhpdEZ1bGxTY3JlZW5CdXR0b247CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVQb3Nz
aWJsZSkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlUG9zc2libGU7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUpIEJPT0wgcGljdHVy
ZUluUGljdHVyZUFjdGl2ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVy
PWlzUGljdHVyZUluUGljdHVyZVN1c3BlbmRlZCkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlU3VzcGVu
ZGVkOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHBpY3R1cmVJblBpY3R1
cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZDsKK0BlbmQKKworQHByb3RvY29sIEFW
UGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZV9XZWJLaXRPbmx5IDxBVlBsYXllclZpZXdDb250
cm9sbGVyRGVsZWdhdGU+CitAb3B0aW9uYWwKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFW
UGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbikgeworICAgIEFWUGxheWVy
Vmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbkRvbmVCdXR0b25UYXBwZWQsCisgICAg
QVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVhc29uRnVsbFNjcmVlbkJ1dHRv
blRhcHBlZCwKKyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25Q
aW5jaEdlc3R1cmVIYW5kbGVkLAorICAgIEFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNj
cmVlblJlYXNvblJlbW90ZUNvbnRyb2xTdG9wRXZlbnRSZWNlaXZlZCwKKyAgICBBVlBsYXllclZp
ZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25QaWN0dXJlSW5QaWN0dXJlU3RhcnRlZAor
fTsKKy0gKEJPT0wpcGxheWVyVmlld0NvbnRyb2xsZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIg
KilwbGF5ZXJWaWV3Q29udHJvbGxlciBzaG91bGRFeGl0RnVsbFNjcmVlbldpdGhSZWFzb246KEFW
UGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbilyZWFzb247CitAZW5kCisK
K05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKKwogI2Vsc2UKIAogQGludGVyZmFjZSBB
VlBsYXllckNvbnRyb2xsZXIgOiBVSVJlc3BvbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggZjAwYzQzNzg1MzY1NGFiNjM3MWM1MTg5MmYyN2Y0Y2QyZGU2
OTIzNi4uMzM0MjI3NzMzYTVhZWY1ZDhiMmUwNzc2OGQwYTA4OTNhNTI3ZDQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01MjY0LDggKzUyNjQsMTIgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoVXBkYXRlU3RhdGUgdXBkYXRl
U3RhdGUpCiAgICAgICAgIGlmIChwbGF5ZXJQYXVzZWQpIHsKICAgICAgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOwogCi0gICAgICAgICAgICBpZiAobV9t
ZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKnRoaXMpICYm
ICFpc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+cmVxdWly
ZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygqdGhpcykgJiYgIWlzRnVsbHNjcmVlbigpKSB7
CiAgICAgICAgICAgICAgICAgZW50ZXJGdWxsc2NyZWVuKCk7CisjaWYgRU5BQkxFKEVYVFJBX1pP
T01fTU9ERSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gU2V0IHJhdGUsIG11dGVkIGJlZm9yZSBjYWxsaW5nIHBsYXkgaW4g
Y2FzZSB0aGV5IHdlcmUgc2V0IGJlZm9yZSB0aGUgbWVkaWEgZW5naW5lIHdhcyBzZXR1cC4KICAg
ICAgICAgICAgIC8vIFRoZSBtZWRpYSBlbmdpbmUgc2hvdWxkIGp1c3Qgc3Rhc2ggdGhlIHJhdGUg
YW5kIG11dGVkIHZhbHVlcyBzaW5jZSBpdCBpc24ndCBhbHJlYWR5IHBsYXlpbmcuCkBAIC01OTY3
LDYgKzU5NzEsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW50KCkKIHsKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNv
bnRyb2xzKCktPmVudGVyZWRGdWxsc2NyZWVuKCk7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9E
RSkKKyAgICB1cGRhdGVQbGF5U3RhdGUoVXBkYXRlU3RhdGU6OkFzeW5jaHJvbm91c2x5KTsKKyNl
bmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTdG9wQmVpbmdGdWxsc2NyZWVu
RWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGZjODFk
YzJmMGZiN2EwYWRiZjllM2JjYjUwYWU2NWIwNTIxNGVkYTcuLjQ3ODI1NGY4NTk3ODgzMTQyMjlk
NzE2OGNkNjE3YjkyOWI2ZjIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC01NTMsNiArNTUzLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1N1c3BlbmRlZCgp
IGNvbnN0IGZpbmFsOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRCZWNvbWVGdWxsc2Ny
ZWVuRWxlbWVudCgpIG92ZXJyaWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEluaXRpYWxpemF0aW9uKCk7CkBAIC02MDMsNyArNjA1
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCB3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIC8v
IEFjdGl2ZURPTU9iamVjdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAppbmRleCAzODdmNzUzMzkxZGEyMDEwNzk2NGE2
MTUxNDcxNzg5OTFjOWI2MWNhLi5kYTUyMTc1MDc0NzA2ZGVmMWYzZGI1MGM0MmYxMTZjMDYwOWI0
NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1vZGVsLmgKQEAgLTMyLDYgKzMyLDExIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudEVudW1zLmgiCiAjaW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKIAorI2lmIFBM
QVRGT1JNKElPUykKK09CSkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKK09CSkNfQ0xB
U1MgVUlWaWV3Q29udHJvbGxlcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OwpAQCAtNTEsNiArNTYsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBG
bG9hdFNpemUgdmlkZW9EaW1lbnNpb25zKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNWaWRlbygpIGNvbnN0ID0gMDsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFVJ
Vmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICB2aXJ0dWFsIFVJVmlld0NvbnRyb2xsZXIgKmNyZWF0ZVZpZGVvRnVsbHNjcmVl
blZpZXdDb250cm9sbGVyKEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKikgeyByZXR1cm4gbnVsbHB0
cjsgfQorI2VuZGlmCiB9OwogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA5NjZlOTdhMDVjYmM4NGE2ZDA1YmI0NjczMjU5N2Yx
ZTg5NmYyNzYyLi42NzVkY2Y0MzAzZjRhYTI5ZmQ3MTE0NGFiMDQ5NGZkNTUwMzQyMzY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyTGF5ZXIoKQogI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKICAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllciht
X3ZpZGVvTGF5ZXIuZ2V0KCksIGRlZmF1bHRTaXplKTsKIAotI2lmIFBMQVRGT1JNKElPUykKKyNp
ZiBQTEFURk9STShJT1MpICYmICFFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIGlmIChbbV92
aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6
KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0UElQTW9kZUVuYWJsZWQ6KHBsYXllcigpLT5m
dWxsc2NyZWVuTW9kZSgpICYgTWVkaWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlKV07CiAjZW5kaWYKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0
VmlkZW9GdWxsc2NyZWVuTW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KQogewotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpICYmICFFTkFCTEUoRVhU
UkFfWk9PTV9NT0RFKQogICAgIGlmIChbbV92aWRlb0xheWVyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0UElQTW9kZUVuYWJsZWQ6KV0pCiAgICAgICAgIFttX3ZpZGVvTGF5ZXIgc2V0
UElQTW9kZUVuYWJsZWQ6KG1vZGUgJiBNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZVBp
Y3R1cmVJblBpY3R1cmUpXTsKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGUzN2EyZWFjNTdkMTFjMzRhZjhmZTNjMTQwOWMw
MDk2NmFiMGY0Y2QuLjBhMzY5NWE3MGI1ODJhZGU3NGQwYzRkM2M5YzNjNWU5MmExOWQzMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KQEAgLTEyOCw2ICsxMjgsNyBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJh
bmdlcyYgdGltZQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gc2Vla2FibGVSYW5n
ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAorI2lmICFFTkFC
TEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aW1lUmFu
Z2VzLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy5z
dGFydChpKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVS
YW5nZXMuZW5kKGkpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwpAQCAtMTM1LDYgKzEzNiw5IEBAIHZv
aWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChj
b25zdCBUaW1lUmFuZ2VzJiB0aW1lCiAgICAgICAgIENNVGltZVJhbmdlIHJhbmdlID0gQ01UaW1l
UmFuZ2VNYWtlKENNVGltZU1ha2VXaXRoU2Vjb25kcyhzdGFydCwgMTAwMCksIENNVGltZU1ha2VX
aXRoU2Vjb25kcyhlbmQtc3RhcnQsIDEwMDApKTsKICAgICAgICAgW3NlZWthYmxlUmFuZ2VzIGFk
ZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWVSYW5nZTpyYW5nZV1dOwogICAgIH0KKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHRpbWVSYW5nZXMpOworI2VuZGlmCiAKICAgICBbbV9wbGF5
ZXJDb250cm9sbGVyIHNldFNlZWthYmxlVGltZVJhbmdlczpzZWVrYWJsZVJhbmdlcy5nZXQoKV07
CiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRTZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZp
ZWRUaW1lOiBsYXN0TW9kaWZpZWRUaW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKaW5kZXggNTJm
OGExMmIzZDQ3YTRjMTUyMjgxNTY4NmU4MTdiMGVhMWZlYTVlZi4uZTExZmMyNTAzYWQ5YWViMmMy
ZDhlM2VkZTZlMGZiZTRmNThmZjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyArNDAs
NiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogCi1PQkpDX0NMQVNTIEFWUGxheWVyVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJVmll
d0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFVJV2luZG93OwogT0JKQ19DTEFTUyBVSVZpZXc7CkBA
IC00OCw2ICs0Nyw3IEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5
ZXJDb250cm9sbGVyOwogT0JKQ19DTEFTUyBXZWJBVlBsYXllckxheWVyVmlldzsKIE9CSkNfQ0xB
U1MgV2ViQVZQbGF5ZXJMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxl
cjsKIE9CSkNfQ0xBU1MgV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlOwogT0JKQ19D
TEFTUyBOU0Vycm9yOwogCkBAIC0xNTcsNiArMTU3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
ZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwogICAg
IGJvb2wgaGFzTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
bW9kZSkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50TW9kZS5oYXNNb2RlKG1vZGUpOyB9CiAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyKCk7CisgICAgVUlWaWV3Q29udHJvbGxlciAqZnVsbHNjcmVlblZpZXdDb250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gbV92aWV3Q29udHJvbGxlci5nZXQoKTsgfQorICAgIFdlYkFWUGxh
eWVyTGF5ZXJWaWV3KiBwbGF5ZXJMYXllclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3BsYXllckxh
eWVyVmlldy5nZXQoKTsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9S
VCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdChQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdCYpOwogCkBAIC0xNzUsNyArMTgxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVmPFBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKICAg
ICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3BsYXllclZp
ZXdDb250cm9sbGVyRGVsZWdhdGU7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xs
ZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyVmll
d0NvbnRyb2xsZXI+IG1fcGxheWVyVmlld0NvbnRyb2xsZXI7CiAgICAgVmlkZW9GdWxsc2NyZWVu
TW9kZWwqIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgeyBudWxscHRyIH07CiAgICAgVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0
ciB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggMDNlZmJkZTIzZjNhNzJjYWZlZGFl
NTQ0ZWM4MjNjNzY5NjI2ZGYyZC4uNWU5OWMxZjNiNTIwNmRhZTk0ZjFkYjQ5NWQxOTFjZTY0YjNk
NDJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw5ICs0MCwxMSBAQAogI2lt
cG9ydCAiV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZU
aW1lLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8VUlLaXQvVUlXaW5kb3cu
aD4KICNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9V
SUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC05Myw2ICs5NSwx
MiBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKICNlbmRpZgogCiBz
dGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsIHsgMV9zIH07
CitzdGF0aWMgYm9vbCBpZ25vcmVXYXRjaGRvZ0ZvckRlYnVnZ2luZyA9IGZhbHNlOworCitAaW50
ZXJmYWNlIEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKERldGFpbHMpCitAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBzaG93c1BsYXliYWNrQ29udHJvbHM7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
VUlWaWV3KiB2aWV3OworQGVuZAogCiBAY2xhc3MgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
IApAQCAtNDEyLDEwICs0MjAsMjMgQEAgc3RhdGljIHZvaWQgV2ViQVZQbGF5ZXJMYXllclZpZXdf
c2V0UGxheWVyQ29udHJvbGxlcihpZCBhU2VsZiwgU0VMLCBBVlBsYXllckNvbnQKICAgICBbd2Vi
QVZQbGF5ZXJMYXllciBzZXRQbGF5ZXJDb250cm9sbGVyOiBwbGF5ZXJDb250cm9sbGVyXTsKIH0K
IAorc3RhdGljIEFWUGxheWVyTGF5ZXIgKldlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXllckxheWVy
KGlkIGFTZWxmLCBTRUwpCit7CisgICAgX19BVlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXJW
aWV3ID0gYVNlbGY7CisKKyAgICBpZiAoW2dldF9fQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIGlu
c3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwbGF5ZXJMYXllcildKSB7CisgICAg
ICAgIG9iamNfc3VwZXIgc3VwZXJDbGFzcyB7IHBsYXllckxheWVyVmlldywgZ2V0X19BVlBsYXll
ckxheWVyVmlld0NsYXNzKCkgfTsKKyAgICAgICAgYXV0byBzdXBlckNsYXNzTWV0aG9kID0gcmVp
bnRlcnByZXRfY2FzdDxBVlBsYXllckxheWVyICooKikob2JqY19zdXBlciAqLCBTRUwpPihvYmpj
X21zZ1NlbmRTdXBlcik7CisgICAgICAgIHJldHVybiBzdXBlckNsYXNzTWV0aG9kKCZzdXBlckNs
YXNzLCBAc2VsZWN0b3IocGxheWVyTGF5ZXIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gKEFWUGxh
eWVyTGF5ZXIgKilbcGxheWVyTGF5ZXJWaWV3IGxheWVyXTsKK30KKwogc3RhdGljIFVJVmlldyAq
V2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3KGlkIGFTZWxmLCBTRUwpCiB7Ci0gICAgX19B
VlBsYXllckxheWVyVmlldyAqcGxheWVyTGF5ZXIgPSBhU2VsZjsKLSAgICBXZWJBVlBsYXllckxh
eWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXIg
cGxheWVyTGF5ZXJdOworICAgIF9fQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9
IGFTZWxmOworICAgIFdlYkFWUGxheWVyTGF5ZXIgKndlYkFWUGxheWVyTGF5ZXIgPSAoV2ViQVZQ
bGF5ZXJMYXllciAqKVtwbGF5ZXJMYXllclZpZXcgcGxheWVyTGF5ZXJdOwogICAgIENBTGF5ZXIq
IHZpZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1YmxheWVyXTsKICAgICBpZiAo
IXZpZGVvTGF5ZXIgfHwgIXZpZGVvTGF5ZXIuZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7
CkBAIC00ODYsMTIgKzUwNywxNCBAQCBzdGF0aWMgV2ViQVZQbGF5ZXJMYXllclZpZXcgKmFsbG9j
V2ViQVZQbGF5ZXJMYXllclZpZXdJbnN0YW5jZSgpCiAgICAgc3RhdGljIENsYXNzIHRoZUNsYXNz
ID0gbmlsOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgQVNTRVJUKGdldF9fQVZQbGF5ZXJMYXll
clZpZXdDbGFzcygpKTsKICAgICAgICAgdGhlQ2xhc3MgPSBvYmpjX2FsbG9jYXRlQ2xhc3NQYWly
KGdldF9fQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpLCAiV2ViQVZQbGF5ZXJMYXllclZpZXciLCAw
KTsKICAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IoZGVhbGxvYyks
IChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfZGVhbGxvYywgInZAOiIpOwogICAgICAgICBjbGFz
c19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRQbGF5ZXJDb250cm9sbGVyOiksIChJ
TVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc2V0UGxheWVyQ29udHJvbGxlciwgInZAOkAiKTsKICAg
ICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3IocGxheWVyQ29udHJvbGxl
ciksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyQ29udHJvbGxlciwgIkBAOiIpOwog
ICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihzZXRWaWRlb1ZpZXc6
KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19zZXRWaWRlb1ZpZXcsICJ2QDpAIik7CiAgICAg
ICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHZpZGVvVmlldyksIChJTVAp
V2ViQVZQbGF5ZXJMYXllclZpZXdfdmlkZW9WaWV3LCAiQEA6Iik7CisgICAgICAgIGNsYXNzX2Fk
ZE1ldGhvZCh0aGVDbGFzcywgQHNlbGVjdG9yKHBsYXllckxheWVyKSwgKElNUClXZWJBVlBsYXll
ckxheWVyVmlld19wbGF5ZXJMYXllciwgIkBAOiIpOwogICAgICAgICBjbGFzc19hZGRNZXRob2Qo
dGhlQ2xhc3MsIEBzZWxlY3RvcihzdGFydFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBs
YXllckxheWVyVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc3RhcnRSb3V0aW5nVmlk
ZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcsICJ2QDoiKTsKICAgICAgICAgY2xh
c3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc3RvcFJvdXRpbmdWaWRlb1RvUGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlldyksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfc3Rv
cFJvdXRpbmdWaWRlb1RvUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywgInZAOiIpOwog
ICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3RvcihwaWN0dXJlSW5QaWN0
dXJlUGxheWVyTGF5ZXJWaWV3KSwgKElNUClXZWJBVlBsYXllckxheWVyVmlld19waWN0dXJlSW5Q
aWN0dXJlUGxheWVyTGF5ZXJWaWV3LCAiQEA6Iik7CkBAIC01MDUsNiArNTI4LDE5NyBAQCBzdGF0
aWMgV2ViQVZQbGF5ZXJMYXllclZpZXcgKmFsbG9jV2ViQVZQbGF5ZXJMYXllclZpZXdJbnN0YW5j
ZSgpCiAgICAgcmV0dXJuIChXZWJBVlBsYXllckxheWVyVmlldyAqKVt0aGVDbGFzcyBhbGxvY107
CiB9CiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCitAaW50ZXJmYWNlIFdlYkFWUGxheWVyVmll
d0NvbnRyb2xsZXIgOiBOU09iamVjdDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOihWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdCAqKWludGVyZmFjZTsKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuQW5p
bWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZXhpdEZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzdGFydFBp
Y3R1cmVJblBpY3R1cmU7CistICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlOworCistIChCT09M
KXBsYXllclZpZXdDb250cm9sbGVyU2hvdWxkSGFuZGxlRG9uZUJ1dHRvblRhcDooQVZQbGF5ZXJW
aWV3Q29udHJvbGxlciAqKXBsYXllclZpZXdDb250cm9sbGVyOworQGVuZAorTlNfQVNTVU1FX05P
Tk5VTExfRU5ECisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHsK
KyAgICBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCAqX2Z1bGxzY3JlZW5JbnRlcmZhY2U7
CisgICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+IF9wcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXI7CisgICAgUmV0YWluUHRyPEFWUGxheWVyVmlld0NvbnRyb2xsZXI+IF9hdlBsYXllclZpZXdD
b250cm9sbGVyOworICAgIGlkPEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZV9XZWJLaXRP
bmx5PiBfZGVsZWdhdGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZ1bGxzY3JlZW5J
bnRlcmZhY2U6KFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0ICopaW50ZXJmYWNlCit7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBfZnVsbHNjcmVlbkludGVyZmFjZSA9IGludGVyZmFjZTsKKyAgICBfYXZQbGF5ZXJWaWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlckluc3RhbmNlKCkg
aW5pdFdpdGhQbGF5ZXJMYXllclZpZXc6aW50ZXJmYWNlLT5wbGF5ZXJMYXllclZpZXcoKV0pOwor
I2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgX2F2UGxheWVyVmlld0NvbnRyb2xsZXIu
Z2V0KCkuZGVsZWdhdGUgPSBzZWxmOworI2VuZGlmCisKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAoQk9PTClwbGF5ZXJWaWV3Q29udHJvbGxlclNob3VsZEhhbmRsZURvbmVCdXR0b25UYXA6KEFW
UGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlcgoreworICAgIEFTU0VS
VChwbGF5ZXJWaWV3Q29udHJvbGxlciA9PSBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSk7
CisgICAgaWYgKF9kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIFtfZGVsZWdhdGUgcGxheWVyVmll
d0NvbnRyb2xsZXI6cGxheWVyVmlld0NvbnRyb2xsZXIgc2hvdWxkRXhpdEZ1bGxTY3JlZW5XaXRo
UmVhc29uOkFWUGxheWVyVmlld0NvbnRyb2xsZXJFeGl0RnVsbFNjcmVlblJlYXNvbkRvbmVCdXR0
b25UYXBwZWRdOworCisgICAgcmV0dXJuIFlFUzsKK30KKworLSAodm9pZCllbnRlckZ1bGxTY3Jl
ZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCBzdWNjZXNzLCBOU0Vycm9yICogX19udWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIF9wcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIgPSBfZnVsbHNjcmVlbkludGVyZmFjZS0+cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7
CisKKyAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lID0gX3ByZXNl
bnRpbmdWaWV3Q29udHJvbGxlci5nZXQoKS52aWV3LmZyYW1lOworICAgIFtfcHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpfZnVsbHNjcmVlbkludGVyZmFjZS0+
ZnVsbHNjcmVlblZpZXdDb250cm9sbGVyKCkgYW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbjpe
eworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihZRVMsIG5pbCk7CisgICAgfV07CisjZWxzZQorICAgIFtfYXZQbGF5ZXJWaWV3Q29u
dHJvbGxlci5nZXQoKSBlbnRlckZ1bGxTY3JlZW5BbmltYXRlZDphbmltYXRlZCBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisjZW5kaWYKK30KKworLSAodm9pZClleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKiBfX251bGxhYmxlIGVycm9yKSljb21wbGV0aW9uSGFu
ZGxlcgoreworI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgaWYgKCFfcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBbX3ByZXNlbnRpbmdWaWV3
Q29udHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDphbmltYXRlZCBjb21wbGV0
aW9uOl57CisgICAgICAgIF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgICAg
IGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlF
UywgbmlsKTsKKyAgICB9XTsKKyNlbHNlCisgICAgW19hdlBsYXllclZpZXdDb250cm9sbGVyLmdl
dCgpIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RF
KQorI2RlZmluZSBNWV9OT19SRVRVUk4gTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKKyNlbHNlCisj
ZGVmaW5lIE1ZX05PX1JFVFVSTgorI2VuZGlmCisKKy0gKHZvaWQpc3RhcnRQaWN0dXJlSW5QaWN0
dXJlIE1ZX05PX1JFVFVSTgoreworI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisjZWxzZQorICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5n
ZXQoKSBzdGFydFBpY3R1cmVJblBpY3R1cmVdOworI2VuZGlmCit9CisKKy0gKHZvaWQpc3RvcFBp
Y3R1cmVJblBpY3R1cmUgTVlfTk9fUkVUVVJOCit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9E
RSkKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbHNlCisgICAgW19hdlBsYXllclZpZXdD
b250cm9sbGVyLmdldCgpIHN0b3BQaWN0dXJlSW5QaWN0dXJlXTsKKyNlbmRpZgorfQorCistIChC
T09MKWlzUGljdHVyZUluUGljdHVyZVBvc3NpYmxlCit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01f
TU9ERSkKKyAgICByZXR1cm4gTk87CisjZWxzZQorICAgIHJldHVybiBfYXZQbGF5ZXJWaWV3Q29u
dHJvbGxlci5nZXQoKS5pc1BpY3R1cmVJblBpY3R1cmVQb3NzaWJsZTsKKyNlbmRpZgorfQorCist
IChCT09MKWlzUGljdHVyZUluUGljdHVyZUFjdGl2ZQoreworI2lmIEVOQUJMRShFWFRSQV9aT09N
X01PREUpCisgICAgcmV0dXJuIE5POworI2Vsc2UKKyAgICByZXR1cm4gX2F2UGxheWVyVmlld0Nv
bnRyb2xsZXIuZ2V0KCkuaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlOworI2VuZGlmCit9CisKKy0g
KEJPT0wpcGljdHVyZUluUGljdHVyZUFjdGl2ZQoreworI2lmIEVOQUJMRShFWFRSQV9aT09NX01P
REUpCisgICAgcmV0dXJuIE5POworI2Vsc2UKKyAgICByZXR1cm4gX2F2UGxheWVyVmlld0NvbnRy
b2xsZXIuZ2V0KCkucGljdHVyZUluUGljdHVyZUFjdGl2ZTsKKyNlbmRpZgorfQorCistIChCT09M
KXBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZAoreworI2lm
IEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgcmV0dXJuIE5POworI2Vsc2UKKyAgICByZXR1
cm4gX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkucGljdHVyZUluUGljdHVyZVdhc1N0YXJ0
ZWRXaGVuRW50ZXJpbmdCYWNrZ3JvdW5kOworI2VuZGlmCit9CisKKy0gKFVJVmlldyAqKSB2aWV3
Cit7CisgICAgcmV0dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLnZpZXc7Cit9CisK
Ky0gKEJPT0wpc2hvd3NQbGF5YmFja0NvbnRyb2xzCit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01f
TU9ERSkKKyAgICByZXR1cm4gWUVTOworI2Vsc2UKKyAgICByZXR1cm4gX2F2UGxheWVyVmlld0Nv
bnRyb2xsZXIuZ2V0KCkuc2hvd3NQbGF5YmFja0NvbnRyb2xzOworI2VuZGlmCit9CisKKy0gKHZv
aWQpc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOihCT09MKXNob3dzUGxheWJhY2tDb250cm9scwor
eworI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgVU5VU0VEX1BBUkFNKHNob3dzUGxh
eWJhY2tDb250cm9scyk7CisjZWxzZQorICAgIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgp
LnNob3dzUGxheWJhY2tDb250cm9scyA9IHNob3dzUGxheWJhY2tDb250cm9sczsKKyNlbmRpZgor
fQorCistICh2b2lkKXNldEFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazooQk9PTClhbGxv
d3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2sKK3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RF
KQorICAgIFVOVVNFRF9QQVJBTShhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2spOworI2Vs
c2UKKyAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hbGxvd3NQaWN0dXJlSW5QaWN0
dXJlUGxheWJhY2sgPSBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s7CisjZW5kaWYKK30K
KworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPEFWUGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZT4pZGVsZWdhdGUKK3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIEFTU0VSVCgh
ZGVsZWdhdGUgfHwgW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGxheWVy
Vmlld0NvbnRyb2xsZXI6c2hvdWxkRXhpdEZ1bGxTY3JlZW5XaXRoUmVhc29uOildKTsKKyAgICBf
ZGVsZWdhdGUgPSBpZDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGVfV2ViS2l0T25seT4o
ZGVsZWdhdGUpOworI2Vsc2UKKyAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworI2VuZGlmCit9CisKKy0gKHZvaWQpc2V0UGxheWVyQ29udHJvbGxl
cjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcgoreworICAgIF9hdlBsYXll
clZpZXdDb250cm9sbGVyLmdldCgpLnBsYXllckNvbnRyb2xsZXIgPSBwbGF5ZXJDb250cm9sbGVy
OworfQorCistIChBVlBsYXllclZpZXdDb250cm9sbGVyICopIGF2UGxheWVyVmlld0NvbnRyb2xs
ZXIKK3sKKyAgICByZXR1cm4gX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCk7Cit9CisKKy0g
KHZvaWQpcmVtb3ZlRnJvbVBhcmVudFZpZXdDb250cm9sbGVyCit7CisgICAgW19hdlBsYXllclZp
ZXdDb250cm9sbGVyLmdldCgpIHJlbW92ZUZyb21QYXJlbnRWaWV3Q29udHJvbGxlcl07Cit9CitA
ZW5kCisKIFJlZjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZShQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCYgcGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlKQogewogICAgIFJlZjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdD4gaW50ZXJmYWNlID0gYWRvcHRSZWYoKm5ldyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdChwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpKTsKQEAgLTYxOSw2ICs4MzMsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3
JiB2aWRlb1ZpZXcsIGNvbnN0IEludAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBb
Q0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwogCisjaWYgIUVOQUJMRShFWFRS
QV9aT09NX01PREUpCiAgICAgaWYgKCFbW21fcGFyZW50VmlldyB3aW5kb3ddIF9pc0hvc3RlZElu
QW5vdGhlclByb2Nlc3NdKSB7CiAgICAgICAgIGlmICghbV93aW5kb3cpCiAgICAgICAgICAgICBt
X3dpbmRvdyA9IGFkb3B0TlMoW2FsbG9jVUlXaW5kb3dJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6
W1tnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gYm91bmRzXV0pOwpAQCAtNjMxLDYgKzg0
Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVl
bihVSVZpZXcmIHZpZGVvVmlldywgY29uc3QgSW50CiAgICAgICAgIFttX3dpbmRvdyBzZXRXaW5k
b3dMZXZlbDpnZXRVSVRleHRFZmZlY3RzQmVuZWF0aFN0YXR1c0JhcldpbmRvd0xldmVsKCkgKyAx
XTsKICAgICAgICAgW21fd2luZG93IG1ha2VLZXlBbmRWaXNpYmxlXTsKICAgICB9CisjZW5kaWYK
IAogICAgIGlmICghbV9wbGF5ZXJMYXllclZpZXcpCiAgICAgICAgIG1fcGxheWVyTGF5ZXJWaWV3
ID0gYWRvcHROUyhbYWxsb2NXZWJBVlBsYXllckxheWVyVmlld0luc3RhbmNlKCkgaW5pdF0pOwpA
QCAtNjQzLDI5ICs4NTksMzAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdCBJbnQKICAgICB9CiAKICAg
ICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21f
cGxheWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKLQogICAgIFtwbGF5ZXJMYXllciBzZXRNb2Rl
bFZpZGVvTGF5ZXJGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1faW5saW5lUmVjdC53aWR0aCgpLCBt
X2lubGluZVJlY3QuaGVpZ2h0KCkpXTsKICAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNp
b25zOltwbGF5ZXJDb250cm9sbGVyKCkgY29udGVudERpbWVuc2lvbnNdXTsKICAgICBwbGF5ZXJM
YXllci5mdWxsc2NyZWVuSW50ZXJmYWNlID0gdGhpczsKIAogICAgIGlmICghbV9wbGF5ZXJWaWV3
Q29udHJvbGxlcikKLSAgICAgICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2Fs
bG9jQVZQbGF5ZXJWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQbGF5ZXJMYXllclZp
ZXc6bV9wbGF5ZXJMYXllclZpZXcuZ2V0KCldKTsKKyAgICAgICAgbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciA9IGFkb3B0TlMoW1tXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0
aEZ1bGxzY3JlZW5JbnRlcmZhY2U6dGhpc10pOwogCiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgc2V0U2hvd3NQbGF5YmFja0NvbnRyb2xzOk5PXTsKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciBzZXRQbGF5ZXJDb250cm9sbGVyOihBVlBsYXllckNvbnRyb2xsZXIgKilwbGF5ZXJDb250
cm9sbGVyKCldOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fcGxh
eWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgc2V0QWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrOm1fYWxsb3dzUGljdHVyZUlu
UGljdHVyZVBsYXliYWNrXTsKLQogICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0UGljdHVyZUlu
UGljdHVyZVBvc3NpYmxlOm1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKIAorI2lm
IEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgbV92aWV3Q29udHJvbGxlciA9IG1vZGVsKCkt
PmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKG1fcGxheWVyVmlld0NvbnRyb2xs
ZXIuZ2V0KCkuYXZQbGF5ZXJWaWV3Q29udHJvbGxlcik7CisjZW5kaWYKKwogICAgIGlmIChtX3Zp
ZXdDb250cm9sbGVyKSB7Ci0gICAgICAgIFttX3ZpZXdDb250cm9sbGVyIGFkZENoaWxkVmlld0Nv
bnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKV07CisgICAgICAgIFttX3ZpZXdD
b250cm9sbGVyIGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5ZXJWaWV3Q29udHJvbGxlci5n
ZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVyXTsKICAgICAgICAgW1ttX3ZpZXdDb250cm9sbGVy
IHZpZXddIGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOwogICAgIH0g
ZWxzZQogICAgICAgICBbbV9wYXJlbnRWaWV3IGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld11dOwogCiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uZnJhbWUg
PSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRSZWN0Om1faW5saW5lUmVjdCB0b1ZpZXc6W21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKLQogICAgIFtbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwogICAgIFtb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRBdXRvcmVzaXppbmdNYXNrOihVSVZpZXdB
dXRvcmVzaXppbmdGbGV4aWJsZUJvdHRvbU1hcmdpbiB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhp
YmxlUmlnaHRNYXJnaW4pXTsKIApAQCAtNzA2LDYgKzkyMywyOCBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjplbnRlclBpY3R1cmVJblBpY3R1cmUoKQogICAgICAgICBmYWls
ZWRUb1N0YXJ0UGljdHVyZUluUGljdHVyZSgpOwogfQogCitzdGF0aWMgVUlWaWV3Q29udHJvbGxl
ciAqZmFsbGJhY2tWaWV3Q29udHJvbGxlcihVSVZpZXcgKnZpZXcpCit7CisgICAgZm9yIChVSVZp
ZXcgKmN1cnJlbnRWaWV3ID0gdmlldzsgY3VycmVudFZpZXc7IGN1cnJlbnRWaWV3ID0gY3VycmVu
dFZpZXcuc3VwZXJ2aWV3KSB7CisgICAgICAgIGlmIChVSVZpZXdDb250cm9sbGVyICp2aWV3Q29u
dHJvbGxlciA9IFtnZXRVSVZpZXdDb250cm9sbGVyQ2xhc3MoKSB2aWV3Q29udHJvbGxlckZvclZp
ZXc6Y3VycmVudFZpZXddKSB7CisgICAgICAgICAgICBpZiAoIVt2aWV3Q29udHJvbGxlciBwYXJl
bnRWaWV3Q29udHJvbGxlcl0pCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXdDb250cm9sbGVy
OworICAgICAgICB9CisgICAgfQorCisgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZmluZCBhIHZp
ZXcgY29udHJvbGxlciBzdWl0YWJsZSB0byBwcmVzZW50IGZ1bGxzY3JlZW4gdmlkZW8iKTsKKyAg
ICByZXR1cm4gbmlsOworfQorCitVSVZpZXdDb250cm9sbGVyICpWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkKK3sKKyAgICBhdXRvICpjb250
cm9sbGVyID0gbW9kZWwoKS0+cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7CisgICAgaWYgKCFj
b250cm9sbGVyKQorICAgICAgICBjb250cm9sbGVyID0gZmFsbGJhY2tWaWV3Q29udHJvbGxlciht
X3BhcmVudFZpZXcuZ2V0KCkpOworCisgICAgcmV0dXJuIGNvbnRyb2xsZXI7Cit9CisKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCkK
IHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
bnRlckZ1bGxzY3JlZW5TdGFuZGFyZCglcCkiLCB0aGlzKTsKQEAgLTEwMTUsNyArMTI1NCw3IEBA
IGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVu
V2l0aFJlYXNvbihWaWRlb0Z1bGxzY3JlCiAgICAgQk9PTCBmaW5pc2hlZCA9IHJlYXNvbiA9PSBF
eGl0RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24gPT0gRXhpdEZ1
bGxTY3JlZW5SZWFzb246OlBpbmNoR2VzdHVyZUhhbmRsZWQ7CiAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUsIGZpbmlzaGVkKTsKIAotICAgIGlmICghbV93YXRjaGRvZ1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgaWYgKCFtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSAmJiAh
aWdub3JlV2F0Y2hkb2dGb3JEZWJ1Z2dpbmcpCiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QoZGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCk7CiAKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMzAxLDcgKzE1NDAsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24oVmlkZW9GdWxsc2NyZQogICAgIEJP
T0wgZmluaXNoZWQgPSByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OkRvbmVCdXR0b25U
YXBwZWQgfHwgcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpQaW5jaEdlc3R1cmVIYW5k
bGVkOwogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCBmaW5pc2hlZCk7
CiAKLSAgICBpZiAoIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKQorICAgIGlmICghbV93YXRj
aGRvZ1RpbWVyLmlzQWN0aXZlKCkgJiYgIWlnbm9yZVdhdGNoZG9nRm9yRGVidWdnaW5nKQogICAg
ICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGRlZmF1bHRXYXRjaGRvZ1RpbWVySW50
ZXJ2YWwpOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM2MCw2ICsxNTk5LDcgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9TZXR1cCgpCiAgICAgfQogICAgIG1fc2V0
dXBOZWVkc0lubGluZVJlY3QgPSBmYWxzZTsKIAorI2lmICFFTkFCTEUoRVhUUkFfWk9PTV9NT0RF
KQogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNh
YmxlQWN0aW9uczpZRVNdOwogICAgIGlmICghW1ttX3BhcmVudFZpZXcgd2luZG93XSBfaXNIb3N0
ZWRJbkFub3RoZXJQcm9jZXNzXSAmJiAhbV93aW5kb3cpIHsKQEAgLTEzNzQsNiArMTYxNCw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXAoKQogICAgICAgICBb
bV93aW5kb3cgc2V0V2luZG93TGV2ZWw6Z2V0VUlUZXh0RWZmZWN0c0JlbmVhdGhTdGF0dXNCYXJX
aW5kb3dMZXZlbCgpICsgMV07CiAgICAgICAgIFttX3dpbmRvdyBtYWtlS2V5QW5kVmlzaWJsZV07
CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAoIW1fcGxheWVyTGF5ZXJWaWV3KQogICAgICAgICBt
X3BsYXllckxheWVyVmlldyA9IGFkb3B0TlMoW2FsbG9jV2ViQVZQbGF5ZXJMYXllclZpZXdJbnN0
YW5jZSgpIGluaXRdKTsKQEAgLTEzOTIsMjMgKzE2MzMsMjUgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZG9TZXR1cCgpCiAgICAgcGxheWVyTGF5ZXIuZnVsbHNjcmVlbklu
dGVyZmFjZSA9IHRoaXM7CiAKICAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCi0gICAg
ICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0Nv
bnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJW
aWV3LmdldCgpXSk7CisgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
V2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJm
YWNlOnRoaXNdKTsKIAogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJh
Y2tDb250cm9sczpOT107CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29u
dHJvbGxlcjooQVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcigpXTsKICAgICBb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BsYXllclZpZXdDb250cm9sbGVy
RGVsZWdhdGUuZ2V0KCldOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c1Bp
Y3R1cmVJblBpY3R1cmVQbGF5YmFjazptX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107
Ci0KICAgICBbcGxheWVyQ29udHJvbGxlcigpIHNldFBpY3R1cmVJblBpY3R1cmVQb3NzaWJsZTpt
X2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107CiAKKyNpZiBFTkFCTEUoRVhUUkFfWk9P
TV9NT0RFKQorICAgIG1fdmlld0NvbnRyb2xsZXIgPSBtb2RlbCgpLT5jcmVhdGVWaWRlb0Z1bGxz
Y3JlZW5WaWV3Q29udHJvbGxlcihtX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmF2UGxheWVy
Vmlld0NvbnRyb2xsZXIpOworI2VuZGlmCisKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikgewot
ICAgICAgICBbbV92aWV3Q29udHJvbGxlciBhZGRDaGlsZFZpZXdDb250cm9sbGVyOm1fcGxheWVy
Vmlld0NvbnRyb2xsZXIuZ2V0KCldOworICAgICAgICBbbV92aWV3Q29udHJvbGxlciBhZGRDaGls
ZFZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuYXZQbGF5ZXJWaWV3
Q29udHJvbGxlcl07CiAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3
OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKICAgICAgICAgW21f
cGFyZW50VmlldyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKIAog
ICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBj
b252ZXJ0UmVjdDptX2lubGluZVJlY3QgdG9WaWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZp
ZXddLnN1cGVydmlld107Ci0KICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0
QmFja2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld10gc2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGli
bGVCb3R0b21NYXJnaW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07
CiAKQEAgLTE2MjksNyArMTg3Miw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdAogCiBib29sIFdl
YkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAm
JiBIQVZFKEFWS0lUKQorI2lmIFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkgJiYgIUVOQUJM
RShFWFRSQV9aT09NX01PREUpCiAgICAgcmV0dXJuIFtnZXRBVlBpY3R1cmVJblBpY3R1cmVDb250
cm9sbGVyQ2xhc3MoKSBpc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRdOwogI2Vsc2UKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCAzY2M5OGRm
ODAzMDI1NzU5NjJiZTYwYjY2OTYzMjJiYTY4NzE4NmE2Li4wNDAyZmVjZTY5NjljMzgyYmFmZDc1
ZDlmY2NkMzJlYjNlMDc1MDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAg
LTg3OCw3ICs4NzgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbAogICAgICAgICBtX2ludGVy
ZmFjZS0+c2V0VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIodGhpcyk7CiAKICAgICAgICAg
bV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbYWxsb2NVSVZpZXdJbnN0YW5jZSgpIGlu
aXRdKTsKLSAgICAgICAgCisKICAgICAgICAgbV9pbnRlcmZhY2UtPnNldHVwRnVsbHNjcmVlbigq
bV92aWRlb0Z1bGxzY3JlZW5WaWV3LmdldCgpLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3
UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBmYWxzZSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IDNjYjgxYTc3ZDRhYWEzOTkxMTI1OThhNzk5
OTFkNmE2ODVlMTJhNGMuLjJiNjM2MzJhMWYzYzU3YWUwYzhmZGRhNjVmOGI0MjNlZjMyZjZmMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC04NSw2ICs4NSwxMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNWaWRlbygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFzVmlkZW87IH0KICAgICBXZWJDb3JlOjpGbG9hdFNp
emUgdmlkZW9EaW1lbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aWRlb0RpbWVu
c2lvbnM7IH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2Vu
dGluZ1ZpZXdDb250cm9sbGVyKCkgZmluYWw7CisgICAgVUlWaWV3Q29udHJvbGxlciAqY3JlYXRl
VmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIoQVZQbGF5ZXJWaWV3Q29udHJvbGxlciopIGZp
bmFsOworI2VuZGlmCiAKICAgICAvLyBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcgogICAg
IHZvaWQgcmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbQppbmRleCA0ZmYyNzc0MzFhNmNjOGExNzBlMTc0Y2NiMDJkMDkzMzc1MDJjZjE1Li43
YmYyNjU5MDdlMjRlNDgyNWNkNzQ2MTcwNWJkNjBhYmYxZDgzNDEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW1w
b3J0ICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2Vh
a09iakNQdHIuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb24uaD4KQEAgLTQ0LDgg
KzQ1LDExIEBACiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvQVZLaXRTUEkuaD4KICNlbmRpZgogCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCiBA
aW50ZXJmYWNlIFdLTGF5ZXJIb3N0VmlldyA6IFBsYXRmb3JtVmlldwogQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgdWludDMyX3QgY29udGV4dElEOwogQGVuZApAQCAtNzcsNiArODEsNDgg
QEAKIAogQGVuZAogCisjaWYgUExBVEZPUk0oSU9TKQorQGludGVyZmFjZSBXS1ZpZGVvRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyIDogVUlWaWV3Q29udHJvbGxlcgorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqKXZp
ZXdDb250cm9sbGVyIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhOaWJOYW1lOihOU1N0cmluZyAqIF9OdWxsYWJsZSluaWJOYW1lT3JOaWwgYnVuZGxl
OihOU0J1bmRsZSAqIF9OdWxsYWJsZSluaWJCdW5kbGVPck5pbCBOU19VTkFWQUlMQUJMRTsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIgTlNfVU5BVkFJ
TEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIFdLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgeworICAgIFdlYWtP
YmpDUHRyPEFWUGxheWVyVmlld0NvbnRyb2xsZXI+IF9hdlBsYXllclZpZXdDb250cm9sbGVyOwor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBVlBsYXllclZpZXdDb250cm9sbGVyOihBVlBs
YXllclZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgoreworICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhOaWJOYW1lOm5pbCBidW5kbGU6bmlsXSkpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlciA9IGNvbnRyb2xsZXI7CisgICAgc2VsZi5t
b2RhbFByZXNlbnRhdGlvbkNhcHR1cmVzU3RhdHVzQmFyQXBwZWFyYW5jZSA9IFlFUzsKKyAgICBz
ZWxmLm1vZGFsUHJlc2VudGF0aW9uU3R5bGUgPSBVSU1vZGFsUHJlc2VudGF0aW9uT3ZlckZ1bGxT
Y3JlZW47CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl2aWV3RGlkTG9hZAorewor
ICAgIFtzdXBlciB2aWV3RGlkTG9hZF07CisKKyAgICBzZWxmLnZpZXcuZnJhbWUgPSBVSVNjcmVl
bi5tYWluU2NyZWVuLmJvdW5kczsKKyAgICBzZWxmLnZpZXcuYmFja2dyb3VuZENvbG9yID0gW1VJ
Q29sb3IgYmxhY2tDb2xvcl07CisgICAgW19hdlBsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmF1
dG9yZXNpemluZ01hc2sgPSBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVdpZHRoIHwgVUlWaWV3
QXV0b3Jlc2l6aW5nRmxleGlibGVIZWlnaHQ7Cit9CisKKy0gKEJPT0wpcHJlZmVyc1N0YXR1c0Jh
ckhpZGRlbgoreworICAgIHJldHVybiBZRVM7Cit9CisKK0BlbmQKKworI2VuZGlmCisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2Nyw2ICsyMTMs
MjEgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmlzVmlzaWJsZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fbWFuYWdlciA/IG1fbWFuYWdlci0+aXNWaXNpYmxlKCkgOiBmYWxzZTsK
IH0KIAorI2lmIFBMQVRGT1JNKElPUykKK1VJVmlld0NvbnRyb2xsZXIgKlZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dDo6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCkKK3sKKyAgICBpZiAobV9t
YW5hZ2VyKQorICAgICAgICByZXR1cm4gbV9tYW5hZ2VyLT5tX3BhZ2UtPnVpQ2xpZW50KCkucHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyKCk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworVUlW
aWV3Q29udHJvbGxlciAqVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OjpjcmVhdGVWaWRlb0Z1
bGxzY3JlZW5WaWV3Q29udHJvbGxlcihBVlBsYXllclZpZXdDb250cm9sbGVyICphdlBsYXllclZp
ZXdDb250cm9sbGVyKQoreworICAgIHJldHVybiBbW1dLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRy
b2xsZXIgYWxsb2NdIGluaXRXaXRoQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjphdlBsYXllclZpZXdD
b250cm9sbGVyXTsKK30KKyNlbmRpZgorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoKQogewogICAgIGlmIChtX21hbmFnZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCmluZGV4IDUzMzYxZjI3NWZjOTZhMzg0N2ZiOGJkMGEzZGEyNjk1NThkNmUyMmEu
LjIxNDBiZGQxOWVhNTEyNzYzZTMyMWI0MzI2NTMwMDJhM2Q3NWIxY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCkBAIC00MzksMTMgKzQzOSwxNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRp
ZEVudGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgaW50ZXJmYWNlLT5zZXRJ
c0FuaW1hdGluZyhmYWxzZSk7CiAgICAgaW50ZXJmYWNlLT5zZXRJc0Z1bGxzY3JlZW4oZmFsc2Up
OwogCi0gICAgaWYgKGludGVyZmFjZS0+dGFyZ2V0SXNGdWxsc2NyZWVuKCkpCi0gICAgICAgIHJl
dHVybjsKLQogICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQgPSBtb2Rl
bC0+dmlkZW9FbGVtZW50KCk7CiAgICAgaWYgKCF2aWRlb0VsZW1lbnQpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50XSB7CisgICAgICAgIHZp
ZGVvRWxlbWVudC0+ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICB9KTsKKworICAg
IGlmIChpbnRlcmZhY2UtPnRhcmdldElzRnVsbHNjcmVlbigpKQorICAgICAgICByZXR1cm47CisK
ICAgICAvLyBleGl0IGZ1bGxzY3JlZW4gbm93IGlmIGl0IHdhcyBwcmV2aW91c2x5IHJlcXVlc3Rl
ZCBkdXJpbmcgYW4gYW5pbWF0aW9uLgogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVt
ZW50XSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336060</attachid>
            <date>2018-03-19 11:26:35 -0700</date>
            <delta_ts>2018-03-19 14:22:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183742-20180319112634.patch</filename>
            <type>text/plain</type>
            <size>42254</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMyM2VjNjUyMzJhYjM2ODQxNGZhMzBi
MGZlOGE4YzA0YmNiYTYxMDIuLmU0YzQyMTUxM2U4NzJkYzgxZmM3NmM0Y2Q3NjllN2MyNjk2NjZl
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDMtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gUmVxdWlyZSBm
dWxsc2NyZWVuIGZvciB2aWRlbyBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODIz
NTg2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDoKKwogMjAxOC0wMy0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBkZWZpbmluZyBjb21tb25seS1uYW1lZCBzeXN0ZW0g
bWFjcm9zIG9uIGFsbCBDb2NvYSBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NGU5NGI1OTIyNWZi
ZmYzNjMyNDZhY2VhMGMxODVhY2EwYjIzOTMxLi4zNmJhMDhiNTZlODM0OTAxZDA2NTNkMDJiZjEz
NDgyNjBkNzViNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTgtMDMtMTkgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0V4dHJhIHpv
b20gbW9kZV0gUmVxdWlyZSBmdWxsc2NyZWVuIGZvciB2aWRlbyBwbGF5YmFjaworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zODIzNTg2Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUu
CisKKyAgICAgICAgKiBNb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scy9tZWRpYS9wbGF5YmFj
ay1zdXBwb3J0LmpzOgorICAgICAgICAoUGxheWJhY2tTdXBwb3J0LnByb3RvdHlwZS5zeW5jQ29u
dHJvbCk6IEFsd2F5cyBzaG93IHRoZSBwbGF5IGJ1dHRvbi4KKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlUGxheVN0YXRlKTogUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHBsYXliYWNrIHJlcXVpcmVzIGZ1
bGxzY3JlZW4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1
bGxzY3JlZW5FbGVtZW50KTogQ2FsbCB1cGRhdGVQbGF5U3RhdGUgaW4gY2FzZSAKKyAgICAgICAg
cGxheWJhY2sgaXMgcGVuZGluZy4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWw6OnByZXNlbnRpbmdWaWV3Q29udHJvbGxl
cik6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpjcmVhdGVW
aWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcik6IE5ldy4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQVZQbGF5ZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2Vla2FibGVSYW5n
ZXNDaGFuZ2VkKToKKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbTogV3JhcCBBVlBsYXllckxheWVyVmlldyBzbyB3ZSBjYW4gY2hhbmdlIGl0
cworICAgICAgICBiZWhhdmlvci4KKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3BsYXll
ckxheWVyKToKKyAgICAgICAgKFdlYkFWUGxheWVyTGF5ZXJWaWV3X3ZpZGVvVmlldyk6CisgICAg
ICAgIChhbGxvY1dlYkFWUGxheWVyTGF5ZXJWaWV3SW5zdGFuY2UpOgorICAgICAgICAoLVtXZWJB
VlBsYXllclZpZXdDb250cm9sbGVyIGluaXRXaXRoRnVsbHNjcmVlbkludGVyZmFjZTpdKToKKyAg
ICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciBwbGF5ZXJWaWV3Q29udHJvbGxlclNo
b3VsZEhhbmRsZURvbmVCdXR0b25UYXA6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0Nv
bnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRl
ZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV2ViQVZQbGF5ZXJWaWV3Q29udHJv
bGxlciBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVF0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZp
ZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGljdHVyZVBvc3NpYmxlXSk6CisgICAgICAgICgtW1dl
YkFWUGxheWVyVmlld0NvbnRyb2xsZXIgaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlXSk6CisgICAg
ICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgaXNQaWN0dXJlSW5QaWN0dXJlU3VzcGVu
ZGVkXSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgcGljdHVyZUluUGlj
dHVyZUFjdGl2ZV0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHBpY3R1
cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZF0pOgorICAgICAgICAo
LVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHZpZXddKToKKyAgICAgICAgKC1bV2ViQVZQbGF5
ZXJWaWV3Q29udHJvbGxlciBzaG93c1BsYXliYWNrQ29udHJvbHNdKToKKyAgICAgICAgKC1bV2Vi
QVZQbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6XSk6CisgICAg
ICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgc2V0QWxsb3dzUGljdHVyZUluUGljdHVy
ZVBsYXliYWNrOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHNldERl
bGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXll
ckNvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIgYXZQ
bGF5ZXJWaWV3Q29udHJvbGxlcl0pOgorICAgICAgICAoLVtXZWJBVlBsYXllclZpZXdDb250cm9s
bGVyIHJlbW92ZUZyb21QYXJlbnRWaWV3Q29udHJvbGxlcl0pOgorICAgICAgICAoVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbik6CisgICAgICAgIChmYWxsYmFj
a1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIpOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJlYXNvbik6CisgICAgICAgIChW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9TZXR1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmUpOgorCiAyMDE4LTAzLTE5ICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdDQyA0LjkgYnVp
bGQtZml4IGFmdGVyIHIyMjk2NzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBlN2VmMzczNTg2YzQz
NzkwMTAwNmQ4YTkxNWM1ODkwODU2Mjk4MzdjLi43ZmI2MzNhZjNiNzVmYjVlZjU4OTMwNTNhOGFm
NmM0ZGM0MTkzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0w
My0xOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBb
RXh0cmEgem9vbSBtb2RlXSBSZXF1aXJlIGZ1bGxzY3JlZW4gZm9yIHZpZGVvIHBsYXliYWNrCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3NDIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM4MjM1ODYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEpl
ciBOb2JsZS4KKworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaDoKKwogMjAxOC0w
My0xNyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJB
dXRoTl0gSW1wbGVtZW50IGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAy
NTExMTViY2JjYmEwM2QyMmQxNGZiODBlZTMyNDMyODMzMmUzNWMzLi5lNGQ0ZDNiMDNmNzczMDU5
ZjE1M2FmMjYyNDkwYjYxMGU4ZGNjZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4
LTAzLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFtFeHRyYSB6b29tIG1vZGVdIFJlcXVpcmUgZnVsbHNjcmVlbiBmb3IgdmlkZW8gcGxheWJhY2sK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzgyMzU4NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
SmVyIE5vYmxlLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW06CisgICAgICAgICgtW1dLVmlkZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xs
ZXIgaW5pdFdpdGhBVlBsYXllclZpZXdDb250cm9sbGVyOl0pOgorICAgICAgICAoLVtXS1ZpZGVv
RnVsbFNjcmVlblZpZXdDb250cm9sbGVyIHZpZXdEaWRMb2FkXSk6CisgICAgICAgICgtW1dLVmlk
ZW9GdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgcHJlZmVyc1N0YXR1c0JhckhpZGRlbl0pOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnByZXNlbnRpbmdWaWV3
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4
dDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKToKKwogMjAxOC0wMy0x
NyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRo
Tl0gSW1wbGVtZW50IGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
NTY2OGEzMDZkZDZjMDIwOTI3Y2YzNTZiYjdkZWYyMTc5MjUxY2YyMC4uNzM1ZjhiM2ZiZGUyZjVm
YzA2MjY4ZmE0OGQzYjNkYTZjYjkwNzc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMDQyLDEwICsxMDQy
LDEzIEBACiAKICNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpICYm
ICFFTkFCTEUoTUlOSU1BTF9TSU1VTEFUT1IpCiAjZGVmaW5lIEVOQUJMRV9EQVRBX0RFVEVDVElP
TiAxCi0jZGVmaW5lIEhBVkVfQVZLSVQgMQogI2RlZmluZSBIQVZFX1BBUkVOVEFMX0NPTlRST0xT
IDEKICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKEFQUExFVFYpICYmICFFTkFCTEUoTUlOSU1BTF9T
SU1VTEFUT1IpCisjZGVmaW5lIEhBVkVfQVZLSVQgMQorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VC
R0wpCiAjaWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBVU0VfT1BFTkdMIDEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL21lZGlhL3BsYXli
YWNrLXN1cHBvcnQuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250
cm9scy9tZWRpYS9wbGF5YmFjay1zdXBwb3J0LmpzCmluZGV4IDRkOGQ3NzcxMWVmNTFmYTYzNDM4
YzcwMGY4OTI0ODkwZTVlZDE0NGIuLmU1MDE4NTUwZmViMjRjNTZiYzE3ZDRkMDA1ZWI5NzgwMDNl
YmQxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL21lZGlhL3BsYXliYWNrLXN1cHBvcnQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWVkaWEvcGxheWJhY2stc3VwcG9ydC5qcwpAQCAt
NDcsOSArNDcsOSBAQCBjbGFzcyBQbGF5YmFja1N1cHBvcnQgZXh0ZW5kcyBNZWRpYUNvbnRyb2xs
ZXJTdXBwb3J0CiAgICAgewogICAgICAgICBjb25zdCBpc1BhdXNlZCA9IHRoaXMubWVkaWFDb250
cm9sbGVyLm1lZGlhLnBhdXNlZDsKIAotICAgICAgICAvLyBXZSBhbHdheXMgc2hvdyB0aGUgcGxh
eSBidXR0b24gd2hlbiB0aGUgbWVkaWEgaXMgcGF1c2VkIHdpdGggY29tcGFjdCBsYXlvdXQuCisg
ICAgICAgIC8vIFdlIGFsd2F5cyBzaG93IHRoZSBwbGF5IGJ1dHRvbiB3aXRoIGNvbXBhY3QgbGF5
b3V0LgogICAgICAgICBpZiAodGhpcy5tZWRpYUNvbnRyb2xsZXIubGF5b3V0VHJhaXRzICYgTGF5
b3V0VHJhaXRzLkNvbXBhY3QpCi0gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmlzaWJsZSA9IGlz
UGF1c2VkOworICAgICAgICAgICAgdGhpcy5jb250cm9sLnZpc2libGUgPSB0cnVlOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB0aGlzLmNvbnRyb2wucGxheWluZyA9ICFpc1BhdXNlZDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVktpdFNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZLaXRTUEkuaAppbmRleCA0
MzdjNTc2NjhiZDJmNjRmMGRiZjYwZGNjMTEyM2Y0ZjgyNTljYmYyLi5mMjE4ZjA1YWYwYjI5MmNl
NDQ0NTIzZWVjZTc4NmE5NjRkNzNlNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL0FWS2l0U1BJLmgKQEAgLTQxLDYgKzQxLDUzIEBACiAjaW1wb3J0IDxBVktpdC9BVlBs
YXllclZpZXdDb250cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWS2l0L0FWUGxheWVyVmll
d0NvbnRyb2xsZXJfV2ViS2l0T25seS5oPgogCisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkK
KworI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyTGF5ZXIuaD4KKworTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KKworQGludGVyZmFjZSBBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZp
ZXcgOiBVSVZpZXcKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQVZQbGF5ZXJMYXll
ciAqcGxheWVyTGF5ZXI7CitAZW5kCisKK0BpbnRlcmZhY2UgX19BVlBsYXllckxheWVyVmlldyAg
KERldGFpbHMpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFWUGxheWVyTGF5ZXIg
KnBsYXllckxheWVyOworLSAoQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3KikgcGlj
dHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldzsKKy0gKHZvaWQpc3RhcnRSb3V0aW5nVmlkZW9U
b1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXc7CistICh2b2lkKXN0b3BSb3V0aW5nVmlk
ZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXc7CitAZW5kCisKK0BjbGFzcyBBVlBs
YXllckxheWVyVmlldzsKK0BpbnRlcmZhY2UgQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAoQVZQbGF5
ZXJWaWV3Q29udHJvbGxlcl9XZWJLaXRPbmx5X0ludGVybmFsKQorLSAodm9pZCllbnRlckZ1bGxT
Y3JlZW5BbmltYXRlZDooQk9PTClhbmltYXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
Qk9PTCBzdWNjZXNzLCBOU0Vycm9yICogX19udWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRs
ZXI7CistICh2b2lkKWV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqIF9fbnVsbGFibGUg
ZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClzdGFydFBpY3R1cmVJblBpY3R1cmU7
CistICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlOworCitAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBzaG93c0V4aXRGdWxsU2NyZWVuQnV0dG9uOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBnZXR0ZXI9aXNQaWN0dXJlSW5QaWN0dXJlUG9zc2libGUpIEJPT0wgcGljdHVyZUlu
UGljdHVyZVBvc3NpYmxlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9
aXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlKSBCT09MIHBpY3R1cmVJblBpY3R1cmVBY3RpdmU7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc1BpY3R1cmVJblBpY3R1cmVT
dXNwZW5kZWQpIEJPT0wgcGljdHVyZUluUGljdHVyZVN1c3BlbmRlZDsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQk9PTCBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRl
cmluZ0JhY2tncm91bmQ7CitAZW5kCisKK0Bwcm90b2NvbCBBVlBsYXllclZpZXdDb250cm9sbGVy
RGVsZWdhdGVfV2ViS2l0T25seSA8QVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPgorQG9w
dGlvbmFsCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllclZpZXdDb250cm9sbGVy
RXhpdEZ1bGxTY3JlZW5SZWFzb24pIHsKKyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1
bGxTY3JlZW5SZWFzb25Eb25lQnV0dG9uVGFwcGVkLAorICAgIEFWUGxheWVyVmlld0NvbnRyb2xs
ZXJFeGl0RnVsbFNjcmVlblJlYXNvbkZ1bGxTY3JlZW5CdXR0b25UYXBwZWQsCisgICAgQVZQbGF5
ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVhc29uUGluY2hHZXN0dXJlSGFuZGxlZCwK
KyAgICBBVlBsYXllclZpZXdDb250cm9sbGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25SZW1vdGVDb250
cm9sU3RvcEV2ZW50UmVjZWl2ZWQsCisgICAgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxs
U2NyZWVuUmVhc29uUGljdHVyZUluUGljdHVyZVN0YXJ0ZWQKK307CistIChCT09MKXBsYXllclZp
ZXdDb250cm9sbGVyOihBVlBsYXllclZpZXdDb250cm9sbGVyICopcGxheWVyVmlld0NvbnRyb2xs
ZXIgc2hvdWxkRXhpdEZ1bGxTY3JlZW5XaXRoUmVhc29uOihBVlBsYXllclZpZXdDb250cm9sbGVy
RXhpdEZ1bGxTY3JlZW5SZWFzb24pcmVhc29uOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9F
TkQKKworI2VuZGlmCisKICNlbHNlCiAKIEBpbnRlcmZhY2UgQVZQbGF5ZXJDb250cm9sbGVyIDog
VUlSZXNwb25kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IGYwMGM0Mzc4NTM2NTRhYjYzNzFjNTE4OTJmMjdmNGNkMmRlNjkyMzYuLmFkMzYyNTgyMzgzNTEw
ZjYzYmU0YWU0ZjY1Yjc1MWIyNjRhZGY5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtNTI1NSw2ICs1MjU1LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlUGxheVN0YXRlKFVwZGF0ZVN0YXRlIHVwZGF0ZVN0YXRlKQogCiAgICAgSU5GT19M
T0coTE9HSURFTlRJRklFUiwgInNob3VsZEJlUGxheWluZyA9ICIsIHNob3VsZEJlUGxheWluZywg
IiwgcGxheWVyUGF1c2VkID0gIiwgcGxheWVyUGF1c2VkKTsKIAorICAgIGlmIChzaG91bGRCZVBs
YXlpbmcgJiYgcGxheWVyUGF1c2VkICYmIG1fbWVkaWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3Jl
ZW5Gb3JWaWRlb1BsYXliYWNrKCp0aGlzKSAmJiAhaXNGdWxsc2NyZWVuKCkpIHsKKyAgICAgICAg
ZW50ZXJGdWxsc2NyZWVuKCk7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICAgICAg
Ly8gRklYTUU6IEludmVzdGlnYXRlIGRvaW5nIHRoaXMgZm9yIGFsbCBidWlsZHMuCisgICAgICAg
IHJldHVybjsKKyNlbmRpZgorICAgIH0KKwogICAgIGlmIChzaG91bGRCZVBsYXlpbmcpIHsKICAg
ICAgICAgc2NoZWR1bGVVcGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpOwogCkBAIC01MjY0
LDkgKzUyNzIsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZShVcGRh
dGVTdGF0ZSB1cGRhdGVTdGF0ZSkKICAgICAgICAgaWYgKHBsYXllclBhdXNlZCkgewogICAgICAg
ICAgICAgbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7CiAKLSAgICAg
ICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5
YmFjaygqdGhpcykgJiYgIWlzRnVsbHNjcmVlbigpKQotICAgICAgICAgICAgICAgIGVudGVyRnVs
bHNjcmVlbigpOwotCiAgICAgICAgICAgICAvLyBTZXQgcmF0ZSwgbXV0ZWQgYmVmb3JlIGNhbGxp
bmcgcGxheSBpbiBjYXNlIHRoZXkgd2VyZSBzZXQgYmVmb3JlIHRoZSBtZWRpYSBlbmdpbmUgd2Fz
IHNldHVwLgogICAgICAgICAgICAgLy8gVGhlIG1lZGlhIGVuZ2luZSBzaG91bGQganVzdCBzdGFz
aCB0aGUgcmF0ZSBhbmQgbXV0ZWQgdmFsdWVzIHNpbmNlIGl0IGlzbid0IGFscmVhZHkgcGxheWlu
Zy4KICAgICAgICAgICAgIG1fcGxheWVyLT5zZXRSYXRlKHJlcXVlc3RlZFBsYXliYWNrUmF0ZSgp
KTsKQEAgLTU5NjcsNiArNTk3Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQmVjb21l
RnVsbHNjcmVlbkVsZW1lbnQoKQogewogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAg
ICAgIG1lZGlhQ29udHJvbHMoKS0+ZW50ZXJlZEZ1bGxzY3JlZW4oKTsKKyAgICB1cGRhdGVQbGF5
U3RhdGUoVXBkYXRlU3RhdGU6OkFzeW5jaHJvbm91c2x5KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBmYzgxZGMyZjBmYjdhMGFkYmY5ZTNiY2I1MGFlNjVi
MDUyMTRlZGE3Li40NzgyNTRmODU5Nzg4MzE0MjI5ZDcxNjhjZDYxN2I5MjliNmYyMjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNTUzLDYgKzU1Myw4IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKKwog
cHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hJ
bml0aWFsaXphdGlvbigpOwpAQCAtNjAzLDcgKzYwNSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd2lsbEJl
Y29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRCZWNvbWVGdWxs
c2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFN0b3BCZWluZ0Z1bGxzY3Jl
ZW5FbGVtZW50KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9k
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
LmgKaW5kZXggMzg3Zjc1MzM5MWRhMjAxMDc5NjRhNjE1MTQ3MTc4OTkxYzliNjFjYS4uZGE1MjE3
NTA3NDcwNmRlZjFmM2RiNTBjNDJmMTE2YzA2MDliNDVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oCkBAIC0zMiw2ICsz
MiwxMSBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIlBs
YXliYWNrU2Vzc2lvbk1vZGVsLmgiCiAKKyNpZiBQTEFURk9STShJT1MpCitPQkpDX0NMQVNTIEFW
UGxheWVyVmlld0NvbnRyb2xsZXI7CitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENs
aWVudDsKQEAgLTUxLDYgKzU2LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNp
YmxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCA9IDA7CisKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBVSVZpZXdD
b250cm9sbGVyICpjcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3Q29udHJvbGxlcihBVlBsYXllclZp
ZXdDb250cm9sbGVyICopIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgogfTsKIAogY2xhc3Mg
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
OTY2ZTk3YTA1Y2JjODRhNmQwNWJiNDY3MzI1OTdmMWU4OTZmMjc2Mi4uNjc1ZGNmNDMwM2Y0YWEy
OWZkNzExNDRhYjA0OTRmZDU1MDM0MjM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC03
MTAsNyArNzEwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
cmVhdGVBVlBsYXllckxheWVyKCkKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV92aWRlb0xheWVyLmdldCgpLCBkZWZhdWx0
U2l6ZSk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TKSAmJiAhRU5BQkxF
KEVYVFJBX1pPT01fTU9ERSkKICAgICBpZiAoW21fdmlkZW9MYXllciByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNldFBJUE1vZGVFbmFibGVkOildKQogICAgICAgICBbbV92aWRlb0xheWVy
IHNldFBJUE1vZGVFbmFibGVkOihwbGF5ZXIoKS0+ZnVsbHNjcmVlbk1vZGUoKSAmIE1lZGlhUGxh
eWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSldOwogI2VuZGlmCkBAIC0x
MjMyLDcgKzEyMzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OgogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbk1vZGUoTWVkaWFQ
bGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKLSNpZiBQTEFURk9STShJT1MpCisj
aWYgUExBVEZPUk0oSU9TKSAmJiAhRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKICAgICBpZiAoW21f
dmlkZW9MYXllciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFBJUE1vZGVFbmFibGVk
OildKQogICAgICAgICBbbV92aWRlb0xheWVyIHNldFBJUE1vZGVFbmFibGVkOihtb2RlICYgTWVk
aWFQbGF5ZXI6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKV07CiAgICAgdXBk
YXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQppbmRl
eCBlMzdhMmVhYzU3ZDExYzM0YWY4ZmUzYzE0MDljMDA5NjZhYjBmNGNkLi4wYTM2OTVhNzBiNTgy
YWRlNzRkMGM0ZDNjOWMzYzVlOTJhMTlkMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCkBA
IC0xMjgsNiArMTI4LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6c2Vl
a2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmIHRpbWUKIHsKICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IHNlZWthYmxlUmFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAKKyNpZiAhRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGltZVJhbmdlcy5sZW5ndGgoKTsgaSsrKSB7CiAgICAg
ICAgIGRvdWJsZSBzdGFydCA9IHRpbWVSYW5nZXMuc3RhcnQoaSkucmVsZWFzZVJldHVyblZhbHVl
KCk7CiAgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLmVuZChpKS5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKQEAgLTEzNSw2ICsxMzYsOSBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYgdGltZQogICAg
ICAgICBDTVRpbWVSYW5nZSByYW5nZSA9IENNVGltZVJhbmdlTWFrZShDTVRpbWVNYWtlV2l0aFNl
Y29uZHMoc3RhcnQsIDEwMDApLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMoZW5kLXN0YXJ0LCAxMDAw
KSk7CiAgICAgICAgIFtzZWVrYWJsZVJhbmdlcyBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRo
Q01UaW1lUmFuZ2U6cmFuZ2VdXTsKICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0aW1l
UmFuZ2VzKTsKKyNlbmRpZgogCiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRTZWVrYWJsZVRp
bWVSYW5nZXM6c2Vla2FibGVSYW5nZXMuZ2V0KCldOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIg
c2V0U2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZTogbGFzdE1vZGlmaWVkVGltZV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5oCmluZGV4IDUyZjhhMTJiM2Q0N2E0YzE1MjI4MTU2ODZlODE3
YjBlYTFmZWE1ZWYuLmUxMWZjMjUwM2FkOWFlYjJjMmQ4ZTNlZGU2ZTBmYmU0ZjU4ZmY1ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotT0JKQ19DTEFTUyBBVlBsYXllclZp
ZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBV
SVdpbmRvdzsKIE9CSkNfQ0xBU1MgVUlWaWV3OwpAQCAtNDgsNiArNDcsNyBAQCBPQkpDX0NMQVNT
IENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkFWUGxheWVyQ29udHJvbGxlcjsKIE9CSkNfQ0xBU1Mg
V2ViQVZQbGF5ZXJMYXllclZpZXc7CiBPQkpDX0NMQVNTIFdlYkFWUGxheWVyTGF5ZXI7CitPQkpD
X0NMQVNTIFdlYkFWUGxheWVyVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdlYkFWUGxheWVy
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIApAQCAtMTU3LDYg
KzE1NywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBib29sIGhhc01vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudE1vZGUuaGFzTW9kZShtb2RlKTsgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFVJVmll
d0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOworICAgIFVJVmlld0NvbnRy
b2xsZXIgKmZ1bGxzY3JlZW5WaWV3Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0Nv
bnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBXZWJBVlBsYXllckxheWVyVmlldyogcGxheWVyTGF5ZXJW
aWV3KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJMYXllclZpZXcuZ2V0KCk7IH0KKyNlbmRpZgor
CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQoUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQmKTsKIApAQCAtMTc1LDcgKzE4MSw3
IEBAIHByb3RlY3RlZDoKIAogICAgIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4g
bV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7CiAgICAgUmV0YWluUHRyPFdlYkFWUGxheWVyVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZT4gbV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlOwotICAg
IFJldGFpblB0cjxBVlBsYXllclZpZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdDb250cm9sbGVy
OworICAgIFJldGFpblB0cjxXZWJBVlBsYXllclZpZXdDb250cm9sbGVyPiBtX3BsYXllclZpZXdD
b250cm9sbGVyOwogICAgIFZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsIHsgbnVsbHB0ciB9OwogICAgIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKiBtX2Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tCmluZGV4IDAzZWZiZGUyM2YzYTcyY2FmZWRhZTU0NGVjODIzYzc2OTYyNmRmMmQuLjVlOTlj
MWYzYjUyMDZkYWU5NGYxZGI0OTVkMTkxY2U2NGIzZDQyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDAsOSArNDAsMTEgQEAKICNpbXBvcnQgIldlYkFWUGxheWVyQ29udHJvbGxl
ci5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWVGltZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlL
aXQuaD4KKyNpbXBvcnQgPFVJS2l0L1VJV2luZG93Lmg+CiAjaW1wb3J0IDxvYmpjL21lc3NhZ2Uu
aD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktp
dFNQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtOTMsNiArOTUsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGJv
b2xTdHJpbmcoYm9vbCB2YWwpCiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgZGVmYXVs
dFdhdGNoZG9nVGltZXJJbnRlcnZhbCB7IDFfcyB9Oworc3RhdGljIGJvb2wgaWdub3JlV2F0Y2hk
b2dGb3JEZWJ1Z2dpbmcgPSBmYWxzZTsKKworQGludGVyZmFjZSBBVlBsYXllclZpZXdDb250cm9s
bGVyIChEZXRhaWxzKQorQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hvd3NQbGF5YmFja0Nv
bnRyb2xzOworQHByb3BlcnR5IChub25hdG9taWMpIFVJVmlldyogdmlldzsKK0BlbmQKIAogQGNs
YXNzIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKQEAgLTQxMiwxMCArNDIwLDIzIEBAIHN0
YXRpYyB2b2lkIFdlYkFWUGxheWVyTGF5ZXJWaWV3X3NldFBsYXllckNvbnRyb2xsZXIoaWQgYVNl
bGYsIFNFTCwgQVZQbGF5ZXJDb250CiAgICAgW3dlYkFWUGxheWVyTGF5ZXIgc2V0UGxheWVyQ29u
dHJvbGxlcjogcGxheWVyQ29udHJvbGxlcl07CiB9CiAKK3N0YXRpYyBBVlBsYXllckxheWVyICpX
ZWJBVlBsYXllckxheWVyVmlld19wbGF5ZXJMYXllcihpZCBhU2VsZiwgU0VMKQoreworICAgIF9f
QVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxheWVyVmlldyA9IGFTZWxmOworCisgICAgaWYgKFtn
ZXRfX0FWUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpA
c2VsZWN0b3IocGxheWVyTGF5ZXIpXSkgeworICAgICAgICBvYmpjX3N1cGVyIHN1cGVyQ2xhc3Mg
eyBwbGF5ZXJMYXllclZpZXcsIGdldF9fQVZQbGF5ZXJMYXllclZpZXdDbGFzcygpIH07CisgICAg
ICAgIGF1dG8gc3VwZXJDbGFzc01ldGhvZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVZQbGF5ZXJMYXll
ciAqKCopKG9iamNfc3VwZXIgKiwgU0VMKT4ob2JqY19tc2dTZW5kU3VwZXIpOworICAgICAgICBy
ZXR1cm4gc3VwZXJDbGFzc01ldGhvZCgmc3VwZXJDbGFzcywgQHNlbGVjdG9yKHBsYXllckxheWVy
KSk7CisgICAgfQorCisgICAgcmV0dXJuIChBVlBsYXllckxheWVyICopW3BsYXllckxheWVyVmll
dyBsYXllcl07Cit9CisKIHN0YXRpYyBVSVZpZXcgKldlYkFWUGxheWVyTGF5ZXJWaWV3X3ZpZGVv
VmlldyhpZCBhU2VsZiwgU0VMKQogewotICAgIF9fQVZQbGF5ZXJMYXllclZpZXcgKnBsYXllckxh
eWVyID0gYVNlbGY7Ci0gICAgV2ViQVZQbGF5ZXJMYXllciAqd2ViQVZQbGF5ZXJMYXllciA9IChX
ZWJBVlBsYXllckxheWVyICopW3BsYXllckxheWVyIHBsYXllckxheWVyXTsKKyAgICBfX0FWUGxh
eWVyTGF5ZXJWaWV3ICpwbGF5ZXJMYXllclZpZXcgPSBhU2VsZjsKKyAgICBXZWJBVlBsYXllckxh
eWVyICp3ZWJBVlBsYXllckxheWVyID0gKFdlYkFWUGxheWVyTGF5ZXIgKilbcGxheWVyTGF5ZXJW
aWV3IHBsYXllckxheWVyXTsKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gW3dlYkFWUGxheWVy
TGF5ZXIgdmlkZW9TdWJsYXllcl07CiAgICAgaWYgKCF2aWRlb0xheWVyIHx8ICF2aWRlb0xheWVy
LmRlbGVnYXRlKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDg2LDEyICs1MDcsMTQgQEAgc3Rh
dGljIFdlYkFWUGxheWVyTGF5ZXJWaWV3ICphbGxvY1dlYkFWUGxheWVyTGF5ZXJWaWV3SW5zdGFu
Y2UoKQogICAgIHN0YXRpYyBDbGFzcyB0aGVDbGFzcyA9IG5pbDsKICAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Cisg
ICAgICAgIEFTU0VSVChnZXRfX0FWUGxheWVyTGF5ZXJWaWV3Q2xhc3MoKSk7CiAgICAgICAgIHRo
ZUNsYXNzID0gb2JqY19hbGxvY2F0ZUNsYXNzUGFpcihnZXRfX0FWUGxheWVyTGF5ZXJWaWV3Q2xh
c3MoKSwgIldlYkFWUGxheWVyTGF5ZXJWaWV3IiwgMCk7CiAgICAgICAgIGNsYXNzX2FkZE1ldGhv
ZCh0aGVDbGFzcywgQHNlbGVjdG9yKGRlYWxsb2MpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3
X2RlYWxsb2MsICJ2QDoiKTsKICAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2Vs
ZWN0b3Ioc2V0UGxheWVyQ29udHJvbGxlcjopLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3Nl
dFBsYXllckNvbnRyb2xsZXIsICJ2QDpAIik7CiAgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVD
bGFzcywgQHNlbGVjdG9yKHBsYXllckNvbnRyb2xsZXIpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJW
aWV3X3BsYXllckNvbnRyb2xsZXIsICJAQDoiKTsKICAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRo
ZUNsYXNzLCBAc2VsZWN0b3Ioc2V0VmlkZW9WaWV3OiksIChJTVApV2ViQVZQbGF5ZXJMYXllclZp
ZXdfc2V0VmlkZW9WaWV3LCAidkA6QCIpOwogICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xh
c3MsIEBzZWxlY3Rvcih2aWRlb1ZpZXcpLCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3ZpZGVv
VmlldywgIkBAOiIpOworICAgICAgICBjbGFzc19hZGRNZXRob2QodGhlQ2xhc3MsIEBzZWxlY3Rv
cihwbGF5ZXJMYXllciksIChJTVApV2ViQVZQbGF5ZXJMYXllclZpZXdfcGxheWVyTGF5ZXIsICJA
QDoiKTsKICAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRoZUNsYXNzLCBAc2VsZWN0b3Ioc3RhcnRS
b3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcpLCAoSU1QKVdlYkFW
UGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWaWV3LCAidkA6Iik7CiAgICAgICAgIGNsYXNzX2FkZE1ldGhvZCh0aGVDbGFzcywgQHNl
bGVjdG9yKHN0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXcp
LCAoSU1QKVdlYkFWUGxheWVyTGF5ZXJWaWV3X3N0b3BSb3V0aW5nVmlkZW9Ub1BpY3R1cmVJblBp
Y3R1cmVQbGF5ZXJMYXllclZpZXcsICJ2QDoiKTsKICAgICAgICAgY2xhc3NfYWRkTWV0aG9kKHRo
ZUNsYXNzLCBAc2VsZWN0b3IocGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyksIChJTVAp
V2ViQVZQbGF5ZXJMYXllclZpZXdfcGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldywgIkBA
OiIpOwpAQCAtNTA1LDYgKzUyOCwxOTcgQEAgc3RhdGljIFdlYkFWUGxheWVyTGF5ZXJWaWV3ICph
bGxvY1dlYkFWUGxheWVyTGF5ZXJWaWV3SW5zdGFuY2UoKQogICAgIHJldHVybiAoV2ViQVZQbGF5
ZXJMYXllclZpZXcgKilbdGhlQ2xhc3MgYWxsb2NdOwogfQogCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorQGludGVyZmFjZSBXZWJBVlBsYXllclZpZXdDb250cm9sbGVyIDogTlNPYmplY3Q8QVZQ
bGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlPgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnVs
bHNjcmVlbkludGVyZmFjZTooVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQgKilpbnRlcmZh
Y2U7CistICh2b2lkKWVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXI7CistICh2b2lkKWV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpc3RhcnRQaWN0dXJlSW5QaWN0dXJlOworLSAodm9pZClz
dG9wUGljdHVyZUluUGljdHVyZTsKKworLSAoQk9PTClwbGF5ZXJWaWV3Q29udHJvbGxlclNob3Vs
ZEhhbmRsZURvbmVCdXR0b25UYXA6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3
Q29udHJvbGxlcjsKK0BlbmQKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCitAaW1wbGVtZW50YXRp
b24gV2ViQVZQbGF5ZXJWaWV3Q29udHJvbGxlciB7CisgICAgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQgKl9mdWxsc2NyZWVuSW50ZXJmYWNlOworICAgIFJldGFpblB0cjxVSVZpZXdDb250
cm9sbGVyPiBfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyOworICAgIFJldGFpblB0cjxBVlBsYXll
clZpZXdDb250cm9sbGVyPiBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKKyAgICBpZDxBVlBsYXll
clZpZXdDb250cm9sbGVyRGVsZWdhdGVfV2ViS2l0T25seT4gX2RlbGVnYXRlOworfQorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOihWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdCAqKWludGVyZmFjZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2Z1bGxzY3JlZW5JbnRlcmZhY2UgPSBp
bnRlcmZhY2U7CisgICAgX2F2UGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FW
UGxheWVyVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Omlu
dGVyZmFjZS0+cGxheWVyTGF5ZXJWaWV3KCldKTsKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RF
KQorICAgIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmRlbGVnYXRlID0gc2VsZjsKKyNl
bmRpZgorCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEJPT0wpcGxheWVyVmlld0NvbnRyb2xs
ZXJTaG91bGRIYW5kbGVEb25lQnV0dG9uVGFwOihBVlBsYXllclZpZXdDb250cm9sbGVyICopcGxh
eWVyVmlld0NvbnRyb2xsZXIKK3sKKyAgICBBU1NFUlQocGxheWVyVmlld0NvbnRyb2xsZXIgPT0g
X2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkpOworICAgIGlmIChfZGVsZWdhdGUpCisgICAg
ICAgIHJldHVybiBbX2RlbGVnYXRlIHBsYXllclZpZXdDb250cm9sbGVyOnBsYXllclZpZXdDb250
cm9sbGVyIHNob3VsZEV4aXRGdWxsU2NyZWVuV2l0aFJlYXNvbjpBVlBsYXllclZpZXdDb250cm9s
bGVyRXhpdEZ1bGxTY3JlZW5SZWFzb25Eb25lQnV0dG9uVGFwcGVkXTsKKworICAgIHJldHVybiBZ
RVM7Cit9CisKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6KEJPT0wpYW5pbWF0ZWQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqIF9fbnVs
bGFibGUgZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01f
TU9ERSkKKyAgICBfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gX2Z1bGxzY3JlZW5JbnRlcmZh
Y2UtPnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOworCisgICAgX2F2UGxheWVyVmlld0NvbnRy
b2xsZXIuZ2V0KCkudmlldy5mcmFtZSA9IF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIuZ2V0KCku
dmlldy5mcmFtZTsKKyAgICBbX3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0Nv
bnRyb2xsZXI6X2Z1bGxzY3JlZW5JbnRlcmZhY2UtPmZ1bGxzY3JlZW5WaWV3Q29udHJvbGxlcigp
IGFuaW1hdGVkOmFuaW1hdGVkIGNvbXBsZXRpb246XnsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25I
YW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBuaWwpOworICAgIH1d
OworI2Vsc2UKKyAgICBbX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkgZW50ZXJGdWxsU2Ny
ZWVuQW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJd
OworI2VuZGlmCit9CisKKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDooQk9PTClhbmlt
YXRlZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzLCBOU0Vycm9yICog
X19udWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoRVhUUkFf
Wk9PTV9NT0RFKQorICAgIGlmICghX3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgW19wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250
cm9sbGVyQW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlvbjpeeworICAgICAgICBfcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyID0gbmlsOworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIG5pbCk7CisgICAgfV07CisjZWxzZQor
ICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSBleGl0RnVsbFNjcmVlbkFuaW1hdGVk
OmFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyNlbmRpZgor
fQorCisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyNkZWZpbmUgTVlfTk9fUkVUVVJOIE5P
X1JFVFVSTl9EVUVfVE9fQVNTRVJUCisjZWxzZQorI2RlZmluZSBNWV9OT19SRVRVUk4KKyNlbmRp
ZgorCistICh2b2lkKXN0YXJ0UGljdHVyZUluUGljdHVyZSBNWV9OT19SRVRVUk4KK3sKKyNpZiBF
TkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vsc2UK
KyAgICBbX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkgc3RhcnRQaWN0dXJlSW5QaWN0dXJl
XTsKKyNlbmRpZgorfQorCistICh2b2lkKXN0b3BQaWN0dXJlSW5QaWN0dXJlIE1ZX05PX1JFVFVS
TgoreworI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisjZWxzZQorICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSBzdG9wUGljdHVy
ZUluUGljdHVyZV07CisjZW5kaWYKK30KKworLSAoQk9PTClpc1BpY3R1cmVJblBpY3R1cmVQb3Nz
aWJsZQoreworI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgcmV0dXJuIE5POworI2Vs
c2UKKyAgICByZXR1cm4gX2F2UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuaXNQaWN0dXJlSW5Q
aWN0dXJlUG9zc2libGU7CisjZW5kaWYKK30KKworLSAoQk9PTClpc1BpY3R1cmVJblBpY3R1cmVB
Y3RpdmUKK3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIHJldHVybiBOTzsKKyNl
bHNlCisgICAgcmV0dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmlzUGljdHVyZUlu
UGljdHVyZUFjdGl2ZTsKKyNlbmRpZgorfQorCistIChCT09MKXBpY3R1cmVJblBpY3R1cmVBY3Rp
dmUKK3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQorICAgIHJldHVybiBOTzsKKyNlbHNl
CisgICAgcmV0dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLnBpY3R1cmVJblBpY3R1
cmVBY3RpdmU7CisjZW5kaWYKK30KKworLSAoQk9PTClwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRl
ZFdoZW5FbnRlcmluZ0JhY2tncm91bmQKK3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQor
ICAgIHJldHVybiBOTzsKKyNlbHNlCisgICAgcmV0dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVy
LmdldCgpLnBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZDsK
KyNlbmRpZgorfQorCistIChVSVZpZXcgKikgdmlldworeworICAgIHJldHVybiBfYXZQbGF5ZXJW
aWV3Q29udHJvbGxlci5nZXQoKS52aWV3OworfQorCistIChCT09MKXNob3dzUGxheWJhY2tDb250
cm9scworeworI2lmIEVOQUJMRShFWFRSQV9aT09NX01PREUpCisgICAgcmV0dXJuIFlFUzsKKyNl
bHNlCisgICAgcmV0dXJuIF9hdlBsYXllclZpZXdDb250cm9sbGVyLmdldCgpLnNob3dzUGxheWJh
Y2tDb250cm9sczsKKyNlbmRpZgorfQorCistICh2b2lkKXNldFNob3dzUGxheWJhY2tDb250cm9s
czooQk9PTClzaG93c1BsYXliYWNrQ29udHJvbHMKK3sKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9N
T0RFKQorICAgIFVOVVNFRF9QQVJBTShzaG93c1BsYXliYWNrQ29udHJvbHMpOworI2Vsc2UKKyAg
ICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5zaG93c1BsYXliYWNrQ29udHJvbHMgPSBz
aG93c1BsYXliYWNrQ29udHJvbHM7CisjZW5kaWYKK30KKworLSAodm9pZClzZXRBbGxvd3NQaWN0
dXJlSW5QaWN0dXJlUGxheWJhY2s6KEJPT0wpYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNr
Cit7CisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICBVTlVTRURfUEFSQU0oYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrKTsKKyNlbHNlCisgICAgX2F2UGxheWVyVmlld0NvbnRy
b2xsZXIuZ2V0KCkuYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrID0gYWxsb3dzUGljdHVy
ZUluUGljdHVyZVBsYXliYWNrOworI2VuZGlmCit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlk
IDxBVlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCit7CisjaWYgRU5BQkxF
KEVYVFJBX1pPT01fTU9ERSkKKyAgICBBU1NFUlQoIWRlbGVnYXRlIHx8IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsYXllclZpZXdDb250cm9sbGVyOnNob3VsZEV4aXRG
dWxsU2NyZWVuV2l0aFJlYXNvbjopXSk7CisgICAgX2RlbGVnYXRlID0gaWQ8QVZQbGF5ZXJWaWV3
Q29udHJvbGxlckRlbGVnYXRlX1dlYktpdE9ubHk+KGRlbGVnYXRlKTsKKyNlbHNlCisgICAgX2F2
UGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyNlbmRpZgor
fQorCistICh2b2lkKXNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBs
YXllckNvbnRyb2xsZXIKK3sKKyAgICBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5wbGF5
ZXJDb250cm9sbGVyID0gcGxheWVyQ29udHJvbGxlcjsKK30KKworLSAoQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlciAqKSBhdlBsYXllclZpZXdDb250cm9sbGVyCit7CisgICAgcmV0dXJuIF9hdlBsYXll
clZpZXdDb250cm9sbGVyLmdldCgpOworfQorCistICh2b2lkKXJlbW92ZUZyb21QYXJlbnRWaWV3
Q29udHJvbGxlcgoreworICAgIFtfYXZQbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKSByZW1vdmVG
cm9tUGFyZW50Vmlld0NvbnRyb2xsZXJdOworfQorQGVuZAorCiBSZWY8VmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ+IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpjcmVhdGUoUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkKIHsK
ICAgICBSZWY8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IGludGVyZmFjZSA9IGFkb3B0
UmVmKCpuZXcgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQocGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlKSk7CkBAIC02MTksNiArODMzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdCBJbnQKICAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFj
dGlvbnM6WUVTXTsKIAorI2lmICFFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIGlmICghW1tt
X3BhcmVudFZpZXcgd2luZG93XSBfaXNIb3N0ZWRJbkFub3RoZXJQcm9jZXNzXSkgewogICAgICAg
ICBpZiAoIW1fd2luZG93KQogICAgICAgICAgICAgbV93aW5kb3cgPSBhZG9wdE5TKFthbGxvY1VJ
V2luZG93SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOltbZ2V0VUlTY3JlZW5DbGFzcygpIG1haW5T
Y3JlZW5dIGJvdW5kc11dKTsKQEAgLTYzMSw2ICs4NDYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1ZpZXcsIGNvbnN0
IEludAogICAgICAgICBbbV93aW5kb3cgc2V0V2luZG93TGV2ZWw6Z2V0VUlUZXh0RWZmZWN0c0Jl
bmVhdGhTdGF0dXNCYXJXaW5kb3dMZXZlbCgpICsgMV07CiAgICAgICAgIFttX3dpbmRvdyBtYWtl
S2V5QW5kVmlzaWJsZV07CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAoIW1fcGxheWVyTGF5ZXJW
aWV3KQogICAgICAgICBtX3BsYXllckxheWVyVmlldyA9IGFkb3B0TlMoW2FsbG9jV2ViQVZQbGF5
ZXJMYXllclZpZXdJbnN0YW5jZSgpIGluaXRdKTsKQEAgLTY0MywyOSArODU5LDMwIEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZp
ZGVvVmlldywgY29uc3QgSW50CiAgICAgfQogCiAgICAgV2ViQVZQbGF5ZXJMYXllciAqcGxheWVy
TGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVttX3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXll
cl07Ci0KICAgICBbcGxheWVyTGF5ZXIgc2V0TW9kZWxWaWRlb0xheWVyRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCBtX2lubGluZVJlY3Qud2lkdGgoKSwgbV9pbmxpbmVSZWN0LmhlaWdodCgpKV07CiAg
ICAgW3BsYXllckxheWVyIHNldFZpZGVvRGltZW5zaW9uczpbcGxheWVyQ29udHJvbGxlcigpIGNv
bnRlbnREaW1lbnNpb25zXV07CiAgICAgcGxheWVyTGF5ZXIuZnVsbHNjcmVlbkludGVyZmFjZSA9
IHRoaXM7CiAKICAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRyb2xsZXIpCi0gICAgICAgIG1fcGxh
eWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyVmlld0NvbnRyb2xsZXJJ
bnN0YW5jZSgpIGluaXRXaXRoUGxheWVyTGF5ZXJWaWV3Om1fcGxheWVyTGF5ZXJWaWV3LmdldCgp
XSk7CisgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQbGF5
ZXJWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOnRoaXNd
KTsKIAogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9s
czpOT107CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0UGxheWVyQ29udHJvbGxlcjoo
QVZQbGF5ZXJDb250cm9sbGVyICopcGxheWVyQ29udHJvbGxlcigpXTsKICAgICBbbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUu
Z2V0KCldOwogICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldEFsbG93c1BpY3R1cmVJblBp
Y3R1cmVQbGF5YmFjazptX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFja107Ci0KICAgICBb
cGxheWVyQ29udHJvbGxlcigpIHNldFBpY3R1cmVJblBpY3R1cmVQb3NzaWJsZTptX2FsbG93c1Bp
Y3R1cmVJblBpY3R1cmVQbGF5YmFja107CiAKKyNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQor
ICAgIG1fdmlld0NvbnRyb2xsZXIgPSBtb2RlbCgpLT5jcmVhdGVWaWRlb0Z1bGxzY3JlZW5WaWV3
Q29udHJvbGxlcihtX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpLmF2UGxheWVyVmlld0NvbnRy
b2xsZXIpOworI2VuZGlmCisKICAgICBpZiAobV92aWV3Q29udHJvbGxlcikgewotICAgICAgICBb
bV92aWV3Q29udHJvbGxlciBhZGRDaGlsZFZpZXdDb250cm9sbGVyOm1fcGxheWVyVmlld0NvbnRy
b2xsZXIuZ2V0KCldOworICAgICAgICBbbV92aWV3Q29udHJvbGxlciBhZGRDaGlsZFZpZXdDb250
cm9sbGVyOm1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuYXZQbGF5ZXJWaWV3Q29udHJvbGxl
cl07CiAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBhZGRTdWJ2aWV3OlttX3BsYXll
clZpZXdDb250cm9sbGVyIHZpZXddXTsKICAgICB9IGVsc2UKICAgICAgICAgW21fcGFyZW50Vmll
dyBhZGRTdWJ2aWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddXTsKIAogICAgIFttX3Bs
YXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVj
dDptX2lubGluZVJlY3QgdG9WaWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLnN1cGVy
dmlld107Ci0KICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3Vu
ZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmll
d10gc2V0QXV0b3Jlc2l6aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0b21N
YXJnaW4gfCBVSVZpZXdBdXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CiAKQEAgLTcw
Niw2ICs5MjMsMjggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJQ
aWN0dXJlSW5QaWN0dXJlKCkKICAgICAgICAgZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUo
KTsKIH0KIAorc3RhdGljIFVJVmlld0NvbnRyb2xsZXIgKmZhbGxiYWNrVmlld0NvbnRyb2xsZXIo
VUlWaWV3ICp2aWV3KQoreworICAgIGZvciAoVUlWaWV3ICpjdXJyZW50VmlldyA9IHZpZXc7IGN1
cnJlbnRWaWV3OyBjdXJyZW50VmlldyA9IGN1cnJlbnRWaWV3LnN1cGVydmlldykgeworICAgICAg
ICBpZiAoVUlWaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIgPSBbZ2V0VUlWaWV3Q29udHJv
bGxlckNsYXNzKCkgdmlld0NvbnRyb2xsZXJGb3JWaWV3OmN1cnJlbnRWaWV3XSkgeworICAgICAg
ICAgICAgaWYgKCFbdmlld0NvbnRyb2xsZXIgcGFyZW50Vmlld0NvbnRyb2xsZXJdKQorICAgICAg
ICAgICAgICAgIHJldHVybiB2aWV3Q29udHJvbGxlcjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGZpbmQgYSB2aWV3IGNvbnRyb2xsZXIgc3VpdGFibGUgdG8g
cHJlc2VudCBmdWxsc2NyZWVuIHZpZGVvIik7CisgICAgcmV0dXJuIG5pbDsKK30KKworVUlWaWV3
Q29udHJvbGxlciAqVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXNlbnRpbmdWaWV3
Q29udHJvbGxlcigpCit7CisgICAgYXV0byAqY29udHJvbGxlciA9IG1vZGVsKCktPnByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcigpOworICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgY29udHJv
bGxlciA9IGZhbGxiYWNrVmlld0NvbnRyb2xsZXIobV9wYXJlbnRWaWV3LmdldCgpKTsKKworICAg
IHJldHVybiBjb250cm9sbGVyOworfQorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0OjplbnRlckZ1bGxzY3JlZW5TdGFuZGFyZCgpCiB7CiAgICAgTE9HKEZ1bGxzY3JlZW4sICJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoJXAp
IiwgdGhpcyk7CkBAIC0xMDE1LDcgKzEyNTQsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpzaG91bGRFeGl0RnVsbHNjcmVlbldpdGhSZWFzb24oVmlkZW9GdWxsc2NyZQog
ICAgIEJPT0wgZmluaXNoZWQgPSByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OkRvbmVC
dXR0b25UYXBwZWQgfHwgcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpQaW5jaEdlc3R1
cmVIYW5kbGVkOwogICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVu
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lLCBmaW5p
c2hlZCk7CiAKLSAgICBpZiAoIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpKQorICAgIGlmICgh
bV93YXRjaGRvZ1RpbWVyLmlzQWN0aXZlKCkgJiYgIWlnbm9yZVdhdGNoZG9nRm9yRGVidWdnaW5n
KQogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGRlZmF1bHRXYXRjaGRvZ1Rp
bWVySW50ZXJ2YWwpOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMwMSw3ICsxNTQwLDcgQEAg
Ym9vbCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5X
aXRoUmVhc29uKFZpZGVvRnVsbHNjcmUKICAgICBCT09MIGZpbmlzaGVkID0gcmVhc29uID09IEV4
aXRGdWxsU2NyZWVuUmVhc29uOjpEb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVs
bFNjcmVlblJlYXNvbjo6UGluY2hHZXN0dXJlSGFuZGxlZDsKICAgICBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmluaXNoZWQpOwogCi0gICAgaWYgKCFtX3dhdGNoZG9nVGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICBpZiAoIW1fd2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpICYmICFp
Z25vcmVXYXRjaGRvZ0ZvckRlYnVnZ2luZykKICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0
T25lU2hvdChkZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsKTsKIAogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEzNjAsNiArMTU5OSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmRvU2V0dXAoKQogICAgIH0KICAgICBtX3NldHVwTmVlZHNJbmxpbmVSZWN0ID0gZmFsc2U7
CiAKKyNpZiAhRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdp
bl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKICAgICBpZiAo
IVtbbV9wYXJlbnRWaWV3IHdpbmRvd10gX2lzSG9zdGVkSW5Bbm90aGVyUHJvY2Vzc10gJiYgIW1f
d2luZG93KSB7CkBAIC0xMzc0LDYgKzE2MTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Ojpkb1NldHVwKCkKICAgICAgICAgW21fd2luZG93IHNldFdpbmRvd0xldmVsOmdl
dFVJVGV4dEVmZmVjdHNCZW5lYXRoU3RhdHVzQmFyV2luZG93TGV2ZWwoKSArIDFdOwogICAgICAg
ICBbbV93aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOwogICAgIH0KKyNlbmRpZgogCiAgICAgaWYg
KCFtX3BsYXllckxheWVyVmlldykKICAgICAgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBhZG9wdE5T
KFthbGxvY1dlYkFWUGxheWVyTGF5ZXJWaWV3SW5zdGFuY2UoKSBpbml0XSk7CkBAIC0xMzkyLDIz
ICsxNjMzLDI1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXAo
KQogICAgIHBsYXllckxheWVyLmZ1bGxzY3JlZW5JbnRlcmZhY2UgPSB0aGlzOwogCiAgICAgaWYg
KCFtX3BsYXllclZpZXdDb250cm9sbGVyKQotICAgICAgICBtX3BsYXllclZpZXdDb250cm9sbGVy
ID0gYWRvcHROUyhbYWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0
aFBsYXllckxheWVyVmlldzptX3BsYXllckxheWVyVmlldy5nZXQoKV0pOworICAgICAgICBtX3Bs
YXllclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFWUGxheWVyVmlld0NvbnRyb2xsZXIg
YWxsb2NdIGluaXRXaXRoRnVsbHNjcmVlbkludGVyZmFjZTp0aGlzXSk7CiAKICAgICBbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOwogICAgIFttX3Bs
YXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxl
ciAqKXBsYXllckNvbnRyb2xsZXIoKV07CiAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0
RGVsZWdhdGU6bV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsKICAgICBbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2s6bV9h
bGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOwotCiAgICAgW3BsYXllckNvbnRyb2xsZXIo
KSBzZXRQaWN0dXJlSW5QaWN0dXJlUG9zc2libGU6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxh
eWJhY2tdOwogCisjaWYgRU5BQkxFKEVYVFJBX1pPT01fTU9ERSkKKyAgICBtX3ZpZXdDb250cm9s
bGVyID0gbW9kZWwoKS0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIobV9wbGF5
ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVyKTsKKyNlbmRpZgor
CiAgICAgaWYgKG1fdmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgW21fdmlld0NvbnRyb2xsZXIg
YWRkQ2hpbGRWaWV3Q29udHJvbGxlcjptX3BsYXllclZpZXdDb250cm9sbGVyLmdldCgpXTsKKyAg
ICAgICAgW21fdmlld0NvbnRyb2xsZXIgYWRkQ2hpbGRWaWV3Q29udHJvbGxlcjptX3BsYXllclZp
ZXdDb250cm9sbGVyLmdldCgpLmF2UGxheWVyVmlld0NvbnRyb2xsZXJdOwogICAgICAgICBbW21f
dmlld0NvbnRyb2xsZXIgdmlld10gYWRkU3VidmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2
aWV3XV07CiAgICAgfSBlbHNlCiAgICAgICAgIFttX3BhcmVudFZpZXcgYWRkU3VidmlldzpbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XV07CiAKICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciB2aWV3XS5mcmFtZSA9IFttX3BhcmVudFZpZXcgY29udmVydFJlY3Q6bV9pbmxpbmVSZWN0IHRv
VmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwotCiAgICAgW1tt
X3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJQ29s
b3IoKV07CiAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEF1dG9yZXNpemlu
Z01hc2s6KFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlQm90dG9tTWFyZ2luIHwgVUlWaWV3QXV0
b3Jlc2l6aW5nRmxleGlibGVSaWdodE1hcmdpbildOwogCkBAIC0xNjI5LDcgKzE4NzIsNyBAQCBi
b29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojppc1BsYXlpbmdWaWRlb0luRW5oYW5j
ZWRGdWxsc2NyZWVuKCkgY29uc3QKIAogYm9vbCBXZWJDb3JlOjpzdXBwb3J0c1BpY3R1cmVJblBp
Y3R1cmUoKQogewotI2lmIFBMQVRGT1JNKElPUykgJiYgSEFWRShBVktJVCkKKyNpZiBQTEFURk9S
TShJT1MpICYmIEhBVkUoQVZLSVQpICYmICFFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIHJl
dHVybiBbZ2V0QVZQaWN0dXJlSW5QaWN0dXJlQ29udHJvbGxlckNsYXNzKCkgaXNQaWN0dXJlSW5Q
aWN0dXJlU3VwcG9ydGVkXTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0KaW5kZXggM2NjOThkZjgwMzAyNTc1OTYyYmU2MGI2Njk2MzIyYmE2
ODcxODZhNi4uMDQwMmZlY2U2OTY5YzM4MmJhZmQ3NWQ5ZmNjZDMyZWIzZTA3NTAwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0Vs
ZW1lbnQmIHZpZGVvRWwKICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFZpZGVvRnVsbHNjcmVlbkNo
YW5nZU9ic2VydmVyKHRoaXMpOwogCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuVmlldyA9IGFk
b3B0TlMoW2FsbG9jVUlWaWV3SW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgICAgIAorCiAgICAgICAg
IG1faW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4oKm1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQo
KSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGlj
dHVyZUluUGljdHVyZSwgZmFsc2UpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApp
bmRleCAzY2I4MWE3N2Q0YWFhMzk5MTEyNTk4YTc5OTkxZDZhNjg1ZTEyYTRjLi4yYjYzNjMyYTFm
M2M1N2FlMGM4ZmRkYTY1ZjhiNDIzZWYzMmY2ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApA
QCAtODUsNiArODUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hh
c1ZpZGVvOyB9CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmlkZW9EaW1lbnNpb25zOyB9CisjaWYgUExBVEZPUk0oSU9T
KQorICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIGZpbmFs
OworICAgIFVJVmlld0NvbnRyb2xsZXIgKmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9s
bGVyKEFWUGxheWVyVmlld0NvbnRyb2xsZXIqKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgLy8gVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKICAgICB2b2lkIHJlcXVlc3RVcGRhdGVJbmxpbmVS
ZWN0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNGZmMjc3NDMxYTZj
YzhhMTcwZTE3NGNjYjAyZDA5MzM3NTAyY2YxNS4uN2JmMjY1OTA3ZTI0ZTQ4MjVjZDc0NjE3MDVi
ZDYwYWJmMWQ4MzQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszMyw3IEBACiAj
aW1wb3J0ICJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCiAjaW1wb3J0ICJXZWJQ
YWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8UXVhcnR6
Q29yZS9Db3JlQW5pbWF0aW9uLmg+CkBAIC00NCw4ICs0NSwxMSBAQAogI2lmIFBMQVRGT1JNKElP
UykKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQg
IlVJS2l0U1BJLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CiAjZW5kaWYK
IAordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwogQGludGVyZmFjZSBXS0xheWVySG9zdFZpZXcg
OiBQbGF0Zm9ybVZpZXcKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIHVpbnQzMl90IGNv
bnRleHRJRDsKIEBlbmQKQEAgLTc3LDYgKzgxLDQ4IEBACiAKIEBlbmQKIAorI2lmIFBMQVRGT1JN
KElPUykKK0BpbnRlcmZhY2UgV0tWaWRlb0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciA6IFVJVmll
d0NvbnRyb2xsZXIKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEFWUGxheWVyVmlld0NvbnRyb2xs
ZXI6KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlciBOU19ERVNJR05BVEVE
X0lOSVRJQUxJWkVSOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmliTmFtZTooTlNTdHJpbmcg
KiBfTnVsbGFibGUpbmliTmFtZU9yTmlsIGJ1bmRsZTooTlNCdW5kbGUgKiBfTnVsbGFibGUpbmli
QnVuZGxlT3JOaWwgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2Rl
cjooTlNDb2RlciAqKWFEZWNvZGVyIE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWlu
aXQgTlNfVU5BVkFJTEFCTEU7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1ZpZGVvRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyIHsKKyAgICBXZWFrT2JqQ1B0cjxBVlBsYXllclZpZXdDb250cm9s
bGVyPiBfYXZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjooQVZQbGF5ZXJWaWV3Q29udHJvbGxlciAqKWNvbnRy
b2xsZXIKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoTmliTmFtZTpuaWwgYnVu
ZGxlOm5pbF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2F2UGxheWVyVmlld0NvbnRy
b2xsZXIgPSBjb250cm9sbGVyOworICAgIHNlbGYubW9kYWxQcmVzZW50YXRpb25DYXB0dXJlc1N0
YXR1c0JhckFwcGVhcmFuY2UgPSBZRVM7CisgICAgc2VsZi5tb2RhbFByZXNlbnRhdGlvblN0eWxl
ID0gVUlNb2RhbFByZXNlbnRhdGlvbk92ZXJGdWxsU2NyZWVuOworCisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpdmlld0RpZExvYWQKK3sKKyAgICBbc3VwZXIgdmlld0RpZExvYWRdOwor
CisgICAgc2VsZi52aWV3LmZyYW1lID0gVUlTY3JlZW4ubWFpblNjcmVlbi5ib3VuZHM7CisgICAg
c2VsZi52aWV3LmJhY2tncm91bmRDb2xvciA9IFtVSUNvbG9yIGJsYWNrQ29sb3JdOworICAgIFtf
YXZQbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5hdXRvcmVzaXppbmdNYXNrID0gVUlWaWV3QXV0
b3Jlc2l6aW5nRmxleGlibGVXaWR0aCB8IFVJVmlld0F1dG9yZXNpemluZ0ZsZXhpYmxlSGVpZ2h0
OworfQorCistIChCT09MKXByZWZlcnNTdGF0dXNCYXJIaWRkZW4KK3sKKyAgICByZXR1cm4gWUVT
OworfQorCitAZW5kCisKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xNjcsNiArMjEzLDIxIEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0Ojppc1Zpc2libGUoKSBjb25zdAogICAgIHJldHVybiBtX21hbmFnZXIgPyBt
X21hbmFnZXItPmlzVmlzaWJsZSgpIDogZmFsc2U7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitV
SVZpZXdDb250cm9sbGVyICpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnByZXNlbnRpbmdW
aWV3Q29udHJvbGxlcigpCit7CisgICAgaWYgKG1fbWFuYWdlcikKKyAgICAgICAgcmV0dXJuIG1f
bWFuYWdlci0+bV9wYWdlLT51aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwor
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1VJVmlld0NvbnRyb2xsZXIgKlZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIoQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlciAqYXZQbGF5ZXJWaWV3Q29udHJvbGxlcikKK3sKKyAgICByZXR1
cm4gW1tXS1ZpZGVvRnVsbFNjcmVlblZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFWUGxh
eWVyVmlld0NvbnRyb2xsZXI6YXZQbGF5ZXJWaWV3Q29udHJvbGxlcl07Cit9CisjZW5kaWYKKwog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0
KCkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA1MzM2MWYyNzVm
Yzk2YTM4NDdmYjhiZDBhM2RhMjY5NTU4ZDZlMjJhLi4yMTQwYmRkMTllYTUxMjc2M2UzMjFiNDMy
NjUzMDAyYTNkNzViMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtNDM5LDEzICs0MzksMTcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKQogICAgIGludGVyZmFjZS0+c2V0SXNBbmltYXRpbmcoZmFsc2UpOwogICAgIGlu
dGVyZmFjZS0+c2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKIAotICAgIGlmIChpbnRlcmZhY2UtPnRh
cmdldElzRnVsbHNjcmVlbigpKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWZQdHI8SFRNTFZp
ZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZpZGVvRWxlbWVudCgpOwogICAgIGlm
ICghdmlkZW9FbGVtZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHZpZGVvRWxlbWVudF0geworICAgICAgICB2aWRlb0VsZW1lbnQtPmRpZEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KCk7CisgICAgfSk7CisKKyAgICBpZiAoaW50ZXJmYWNlLT50YXJnZXRJc0Z1
bGxzY3JlZW4oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gZXhpdCBmdWxsc2NyZWVuIG5v
dyBpZiBpdCB3YXMgcHJldmlvdXNseSByZXF1ZXN0ZWQgZHVyaW5nIGFuIGFuaW1hdGlvbi4KICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudF0gewogICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+bV9wYWdlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>