<?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>125427</bug_id>
          
          <creation_ts>2013-12-08 13:47:07 -0800</creation_ts>
          <short_desc>[Cocoa] Remove knowledge of the WKView from the WebFullScreenManagerProxy by adding a proper client</short_desc>
          <delta_ts>2013-12-09 01:42:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>125438</dependson>
    
    <dependson>125440</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mitz</cc>
    
    <cc>philn</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>957711</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-08 13:47:07 -0800</bug_when>
    <thetext>[Cocoa] Remove knowledge of the WKView from the WebFullScreenManagerProxy by adding a proper client</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957713</commentid>
    <comment_count>1</comment_count>
      <attachid>218714</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-08 13:50:46 -0800</bug_when>
    <thetext>Created attachment 218714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957715</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-08 13:53:15 -0800</bug_when>
    <thetext>Attachment 218714 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/PageClientImpl.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKView+FullScreen.h&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKView+FullScreen.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKView.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKViewInternal.h&apos;, u&apos;Source/WebKit2/UIProcess/PageClient.h&apos;, u&apos;Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebFullScreenManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm&apos;, u&apos;Source/WebKit2/UIProcess/mac/WebFullScreenManagerProxyMac.mm&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:53:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957716</commentid>
    <comment_count>3</comment_count>
      <attachid>218714</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-08 13:56:23 -0800</bug_when>
    <thetext>Comment on attachment 218714
Patch

Attachment 218714 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/47158094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957720</commentid>
    <comment_count>4</comment_count>
      <attachid>218716</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-08 15:11:23 -0800</bug_when>
    <thetext>Created attachment 218716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957721</commentid>
    <comment_count>5</comment_count>
      <attachid>218716</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-08 15:16:31 -0800</bug_when>
    <thetext>Comment on attachment 218716
Patch

Attachment 218716 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/44478116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957722</commentid>
    <comment_count>6</comment_count>
      <attachid>218716</attachid>
    <who name="">mitz</who>
    <bug_when>2013-12-08 15:22:31 -0800</bug_when>
    <thetext>Comment on attachment 218716
Patch

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

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:567
&gt; +#endif
&gt; +
&gt; +#if ENABLE(FULLSCREEN_API)

This is unnecessary

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:580
&gt; +    if (!m_wkView.hasFullScreenWindowController)
&gt; +        return false;
&gt; +

Is this part necessary?

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:603
&gt; +#endif

This #endif could use a newline before it and a comment after it.

&gt; Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:98
&gt; +@property (readonly) BOOL hasFullScreenWindowController;
&gt; +@property (readonly) WKFullScreenWindowController *fullScreenWindowController;
&gt; +- (void)closeFullScreenWindowController;

As internal methods and properties, these should probably be prefixed with an underscore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957728</commentid>
    <comment_count>7</comment_count>
      <attachid>218716</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-08 15:52:26 -0800</bug_when>
    <thetext>Comment on attachment 218716
Patch

Attachment 218716 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/45388138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957747</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-08 20:08:06 -0800</bug_when>
    <thetext>Committed r160296: &lt;http://trac.webkit.org/changeset/160296&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218714</attachid>
            <date>2013-12-08 13:50:46 -0800</date>
            <delta_ts>2013-12-08 15:11:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125427-20131208135045.patch</filename>
            <type>text/plain</type>
            <size>38496</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDI5MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDEzLTEyLTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvY29hXSBSZW1vdmUga25vd2xlZGdl
IG9mIHRoZSBXS1ZpZXcgZnJvbSB0aGUgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBieSBhZGRp
bmcgYSBwcm9wZXIgY2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjU0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICBTZXBhcmF0ZSBvdXQgZnVsbCBzY3JlZW4gcmVsYXRlZCBTUEkgaW50byBpdHMgb3duIGNhdGVn
b3J5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y2xvc2VGdWxsU2NyZWVuTWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc0Z1bGxTY3JlZW4pOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmJlZ2FuRW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmJlZ2FuRXhpdEZ1bGxTY3JlZW4pOgorICAgICAgICBJbXBsZW1lbnQgdGhl
IG5ldyBjbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcrRnVsbFNj
cmVlbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcrRnVsbFNj
cmVlbi5tbTogQWRkZWQuCisgICAgICAgIE1vdmUgZnVsbCBzY3JlZW4gcmVsYXRlZCBjb2RlIGhl
cmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgIFJl
bW92ZSBmdWxsIHNjcmVlbiByZWxhdGVkIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICBBZGQgY2xhc3MgZXh0ZW5zaW9uIHRvIGhv
bGQgZnVsbCBzY3JlZW4gcmVsYXRlZCBzdGF0ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
Q2xpZW50Lmg6CisgICAgICAgIEV4cG9zZSBhY2Nlc3MgdG8gdGhlIG5ldyBjbGllbnQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjppbnZhbGlk
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y2xvc2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojppc0Z1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1
bGxTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpl
eGl0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmJlZ2FuRW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6YmVnYW5FeGl0RnVsbFNjcmVlbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgVXNlIHRoZSBuZXcgY2xpZW50
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIFBhc3Mg
dGhlIG5ldyBjbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlNYWMubW06CisgICAgICAgIFJlbW92ZWQuIE5vdyBnb2VzIHRocm91Z2ggdGhl
IGNsaWVudC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgQWRkL3JlbW92ZSBmaWxlcy4KKwogMjAxMy0xMi0wNyAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb2NvYV0gUmVtb3ZlIHdlYlByb2Nlc3NQbHVnSW5J
bml0aWFsaXplOiBmcm9tIHRoZSBXS1dlYlByb2Nlc3NQbHVnSW4gcHJvdG9jb2wKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMTYwMjkwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
MTAgKzQzLDYgQEAgT0JKQ19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFTUyBXS1ZpZXc7CiBPQkpD
X0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKICNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TKQot
T0JKQ19DTEFTUyBVSVdLVmlldzsKLSNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTU5LDE2ICs1NSwyMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERyYXdpbmdB
cmVhUHJveHk7CiBjbGFzcyBGaW5kSW5kaWNhdG9yOwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudDsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotY2xhc3MgTmF0aXZlV2ViVG91Y2hFdmVu
dDsKLSNlbmRpZgogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKIGNsYXNzIFdlYkVkaXRDb21t
YW5kUHJveHk7CiBjbGFzcyBXZWJQb3B1cE1lbnVQcm94eTsKKworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCitjbGFzcyBOYXRpdmVXZWJUb3VjaEV2ZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKIGNsYXNzIFdlYkNvbG9yUGlja2VyOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCitjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xp
ZW50OworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7
CiAjZW5kaWYKQEAgLTI0Miw2ICsyNDQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZWxlY3Rpb25EaWRDaGFuZ2UoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2
ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7
CiAjZW5kaWYKKworICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3JlYXRpb24KKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCisgICAgdmlydHVhbCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xp
ZW50JiBmdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkgPSAwOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDE2MDI5MCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjAgKzI4LDI0IEBACiAKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAKLSNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNj
cmVlbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eT4gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdl
YlBhZ2VQcm94eSogcGFnZSkKK1Bhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4g
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIGNsaWVudCkpOwogfQog
Ci1XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdl
YlBhZ2VQcm94eSogcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV93ZWJWaWV3KDAp
CitXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgY2xpZW50
KQorICAgIDogbV9wYWdlKCZwYWdlKQorICAgICwgbV9jbGllbnQoJmNsaWVudCkKICNpZiBQTEFU
Rk9STShFRkwpCiAgICAgLCBtX2hhc1JlcXVlc3RlZEZ1bGxTY3JlZW4oZmFsc2UpCiAjZW5kaWYK
QEAgLTUzLDExICs1Nyw2IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6On5XZWJGdWxsU2Ny
ZWUKIHsKIH0KIAotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRXZWJWaWV3KFBs
YXRmb3JtV2ViVmlldyogd2ViVmlldykKLXsKLSAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OwotfQot
CiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFbnRlckZ1bGxTY3JlZW4oKQog
ewogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOwpAQCAtMTAzLDYg
KzEwMiw1OSBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTCiAgICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAordm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisKKyAgICBp
ZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+Y2xvc2VGdWxs
U2NyZWVuTWFuYWdlcigpOworICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9zZSgpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5jbG9zZUZ1bGxTY3JlZW5NYW5hZ2VyKCk7Cit9
CisKK2Jvb2wgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6aXNGdWxsU2NyZWVuKCkKK3sKKyAg
ICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY2xp
ZW50LT5pc0Z1bGxTY3JlZW4oKTsKK30KKwordm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjplbnRlckZ1bGxTY3JlZW4oKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NsaWVudC0+ZW50ZXJGdWxsU2NyZWVuKCk7Cit9CisKK3ZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxTY3JlZW4oKQoreworICAgIGlmICghbV9jbGllbnQp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+ZXhpdEZ1bGxTY3JlZW4oKTsKK30KKyAg
ICAKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6YmVnYW5FbnRlckZ1bGxTY3JlZW4o
Y29uc3QgSW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBJbnRSZWN0JiBmaW5hbEZyYW1lKQor
eworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+YmVn
YW5FbnRlckZ1bGxTY3JlZW4oaW5pdGlhbEZyYW1lLCBmaW5hbEZyYW1lKTsKK30KKwordm9pZCBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJl
Y3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UmVjdCYgZmluYWxGcmFtZSkKK3sKKyAgICBpZiAo
IW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPmJlZ2FuRXhpdEZ1bGxT
Y3JlZW4oaW5pdGlhbEZyYW1lLCBmaW5hbEZyYW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgJKHJl
dmlzaW9uIDE2MDI5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDMzICszNywyOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotT0JK
Q19DTEFTUyBXS1ZpZXc7Ci0jZWxpZiBQTEFURk9STShHVEspCi10eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0V2ViVmlld0Jhc2UgV2ViS2l0V2ViVmlld0Jhc2U7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YktpdCB7Ci0gICAgCi0jaWYgUExBVEZPUk0oTUFDKQotdHlwZWRlZiBXS1ZpZXcgUGxhdGZvcm1X
ZWJWaWV3OwotI2VsaWYgUExBVEZPUk0oR1RLKQotdHlwZWRlZiBXZWJLaXRXZWJWaWV3QmFzZSBQ
bGF0Zm9ybVdlYlZpZXc7Ci0jZWxpZiBQTEFURk9STShFRkwpCi10eXBlZGVmIEV2YXNfT2JqZWN0
IFBsYXRmb3JtV2ViVmlldzsKLSNlbmRpZgogCiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBM
YXllclRyZWVDb250ZXh0OworCitjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VGdWxsU2NyZWVuTWFuYWdlcigpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsU2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bnRlckZ1bGxTY3JlZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdhbkVudGVyRnVsbFNjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJh
bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFs
RnJhbWUpID0gMDsKK307CiAKIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PiwgcHVibGljIENvcmVJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSopOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkm
LCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50Jik7CiAgICAgdmlydHVhbCB+V2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICB2
b2lkIHNldFdlYlZpZXcoUGxhdGZvcm1XZWJWaWV3Kik7CiAgICAgYm9vbCBpc0Z1bGxTY3JlZW4o
KTsKICAgICB2b2lkIGNsb3NlKCk7CiAKQEAgLTc3LDcgKzczLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkqKTsKKyAgICBleHBsaWNpdCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYsIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlDbGllbnQmKTsKIAogICAgIHZvaWQgc3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtl
eWJvYXJkLCBib29sJik7CiAgICAgdm9pZCBlbnRlckZ1bGxTY3JlZW4oKTsKQEAgLTg5LDcgKzg1
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBPVkVSUklERTsKIAogICAgIFdlYlBhZ2VQ
cm94eSogbV9wYWdlOwotICAgIFBsYXRmb3JtV2ViVmlldyogbV93ZWJWaWV3OworICAgIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQqIG1fY2xpZW50OwogCiAjaWYgUExBVEZPUk0oRUZM
KQogICAgIGJvb2wgbV9oYXNSZXF1ZXN0ZWRGdWxsU2NyZWVuOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE2MDI5MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzUsNyArMzM1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAog
ICAgIG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0g
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOworICAgIG1fZnVsbFNjcmVl
bk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fcGFn
ZUNsaWVudC5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKFZJQlJBVElPTikKICAgICBtX3ZpYnJhdGlvbiA9IFdlYlZpYnJhdGlvblByb3h5OjpjcmVh
dGUodGhpcyk7CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNo
VG9XZWJQcm9jZXNzKAogICAgIG1faW5zcGVjdG9yID0gV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZSh0aGlzKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBtX2Z1bGxT
Y3JlZW5NYW5hZ2VyID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwor
ICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjcmVh
dGUoKnRoaXMsIG1fcGFnZUNsaWVudC5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOwog
I2VuZGlmCiAKICAgICBpbml0aWFsaXplV2ViUGFnZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDE2
MDI5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw5ICs4MCw2IEBAIHR5cGVkZWYgZW51bSB7CiAKIEBw
cm9wZXJ0eShjb3B5LCBub25hdG9taWMpIE5TQ29sb3IgKnVuZGVybGF5Q29sb3I7CiAKLS0gKE5T
VmlldyopZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldzsKLS0gKE5TV2luZG93KiljcmVhdGVGdWxs
U2NyZWVuV2luZG93OwotCiAtICh2b2lkKWJlZ2luRGVmZXJyaW5nVmlld0luV2luZG93Q2hhbmdl
czsKIC0gKHZvaWQpZW5kRGVmZXJyaW5nVmlld0luV2luZG93Q2hhbmdlczsKIC0gKHZvaWQpZW5k
RGVmZXJyaW5nVmlld0luV2luZG93Q2hhbmdlc1N5bmM7CkBAIC05NywzICs5NCwxNCBAQCB0eXBl
ZGVmIGVudW0gewogI2VuZGlmCiAKIEBlbmQKKworI2lmICFUQVJHRVRfT1NfSVBIT05FCisKK0Bp
bnRlcmZhY2UgV0tWaWV3IChQcml2YXRlRnVsbFNjcmVlbikKKworLSAoTlNWaWV3ICopZnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldzsKKy0gKE5TV2luZG93ICopY3JlYXRlRnVsbFNjcmVlbldpbmRv
dzsKKworQGVuZAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTYwMjkwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW5j
bHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIEBjbGFzcyBXS0VkaXRvclVuZG9UYXJn
ZXRPYmpDOwpAQCAtNDAsMTQgKzQxLDE5IEBAIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRmluZEluZGljYXRvcldpbmRvdzsKIAot
Y2xhc3MgUGFnZUNsaWVudEltcGwgRklOQUwgOiBwdWJsaWMgUGFnZUNsaWVudCB7CitjbGFzcyBQ
YWdlQ2xpZW50SW1wbCBGSU5BTCA6IHB1YmxpYyBQYWdlQ2xpZW50CisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgICwgcHVibGljIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQK
KyNlbmRpZgorICAgIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQYWdlQ2xpZW50SW1wbChXS1Zp
ZXcqKTsKKyAgICBleHBsaWNpdCBQYWdlQ2xpZW50SW1wbChXS1ZpZXcgKik7CiAgICAgdmlydHVh
bCB+UGFnZUNsaWVudEltcGwoKTsKICAgICAKICAgICB2b2lkIHZpZXdXaWxsTW92ZVRvQW5vdGhl
cldpbmRvdygpOwogCiBwcml2YXRlOgorICAgIC8vIFBhZ2VDbGllbnQKICAgICB2aXJ0dWFsIHN0
ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5VmlldygpOwpAQCAtMTM0LDYgKzE0MCwy
MSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJu
YXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpOwogI2VuZGlmCiAKKyAgICAvLyBBdXhp
bGlhcnkgQ2xpZW50IENyZWF0aW9uCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGll
bnQoKSBPVkVSUklERTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAg
IC8vIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VGdWxsU2NyZWVuTWFuYWdlcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0Z1bGxT
Y3JlZW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsU2NyZWVuKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGJlZ2FuRW50ZXJGdWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmluYWxGcmFtZSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGJlZ2FuRXhpdEZ1bGxTY3JlZW4oY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaW5hbEZyYW1l
KSBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgV0tWaWV3KiBtX3drVmlldzsKICAgICBSZXRhaW5Q
dHI8V0tFZGl0b3JVbmRvVGFyZ2V0T2JqQz4gbV91bmRvVGFyZ2V0OwogI2lmIFVTRShBVVRPQ09S
UkVDVElPTl9QQU5FTCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiAxNjAyOTApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsOSArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50
SW1wbC5oIgogCi0jaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0jaW1wb3J0IDxBcHBL
aXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+Ci0jZW5kaWYKICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJp
bmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNl
LmgiCkBAIC0zNyw4ICszNCw2IEBACiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmgi
CiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKLSNpbXBvcnQg
IldLVmlld0ludGVybmFsLmgiCi0jaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJT
dHJpbmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYkNvbG9yUGlja2VyTWFjLmgiCiAjaW1wb3J0
ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCkBAIC01Nyw2ICs1MiwxMyBAQAogI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
IAorI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLVmlldytGdWxsU2NyZWVu
LmgiCisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbXBvcnQgPEFwcEtpdC9O
U1RleHRBbHRlcm5hdGl2ZXMuaD4KKyNlbmRpZgorCiBAaW50ZXJmYWNlIE5TQXBwbGljYXRpb24g
KFdlYk5TQXBwbGljYXRpb25EZXRhaWxzKQogLSAoTlNDdXJzb3IgKilfY3Vyc29yUmVjdEN1cnNv
cjsKIEBlbmQKQEAgLTU1NCw0ICs1NTYsNTEgQEAgVmVjdG9yPFN0cmluZz4gUGFnZUNsaWVudElt
cGw6OmRpY3RhdGlvbgogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisK
K1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIFBhZ2VDbGllbnRJbXBsOjpmdWxsU2Ny
ZWVuTWFuYWdlclByb3h5Q2xpZW50KCkKK3sKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorCisvLyBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5Q2xpZW50CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmNsb3NlRnVsbFNjcmVlbk1hbmFn
ZXIoKQoreworICAgIFttX3drVmlldyBjbG9zZUZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXTsK
K30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNGdWxsU2NyZWVuKCkKK3sKKyAgICBpZiAoIW1f
d2tWaWV3Lmhhc0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV93a1ZpZXcuZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaXNG
dWxsU2NyZWVuOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjplbnRlckZ1bGxTY3JlZW4oKQor
eworICAgIFttX3drVmlldy5mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBlbnRlckZ1bGxTY3Jl
ZW46bmlsXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZXhpdEZ1bGxTY3JlZW4oKQorewor
ICAgIFttX3drVmlldy5mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbl07
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmJlZ2FuRW50ZXJGdWxsU2NyZWVuKGNvbnN0IElu
dFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UmVjdCYgZmluYWxGcmFtZSkKK3sKKyAgICBb
bV93a1ZpZXcuZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FbnRlckZ1bGxTY3JlZW5X
aXRoSW5pdGlhbEZyYW1lOmluaXRpYWxGcmFtZSBmaW5hbEZyYW1lOmZpbmFsRnJhbWVdOworfQor
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3Qm
IGluaXRpYWxGcmFtZSwgY29uc3QgSW50UmVjdCYgZmluYWxGcmFtZSkKK3sKKyAgICBbbV93a1Zp
ZXcuZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FeGl0RnVsbFNjcmVlbldpdGhJbml0
aWFsRnJhbWU6aW5pdGlhbEZyYW1lIGZpbmFsRnJhbWU6ZmluYWxGcmFtZV07Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcrRnVsbFNjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldytGdWxsU2NyZWVuLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcrRnVsbFNjcmVlbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS1ZpZXdJ
bnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCisKK0BpbnRlcmZhY2UgV0tWaWV3IChJbnRlcm5hbEZ1bGxTY3JlZW4pCisKK0Bwcm9wZXJ0
eSAocmVhZG9ubHkpIEJPT0wgaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7CitAcHJvcGVy
dHkgKHJlYWRvbmx5KSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICpmdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlcjsKKworLSAodm9pZCljbG9zZUZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
OworCitAZW5kCisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcrRnVsbFNjcmVlbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcrRnVsbFNjcmVlbi5tbQkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldytGdWxsU2NyZWVuLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIldLVmlldytGdWxsU2NyZWVuLmgiCisKKyNpZiBXS19BUElfRU5B
QkxFRAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdy5oPgorCitAaW1wbGVtZW50YXRpb24gV0tWaWV3IChQcml2YXRlRnVs
bFNjcmVlbikKKworLSAoTlNXaW5kb3cqKWNyZWF0ZUZ1bGxTY3JlZW5XaW5kb3cKK3sKKyNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwODAKKyAgICBOU1JlY3QgY29udGVu
dFJlY3QgPSBOU1plcm9SZWN0OworI2Vsc2UKKyAgICBOU1JlY3QgY29udGVudFJlY3QgPSBbW05T
U2NyZWVuIG1haW5TY3JlZW5dIGZyYW1lXTsKKyNlbmRpZgorICAgIHJldHVybiBbW1tXZWJDb3Jl
RnVsbFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBz
dHlsZU1hc2s6KE5TQm9yZGVybGVzc1dpbmRvd01hc2sgfCBOU1Jlc2l6YWJsZVdpbmRvd01hc2sp
IGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10gYXV0b3JlbGVhc2VdOwor
fQorCistIChOU1ZpZXcgKilmdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Cit7CisgICAgaWYgKF9m
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAmJiBbX2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
IGlzRnVsbFNjcmVlbl0pCisgICAgICAgIHJldHVybiBbX2Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIHdlYlZpZXdQbGFjZWhvbGRlcl07CisgICAgcmV0dXJuIG5pbDsKK30KKworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gV0tWaWV3IChJbnRlcm5hbEZ1bGxTY3JlZW4pCisKKy0gKEJPT0wpaGFz
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIKK3sKKyAgICByZXR1cm4gKGJvb2wpX2Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyOworfQorCistIChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
ICopZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIKK3sKKyAgICBpZiAoIV9mdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlcikKKyAgICAgICAgX2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyID0gYWRv
cHROUyhbW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2luZG93
OltzZWxmIGNyZWF0ZUZ1bGxTY3JlZW5XaW5kb3ddIHdlYlZpZXc6c2VsZl0pOworCisgICAgcmV0
dXJuIF9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5nZXQoKTsKK30KKworLSAodm9pZCljbG9z
ZUZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyCit7CisgICAgaWYgKCFfZnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtfZnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIgY2xvc2VdOworICAgIF9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciA9IG51bGxw
dHI7Cit9CisKK0BlbmQKKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE2MDI5MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNiBAQAogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2ltcG9ydCAiVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCi0j
aW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1ByaW50
aW5nVmlldy5oIgogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9ydCAiV0tUZXh0SW5wdXRX
aW5kb3dDb250cm9sbGVyLmgiCkBAIC01OCw3ICs1Nyw2IEBACiAjaW1wb3J0ICJXS1ZpZXdQcml2
YXRlLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0LmgiCiAjaW1wb3J0ICJXZWJFdmVudEZhY3Rvcnku
aCIKLSNpbXBvcnQgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIldlYktp
dDJJbml0aWFsaXplLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3Jv
dXAuaCIKQEAgLTgzLDggKzgxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlTlNTdHJpbmdFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaD4KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9y
dCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxzeXMvc3RhdC5oPgpAQCAtMTg5
LDEwICsxODUsNiBAQCBAaW50ZXJmYWNlIFdLVmlld0RhdGEgOiBOU09iamVjdCB7CiAKICAgICBp
ZCBfZmxhZ3NDaGFuZ2VkRXZlbnRNb25pdG9yOwogCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIFJldGFpblB0cjxXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyPiBfZnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXI7Ci0jZW5kaWYKLQogICAgIEJPT0wgX2hhc1NwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnOwogICAgIE5TSW50ZWdlciBfc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiAKQEAg
LTI3ODEsMjkgKzI3NzMsNiBAQCAtICh2b2lkKV9ub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2Nh
cmRlCiAgICAgW1tzdXBlciBpbnB1dENvbnRleHRdIGRpc2NhcmRNYXJrZWRUZXh0XTsgLy8gSW5m
b3JtIHRoZSBpbnB1dCBtZXRob2QgdGhhdCB3ZSB3b24ndCBoYXZlIGFuIGlubGluZSBpbnB1dCBh
cmVhIGRlc3BpdGUgaGF2aW5nIGJlZW4gYXNrZWQgdG8uCiB9CiAKLSNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCi0tIChCT09MKWhhc0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyCi17Ci0gICAg
cmV0dXJuIChib29sKV9kYXRhLT5fZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7Ci19Ci0KLS0g
KFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIqKWZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Ci17Ci0gICAgaWYgKCFfZGF0YS0+X2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyKQotICAgICAg
ICBfZGF0YS0+X2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyID0gYWRvcHROUyhbW1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2luZG93OltzZWxmIGNyZWF0ZUZ1
bGxTY3JlZW5XaW5kb3ddIHdlYlZpZXc6c2VsZl0pOwotCi0gICAgcmV0dXJuIF9kYXRhLT5fZnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpY2xvc2VGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcgotewotICAgIGlmICghX2RhdGEtPl9mdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotICAgIFtfZGF0YS0+X2Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmdldCgpIGNsb3NlXTsKLSAgICBfZGF0YS0+X2Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyID0gbnVsbHB0cjsKLX0KLSNlbmRpZgotCiAtIChib29sKV9leGVjdXRlU2F2ZWRD
b21tYW5kQnlTZWxlY3RvcjooU0VMKXNlbGVjdG9yCiB7CiAgICAgLy8gVGhlIHNpbmsgZG9lcyB0
d28gdGhpbmdzOiAxKSBUZWxscyB1cyBpZiB0aGUgcmVzcG9uZGVyIHdlbnQgdW5oYW5kbGVkLCBh
bmQKQEAgLTI5MTEsOSArMjg4MCw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFt
ZSBjb250ZXgKICAgICBfZGF0YS0+X3BhZ2UgPSB0b0ltcGwoY29udGV4dFJlZiktPmNyZWF0ZVdl
YlBhZ2UoKl9kYXRhLT5fcGFnZUNsaWVudCwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChy
ZWxhdGVkUGFnZSkpOwogICAgIF9kYXRhLT5fcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVG
YWN0b3IoW3NlbGYgX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yXSk7CiAgICAgX2RhdGEtPl9w
YWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAg
ICBfZGF0YS0+X3BhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPnNldFdlYlZpZXcoc2VsZik7Ci0j
ZW5kaWYKKwogICAgIF9kYXRhLT5fbW91c2VEb3duRXZlbnQgPSBuaWw7CiAgICAgX2RhdGEtPl9p
Z25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50cyA9IE5POwogICAgIF9kYXRhLT5fY2xpcHNUb1Zpc2li
bGVSZWN0ID0gTk87CkBAIC0zMTIyLDE1ICszMDg5LDYgQEAgLSAodm9pZClzZXRVbmRlcmxheUNv
bG9yOihOU0NvbG9yICopdW5kZQogICAgIF9kYXRhLT5fcGFnZS0+c2V0VW5kZXJsYXlDb2xvcihj
b2xvckZyb21OU0NvbG9yKHVuZGVybGF5Q29sb3IpKTsKIH0KIAotLSAoTlNWaWV3KilmdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Ci17Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlm
IChfZGF0YS0+X2Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICYmIFtfZGF0YS0+X2Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyIGlzRnVsbFNjcmVlbl0pCi0gICAgICAgIHJldHVybiBbX2RhdGEt
Pl9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciB3ZWJWaWV3UGxhY2Vob2xkZXJdOwotI2VuZGlm
Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQogLSAodm9pZCliZWdpbkRlZmVycmluZ1ZpZXdJbldpbmRv
d0NoYW5nZXMKIHsKICAgICBpZiAoX2RhdGEtPl9zaG91bGREZWZlclZpZXdJbldpbmRvd0NoYW5n
ZXMpIHsKQEAgLTMyMzAsMjAgKzMxODgsNiBAQCAtICh2b2lkKXdhaXRGb3JBc3luY0RyYXdpbmdB
cmVhU2l6ZVVwZGF0CiAgICAgfQogfQogCi0tIChOU1dpbmRvdyopY3JlYXRlRnVsbFNjcmVlbldp
bmRvdwotewotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEIDw9IDEwODAKLSAgICBOU1JlY3QgY29udGVudFJlY3QgPSBOU1plcm9S
ZWN0OwotI2Vsc2UKLSAgICBOU1JlY3QgY29udGVudFJlY3QgPSBbW05TU2NyZWVuIG1haW5TY3Jl
ZW5dIGZyYW1lXTsKLSNlbmRpZgotICAgIHJldHVybiBbW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRv
dyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6KE5TQm9y
ZGVybGVzc1dpbmRvd01hc2sgfCBOU1Jlc2l6YWJsZVdpbmRvd01hc2spIGJhY2tpbmc6TlNCYWNr
aW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10gYXV0b3JlbGVhc2VdOwotI2Vsc2UKLSAgICByZXR1
cm4gbmlsOwotI2VuZGlmCi19Ci0KIC0gKEJPT0wpaXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nCiB7
CiAgICAgaWYgKERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gX2RhdGEtPl9wYWdlLT5k
cmF3aW5nQXJlYSgpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjAyOTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw5ICsyMywxMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpbXBvcnQgIldLVmlldy5oIgorI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogCiAjaW1wb3J0
ICJQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCIKKyNpbXBvcnQgIldLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYkZpbmRPcHRpb25zLmgiCiAjaW1wb3J0IDx3
dGYvRm9yd2FyZC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNDgsNyArNDksMTIgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAgICAgc3RydWN0IEVkaXRvclN0YXRlOwogfQogCi1AY2xhc3Mg
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKKyNpZiBXS19BUElfRU5BQkxFRAorQGludGVy
ZmFjZSBXS1ZpZXcgKCkgeworICAgIFJldGFpblB0cjxXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyPiBfZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7Cit9CitAZW5kCisjZW5kaWYKIAogQGlu
dGVyZmFjZSBXS1ZpZXcgKEludGVybmFsKQogLSAoc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJh
d2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk7CkBAIC04MywxMSArODksNiBA
QCBAaW50ZXJmYWNlIFdLVmlldyAoSW50ZXJuYWwpCiAKIC0gKFdlYktpdDo6Q29sb3JTcGFjZURh
dGEpX2NvbG9yU3BhY2U7CiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0tIChCT09MKWhh
c0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwotLSAoV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlciopZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7Ci0tICh2b2lkKWNsb3NlRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXI7Ci0jZW5kaWYKIAogLSAodm9pZClfY2FjaGVXaW5kb3dCb3R0b21D
b3JuZXJSZWN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCShyZXZpc2lvbiAxNjAy
OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0OSw3ICszNDksNiBAQCAtICh2b2lkKWV4
aXRGdWxsU2NyZWVuCiAKIC0gKHZvaWQpYmVnYW5FeGl0RnVsbFNjcmVlbldpdGhJbml0aWFsRnJh
bWU6KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKWluaXRpYWxGcmFtZSBmaW5hbEZyYW1lOihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JilmaW5hbEZyYW1lCiB7Ci0KICAgICBpZiAoX2Z1bGxTY3JlZW5T
dGF0ZSAhPSBXYWl0aW5nVG9FeGl0RnVsbFNjcmVlbikKICAgICAgICAgcmV0dXJuOwogICAgIF9m
dWxsU2NyZWVuU3RhdGUgPSBFeGl0aW5nRnVsbFNjcmVlbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlNYWMubW0JKHJldmlzaW9uIDE2MDI5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw5
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCi0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpICYm
ICFQTEFURk9STShJT1MpCi0KLSNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKLSNpbXBvcnQg
IldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldLVmlld0ludGVybmFs
LmgiCi0jaW1wb3J0ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKLSNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0ludFJlY3QuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmludmFsaWRh
dGUoKQotewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKLQotICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgW21fd2ViVmlldyBjbG9zZUZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXTsK
LSAgICBtX3dlYlZpZXcgPSAwOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OmNsb3NlKCkKLXsKLSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIFtb
bV93ZWJWaWV3IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBjbG9zZV07Ci19Ci0KLWJvb2wg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6aXNGdWxsU2NyZWVuKCkKLXsKLSAgICBpZiAoIW1f
d2ViVmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghW21fd2ViVmlldyBoYXNG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gaXNGdWxsU2Ny
ZWVuXTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1bGxTY3Jl
ZW4oKQotewotICAgIGlmICghbV93ZWJWaWV3KQotICAgICAgICByZXR1cm47Ci0gICAgW1ttX3dl
YlZpZXcgZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJdIGVudGVyRnVsbFNjcmVlbjpuaWxdOwot
fQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsU2NyZWVuKCkKLXsK
LSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJuOwotICAgIFtbbV93ZWJWaWV3IGZ1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBleGl0RnVsbFNjcmVlbl07Ci19Ci0gICAgCi12b2lk
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmJlZ2FuRW50ZXJGdWxsU2NyZWVuKGNvbnN0IElu
dFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50UmVjdCYgZmluYWxGcmFtZSkKLXsKLSAgICBp
ZiAobV93ZWJWaWV3KQotICAgICAgICBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcl0gYmVnYW5FbnRlckZ1bGxTY3JlZW5XaXRoSW5pdGlhbEZyYW1lOmluaXRpYWxGcmFtZSBm
aW5hbEZyYW1lOmZpbmFsRnJhbWVdOwotfQotCi12b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmJlZ2FuRXhpdEZ1bGxTY3JlZW4oY29uc3QgSW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25z
dCBJbnRSZWN0JiBmaW5hbEZyYW1lKQotewotICAgIGlmIChtX3dlYlZpZXcpCi0gICAgICAgIFtb
bV93ZWJWaWV3IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBiZWdhbkV4aXRGdWxsU2NyZWVu
V2l0aEluaXRpYWxGcmFtZTppbml0aWFsRnJhbWUgZmluYWxGcmFtZTpmaW5hbEZyYW1lXTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTYwMjkw
KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC03MTUsNiArNzE1LDggQEAKIAkJN0MzODc0MzQxNzJGNTYxNTAwMUJE
ODhBIC8qIFBhZ2VCYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MzODc0MzMxNzJGNTYxNTAwMUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwICov
OyB9OwogCQk3QzNGOEM5MDE3M0FGNTJEMDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzRjhDOEUx
NzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsKIAkJN0MzRjhD
OTExNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNGOEM4RjE3M0FGNTJEMDA3QjdGMzkg
LyogUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgfTsKKwkJN0M0MTk3M0QxODU1MTI4OTAwMjIwREIy
IC8qIFdLVmlldytGdWxsU2NyZWVuLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M0MTk3M0IxODU1MTI4OTAwMjIwREIyIC8qIFdLVmlldytGdWxsU2Ny
ZWVuLm1tICovOyB9OworCQk3QzQxOTczRTE4NTUxMjg5MDAyMjBEQjIgLyogV0tWaWV3K0Z1bGxT
Y3JlZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NDE5NzNDMTg1NTEyODkwMDIyMERCMiAvKiBXS1ZpZXcrRnVsbFNjcmVlbi5oICovOyB9OwogCQk3
QzZEMzdGQzE3MkY1NTVGMDA5RDI4NDcgLyogUGFnZUJhbm5lck1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNkQzN0ZBMTcyRjU1NUYwMDlEMjg0
NyAvKiBQYWdlQmFubmVyTWFjLm1tICovOyB9OwogCQk3QzlEMTUzNzE4NDU4NERBMDA5RDM5MTgg
LyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyogV0tC
cm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi87IH07CiAJCTdDQTI1NEVCMTgyOTkzQ0Uw
MEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhB
NDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTEyMjgsNyArMTIzMCw2IEBACiAJCUNE
QzM4MzEwMTcyMTI0NDAwMDhBMkZDMyAvKiBDb29raWVTdG9yYWdlU2hpbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMzODMwRDE3MjEyNDJEMDA4
QTJGQzMgLyogQ29va2llU3RvcmFnZVNoaW0uY3BwICovOyB9OwogCQlDRENBODVDODEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM2MTMyQUJBNEUwMEU5NjFE
RiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovOyB9OwogCQlDRENBODVDOTEz
MkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0RTAw
RTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKLQkJQ0RDQTg1
RUUxMzJBRDcwMTAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVERTEzMkFE
MDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbSAqLzsgfTsKIAkJ
Q0RERjYyMkYxNzI4QTIwRDAwMUVDMDFGIC8qIENvcmVTZXJ2aWNlcy5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwMDQyQzExMEMx
RTI3MDAzQjhBNjcgLyogQ29yZVNlcnZpY2VzLmZyYW1ld29yayAqLzsgfTsKIAkJQ0VEQTEyRTIx
NTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJERjE1MkNDQUU4MDBE
OUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCAqLzsgfTsKIAkJQ0VEQTEyRTMx
NTJDRDFCMzAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREUxNTJDQ0FFODAwRDlF
MDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovOyB9OwpAQCAtMjI5MSw2ICsyMjky
LDggQEAKIAkJN0MzODc0MzMxNzJGNTYxNTAwMUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUJhbm5lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y4QzhFMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5J
bmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVn
aW5JbmZvcm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y4QzhG
MTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5JbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QzQxOTczQjE4NTUxMjg5MDAyMjBEQjIgLyogV0tWaWV3K0Z1bGxTY3JlZW4u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSAiV0tWaWV3K0Z1bGxT
Y3JlZW4ubW0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzQxOTczQzE4NTUxMjg5
MDAyMjBEQjIgLyogV0tWaWV3K0Z1bGxTY3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gIldLVmlldytGdWxsU2NyZWVuLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzZEMzdGQTE3MkY1NTVGMDA5RDI4NDcgLyogUGFnZUJhbm5lck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VCYW5uZXJNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jy
b3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDQTI1NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4
dFBvbGljeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJv
d3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI4NDMsNyArMjg0Niw2IEBACiAJCUNEQ0E4NUM2MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRENBODVENDEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCUNEQ0E4
NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREUxNTJD
Q0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjAxLDYgKzUyMDMsOCBAQAogCQkJCUUxMzRGMDE5MTJF
QTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSAqLywKIAkJCQkxQTRBOUFBNjEyQjdF
Nzk2MDA4RkU5ODQgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggKi8sCiAJCQkJMUE0
QTlBQTcxMkI3RTc5NjAwOEZFOTg0IC8qIFdLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5tbSAq
LywKKwkJCQk3QzQxOTczQjE4NTUxMjg5MDAyMjBEQjIgLyogV0tWaWV3K0Z1bGxTY3JlZW4ubW0g
Ki8sCisJCQkJN0M0MTk3M0MxODU1MTI4OTAwMjIwREIyIC8qIFdLVmlldytGdWxsU2NyZWVuLmgg
Ki8sCiAJCQkpOwogCQkJbmFtZSA9ICJXS1ZpZXcgRGV0YWlscyI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtNTI0NCw3ICs1MjQ4LDYgQEAKIAkJCQk1MUFDQkI5RTEyN0E4RjJDMDBE
MjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oICovLAogCQkJCTUxQUNCQjlGMTI3QThG
MkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovLAogCQkJCUY2RDYzMkJB
MTMzRDE4MUIwMDc0M0Q3NyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNYWMubW0gKi8sCi0JCQkJ
Q0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMu
bW0gKi8sCiAJCQkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5
TWFjLm1tICovLAogCQkJCUJDODU3RTg1MTJCNzFFQkIwMEVERUIyRSAvKiBXZWJQYWdlUHJveHlN
YWMubW0gKi8sCiAJCQkJQkM1NzUwOTUxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVBy
b3h5TWFjLmggKi8sCkBAIC02MDAzLDYgKzYwMDYsNyBAQAogCQkJCTUxMkY1ODlEMTJBODgzODgw
MDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTQ4
NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMzUxRjYxODBGNUM3NTAwRTUzQkU5IC8qIFdlYklEQkZhY3RvcnlCYWNrZW5kLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QzQxOTczRTE4NTUxMjg5MDAyMjBEQjIgLyogV0tWaWV3K0Z1bGxT
Y3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjA4ODFGMTUwNDEzRTkwMEZDODJDNyAvKiBX
ZWJSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMjE3NDY1MTY0QzIxMzcwMDM3
QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMzNjc2MzAx
MzBDOTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKQEAgLTY5ODQsNiArNjk4OCw3IEBACiAJCQkJNURBNkVEMEIxNDkwNjA2OTAwQjQxRDEyIC8q
IER5bmFtaWNMaW5rZXJFbnZpcm9ubWVudEV4dHJhY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CThDRkVDRTk0MTQ5MEYxNDAwMDJBQUEzMiAvKiBFZGl0b3JTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5M0ZDNjdCRjEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0M0MTk3M0QxODU1MTI4OTAwMjIwREIyIC8qIFdLVmlldytGdWxs
U2NyZWVuLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMTVBODQxMzg0M0EzOTAwMzIxQUQ4IC8q
IEVudmlyb25tZW50VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBN0M2Q0RBMTM3
ODk1MDgwMEI5QzA0RCAvKiBFbnZpcm9ubWVudFZhcmlhYmxlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQUE1NzVGQTE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNzI2Nyw3ICs3MjcyLDYgQEAKIAkJCQk3NTU0MjJCRDE4MDYyQkIyMDA0
NkY2QTggLyogV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDcz
QkE0RTEzMUFDREI3MDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q2Rjc1RjQxMzFCNjZEMDAwRDZCMjFFIC8qIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0RDQTg1RUUx
MzJBRDcwMTAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDRDczQkE0NzEzMUFDQzlBMDBFRURFRDIgLyogV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFCRTFF
MTEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkMwRTVGRTYxMkQ2OTcxNjAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218716</attachid>
            <date>2013-12-08 15:11:23 -0800</date>
            <delta_ts>2013-12-08 15:52:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125427-20131208151122.patch</filename>
            <type>text/plain</type>
            <size>27371</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDI5MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEzLTEyLTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvY29hXSBSZW1vdmUga25vd2xlZGdl
IG9mIHRoZSBXS1ZpZXcgZnJvbSB0aGUgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSBieSBhZGRp
bmcgYSBwcm9wZXIgY2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjU0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpmdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNsb3NlRnVsbFNjcmVlbk1hbmFnZXIpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpleGl0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpiZWdhbkVudGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpiZWdhbkV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuZXcg
Y2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAg
ICBSZW1vdmUgY2FsbCB0byBzZXRXZWJWaWV3KCkgYW5kIGRvIHNvbWUgY2xlYW51cC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmg6CisgICAgICAgIENvbnZl
cnQgdG8gcHJvcGVydHkgc3ludGF4IGFuZCByZS1hcnJhbmdlLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgRXhwb3NlIGFjY2VzcyB0byB0aGUgbmV3IGNsaWVu
dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6V2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Omlz
RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6YmVnYW5FbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdhbkV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICBVc2UgdGhlIG5l
dyBjbGllbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgUGFzcyB0aGUgbmV3IGNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbToKKyAgICAgICAgUmVtb3ZlZC4gTm93IGdvZXMgdGhy
b3VnaCB0aGUgY2xpZW50LgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICBSZW1vdmUgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbS4K
KwogMjAxMy0xMi0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtD
b2NvYV0gUmVtb3ZlIHdlYlByb2Nlc3NQbHVnSW5Jbml0aWFsaXplOiBmcm9tIHRoZSBXS1dlYlBy
b2Nlc3NQbHVnSW4gcHJvdG9jb2wKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkocmV2aXNpb24gMTYwMjkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDYgQEAgT0JKQ19DTEFTUyBDQUxh
eWVyOwogT0JKQ19DTEFTUyBXS1ZpZXc7CiBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsK
ICNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TKQotT0JKQ19DTEFTUyBVSVdLVmlldzsKLSNlbmRp
ZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU5LDE2ICs1NSwyMiBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CiBjbGFzcyBGaW5kSW5kaWNh
dG9yOwogY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotY2xhc3MgTmF0aXZlV2ViVG91Y2hFdmVudDsKLSNlbmRpZgogY2xhc3MgV2ViQ29udGV4
dE1lbnVQcm94eTsKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJveHk7CiBjbGFzcyBXZWJQb3B1cE1l
bnVQcm94eTsKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBOYXRpdmVXZWJUb3Vj
aEV2ZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIGNsYXNzIFdl
YkNvbG9yUGlja2VyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCitjbGFz
cyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50OworI2VuZGlmCisKICNpZiBQTEFURk9S
TShNQUMpCiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiAjZW5kaWYKQEAgLTI0Miw2ICsyNDQsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAjZW5kaWYKKworICAgIC8vIEF1eGlsaWFy
eSBDbGllbnQgQ3JlYXRpb24KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgdmlydHVh
bCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50JiBmdWxsU2NyZWVuTWFuYWdlclByb3h5
Q2xpZW50KCkgPSAwOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5jcHAJKHJldmlzaW9uIDE2MDI5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjAg
KzI4LDI0IEBACiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAKLSNpbmNsdWRlICJXZWJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4gV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSogcGFnZSkKK1Bhc3NSZWZQ
dHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVu
dCYgY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eShwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5KHBhZ2UsIGNsaWVudCkpOwogfQogCi1XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKLSAgICA6IG1f
cGFnZShwYWdlKQotICAgICwgbV93ZWJWaWV3KDApCitXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eUNsaWVudCYgY2xpZW50KQorICAgIDogbV9wYWdlKCZwYWdlKQorICAg
ICwgbV9jbGllbnQoJmNsaWVudCkKICNpZiBQTEFURk9STShFRkwpCiAgICAgLCBtX2hhc1JlcXVl
c3RlZEZ1bGxTY3JlZW4oZmFsc2UpCiAjZW5kaWYKQEAgLTUzLDExICs1Nyw2IEBAIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6On5XZWJGdWxsU2NyZWUKIHsKIH0KIAotdm9pZCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpzZXRXZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogd2ViVmlldykKLXsK
LSAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OwotfQotCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OndpbGxFbnRlckZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCks
IG1fcGFnZS0+cGFnZUlEKCkpOwpAQCAtMTAzLDYgKzEwMiw1OSBAQCB2b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTCiAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKIH0KIAordm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjppbnZh
bGlkYXRlKCkKK3sKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2NsaWVudC0+Y2xvc2VGdWxsU2NyZWVuTWFuYWdlcigpOworICAgIG1fY2xp
ZW50ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9z
ZSgpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50
LT5jbG9zZUZ1bGxTY3JlZW5NYW5hZ2VyKCk7Cit9CisKK2Jvb2wgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6aXNGdWxsU2NyZWVuKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY2xpZW50LT5pc0Z1bGxTY3JlZW4oKTsKK30KKwor
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjplbnRlckZ1bGxTY3JlZW4oKQoreworICAg
IGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+ZW50ZXJGdWxs
U2NyZWVuKCk7Cit9CisKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxT
Y3JlZW4oKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Ns
aWVudC0+ZXhpdEZ1bGxTY3JlZW4oKTsKK30KKyAgICAKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6YmVnYW5FbnRlckZ1bGxTY3JlZW4oY29uc3QgSW50UmVjdCYgaW5pdGlhbEZyYW1l
LCBjb25zdCBJbnRSZWN0JiBmaW5hbEZyYW1lKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+YmVnYW5FbnRlckZ1bGxTY3JlZW4oaW5pdGlhbEZy
YW1lLCBmaW5hbEZyYW1lKTsKK30KKwordm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpi
ZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgSW50
UmVjdCYgZmluYWxGcmFtZSkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47
CisgICAgbV9jbGllbnQtPmJlZ2FuRXhpdEZ1bGxTY3JlZW4oaW5pdGlhbEZyYW1lLCBmaW5hbEZy
YW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDE2MDI5MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDMzICszNywyOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0
OwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQotT0JKQ19DTEFTUyBXS1ZpZXc7Ci0jZWxpZiBQTEFU
Rk9STShHVEspCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2UgV2ViS2l0V2ViVmll
d0Jhc2U7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCi0jaWYgUExBVEZPUk0o
TUFDKQotdHlwZWRlZiBXS1ZpZXcgUGxhdGZvcm1XZWJWaWV3OwotI2VsaWYgUExBVEZPUk0oR1RL
KQotdHlwZWRlZiBXZWJLaXRXZWJWaWV3QmFzZSBQbGF0Zm9ybVdlYlZpZXc7Ci0jZWxpZiBQTEFU
Rk9STShFRkwpCi10eXBlZGVmIEV2YXNfT2JqZWN0IFBsYXRmb3JtV2ViVmlldzsKLSNlbmRpZgog
CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFzcyBMYXllclRyZWVDb250ZXh0OworCitjbGFzcyBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VGdWxsU2NyZWVuTWFuYWdlcigpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsU2Ny
ZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxTY3JlZW4oKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBiZWdh
bkVudGVyRnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpID0gMDsKK307CiAKIGNsYXNzIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5PiwgcHVibGljIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
Q2xpZW50Jik7CiAgICAgdmlydHVhbCB+V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSgpOwogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKLSAgICB2b2lkIHNldFdlYlZpZXcoUGxhdGZvcm1XZWJW
aWV3Kik7CiAgICAgYm9vbCBpc0Z1bGxTY3JlZW4oKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKQEAg
LTc3LDcgKzczLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eShXZWJQ
YWdlUHJveHkqKTsKKyAgICBleHBsaWNpdCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdlYlBh
Z2VQcm94eSYsIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmKTsKIAogICAgIHZvaWQg
c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBib29sJik7CiAgICAgdm9pZCBl
bnRlckZ1bGxTY3JlZW4oKTsKQEAgLTg5LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxDb3JlSVBDOjpNZXNzYWdlRW5jb2Rl
cj4mKSBPVkVSUklERTsKIAogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwotICAgIFBsYXRmb3Jt
V2ViVmlldyogbV93ZWJWaWV3OworICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQq
IG1fY2xpZW50OwogCiAjaWYgUExBVEZPUk0oRUZMKQogICAgIGJvb2wgbV9oYXNSZXF1ZXN0ZWRG
dWxsU2NyZWVuOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHJldmlzaW9uIDE2MDI5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgIG1faW5zcGVjdG9yID0gV2ViSW5zcGVj
dG9yUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLSAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKHRoaXMpOworICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fcGFnZUNsaWVudC5mdWxsU2NyZWVuTWFuYWdlclBy
b3h5Q2xpZW50KCkpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBtX3ZpYnJh
dGlvbiA9IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUodGhpcyk7CkBAIC00NzgsNyArNDc4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKAogICAgIG1faW5zcGVj
dG9yID0gV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKLSAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOworICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fcGFnZUNsaWVudC5mdWxs
U2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOwogI2VuZGlmCiAKICAgICBpbml0aWFsaXplV2Vi
UGFnZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxNjAyOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJDb3JyZWN0aW9uUGFuZWwuaCIKICNpbmNsdWRlICJQYWdlQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogQGNsYXNzIFdLRWRpdG9yVW5kb1RhcmdldE9iakM7CkBAIC00
MCwxNCArNDEsMTkgQEAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwogbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBGaW5kSW5kaWNhdG9yV2luZG93OwogCi1jbGFzcyBQYWdlQ2xp
ZW50SW1wbCBGSU5BTCA6IHB1YmxpYyBQYWdlQ2xpZW50IHsKK2NsYXNzIFBhZ2VDbGllbnRJbXBs
IEZJTkFMIDogcHVibGljIFBhZ2VDbGllbnQKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisg
ICAgLCBwdWJsaWMgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudAorI2VuZGlmCisgICAg
ewogcHVibGljOgotICAgIGV4cGxpY2l0IFBhZ2VDbGllbnRJbXBsKFdLVmlldyopOworICAgIGV4
cGxpY2l0IFBhZ2VDbGllbnRJbXBsKFdLVmlldyAqKTsKICAgICB2aXJ0dWFsIH5QYWdlQ2xpZW50
SW1wbCgpOwogICAgIAogICAgIHZvaWQgdmlld1dpbGxNb3ZlVG9Bbm90aGVyV2luZG93KCk7CiAK
IHByaXZhdGU6CisgICAgLy8gUGFnZUNsaWVudAogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BsYXlWaWV3KCk7CkBAIC0xMzQsNiArMTQwLDIxIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCk7CiAjZW5kaWYKIAorICAgIC8vIEF1eGlsaWFyeSBDbGllbnQg
Q3JlYXRpb24KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eUNsaWVudCYgZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpIE9WRVJSSURF
OworI2VuZGlmCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8gV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBjbG9zZUZ1bGxTY3JlZW5N
YW5hZ2VyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzRnVsbFNjcmVlbigpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxTY3JlZW4oKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
YmVnYW5FbnRlckZ1bGxTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1l
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaW5hbEZyYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0
aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIE9WRVJSSURFOwor
I2VuZGlmCisKICAgICBXS1ZpZXcqIG1fd2tWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVu
ZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNs
aWVudEltcGwubW0JKHJldmlzaW9uIDE2MDI5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMCArMjYs
MTcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwuaCIKIAot
I2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotI2ltcG9ydCA8QXBwS2l0L05TVGV4dEFs
dGVybmF0aXZlcy5oPgotI2VuZGlmCiAjaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1w
b3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9y
dCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiRmluZEluZGljYXRvci5oIgogI2lt
cG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgorI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKKyNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVmlld0ludGVy
bmFsLmgiCi0jaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCi0jaW1wb3J0ICJTdHJpbmdVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIldlYkNvbG9yUGlja2VyTWFjLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0
TWVudVByb3h5TWFjLmgiCiAjaW1wb3J0ICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCkBAIC01Myw5
ICs1MCwxMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgorI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbXBvcnQgPFdlYktp
dFN5c3RlbUludGVyZmFjZS5oPgorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisj
aW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CisjZW5kaWYKIAogQGludGVyZmFj
ZSBOU0FwcGxpY2F0aW9uIChXZWJOU0FwcGxpY2F0aW9uRGV0YWlscykKIC0gKE5TQ3Vyc29yICop
X2N1cnNvclJlY3RDdXJzb3I7CkBAIC01NTQsNCArNTU1LDUxIEBAIFZlY3RvcjxTdHJpbmc+IFBh
Z2VDbGllbnRJbXBsOjpkaWN0YXRpb24KIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorCitXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50JiBQYWdlQ2xpZW50SW1w
bDo6ZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpCit7CisgICAgcmV0dXJuICp0aGlzOwor
fQorCisjZW5kaWYKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworLy8gV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eUNsaWVudAorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpjbG9zZUZ1bGxT
Y3JlZW5NYW5hZ2VyKCkKK3sKKyAgICBbbV93a1ZpZXcgY2xvc2VGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcl07Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzRnVsbFNjcmVlbigpCit7Cisg
ICAgaWYgKCFtX3drVmlldy5oYXNGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fd2tWaWV3LmZ1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyLmlzRnVsbFNjcmVlbjsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW50ZXJGdWxs
U2NyZWVuKCkKK3sKKyAgICBbbV93a1ZpZXcuZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZW50
ZXJGdWxsU2NyZWVuOm5pbF07Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmV4aXRGdWxsU2Ny
ZWVuKCkKK3sKKyAgICBbbV93a1ZpZXcuZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZXhpdEZ1
bGxTY3JlZW5dOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpiZWdhbkVudGVyRnVsbFNjcmVl
bihjb25zdCBJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEludFJlY3QmIGZpbmFsRnJhbWUp
Cit7CisgICAgW21fd2tWaWV3LmZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGJlZ2FuRW50ZXJG
dWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTppbml0aWFsRnJhbWUgZmluYWxGcmFtZTpmaW5hbEZy
YW1lXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6YmVnYW5FeGl0RnVsbFNjcmVlbihjb25z
dCBJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEludFJlY3QmIGZpbmFsRnJhbWUpCit7Cisg
ICAgW21fd2tWaWV3LmZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGJlZ2FuRXhpdEZ1bGxTY3Jl
ZW5XaXRoSW5pdGlhbEZyYW1lOmluaXRpYWxGcmFtZSBmaW5hbEZyYW1lOmZpbmFsRnJhbWVdOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTYwMjkwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw3ICs1OCw2IEBACiAjaW1wb3J0ICJXS1ZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJDb250
ZXh0LmgiCiAjaW1wb3J0ICJXZWJFdmVudEZhY3RvcnkuaCIKLSNpbXBvcnQgIldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW1wb3J0
ICJXZWJQYWdlLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKQEAgLTc1LDYgKzc0LDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3Rv
cnlNYWMuaD4KQEAgLTgyLDEwICs4Miw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1N0cmluZ0V4
dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oPgotI2ltcG9y
dCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1N0cmlu
Z0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0IDxz
eXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgpAQCAtMjkxMSw5ICsyOTEwLDcgQEAg
LSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleAogICAgIF9kYXRhLT5fcGFn
ZSA9IHRvSW1wbChjb250ZXh0UmVmKS0+Y3JlYXRlV2ViUGFnZSgqX2RhdGEtPl9wYWdlQ2xpZW50
LCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgdG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiAgICAgX2RhdGEt
Pl9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcihbc2VsZiBfaW50cmluc2ljRGV2
aWNlU2NhbGVGYWN0b3JdKTsKICAgICBfZGF0YS0+X3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7
Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIF9kYXRhLT5fcGFnZS0+ZnVsbFNjcmVl
bk1hbmFnZXIoKS0+c2V0V2ViVmlldyhzZWxmKTsKLSNlbmRpZgorCiAgICAgX2RhdGEtPl9tb3Vz
ZURvd25FdmVudCA9IG5pbDsKICAgICBfZGF0YS0+X2lnbm9yaW5nTW91c2VEcmFnZ2VkRXZlbnRz
ID0gTk87CiAgICAgX2RhdGEtPl9jbGlwc1RvVmlzaWJsZVJlY3QgPSBOTzsKQEAgLTMxMjIsNyAr
MzExOSw3IEBAIC0gKHZvaWQpc2V0VW5kZXJsYXlDb2xvcjooTlNDb2xvciAqKXVuZGUKICAgICBf
ZGF0YS0+X3BhZ2UtPnNldFVuZGVybGF5Q29sb3IoY29sb3JGcm9tTlNDb2xvcih1bmRlcmxheUNv
bG9yKSk7CiB9CiAKLS0gKE5TVmlldyopZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldworLSAoTlNW
aWV3ICopZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogewogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBpZiAoX2RhdGEtPl9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAmJiBbX2Rh
dGEtPl9mdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpc0Z1bGxTY3JlZW5dKQpAQCAtMzEzMSw2
ICszMTI4LDIwIEBAIC0gKE5TVmlldyopZnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldwogICAgIHJl
dHVybiBuaWw7CiB9CiAKKy0gKE5TV2luZG93ICopY3JlYXRlRnVsbFNjcmVlbldpbmRvdworewor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDw9IDEwODAKKyAgICBOU1JlY3QgY29udGVudFJlY3QgPSBOU1plcm9SZWN0OworI2Vs
c2UKKyAgICBOU1JlY3QgY29udGVudFJlY3QgPSBbW05TU2NyZWVuIG1haW5TY3JlZW5dIGZyYW1l
XTsKKyNlbmRpZgorICAgIHJldHVybiBbW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpjb250ZW50UmVjdCBzdHlsZU1hc2s6KE5TQm9yZGVybGVzc1dp
bmRvd01hc2sgfCBOU1Jlc2l6YWJsZVdpbmRvd01hc2spIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVC
dWZmZXJlZCBkZWZlcjpOT10gYXV0b3JlbGVhc2VdOworI2Vsc2UKKyAgICByZXR1cm4gbmlsOwor
I2VuZGlmCit9CisKIC0gKHZvaWQpYmVnaW5EZWZlcnJpbmdWaWV3SW5XaW5kb3dDaGFuZ2VzCiB7
CiAgICAgaWYgKF9kYXRhLT5fc2hvdWxkRGVmZXJWaWV3SW5XaW5kb3dDaGFuZ2VzKSB7CkBAIC0z
MjMwLDIwICszMjQxLDYgQEAgLSAodm9pZCl3YWl0Rm9yQXN5bmNEcmF3aW5nQXJlYVNpemVVcGRh
dAogICAgIH0KIH0KIAotLSAoTlNXaW5kb3cqKWNyZWF0ZUZ1bGxTY3JlZW5XaW5kb3cKLXsKLSNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8PSAxMDgwCi0gICAgTlNSZWN0IGNvbnRlbnRSZWN0ID0gTlNaZXJvUmVjdDsKLSNlbHNl
Ci0gICAgTlNSZWN0IGNvbnRlbnRSZWN0ID0gW1tOU1NjcmVlbiBtYWluU2NyZWVuXSBmcmFtZV07
Ci0jZW5kaWYKLSAgICByZXR1cm4gW1tbV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6Y29udGVudFJlY3Qgc3R5bGVNYXNrOihOU0JvcmRlcmxlc3NXaW5k
b3dNYXNrIHwgTlNSZXNpemFibGVXaW5kb3dNYXNrKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dIGF1dG9yZWxlYXNlXTsKLSNlbHNlCi0gICAgcmV0dXJuIG5pbDsKLSNl
bmRpZgotfQotCiAtIChCT09MKWlzVXNpbmdVSVNpZGVDb21wb3NpdGluZwogewogICAgIGlmIChE
cmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IF9kYXRhLT5fcGFnZS0+ZHJhd2luZ0FyZWEo
KSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
SW50ZXJuYWwuaAkocmV2aXNpb24gMTYwMjkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIldL
Vmlldy5oIgorI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgogCiAjaW1wb3J0ICJQbHVnaW5Db21w
bGV4VGV4dElucHV0U3RhdGUuaCIKICNpbXBvcnQgIldlYkZpbmRPcHRpb25zLmgiCkBAIC04Mywx
MiArODMsNiBAQCBAaW50ZXJmYWNlIFdLVmlldyAoSW50ZXJuYWwpCiAKIC0gKFdlYktpdDo6Q29s
b3JTcGFjZURhdGEpX2NvbG9yU3BhY2U7CiAKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0t
IChCT09MKWhhc0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwotLSAoV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlciopZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7Ci0tICh2b2lkKWNsb3Nl
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7Ci0jZW5kaWYKLQogLSAodm9pZClfY2FjaGVXaW5k
b3dCb3R0b21Db3JuZXJSZWN0OwogCiAtIChOU0ludGVnZXIpc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWc7CkBAIC05Nyw0ICs5MSwxMCBAQCBAaW50ZXJmYWNlIFdLVmlldyAoSW50ZXJuYWwpCiAtICh2
b2lkKV9zZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOihCT09MKXN1cHByZXNzVmlzaWJpbGl0
eVVwZGF0ZXM7CiAtIChCT09MKV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOwogCisvLyBGdWxs
U2NyZWVuCisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgaGFzRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXI7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyICpmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKKy0gKHZvaWQpY2xvc2VGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcjsKKwogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQko
cmV2aXNpb24gMTYwMjkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDksNyArMzQ5LDYg
QEAgLSAodm9pZClleGl0RnVsbFNjcmVlbgogCiAtICh2b2lkKWJlZ2FuRXhpdEZ1bGxTY3JlZW5X
aXRoSW5pdGlhbEZyYW1lOihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jilpbml0aWFsRnJhbWUgZmlu
YWxGcmFtZTooY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpZmluYWxGcmFtZQogewotCiAgICAgaWYg
KF9mdWxsU2NyZWVuU3RhdGUgIT0gV2FpdGluZ1RvRXhpdEZ1bGxTY3JlZW4pCiAgICAgICAgIHJl
dHVybjsKICAgICBfZnVsbFNjcmVlblN0YXRlID0gRXhpdGluZ0Z1bGxTY3JlZW47CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5TWFjLm1tCShyZXZpc2lvbiAxNjAyOTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsOTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKSAmJiAhUExBVEZPUk0oSU9TKQotCi0jaW1wb3J0ICJMYXllclRyZWVDb250ZXh0
LmgiCi0jaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJX
S1ZpZXdJbnRlcm5hbC5oIgotI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCi0jaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlByb2Nlc3NQcm94
eS5oIgotI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OjppbnZhbGlkYXRlKCkKLXsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Ci0KLSAgICBpZiAoIW1fd2ViVmlldykKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIFttX3dlYlZpZXcgY2xvc2VGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlcl07Ci0gICAgbV93ZWJWaWV3ID0gMDsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpjbG9zZSgpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcpCi0gICAgICAgIHJl
dHVybjsKLSAgICBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gY2xvc2Vd
OwotfQotCi1ib29sIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmlzRnVsbFNjcmVlbigpCi17
Ci0gICAgaWYgKCFtX3dlYlZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIVtt
X3dlYlZpZXcgaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJdKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gW1ttX3dlYlZpZXcgZnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXJdIGlzRnVsbFNjcmVlbl07Ci19Ci0KLXZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
ZW50ZXJGdWxsU2NyZWVuKCkKLXsKLSAgICBpZiAoIW1fd2ViVmlldykKLSAgICAgICAgcmV0dXJu
OwotICAgIFtbbV93ZWJWaWV3IGZ1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyXSBlbnRlckZ1bGxT
Y3JlZW46bmlsXTsKLX0KLQotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpleGl0RnVs
bFNjcmVlbigpCi17Ci0gICAgaWYgKCFtX3dlYlZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBb
W21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gZXhpdEZ1bGxTY3JlZW5dOwot
fQotICAgIAotdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpiZWdhbkVudGVyRnVsbFNj
cmVlbihjb25zdCBJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IEludFJlY3QmIGZpbmFsRnJh
bWUpCi17Ci0gICAgaWYgKG1fd2ViVmlldykKLSAgICAgICAgW1ttX3dlYlZpZXcgZnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJdIGJlZ2FuRW50ZXJGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpp
bml0aWFsRnJhbWUgZmluYWxGcmFtZTpmaW5hbEZyYW1lXTsKLX0KLQotdm9pZCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IEludFJlY3QmIGluaXRp
YWxGcmFtZSwgY29uc3QgSW50UmVjdCYgZmluYWxGcmFtZSkKLXsKLSAgICBpZiAobV93ZWJWaWV3
KQotICAgICAgICBbW21fd2ViVmlldyBmdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcl0gYmVnYW5F
eGl0RnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6aW5pdGlhbEZyYW1lIGZpbmFsRnJhbWU6Zmlu
YWxGcmFtZV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE2MDI5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIyOCw3ICsxMjI4LDYgQEAKIAkJQ0RDMzgz
MTAxNzIxMjQ0MDAwOEEyRkMzIC8qIENvb2tpZVN0b3JhZ2VTaGltLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzM4MzBEMTcyMTI0MkQwMDhBMkZD
MyAvKiBDb29raWVTdG9yYWdlU2hpbS5jcHAgKi87IH07CiAJCUNEQ0E4NUM4MTMyQUJBNEUwMEU5
NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8q
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEQ0E4NUM5MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYx
REYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OwotCQlDRENBODVFRTEz
MkFENzAxMDBFOTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NURFMTMyQUQwNTMw
MEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICovOyB9OwogCQlDRERG
NjIyRjE3MjhBMjBEMDAxRUMwMUYgLyogQ29yZVNlcnZpY2VzLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDAwNDJDMTEwQzFFMjcw
MDNCOEE2NyAvKiBDb3JlU2VydmljZXMuZnJhbWV3b3JrICovOyB9OwogCQlDRURBMTJFMjE1MkNE
MUFFMDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRGMTUyQ0NBRTgwMEQ5RTA4
RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwICovOyB9OwogCQlDRURBMTJFMzE1MkNE
MUIzMDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQg
LyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi87IH07CkBAIC0yODQzLDcgKzI4NDIsNiBA
QAogCQlDRENBODVDNjEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
Q0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RDQxMzJBQzJCMzAw
RTk2MURGIC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3
b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQlDRENBODVERTEzMkFEMDUzMDBFOTYxREYg
LyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFREExMkRGMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDIxMUZGNEI2
NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTI0NCw3ICs1MjQyLDYgQEAKIAkJCQk1MUFDQkI5RTEyN0E4RjJDMDBEMjAzQjkgLyogV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5oICovLAogCQkJCTUxQUNCQjlGMTI3QThGMkMwMEQyMDNCOSAv
KiBXZWJDb250ZXh0TWVudVByb3h5TWFjLm1tICovLAogCQkJCUY2RDYzMkJBMTMzRDE4MUIwMDc0
M0Q3NyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNYWMubW0gKi8sCi0JCQkJQ0RDQTg1REUxMzJB
RDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gKi8sCiAJCQkJ
MUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovLAog
CQkJCUJDODU3RTg1MTJCNzFFQkIwMEVERUIyRSAvKiBXZWJQYWdlUHJveHlNYWMubW0gKi8sCiAJ
CQkJQkM1NzUwOTUxMjY4RjNDNjAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLmggKi8s
CkBAIC03MjY3LDcgKzcyNjQsNiBAQAogCQkJCTc1NTQyMkJEMTgwNjJCQjIwMDQ2RjZBOCAvKiBX
S09yaWdpbkRhdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTRFMTMxQUNE
QjcwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRDZGNzVGNDEzMUI2NkQwMDBENkIyMUUgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDRENBODVFRTEzMkFENzAxMDBF
OTYxREYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNENzNCQTQ3MTMxQUNDOUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMUJFMUUxMTJENTRBNDEw
MDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzBFNUZFNjEyRDY5NzE2MDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAo=
</data>
<flag name="review"
          id="242204"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="242205"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>