<?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>222270</bug_id>
          
          <creation_ts>2021-02-22 08:01:51 -0800</creation_ts>
          <short_desc>Implement WebXR getViewport</short_desc>
          <delta_ts>2021-04-19 03:27:57 -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>WebXR</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Imanol Fernandez">ifernandez</reporter>
          <assigned_to name="Imanol Fernandez">ifernandez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732127</commentid>
    <comment_count>0</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-22 08:01:51 -0800</bug_when>
    <thetext>Implement WebXRWebGLLayer::getViewport() and related viewport scaling support methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732143</commentid>
    <comment_count>1</comment_count>
      <attachid>421197</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-22 08:42:02 -0800</bug_when>
    <thetext>Created attachment 421197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732146</commentid>
    <comment_count>2</comment_count>
      <attachid>421199</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-22 08:55:33 -0800</bug_when>
    <thetext>Created attachment 421199
Patch

Fix changelog nit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732149</commentid>
    <comment_count>3</comment_count>
      <attachid>421197</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-02-22 09:09:01 -0800</bug_when>
    <thetext>Comment on attachment 421197
Patch

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

Looking good, just a few changes here and there required.

&gt; Source/WebCore/ChangeLog:9
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=222270

Duplicate entry

&gt; Source/WebCore/ChangeLog:13
&gt; +        * Modules/webxr/WebXRFrame.cpp: set WebXRView viewport modifiable value.

Nit, the comment is added in the line having the method name not in the line with the source file (unless it&apos;s a general comment for the file)

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:313
&gt; +    // Only immersive sessions viewport scaling.

Maybe &quot;support&quot; is missing between &quot;sessions&quot; and &quot;viewport&quot;

&gt; Source/WebCore/Modules/webxr/WebXRView.cpp:38
&gt; +static constexpr double kMinViewportScale = 0.2;

Does it come from specs? If so please add a link for reference.

&gt; Source/WebCore/Modules/webxr/WebXRViewport.h:50
&gt; +    WebXRViewport(const IntRect&amp;);

explicit

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:217
&gt; +    // Compute the scaled viewport.

From the specs it looks like this computation should be only done if 6. is true, so I guess you have to move it all to the if block above.

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:235
&gt; +    else /// XREye::None

better write this as 

else {
 // XREye::None
 viewportRect.
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732503</commentid>
    <comment_count>4</comment_count>
      <attachid>421197</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-23 05:52:33 -0800</bug_when>
    <thetext>Comment on attachment 421197
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=222270
&gt; 
&gt; Duplicate entry

Fixed

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        * Modules/webxr/WebXRFrame.cpp: set WebXRView viewport modifiable value.
&gt; 
&gt; Nit, the comment is added in the line having the method name not in the line with the source file (unless it&apos;s a general comment for the file)

Fixed

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:313
&gt;&gt; +    // Only immersive sessions viewport scaling.
&gt; 
&gt; Maybe &quot;support&quot; is missing between &quot;sessions&quot; and &quot;viewport&quot;

Yes, I wanted to add &quot;support&quot; work in that comment

&gt;&gt; Source/WebCore/Modules/webxr/WebXRView.cpp:38
&gt;&gt; +static constexpr double kMinViewportScale = 0.2;
&gt; 
&gt; Does it come from specs? If so please add a link for reference.

It&apos;s an arbitrary value. I added some comments. Chrome is using around 0.05 now and Gecko around 0.2 IIRC.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRViewport.h:50
&gt;&gt; +    WebXRViewport(const IntRect&amp;);
&gt; 
&gt; explicit

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:217
&gt;&gt; +    // Compute the scaled viewport.
&gt; 
&gt; From the specs it looks like this computation should be only done if 6. is true, so I guess you have to move it all to the if block above.

The spec only updates the viewports when dirty while the patch was computing them on each getViewport call. I updated the patch to user dirty checking. We also need to handle canvasResize to do it correctly

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:235
&gt;&gt; +    else /// XREye::None
&gt; 
&gt; better write this as 
&gt; 
&gt; else {
&gt;  // XREye::None
&gt;  viewportRect.
&gt; }

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732504</commentid>
    <comment_count>5</comment_count>
      <attachid>421306</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-23 05:54:56 -0800</bug_when>
    <thetext>Created attachment 421306
Patch

Address review feedback. Only compute the viewports when dirty</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732833</commentid>
    <comment_count>6</comment_count>
      <attachid>421306</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-02-24 05:05:21 -0800</bug_when>
    <thetext>Comment on attachment 421306
Patch

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

Awesome job, thanks!

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:313
&gt; +    // Only immersive sessions support viewport scaling.

We can probably get rid of this comment, the code bellow is self-descriptive (let&apos;s do it in a follow up though)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732838</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-24 05:09:55 -0800</bug_when>
    <thetext>Committed r273381: &lt;https://commits.webkit.org/r273381&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421306.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732839</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-24 05:10:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/74691035&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421197</attachid>
            <date>2021-02-22 08:42:02 -0800</date>
            <delta_ts>2021-02-22 08:55:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222270-20210222174201.patch</filename>
            <type>text/plain</type>
            <size>23646</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0NDU1OGNjNTgzNTkx
Mzk5YmY2YWFmOGNhMGE2MzBhNWM4NDVjNy4uZWIwMTYxYTExMGY5N2I4OGUwZGVlNmM4NWRiOGQx
YmY4N2I0ZWM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTAyLTIyICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBXZWJYUiBnZXRWaWV3cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyMjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdldFZpZXdwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIyNzAKKworICAgICAgICBUZXN0ZWQg
YnkgdGhlIFdlYlhSIFdQVCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJG
cmFtZS5jcHA6IHNldCBXZWJYUlZpZXcgdmlld3BvcnQgbW9kaWZpYWJsZSB2YWx1ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmdldFZpZXdlclBvc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6aXNB
bmltYXRpb25GcmFtZSBjb25zdCk6IGFkZCBtZXRob2QuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5jcHA6IEltcGxlbWVudCBzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygp
LgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpzdXBwb3J0c1ZpZXdwb3J0U2NhbGlu
ZyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaDoKKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcDogQWRkIHZpZXdwb3J0IHNjYWxlIGRh
dGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJYUlZpZXc6OldlYlhSVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXc6
OnJlY29tbWVuZGVkVmlld3BvcnRTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UlZpZXc6OnJlcXVlc3RWaWV3cG9ydFNjYWxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpmcmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXc6OmN1cnJlbnRWaWV3cG9ydFNjYWxlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSVmlldzo6c2V0Q3VycmVudFZpZXdwb3J0U2NhbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpyZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSVmlldzo6aXNWaWV3cG9ydE1vZGlmaWFibGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpzZXRWaWV3cG9ydE1vZGlmaWFibGUp
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaWRsOiBhZGQgcmVxdWVzdFZp
ZXdwb3J0U2NhbGUoKSBhbmQgcmVjb21tZW5kZWRWaWV3cG9ydFNjYWxlLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdwb3J0LmNwcDogSW1wbGVtZW50IHZpZXdwb3J0IHJlY3Qg
dmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3cG9ydDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSVmlld3BvcnQ6OldlYlhSVmlld3BvcnQpOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJWaWV3cG9ydC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3
cG9ydDo6eCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdwb3J0Ojp5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSVmlld3BvcnQ6OndpZHRoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSVmlld3BvcnQ6OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJYUlZpZXdwb3J0Ojp1cGRhdGVWaWV3cG9ydCk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHA6IEltcGxlbWVudCBnZXRWaWV3cG9ydCgpCisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OldlYlhSV2ViR0xMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjptX3JpZ2h0Vmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJH
TExheWVyOjpnZXRWaWV3cG9ydCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdM
TGF5ZXIuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmlkbDog
QWRkIE1heVRocm93RXhjZXB0aW9uCisKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9QbGF0Zm9ybVhS
Lmg6IEFkZCBzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZyBtZXRob2QKKyAgICAgICAgKFBsYXRmb3Jt
WFI6OkRldmljZTo6c3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcgY29uc3QpOgorCiAyMDIxLTAyLTIy
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBI
YW5kbGUgUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudCBhc3luY2hyb25vdXNs
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKaW5kZXggOGU3
YjM4YWY0ODAyZDUyYWNhNjc5M2Y3OTk3ODA2OGE3ZjQ3OGQwYi4uZjQ1ZmIxMTQ3NWEyZDgyNDBm
NmJmNDc4MDZiNDAwOTg0OGNiMDg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuY3BwCkBAIC0yMDEsNyArMjAxLDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdl
YlhSVmlld2VyUG9zZT4+IFdlYlhSRnJhbWU6OmdldFZpZXdlclBvc2UoY29uc3QgRG9jdW1lbnQm
IGQKICAgICAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVByb2plY3Rp
b24oZm92LCBhc3BlY3QsIG5lYXIsIGZhcikudG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgYXV0byB4clZpZXcgPSBXZWJYUlZpZXc6OmNyZWF0ZSh2aWV3
LmV5ZSwgV1RGTW92ZSh0cmFuc2Zvcm0pLCBGbG9hdDMyQXJyYXk6OmNyZWF0ZShwcm9qZWN0aW9u
LmRhdGEoKSwgcHJvamVjdGlvbi5zaXplKCkpKTsKKyAgICAgICAgYXV0byB4clZpZXcgPSBXZWJY
UlZpZXc6OmNyZWF0ZShtYWtlUmVmKCp0aGlzKSwgdmlldy5leWUsIFdURk1vdmUodHJhbnNmb3Jt
KSwgRmxvYXQzMkFycmF5OjpjcmVhdGUocHJvamVjdGlvbi5kYXRhKCksIHByb2plY3Rpb24uc2l6
ZSgpKSk7CisgICAgICAgIHhyVmlldy0+c2V0Vmlld3BvcnRNb2RpZmlhYmxlKG1fc2Vzc2lvbi0+
c3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKSk7CiAKICAgICAgICAgLy8gIDguOC4gQXBwZW5kIHhy
dmlldyB0byB4cnZpZXdzCiAgICAgICAgIHhyVmlld3MuYXBwZW5kKFdURk1vdmUoeHJWaWV3KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCmluZGV4IGQzYjk2NzY1
NWFjYmIyZmUzODg2ZGM3YjVmZTIyYTgxMTY1NzhkNzAuLjE1MDUwMzE1YTU0Mjk1NDAwOThlYjkz
ZjM5YjgwN2VlMjZkNzdmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJG
cmFtZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QWN0aXZlKGJv
b2wgYWN0aXZlKSB7IG1fYWN0aXZlID0gYWN0aXZlOyB9CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CisgICAgYm9vbCBpc0FuaW1hdGlvbkZyYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9pc0FuaW1hdGlvbkZyYW1lOyB9CiAKICAgICBzdGF0aWMgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbWF0cml4RnJvbVBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OlBvc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uY3BwCmluZGV4IGU1YjRjZmRmNTdjNWJkOGNiM2E4NWQ1OWZiN2QyY2IwMDY4YmMyNzUu
LmU5NDEzM2EyNzAyNzUyYzQwMTY5MWIzMTFlMjFkYzgzZDc4MmY3ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTMwNiw2ICszMDYsMTQg
QEAgSW50U2l6ZSBXZWJYUlNlc3Npb246OnJlY29tbWVuZGVkV2ViR0xGcmFtZWJ1ZmZlclJlc29s
dXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2RldmljZS0+cmVjb21tZW5kZWRSZXNvbHV0aW9u
KG1fbW9kZSk7CiB9CiAKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIv
I3ZpZXctdmlld3BvcnQtbW9kaWZpYWJsZQorYm9vbCBXZWJYUlNlc3Npb246OnN1cHBvcnRzVmll
d3BvcnRTY2FsaW5nKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9kZXZpY2UpOworICAgIC8vIE9u
bHkgaW1tZXJzaXZlIHNlc3Npb25zIHZpZXdwb3J0IHNjYWxpbmcuCisgICAgcmV0dXJuIG1fbW9k
ZSA9PSBYUlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWciAmJiBtX2RldmljZS0+c3VwcG9ydHNWaWV3
cG9ydFNjYWxpbmcoKTsKK30KKwogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93
ZWJ4ci8jc2h1dC1kb3duLXRoZS1zZXNzaW9uCiB2b2lkIFdlYlhSU2Vzc2lvbjo6c2h1dGRvd24o
SW5pdGlhdGVkQnlTeXN0ZW0gaW5pdGlhdGVkQnlTeXN0ZW0pCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAppbmRleCBkZjMzYWM2ZTRkMWI1ZDZhMWI1OTJj
MDExNzIzMDQyNWJmODFiMzdkLi44NWNjMjU1MWMyYzgzZTk4NjFhNTQ3ZTJhZGY1ZGRmNDI5YTc1
MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKQEAg
LTgxLDYgKzgxLDcgQEAgcHVibGljOgogCiAgICAgSW50U2l6ZSBuYXRpdmVXZWJHTEZyYW1lYnVm
ZmVyUmVzb2x1dGlvbigpIGNvbnN0OwogICAgIEludFNpemUgcmVjb21tZW5kZWRXZWJHTEZyYW1l
YnVmZmVyUmVzb2x1dGlvbigpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNWaWV3cG9ydFNjYWxp
bmcoKSBjb25zdDsgCiAKICAgICAvLyBFdmVudFRhcmdldC4KICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcAppbmRleCA0M2QxMGI4N2ZmNmNjYmI3NTAxMDAx
NTkzMWNiMGZjZjdhNGIwYjU5Li5kYzBiNjlhMjlmY2E1MzM2ODQ5M2FmYWRmZTAyMWFlY2M1MWMx
OTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCkBAIC0y
OCwyOCArMjgsNDggQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIldlYlhSRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdGV4cHIgZG91Ymxl
IGtNaW5WaWV3cG9ydFNjYWxlID0gMC4yOworCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
V2ViWFJWaWV3KTsKIAotUmVmPFdlYlhSVmlldz4gV2ViWFJWaWV3OjpjcmVhdGUoWFJFeWUgZXll
LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIFJlZjxGbG9hdDMyQXJyYXk+
JiYgcHJvamVjdGlvbikKK1JlZjxXZWJYUlZpZXc+IFdlYlhSVmlldzo6Y3JlYXRlKFJlZjxXZWJY
UkZyYW1lPiYmIGZyYW1lLCBYUkV5ZSBleWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRy
YW5zZm9ybSwgUmVmPEZsb2F0MzJBcnJheT4mJiBwcm9qZWN0aW9uKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlhSVmlldyhleWUsIFdURk1vdmUodHJhbnNmb3JtKSwgV1RGTW92ZShw
cm9qZWN0aW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlldyhXVEZNb3Zl
KGZyYW1lKSwgZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSksIFdURk1vdmUocHJvamVjdGlvbikpKTsK
IH0KIAotV2ViWFJWaWV3OjpXZWJYUlZpZXcoWFJFeWUgZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiB0cmFuc2Zvcm0sIFJlZjxGbG9hdDMyQXJyYXk+JiYgcHJvamVjdGlvbikKLSAgICA6
IG1fZXllKGV5ZSkKK1dlYlhSVmlldzo6V2ViWFJWaWV3KFJlZjxXZWJYUkZyYW1lPiYmIGZyYW1l
LCBYUkV5ZSBleWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgUmVmPEZs
b2F0MzJBcnJheT4mJiBwcm9qZWN0aW9uKQorICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkK
KyAgICAsIG1fZXllKGV5ZSkKICAgICAsIG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSkK
LSAgICAsIG1fcHJvamVjdGlvbihwcm9qZWN0aW9uKQorICAgICwgbV9wcm9qZWN0aW9uKFdURk1v
dmUocHJvamVjdGlvbikpCiB7CiB9CiAKIFdlYlhSVmlldzo6fldlYlhSVmlldygpID0gZGVmYXVs
dDsKIAorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhydmll
dy1yZWNvbW1lbmRlZHZpZXdwb3J0c2NhbGUKK09wdGlvbmFsPGRvdWJsZT4gV2ViWFJWaWV3Ojpy
ZWNvbW1lbmRlZFZpZXdwb3J0U2NhbGUoKSBjb25zdAoreworICAgIC8vIFJldHVybiBudWxsIGlm
IHRoZSBzeXN0ZW0gZG9lcyBub3QgaW1wbGVtZW50IGEgaGV1cmlzdGljIG9yIG1ldGhvZCBmb3Ig
ZGV0ZXJtaW5pbmcgYSByZWNvbW1lbmRlZCBzY2FsZS4KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ2
aWV3LXJlcXVlc3R2aWV3cG9ydHNjYWxlCit2b2lkIFdlYlhSVmlldzo6cmVxdWVzdFZpZXdwb3J0
U2NhbGUoT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlKQorICAgICAg
ICByZXR1cm47CisgICAgbV9yZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlID0gc3RkOjpjbGFtcCgqdmFs
dWUsIGtNaW5WaWV3cG9ydFNjYWxlLCAxLjApOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSVmlldy5oCmluZGV4IDRiNjYwNjkxMTgyNjhkNGFiM2Y4NTc2NTg1YTc4YzkwMjAzMGJi
YzkuLjc5MWNiMTlkYjFlMGUzMjAxNTE5YzI0MzIzNDcwNmY0YjhmODQ1NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaApAQCAtMzksMjMgKzM5LDQwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViWFJGcmFtZTsKIGNsYXNzIFdlYlhSUmlnaWRUcmFu
c2Zvcm07CitjbGFzcyBXZWJYUlNlc3Npb247CiAKIGNsYXNzIFdlYlhSVmlldyA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYlhSVmlldz4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JU
KFdlYlhSVmlldywgV0VCQ09SRV9FWFBPUlQpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8V2ViWFJWaWV3PiBjcmVhdGUoWFJFeWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFdlYlhSVmlldz4gY3JlYXRlKFJlZjxXZWJYUkZyYW1lPiYmLCBYUkV5ZSwgUmVmPFdlYlhS
UmlnaWRUcmFuc2Zvcm0+JiYsIFJlZjxGbG9hdDMyQXJyYXk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5XZWJYUlZpZXcoKTsKIAorICAgIGNvbnN0IFdlYlhSRnJhbWUmIGZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZS5nZXQoKTsgfQogICAgIFhSRXllIGV5ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXllOyB9CiAgICAgY29uc3QgRmxvYXQzMkFycmF5JiBwcm9qZWN0aW9uTWF0cml4KCkgY29u
c3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uLmdldCgpOyB9CiAgICAgY29uc3QgV2ViWFJSaWdpZFRy
YW5zZm9ybSYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0K
IAorICAgIE9wdGlvbmFsPGRvdWJsZT4gcmVjb21tZW5kZWRWaWV3cG9ydFNjYWxlKCkgY29uc3Q7
CisgICAgdm9pZCByZXF1ZXN0Vmlld3BvcnRTY2FsZShPcHRpb25hbDxkb3VibGU+KTsKKworICAg
IGRvdWJsZSBjdXJyZW50Vmlld3BvcnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZp
ZXdwb3J0U2NhbGU7IH0KKyAgICB2b2lkIHNldEN1cnJlbnRWaWV3cG9ydFNjYWxlKGRvdWJsZSBz
Y2FsZSkgeyBtX2N1cnJlbnRWaWV3cG9ydFNjYWxlID0gc2NhbGU7IH0KKyAgICBkb3VibGUgcmVx
dWVzdGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkVmlld3BvcnRT
Y2FsZTsgfQorCisgICAgYm9vbCBpc1ZpZXdwb3J0TW9kaWZpYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlld3BvcnRNb2RpZmlhYmxlOyB9CisgICAgdm9pZCBzZXRWaWV3cG9ydE1vZGlmaWFibGUo
Ym9vbCBtb2RpZmlhYmxlKSB7IG1fdmlld3BvcnRNb2RpZmlhYmxlID0gbW9kaWZpYWJsZTsgfQor
CiBwcml2YXRlOgotICAgIFdlYlhSVmlldyhYUkV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
JiYsIFJlZjxGbG9hdDMyQXJyYXk+JiYpOworICAgIFdlYlhSVmlldyhSZWY8V2ViWFJGcmFtZT4m
JiwgWFJFeWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYm
KTsKIAorICAgIFJlZjxXZWJYUkZyYW1lPiBtX2ZyYW1lOwogICAgIFhSRXllIG1fZXllOwogICAg
IFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKICAgICBSZWY8RmxvYXQzMkFy
cmF5PiBtX3Byb2plY3Rpb247CisgICAgYm9vbCBtX3ZpZXdwb3J0TW9kaWZpYWJsZSB7IGZhbHNl
IH07CisgICAgZG91YmxlIG1fY3VycmVudFZpZXdwb3J0U2NhbGUgeyAxLjAgfTsKKyAgICBkb3Vi
bGUgbV9yZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlIHsgMS4wIH07CisKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJWaWV3LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmlkbApp
bmRleCBkMjVmNDI5ODE0NjYyMTczMjE0YzQ3ZDZkNWMxNDJlMzU4ZTIxOTIzLi5hODY5NTA0ODBh
YzE0M2Y3MzQ3YzczYzZmZjE5MTIwNTI1ZGVhOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuaWRsCkBAIC0zNCw0ICszNCw2IEBACiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFhSRXllIGV5ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRmxvYXQzMkFycmF5IHBy
b2plY3Rpb25NYXRyaXg7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJY
UlJpZ2lkVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91Ymxl
PyByZWNvbW1lbmRlZFZpZXdwb3J0U2NhbGU7CisgICAgdW5kZWZpbmVkIHJlcXVlc3RWaWV3cG9y
dFNjYWxlKGRvdWJsZT8gc2NhbGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJWaWV3cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSVmlld3BvcnQuY3BwCmluZGV4IGNiYWEzYzhhNWE5M2U2ZDFlOWU2OTNhMTlkNDEw
Y2ZjZDUzZjlkZGIuLmVlNjI0OGZmYmNiMTM3MGE5MDA5NjE2NmFkZDI4ZGRiMWRlODU4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3cG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdwb3J0LmNwcApAQCAt
MzQsMzEgKzM0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdlYlhSVmlld3BvcnQpOwogCi1SZWY8V2ViWFJWaWV3cG9ydD4gV2ViWFJWaWV3
cG9ydDo6Y3JlYXRlKCkKK1JlZjxXZWJYUlZpZXdwb3J0PiBXZWJYUlZpZXdwb3J0OjpjcmVhdGUo
Y29uc3QgSW50UmVjdCYgdmlld3BvcnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
WFJWaWV3cG9ydCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJWaWV3cG9ydCh2aWV3
cG9ydCkpOwogfQogCi1XZWJYUlZpZXdwb3J0OjpXZWJYUlZpZXdwb3J0KCkgPSBkZWZhdWx0Owot
Ci1pbnQgV2ViWFJWaWV3cG9ydDo6eCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlu
dCBXZWJYUlZpZXdwb3J0Ojp5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IFdl
YlhSVmlld3BvcnQ6OndpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IFdl
YlhSVmlld3BvcnQ6OmhlaWdodCgpIGNvbnN0CitXZWJYUlZpZXdwb3J0OjpXZWJYUlZpZXdwb3J0
KGNvbnN0IEludFJlY3QmIHZpZXdwb3J0KQorICAgIDogbV92aWV3cG9ydCh2aWV3cG9ydCkKIHsK
LSAgICByZXR1cm4gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdwb3J0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld3BvcnQuaAppbmRleCAyZjgyNDZhOWIxZDRlYWEz
YTA0MTExNjRiMTZiNWU0NjljMjAzMDE0Li5lNTg0NzY1OTEwMzc0NWVhYTY3MjkwMTUwOGNhODMw
YWExOTVhY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Vmlld3BvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld3Bv
cnQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM2LDE1ICszNywxOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJYUlZpZXdwb3J0IDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViWFJWaWV3cG9ydD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJWaWV3cG9y
dCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlZpZXdwb3J0PiBjcmVhdGUoKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYlhSVmlld3BvcnQ+IGNyZWF0ZShjb25zdCBJbnRSZWN0Jik7CiAKLSAg
ICBpbnQgeCgpIGNvbnN0OwotICAgIGludCB5KCkgY29uc3Q7Ci0gICAgaW50IHdpZHRoKCkgY29u
c3Q7Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0OworICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4g
bV92aWV3cG9ydC54KCk7IH0KKyAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnQu
eSgpOyB9CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydC53aWR0aCgp
OyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnQuaGVpZ2h0KCk7
IH0KKworICAgIHZvaWQgdXBkYXRlVmlld3BvcnQoY29uc3QgSW50UmVjdCYgdmlld3BvcnQpIHsg
bV92aWV3cG9ydCA9IHZpZXdwb3J0OyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJWaWV3cG9ydCgp
OworICAgIFdlYlhSVmlld3BvcnQoY29uc3QgSW50UmVjdCYpOworCisgICAgSW50UmVjdCBtX3Zp
ZXdwb3J0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCmluZGV4IDBlNTczYjIyZDY1N2Y4
ZWNhZDU0ZGM3NWZhNzA3NTc4MGEyMzQzYzMuLjdjYWZjYTg4N2Y1ODkyNDg3NTU4YjMzNGYwMjRm
M2JjNGI5NTk0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
V2ViR0xMYXllci5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKICNpbmNsdWRlICJXZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmgiCiAjZW5kaWYKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgiCisjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgor
I2luY2x1ZGUgIldlYlhSVmlldy5oIgogI2luY2x1ZGUgIldlYlhSVmlld3BvcnQuaCIKICNpbmNs
dWRlICJYUldlYkdMTGF5ZXJJbml0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KQEAgLTk3LDYgKzk5LDggQEAgV2ViWFJXZWJHTExheWVyOjpXZWJYUldlYkdMTGF5ZXIoUmVm
PFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBXZWJYUlJlbmRlcmluZ0NvbnQKICAgICA6IFdlYlhS
TGF5ZXIoc2Vzc2lvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9zZXNzaW9u
KFdURk1vdmUoc2Vzc2lvbikpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKKyAg
ICAsIG1fbGVmdFZpZXdwb3J0KFdlYlhSVmlld3BvcnQ6OmNyZWF0ZSh7IH0pKQorICAgICwgbV9y
aWdodFZpZXdwb3J0KFdlYlhSVmlld3BvcnQ6OmNyZWF0ZSh7IH0pKQogewogICAgIC8vIDcuIElu
aXRpYWxpemUgbGF5ZXLigJlzIGlnbm9yZURlcHRoVmFsdWVzIGFzIGZvbGxvd3M6CiAgICAgLy8g
ICA3LjEgSWYgbGF5ZXJJbml04oCZcyBpZ25vcmVEZXB0aFZhbHVlcyB2YWx1ZSBpcyBmYWxzZSBh
bmQgdGhlIFhSIENvbXBvc2l0b3Igd2lsbCBtYWtlIHVzZSBvZiBkZXB0aCB2YWx1ZXMsCkBAIC0x
ODMsOSArMTg3LDU4IEBAIHVuc2lnbmVkIFdlYlhSV2ViR0xMYXllcjo6ZnJhbWVidWZmZXJIZWln
aHQoKSBjb25zdAogICAgICAgICB9KTsKIH0KIAotUmVmUHRyPFdlYlhSVmlld3BvcnQ+IFdlYlhS
V2ViR0xMYXllcjo6Z2V0Vmlld3BvcnQoY29uc3QgV2ViWFJWaWV3JikKKy8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cndlYmdsbGF5ZXItZ2V0dmlld3BvcnQK
K0V4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlZpZXdwb3J0Pj4gV2ViWFJXZWJHTExheWVyOjpnZXRW
aWV3cG9ydChXZWJYUlZpZXcmIHZpZXcpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICAvLyAxLiBM
ZXQgc2Vzc2lvbiBiZSB2aWV34oCZcyBzZXNzaW9uLgorICAgIC8vIDIuIExldCBmcmFtZSBiZSBz
ZXNzaW9u4oCZcyBhbmltYXRpb24gZnJhbWUuCisgICAgLy8gMy4gSWYgc2Vzc2lvbiBpcyBub3Qg
ZXF1YWwgdG8gbGF5ZXLigJlzIHNlc3Npb24sIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoJnZpZXcuZnJhbWUoKS5zZXNzaW9uKCkgIT0g
bV9zZXNzaW9uLnB0cigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKworICAgIC8vIDQuIElmIGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiBpcyBmYWxz
ZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAg
IC8vIDUuIElmIHZpZXfigJlzIGZyYW1lIGlzIG5vdCBlcXVhbCB0byBmcmFtZSwgdGhyb3cgYW4g
SW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghdmlldy5m
cmFtZSgpLmlzQWN0aXZlKCkgfHwgIXZpZXcuZnJhbWUoKS5pc0FuaW1hdGlvbkZyYW1lKCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OyAKKworICAgIC8v
IDYuIElmIHRoZSB2aWV3cG9ydCBtb2RpZmlhYmxlIGZsYWcgaXMgdHJ1ZSBhbmQgdmlld+KAmXMg
cmVxdWVzdGVkIHZpZXdwb3J0IHNjYWxlIGlzIG5vdCBlcXVhbCB0byBjdXJyZW50IHZpZXdwb3J0
IHNjYWxlOgorICAgIC8vICAgNi4xIFNldCBjdXJyZW50IHZpZXdwb3J0IHNjYWxlIHRvIHJlcXVl
c3RlZCB2aWV3cG9ydCBzY2FsZS4KKyAgICAvLyAgIDYuMiBDb21wdXRlIHRoZSBzY2FsZWQgdmll
d3BvcnQuCisgICAgaWYgKHZpZXcuY3VycmVudFZpZXdwb3J0U2NhbGUoKSAhPSB2aWV3LnJlcXVl
c3RlZFZpZXdwb3J0U2NhbGUoKSkKKyAgICAgICAgdmlldy5zZXRDdXJyZW50Vmlld3BvcnRTY2Fs
ZSh2aWV3LnJlcXVlc3RlZFZpZXdwb3J0U2NhbGUoKSk7CisKKyAgICAvLyA3LiBTZXQgdGhlIHZp
ZXfigJlzIHZpZXdwb3J0IG1vZGlmaWFibGUgZmxhZyB0byBmYWxzZS4KKyAgICB2aWV3LnNldFZp
ZXdwb3J0TW9kaWZpYWJsZShmYWxzZSk7CisKKyAgICAvLyA4LiBMZXQgdmlld3BvcnQgYmUgdGhl
IFhSVmlld3BvcnQgZnJvbSB0aGUgbGlzdCBvZiB2aWV3cG9ydCBvYmplY3RzIGFzc29jaWF0ZWQg
d2l0aCB2aWV3LgorICAgIGF1dG8mIHZpZXdwb3J0ID0gdmlldy5leWUoKSA9PSBYUkV5ZTo6Umln
aHQgPyBtX3JpZ2h0Vmlld3BvcnQgOiBtX2xlZnRWaWV3cG9ydDsKKworICAgIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hydmlldy1vYnRhaW4tYS1zY2FsZWQtdmll
d3BvcnQKKyAgICAvLyBDb21wdXRlIHRoZSBzY2FsZWQgdmlld3BvcnQuCisKKyAgICBhdXRvIHJv
dW5kRG93biA9IFtdKGRvdWJsZSB2YWx1ZSkgLT4gaW50IHsKKyAgICAgICAgLy8gUm91bmQgZG93
biB0byBpbnRlZ2VyIHZhbHVlIGFuZCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXMgbm90IHplcm8u
CisgICAgICAgIHJldHVybiBzdGQ6Om1heCgxLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6Zmxvb3Io
dmFsdWUpKSk7CisgICAgfTsKKyAgICAKKyAgICBkb3VibGUgc2NhbGUgPSB2aWV3LmN1cnJlbnRW
aWV3cG9ydFNjYWxlKCk7CisgICAgSW50UmVjdCB2aWV3cG9ydFJlY3Q7CisKKyAgICB2aWV3cG9y
dFJlY3Quc2V0SGVpZ2h0KHJvdW5kRG93bihmcmFtZWJ1ZmZlckhlaWdodCgpICogc2NhbGUpKTsK
KworICAgIGlmICh2aWV3LmV5ZSgpID09IFhSRXllOjpSaWdodCkgeworICAgICAgICBmbG9hdCB3
aWR0aCA9IHJvdW5kRG93bihmcmFtZWJ1ZmZlcldpZHRoKCkgKiAwLjUgKiBzY2FsZSk7CisgICAg
ICAgIHZpZXdwb3J0UmVjdC5zZXRYKHdpZHRoKTsKKyAgICAgICAgdmlld3BvcnRSZWN0LnNldFdp
ZHRoKHdpZHRoKTsKKyAgICB9IGVsc2UgaWYgKHZpZXcuZXllKCkgPT0gWFJFeWU6OkxlZnQpCisg
ICAgICAgIHZpZXdwb3J0UmVjdC5zZXRXaWR0aChyb3VuZERvd24oZnJhbWVidWZmZXJXaWR0aCgp
ICogMC41ICogc2NhbGUpKTsKKyAgICBlbHNlIC8vLyBYUkV5ZTo6Tm9uZQorICAgICAgICB2aWV3
cG9ydFJlY3Quc2V0V2lkdGgocm91bmREb3duKGZyYW1lYnVmZmVyV2lkdGgoKSAqIHNjYWxlKSk7
CisKKyAgICB2aWV3cG9ydC0+dXBkYXRlVmlld3BvcnQodmlld3BvcnRSZWN0KTsKKworICAgIC8v
IDkuIFJldHVybiB2aWV3cG9ydC4KKyAgICByZXR1cm4gUmVmUHRyPFdlYlhSVmlld3BvcnQ+KHZp
ZXdwb3J0LmNvcHlSZWYoKSk7CiB9CiAKIGRvdWJsZSBXZWJYUldlYkdMTGF5ZXI6OmdldE5hdGl2
ZUZyYW1lYnVmZmVyU2NhbGVGYWN0b3IoY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgKaW5kZXggMTA2
Y2ViNWZjZDM2NWM3MTY2MmU4NGQwMDFmMTdlMjlhM2ViNmVmZS4uNzU5OTIxN2Q4Nzc5ODI0NjQ2
OTI4YjcyNWVjN2FhZTM4OWExNDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSV2ViR0xMYXllci5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBmcmFtZWJ1ZmZlcldpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZnJhbWVidWZmZXJI
ZWlnaHQoKSBjb25zdDsKIAotICAgIFJlZlB0cjxXZWJYUlZpZXdwb3J0PiBnZXRWaWV3cG9ydChj
b25zdCBXZWJYUlZpZXcmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3cG9ydD4+
IGdldFZpZXdwb3J0KFdlYlhSVmlldyYpOwogCiAgICAgc3RhdGljIGRvdWJsZSBnZXROYXRpdmVG
cmFtZWJ1ZmZlclNjYWxlRmFjdG9yKGNvbnN0IFdlYlhSU2Vzc2lvbiYpOwogCkBAIC04Nyw2ICs4
Nyw4IEBAIHByaXZhdGU6CiAKICAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAg
V2ViWFJSZW5kZXJpbmdDb250ZXh0IG1fY29udGV4dDsKKyAgICBSZWY8V2ViWFJWaWV3cG9ydD4g
bV9sZWZ0Vmlld3BvcnQ7CisgICAgUmVmPFdlYlhSVmlld3BvcnQ+IG1fcmlnaHRWaWV3cG9ydDsK
ICAgICBib29sIG1fYW50aWFsaWFzIHsgZmFsc2UgfTsKICAgICBib29sIG1faWdub3JlRGVwdGhW
YWx1ZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0NvbXBvc2l0aW9uRW5hYmxlZCB7IHRydWUg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExh
eWVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmlk
bAppbmRleCA1ZjllNmUyNGY2YWE2OWMxNzk4YzEyNDNlMTk2NzRmNjJlZDI1ZGM1Li40YTk4NmI3
MDc0YzljZTE2ZWZhZTQzMDMxM2M1MWEyMjY0YjEwMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaWRsCkBAIC00OSw3ICs0OSw3IEBAIHR5
cGVkZWYgKFdlYkdMUmVuZGVyaW5nQ29udGV4dCkgV2ViWFJXZWJHTFJlbmRlcmluZ0NvbnRleHQ7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgZnJhbWVidWZmZXJIZWlnaHQ7
CiAKICAgICAvLyBNZXRob2RzCi0gICAgV2ViWFJWaWV3cG9ydD8gZ2V0Vmlld3BvcnQoV2ViWFJW
aWV3IHZpZXcpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2ViWFJWaWV3cG9ydD8gZ2V0Vmll
d3BvcnQoV2ViWFJWaWV3IHZpZXcpOwogCiAgICAgLy8gU3RhdGljIE1ldGhvZHMKICAgICBzdGF0
aWMgZG91YmxlIGdldE5hdGl2ZUZyYW1lYnVmZmVyU2NhbGVGYWN0b3IoV2ViWFJTZXNzaW9uIHNl
c3Npb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IGUzNzIx
ZDg4NmVhOTlhMGRmOTA4MmU1OGUyNTVjZDMyZDBmN2RlOGIuLjdlMDBkZjA3YmU1ZTFlZTU0N2Y0
MjM0OGE3OTdmOWZmMTQ1Y2Q2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9y
bVhSLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50
U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUpIHsgcmV0dXJuIHsgMSwgMSB9
OyB9CiAKICAgICBib29sIHN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZygpIGNvbnN0IHsgcmV0
dXJuIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nOyB9CisgICAgYm9vbCBzdXBwb3J0c1Zp
ZXdwb3J0U2NhbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNWaWV3cG9ydFNjYWxpbmc7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vz
c2lvbk1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpID0gMDsKQEAgLTE0MSw2ICsxNDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRW5hYmxlZEZl
YXR1cmVzUGVyTW9kZU1hcCBtX2VuYWJsZWRGZWF0dXJlc01hcDsKIAogICAgIGJvb2wgbV9zdXBw
b3J0c09yaWVudGF0aW9uVHJhY2tpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zdXBwb3J0c1Zp
ZXdwb3J0U2NhbGluZyB7IGZhbHNlIH07CiAgICAgV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmlu
Z0NsaWVudD4gbV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudDsKIH07CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNTc3
YmM1NjcwYTBjNTA2ZTU1YzZiZTY0ZWI0Mjc5NDA2YWFkYjBiLi4zMGY5MmVhNzNlYTM5ZDEzODlh
ZDdjNjQxZWQzMmY5ZmYwODYyZTA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMjIg
IEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IFdlYlhSIGdldFZpZXdwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgV2ViWFIgVmlld3BvcnQgdGVzdCBleHBlY3RhdGlvbnMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMi0y
MSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gR2Fy
ZGVuaW5nIGFuZCB1cGRhdGluZyBiYXNlbGluZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CmluZGV4IDI4ZGFmYTBkYzUzOTVmZjdiMjQ2MWI0YTMyODI0YjFjNGE0OTJhODEuLmY0ZTA0NDcw
MWNmYzhiYjEwNGE3Y2VlN2E2MjdhNWZiNzBkN2UyYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTIyICBJbWFub2wgRmVybmFuZGV6ICA8
aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBnZXRWaWV3
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIy
MjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIFdlYlhSIFZpZXdwb3J0IHRlc3QgZXhwZWN0YXRpb25zLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld3BvcnRfdmFsaWQuaHR0cHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX3Zp
ZXdwb3J0cy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAyLTIwICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBtb2R1bGVzIGlu
IHNlcnZpY2Ugd29ya2VycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdwb3J0X3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJW
aWV3cG9ydF92YWxpZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTlhNmViNzJhZDU3
NTM0MWI1ZGQ1MDNlMmQ2YzY0YTNiZTUyNGM0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3cG9ydF92YWxp
ZC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJWaWV3cG9ydCBh
dHRyaWJ1dGVzIGFyZSB2YWxpZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl92aWV3cG9ydHMuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94cldlYkdMTGF5ZXJfdmlld3BvcnRzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMTZlYmZjNGRhODMyNjQ0YjBkZDQ0NDExOWJjODg4NGEwN2NkZDhlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94cldlYkdMTGF5ZXJfdmlld3BvcnRzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKKworUEFTUyBYUldlYkdMTGF5ZXIgcmVwb3J0cyBhIHZhbGlkIHZpZXdwb3J0cyBmb3IgaW1t
ZXJzaXZlIHNlc3Npb25zCitQQVNTIFhSV2ViR0xMYXllciByZXBvcnRzIGEgdmFsaWQgdmlld3Bv
cnRzIGZvciBpbmxpbmUgc2Vzc2lvbnMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA4NDI2N2JhNDcxYWYwNjVkMzYzNWE2NTk1NzI3YWFiMjgyZWU2NjIw
Li4wODA1ZTZjMTE1MzBlMzkyMGM4YmI0YjExNzc5OTc3OTQ2NDIwNzk4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjQ3LDggKzY0Nyw2IEBAIHdlYmtp
dC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1t
b2R1bGUveHJEZXZpY2VfaXNTCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyVmlld19leWVzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfY29uc3RydWN0b3IuaHR0cHMuaHRtbCBbIFBh
c3MgXQotd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQ
YXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvbmF2aWdhdG9yX3hy
X3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMu
aHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJl
ZmVyZW5jZVNwYWNlX3JlbGF0aW9uc2hpcHMuaHR0cHMuaHRtbCBbIFBhc3MgXQpAQCAtNjY2LDYg
KzY2NCwxMCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lv
bl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmlld2VyUAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFt
cC5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyU2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3MgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX3Jl
ZmVyZW5jZVNwYWNlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJWaWV3cG9ydF92YWxpZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9jb25zdHJ1Y3Rv
ci5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX3Zp
ZXdwb3J0cy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV92ZXJ0aWNhbF9mb3ZfaW1tZXJzaXZlLmh0dHBzLmh0bWwg
WyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvcmVuZGVyX3N0
YXRlX3VwZGF0ZS5odHRwcy5odG1sIFsgUGFzcyBdCiBodHRwL3dwdC93ZWJ4ci94clNlc3Npb25f
ZW5kX2RldmljZV9yZXBvcnRzX3NodXRkb3duLmh0dHBzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421199</attachid>
            <date>2021-02-22 08:55:33 -0800</date>
            <delta_ts>2021-02-23 05:54:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222270-20210222175531.patch</filename>
            <type>text/plain</type>
            <size>23509</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0NDU1OGNjNTgzNTkx
Mzk5YmY2YWFmOGNhMGE2MzBhNWM4NDVjNy4uMWJmMTUyNDdjYzBmODA4MTk1ODg3ZWYxNzljYWMz
OWUyYjAyYWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTIyICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBXZWJYUiBnZXRWaWV3cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyMjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOiBzZXQgV2ViWFJWaWV3
IHZpZXdwb3J0IG1vZGlmaWFibGUgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1l
OjpnZXRWaWV3ZXJQb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmlzQW5pbWF0aW9uRnJhbWUgY29uc3QpOiBh
ZGQgbWV0aG9kLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOiBJ
bXBsZW1lbnQgc3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSU2Vzc2lvbjo6c3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSVmlldy5jcHA6IEFkZCB2aWV3cG9ydCBzY2FsZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJYUlZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpyZWNvbW1lbmRlZFZpZXdwb3J0U2Nh
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpyZXF1ZXN0Vmlld3BvcnRT
Y2FsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSVmlldzo6ZnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJW
aWV3OjpjdXJyZW50Vmlld3BvcnRTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UlZpZXc6OnNldEN1cnJlbnRWaWV3cG9ydFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
Vmlldzo6cmVxdWVzdGVkVmlld3BvcnRTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlZpZXc6OmlzVmlld3BvcnRNb2RpZmlhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSVmlldzo6c2V0Vmlld3BvcnRNb2RpZmlhYmxlKToKKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJWaWV3LmlkbDogYWRkIHJlcXVlc3RWaWV3cG9ydFNjYWxlKCkgYW5kIHJlY29t
bWVuZGVkVmlld3BvcnRTY2FsZS4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJWaWV3
cG9ydC5jcHA6IEltcGxlbWVudCB2aWV3cG9ydCByZWN0IHZhbHVlcy4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSVmlld3BvcnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdw
b3J0OjpXZWJYUlZpZXdwb3J0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSVmlld3Bv
cnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSVmlld3BvcnQ6OnggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJWaWV3cG9ydDo6eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlZpZXdwb3J0Ojp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdw
b3J0OjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3cG9ydDo6dXBk
YXRlVmlld3BvcnQpOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIu
Y3BwOiBJbXBsZW1lbnQgZ2V0Vmlld3BvcnQoKQorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJH
TExheWVyOjpXZWJYUldlYkdMTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bV9yaWdodFZpZXdw
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6Z2V0Vmlld3BvcnQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmg6CisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5pZGw6IEFkZCBNYXlUaHJvd0V4Y2VwdGlvbgor
CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOiBBZGQgc3VwcG9ydHNWaWV3cG9y
dFNjYWxpbmcgbWV0aG9kCisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OnN1cHBvcnRzVmll
d3BvcnRTY2FsaW5nIGNvbnN0KToKKwogMjAyMS0wMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgSGFuZGxlIFBhZ2U6OmRpZEZpbmlzaExv
YWRpbmdJbWFnZUZvckVsZW1lbnQgYXN5bmNocm9ub3VzbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IDhlN2IzOGFmNDgwMmQ1MmFjYTY3OTNmNzk5
NzgwNjhhN2Y0NzhkMGIuLmY0NWZiMTE0NzVhMmQ4MjQwZjZiZjQ3ODA2YjQwMDk4NDhjYjA4N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMjAx
LDcgKzIwMSw4IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+PiBXZWJYUkZy
YW1lOjpnZXRWaWV3ZXJQb3NlKGNvbnN0IERvY3VtZW50JiBkCiAgICAgICAgICAgICByZXR1cm4g
VHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGZvdiwgYXNwZWN0LCBuZWFyLCBm
YXIpLnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGF1
dG8geHJWaWV3ID0gV2ViWFJWaWV3OjpjcmVhdGUodmlldy5leWUsIFdURk1vdmUodHJhbnNmb3Jt
KSwgRmxvYXQzMkFycmF5OjpjcmVhdGUocHJvamVjdGlvbi5kYXRhKCksIHByb2plY3Rpb24uc2l6
ZSgpKSk7CisgICAgICAgIGF1dG8geHJWaWV3ID0gV2ViWFJWaWV3OjpjcmVhdGUobWFrZVJlZigq
dGhpcyksIHZpZXcuZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSksIEZsb2F0MzJBcnJheTo6Y3JlYXRl
KHByb2plY3Rpb24uZGF0YSgpLCBwcm9qZWN0aW9uLnNpemUoKSkpOworICAgICAgICB4clZpZXct
PnNldFZpZXdwb3J0TW9kaWZpYWJsZShtX3Nlc3Npb24tPnN1cHBvcnRzVmlld3BvcnRTY2FsaW5n
KCkpOwogCiAgICAgICAgIC8vICA4LjguIEFwcGVuZCB4cnZpZXcgdG8geHJ2aWV3cwogICAgICAg
ICB4clZpZXdzLmFwcGVuZChXVEZNb3ZlKHhyVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCBkM2I5Njc2NTVhY2JiMmZlMzg4NmRjN2I1ZmUyMmE4
MTE2NTc4ZDcwLi4xNTA1MDMxNWE1NDI5NTQwMDk4ZWI5M2YzOWI4MDdlZTI2ZDc3ZmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtNjEsNiArNjEsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2FjdGl2ZSA9
IGFjdGl2ZTsgfQogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZTsg
fQorICAgIGJvb2wgaXNBbmltYXRpb25GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbmltYXRp
b25GcmFtZTsgfQogCiAgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeEZyb21Q
b3NlKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBlNWI0Y2Zk
ZjU3YzViZDhjYjNhODVkNTlmYjdkMmNiMDA2OGJjMjc1Li5lOTQxMzNhMjcwMjc1MmM0MDE2OTFi
MzExZTIxZGM4M2Q3ODJmN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uY3BwCkBAIC0zMDYsNiArMzA2LDE0IEBAIEludFNpemUgV2ViWFJTZXNzaW9u
OjpyZWNvbW1lbmRlZFdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZXZpY2UtPnJlY29tbWVuZGVkUmVzb2x1dGlvbihtX21vZGUpOwogfQogCisvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN2aWV3LXZpZXdwb3J0LW1vZGlmaWFi
bGUKK2Jvb2wgV2ViWFJTZXNzaW9uOjpzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fZGV2aWNlKTsKKyAgICAvLyBPbmx5IGltbWVyc2l2ZSBzZXNzaW9ucyB2
aWV3cG9ydCBzY2FsaW5nLgorICAgIHJldHVybiBtX21vZGUgPT0gWFJTZXNzaW9uTW9kZTo6SW1t
ZXJzaXZlVnIgJiYgbV9kZXZpY2UtPnN1cHBvcnRzVmlld3BvcnRTY2FsaW5nKCk7Cit9CisKIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3NodXQtZG93bi10aGUtc2Vz
c2lvbgogdm9pZCBXZWJYUlNlc3Npb246OnNodXRkb3duKEluaXRpYXRlZEJ5U3lzdGVtIGluaXRp
YXRlZEJ5U3lzdGVtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmgKaW5kZXggZGYzM2FjNmU0ZDFiNWQ2YTFiNTkyYzAxMTcyMzA0MjViZjgxYjM3ZC4uODVj
YzI1NTFjMmM4M2U5ODYxYTU0N2UyYWRmNWRkZjQyOWE3NTM1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC04MSw2ICs4MSw3IEBAIHB1YmxpYzoK
IAogICAgIEludFNpemUgbmF0aXZlV2ViR0xGcmFtZWJ1ZmZlclJlc29sdXRpb24oKSBjb25zdDsK
ICAgICBJbnRTaXplIHJlY29tbWVuZGVkV2ViR0xGcmFtZWJ1ZmZlclJlc29sdXRpb24oKSBjb25z
dDsKKyAgICBib29sIHN1cHBvcnRzVmlld3BvcnRTY2FsaW5nKCkgY29uc3Q7IAogCiAgICAgLy8g
RXZlbnRUYXJnZXQuCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmll
dy5jcHAKaW5kZXggNDNkMTBiODdmZjZjY2JiNzUwMTAwMTU5MzFjYjBmY2Y3YTRiMGI1OS4uZGMw
YjY5YTI5ZmNhNTMzNjg0OTNhZmFkZmUwMjFhZWNjNTFjMTk0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcApAQCAtMjgsMjggKzI4LDQ4IEBACiAKICNpZiBF
TkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViWFJS
aWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrTWluVmlld3BvcnRTY2FsZSA9IDAu
MjsKKwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSVmlldyk7CiAKLVJlZjxXZWJY
UlZpZXc+IFdlYlhSVmlldzo6Y3JlYXRlKFhSRXllIGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgdHJhbnNmb3JtLCBSZWY8RmxvYXQzMkFycmF5PiYmIHByb2plY3Rpb24pCitSZWY8V2Vi
WFJWaWV3PiBXZWJYUlZpZXc6OmNyZWF0ZShSZWY8V2ViWFJGcmFtZT4mJiBmcmFtZSwgWFJFeWUg
ZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIFJlZjxGbG9hdDMyQXJy
YXk+JiYgcHJvamVjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlZpZXco
ZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSksIFdURk1vdmUocHJvamVjdGlvbikpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlZpZXcoV1RGTW92ZShmcmFtZSksIGV5ZSwgV1RGTW92ZSh0
cmFuc2Zvcm0pLCBXVEZNb3ZlKHByb2plY3Rpb24pKSk7CiB9CiAKLVdlYlhSVmlldzo6V2ViWFJW
aWV3KFhSRXllIGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBSZWY8
RmxvYXQzMkFycmF5PiYmIHByb2plY3Rpb24pCi0gICAgOiBtX2V5ZShleWUpCitXZWJYUlZpZXc6
OldlYlhSVmlldyhSZWY8V2ViWFJGcmFtZT4mJiBmcmFtZSwgWFJFeWUgZXllLCBSZWY8V2ViWFJS
aWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIFJlZjxGbG9hdDMyQXJyYXk+JiYgcHJvamVjdGlv
bikKKyAgICA6IG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCisgICAgLCBtX2V5ZShleWUpCiAgICAg
LCBtX3RyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCi0gICAgLCBtX3Byb2plY3Rpb24ocHJv
amVjdGlvbikKKyAgICAsIG1fcHJvamVjdGlvbihXVEZNb3ZlKHByb2plY3Rpb24pKQogewogfQog
CiBXZWJYUlZpZXc6On5XZWJYUlZpZXcoKSA9IGRlZmF1bHQ7CiAKKy8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnZpZXctcmVjb21tZW5kZWR2aWV3cG9ydHNj
YWxlCitPcHRpb25hbDxkb3VibGU+IFdlYlhSVmlldzo6cmVjb21tZW5kZWRWaWV3cG9ydFNjYWxl
KCkgY29uc3QKK3sKKyAgICAvLyBSZXR1cm4gbnVsbCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IGlt
cGxlbWVudCBhIGhldXJpc3RpYyBvciBtZXRob2QgZm9yIGRldGVybWluaW5nIGEgcmVjb21tZW5k
ZWQgc2NhbGUuCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworLy8gaHR0cHM6Ly9pbW1l
cnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhydmlldy1yZXF1ZXN0dmlld3BvcnRzY2Fs
ZQordm9pZCBXZWJYUlZpZXc6OnJlcXVlc3RWaWV3cG9ydFNjYWxlKE9wdGlvbmFsPGRvdWJsZT4g
dmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmVxdWVz
dGVkVmlld3BvcnRTY2FsZSA9IHN0ZDo6Y2xhbXAoKnZhbHVlLCBrTWluVmlld3BvcnRTY2FsZSwg
MS4wKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaAppbmRleCA0YjY2
MDY5MTE4MjY4ZDRhYjNmODU3NjU4NWE3OGM5MDIwMzBiYmM5Li43OTFjYjE5ZGIxZTBlMzIwMTUx
OWMyNDMyMzQ3MDZmNGI4Zjg0NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJWaWV3LmgKQEAgLTM5LDIzICszOSw0MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFdlYlhSRnJhbWU7CiBjbGFzcyBXZWJYUlJpZ2lkVHJhbnNmb3JtOworY2xhc3MgV2ViWFJTZXNz
aW9uOwogCiBjbGFzcyBXZWJYUlZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlZpZXc+IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChXZWJYUlZpZXcsIFdFQkNPUkVfRVhQ
T1JUKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhSVmlldz4g
Y3JlYXRlKFhSRXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgUmVmPEZsb2F0MzJBcnJh
eT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxXZWJYUlZpZXc+IGNyZWF0ZShS
ZWY8V2ViWFJGcmFtZT4mJiwgWFJFeWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBSZWY8
RmxvYXQzMkFycmF5PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+V2ViWFJWaWV3KCk7CiAKKyAg
ICBjb25zdCBXZWJYUkZyYW1lJiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWUuZ2V0KCk7
IH0KICAgICBYUkV5ZSBleWUoKSBjb25zdCB7IHJldHVybiBtX2V5ZTsgfQogICAgIGNvbnN0IEZs
b2F0MzJBcnJheSYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlv
bi5nZXQoKTsgfQogICAgIGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mIHRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtLmdldCgpOyB9CiAKKyAgICBPcHRpb25hbDxkb3VibGU+
IHJlY29tbWVuZGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdFZpZXdw
b3J0U2NhbGUoT3B0aW9uYWw8ZG91YmxlPik7CisKKyAgICBkb3VibGUgY3VycmVudFZpZXdwb3J0
U2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWaWV3cG9ydFNjYWxlOyB9CisgICAgdm9p
ZCBzZXRDdXJyZW50Vmlld3BvcnRTY2FsZShkb3VibGUgc2NhbGUpIHsgbV9jdXJyZW50Vmlld3Bv
cnRTY2FsZSA9IHNjYWxlOyB9CisgICAgZG91YmxlIHJlcXVlc3RlZFZpZXdwb3J0U2NhbGUoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3RlZFZpZXdwb3J0U2NhbGU7IH0KKworICAgIGJvb2wgaXNW
aWV3cG9ydE1vZGlmaWFibGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0TW9kaWZpYWJsZTsg
fQorICAgIHZvaWQgc2V0Vmlld3BvcnRNb2RpZmlhYmxlKGJvb2wgbW9kaWZpYWJsZSkgeyBtX3Zp
ZXdwb3J0TW9kaWZpYWJsZSA9IG1vZGlmaWFibGU7IH0KKwogcHJpdmF0ZToKLSAgICBXZWJYUlZp
ZXcoWFJFeWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYm
KTsKKyAgICBXZWJYUlZpZXcoUmVmPFdlYlhSRnJhbWU+JiYsIFhSRXllLCBSZWY8V2ViWFJSaWdp
ZFRyYW5zZm9ybT4mJiwgUmVmPEZsb2F0MzJBcnJheT4mJik7CiAKKyAgICBSZWY8V2ViWFJGcmFt
ZT4gbV9mcmFtZTsKICAgICBYUkV5ZSBtX2V5ZTsKICAgICBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4gbV90cmFuc2Zvcm07CiAgICAgUmVmPEZsb2F0MzJBcnJheT4gbV9wcm9qZWN0aW9uOworICAg
IGJvb2wgbV92aWV3cG9ydE1vZGlmaWFibGUgeyBmYWxzZSB9OworICAgIGRvdWJsZSBtX2N1cnJl
bnRWaWV3cG9ydFNjYWxlIHsgMS4wIH07CisgICAgZG91YmxlIG1fcmVxdWVzdGVkVmlld3BvcnRT
Y2FsZSB7IDEuMCB9OworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5pZGwKaW5kZXggZDI1ZjQyOTgxNDY2MjE3MzIx
NGM0N2Q2ZDVjMTQyZTM1OGUyMTkyMy4uYTg2OTUwNDgwYWMxNDNmNzM0N2M3M2M2ZmYxOTEyMDUy
NWRlYTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZp
ZXcuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmlkbApA
QCAtMzQsNCArMzQsNiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBYUkV5ZSBleWU7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEZsb2F0MzJBcnJheSBwcm9qZWN0aW9uTWF0cml4OwogICAgIFtT
YW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJSaWdpZFRyYW5zZm9ybSB0cmFuc2Zv
cm07CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZT8gcmVjb21tZW5kZWRWaWV3cG9ydFNj
YWxlOworICAgIHVuZGVmaW5lZCByZXF1ZXN0Vmlld3BvcnRTY2FsZShkb3VibGU/IHNjYWxlKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld3Bv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdwb3J0LmNwcApp
bmRleCBjYmFhM2M4YTVhOTNlNmQxZTllNjkzYTE5ZDQxMGNmY2Q1M2Y5ZGRiLi5lZTYyNDhmZmJj
YjEzNzBhOTAwOTYxNjZhZGQyOGRkYjFkZTg1OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld3BvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJWaWV3cG9ydC5jcHAKQEAgLTM0LDMxICszNCwxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlZpZXdwb3J0
KTsKIAotUmVmPFdlYlhSVmlld3BvcnQ+IFdlYlhSVmlld3BvcnQ6OmNyZWF0ZSgpCitSZWY8V2Vi
WFJWaWV3cG9ydD4gV2ViWFJWaWV3cG9ydDo6Y3JlYXRlKGNvbnN0IEludFJlY3QmIHZpZXdwb3J0
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlld3BvcnQpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlhSVmlld3BvcnQodmlld3BvcnQpKTsKIH0KIAotV2ViWFJWaWV3
cG9ydDo6V2ViWFJWaWV3cG9ydCgpID0gZGVmYXVsdDsKLQotaW50IFdlYlhSVmlld3BvcnQ6Ongo
KSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCi1pbnQgV2ViWFJWaWV3cG9ydDo6eSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBXZWJYUlZpZXdwb3J0Ojp3aWR0aCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBXZWJYUlZpZXdwb3J0OjpoZWlnaHQoKSBj
b25zdAorV2ViWFJWaWV3cG9ydDo6V2ViWFJWaWV3cG9ydChjb25zdCBJbnRSZWN0JiB2aWV3cG9y
dCkKKyAgICA6IG1fdmlld3BvcnQodmlld3BvcnQpCiB7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJWaWV3cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlZpZXdwb3J0LmgKaW5kZXggMmY4MjQ2YTliMWQ0ZWFhM2EwNDExMTY0YjE2YjVlNDY5YzIwMzAx
NC4uZTU4NDc2NTkxMDM3NDVlYWE2NzI5MDE1MDhjYTgzMGFhMTk1YWNhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdwb3J0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdwb3J0LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC0zNiwxNSArMzcsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
V2ViWFJWaWV3cG9ydCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSVmlld3BvcnQ+IHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSVmlld3BvcnQpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViWFJWaWV3cG9ydD4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxXZWJYUlZpZXdw
b3J0PiBjcmVhdGUoY29uc3QgSW50UmVjdCYpOwogCi0gICAgaW50IHgoKSBjb25zdDsKLSAgICBp
bnQgeSgpIGNvbnN0OwotICAgIGludCB3aWR0aCgpIGNvbnN0OwotICAgIGludCBoZWlnaHQoKSBj
b25zdDsKKyAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnQueCgpOyB9CisgICAg
aW50IHkoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0LnkoKTsgfQorICAgIGludCB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnQud2lkdGgoKTsgfQorICAgIGludCBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdwb3J0LmhlaWdodCgpOyB9CisKKyAgICB2b2lkIHVwZGF0ZVZp
ZXdwb3J0KGNvbnN0IEludFJlY3QmIHZpZXdwb3J0KSB7IG1fdmlld3BvcnQgPSB2aWV3cG9ydDsg
fQogCiBwcml2YXRlOgotICAgIFdlYlhSVmlld3BvcnQoKTsKKyAgICBXZWJYUlZpZXdwb3J0KGNv
bnN0IEludFJlY3QmKTsKKworICAgIEludFJlY3QgbV92aWV3cG9ydDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmNwcAppbmRleCAwZTU3M2IyMmQ2NTdmOGVjYWQ1NGRjNzVmYTcwNzU3ODBhMjM0
M2MzLi43Y2FmY2E4ODdmNTg5MjQ4NzU1OGIzMzRmMDI0ZjNiYzRiOTU5NDVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0zNyw3
ICszNyw5IEBACiAjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlmCiAj
aW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgorI2luY2x1ZGUgIldlYlhSRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJYUlZpZXcuaCIK
ICNpbmNsdWRlICJXZWJYUlZpZXdwb3J0LmgiCiAjaW5jbHVkZSAiWFJXZWJHTExheWVySW5pdC5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC05Nyw2ICs5OSw4IEBAIFdl
YlhSV2ViR0xMYXllcjo6V2ViWFJXZWJHTExheWVyKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lv
biwgV2ViWFJSZW5kZXJpbmdDb250CiAgICAgOiBXZWJYUkxheWVyKHNlc3Npb24tPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQogICAg
ICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCisgICAgLCBtX2xlZnRWaWV3cG9ydChXZWJY
UlZpZXdwb3J0OjpjcmVhdGUoeyB9KSkKKyAgICAsIG1fcmlnaHRWaWV3cG9ydChXZWJYUlZpZXdw
b3J0OjpjcmVhdGUoeyB9KSkKIHsKICAgICAvLyA3LiBJbml0aWFsaXplIGxheWVy4oCZcyBpZ25v
cmVEZXB0aFZhbHVlcyBhcyBmb2xsb3dzOgogICAgIC8vICAgNy4xIElmIGxheWVySW5pdOKAmXMg
aWdub3JlRGVwdGhWYWx1ZXMgdmFsdWUgaXMgZmFsc2UgYW5kIHRoZSBYUiBDb21wb3NpdG9yIHdp
bGwgbWFrZSB1c2Ugb2YgZGVwdGggdmFsdWVzLApAQCAtMTgzLDkgKzE4Nyw1OCBAQCB1bnNpZ25l
ZCBXZWJYUldlYkdMTGF5ZXI6OmZyYW1lYnVmZmVySGVpZ2h0KCkgY29uc3QKICAgICAgICAgfSk7
CiB9CiAKLVJlZlB0cjxXZWJYUlZpZXdwb3J0PiBXZWJYUldlYkdMTGF5ZXI6OmdldFZpZXdwb3J0
KGNvbnN0IFdlYlhSVmlldyYpCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dl
YnhyLyNkb20teHJ3ZWJnbGxheWVyLWdldHZpZXdwb3J0CitFeGNlcHRpb25PcjxSZWZQdHI8V2Vi
WFJWaWV3cG9ydD4+IFdlYlhSV2ViR0xMYXllcjo6Z2V0Vmlld3BvcnQoV2ViWFJWaWV3JiB2aWV3
KQogewotICAgIHJldHVybiB7IH07CisgICAgLy8gMS4gTGV0IHNlc3Npb24gYmUgdmlld+KAmXMg
c2Vzc2lvbi4KKyAgICAvLyAyLiBMZXQgZnJhbWUgYmUgc2Vzc2lvbuKAmXMgYW5pbWF0aW9uIGZy
YW1lLgorICAgIC8vIDMuIElmIHNlc3Npb24gaXMgbm90IGVxdWFsIHRvIGxheWVy4oCZcyBzZXNz
aW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisg
ICAgaWYgKCZ2aWV3LmZyYW1lKCkuc2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA0LiBJ
ZiBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAvLyA1LiBJZiB2aWV34oCZcyBmcmFt
ZSBpcyBub3QgZXF1YWwgdG8gZnJhbWUsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIXZpZXcuZnJhbWUoKS5pc0FjdGl2ZSgpIHx8ICF2
aWV3LmZyYW1lKCkuaXNBbmltYXRpb25GcmFtZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsgCisKKyAgICAvLyA2LiBJZiB0aGUgdmlld3BvcnQgbW9k
aWZpYWJsZSBmbGFnIGlzIHRydWUgYW5kIHZpZXfigJlzIHJlcXVlc3RlZCB2aWV3cG9ydCBzY2Fs
ZSBpcyBub3QgZXF1YWwgdG8gY3VycmVudCB2aWV3cG9ydCBzY2FsZToKKyAgICAvLyAgIDYuMSBT
ZXQgY3VycmVudCB2aWV3cG9ydCBzY2FsZSB0byByZXF1ZXN0ZWQgdmlld3BvcnQgc2NhbGUuCisg
ICAgLy8gICA2LjIgQ29tcHV0ZSB0aGUgc2NhbGVkIHZpZXdwb3J0LgorICAgIGlmICh2aWV3LmN1
cnJlbnRWaWV3cG9ydFNjYWxlKCkgIT0gdmlldy5yZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlKCkpCisg
ICAgICAgIHZpZXcuc2V0Q3VycmVudFZpZXdwb3J0U2NhbGUodmlldy5yZXF1ZXN0ZWRWaWV3cG9y
dFNjYWxlKCkpOworCisgICAgLy8gNy4gU2V0IHRoZSB2aWV34oCZcyB2aWV3cG9ydCBtb2RpZmlh
YmxlIGZsYWcgdG8gZmFsc2UuCisgICAgdmlldy5zZXRWaWV3cG9ydE1vZGlmaWFibGUoZmFsc2Up
OworCisgICAgLy8gOC4gTGV0IHZpZXdwb3J0IGJlIHRoZSBYUlZpZXdwb3J0IGZyb20gdGhlIGxp
c3Qgb2Ygdmlld3BvcnQgb2JqZWN0cyBhc3NvY2lhdGVkIHdpdGggdmlldy4KKyAgICBhdXRvJiB2
aWV3cG9ydCA9IHZpZXcuZXllKCkgPT0gWFJFeWU6OlJpZ2h0ID8gbV9yaWdodFZpZXdwb3J0IDog
bV9sZWZ0Vmlld3BvcnQ7CisKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlv
L3dlYnhyLyN4cnZpZXctb2J0YWluLWEtc2NhbGVkLXZpZXdwb3J0CisgICAgLy8gQ29tcHV0ZSB0
aGUgc2NhbGVkIHZpZXdwb3J0LgorCisgICAgYXV0byByb3VuZERvd24gPSBbXShkb3VibGUgdmFs
dWUpIC0+IGludCB7CisgICAgICAgIC8vIFJvdW5kIGRvd24gdG8gaW50ZWdlciB2YWx1ZSBhbmQg
ZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGlzIG5vdCB6ZXJvLgorICAgICAgICByZXR1cm4gc3RkOjpt
YXgoMSwgc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmZsb29yKHZhbHVlKSkpOworICAgIH07CisgICAg
CisgICAgZG91YmxlIHNjYWxlID0gdmlldy5jdXJyZW50Vmlld3BvcnRTY2FsZSgpOworICAgIElu
dFJlY3Qgdmlld3BvcnRSZWN0OworCisgICAgdmlld3BvcnRSZWN0LnNldEhlaWdodChyb3VuZERv
d24oZnJhbWVidWZmZXJIZWlnaHQoKSAqIHNjYWxlKSk7CisKKyAgICBpZiAodmlldy5leWUoKSA9
PSBYUkV5ZTo6UmlnaHQpIHsKKyAgICAgICAgZmxvYXQgd2lkdGggPSByb3VuZERvd24oZnJhbWVi
dWZmZXJXaWR0aCgpICogMC41ICogc2NhbGUpOworICAgICAgICB2aWV3cG9ydFJlY3Quc2V0WCh3
aWR0aCk7CisgICAgICAgIHZpZXdwb3J0UmVjdC5zZXRXaWR0aCh3aWR0aCk7CisgICAgfSBlbHNl
IGlmICh2aWV3LmV5ZSgpID09IFhSRXllOjpMZWZ0KQorICAgICAgICB2aWV3cG9ydFJlY3Quc2V0
V2lkdGgocm91bmREb3duKGZyYW1lYnVmZmVyV2lkdGgoKSAqIDAuNSAqIHNjYWxlKSk7CisgICAg
ZWxzZSAvLy8gWFJFeWU6Ok5vbmUKKyAgICAgICAgdmlld3BvcnRSZWN0LnNldFdpZHRoKHJvdW5k
RG93bihmcmFtZWJ1ZmZlcldpZHRoKCkgKiBzY2FsZSkpOworCisgICAgdmlld3BvcnQtPnVwZGF0
ZVZpZXdwb3J0KHZpZXdwb3J0UmVjdCk7CisKKyAgICAvLyA5LiBSZXR1cm4gdmlld3BvcnQuCisg
ICAgcmV0dXJuIFJlZlB0cjxXZWJYUlZpZXdwb3J0Pih2aWV3cG9ydC5jb3B5UmVmKCkpOwogfQog
CiBkb3VibGUgV2ViWFJXZWJHTExheWVyOjpnZXROYXRpdmVGcmFtZWJ1ZmZlclNjYWxlRmFjdG9y
KGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCmluZGV4IDEwNmNlYjVmY2QzNjVjNzE2NjJlODRkMDAx
ZjE3ZTI5YTNlYjZlZmUuLjc1OTkyMTdkODc3OTgyNDY0NjkyOGI3MjVlYzdhYWUzODlhMTQxZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaApA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgZnJhbWVidWZmZXJXaWR0aCgp
IGNvbnN0OwogICAgIHVuc2lnbmVkIGZyYW1lYnVmZmVySGVpZ2h0KCkgY29uc3Q7CiAKLSAgICBS
ZWZQdHI8V2ViWFJWaWV3cG9ydD4gZ2V0Vmlld3BvcnQoY29uc3QgV2ViWFJWaWV3Jik7CisgICAg
RXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmlld3BvcnQ+PiBnZXRWaWV3cG9ydChXZWJYUlZpZXcm
KTsKIAogICAgIHN0YXRpYyBkb3VibGUgZ2V0TmF0aXZlRnJhbWVidWZmZXJTY2FsZUZhY3Rvcihj
b25zdCBXZWJYUlNlc3Npb24mKTsKIApAQCAtODcsNiArODcsOCBAQCBwcml2YXRlOgogCiAgICAg
UmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFdlYlhSUmVuZGVyaW5nQ29udGV4dCBt
X2NvbnRleHQ7CisgICAgUmVmPFdlYlhSVmlld3BvcnQ+IG1fbGVmdFZpZXdwb3J0OworICAgIFJl
ZjxXZWJYUlZpZXdwb3J0PiBtX3JpZ2h0Vmlld3BvcnQ7CiAgICAgYm9vbCBtX2FudGlhbGlhcyB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2lnbm9yZURlcHRoVmFsdWVzIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNDb21wb3NpdGlvbkVuYWJsZWQgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5pZGwKaW5kZXggNWY5ZTZlMjRmNmFhNjlj
MTc5OGMxMjQzZTE5Njc0ZjYyZWQyNWRjNS4uNGE5ODZiNzA3NGM5Y2UxNmVmYWU0MzAzMTNjNTFh
MjI2NGIxMDA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UldlYkdMTGF5ZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmlkbApAQCAtNDksNyArNDksNyBAQCB0eXBlZGVmIChXZWJHTFJlbmRlcmluZ0Nv
bnRleHQpIFdlYlhSV2ViR0xSZW5kZXJpbmdDb250ZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGZyYW1lYnVmZmVySGVpZ2h0OwogCiAgICAgLy8gTWV0aG9kcwotICAg
IFdlYlhSVmlld3BvcnQ/IGdldFZpZXdwb3J0KFdlYlhSVmlldyB2aWV3KTsKKyAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFdlYlhSVmlld3BvcnQ/IGdldFZpZXdwb3J0KFdlYlhSVmlldyB2aWV3KTsK
IAogICAgIC8vIFN0YXRpYyBNZXRob2RzCiAgICAgc3RhdGljIGRvdWJsZSBnZXROYXRpdmVGcmFt
ZWJ1ZmZlclNjYWxlRmFjdG9yKFdlYlhSU2Vzc2lvbiBzZXNzaW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCBlMzcyMWQ4ODZlYTk5YTBkZjkwODJlNThlMjU1
Y2QzMmQwZjdkZThiLi43ZTAwZGYwN2JlNWUxZWU1NDdmNDIzNDhhNzk3ZjlmZjE0NWNkNjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC03NSw2ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0
aW9uKFNlc3Npb25Nb2RlKSB7IHJldHVybiB7IDEsIDEgfTsgfQogCiAgICAgYm9vbCBzdXBwb3J0
c09yaWVudGF0aW9uVHJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzT3JpZW50YXRp
b25UcmFja2luZzsgfQorICAgIGJvb2wgc3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N1cHBvcnRzVmlld3BvcnRTY2FsaW5nOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSA9IDA7CkBAIC0xNDEsNiAr
MTQyLDcgQEAgcHJvdGVjdGVkOgogICAgIEVuYWJsZWRGZWF0dXJlc1Blck1vZGVNYXAgbV9lbmFi
bGVkRmVhdHVyZXNNYXA7CiAKICAgICBib29sIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5n
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fc3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcgeyBmYWxzZSB9
OwogICAgIFdlYWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IG1fdHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjU3N2JjNTY3MGEwYzUwNmU1NWM2YmU2NGVi
NDI3OTQwNmFhZGIwYi4uMzBmOTJlYTczZWEzOWQxMzg5YWQ3YzY0MWVkMzJmOWZmMDg2MmUwNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTIyICBJbWFub2wgRmVybmFuZGV6ICA8aWZl
cm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBnZXRWaWV3cG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjcw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IFdlYlhSIFZpZXdwb3J0IHRlc3QgZXhwZWN0YXRpb25zLgorCisgICAgICAgICogcGxhdGZvcm0v
d3BlL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDItMjEgIExhdXJvIE1vdXJhICA8bG1vdXJh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIEdhcmRlbmluZyBhbmQgdXBkYXRpbmcgYmFz
ZWxpbmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAyOGRhZmEwZGM1Mzk1ZmY3
YjI0NjFiNGEzMjgyNGIxYzRhNDkyYTgxLi5mNGUwNDQ3MDFjZmM4YmIxMDRhN2NlZTdhNjI3YTVm
YjcwZDdlMmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0wMi0yMiAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld3BvcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjI3MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXZWJYUiBWaWV3cG9ydCB0ZXN0
IGV4cGVjdGF0aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZp
ZXdwb3J0X3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl92aWV3cG9ydHMuaHR0cHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKwogMjAyMS0wMi0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN1cHBvcnQgbW9kdWxlcyBpbiBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJWaWV3cG9ydF92YWxpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld3BvcnRfdmFsaWQuaHR0cHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5YTZlYjcyYWQ1NzUzNDFiNWRkNTAzZTJkNmM2NGEzYmU1
MjRjNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld3BvcnRfdmFsaWQuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorCitQQVNTIFhSVmlld3BvcnQgYXR0cmlidXRlcyBhcmUgdmFsaWQKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94cldlYkdMTGF5ZXJfdmlld3BvcnRzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX3Zp
ZXdwb3J0cy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE2ZWJmYzRkYTgzMjY0NGIw
ZGQ0NDQxMTliYzg4ODRhMDdjZGQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX3ZpZXdwb3J0
cy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgWFJXZWJHTExheWVy
IHJlcG9ydHMgYSB2YWxpZCB2aWV3cG9ydHMgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBY
UldlYkdMTGF5ZXIgcmVwb3J0cyBhIHZhbGlkIHZpZXdwb3J0cyBmb3IgaW5saW5lIHNlc3Npb25z
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODQyNjdi
YTQ3MWFmMDY1ZDM2MzVhNjU5NTcyN2FhYjI4MmVlNjYyMC4uMDgwNWU2YzExNTMwZTM5MjBjOGJi
NGIxMTc3OTk3Nzk0NjQyMDc5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3Bl
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTY0Nyw4ICs2NDcsNiBAQCB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNlX2lzUwogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy5odG1s
IFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19t
YXRjaC5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyVmlld19vbmVmcmFtZXVwZGF0ZS5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQu
b3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJH
TExheWVyX2NvbnN0cnVjdG9yLmh0dHBzLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMDk4
NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJh
bWVidWZmZXJfc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL25hdmlnYXRvcl94cl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwg
WyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVu
Y2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9yZWxhdGlvbnNo
aXBzLmh0dHBzLmh0bWwgWyBQYXNzIF0KQEAgLTY2Niw2ICs2NjQsMTAgQEAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X2dldFZpZXdlclAKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMuaHRtbCBbIFBhc3MgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJl
ZmVyZW5jZVNwYWNlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy5odG1s
IFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld3Bv
cnRfdmFsaWQuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfY29uc3RydWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVi
dWZmZXJfc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl92aWV3cG9ydHMuaHR0cHMuaHRtbCBbIFBh
c3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVf
dmVydGljYWxfZm92X2ltbWVyc2l2ZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV91cGRhdGUuaHR0cHMuaHRtbCBb
IFBhc3MgXQogaHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZF9kZXZpY2VfcmVwb3J0c19zaHV0
ZG93bi5odHRwcy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421306</attachid>
            <date>2021-02-23 05:54:56 -0800</date>
            <delta_ts>2021-02-24 05:09:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222270-20210223145455.patch</filename>
            <type>text/plain</type>
            <size>27091</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0NDU1OGNjNTgzNTkx
Mzk5YmY2YWFmOGNhMGE2MzBhNWM4NDVjNy4uMWEzYmM3ZmU5MzNhZjM1OWQ4YTY3YTViNDJkMDQ0
NjhlYjFiYTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAyLTIyICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBXZWJYUiBnZXRWaWV3cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyMjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZSk6IHNldCBXZWJYUlZpZXcgdmlld3BvcnQg
bW9kaWZpYWJsZSB2YWx1ZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmlzQW5pbWF0aW9uRnJhbWUgY29uc3QpOiBh
ZGQgbWV0aG9kLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOiBJ
bXBsZW1lbnQgc3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSU2Vzc2lvbjo6c3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSVmlldy5jcHA6IEFkZCB2aWV3cG9ydCBzY2FsZSBkYXRhLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJYUlZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpyZWNvbW1lbmRlZFZpZXdwb3J0U2Nh
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpyZXF1ZXN0Vmlld3BvcnRT
Y2FsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSVmlldzo6ZnJhbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJW
aWV3OjpjdXJyZW50Vmlld3BvcnRTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UlZpZXc6OnNldEN1cnJlbnRWaWV3cG9ydFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
Vmlldzo6cmVxdWVzdGVkVmlld3BvcnRTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlZpZXc6OmlzVmlld3BvcnRNb2RpZmlhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSVmlldzo6c2V0Vmlld3BvcnRNb2RpZmlhYmxlKToKKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJWaWV3LmlkbDogYWRkIHJlcXVlc3RWaWV3cG9ydFNjYWxlKCkgYW5kIHJlY29t
bWVuZGVkVmlld3BvcnRTY2FsZS4KKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJWaWV3
cG9ydC5jcHA6IEltcGxlbWVudCB2aWV3cG9ydCByZWN0IHZhbHVlcy4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSVmlld3BvcnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdw
b3J0OjpXZWJYUlZpZXdwb3J0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSVmlld3Bv
cnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSVmlld3BvcnQ6OnggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJWaWV3cG9ydDo6eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlZpZXdwb3J0Ojp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdw
b3J0OjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3cG9ydDo6dXBk
YXRlVmlld3BvcnQpOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIu
Y3BwOiBJbXBsZW1lbnQgZ2V0Vmlld3BvcnQoKQorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJH
TExheWVyOjpXZWJYUldlYkdMTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bV9yaWdodFZpZXdw
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6Z2V0Vmlld3BvcnQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmg6CisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5pZGw6IEFkZCBNYXlUaHJvd0V4Y2VwdGlvbgor
CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOiBBZGQgc3VwcG9ydHNWaWV3cG9y
dFNjYWxpbmcgbWV0aG9kCisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OnN1cHBvcnRzVmll
d3BvcnRTY2FsaW5nIGNvbnN0KToKKwogMjAyMS0wMi0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgSGFuZGxlIFBhZ2U6OmRpZEZpbmlzaExv
YWRpbmdJbWFnZUZvckVsZW1lbnQgYXN5bmNocm9ub3VzbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IDhlN2IzOGFmNDgwMmQ1MmFjYTY3OTNmNzk5
NzgwNjhhN2Y0NzhkMGIuLmY0NWZiMTE0NzVhMmQ4MjQwZjZiZjQ3ODA2YjQwMDk4NDhjYjA4N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMjAx
LDcgKzIwMSw4IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+PiBXZWJYUkZy
YW1lOjpnZXRWaWV3ZXJQb3NlKGNvbnN0IERvY3VtZW50JiBkCiAgICAgICAgICAgICByZXR1cm4g
VHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGZvdiwgYXNwZWN0LCBuZWFyLCBm
YXIpLnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGF1
dG8geHJWaWV3ID0gV2ViWFJWaWV3OjpjcmVhdGUodmlldy5leWUsIFdURk1vdmUodHJhbnNmb3Jt
KSwgRmxvYXQzMkFycmF5OjpjcmVhdGUocHJvamVjdGlvbi5kYXRhKCksIHByb2plY3Rpb24uc2l6
ZSgpKSk7CisgICAgICAgIGF1dG8geHJWaWV3ID0gV2ViWFJWaWV3OjpjcmVhdGUobWFrZVJlZigq
dGhpcyksIHZpZXcuZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSksIEZsb2F0MzJBcnJheTo6Y3JlYXRl
KHByb2plY3Rpb24uZGF0YSgpLCBwcm9qZWN0aW9uLnNpemUoKSkpOworICAgICAgICB4clZpZXct
PnNldFZpZXdwb3J0TW9kaWZpYWJsZShtX3Nlc3Npb24tPnN1cHBvcnRzVmlld3BvcnRTY2FsaW5n
KCkpOwogCiAgICAgICAgIC8vICA4LjguIEFwcGVuZCB4cnZpZXcgdG8geHJ2aWV3cwogICAgICAg
ICB4clZpZXdzLmFwcGVuZChXVEZNb3ZlKHhyVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCBkM2I5Njc2NTVhY2JiMmZlMzg4NmRjN2I1ZmUyMmE4
MTE2NTc4ZDcwLi4xNTA1MDMxNWE1NDI5NTQwMDk4ZWI5M2YzOWI4MDdlZTI2ZDc3ZmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtNjEsNiArNjEsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2FjdGl2ZSA9
IGFjdGl2ZTsgfQogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZTsg
fQorICAgIGJvb2wgaXNBbmltYXRpb25GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbmltYXRp
b25GcmFtZTsgfQogCiAgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeEZyb21Q
b3NlKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBlNWI0Y2Zk
ZjU3YzViZDhjYjNhODVkNTlmYjdkMmNiMDA2OGJjMjc1Li5kZDFlY2NkMDFmNTAzYTI4YWM5ZGM3
OTQ3ODE0OWJiZWI4MWQyOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uY3BwCkBAIC0zMDYsNiArMzA2LDE0IEBAIEludFNpemUgV2ViWFJTZXNzaW9u
OjpyZWNvbW1lbmRlZFdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZXZpY2UtPnJlY29tbWVuZGVkUmVzb2x1dGlvbihtX21vZGUpOwogfQogCisvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN2aWV3LXZpZXdwb3J0LW1vZGlmaWFi
bGUKK2Jvb2wgV2ViWFJTZXNzaW9uOjpzdXBwb3J0c1ZpZXdwb3J0U2NhbGluZygpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fZGV2aWNlKTsKKyAgICAvLyBPbmx5IGltbWVyc2l2ZSBzZXNzaW9ucyBz
dXBwb3J0IHZpZXdwb3J0IHNjYWxpbmcuCisgICAgcmV0dXJuIG1fbW9kZSA9PSBYUlNlc3Npb25N
b2RlOjpJbW1lcnNpdmVWciAmJiBtX2RldmljZS0+c3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKTsK
K30KKwogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jc2h1dC1kb3du
LXRoZS1zZXNzaW9uCiB2b2lkIFdlYlhSU2Vzc2lvbjo6c2h1dGRvd24oSW5pdGlhdGVkQnlTeXN0
ZW0gaW5pdGlhdGVkQnlTeXN0ZW0pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uaAppbmRleCBkZjMzYWM2ZTRkMWI1ZDZhMWI1OTJjMDExNzIzMDQyNWJmODFi
MzdkLi44NWNjMjU1MWMyYzgzZTk4NjFhNTQ3ZTJhZGY1ZGRmNDI5YTc1MzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKQEAgLTgxLDYgKzgxLDcgQEAg
cHVibGljOgogCiAgICAgSW50U2l6ZSBuYXRpdmVXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlvbigp
IGNvbnN0OwogICAgIEludFNpemUgcmVjb21tZW5kZWRXZWJHTEZyYW1lYnVmZmVyUmVzb2x1dGlv
bigpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNWaWV3cG9ydFNjYWxpbmcoKSBjb25zdDsgCiAK
ICAgICAvLyBFdmVudFRhcmdldC4KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJWaWV3LmNwcAppbmRleCA0M2QxMGI4N2ZmNmNjYmI3NTAxMDAxNTkzMWNiMGZjZjdhNGIw
YjU5Li4yM2M4ZWVhNDE1Mjc0ZDA4NWQzZjljMzY3MjY2ODM4MTFlMmQ4NTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCkBAIC0yOCwyOCArMjgsNTAgQEAK
IAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRB
cnJheUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKKy8vIEFyYml0cmFyeSB2YWx1ZSBmb3IgbWluaW11bSB2aWV3cG9y
dCBzY2FsaW5nLgorLy8gQmVsb3cgdGhpcyB0aHJlc2hvbGQgdGhlIHJlc3VsdGluZyB2aWV3cG9y
dCB3b3VsZCBiZSB0b28gcGl4ZWxhdGVkLgorc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga01pblZp
ZXdwb3J0U2NhbGUgPSAwLjE7CisKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlZp
ZXcpOwogCi1SZWY8V2ViWFJWaWV3PiBXZWJYUlZpZXc6OmNyZWF0ZShYUkV5ZSBleWUsIFJlZjxX
ZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgUmVmPEZsb2F0MzJBcnJheT4mJiBwcm9q
ZWN0aW9uKQorUmVmPFdlYlhSVmlldz4gV2ViWFJWaWV3OjpjcmVhdGUoUmVmPFdlYlhSRnJhbWU+
JiYgZnJhbWUsIFhSRXllIGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3Jt
LCBSZWY8RmxvYXQzMkFycmF5PiYmIHByb2plY3Rpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViWFJWaWV3KGV5ZSwgV1RGTW92ZSh0cmFuc2Zvcm0pLCBXVEZNb3ZlKHByb2plY3Rp
b24pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJWaWV3KFdURk1vdmUoZnJhbWUp
LCBleWUsIFdURk1vdmUodHJhbnNmb3JtKSwgV1RGTW92ZShwcm9qZWN0aW9uKSkpOwogfQogCi1X
ZWJYUlZpZXc6OldlYlhSVmlldyhYUkV5ZSBleWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYm
IHRyYW5zZm9ybSwgUmVmPEZsb2F0MzJBcnJheT4mJiBwcm9qZWN0aW9uKQotICAgIDogbV9leWUo
ZXllKQorV2ViWFJWaWV3OjpXZWJYUlZpZXcoUmVmPFdlYlhSRnJhbWU+JiYgZnJhbWUsIFhSRXll
IGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBSZWY8RmxvYXQzMkFy
cmF5PiYmIHByb2plY3Rpb24pCisgICAgOiBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQorICAgICwg
bV9leWUoZXllKQogICAgICwgbV90cmFuc2Zvcm0oV1RGTW92ZSh0cmFuc2Zvcm0pKQotICAgICwg
bV9wcm9qZWN0aW9uKHByb2plY3Rpb24pCisgICAgLCBtX3Byb2plY3Rpb24oV1RGTW92ZShwcm9q
ZWN0aW9uKSkKIHsKIH0KIAogV2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0OwogCisv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ2aWV3LXJlY29t
bWVuZGVkdmlld3BvcnRzY2FsZQorT3B0aW9uYWw8ZG91YmxlPiBXZWJYUlZpZXc6OnJlY29tbWVu
ZGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0Cit7CisgICAgLy8gUmV0dXJuIG51bGwgaWYgdGhlIHN5
c3RlbSBkb2VzIG5vdCBpbXBsZW1lbnQgYSBoZXVyaXN0aWMgb3IgbWV0aG9kIGZvciBkZXRlcm1p
bmluZyBhIHJlY29tbWVuZGVkIHNjYWxlLgorICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisK
Ky8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnZpZXctcmVx
dWVzdHZpZXdwb3J0c2NhbGUKK3ZvaWQgV2ViWFJWaWV3OjpyZXF1ZXN0Vmlld3BvcnRTY2FsZShP
cHRpb25hbDxkb3VibGU+IHZhbHVlKQoreworICAgIGlmICghdmFsdWUgfHwgKnZhbHVlIDw9IDAu
MCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmVxdWVzdGVkVmlld3BvcnRTY2FsZSA9IHN0ZDo6
Y2xhbXAoKnZhbHVlLCBrTWluVmlld3BvcnRTY2FsZSwgMS4wKTsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlZpZXcuaAppbmRleCA0YjY2MDY5MTE4MjY4ZDRhYjNmODU3NjU4NWE3
OGM5MDIwMzBiYmM5Li5lZjM0MWYxNmVmZmUyN2JjODViNzA0ZWQ5MTFiNTQ1ZjRmMTUyNTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKQEAgLTM5LDIzICszOSwz
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYlhSRnJhbWU7CiBjbGFzcyBXZWJY
UlJpZ2lkVHJhbnNmb3JtOworY2xhc3MgV2ViWFJTZXNzaW9uOwogCiBjbGFzcyBXZWJYUlZpZXcg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlZpZXc+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0VYUE9SVChXZWJYUlZpZXcsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhSVmlldz4gY3JlYXRlKFhSRXllLCBSZWY8V2ViWFJS
aWdpZFRyYW5zZm9ybT4mJiwgUmVmPEZsb2F0MzJBcnJheT4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxXZWJYUlZpZXc+IGNyZWF0ZShSZWY8V2ViWFJGcmFtZT4mJiwgWFJFeWUs
IFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+V2ViWFJWaWV3KCk7CiAKKyAgICBjb25zdCBXZWJYUkZyYW1lJiBmcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWUuZ2V0KCk7IH0KICAgICBYUkV5ZSBleWUoKSBjb25z
dCB7IHJldHVybiBtX2V5ZTsgfQogICAgIGNvbnN0IEZsb2F0MzJBcnJheSYgcHJvamVjdGlvbk1h
dHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbi5nZXQoKTsgfQogICAgIGNvbnN0IFdl
YlhSUmlnaWRUcmFuc2Zvcm0mIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3Jt
LmdldCgpOyB9CiAKKyAgICBPcHRpb25hbDxkb3VibGU+IHJlY29tbWVuZGVkVmlld3BvcnRTY2Fs
ZSgpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdFZpZXdwb3J0U2NhbGUoT3B0aW9uYWw8ZG91Ymxl
Pik7CisKKyAgICBkb3VibGUgcmVxdWVzdGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWVzdGVkVmlld3BvcnRTY2FsZTsgfQorICAgIGJvb2wgaXNWaWV3cG9ydE1vZGlmaWFi
bGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0TW9kaWZpYWJsZTsgfQorICAgIHZvaWQgc2V0
Vmlld3BvcnRNb2RpZmlhYmxlKGJvb2wgbW9kaWZpYWJsZSkgeyBtX3ZpZXdwb3J0TW9kaWZpYWJs
ZSA9IG1vZGlmaWFibGU7IH0KKwogcHJpdmF0ZToKLSAgICBXZWJYUlZpZXcoWFJFeWUsIFJlZjxX
ZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYmKTsKKyAgICBXZWJYUlZp
ZXcoUmVmPFdlYlhSRnJhbWU+JiYsIFhSRXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwg
UmVmPEZsb2F0MzJBcnJheT4mJik7CiAKKyAgICBSZWY8V2ViWFJGcmFtZT4gbV9mcmFtZTsKICAg
ICBYUkV5ZSBtX2V5ZTsKICAgICBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07
CiAgICAgUmVmPEZsb2F0MzJBcnJheT4gbV9wcm9qZWN0aW9uOworICAgIGJvb2wgbV92aWV3cG9y
dE1vZGlmaWFibGUgeyBmYWxzZSB9OworICAgIGRvdWJsZSBtX3JlcXVlc3RlZFZpZXdwb3J0U2Nh
bGUgeyAxLjAgfTsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaWRsCmluZGV4IGQyNWY0Mjk4MTQ2NjIxNzMyMTRj
NDdkNmQ1YzE0MmUzNThlMjE5MjMuLmE4Njk1MDQ4MGFjMTQzZjczNDdjNzNjNmZmMTkxMjA1MjVk
ZWE5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5pZGwKQEAg
LTM0LDQgKzM0LDYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgWFJFeWUgZXllOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBGbG9hdDMyQXJyYXkgcHJvamVjdGlvbk1hdHJpeDsKICAgICBbU2Ft
ZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSUmlnaWRUcmFuc2Zvcm0gdHJhbnNmb3Jt
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGU/IHJlY29tbWVuZGVkVmlld3BvcnRTY2Fs
ZTsKKyAgICB1bmRlZmluZWQgcmVxdWVzdFZpZXdwb3J0U2NhbGUoZG91YmxlPyBzY2FsZSk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdwb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3cG9ydC5jcHAKaW5k
ZXggY2JhYTNjOGE1YTkzZTZkMWU5ZTY5M2ExOWQ0MTBjZmNkNTNmOWRkYi4uZWU2MjQ4ZmZiY2Ix
MzcwYTkwMDk2MTY2YWRkMjhkZGIxZGU4NThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSVmlld3BvcnQuY3BwCkBAIC0zNCwzMSArMzQsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJWaWV3cG9ydCk7
CiAKLVJlZjxXZWJYUlZpZXdwb3J0PiBXZWJYUlZpZXdwb3J0OjpjcmVhdGUoKQorUmVmPFdlYlhS
Vmlld3BvcnQ+IFdlYlhSVmlld3BvcnQ6OmNyZWF0ZShjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlZpZXdwb3J0KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJYUlZpZXdwb3J0KHZpZXdwb3J0KSk7CiB9CiAKLVdlYlhSVmlld3Bv
cnQ6OldlYlhSVmlld3BvcnQoKSA9IGRlZmF1bHQ7Ci0KLWludCBXZWJYUlZpZXdwb3J0Ojp4KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IFdlYlhSVmlld3BvcnQ6OnkoKSBjb25z
dAotewotICAgIHJldHVybiAwOwotfQotCi1pbnQgV2ViWFJWaWV3cG9ydDo6d2lkdGgoKSBjb25z
dAotewotICAgIHJldHVybiAwOwotfQotCi1pbnQgV2ViWFJWaWV3cG9ydDo6aGVpZ2h0KCkgY29u
c3QKK1dlYlhSVmlld3BvcnQ6OldlYlhSVmlld3BvcnQoY29uc3QgSW50UmVjdCYgdmlld3BvcnQp
CisgICAgOiBtX3ZpZXdwb3J0KHZpZXdwb3J0KQogewotICAgIHJldHVybiAwOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSVmlld3BvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJW
aWV3cG9ydC5oCmluZGV4IDJmODI0NmE5YjFkNGVhYTNhMDQxMTE2NGIxNmI1ZTQ2OWMyMDMwMTQu
LjBhNWZlY2IyZTM1OWYyYzQxZWNlNDBhN2IzMTBhOGQ3MTA4ZWYxOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3cG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3cG9ydC5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtMzYsMTUgKzM3LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdl
YlhSVmlld3BvcnQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlZpZXdwb3J0PiB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUlZpZXdwb3J0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFdlYlhSVmlld3BvcnQ+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8V2ViWFJWaWV3cG9y
dD4gY3JlYXRlKGNvbnN0IEludFJlY3QmKTsKIAotICAgIGludCB4KCkgY29uc3Q7Ci0gICAgaW50
IHkoKSBjb25zdDsKLSAgICBpbnQgd2lkdGgoKSBjb25zdDsKLSAgICBpbnQgaGVpZ2h0KCkgY29u
c3Q7CisgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0LngoKTsgfQorICAgIGlu
dCB5KCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydC55KCk7IH0KKyAgICBpbnQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdwb3J0LndpZHRoKCk7IH0KKyAgICBpbnQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV92aWV3cG9ydC5oZWlnaHQoKTsgfQorCisgICAgdm9pZCB1cGRhdGVWaWV3
cG9ydChjb25zdCBJbnRSZWN0JiB2aWV3cG9ydCkgeyBtX3ZpZXdwb3J0ID0gdmlld3BvcnQ7IH0K
IAogcHJpdmF0ZToKLSAgICBXZWJYUlZpZXdwb3J0KCk7CisgICAgZXhwbGljaXQgV2ViWFJWaWV3
cG9ydChjb25zdCBJbnRSZWN0Jik7CisKKyAgICBJbnRSZWN0IG1fdmlld3BvcnQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSV2ViR0xMYXllci5jcHAKaW5kZXggMGU1NzNiMjJkNjU3ZjhlY2FkNTRkYzc1ZmE3MDc1
NzgwYTIzNDNjMy4uYzhkNDJlNTQ0MzNhY2RmMmNkMjNiNjg1NGYwNTUwZTFhYjVjNDAyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcApA
QCAtMzcsNyArMzcsOSBAQAogI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKICNl
bmRpZgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKKyNpbmNsdWRlICJX
ZWJYUkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViWFJW
aWV3LmgiCiAjaW5jbHVkZSAiV2ViWFJWaWV3cG9ydC5oIgogI2luY2x1ZGUgIlhSV2ViR0xMYXll
ckluaXQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtOTcsNiArOTks
OCBAQCBXZWJYUldlYkdMTGF5ZXI6OldlYlhSV2ViR0xMYXllcihSZWY8V2ViWFJTZXNzaW9uPiYm
IHNlc3Npb24sIFdlYlhSUmVuZGVyaW5nQ29udAogICAgIDogV2ViWFJMYXllcihzZXNzaW9uLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9u
KSkKICAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9sZWZ0Vmlld3Bv
cnREYXRhKHsgV2ViWFJWaWV3cG9ydDo6Y3JlYXRlKHsgfSkgfSkKKyAgICAsIG1fcmlnaHRWaWV3
cG9ydERhdGEoeyBXZWJYUlZpZXdwb3J0OjpjcmVhdGUoeyB9KSB9KQogewogICAgIC8vIDcuIElu
aXRpYWxpemUgbGF5ZXLigJlzIGlnbm9yZURlcHRoVmFsdWVzIGFzIGZvbGxvd3M6CiAgICAgLy8g
ICA3LjEgSWYgbGF5ZXJJbml04oCZcyBpZ25vcmVEZXB0aFZhbHVlcyB2YWx1ZSBpcyBmYWxzZSBh
bmQgdGhlIFhSIENvbXBvc2l0b3Igd2lsbCBtYWtlIHVzZSBvZiBkZXB0aCB2YWx1ZXMsCkBAIC0x
NDQsOSArMTQ4LDE4IEBAIFdlYlhSV2ViR0xMYXllcjo6V2ViWFJXZWJHTExheWVyKFJlZjxXZWJY
UlNlc3Npb24+JiYgc2Vzc2lvbiwgV2ViWFJSZW5kZXJpbmdDb250CiAgICAgICAgIC8vIDIuIElu
aXRpYWxpemUgbGF5ZXLigJlzIGZyYW1lYnVmZmVyIHRvIG51bGwuCiAgICAgICAgIG1fZnJhbWVi
dWZmZXIub2JqZWN0ID0gbnVsbHB0cjsKICAgICB9CisKKyAgICBhdXRvIGNhbnZhc0VsZW1lbnQg
PSBjYW52YXMoKTsKKyAgICBpZiAoY2FudmFzRWxlbWVudCkKKyAgICAgICAgY2FudmFzRWxlbWVu
dC0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1XZWJYUldlYkdMTGF5ZXI6On5XZWJYUldlYkdM
TGF5ZXIoKSA9IGRlZmF1bHQ7CitXZWJYUldlYkdMTGF5ZXI6On5XZWJYUldlYkdMTGF5ZXIoKQor
eworICAgIGF1dG8gY2FudmFzRWxlbWVudCA9IGNhbnZhcygpOworICAgIGlmIChjYW52YXNFbGVt
ZW50KQorICAgICAgICBjYW52YXNFbGVtZW50LT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7Cit9CiAK
IGJvb2wgV2ViWFJXZWJHTExheWVyOjphbnRpYWxpYXMoKSBjb25zdAogewpAQCAtMTgzLDkgKzE5
NiwzOSBAQCB1bnNpZ25lZCBXZWJYUldlYkdMTGF5ZXI6OmZyYW1lYnVmZmVySGVpZ2h0KCkgY29u
c3QKICAgICAgICAgfSk7CiB9CiAKLVJlZlB0cjxXZWJYUlZpZXdwb3J0PiBXZWJYUldlYkdMTGF5
ZXI6OmdldFZpZXdwb3J0KGNvbnN0IFdlYlhSVmlldyYpCisvLyBodHRwczovL2ltbWVyc2l2ZS13
ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ3ZWJnbGxheWVyLWdldHZpZXdwb3J0CitFeGNlcHRp
b25PcjxSZWZQdHI8V2ViWFJWaWV3cG9ydD4+IFdlYlhSV2ViR0xMYXllcjo6Z2V0Vmlld3BvcnQo
V2ViWFJWaWV3JiB2aWV3KQogewotICAgIHJldHVybiB7IH07CisgICAgLy8gMS4gTGV0IHNlc3Np
b24gYmUgdmlld+KAmXMgc2Vzc2lvbi4KKyAgICAvLyAyLiBMZXQgZnJhbWUgYmUgc2Vzc2lvbuKA
mXMgYW5pbWF0aW9uIGZyYW1lLgorICAgIC8vIDMuIElmIHNlc3Npb24gaXMgbm90IGVxdWFsIHRv
IGxheWVy4oCZcyBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCisgICAgaWYgKCZ2aWV3LmZyYW1lKCkuc2Vzc2lvbigpICE9IG1fc2Vzc2lv
bi5wdHIoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICAvLyA0LiBJZiBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gaXMgZmFsc2UsIHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAvLyA1LiBJ
ZiB2aWV34oCZcyBmcmFtZSBpcyBub3QgZXF1YWwgdG8gZnJhbWUsIHRocm93IGFuIEludmFsaWRT
dGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIXZpZXcuZnJhbWUoKS5p
c0FjdGl2ZSgpIHx8ICF2aWV3LmZyYW1lKCkuaXNBbmltYXRpb25GcmFtZSgpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsgCisKKyAgICBhdXRvJiB2aWV3
cG9ydERhdGEgPSB2aWV3LmV5ZSgpID09IFhSRXllOjpSaWdodCA/IG1fcmlnaHRWaWV3cG9ydERh
dGEgOiBtX2xlZnRWaWV3cG9ydERhdGE7CisKKyAgICAvLyA2LiBJZiB0aGUgdmlld3BvcnQgbW9k
aWZpYWJsZSBmbGFnIGlzIHRydWUgYW5kIHZpZXfigJlzIHJlcXVlc3RlZCB2aWV3cG9ydCBzY2Fs
ZSBpcyBub3QgZXF1YWwgdG8gY3VycmVudCB2aWV3cG9ydCBzY2FsZToKKyAgICAvLyAgIDYuMSBT
ZXQgY3VycmVudCB2aWV3cG9ydCBzY2FsZSB0byByZXF1ZXN0ZWQgdmlld3BvcnQgc2NhbGUuCisg
ICAgLy8gICA2LjIgQ29tcHV0ZSB0aGUgc2NhbGVkIHZpZXdwb3J0LgorICAgIGlmICh2aWV3Lmlz
Vmlld3BvcnRNb2RpZmlhYmxlKCkgJiYgdmlldy5yZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlKCkgIT0g
dmlld3BvcnREYXRhLmN1cnJlbnRTY2FsZSkgeworICAgICAgICB2aWV3cG9ydERhdGEuY3VycmVu
dFNjYWxlID0gdmlldy5yZXF1ZXN0ZWRWaWV3cG9ydFNjYWxlKCk7CisgICAgICAgIG1fdmlld3Bv
cnRzRGlydHkgPSB0cnVlOworICAgIH0KKworICAgIC8vIDcuIFNldCB0aGUgdmlld+KAmXMgdmll
d3BvcnQgbW9kaWZpYWJsZSBmbGFnIHRvIGZhbHNlLgorICAgIHZpZXcuc2V0Vmlld3BvcnRNb2Rp
ZmlhYmxlKGZhbHNlKTsKKworICAgIGlmIChtX3ZpZXdwb3J0c0RpcnR5KQorICAgICAgICBjb21w
dXRlVmlld3BvcnRzKCk7CisKKyAgICAvLyA4LiBMZXQgdmlld3BvcnQgYmUgdGhlIFhSVmlld3Bv
cnQgZnJvbSB0aGUgbGlzdCBvZiB2aWV3cG9ydCBvYmplY3RzIGFzc29jaWF0ZWQgd2l0aCB2aWV3
LgorICAgIC8vIDkuIFJldHVybiB2aWV3cG9ydC4KKyAgICByZXR1cm4gUmVmUHRyPFdlYlhSVmll
d3BvcnQ+KHZpZXdwb3J0RGF0YS52aWV3cG9ydC5jb3B5UmVmKCkpOwogfQogCiBkb3VibGUgV2Vi
WFJXZWJHTExheWVyOjpnZXROYXRpdmVGcmFtZWJ1ZmZlclNjYWxlRmFjdG9yKGNvbnN0IFdlYlhS
U2Vzc2lvbiYgc2Vzc2lvbikKQEAgLTIxMyw2ICsyNTYsMzggQEAgSFRNTENhbnZhc0VsZW1lbnQq
IFdlYlhSV2ViR0xMYXllcjo6Y2FudmFzKCkgY29uc3QKICAgICB9KTsKIH0KIAorLy8gaHR0cHM6
Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJ2aWV3LW9idGFpbi1hLXNjYWxlZC12
aWV3cG9ydAordm9pZCBXZWJYUldlYkdMTGF5ZXI6OmNvbXB1dGVWaWV3cG9ydHMoKQoreworICAg
IGF1dG8gcm91bmREb3duID0gW10oZG91YmxlIHZhbHVlKSAtPiBpbnQgeworICAgICAgICAvLyBS
b3VuZCBkb3duIHRvIGludGVnZXIgdmFsdWUgYW5kIGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBpcyBu
b3QgemVyby4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KDEsIHN0YXRpY19jYXN0PGludD4oc3Rk
OjpmbG9vcih2YWx1ZSkpKTsKKyAgICB9OworCisgICAgYXV0byB3aWR0aCA9IGZyYW1lYnVmZmVy
V2lkdGgoKTsKKyAgICBhdXRvIGhlaWdodCA9IGZyYW1lYnVmZmVySGVpZ2h0KCk7CisKKyAgICBp
ZiAobV9zZXNzaW9uLT5tb2RlKCkgPT0gWFJTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsKKyAg
ICAgICAgLy8gVXBkYXRlIGxlZnQgdmlld3BvcnQKKyAgICAgICAgYXV0byBzY2FsZSA9IG1fbGVm
dFZpZXdwb3J0RGF0YS5jdXJyZW50U2NhbGU7CisgICAgICAgIG1fbGVmdFZpZXdwb3J0RGF0YS52
aWV3cG9ydC0+dXBkYXRlVmlld3BvcnQoSW50UmVjdCgwLCAwLCByb3VuZERvd24od2lkdGggKiAw
LjUgKiBzY2FsZSksIHJvdW5kRG93bihoZWlnaHQgKiBzY2FsZSkpKTsKKworICAgICAgICAvLyBV
cGRhdGUgcmlnaHQgdmlld3BvcnQKKyAgICAgICAgc2NhbGUgPSBtX3JpZ2h0Vmlld3BvcnREYXRh
LmN1cnJlbnRTY2FsZTsKKyAgICAgICAgbV9yaWdodFZpZXdwb3J0RGF0YS52aWV3cG9ydC0+dXBk
YXRlVmlld3BvcnQoSW50UmVjdCh3aWR0aCAqIDAuNSwgMCwgcm91bmREb3duKHdpZHRoICogMC41
ICogc2NhbGUpLCByb3VuZERvd24oaGVpZ2h0ICogc2NhbGUpKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gV2UgcmV1c2UgbV9sZWZ0Vmlld3BvcnQgZm9yIFhSRXllOjpOb25lLgorICAgICAg
ICBtX2xlZnRWaWV3cG9ydERhdGEudmlld3BvcnQtPnVwZGF0ZVZpZXdwb3J0KEludFJlY3QoMCwg
MCwgd2lkdGgsIGhlaWdodCkpOworICAgIH0KKworICAgIG1fdmlld3BvcnRzRGlydHkgPSBmYWxz
ZTsKK30KKwordm9pZCBXZWJYUldlYkdMTGF5ZXI6OmNhbnZhc1Jlc2l6ZWQoQ2FudmFzQmFzZSYp
Cit7CisgICAgbV92aWV3cG9ydHNEaXJ0eSA9IHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCmluZGV4IDEwNmNlYjVmY2QzNjVjNzE2NjJlODRk
MDAxZjE3ZTI5YTNlYjZlZmUuLjJlZWYyMWU3YjAyMWNhNzFjNTdhMTg5MjlmYWEyNmYzMzI1YzZi
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiQ2Fu
dmFzQmFzZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiV2ViWFJMYXll
ci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KQEAgLTQ4LDcgKzQ5LDcgQEAgY2xhc3Mg
V2ViWFJWaWV3OwogY2xhc3MgV2ViWFJWaWV3cG9ydDsKIHN0cnVjdCBYUldlYkdMTGF5ZXJJbml0
OwogCi1jbGFzcyBXZWJYUldlYkdMTGF5ZXIgOiBwdWJsaWMgV2ViWFJMYXllciB7CitjbGFzcyBX
ZWJYUldlYkdMTGF5ZXIgOiBwdWJsaWMgV2ViWFJMYXllciwgcHJpdmF0ZSBDYW52YXNPYnNlcnZl
ciB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUldlYkdMTGF5ZXIpOwogcHVibGlj
OgogCkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmcmFtZWJ1ZmZlcldp
ZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgZnJhbWVidWZmZXJIZWlnaHQoKSBjb25zdDsKIAot
ICAgIFJlZlB0cjxXZWJYUlZpZXdwb3J0PiBnZXRWaWV3cG9ydChjb25zdCBXZWJYUlZpZXcmKTsK
KyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3cG9ydD4+IGdldFZpZXdwb3J0KFdlYlhS
VmlldyYpOwogCiAgICAgc3RhdGljIGRvdWJsZSBnZXROYXRpdmVGcmFtZWJ1ZmZlclNjYWxlRmFj
dG9yKGNvbnN0IFdlYlhSU2Vzc2lvbiYpOwogCkBAIC04MiwxNCArODMsMjggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJYUldlYkdMTGF5ZXIoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgV2ViWFJS
ZW5kZXJpbmdDb250ZXh0JiYsIGNvbnN0IFhSV2ViR0xMYXllckluaXQmKTsKIAorICAgIHZvaWQg
Y29tcHV0ZVZpZXdwb3J0cygpOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1dGVOYXRpdmVXZWJH
TEZyYW1lYnVmZmVyUmVzb2x1dGlvbigpOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1dGVSZWNv
bW1lbmRlZFdlYkdMRnJhbWVidWZmZXJSZXNvbHV0aW9uKCk7CiAKKyAgICB2b2lkIGNhbnZhc0No
YW5nZWQoQ2FudmFzQmFzZSYsIGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsIHsgfTsKKyAgICB2b2lk
IGNhbnZhc1Jlc2l6ZWQoQ2FudmFzQmFzZSYpIGZpbmFsOworICAgIHZvaWQgY2FudmFzRGVzdHJv
eWVkKENhbnZhc0Jhc2UmKSBmaW5hbCB7IH07CisKICAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nl
c3Npb247CiAgICAgV2ViWFJSZW5kZXJpbmdDb250ZXh0IG1fY29udGV4dDsKKworICAgIHN0cnVj
dCBWaWV3cG9ydERhdGEgeworICAgICAgICBSZWY8V2ViWFJWaWV3cG9ydD4gdmlld3BvcnQ7Cisg
ICAgICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgeyAxLjAgfTsKKyAgICB9OworCisgICAgVmlld3Bv
cnREYXRhIG1fbGVmdFZpZXdwb3J0RGF0YTsKKyAgICBWaWV3cG9ydERhdGEgbV9yaWdodFZpZXdw
b3J0RGF0YTsKICAgICBib29sIG1fYW50aWFsaWFzIHsgZmFsc2UgfTsKICAgICBib29sIG1faWdu
b3JlRGVwdGhWYWx1ZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0NvbXBvc2l0aW9uRW5hYmxl
ZCB7IHRydWUgfTsKKyAgICBib29sIG1fdmlld3BvcnRzRGlydHkgeyB0cnVlIH07CiAKICAgICBz
dHJ1Y3QgewogICAgICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gb2JqZWN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaWRsCmluZGV4IDVm
OWU2ZTI0ZjZhYTY5YzE3OThjMTI0M2UxOTY3NGY2MmVkMjVkYzUuLjRhOTg2YjcwNzRjOWNlMTZl
ZmFlNDMwMzEzYzUxYTIyNjRiMTAwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5pZGwKQEAgLTQ5LDcgKzQ5LDcgQEAgdHlwZWRlZiAoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0KSBXZWJYUldlYkdMUmVuZGVyaW5nQ29udGV4dDsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBmcmFtZWJ1ZmZlckhlaWdodDsKIAogICAgIC8v
IE1ldGhvZHMKLSAgICBXZWJYUlZpZXdwb3J0PyBnZXRWaWV3cG9ydChXZWJYUlZpZXcgdmlldyk7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXZWJYUlZpZXdwb3J0PyBnZXRWaWV3cG9ydChXZWJY
UlZpZXcgdmlldyk7CiAKICAgICAvLyBTdGF0aWMgTWV0aG9kcwogICAgIHN0YXRpYyBkb3VibGUg
Z2V0TmF0aXZlRnJhbWVidWZmZXJTY2FsZUZhY3RvcihXZWJYUlNlc3Npb24gc2Vzc2lvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5kZXggZTM3MjFkODg2ZWE5OWEw
ZGY5MDgyZTU4ZTI1NWNkMzJkMGY3ZGU4Yi4uN2UwMGRmMDdiZTVlMWVlNTQ3ZjQyMzQ4YTc5N2Y5
ZmYxNDVjZDY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAt
NzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHJlY29t
bWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSkgeyByZXR1cm4geyAxLCAxIH07IH0KIAogICAg
IGJvb2wgc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdXBw
b3J0c09yaWVudGF0aW9uVHJhY2tpbmc7IH0KKyAgICBib29sIHN1cHBvcnRzVmlld3BvcnRTY2Fs
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c1ZpZXdwb3J0U2NhbGluZzsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgPSAw
OwpAQCAtMTQxLDYgKzE0Miw3IEBAIHByb3RlY3RlZDoKICAgICBFbmFibGVkRmVhdHVyZXNQZXJN
b2RlTWFwIG1fZW5hYmxlZEZlYXR1cmVzTWFwOwogCiAgICAgYm9vbCBtX3N1cHBvcnRzT3JpZW50
YXRpb25UcmFja2luZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX3N1cHBvcnRzVmlld3BvcnRTY2Fs
aW5nIHsgZmFsc2UgfTsKICAgICBXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50PiBt
X3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9XZWJGYWtlWFJEZXZpY2UuY3BwCmluZGV4IGUyOTlkNWIxMzVjNWNmYzlkZGIyYTk1Yjk3ZDU1
MzA3MjExODBlZjguLmYyZTRlMGY2OWMyOTkwNThiMjk5MDM4NDE5NTVkNThiN2RiYjY0NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKQEAgLTY1LDYgKzY1
LDEyIEBAIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQo
KQogICAgICAgICBtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50LT5zZXNzaW9uRGlkRW5kKCk7
CiB9CiAKK1dlYkNvcmU6OkludFNpemUgU2ltdWxhdGVkWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVz
b2x1dGlvbihQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkKK3sKKyAgICAvLyBSZXR1cm4gYXQgbGVh
c3QgYSAyIHBpeGVsIHNpemUgc28gd2UgY2FuIGhhdmUgZGlmZmVyZW50IHZpZXdwb3J0cyBmb3Ig
bGVmdCBhbmQgcmlnaHQgZXllcworICAgIHJldHVybiBJbnRTaXplKDIsIDIpOworfQorCiB2b2lk
IFNpbXVsYXRlZFhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKIHsKICAg
ICBpZiAobV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmgKaW5kZXggM2E2YjBlODU3NjUzZjM3YzRkMThjNjExODdjMzEy
ZTlkODE3ZGI3Mi4uYzVhNWQxNDRkMDEyZjVmMDJiZTIyMzhhYjJhZTIwMzA0YTI5ZTFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCkBAIC04MCw2ICs4MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQoKTsKICAgICB2b2lk
IHNjaGVkdWxlT25OZXh0RnJhbWUoRnVuY3Rpb248dm9pZCgpPiYmKTsKIHByaXZhdGU6CisgICAg
V2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGUpIGZpbmFsOwogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBs
YXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KICAgICB2b2lkIHNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3du
Tm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXBwb3J0c1NodXRkb3duTm90
aWZpY2F0aW9uOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjU3N2JjNTY3MGEwYzUwNmU1NWM2YmU2NGViNDI3OTQwNmFh
ZGIwYi4uMzBmOTJlYTczZWEzOWQxMzg5YWQ3YzY0MWVkMzJmOWZmMDg2MmUwNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTAyLTIyICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBp
Z2FsaWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBnZXRWaWV3cG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFdlYlhSIFZp
ZXdwb3J0IHRlc3QgZXhwZWN0YXRpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vd3BlL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMjEtMDItMjEgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dMSUJdIEdhcmRlbmluZyBhbmQgdXBkYXRpbmcgYmFzZWxpbmVzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAyOGRhZmEwZGM1Mzk1ZmY3YjI0NjFiNGEz
MjgyNGIxYzRhNDkyYTgxLi5mNGUwNDQ3MDFjZmM4YmIxMDRhN2NlZTdhNjI3YTVmYjcwZDdlMmJm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0w
Mi0yMiAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjI3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXZWJYUiBWaWV3cG9ydCB0ZXN0IGV4cGVjdGF0
aW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdwb3J0X3Zh
bGlkLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyV2ViR0xMYXllcl92aWV3cG9ydHMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKwogMjAyMS0wMi0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgbW9kdWxlcyBpbiBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3cG9y
dF92YWxpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld3BvcnRfdmFsaWQuaHR0cHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE5YTZlYjcyYWQ1NzUzNDFiNWRkNTAzZTJkNmM2NGEzYmU1MjRjNDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyVmlld3BvcnRfdmFsaWQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorCitQQVNTIFhSVmlld3BvcnQgYXR0cmlidXRlcyBhcmUgdmFsaWQKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldl
YkdMTGF5ZXJfdmlld3BvcnRzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX3ZpZXdwb3J0cy5o
dHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE2ZWJmYzRkYTgzMjY0NGIwZGQ0NDQxMTli
Yzg4ODRhMDdjZGQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX3ZpZXdwb3J0cy5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgWFJXZWJHTExheWVyIHJlcG9ydHMg
YSB2YWxpZCB2aWV3cG9ydHMgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBYUldlYkdMTGF5
ZXIgcmVwb3J0cyBhIHZhbGlkIHZpZXdwb3J0cyBmb3IgaW5saW5lIHNlc3Npb25zCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODQyNjdiYTQ3MWFmMDY1
ZDM2MzVhNjU5NTcyN2FhYjI4MmVlNjYyMC4uMDgwNWU2YzExNTMwZTM5MjBjOGJiNGIxMTc3OTk3
Nzk0NjQyMDc5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTY0Nyw4ICs2NDcsNiBAQCB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNlX2lzUwogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy5odG1sIFsgUGFzcyBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRw
cy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
Vmlld19vbmVmcmFtZXVwZGF0ZS5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMjA5
ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2Nv
bnN0cnVjdG9yLmh0dHBzLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJf
c2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL25hdmlnYXRvcl94cl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9v
cmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KQEAgLTY2Niw2ICs2NjQsMTAgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2dldFZpZXdl
clAKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVl
c3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNw
YWNlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld3BvcnRfdmFsaWQu
aHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94cldlYkdMTGF5ZXJfY29uc3RydWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfZnJhbWVidWZmZXJfc2Ft
ZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyV2ViR0xMYXllcl92aWV3cG9ydHMuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGljYWxf
Zm92X2ltbWVyc2l2ZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV91cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQog
aHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZF9kZXZpY2VfcmVwb3J0c19zaHV0ZG93bi5odHRw
cy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>