<?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>113746</bug_id>
          
          <creation_ts>2013-04-01 22:27:11 -0700</creation_ts>
          <short_desc>WebKit/mac shouldn&apos;t have code for Mac 10.5 and earlier</short_desc>
          <delta_ts>2013-04-02 23:48:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>113749</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
    
    <cc>mrowe</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>867543</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-01 22:27:11 -0700</bug_when>
    <thetext>WebKit/mac shouldn&apos;t have code for Mac 10.5 and earlier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867546</commentid>
    <comment_count>1</comment_count>
      <attachid>196072</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-01 22:28:06 -0700</bug_when>
    <thetext>Created attachment 196072
Delete code for 10.5 and earlier from WebKit/mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867557</commentid>
    <comment_count>2</comment_count>
      <attachid>196073</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-01 22:41:27 -0700</bug_when>
    <thetext>Created attachment 196073
Removed unused function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867561</commentid>
    <comment_count>3</comment_count>
      <attachid>196073</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2013-04-01 22:45:54 -0700</bug_when>
    <thetext>Comment on attachment 196073
Removed unused function

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

&gt; Source/WebKit/mac/Misc/WebNSFileManagerExtras.mm:-39
&gt; -#if __MAC_OS_X_VERSION_MIN_REQUIRED == 1060

Removing this isn&apos;t consistent with the description of your patch.

&gt; Source/WebKit/mac/WebView/WebView.mm:1472
&gt; +    settings-&gt;setNeedsLeopardMailQuirks(false);

This is an obvious candidate for removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867574</commentid>
    <comment_count>4</comment_count>
      <attachid>196073</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-01 23:09:24 -0700</bug_when>
    <thetext>Comment on attachment 196073
Removed unused function

Attachment 196073 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17301523</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867579</commentid>
    <comment_count>5</comment_count>
      <attachid>196073</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-01 23:13:46 -0700</bug_when>
    <thetext>Comment on attachment 196073
Removed unused function

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

&gt;&gt; Source/WebKit/mac/Misc/WebNSFileManagerExtras.mm:-39
&gt;&gt; -#if __MAC_OS_X_VERSION_MIN_REQUIRED == 1060
&gt; 
&gt; Removing this isn&apos;t consistent with the description of your patch.

Oops, nice catch. I was initially removing 1060 code. Let me revert that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867583</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-01 23:16:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 196073 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196073&amp;action=review
&gt;
&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:1472
&gt; &gt; +    settings-&gt;setNeedsLeopardMailQuirks(false);
&gt; 
&gt; This is an obvious candidate for removal.

Yeah, I’m going to do that in a separate patch though since that involves both WebKit and WebCore changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867594</commentid>
    <comment_count>7</comment_count>
      <attachid>196077</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-01 23:27:11 -0700</bug_when>
    <thetext>Created attachment 196077
Fixed per Mark&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867955</commentid>
    <comment_count>8</comment_count>
      <attachid>196077</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-04-02 09:45:25 -0700</bug_when>
    <thetext>Comment on attachment 196077
Fixed per Mark&apos;s comments

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

&gt; Source/WebKit/mac/WebView/WebView.mm:1472
&gt; +    settings-&gt;setNeedsLeopardMailQuirks(false);

I don’t think we need this line at all. This defaults to false and we will never set it to true. So please delete this.

In fact, as a followup we could remove this setting from WebCore entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867993</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-02 10:34:30 -0700</bug_when>
    <thetext>Committed as https://trac.webkit.org/r147447.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196072</attachid>
            <date>2013-04-01 22:28:06 -0700</date>
            <delta_ts>2013-04-01 22:41:25 -0700</delta_ts>
            <desc>Delete code for 10.5 and earlier from WebKit/mac</desc>
            <filename>bug-113746-20130401222759.patch</filename>
            <type>text/plain</type>
            <size>42860</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzM4MCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEzLTA0LTAx
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYktpdC9tYWMg
c2hvdWxkbid0IGhhdmUgY29kZSBmb3IgTWFjIDEwLjUgYW5kIGVhcmxpZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzc0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZWQgdGhlIGNvZGUgZm9y
IDEwLjUgYW5kIHJlbW92ZWQgaWYtZGVmcyBmb3IgMTAuNi4KKworICAgICAgICAqIE1pc2MvV2Vi
TlNGaWxlTWFuYWdlckV4dHJhcy5tbToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkhvc3RlZE5ldHNjYXBlUGx1
Z2luVmlldyBjcmVhdGVQbHVnaW5dKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgaW5p
dFdpdGhGcmFtZTpwbHVnaW5QYWNrYWdlOlVSTDpiYXNlVVJMOk1JTUVUeXBlOmF0dHJpYnV0ZUtl
eXM6YXR0cmlidXRlVmFsdWVzOmxvYWRNYW51YWxseTplbGVtZW50OldlYkNvcmU6Ol0pOgorICAg
ICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJO
ZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2luXSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBl
UGx1Z2luVmlldyBnZXRWYXJpYWJsZTpmb3JVUkw6dmFsdWU6bGVuZ3RoOl0pOgorICAgICAgICAo
LVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgX3dvcmthcm91bmRTaWx2ZXJsaWdodEZ1bGxzY3JlZW5C
dWc6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dz
TWVudVdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJz
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHJlZmxlY3RTY3Jv
bGxlZENsaXBWaWV3Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF91cGRhdGVNZW51QW5k
RG9ja0ZvckZ1bGxTY3JlZW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOmlu
Q29udGV4dDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ZyYW1l
T3JCb3VuZHNDaGFuZ2VkXSk6CisgICAgICAgICgrW1dlYkhUTUxWaWV3IF9pbnNlcnRhYmxlUGFz
dGVib2FyZFR5cGVzXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9kb2N1bWVudEZyYWdtZW50
RnJvbVBhc3RlYm9hcmQ6Zm9yVHlwZTppbkNvbnRleHQ6c3VicmVzb3VyY2VzOl0pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRl
Ol0pOgorICAgICAgICAod3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF9sb29rVXBJbkRpY3Rpb25hcnlGcm9tTWVudTpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgYXR0YWNoUm9vdExheWVyOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViSFRNTFZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGRG9jdW1lbnRF
eHRyYXMubW06CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAg
KCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVz
b3VyY2VJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgorICAgICAgICAoK1tXZWJWaWV3IGlu
aXRpYWxpemVdKToKKyAgICAgICAgKGNsaWVudE5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJv
dW5kKToKKyAgICAgICAgKC1bV2ViVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91
dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEdyYW1tYXJDaGVja2luZ0VuYWJs
ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5h
YmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZWFyY2hXaXRoU3BvdGxpZ2h0RnJvbU1l
bnU6XSk6CisgICAgICAgIChXZWJJbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTMtMDQtMDEgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ2FjaGUgc2hvdWxkIGRv
IHRoZSBub3JtYWwgaW5pdGlhbGl6YXRpb24gZGFuY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0JKHJldmlzaW9uIDE0NzIyMykK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDYgQEAKICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID09IDEwNjAKLWV4dGVybiAiQyIgREFEaXNrUmVmIERBRGlza0NyZWF0ZUZyb21Wb2x1bWVQ
YXRoKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgREFTZXNzaW9uUmVmIHNlc3Npb24sIENGVVJM
UmVmIHBhdGgpOwotI2VuZGlmCi0KIEBpbXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXZWJO
U0ZpbGVNYW5hZ2VyRXh0cmFzKQogCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHJldmlzaW9uIDE0NzIy
MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDggKzEwMSw3IEBAIC0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZQogICAgIF9zb3VyY2VVUkwuYWRvcHROUyhbVVJMIGNvcHldKTsKICAg
ICBfYmFzZVVSTC5hZG9wdE5TKFtiYXNlVVJMIGNvcHldKTsKICAgICBfTUlNRVR5cGUuYWRvcHRO
UyhbTUlNRSBjb3B5XSk7Ci0gICAgCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDYwCisKICAgICAvLyBFbmFibGUgImtpb3NrIG1vZGUiIHdoZW4gaW5zdGFudGlhdGlu
ZyB0aGUgUVQgcGx1Zy1pbiBpbnNpZGUgb2YgRGFzaGJvYXJkLiBTZWUgPHJkYXI6Ly9wcm9ibGVt
LzY4NzgxMDU+CiAgICAgaWYgKFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZp
ZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5kYXNoYm9hcmQuY2xpZW50Il0gJiYKICAg
ICAgICAgW19wbHVnaW5QYWNrYWdlLmdldCgpIGJ1bmRsZUlkZW50aWZpZXJdID09ICJjb20uYXBw
bGUuUXVpY2tUaW1lIFBsdWdpbi5wbHVnaW4iKSB7CkBAIC0xMTMsNyArMTEyLDYgQEAgLSAoaWQp
aW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCiAgICAgICAgIFttdXRhYmxlVmFsdWVzLmdldCgp
IGFkZE9iamVjdDpAInRydWUiXTsKICAgICAgICAgW3NlbGYgc2V0QXR0cmlidXRlS2V5czptdXRh
YmxlS2V5cy5nZXQoKSBhbmRWYWx1ZXM6bXV0YWJsZVZhbHVlcy5nZXQoKV07CiAgICAgfSBlbHNl
Ci0jZW5kaWYKICAgICAgICAgIFtzZWxmIHNldEF0dHJpYnV0ZUtleXM6a2V5cyBhbmRWYWx1ZXM6
dmFsdWVzXTsKIAogICAgIGlmIChsb2FkTWFudWFsbHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gMTQ3
MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOTksNyArMTA5OSw2IEBAIC0gKEJPT0wpY3JlYXRlUGx1
Z2luCiAjZW5kaWYKICAgICAgICAgICAgIGlmIChhY2NsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBjYW4gYmUgc2hhcmVkIGJl
dHdlZW4gV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGFuZCBXZWJOZXRzY2FwZVBsdWdpblZp
ZXcuCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAg
ICAgICAgICAgLy8gU2luY2UgdGhpcyBsYXllciBpc24ndCBnb2luZyB0byBiZSBpbnNlcnRlZCBp
bnRvIGEgdmlldywgd2UgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBsYXllciBhbmQgZmxpcCBpdHMg
Z2VvbWV0cnkKICAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciB0byBnZXQgdGhlIGNvb3JkaW5h
dGUgc3lzdGVtIHJpZ2h0LgogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDQUxheWVyPiByZWFs
UGx1Z2luTGF5ZXIoQWRvcHROUywgX3BsdWdpbkxheWVyLmxlYWtSZWYoKSk7CkBAIC0xMTEwLDcg
KzExMDksNyBAQCAtIChCT09MKWNyZWF0ZVBsdWdpbgogCiAgICAgICAgICAgICAgICAgcmVhbFBs
dWdpbkxheWVyLmdldCgpLmF1dG9yZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZSB8
IGtDQUxheWVySGVpZ2h0U2l6YWJsZTsKICAgICAgICAgICAgICAgICBbX3BsdWdpbkxheWVyLmdl
dCgpIGFkZFN1YmxheWVyOnJlYWxQbHVnaW5MYXllci5nZXQoKV07Ci0jZW5kaWYKKwogICAgICAg
ICAgICAgICAgIC8vIEVhZ2VybHkgZW50ZXIgY29tcG9zaXRpbmcgbW9kZSwgc2luY2Ugd2Uga25v
dyB3ZSdsbCBuZWVkIGl0LiBUaGlzIGF2b2lkcyBmaXJpbmcgc2V0TmVlZHNTdHlsZVJlY2FsYygp
CiAgICAgICAgICAgICAgICAgLy8gZm9yIGlmcmFtZXMgdGhhdCBjb250YWluIGNvbXBvc2l0ZWQg
cGx1Z2lucyBhdCBiYWQgdGltZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTAzMwogICAgICAgICAgICAgICAgIGNvcmUoW3NlbGYgd2ViRnJhbWVdKS0+dmlldygp
LT5lbnRlckNvbXBvc2l0aW5nTW9kZSgpOwpAQCAtMjIzMSw3ICsyMjMwLDYgQEAgLSAoTlBFcnJv
cilnZXRWYXJpYWJsZTooTlBOVVJMVmFyaWFibGUpdgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBOUE5VUkxWUHJveHk6IHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTIyNDksOSArMjI0Nyw2IEBAIC0gKE5Q
RXJyb3IpZ2V0VmFyaWFibGU6KE5QTlVSTFZhcmlhYmxlKXYKICAgICAgICAgICAgICAgICpsZW5n
dGggPSBwcm94aWVzVVRGOC5sZW5ndGgoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOwotI2Vsc2UKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CkBAIC0yMzQx
LDcgKzIzMzYsNiBAQCAtIChCT09MKV9zaG91bGRDYW5jZWxTcmNTdHJlYW0KIC8vIEZvciBub3cs
IHdlJ2xsIGRpc3Rpbmd1aXNoIG9sZGVyIGJyb2tlbiB2ZXJzaW9ucyBvZiBTaWx2ZXJsaWdodCBi
eSBhc2tpbmcgdGhlIHBsdWctaW4gaWYgaXQgcmVzb2x2ZWQgaXRzIGZ1bGwgc2NyZWVuIGJhZG5l
c3MuCiAtICh2b2lkKV93b3JrYXJvdW5kU2lsdmVybGlnaHRGdWxsc2NyZWVuQnVnOihCT09MKWlu
aXRpYWxpemVkUGx1Z2luCiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDYwCiAgICAgQVNTRVJUKF9pc1NpbHZlcmxpZ2h0KTsKICAgICBOUEJvb2wgaXNGdWxsc2Ny
ZWVuUGVyZm9ybWFuY2VJc3N1ZUZpeGVkID0gMDsKICAgICBOUFBsdWdpbkZ1bmNzICpwbHVnaW5G
dW5jcyA9IFtfcGx1Z2luUGFja2FnZS5nZXQoKSBwbHVnaW5GdW5jc107CkBAIC0yMzY0LDcgKzIz
NTgsNiBAQCAtICh2b2lkKV93b3JrYXJvdW5kU2lsdmVybGlnaHRGdWxsc2NyZWVuCiAgICAgICAg
IGlmICghcmVmQ291bnQpIAogICAgICAgICAgICAgQ0dMUmVsZWFzZVBpeGVsRm9ybWF0KHBpeGVs
Rm9ybWF0T2JqZWN0KTsKICAgICB9Ci0jZW5kaWYKIH0KIAogLSAoTlBFcnJvcilfY3JlYXRlUGx1
Z2luCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiAxNDcyMjMp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBs
dWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNiBAQCAtIChCT09MKWNy
ZWF0ZVBsdWdpbgogCiAgICAgICAgIGlmIChhY2NsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkICYm
IF9wcm94eS0+cmVuZGVyZXJUeXBlKCkgPT0gVXNlQWNjZWxlcmF0ZWRDb21wb3NpdGluZykgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGFuZCBXZWJOZXRzY2FwZVBsdWdpblZpZXcuCi0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAgICAgICAvLyBT
aW5jZSB0aGlzIGxheWVyIGlzbid0IGdvaW5nIHRvIGJlIGluc2VydGVkIGludG8gYSB2aWV3LCB3
ZSBuZWVkIHRvIGNyZWF0ZSBhbm90aGVyIGxheWVyIGFuZCBmbGlwIGl0cyBnZW9tZXRyeQogICAg
ICAgICAgICAgLy8gaW4gb3JkZXIgdG8gZ2V0IHRoZSBjb29yZGluYXRlIHN5c3RlbSByaWdodC4K
ICAgICAgICAgICAgIFJldGFpblB0cjxDQUxheWVyPiByZWFsUGx1Z2luTGF5ZXIoQWRvcHROUywg
X3BsdWdpbkxheWVyLmxlYWtSZWYoKSk7CkBAIC0xMzYsNyArMTM1LDYgQEAgLSAoQk9PTCljcmVh
dGVQbHVnaW4KICAgICAgICAgICAgIAogICAgICAgICAgICAgcmVhbFBsdWdpbkxheWVyLmdldCgp
LmF1dG9yZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZSB8IGtDQUxheWVySGVpZ2h0
U2l6YWJsZTsKICAgICAgICAgICAgIFtfcGx1Z2luTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6cmVh
bFBsdWdpbkxheWVyLmdldCgpXTsKLSNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBFYWdlcmx5IGVudGVyIGNvbXBvc2l0aW5nIG1vZGUsIHNpbmNlIHdlIGtub3cgd2UnbGwgbmVl
ZCBpdC4gVGhpcyBhdm9pZHMgZmlyaW5nIHNldE5lZWRzU3R5bGVSZWNhbGMoKQogICAgICAgICAg
ICAgLy8gZm9yIGlmcmFtZXMgdGhhdCBjb250YWluIGNvbXBvc2l0ZWQgcGx1Z2lucyBhdCBiYWQg
dGltZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTAzMwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MzksMjAgKzgzOSwx
MiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEJsdXIoY29uCiAKIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7Ci0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgcmV0dXJuIGZh
bHNlOwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogfQogCiBib29sIFdlYkNocm9t
ZUNsaWVudDo6c2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigp
CiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgcmV0
dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBib29sIFdl
YkNocm9tZUNsaWVudDo6aGFzT3BlbmVkUG9wdXAoKSBjb25zdApJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNp
b24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OTIsNyArNzkyLDYgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaQogICAgIH0KIH0KIAotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tpbmdUeXBlTWFz
ayBjaGVja2luZ1R5cGVzKQogewogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3Vs
dHM7CkBAIC04NzEsMTYgKzg3MCwxMyBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gY29yZShOCiAKICAgICByZXR1cm4gcmVzdWx0czsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBs
ZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA2MAogICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5n
dGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107CiAgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRz
ID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRT
dHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNo
ZWNraW5nVHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGlu
U3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBo
eTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKICAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKICAgICBy
ZXN1bHRzID0gY29yZShpbmNvbWluZ1Jlc3VsdHMsIGNoZWNraW5nVHlwZXMpOwotI2VuZGlmCiB9
CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJp
bmcoY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBn
cmFtbWFyRGV0YWlsKQpAQCAtOTQ4LDcgKzk0NCw2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpz
ZXRJbnB1dE1ldGhvZFN0YXQKIHsKIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA2MAogQGludGVyZmFjZSBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIDog
TlNPYmplY3QKIHsKICAgICBXZWJFZGl0b3JDbGllbnQqIF9jbGllbnQ7CkBAIC05NzcsNyArOTcy
LDYgQEAgLSAodm9pZClwZXJmb3JtCiB9CiAKIEBlbmQKLSNlbmRpZgogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgTlNBcnJheSogcmVzdWx0cykK
IHsKQEAgLTk4OCw3ICs5ODIsNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNj
ZWVkKGluCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQ
YXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+IHJlcXVlc3QpCiB7Ci0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgQVNTRVJUKCFtX3Rl
eHRDaGVja2luZ1JlcXVlc3QpOwogICAgIG1fdGV4dENoZWNraW5nUmVxdWVzdCA9IHJlcXVlc3Q7
CiAKQEAgLTEwMDEsNSArOTk0LDQgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVj
a2luZ09mUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJF
ZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aENsaWVudDp0aGlzIHNlcXVl
bmNlOnNlcXVlbmNlIHJlc3VsdHM6cmVzdWx0c10gYXV0b3JlbGVhc2VdCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdDpOU0RlZmF1bHRSdW5Mb29wTW9kZV1dOwogICAgICAgICB9XTsKLSNlbmRp
ZgogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcubW0JKHJldmlzaW9uIDE0NzIyMykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00NDEsMTUgKzQ0MSw2IEBAIC0gKHZvaWQpcmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXc6KE5TQ2xp
cFYKICAgICAvLyBwb3NpdGlvbiB0byAwICh0aGUgbGVmdCkgd2hlbiB0aGUgdmlldyBpcyBpbml0
aWFsbHkgZGlzcGxheWVkLgogICAgIC8vIFRoaXMgY2FsbCB1cGRhdGVzIHRoZSBpbml0aWFsIHBv
c2l0aW9uIGNvcnJlY3RseS4KICAgICBbc2VsZiBhZGp1c3RGb3JTY3JvbGxPcmlnaW5DaGFuZ2Vd
OwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxm
IGRvY3VtZW50Vmlld107Ci0gICAgaWYgKFtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2Vi
SFRNTFZpZXcgY2xhc3NdXSkgewotICAgICAgICBXZWJIVE1MVmlldyAqaHRtbFZpZXcgPSAoV2Vi
SFRNTFZpZXcgKilkb2N1bWVudFZpZXc7Ci0gICAgICAgIGlmIChbaHRtbFZpZXcgX2lzVXNpbmdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nXSkKLSAgICAgICAgICAgIFtodG1sVmlldyBfdXBkYXRlTGF5
ZXJIb3N0aW5nVmlld1Bvc2l0aW9uXTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogLSAoQk9PTClhbGxv
d3NIb3Jpem9udGFsU2Nyb2xsaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE0NzIyMykKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQyMyw4ICs0MjMsNiBAQCAtICh2b2lkKWFuaW1hdGlvbkRpZEVuZDoo
TlNBbmltYXRpb24qKWFuCiAKIC0gKHZvaWQpX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVl
bgogewotICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlzIGF2YWlsYWJs
ZSBvbiA+IDEwLjYgb25seToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNjAKICAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNB
cHBsaWNhdGlvblByZXNlbnRhdGlvbkRlZmF1bHQ7CiAgICAgTlNTY3JlZW4qIGZ1bGxzY3JlZW5T
Y3JlZW4gPSBbW3NlbGYgd2luZG93XSBzY3JlZW5dOwogICAgIApAQCAtNDQ0LDcgKzQ0Miw2IEBA
IC0gKHZvaWQpX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbgogICAgIGlmIChbTlNBcHAg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQcmVzZW50YXRpb25PcHRpb25zOildKQog
ICAgICAgICBbTlNBcHAgc2V0UHJlc2VudGF0aW9uT3B0aW9uczpvcHRpb25zXTsKICAgICBlbHNl
Ci0jZW5kaWYKICAgICAgICAgU2V0U3lzdGVtVUlNb2RlKF9pc0Z1bGxTY3JlZW4gPyBrVUlNb2Rl
QWxsSGlkZGVuIDoga1VJTW9kZU5vcm1hbCwgMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg4LDkg
KzI4OCw2IEBAIC0gKEJPT0wpX2RyYXduQnlBbmNlc3RvcjsKIC0gKHZvaWQpX2ludmFsaWRhdGVH
U3RhdGVzRm9yVHJlZTsKIC0gKHZvaWQpX3Byb3BhZ2F0ZURpcnR5UmVjdHNUb09wYXF1ZUFuY2Vz
dG9yczsKIC0gKHZvaWQpX3dpbmRvd0NoYW5nZWRLZXlTdGF0ZTsKLSNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1
MAotLSAodm9pZClfdXBkYXRlTGF5ZXJHZW9tZXRyeUZyb21WaWV3OwotI2VuZGlmCiBAZW5kCiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC00MTQsOCArNDExLDYgQEAgLSAo
dm9pZClfd2ViX3NldFByaW50aW5nTW9kZVJlY3Vyc2l2ZUFuZAogLSAodm9pZClfd2ViX2NsZWFy
UHJpbnRpbmdNb2RlUmVjdXJzaXZlOwogQGVuZAogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDYwCi0KIEBpbnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYkhUTUxWaWV3
VGV4dENoZWNraW5nSW50ZXJuYWwpCiAtICh2b2lkKW9yZGVyRnJvbnRTdWJzdGl0dXRpb25zUGFu
ZWw6KGlkKXNlbmRlcjsKIC0gKEJPT0wpc21hcnRJbnNlcnREZWxldGVFbmFibGVkOwpAQCAtNDM4
LDggKzQzMyw2IEBAIC0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW4KIC0g
KHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CiBAZW5k
CiAKLSNlbmRpZgotCiBAaW50ZXJmYWNlIFdlYkhUTUxWaWV3IChXZWJGb3J3YXJkRGVjbGFyYXRp
b24pIC8vIEZJWE1FOiBQdXQgdGhpcyBpbiBhIG5vcm1hbCBjYXRlZ29yeSBhbmQgc3RvcCBkb2lu
ZyB0aGUgZm9yd2FyZCBkZWNsYXJhdGlvbiB0cmljay4KIC0gKHZvaWQpX3NldFByaW50aW5nOihC
T09MKXByaW50aW5nIG1pbmltdW1QYWdlTG9naWNhbFdpZHRoOihmbG9hdCltaW5QYWdlV2lkdGgg
bG9naWNhbEhlaWdodDooZmxvYXQpbWluUGFnZUhlaWdodCBvcmlnaW5hbFBhZ2VXaWR0aDooZmxv
YXQpcGFnZUxvZ2ljYWxXaWR0aCBvcmlnaW5hbFBhZ2VIZWlnaHQ6KGZsb2F0KXBhZ2VMb2dpY2Fs
SGVpZ2h0IG1heGltdW1TaHJpbmtSYXRpbzooZmxvYXQpbWF4aW11bVNocmlua1JhdGlvIGFkanVz
dFZpZXdTaXplOihCT09MKWFkanVzdFZpZXdTaXplIHBhZ2luYXRlU2NyZWVuQ29udGVudDooQk9P
TClwYWdpbmF0ZVNjcmVlbkNvbnRlbnQ7CiAtICh2b2lkKV91cGRhdGVTZWN1cmVJbnB1dFN0YXRl
OwpAQCAtNzk3LDE3ICs3OTAsNiBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50
RnJhZ21lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJy
ZXNvdXJjZXM6MF0pKQogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAKLSNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2Jq
ZWN0Ok5TUElDVFBib2FyZFR5cGVdICYmCi0gICAgICAgIChmcmFnbWVudCA9IFtzZWxmIF9kb2N1
bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yVHlwZTpOU1BJQ1RQYm9hcmRUeXBl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkNvbnRl
eHQ6Y29udGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VicmVzb3VyY2VzOjBdKSkKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotI2VuZGlmCi0KLSAg
ICAvLyBPbmx5IDEwLjUgYW5kIGhpZ2hlciBzdXBwb3J0IHNldHRpbmcgYW5kIHJldHJpZXZpbmcg
cGFzdGVib2FyZCB0eXBlcyB3aXRoIFVUSXMsIGJ1dCB3ZSBkb24ndCBiZWxpZXZlCi0gICAgLy8g
dGhhdCBhbnkgYXBwbGljYXRpb25zIG9uIFRpZ2VyIHB1dCB0eXBlcyBmb3Igd2hpY2ggd2Ugb25s
eSBoYXZlIGEgVVRJLCBsaWtlIFBORywgb24gdGhlIHBhc3RlYm9hcmQuCiAgICAgaWYgKFt0eXBl
cyBjb250YWluc09iamVjdDooTlNTdHJpbmcqKWtVVFR5cGVQTkddICYmCiAgICAgICAgIChmcmFn
bWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yVHlw
ZTooTlNTdHJpbmcqKWtVVFR5cGVQTkcKQEAgLTEyMzQsMTAgKzEyMTYsNiBAQCAtICh2b2lkKV9m
cmFtZU9yQm91bmRzQ2hhbmdlZAogICAgICAgICBbW3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJk
ZXJdIHdlYlZpZXc6d2ViVmlldyBkaWRTY3JvbGxEb2N1bWVudEluRnJhbWVWaWV3OltzZWxmIF9m
cmFtZVZpZXddXTsKICAgICB9CiAgICAgX3ByaXZhdGUtPmxhc3RTY3JvbGxQb3NpdGlvbiA9IG9y
aWdpbjsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgW3NlbGYgX3VwZGF0ZUxheWVySG9zdGlu
Z1ZpZXdQb3NpdGlvbl07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfc2V0QXNpZGVTdWJ2aWV3cwpA
QCAtMTY2MSw5ICsxNjM5LDYgQEAgKyAoTlNBcnJheSAqKV9pbnNlcnRhYmxlUGFzdGVib2FyZFR5
cGVzCiAgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gbmlsOwogICAgIGlmICghdHlwZXMpIHsK
ICAgICAgICAgdHlwZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJBcmNo
aXZlUGJvYXJkVHlwZSwgTlNIVE1MUGJvYXJkVHlwZSwgTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBO
U1RJRkZQYm9hcmRUeXBlLCBOU1BERlBib2FyZFR5cGUsCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgICAgICAgICBOU1BJQ1RQYm9hcmRUeXBlLAotI2Vu
ZGlmCiAgICAgICAgICAgICBOU1VSTFBib2FyZFR5cGUsIE5TUlRGRFBib2FyZFR5cGUsIE5TUlRG
UGJvYXJkVHlwZSwgTlNTdHJpbmdQYm9hcmRUeXBlLCBOU0NvbG9yUGJvYXJkVHlwZSwga1VUVHlw
ZVBORywgbmlsXTsKICAgICAgICAgQ0ZSZXRhaW4odHlwZXMpOwogICAgIH0KQEAgLTIwNTAsMjAg
KzIwMjUsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lCiAgICAg
ICAgIFtyZXNvdXJjZSByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogICAgIH0K
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBpZiAocGJv
YXJkVHlwZSA9PSBOU1BJQ1RQYm9hcmRUeXBlKSB7Ci0gICAgICAgIFdlYlJlc291cmNlICpyZXNv
dXJjZSA9IFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbcGFzdGVib2FyZCBkYXRh
Rm9yVHlwZTpOU1BJQ1RQYm9hcmRUeXBlXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6dW5pcXVlVVJMV2l0aFJlbGF0aXZl
UGFydChAImltYWdlLnBpY3QiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJpbWFnZS9waWN0IiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1lOm5p
bAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFtZU5hbWU6bmlsXTsKLSAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQg
PSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6
cmVzb3VyY2VdOwotICAgICAgICBbcmVzb3VyY2UgcmVsZWFzZV07Ci0gICAgICAgIHJldHVybiBm
cmFnbWVudDsKLSAgICB9Ci0jZW5kaWYKLSAgICAvLyBPbmx5IDEwLjUgYW5kIGhpZ2hlciBzdXBw
b3J0IHNldHRpbmcgYW5kIHJldHJpZXZpbmcgcGFzdGVib2FyZCB0eXBlcyB3aXRoIFVUSXMsIGJ1
dCB3ZSBkb24ndCBiZWxpZXZlCi0gICAgLy8gdGhhdCBhbnkgYXBwbGljYXRpb25zIG9uIFRpZ2Vy
IHB1dCB0eXBlcyBmb3Igd2hpY2ggd2Ugb25seSBoYXZlIGEgVVRJLCBsaWtlIFBORywgb24gdGhl
IHBhc3RlYm9hcmQuCisKICAgICBpZiAoW3Bib2FyZFR5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0
cmluZyopa1VUVHlwZVBOR10pIHsKICAgICAgICAgV2ViUmVzb3VyY2UgKnJlc291cmNlID0gW1tX
ZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOltwYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOihO
U1N0cmluZyopa1VUVHlwZVBOR10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOnVuaXF1ZVVSTFdpdGhSZWxhdGl2ZVBhcnQo
QCJpbWFnZS5wbmciKQpAQCAtMjcwMyw3ICsyNjY1LDYgQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dAogICAgICAgICByZXR1cm4gWUVTOwogICAgIH0KIAotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIGlmIChhY3Rpb24gPT0g
QHNlbGVjdG9yKG9yZGVyRnJvbnRTdWJzdGl0dXRpb25zUGFuZWw6KSkgewogICAgICAgICBOU01l
bnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKICAgICAgICAgaWYgKFttZW51
SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKQEAgLTI3NTMsOCArMjcx
NCw3IEBAIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXQKICAgICAgICAg
ICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWRdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgICAgIHJldHVybiBbc2Vs
ZiBfY2FuRWRpdF07CiAgICAgfQotI2VuZGlmCi0gICAgCisKICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IFtzZWxmIGNvcmVDb21tYW5kQnlTZWxlY3RvcjphY3Rpb25dOwogICAgIGlmIChj
b21tYW5kLmlzU3VwcG9ydGVkKCkpIHsKICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAo
TlNNZW51SXRlbSAqKWl0ZW07CkBAIC00OTAxLDEyICs0ODYxLDcgQEAgLSAodm9pZCljaGFuZ2VC
YXNlV3JpdGluZ0RpcmVjdGlvbjooaWQpcwogCiBzdGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9u
S2V5QmluZGluZ3NFbmFibGVkKCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjAKICAgICByZXR1cm4gWUVTOwotI2Vsc2UKLSAgICBOU1VzZXJEZWZhdWx0cyAq
ZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwotICAgIHJl
dHVybiBbZGVmYXVsdHMgYm9vbEZvcktleTpAIk5TQWxsb3dzQmFzZVdyaXRpbmdEaXJlY3Rpb25L
ZXlCaW5kaW5ncyJdIHx8IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiQXBwbGVUZXh0RGlyZWN0aW9u
Il07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfY2hhbmdlQmFzZVdyaXRpbmdEaXJlY3Rpb25Ubzoo
TlNXcml0aW5nRGlyZWN0aW9uKWRpcmVjdGlvbgpAQCAtNDkzOSwxOCArNDg5NCw2IEBAIC0gKHZv
aWQpbWFrZUJhc2VXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0wKICAgICBbc2VsZiBfY2hhbmdlQmFz
ZVdyaXRpbmdEaXJlY3Rpb25UbzpOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdF07CiB9CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLS0gKHZvaWQpY2hh
bmdlQmFzZVdyaXRpbmdEaXJlY3Rpb25Ub0xUUjooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgbWFr
ZUJhc2VXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQ6c2VuZGVyXTsKLX0KLQotLSAodm9pZClj
aGFuZ2VCYXNlV3JpdGluZ0RpcmVjdGlvblRvUlRMOihpZClzZW5kZXIKLXsKLSAgICBbc2VsZiBt
YWtlQmFzZVdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDpzZW5kZXJdOwotfQotI2VuZGlmCi0K
IC0gKHZvaWQpbWFrZUJhc2VXcml0aW5nRGlyZWN0aW9uTmF0dXJhbDooaWQpc2VuZGVyCiB7CiAg
ICAgTE9HX0VSUk9SKCJTZW50IGZyb20gJUAuIiwgc2VuZGVyKTsKQEAgLTUxNTMsOSArNTA5Niw2
IEBAIHN0YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50Rm8KICAgICByZXR1cm4g
Q0dQb2ludE1ha2UocG9pbnQueCwgTlNNYXhZKFsoTlNTY3JlZW4gKilbc2NyZWVucyBvYmplY3RB
dEluZGV4OjBdIGZyYW1lXSkgLSBwb2ludC55KTsKIH0KIAotCi0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCi0KIC0gKHZvaWQpb3JkZXJGcm9udFN1YnN0aXR1dGlv
bnNQYW5lbDooaWQpc2VuZGVyCiB7CiAgICAgQ09NTUFORF9QUk9MT0dVRQpAQCAtNTI2Nyw4ICs1
MjA3LDYgQEAgLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3RpbwogICAgIFtb
c2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOnNlbmRlcl07
CiB9CiAKLSNlbmRpZgotCiAtICh2b2lkKV9sb29rVXBJbkRpY3Rpb25hcnlGcm9tTWVudTooaWQp
c2VuZGVyCiB7CiAgICAgLy8gRGljdGlvbmFyeSBBUEkgd2lsbCBhY2NlcHQgYSB3aGl0ZXNwYWNl
LW9ubHkgc3RyaW5nIGFuZCBkaXNwbGF5IFVJIGFzIGlmIGl0IHdlcmUgcmVhbCB0ZXh0LApAQCAt
NTI4OSw0NCArNTIyNyw3IEBAIC0gKHZvaWQpX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Oihp
ZCkKICAgICBpZiAoZm9udCkKICAgICAgICAgcmVjdC5vcmlnaW4ueSArPSBbZm9udCBhc2NlbmRl
cl07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBb
c2VsZiBzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmc6YXR0clN0cmluZyBhdFBvaW50
OnJlY3Qub3JpZ2luXTsKLSAgICByZXR1cm47Ci0jZW5kaWYKLQotICAgIC8vIFdlIHNvZnQgbGlu
ayB0byBnZXQgdGhlIGZ1bmN0aW9uIHRoYXQgZGlzcGxheXMgdGhlIGRpY3Rpb25hcnkgKGVpdGhl
ciBwb3AtdXAgd2luZG93IG9yIGFwcCkgdG8gYXZvaWQgdGhlIHBlcmZvcm1hbmNlCi0gICAgLy8g
cGVuYWx0eSBvZiBsaW5raW5nIHRvIGFub3RoZXIgZnJhbWV3b3JrLiBUaGlzIGZ1bmN0aW9uIGNo
YW5nZWQgc2lnbmF0dXJlIGFzIHdlbGwgYXMgZnJhbWV3b3JrIGJldHdlZW4gVGlnZXIgYW5kIExl
b3BhcmQsCi0gICAgLy8gc28gdGhlIHR3byBjYXNlcyBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5Lgot
Ci0gICAgdHlwZWRlZiB2b2lkICgqU2VydmljZVdpbmRvd1Nob3dGdW5jdGlvbikoaWQgdW51c2Vk
RGljdGlvbmFyeVJlZiwgaWQgaW5Xb3JkU3RyaW5nLCBDRlJhbmdlIHNlbGVjdGlvblJhbmdlLCBp
ZCB1bnVzZWRGb250LCBDR1BvaW50IHRleHRPcmlnaW4sIEJvb2xlYW4gdmVydGljYWxUZXh0LCBp
ZCB1bnVzZWRUcmFuc2Zvcm0pOwotICAgIGNvbnN0IGNoYXIgKmZyYW1ld29ya1BhdGggPSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSElUb29sYm94IjsKLSAgICBjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUg
PSAiSElEaWN0aW9uYXJ5V2luZG93U2hvdyI7Ci0KLSAgICBzdGF0aWMgYm9vbCBsb29rZWRGb3JG
dW5jdGlvbiA9IGZhbHNlOwotICAgIHN0YXRpYyBTZXJ2aWNlV2luZG93U2hvd0Z1bmN0aW9uIGRp
Y3Rpb25hcnlTZXJ2aWNlV2luZG93U2hvdyA9IE5VTEw7Ci0KLSAgICBpZiAoIWxvb2tlZEZvckZ1
bmN0aW9uKSB7Ci0gICAgICAgIHZvaWQqIGxhbmdBbmFseXNpc0ZyYW1ld29yayA9IGRsb3Blbihm
cmFtZXdvcmtQYXRoLCBSVExEX0xBWlkpOwotICAgICAgICBBU1NFUlQobGFuZ0FuYWx5c2lzRnJh
bWV3b3JrKTsKLSAgICAgICAgaWYgKGxhbmdBbmFseXNpc0ZyYW1ld29yaykKLSAgICAgICAgICAg
IGRpY3Rpb25hcnlTZXJ2aWNlV2luZG93U2hvdyA9IChTZXJ2aWNlV2luZG93U2hvd0Z1bmN0aW9u
KWRsc3ltKGxhbmdBbmFseXNpc0ZyYW1ld29yaywgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgbG9v
a2VkRm9yRnVuY3Rpb24gPSB0cnVlOwotICAgIH0KLQotICAgIEFTU0VSVChkaWN0aW9uYXJ5U2Vy
dmljZVdpbmRvd1Nob3cpOwotICAgIGlmICghZGljdGlvbmFyeVNlcnZpY2VXaW5kb3dTaG93KSB7
Ci0gICAgICAgIE5TTG9nKEAiQ291bGRuJ3QgZmluZCB0aGUgJXMgZnVuY3Rpb24gaW4gJXMiLCBm
dW5jdGlvbk5hbWUsIGZyYW1ld29ya1BhdGgpOyAKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIC8vIFRoZSBISURpY3Rpb25hcnlXaW5kb3dTaG93IGZ1bmN0aW9uIHJlcXVpcmVzIHRoZSBv
cmlnaW4sIGluIENHIHNjcmVlbiBjb29yZGluYXRlcywgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBv
ZiB0ZXh0IGluIHRoZSBzZWxlY3Rpb24uCi0gICAgLy8gRklYTUUgNDk0NTgwODogV2UgYXBwcm94
aW1hdGUgdGhpcyBpbiBhIHdheSB0aGF0IHdvcmtzIHdlbGwgd2hlbiBhIHNpbmdsZSB3b3JkIGlz
IHNlbGVjdGVkLCBhbmQgbGVzcyB3ZWxsIGluIHNvbWUgb3RoZXIgY2FzZXMKLSAgICAvLyAoYnV0
IG5vIHdvcnNlIHRoYW4gd2UgZGlkIGluIFRpZ2VyKQotICAgIE5TUG9pbnQgd2luZG93UG9pbnQg
PSBbc2VsZiBjb252ZXJ0UG9pbnQ6cmVjdC5vcmlnaW4gdG9WaWV3Om5pbF07Ci0gICAgTlNQb2lu
dCBzY3JlZW5Qb2ludCA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRCYXNlVG9TY3JlZW46d2luZG93
UG9pbnRdOwotCi0gICAgZGljdGlvbmFyeVNlcnZpY2VXaW5kb3dTaG93KG5pbCwgYXR0clN0cmlu
ZywgQ0ZSYW5nZU1ha2UoMCwgW2F0dHJTdHJpbmcgbGVuZ3RoXSksIG5pbCwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcmVHcmFwaGljc1NjcmVlblBvaW50Rm9yQXBwS2l0U2Ny
ZWVuUG9pbnQoc2NyZWVuUG9pbnQpLCBmYWxzZSwgbmlsKTsKIH0KIAogLSAodm9pZClfZXhlY3V0
ZVNhdmVkS2V5cHJlc3NDb21tYW5kcwpAQCAtNTQ3OSw5ICs1MzgwLDcgQEAgLSAodm9pZClhdHRh
Y2hSb290TGF5ZXI6KENBTGF5ZXIqKWxheWVyCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+bGF5ZXJI
b3N0aW5nVmlldykgewogICAgICAgICBOU1ZpZXcqIGhvc3RpbmdWaWV3ID0gW1tXZWJMYXllckhv
c3RpbmdGbGlwcGVkVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbc2VsZiBib3VuZHNdXTsKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICAgICAgW2hvc3Rp
bmdWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hl
aWdodFNpemFibGUpXTsKLSNlbmRpZgogICAgICAgICBbc2VsZiBhZGRTdWJ2aWV3Omhvc3RpbmdW
aWV3XTsKICAgICAgICAgW2hvc3RpbmdWaWV3IHJlbGVhc2VdOwogICAgICAgICAvLyBob3N0aW5n
VmlldyBpcyBvd25lZCBieSBiZWluZyBhIHN1YnZpZXcgb2Ygc2VsZgpAQCAtNTQ5MSwyMyArNTM5
MCw2IEBAIC0gKHZvaWQpYXR0YWNoUm9vdExheWVyOihDQUxheWVyKilsYXllcgogICAgIC8vIE1h
a2UgYSBjb250YWluZXIgbGF5ZXIsIHdoaWNoIHdpbGwgZ2V0IHNpemVkL3Bvc2l0aW9uZWQgYnkg
QXBwS2l0IGFuZCBDQS4KICAgICBDQUxheWVyKiB2aWV3TGF5ZXIgPSBbV2ViUm9vdExheWVyIGxh
eWVyXTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAg
IC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9ucy4KLSAgICBOU051bGwgKm51bGxWYWx1ZSA9
IFtOU051bGwgbnVsbF07Ci0gICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zID0gW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxsVmFsdWUsIEAiYW5jaG9yUG9pbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxsVmFsdWUsIEAiYm91bmRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbFZhbHVlLCBAImNvbnRlbnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bFZhbHVlLCBAImNvbnRlbnRzUmVjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxWYWx1ZSwgQCJvcGFjaXR5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZh
bHVlLCBAInBvc2l0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVl
LCBAInN1YmxheWVyVHJhbnNmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bFZhbHVlLCBAInN1YmxheWVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJ0cmFuc2Zvcm0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwot
ICAgIFt2aWV3TGF5ZXIgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dDphY3Rpb25zIGZvcktleTpAImFjdGlvbnMiXV07Ci0jZW5kaWYKLQogICAgIGlmIChbc2VsZiBs
YXllcl0pIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIGluIGEgbGF5ZXItYmFja2VkIHZpZXcsIHdl
IG5lZWQgdG8gbWFudWFsbHkgaW5pdGlhbGl6ZSB0aGUgZ2VvbWV0cnkgZm9yIG91ciBsYXllci4K
ICAgICAgICAgW3ZpZXdMYXllciBzZXRCb3VuZHM6TlNSZWN0VG9DR1JlY3QoW19wcml2YXRlLT5s
YXllckhvc3RpbmdWaWV3IGJvdW5kc10pXTsKQEAgLTU1MjQsMTEgKzU0MDYsOCBAQCAtICh2b2lk
KWF0dGFjaFJvb3RMYXllcjooQ0FMYXllciopbGF5ZXIKICAgICAKICAgICBpZiAoW1tzZWxmIF93
ZWJWaWV3XSBfcG9zdHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nTm90aWZpY2F0aW9uc10pCiAgICAg
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6X1dlYlZpZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3RpZmljYXRpb24g
b2JqZWN0OltzZWxmIF93ZWJWaWV3XSB1c2VySW5mbzpuaWxdOwotICAgIAotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIFt2aWV3TGF5ZXIgc2V0U3VibGF5
ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZSgxLCAtMSwgMSldOyAvLyBzZXRHZW9t
ZXRyeUZsaXBwZWQ6IGRvZXNuJ3QgZXhpc3Qgb24gTGVvcGFyZC4KLSAgICBbc2VsZiBfdXBkYXRl
TGF5ZXJIb3N0aW5nVmlld1Bvc2l0aW9uXTsKLSNlbGlmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPD0gMTA3MAorCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
PSAxMDcwCiAgICAgLy8gRG8gZ2VvbWV0cnkgZmxpcHBpbmcgaGVyZSwgd2hpY2ggZmxpcHMgYWxs
IHRoZSBjb21wb3NpdGluZyBsYXllcnMgc28gdGhleSBhcmUgdG9wLWRvd24uCiAgICAgW3ZpZXdM
YXllciBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKICNlbHNlCkBAIC01NTQ3LDM2ICs1NDI2LDYg
QEAgLSAodm9pZClkZXRhY2hSb290TGF5ZXIKICAgICB9CiB9CiAKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLS8vIFRoaXMgbWV0aG9kIGlzIG5lY2Vzc2FyeSBv
biBMZW9wYXJkIHRvIHdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS83MDY3ODkyPi4KLS0gKHZv
aWQpX3VwZGF0ZUxheWVySG9zdGluZ1ZpZXdQb3NpdGlvbgotewotICAgIGlmICghX3ByaXZhdGUt
PmxheWVySG9zdGluZ1ZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBjb25zdCBDR0Zs
b2F0IG1heEhlaWdodCA9IDIwNDg7Ci0gICAgTlNSZWN0IGxheWVyVmlld0ZyYW1lID0gW3NlbGYg
Ym91bmRzXTsKLQotICAgIGlmIChsYXllclZpZXdGcmFtZS5zaXplLmhlaWdodCA+IG1heEhlaWdo
dCkgewotICAgICAgICAvLyBDbGFtcCB0aGUgc2l6ZSBvZiB0aGUgdmlldyB0byA8PSBtYXhIZWln
aHQgdG8gYXZvaWQgdGhlIGJ1Zy4KLSAgICAgICAgbGF5ZXJWaWV3RnJhbWUuc2l6ZS5oZWlnaHQg
PSBtYXhIZWlnaHQ7Ci0gICAgICAgIE5TUmVjdCB2aXNpYmxlUmVjdCA9IFtbc2VsZiBlbmNsb3Np
bmdTY3JvbGxWaWV3XSBkb2N1bWVudFZpc2libGVSZWN0XTsKLSAgICAgICAgCi0gICAgICAgIC8v
IFBsYWNlIHRoZSB0b3Agb2YgdGhlIGxheWVyLWhvc3RpbmcgdmlldyBhdCB0aGUgdG9wIG9mIHRo
ZSB2aXNpYmxlUmVjdC4KLSAgICAgICAgQ0dGbG9hdCB0b3BPZmZzZXQgPSBOU01pblkodmlzaWJs
ZVJlY3QpOwotICAgICAgICBsYXllclZpZXdGcmFtZS5vcmlnaW4ueSA9IHRvcE9mZnNldDsKLQot
ICAgICAgICAvLyBDb21wZW5zYXRlIGZvciB0aGUgbW92ZWQgdmlldyBieSBhZGp1c3RpbmcgdGhl
IHN1YmxheWVyIHRyYW5zZm9ybSBvbiB0aGUgdmlldydzIGxheWVyICh1c2luZyBmbGlwcGVkIGNv
b3JkcykuCi0gICAgICAgIENBVHJhbnNmb3JtM0QgZmxpcFRyYW5zZm9ybSA9IENBVHJhbnNmb3Jt
M0RNYWtlVHJhbnNsYXRpb24oMCwgdG9wT2Zmc2V0LCAwKTsKLSAgICAgICAgZmxpcFRyYW5zZm9y
bSA9IENBVHJhbnNmb3JtM0RTY2FsZShmbGlwVHJhbnNmb3JtLCAxLCAtMSwgMSk7Ci0gICAgICAg
IFtbX3ByaXZhdGUtPmxheWVySG9zdGluZ1ZpZXcgbGF5ZXJdIHNldFN1YmxheWVyVHJhbnNmb3Jt
OmZsaXBUcmFuc2Zvcm1dOwotICAgIH0KLQotICAgIFtfcHJpdmF0ZS0+bGF5ZXJIb3N0aW5nVmll
dyBfdXBkYXRlTGF5ZXJHZW9tZXRyeUZyb21WaWV3XTsgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFy
Oi8vcHJvYmxlbS83MDcxNjM2PgotICAgIFtfcHJpdmF0ZS0+bGF5ZXJIb3N0aW5nVmlldyBzZXRG
cmFtZTpsYXllclZpZXdGcmFtZV07Ci19Ci0jZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA9PSAxMDUwCi0KIC0gKHZvaWQpZHJhd0xheWVyOihDQUxheWVyICopbGF5ZXIg
aW5Db250ZXh0OihDR0NvbnRleHRSZWYpY3R4CiB7CiAgICAgaWYgKF9wcml2YXRlKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAko
cmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
d0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDQgQEAgQGludGVyZmFjZSBX
ZWJIVE1MVmlldyAoV2ViSW50ZXJuYWwpCiAtIChCT09MKV93ZWJfaXNEcmF3aW5nSW50b0xheWVy
OwogI2VuZGlmCiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotLSAodm9pZClfdXBkYXRlTGF5ZXJIb3N0
aW5nVmlld1Bvc2l0aW9uOwotI2VuZGlmCi0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQkocmV2aXNpb24gMTQ3MjIz
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDYgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPFBERktpdC9QREZEb2N1bWVudC5oPgogCi0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi1AaW50ZXJmYWNlIFBERkRvY3VtZW50IChJbnRlcm5h
bCkKLS0gKENHUERGRG9jdW1lbnRSZWYpZG9jdW1lbnRSZWY7Ci1AZW5kCi0jZW5kaWYKLQogc3Rh
dGljIHZvaWQgYXBwZW5kVmFsdWVzSW5QREZOYW1lU3VidHJlZVRvVmVjdG9yKENHUERGRGljdGlv
bmFyeVJlZiBzdWJ0cmVlLCBWZWN0b3I8Q0dQREZPYmplY3RSZWY+JiB2YWx1ZXMpCiB7CiAgICAg
Q0dQREZBcnJheVJlZiBuYW1lczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzU0LDExICszNTQs
NyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQCIwIiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQREZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXksCiAgICAgICAgIEAiMCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlU2l0ZVNwZWNpZmljU3Bvb2ZpbmdQ
cmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJLaXRFZGl0
YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3JdLCBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZl
cmVuY2VLZXksCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYlRleHREaXJlY3Rpb25TdWJtZW51QXV0
b21hdGljYWxseUluY2x1ZGVkXSwKLSNlbHNlCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
SW50OldlYlRleHREaXJlY3Rpb25TdWJtZW51TmV2ZXJJbmNsdWRlZF0sCi0jZW5kaWYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRUZXh0RGlyZWN0aW9uU3Vi
bWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5LAog
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdFVzZXNQYWdlQ2Fj
aGVQcmVmZXJlbmNlS2V5LApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNv
dXJjZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZUludGVybmFsLmgJKHJldmlzaW9uIDE0NzIyMykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
MCArMjksNiBAQAogI2ltcG9ydCAiV2ViUmVzb3VyY2VQcml2YXRlLmgiCiAjaW1wb3J0IDx3dGYv
UGFzc1JlZlB0ci5oPgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAx
MDUwCi0jZGVmaW5lIE1BSUxfVEhSRUFEX1dPUktBUk9VTkQgMQotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CiB9CkBAIC00MSwxNiArMzcs
MyBAQCBAaW50ZXJmYWNlIFdlYlJlc291cmNlIChXZWJSZXNvdXJjZUludGVyCiAtIChpZClfaW5p
dFdpdGhDb3JlUmVzb3VyY2U6KFBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPilj
b3JlUmVzb3VyY2U7CiAtIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2UqKV9jb3JlUmVzb3VyY2U7
CiBAZW5kCi0KLSNpZmRlZiBNQUlMX1RIUkVBRF9XT1JLQVJPVU5ECi0KLUBpbnRlcmZhY2UgV2Vi
UmVzb3VyY2UgKFdlYk1haWxUaHJlYWRXb3JrYXJvdW5kKQotKyAoQk9PTClfbmVlZE1haWxUaHJl
YWRXb3JrYXJvdW5kSWZDYWxsZWRPZmZNYWluVGhyZWFkOwotQGVuZAotCi1pbmxpbmUgYm9vbCBu
ZWVkTWFpbFRocmVhZFdvcmthcm91bmQoKQotewotICAgIHJldHVybiAhcHRocmVhZF9tYWluX25w
KCkgJiYgW1dlYlJlc291cmNlIF9uZWVkTWFpbFRocmVhZFdvcmthcm91bmRJZkNhbGxlZE9mZk1h
aW5UaHJlYWRdOwotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNDcyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLXR5
cGVkZWYgaW50IFdlYlNvdXJjZUlkOwotI2Vsc2UKIHR5cGVkZWYgaW50cHRyX3QgV2ViU291cmNl
SWQ7Ci0jZW5kaWYKIAogQGNsYXNzIFdlYlZpZXc7CiBAY2xhc3MgV2ViRnJhbWU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNDcyMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw4
ICs0NDAsNiBAQCAtICh2b2lkKV9jbGVhckdsaWJMb29wT2JzZXJ2ZXI7CiAjZW5kaWYKIEBlbmQK
IAotc3RhdGljIHZvaWQgcGF0Y2hNYWlsUmVtb3ZlQXR0cmlidXRlc01ldGhvZCgpOwotCiBOU1N0
cmluZyAqV2ViRWxlbWVudERPTU5vZGVLZXkgPSAgICAgICAgICAgIEAiV2ViRWxlbWVudERPTU5v
ZGUiOwogTlNTdHJpbmcgKldlYkVsZW1lbnRGcmFtZUtleSA9ICAgICAgICAgICAgICBAIldlYkVs
ZW1lbnRGcmFtZSI7CiBOU1N0cmluZyAqV2ViRWxlbWVudEltYWdlS2V5ID0gICAgICAgICAgICAg
IEAiV2ViRWxlbWVudEltYWdlIjsKQEAgLTUwMiwxMyArNTAwLDExIEBAIEBpbnRlcmZhY2UgV2Vi
UHJvZ3Jlc3NJdGVtIDogTlNPYmplY3QKIAogc3RhdGljIEJPT0wgY29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkOwogc3RhdGljIEJPT0wgZ3JhbW1hckNoZWNraW5nRW5hYmxlZDsKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIHN0YXRpYyBCT09MIGF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDsKIHN0YXRpYyBCT09MIGF1dG9tYXRpY0xpbmtE
ZXRlY3Rpb25FbmFibGVkOwogc3RhdGljIEJPT0wgYXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVu
YWJsZWQ7CiBzdGF0aWMgQk9PTCBhdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOwogc3Rh
dGljIEJPT0wgYXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKLSNlbmRpZgogCiBA
aW1wbGVtZW50YXRpb24gV2ViVmlldyAoQWxsV2ViVmlld3MpCiAKQEAgLTYxOSwyNCArNjE1LDYg
QEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uQwogICAgIGluaXRpYWxp
emVkID0gWUVTOwogfQogCi1zdGF0aWMgYm9vbCBydW5uaW5nTGVvcGFyZE1haWwoKQotewotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBhcHBs
aWNhdGlvbklzQXBwbGVNYWlsKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gTk87Ci19Ci0KLXN0YXRp
YyBib29sIGNvcmVWaWRlb0hhczcyMjg4MzZGaXgoKQotewotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIE5TQnVuZGxlKiBjb3JlVmlkZW9GcmFtZXdvcmtC
dW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6QCIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrIl07Ci0gICAgZG91YmxlIHZlcnNpb24gPSBbW2NvcmVW
aWRlb0ZyYW1ld29ya0J1bmRsZSBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleTooTlNTdHJpbmcg
KilrQ0ZCdW5kbGVWZXJzaW9uS2V5XSBkb3VibGVWYWx1ZV07Ci0gICAgcmV0dXJuICh2ZXJzaW9u
ID49IDQ4KTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgYm9vbCBzaG91
bGRFbmFibGVMb2FkRGVmZXJyaW5nKCkKIHsKICAgICByZXR1cm4gIWFwcGxpY2F0aW9uSXNBZG9i
ZUluc3RhbGxlcigpOwpAQCAtNjcyLDEzICs2NTAsNiBAQCBzdGF0aWMgTlNTdHJpbmcgKmxlYWtN
YWlsUXVpcmtzVXNlclNjcmlwCiAgICAgcmV0dXJuIFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
Q29udGVudHNPZkZpbGU6c2NyaXB0UGF0aCB1c2VkRW5jb2Rpbmc6JmVuY29kaW5nIGVycm9yOjBd
OwogfQogCi0tICh2b2lkKV9pbmplY3RNYWlsUXVpcmtzU2NyaXB0Ci17Ci0gICAgc3RhdGljIE5T
U3RyaW5nICptYWlsUXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrTWFpbFF1aXJrc1VzZXJTY3Jp
cHRDb250ZW50cygpOwotICAgIGNvcmUoc2VsZiktPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29y
bGQoY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwKLSAgICAgICAgbWFpbFF1aXJrc1Njcmlw
dENvbnRlbnRzLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIElu
amVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKTsKLX0KLQogc3RhdGljIGJvb2wg
bmVlZHNPdXRsb29rUXVpcmtzU2NyaXB0KCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc091dGxvb2tO
ZWVkaW5nUXVpcmtzU2NyaXB0ID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1Rf
VkVSU0lPTl9XSVRIX0hUTUw1X1BBUlNFUikKQEAgLTc0Nyw3ICs3MTgsNiBAQCAtICh2b2lkKV9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAKICAgICAgICAgV2ViS2l0SW5pdGlhbGl6
ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgpOwogICAgICAgICBXZWJLaXRJbml0aWFsaXplQXBwbGljYXRp
b25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpOwotICAgICAgICBwYXRjaE1haWxSZW1vdmVBdHRyaWJ1
dGVzTWV0aG9kKCk7CiAgICAgICAgIAogICAgICAgICBTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRP
TVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogICAgICAgICAKQEAgLTgzOSw5ICs4MDksNiBAQCAtICh2
b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaWYgVVNFKEdMSUIpCiAgICAg
W3NlbGYgX3NjaGVkdWxlR2xpYkNvbnRleHRJdGVyYXRpb25zXTsKICNlbmRpZgotCi0gICAgaWYg
KHJ1bm5pbmdMZW9wYXJkTWFpbCgpKQotICAgICAgICBbc2VsZiBfaW5qZWN0TWFpbFF1aXJrc1Nj
cmlwdF07CiB9CiAKIC0gKGlkKV9pbml0V2l0aEZyYW1lOihOU1JlY3QpZiBmcmFtZU5hbWU6KE5T
U3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUgdXNlc0Rv
Y3VtZW50Vmlld3M6KEJPT0wpdXNlc0RvY3VtZW50Vmlld3MKQEAgLTE1MDksNyArMTQ3Niw3IEBA
IC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy0+
c2V0TmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsoW3NlbGYgX25lZWRzQWRvYmVGcmFtZVJl
bG9hZGluZ1F1aXJrXSk7CiAgICAgc2V0dGluZ3MtPnNldFRyZWF0c0FueVRleHRDU1NMaW5rQXNT
dHlsZXNoZWV0KFtzZWxmIF9uZWVkc0xpbmtFbGVtZW50VGV4dENTU1F1aXJrXSk7CiAgICAgc2V0
dGluZ3MtPnNldE5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzKFtzZWxmIF9u
ZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrc10pOwotICAgIHNldHRpbmdzLT5z
ZXROZWVkc0xlb3BhcmRNYWlsUXVpcmtzKHJ1bm5pbmdMZW9wYXJkTWFpbCgpKTsKKyAgICBzZXR0
aW5ncy0+c2V0TmVlZHNMZW9wYXJkTWFpbFF1aXJrcyhmYWxzZSk7CiAgICAgc2V0dGluZ3MtPnNl
dE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKF9wcml2YXRlLT51c2VTaXRlU3BlY2lmaWNTcG9vZmlu
Zyk7CiAgICAgc2V0dGluZ3MtPnNldFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkKFtwcmVmZXJl
bmNlcyB3ZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRMb2Nh
bEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBsb2NhbEZpbGVDb250ZW50
U25pZmZpbmdFbmFibGVkXSk7CkBAIC0xNTIxLDggKzE0ODgsNyBAQCAtICh2b2lkKV9wcmVmZXJl
bmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgCiAgICAgLy8gRklYTUU6IEVuYWJsaW5nIGFj
Y2VsZXJhdGVkIGNvbXBvc2l0aW5nIHdoZW4gV2ViR0wgaXMgZW5hYmxlZCBjYXVzZXMgdGVzdHMg
dG8gZmFpbCBvbiBMZW9wYXJkIHdoaWNoIGV4cGVjdCBIVyBjb21wb3NpdGluZyB0byBiZSBkaXNh
YmxlZC4KICAgICAvLyBVbnRpbCB3ZSBmaXggdGhhdCwgSSB3aWxsIGNvbW1lbnQgb3V0IHRoZSB0
ZXN0IChDRk0pCi0gICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KChjb3JlVmlkZW9IYXM3MjI4ODM2Rml4KCkgfHwgW3ByZWZlcmVuY2VzIHdlYkdMRW5hYmxlZF0g
fHwgCi0gICAgICAgIFtwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZF0pICYm
IFtwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZF0pOworICAgIHNldHRp
bmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRE
cmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZF0pOwog
ICAgIHNldHRpbmdzLT5zZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKFtwcmVmZXJlbmNl
cyBjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nXSk7ICAgIAogICAgIHNldHRpbmdzLT5zZXRT
aG93RGVidWdCb3JkZXJzKFtwcmVmZXJlbmNlcyBzaG93RGVidWdCb3JkZXJzXSk7CkBAIC0xNTQ2
LDEwICsxNTEyLDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbgog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzZXR0aW5ncy0+c2V0RnVsbFNjcmVlbkVu
YWJsZWQoW3ByZWZlcmVuY2VzIGZ1bGxTY3JlZW5FbmFibGVkXSk7CiAjZW5kaWYKLSNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICAvLyBBc3luY2hyb25vdXMg
c3BlbGwgY2hlY2tpbmcgQVBJIGlzIGF2YWlsYWJsZSBmb3IgMTAuNiBvciBsYXRlci4KICAgICBz
ZXR0aW5ncy0+c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoW3ByZWZlcmVuY2Vz
IGFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkXSk7Ci0jZW5kaWYKICAgICBzZXR0aW5n
cy0+c2V0TWVtb3J5SW5mb0VuYWJsZWQoW3ByZWZlcmVuY2VzIG1lbW9yeUluZm9FbmFibGVkXSk7
CiAgICAgc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMg
aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldFVzZVByZUhUTUw1
UGFyc2VyUXVpcmtzKFtzZWxmIF9uZWVkc1ByZUhUTUw1UGFyc2VyUXVpcmtzXSk7CkBAIC0zMTg0
LDEzICszMTQ3LDExIEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogCiAgICAgRm9udDo6c2V0RGVmYXVs
dFR5cGVzZXR0aW5nRmVhdHVyZXMoW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0S2VybmluZ0Fu
ZExpZ2F0dXJlc0VuYWJsZWRCeURlZmF1bHREZWZhdWx0c0tleV0gPyBLZXJuaW5nIHwgTGlnYXR1
cmVzIDogMCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAK
ICAgICBhdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgPSBbZGVmYXVsdHMgYm9vbEZv
cktleTpXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOwogICAgIGF1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWRdOwogICAgIGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVu
YWJsZWRdOwogICAgIGF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgPSBbZGVmYXVsdHMg
Ym9vbEZvcktleTpXZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsKICAgICBhdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2Vi
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF07Ci0jZW5kaWYKIAogI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmICghW2RlZmF1bHRzIG9i
amVjdEZvcktleTpXZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXSkKQEAgLTMzOTks
MTIgKzMzNjAsNiBAQCBzdGF0aWMgYm9vbCBjbGllbnROZWVkc1dlYlZpZXdJbml0VGhyZWFkCiAg
ICAgaWYgKFtidW5kbGVJZGVudGlmaWVyIF93ZWJraXRfaGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4
OkAiY29tLmFwcGxlLkF1dG9tYXRvci4iXSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICAvLyBNYWlsLgotICAg
IGlmIChbYnVuZGxlSWRlbnRpZmllciBfd2Via2l0X2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0
cmluZzpAImNvbS5hcHBsZS5NYWlsIl0pCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ3MjYsNyArNDY4MSw2IEBAIC0gKEJPT0wpdmFs
aWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXQKICAgICAgICAgICAgIFttZW51SXRlbSBzZXRT
dGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gWUVTOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA2MAogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNR
dW90ZVN1YnN0aXR1dGlvbjopKSB7CiAgICAgICAgIEJPT0wgY2hlY2tNYXJrID0gW3NlbGYgaXNB
dXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOwogICAgICAgICBpZiAoWyhOU09iamVj
dCAqKWl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CkBAIC00NzYyLDcg
KzQ3MTYsNiBAQCAtIChCT09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRob3V0CiAgICAg
ICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0YXRlIDogTlNPZmZT
dGF0ZV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFlFUzsKLSNlbmRpZgogICAgIH0KICAg
ICBGT1JfRUFDSF9SRVNQT05ERVJfU0VMRUNUT1IoVkFMSURBVEUpCiAKQEAgLTU1NjIsMTUgKzU1
MTUsOCBAQCAtICh2b2lkKXNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQ6KEJPT0wpCiAgICAgCiAg
ICAgZ3JhbW1hckNoZWNraW5nRW5hYmxlZCA9IGZsYWc7CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpncmFtbWFyQ2hlY2tpbmdFbmFibGVkIGZvcktl
eTpXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkXTsgICAgCi0gICAgCi0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRT
cGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107Ci0jZWxzZQotICAgIE5TU3BlbGxDaGVja2VyICpz
cGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKLSAgICBp
ZiAoW3NwZWxsQ2hlY2tlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF91cGRhdGVHcmFt
bWFyKV0pCi0gICAgICAgIFtzcGVsbENoZWNrZXIgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rvcihf
dXBkYXRlR3JhbW1hcildOwotI2VuZGlmCi0gICAgCisKICAgICAvLyBXZSBjYWxsIF9wcmVmbGln
aHRTcGVsbENoZWNrZXIgd2hlbiB0dXJuaW5nIGNvbnRpbnVvdXMgc3BlbGwgY2hlY2tpbmcgb24s
IGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoYXQgaGVyZQogICAgIC8vIGJlY2F1c2UgZ3JhbW1h
ciBjaGVja2luZyBvbmx5IG9jY3VycyBvbiBjb2RlIHBhdGhzIHRoYXQgYWxyZWFkeSBwcmVmbGln
aHQgc3BlbGwgY2hlY2tpbmcgYXBwcm9wcmlhdGVseS4KICAgICAKQEAgLTU1OTAsNTEgKzU1MzYs
MjkgQEAgLSAodm9pZCl0b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRlcgogCiAtIChCT09M
KWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkCiB7Ci0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgcmV0dXJuIE5POwotI2Vsc2UKICAgICBy
ZXR1cm4gYXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOwotI2VuZGlmCiB9CiAKIC0g
KEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAogewotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBOTzsKLSNlbHNlCiAgICAg
cmV0dXJuIGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOwotI2VuZGlmCiB9CiAKIC0gKEJP
T0wpaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZAogewotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBOTzsKLSNlbHNlCiAgICAg
cmV0dXJuIGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOwotI2VuZGlmCiB9CiAKIC0g
KEJPT0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkCiB7Ci0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgcmV0dXJuIE5POwotI2Vsc2UKICAg
ICByZXR1cm4gYXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDsKLSNlbmRpZgogfQogCiAt
IChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZAogewotI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBOTzsKLSNlbHNl
CiAgICAgcmV0dXJuIGF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ7Ci0jZW5kaWYK
IH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotCiAtICh2
b2lkKXNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9PTClmbGFnCiB7CiAg
ICAgaWYgKGF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCA9PSBmbGFnKQpAQCAtNTcw
NSw4ICs1NjI5LDYgQEAgLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpbwog
ICAgIFtzZWxmIHNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6IVtzZWxmIGlz
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF1dOwogfQogCi0jZW5kaWYKLQogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxlRWRpdGluZykKQEAg
LTYyMjAsMTEgKzYxNDIsNyBAQCAtICh2b2lkKV9zZWFyY2hXaXRoU3BvdGxpZ2h0RnJvbU1lbnU6
KGlkCiAgICAgaWYgKCFbc2VsZWN0ZWRTdHJpbmcgbGVuZ3RoXSkKICAgICAgICAgcmV0dXJuOwog
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgW1tOU1dv
cmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIHNob3dTZWFyY2hSZXN1bHRzRm9yUXVlcnlTdHJpbmc6
c2VsZWN0ZWRTdHJpbmddOwotI2Vsc2UKLSAgICAodm9pZClISVNlYXJjaFdpbmRvd1Nob3coKENG
U3RyaW5nUmVmKXNlbGVjdGVkU3RyaW5nLCBrTmlsT3B0aW9ucyk7Ci0jZW5kaWYKIH0KIAogI2lm
IFVTRShHTElCKQpAQCAtNjczOSwzOSArNjY1NywzIEBAIHZvaWQgV2ViSW5zdGFsbE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcih2b2kKIHsKICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKS5pbnN0YWxs
KCk7CiB9Ci0KLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLQot
c3RhdGljIElNUCBvcmlnaW5hbFJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXNJbXA7Ci0K
LXN0YXRpYyBpZCBvYmplY3RFbGVtZW50RGF0YUF0dHJpYnV0ZShET01IVE1MT2JqZWN0RWxlbWVu
dCAqc2VsZiwgU0VMKQotewotICAgIHJldHVybiBbc2VsZiBnZXRBdHRyaWJ1dGU6QCJkYXRhIl07
Ci19Ci0KLXN0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXMoRE9NTm9k
ZSAqc2VsZiwgU0VMIHNlbGVjdG9yLCBCT09MIGEsIEJPT0wgYiwgQk9PTCBjKQotewotICAgIC8v
IFdoaWxlIGluc2lkZSB0aGlzIE1haWwgZnVuY3Rpb24sIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2Yg
LVtET01IVE1MT2JqZWN0RWxlbWVudCBkYXRhXSBiYWNrIHRvIHdoYXQgaXQgdXNlZCB0byBiZQot
ICAgIC8vIGJlZm9yZSB3ZSBmaXhlZCBhIGJ1ZyBpbiBpdCAoc2VlIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzMwMDQ0IGZvciB0aGF0IGNoYW5nZSkuCi0KLSAgICAvLyBJdCdzIGEg
bGl0dGxlIGJpdCBzdHJhbmdlIHRvIHBhdGNoIGEgbWV0aG9kIGRlZmluZWQgYnkgV2ViS2l0LCBi
dXQgaXQgaGVscHMga2VlcCB0aGlzIHdvcmthcm91bmQgc2VsZi1jb250YWluZWQuCi0KLSAgICBN
ZXRob2QgbWV0aG9kVG9QYXRjaCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKG9iamNfZ2V0UmVx
dWlyZWRDbGFzcygiRE9NSFRNTE9iamVjdEVsZW1lbnQiKSwgQHNlbGVjdG9yKGRhdGEpKTsKLSAg
ICBJTVAgb3JpZ2luYWxEYXRhSW1wID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRv
UGF0Y2gsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvYmplY3RFbGVtZW50RGF0YUF0dHJpYnV0ZSkp
OwotICAgIG9yaWdpbmFsUmVjdXJzaXZlbHlSZW1vdmVNYWlsQXR0cmlidXRlc0ltcChzZWxmLCBz
ZWxlY3RvciwgYSwgYiwgYyk7Ci0gICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRv
UGF0Y2gsIG9yaWdpbmFsRGF0YUltcCk7Ci19Ci0KLSNlbmRpZgotCi1zdGF0aWMgdm9pZCBwYXRj
aE1haWxSZW1vdmVBdHRyaWJ1dGVzTWV0aG9kKCkKLXsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBpZiAoIVdLQXBwVmVyc2lvbkNoZWNrTGVzc1RoYW4o
QCJjb20uYXBwbGUubWFpbCIsIC0xLCA0LjApKQotICAgICAgICByZXR1cm47Ci0gICAgTWV0aG9k
IG1ldGhvZFRvUGF0Y2ggPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldFJlcXVpcmVk
Q2xhc3MoIkRPTU5vZGUiKSwgQHNlbGVjdG9yKHJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0
ZXM6Y29udmVydE9iamVjdHNUb0ltYWdlczpjb252ZXJ0RWRpdGFibGVFbGVtZW50czopKTsKLSAg
ICBpZiAoIW1ldGhvZFRvUGF0Y2gpCi0gICAgICAgIHJldHVybjsKLSAgICBvcmlnaW5hbFJlY3Vy
c2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXNJbXAgPSBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24o
bWV0aG9kVG9QYXRjaCwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHJlY3Vyc2l2ZWx5UmVtb3ZlTWFp
bEF0dHJpYnV0ZXMpKTsKLSNlbmRpZgotfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzksNyArNjc5
LDYgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3VGV4dENoZWNraW5nKQogLSAoQk9PTClp
c0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOwogLSAoQk9PTClpc0F1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudEVuYWJsZWQ7CiAtIChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0
aW9uRW5hYmxlZDsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAK
IC0gKHZvaWQpc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOihCT09MKWZsYWc7
CiAtICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOihpZClzZW5kZXI7CiAt
ICh2b2lkKXNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7CkBAIC02
OTAsNyArNjg5LDYgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3VGV4dENoZWNraW5nKQog
LSAodm9pZCl0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6KGlkKXNlbmRlcjsKIC0gKHZv
aWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOwogLSAo
dm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlkKXNlbmRlcjsKLSNlbmRp
ZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5NYWlsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196073</attachid>
            <date>2013-04-01 22:41:27 -0700</date>
            <delta_ts>2013-04-01 23:27:08 -0700</delta_ts>
            <desc>Removed unused function</desc>
            <filename>bug-113746-20130401224121.patch</filename>
            <type>text/plain</type>
            <size>43073</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzM4MCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEzLTA0LTAx
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYktpdC9tYWMg
c2hvdWxkbid0IGhhdmUgY29kZSBmb3IgTWFjIDEwLjUgYW5kIGVhcmxpZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzc0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZWQgdGhlIGNvZGUgZm9y
IDEwLjUgYW5kIHJlbW92ZWQgaWYtZGVmcyBmb3IgMTAuNi4KKworICAgICAgICAqIE1pc2MvV2Vi
TlNGaWxlTWFuYWdlckV4dHJhcy5tbToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkhvc3RlZE5ldHNjYXBlUGx1
Z2luVmlldyBjcmVhdGVQbHVnaW5dKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgaW5p
dFdpdGhGcmFtZTpwbHVnaW5QYWNrYWdlOlVSTDpiYXNlVVJMOk1JTUVUeXBlOmF0dHJpYnV0ZUtl
eXM6YXR0cmlidXRlVmFsdWVzOmxvYWRNYW51YWxseTplbGVtZW50OldlYkNvcmU6Ol0pOgorICAg
ICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJO
ZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2luXSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBl
UGx1Z2luVmlldyBnZXRWYXJpYWJsZTpmb3JVUkw6dmFsdWU6bGVuZ3RoOl0pOgorICAgICAgICAo
LVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgX3dvcmthcm91bmRTaWx2ZXJsaWdodEZ1bGxzY3JlZW5C
dWc6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dz
TWVudVdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJz
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHJlZmxlY3RTY3Jv
bGxlZENsaXBWaWV3Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIF91cGRhdGVNZW51QW5k
RG9ja0ZvckZ1bGxTY3JlZW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOmlu
Q29udGV4dDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2ZyYW1l
T3JCb3VuZHNDaGFuZ2VkXSk6CisgICAgICAgICgrW1dlYkhUTUxWaWV3IF9pbnNlcnRhYmxlUGFz
dGVib2FyZFR5cGVzXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9kb2N1bWVudEZyYWdtZW50
RnJvbVBhc3RlYm9hcmQ6Zm9yVHlwZTppbkNvbnRleHQ6c3VicmVzb3VyY2VzOl0pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRl
Ol0pOgorICAgICAgICAod3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF9sb29rVXBJbkRpY3Rpb25hcnlGcm9tTWVudTpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgYXR0YWNoUm9vdExheWVyOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViSFRNTFZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGRG9jdW1lbnRF
eHRyYXMubW06CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAg
KCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVz
b3VyY2VJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgorICAgICAgICAoK1tXZWJWaWV3IGlu
aXRpYWxpemVdKToKKyAgICAgICAgKGNsaWVudE5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3JrYXJv
dW5kKToKKyAgICAgICAgKC1bV2ViVmlldyB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91
dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEdyYW1tYXJDaGVja2luZ0VuYWJs
ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5h
YmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZWFyY2hXaXRoU3BvdGxpZ2h0RnJvbU1l
bnU6XSk6CisgICAgICAgIChXZWJJbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTMtMDQtMDEgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ2FjaGUgc2hvdWxkIGRv
IHRoZSBub3JtYWwgaW5pdGlhbGl6YXRpb24gZGFuY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0JKHJldmlzaW9uIDE0NzIyMykK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzYsMTAgKzM2LDYgQEAKICNpbXBvcnQgPHN5cy9zdGF0Lmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID09IDEwNjAKLWV4dGVybiAiQyIgREFEaXNrUmVmIERBRGlza0NyZWF0ZUZyb21Wb2x1bWVQ
YXRoKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgREFTZXNzaW9uUmVmIHNlc3Npb24sIENGVVJM
UmVmIHBhdGgpOwotI2VuZGlmCi0KIEBpbXBsZW1lbnRhdGlvbiBOU0ZpbGVNYW5hZ2VyIChXZWJO
U0ZpbGVNYW5hZ2VyRXh0cmFzKQogCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHJldmlzaW9uIDE0NzIy
MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDggKzEwMSw3IEBAIC0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZQogICAgIF9zb3VyY2VVUkwuYWRvcHROUyhbVVJMIGNvcHldKTsKICAg
ICBfYmFzZVVSTC5hZG9wdE5TKFtiYXNlVVJMIGNvcHldKTsKICAgICBfTUlNRVR5cGUuYWRvcHRO
UyhbTUlNRSBjb3B5XSk7Ci0gICAgCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDYwCisKICAgICAvLyBFbmFibGUgImtpb3NrIG1vZGUiIHdoZW4gaW5zdGFudGlhdGlu
ZyB0aGUgUVQgcGx1Zy1pbiBpbnNpZGUgb2YgRGFzaGJvYXJkLiBTZWUgPHJkYXI6Ly9wcm9ibGVt
LzY4NzgxMDU+CiAgICAgaWYgKFtbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZp
ZXJdIGlzRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5kYXNoYm9hcmQuY2xpZW50Il0gJiYKICAg
ICAgICAgW19wbHVnaW5QYWNrYWdlLmdldCgpIGJ1bmRsZUlkZW50aWZpZXJdID09ICJjb20uYXBw
bGUuUXVpY2tUaW1lIFBsdWdpbi5wbHVnaW4iKSB7CkBAIC0xMTMsNyArMTEyLDYgQEAgLSAoaWQp
aW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCiAgICAgICAgIFttdXRhYmxlVmFsdWVzLmdldCgp
IGFkZE9iamVjdDpAInRydWUiXTsKICAgICAgICAgW3NlbGYgc2V0QXR0cmlidXRlS2V5czptdXRh
YmxlS2V5cy5nZXQoKSBhbmRWYWx1ZXM6bXV0YWJsZVZhbHVlcy5nZXQoKV07CiAgICAgfSBlbHNl
Ci0jZW5kaWYKICAgICAgICAgIFtzZWxmIHNldEF0dHJpYnV0ZUtleXM6a2V5cyBhbmRWYWx1ZXM6
dmFsdWVzXTsKIAogICAgIGlmIChsb2FkTWFudWFsbHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gMTQ3
MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOTksNyArMTA5OSw2IEBAIC0gKEJPT0wpY3JlYXRlUGx1
Z2luCiAjZW5kaWYKICAgICAgICAgICAgIGlmIChhY2NsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBjYW4gYmUgc2hhcmVkIGJl
dHdlZW4gV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGFuZCBXZWJOZXRzY2FwZVBsdWdpblZp
ZXcuCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAg
ICAgICAgICAgLy8gU2luY2UgdGhpcyBsYXllciBpc24ndCBnb2luZyB0byBiZSBpbnNlcnRlZCBp
bnRvIGEgdmlldywgd2UgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBsYXllciBhbmQgZmxpcCBpdHMg
Z2VvbWV0cnkKICAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciB0byBnZXQgdGhlIGNvb3JkaW5h
dGUgc3lzdGVtIHJpZ2h0LgogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDQUxheWVyPiByZWFs
UGx1Z2luTGF5ZXIoQWRvcHROUywgX3BsdWdpbkxheWVyLmxlYWtSZWYoKSk7CkBAIC0xMTEwLDcg
KzExMDksNyBAQCAtIChCT09MKWNyZWF0ZVBsdWdpbgogCiAgICAgICAgICAgICAgICAgcmVhbFBs
dWdpbkxheWVyLmdldCgpLmF1dG9yZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZSB8
IGtDQUxheWVySGVpZ2h0U2l6YWJsZTsKICAgICAgICAgICAgICAgICBbX3BsdWdpbkxheWVyLmdl
dCgpIGFkZFN1YmxheWVyOnJlYWxQbHVnaW5MYXllci5nZXQoKV07Ci0jZW5kaWYKKwogICAgICAg
ICAgICAgICAgIC8vIEVhZ2VybHkgZW50ZXIgY29tcG9zaXRpbmcgbW9kZSwgc2luY2Ugd2Uga25v
dyB3ZSdsbCBuZWVkIGl0LiBUaGlzIGF2b2lkcyBmaXJpbmcgc2V0TmVlZHNTdHlsZVJlY2FsYygp
CiAgICAgICAgICAgICAgICAgLy8gZm9yIGlmcmFtZXMgdGhhdCBjb250YWluIGNvbXBvc2l0ZWQg
cGx1Z2lucyBhdCBiYWQgdGltZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTAzMwogICAgICAgICAgICAgICAgIGNvcmUoW3NlbGYgd2ViRnJhbWVdKS0+dmlldygp
LT5lbnRlckNvbXBvc2l0aW5nTW9kZSgpOwpAQCAtMjIzMSw3ICsyMjMwLDYgQEAgLSAoTlBFcnJv
cilnZXRWYXJpYWJsZTooTlBOVVJMVmFyaWFibGUpdgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBOUE5VUkxWUHJveHk6IHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTIyNDksOSArMjI0Nyw2IEBAIC0gKE5Q
RXJyb3IpZ2V0VmFyaWFibGU6KE5QTlVSTFZhcmlhYmxlKXYKICAgICAgICAgICAgICAgICpsZW5n
dGggPSBwcm94aWVzVVRGOC5sZW5ndGgoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOwotI2Vsc2UKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CkBAIC0yMzQx
LDcgKzIzMzYsNiBAQCAtIChCT09MKV9zaG91bGRDYW5jZWxTcmNTdHJlYW0KIC8vIEZvciBub3cs
IHdlJ2xsIGRpc3Rpbmd1aXNoIG9sZGVyIGJyb2tlbiB2ZXJzaW9ucyBvZiBTaWx2ZXJsaWdodCBi
eSBhc2tpbmcgdGhlIHBsdWctaW4gaWYgaXQgcmVzb2x2ZWQgaXRzIGZ1bGwgc2NyZWVuIGJhZG5l
c3MuCiAtICh2b2lkKV93b3JrYXJvdW5kU2lsdmVybGlnaHRGdWxsc2NyZWVuQnVnOihCT09MKWlu
aXRpYWxpemVkUGx1Z2luCiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDYwCiAgICAgQVNTRVJUKF9pc1NpbHZlcmxpZ2h0KTsKICAgICBOUEJvb2wgaXNGdWxsc2Ny
ZWVuUGVyZm9ybWFuY2VJc3N1ZUZpeGVkID0gMDsKICAgICBOUFBsdWdpbkZ1bmNzICpwbHVnaW5G
dW5jcyA9IFtfcGx1Z2luUGFja2FnZS5nZXQoKSBwbHVnaW5GdW5jc107CkBAIC0yMzY0LDcgKzIz
NTgsNiBAQCAtICh2b2lkKV93b3JrYXJvdW5kU2lsdmVybGlnaHRGdWxsc2NyZWVuCiAgICAgICAg
IGlmICghcmVmQ291bnQpIAogICAgICAgICAgICAgQ0dMUmVsZWFzZVBpeGVsRm9ybWF0KHBpeGVs
Rm9ybWF0T2JqZWN0KTsKICAgICB9Ci0jZW5kaWYKIH0KIAogLSAoTlBFcnJvcilfY3JlYXRlUGx1
Z2luCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiAxNDcyMjMp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBs
dWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNiBAQCAtIChCT09MKWNy
ZWF0ZVBsdWdpbgogCiAgICAgICAgIGlmIChhY2NsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkICYm
IF9wcm94eS0+cmVuZGVyZXJUeXBlKCkgPT0gVXNlQWNjZWxlcmF0ZWRDb21wb3NpdGluZykgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGFuZCBXZWJOZXRzY2FwZVBsdWdpblZpZXcuCi0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAgICAgICAvLyBT
aW5jZSB0aGlzIGxheWVyIGlzbid0IGdvaW5nIHRvIGJlIGluc2VydGVkIGludG8gYSB2aWV3LCB3
ZSBuZWVkIHRvIGNyZWF0ZSBhbm90aGVyIGxheWVyIGFuZCBmbGlwIGl0cyBnZW9tZXRyeQogICAg
ICAgICAgICAgLy8gaW4gb3JkZXIgdG8gZ2V0IHRoZSBjb29yZGluYXRlIHN5c3RlbSByaWdodC4K
ICAgICAgICAgICAgIFJldGFpblB0cjxDQUxheWVyPiByZWFsUGx1Z2luTGF5ZXIoQWRvcHROUywg
X3BsdWdpbkxheWVyLmxlYWtSZWYoKSk7CkBAIC0xMzYsNyArMTM1LDYgQEAgLSAoQk9PTCljcmVh
dGVQbHVnaW4KICAgICAgICAgICAgIAogICAgICAgICAgICAgcmVhbFBsdWdpbkxheWVyLmdldCgp
LmF1dG9yZXNpemluZ01hc2sgPSBrQ0FMYXllcldpZHRoU2l6YWJsZSB8IGtDQUxheWVySGVpZ2h0
U2l6YWJsZTsKICAgICAgICAgICAgIFtfcGx1Z2luTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6cmVh
bFBsdWdpbkxheWVyLmdldCgpXTsKLSNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBFYWdlcmx5IGVudGVyIGNvbXBvc2l0aW5nIG1vZGUsIHNpbmNlIHdlIGtub3cgd2UnbGwgbmVl
ZCBpdC4gVGhpcyBhdm9pZHMgZmlyaW5nIHNldE5lZWRzU3R5bGVSZWNhbGMoKQogICAgICAgICAg
ICAgLy8gZm9yIGlmcmFtZXMgdGhhdCBjb250YWluIGNvbXBvc2l0ZWQgcGx1Z2lucyBhdCBiYWQg
dGltZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTAzMwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC04MzksMjAgKzgzOSwx
MiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZWxlbWVudERpZEJsdXIoY29uCiAKIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7Ci0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgcmV0dXJuIGZh
bHNlOwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogfQogCiBib29sIFdlYkNocm9t
ZUNsaWVudDo6c2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigp
CiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgcmV0
dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBib29sIFdl
YkNocm9tZUNsaWVudDo6aGFzT3BlbmVkUG9wdXAoKSBjb25zdApJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNp
b24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OTIsNyArNzkyLDYgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaQogICAgIH0KIH0KIAotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogc3RhdGljIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tpbmdUeXBlTWFz
ayBjaGVja2luZ1R5cGVzKQogewogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3Vs
dHM7CkBAIC04NzEsMTYgKzg3MCwxMyBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dD4gY29yZShOCiAKICAgICByZXR1cm4gcmVzdWx0czsKIH0KLSNlbmRpZgogCiB2b2lkIFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBs
ZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA2MAogICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5n
dGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107CiAgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRz
ID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRT
dHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNo
ZWNraW5nVHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGlu
U3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBo
eTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKICAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKICAgICBy
ZXN1bHRzID0gY29yZShpbmNvbWluZ1Jlc3VsdHMsIGNoZWNraW5nVHlwZXMpOwotI2VuZGlmCiB9
CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJp
bmcoY29uc3QgU3RyaW5nJiBiYWRHcmFtbWFyUGhyYXNlLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBn
cmFtbWFyRGV0YWlsKQpAQCAtOTQ4LDcgKzk0NCw2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpz
ZXRJbnB1dE1ldGhvZFN0YXQKIHsKIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA2MAogQGludGVyZmFjZSBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIDog
TlNPYmplY3QKIHsKICAgICBXZWJFZGl0b3JDbGllbnQqIF9jbGllbnQ7CkBAIC05NzcsNyArOTcy
LDYgQEAgLSAodm9pZClwZXJmb3JtCiB9CiAKIEBlbmQKLSNlbmRpZgogCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgTlNBcnJheSogcmVzdWx0cykK
IHsKQEAgLTk4OCw3ICs5ODIsNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNj
ZWVkKGluCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQ
YXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+IHJlcXVlc3QpCiB7Ci0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgQVNTRVJUKCFtX3Rl
eHRDaGVja2luZ1JlcXVlc3QpOwogICAgIG1fdGV4dENoZWNraW5nUmVxdWVzdCA9IHJlcXVlc3Q7
CiAKQEAgLTEwMDEsNSArOTk0LDQgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVj
a2luZ09mUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJF
ZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aENsaWVudDp0aGlzIHNlcXVl
bmNlOnNlcXVlbmNlIHJlc3VsdHM6cmVzdWx0c10gYXV0b3JlbGVhc2VdCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOltOU0FycmF5IGFy
cmF5V2l0aE9iamVjdDpOU0RlZmF1bHRSdW5Mb29wTW9kZV1dOwogICAgICAgICB9XTsKLSNlbmRp
ZgogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFy
c1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcubW0JKHJldmlzaW9uIDE0NzIyMykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00NDEsMTUgKzQ0MSw2IEBAIC0gKHZvaWQpcmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXc6KE5TQ2xp
cFYKICAgICAvLyBwb3NpdGlvbiB0byAwICh0aGUgbGVmdCkgd2hlbiB0aGUgdmlldyBpcyBpbml0
aWFsbHkgZGlzcGxheWVkLgogICAgIC8vIFRoaXMgY2FsbCB1cGRhdGVzIHRoZSBpbml0aWFsIHBv
c2l0aW9uIGNvcnJlY3RseS4KICAgICBbc2VsZiBhZGp1c3RGb3JTY3JvbGxPcmlnaW5DaGFuZ2Vd
OwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxm
IGRvY3VtZW50Vmlld107Ci0gICAgaWYgKFtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2Vi
SFRNTFZpZXcgY2xhc3NdXSkgewotICAgICAgICBXZWJIVE1MVmlldyAqaHRtbFZpZXcgPSAoV2Vi
SFRNTFZpZXcgKilkb2N1bWVudFZpZXc7Ci0gICAgICAgIGlmIChbaHRtbFZpZXcgX2lzVXNpbmdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nXSkKLSAgICAgICAgICAgIFtodG1sVmlldyBfdXBkYXRlTGF5
ZXJIb3N0aW5nVmlld1Bvc2l0aW9uXTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogLSAoQk9PTClhbGxv
d3NIb3Jpem9udGFsU2Nyb2xsaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE0NzIyMykKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQyMyw4ICs0MjMsNiBAQCAtICh2b2lkKWFuaW1hdGlvbkRpZEVuZDoo
TlNBbmltYXRpb24qKWFuCiAKIC0gKHZvaWQpX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVl
bgogewotICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlzIGF2YWlsYWJs
ZSBvbiA+IDEwLjYgb25seToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNjAKICAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNB
cHBsaWNhdGlvblByZXNlbnRhdGlvbkRlZmF1bHQ7CiAgICAgTlNTY3JlZW4qIGZ1bGxzY3JlZW5T
Y3JlZW4gPSBbW3NlbGYgd2luZG93XSBzY3JlZW5dOwogICAgIApAQCAtNDQ0LDcgKzQ0Miw2IEBA
IC0gKHZvaWQpX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbgogICAgIGlmIChbTlNBcHAg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQcmVzZW50YXRpb25PcHRpb25zOildKQog
ICAgICAgICBbTlNBcHAgc2V0UHJlc2VudGF0aW9uT3B0aW9uczpvcHRpb25zXTsKICAgICBlbHNl
Ci0jZW5kaWYKICAgICAgICAgU2V0U3lzdGVtVUlNb2RlKF9pc0Z1bGxTY3JlZW4gPyBrVUlNb2Rl
QWxsSGlkZGVuIDoga1VJTW9kZU5vcm1hbCwgMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg4LDkg
KzI4OCw2IEBAIC0gKEJPT0wpX2RyYXduQnlBbmNlc3RvcjsKIC0gKHZvaWQpX2ludmFsaWRhdGVH
U3RhdGVzRm9yVHJlZTsKIC0gKHZvaWQpX3Byb3BhZ2F0ZURpcnR5UmVjdHNUb09wYXF1ZUFuY2Vz
dG9yczsKIC0gKHZvaWQpX3dpbmRvd0NoYW5nZWRLZXlTdGF0ZTsKLSNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1
MAotLSAodm9pZClfdXBkYXRlTGF5ZXJHZW9tZXRyeUZyb21WaWV3OwotI2VuZGlmCiBAZW5kCiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC00MTQsOCArNDExLDYgQEAgLSAo
dm9pZClfd2ViX3NldFByaW50aW5nTW9kZVJlY3Vyc2l2ZUFuZAogLSAodm9pZClfd2ViX2NsZWFy
UHJpbnRpbmdNb2RlUmVjdXJzaXZlOwogQGVuZAogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDYwCi0KIEBpbnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYkhUTUxWaWV3
VGV4dENoZWNraW5nSW50ZXJuYWwpCiAtICh2b2lkKW9yZGVyRnJvbnRTdWJzdGl0dXRpb25zUGFu
ZWw6KGlkKXNlbmRlcjsKIC0gKEJPT0wpc21hcnRJbnNlcnREZWxldGVFbmFibGVkOwpAQCAtNDM4
LDggKzQzMyw2IEBAIC0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW4KIC0g
KHZvaWQpdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOihpZClzZW5kZXI7CiBAZW5k
CiAKLSNlbmRpZgotCiBAaW50ZXJmYWNlIFdlYkhUTUxWaWV3IChXZWJGb3J3YXJkRGVjbGFyYXRp
b24pIC8vIEZJWE1FOiBQdXQgdGhpcyBpbiBhIG5vcm1hbCBjYXRlZ29yeSBhbmQgc3RvcCBkb2lu
ZyB0aGUgZm9yd2FyZCBkZWNsYXJhdGlvbiB0cmljay4KIC0gKHZvaWQpX3NldFByaW50aW5nOihC
T09MKXByaW50aW5nIG1pbmltdW1QYWdlTG9naWNhbFdpZHRoOihmbG9hdCltaW5QYWdlV2lkdGgg
bG9naWNhbEhlaWdodDooZmxvYXQpbWluUGFnZUhlaWdodCBvcmlnaW5hbFBhZ2VXaWR0aDooZmxv
YXQpcGFnZUxvZ2ljYWxXaWR0aCBvcmlnaW5hbFBhZ2VIZWlnaHQ6KGZsb2F0KXBhZ2VMb2dpY2Fs
SGVpZ2h0IG1heGltdW1TaHJpbmtSYXRpbzooZmxvYXQpbWF4aW11bVNocmlua1JhdGlvIGFkanVz
dFZpZXdTaXplOihCT09MKWFkanVzdFZpZXdTaXplIHBhZ2luYXRlU2NyZWVuQ29udGVudDooQk9P
TClwYWdpbmF0ZVNjcmVlbkNvbnRlbnQ7CiAtICh2b2lkKV91cGRhdGVTZWN1cmVJbnB1dFN0YXRl
OwpAQCAtNzk3LDE3ICs3OTAsNiBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50
RnJhZ21lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJy
ZXNvdXJjZXM6MF0pKQogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAKLSNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2Jq
ZWN0Ok5TUElDVFBib2FyZFR5cGVdICYmCi0gICAgICAgIChmcmFnbWVudCA9IFtzZWxmIF9kb2N1
bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yVHlwZTpOU1BJQ1RQYm9hcmRUeXBl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkNvbnRl
eHQ6Y29udGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VicmVzb3VyY2VzOjBdKSkKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotI2VuZGlmCi0KLSAg
ICAvLyBPbmx5IDEwLjUgYW5kIGhpZ2hlciBzdXBwb3J0IHNldHRpbmcgYW5kIHJldHJpZXZpbmcg
cGFzdGVib2FyZCB0eXBlcyB3aXRoIFVUSXMsIGJ1dCB3ZSBkb24ndCBiZWxpZXZlCi0gICAgLy8g
dGhhdCBhbnkgYXBwbGljYXRpb25zIG9uIFRpZ2VyIHB1dCB0eXBlcyBmb3Igd2hpY2ggd2Ugb25s
eSBoYXZlIGEgVVRJLCBsaWtlIFBORywgb24gdGhlIHBhc3RlYm9hcmQuCiAgICAgaWYgKFt0eXBl
cyBjb250YWluc09iamVjdDooTlNTdHJpbmcqKWtVVFR5cGVQTkddICYmCiAgICAgICAgIChmcmFn
bWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yVHlw
ZTooTlNTdHJpbmcqKWtVVFR5cGVQTkcKQEAgLTEyMzQsMTAgKzEyMTYsNiBAQCAtICh2b2lkKV9m
cmFtZU9yQm91bmRzQ2hhbmdlZAogICAgICAgICBbW3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJk
ZXJdIHdlYlZpZXc6d2ViVmlldyBkaWRTY3JvbGxEb2N1bWVudEluRnJhbWVWaWV3OltzZWxmIF9m
cmFtZVZpZXddXTsKICAgICB9CiAgICAgX3ByaXZhdGUtPmxhc3RTY3JvbGxQb3NpdGlvbiA9IG9y
aWdpbjsKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgW3NlbGYgX3VwZGF0ZUxheWVySG9zdGlu
Z1ZpZXdQb3NpdGlvbl07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfc2V0QXNpZGVTdWJ2aWV3cwpA
QCAtMTY2MSw5ICsxNjM5LDYgQEAgKyAoTlNBcnJheSAqKV9pbnNlcnRhYmxlUGFzdGVib2FyZFR5
cGVzCiAgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gbmlsOwogICAgIGlmICghdHlwZXMpIHsK
ICAgICAgICAgdHlwZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJBcmNo
aXZlUGJvYXJkVHlwZSwgTlNIVE1MUGJvYXJkVHlwZSwgTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBO
U1RJRkZQYm9hcmRUeXBlLCBOU1BERlBib2FyZFR5cGUsCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgICAgICAgICBOU1BJQ1RQYm9hcmRUeXBlLAotI2Vu
ZGlmCiAgICAgICAgICAgICBOU1VSTFBib2FyZFR5cGUsIE5TUlRGRFBib2FyZFR5cGUsIE5TUlRG
UGJvYXJkVHlwZSwgTlNTdHJpbmdQYm9hcmRUeXBlLCBOU0NvbG9yUGJvYXJkVHlwZSwga1VUVHlw
ZVBORywgbmlsXTsKICAgICAgICAgQ0ZSZXRhaW4odHlwZXMpOwogICAgIH0KQEAgLTIwNTAsMjAg
KzIwMjUsNyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lCiAgICAg
ICAgIFtyZXNvdXJjZSByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogICAgIH0K
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBpZiAocGJv
YXJkVHlwZSA9PSBOU1BJQ1RQYm9hcmRUeXBlKSB7Ci0gICAgICAgIFdlYlJlc291cmNlICpyZXNv
dXJjZSA9IFtbV2ViUmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbcGFzdGVib2FyZCBkYXRh
Rm9yVHlwZTpOU1BJQ1RQYm9hcmRUeXBlXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6dW5pcXVlVVJMV2l0aFJlbGF0aXZl
UGFydChAImltYWdlLnBpY3QiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJpbWFnZS9waWN0IiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5jb2RpbmdOYW1lOm5p
bAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFtZU5hbWU6bmlsXTsKLSAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQg
PSBbW3NlbGYgX2RhdGFTb3VyY2VdIF9kb2N1bWVudEZyYWdtZW50V2l0aEltYWdlUmVzb3VyY2U6
cmVzb3VyY2VdOwotICAgICAgICBbcmVzb3VyY2UgcmVsZWFzZV07Ci0gICAgICAgIHJldHVybiBm
cmFnbWVudDsKLSAgICB9Ci0jZW5kaWYKLSAgICAvLyBPbmx5IDEwLjUgYW5kIGhpZ2hlciBzdXBw
b3J0IHNldHRpbmcgYW5kIHJldHJpZXZpbmcgcGFzdGVib2FyZCB0eXBlcyB3aXRoIFVUSXMsIGJ1
dCB3ZSBkb24ndCBiZWxpZXZlCi0gICAgLy8gdGhhdCBhbnkgYXBwbGljYXRpb25zIG9uIFRpZ2Vy
IHB1dCB0eXBlcyBmb3Igd2hpY2ggd2Ugb25seSBoYXZlIGEgVVRJLCBsaWtlIFBORywgb24gdGhl
IHBhc3RlYm9hcmQuCisKICAgICBpZiAoW3Bib2FyZFR5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0
cmluZyopa1VUVHlwZVBOR10pIHsKICAgICAgICAgV2ViUmVzb3VyY2UgKnJlc291cmNlID0gW1tX
ZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOltwYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOihO
U1N0cmluZyopa1VUVHlwZVBOR10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOnVuaXF1ZVVSTFdpdGhSZWxhdGl2ZVBhcnQo
QCJpbWFnZS5wbmciKQpAQCAtMjcwMyw3ICsyNjY1LDYgQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dAogICAgICAgICByZXR1cm4gWUVTOwogICAgIH0KIAotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIGlmIChhY3Rpb24gPT0g
QHNlbGVjdG9yKG9yZGVyRnJvbnRTdWJzdGl0dXRpb25zUGFuZWw6KSkgewogICAgICAgICBOU01l
bnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKICAgICAgICAgaWYgKFttZW51
SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKQEAgLTI3NTMsOCArMjcx
NCw3IEBAIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXQKICAgICAgICAg
ICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWRdID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgICAgIHJldHVybiBbc2Vs
ZiBfY2FuRWRpdF07CiAgICAgfQotI2VuZGlmCi0gICAgCisKICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IFtzZWxmIGNvcmVDb21tYW5kQnlTZWxlY3RvcjphY3Rpb25dOwogICAgIGlmIChj
b21tYW5kLmlzU3VwcG9ydGVkKCkpIHsKICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAo
TlNNZW51SXRlbSAqKWl0ZW07CkBAIC00OTAxLDEyICs0ODYxLDcgQEAgLSAodm9pZCljaGFuZ2VC
YXNlV3JpdGluZ0RpcmVjdGlvbjooaWQpcwogCiBzdGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9u
S2V5QmluZGluZ3NFbmFibGVkKCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjAKICAgICByZXR1cm4gWUVTOwotI2Vsc2UKLSAgICBOU1VzZXJEZWZhdWx0cyAq
ZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwotICAgIHJl
dHVybiBbZGVmYXVsdHMgYm9vbEZvcktleTpAIk5TQWxsb3dzQmFzZVdyaXRpbmdEaXJlY3Rpb25L
ZXlCaW5kaW5ncyJdIHx8IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiQXBwbGVUZXh0RGlyZWN0aW9u
Il07Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfY2hhbmdlQmFzZVdyaXRpbmdEaXJlY3Rpb25Ubzoo
TlNXcml0aW5nRGlyZWN0aW9uKWRpcmVjdGlvbgpAQCAtNDkzOSwxOCArNDg5NCw2IEBAIC0gKHZv
aWQpbWFrZUJhc2VXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0wKICAgICBbc2VsZiBfY2hhbmdlQmFz
ZVdyaXRpbmdEaXJlY3Rpb25UbzpOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdF07CiB9CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLS0gKHZvaWQpY2hh
bmdlQmFzZVdyaXRpbmdEaXJlY3Rpb25Ub0xUUjooaWQpc2VuZGVyCi17Ci0gICAgW3NlbGYgbWFr
ZUJhc2VXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQ6c2VuZGVyXTsKLX0KLQotLSAodm9pZClj
aGFuZ2VCYXNlV3JpdGluZ0RpcmVjdGlvblRvUlRMOihpZClzZW5kZXIKLXsKLSAgICBbc2VsZiBt
YWtlQmFzZVdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDpzZW5kZXJdOwotfQotI2VuZGlmCi0K
IC0gKHZvaWQpbWFrZUJhc2VXcml0aW5nRGlyZWN0aW9uTmF0dXJhbDooaWQpc2VuZGVyCiB7CiAg
ICAgTE9HX0VSUk9SKCJTZW50IGZyb20gJUAuIiwgc2VuZGVyKTsKQEAgLTUxNTMsOSArNTA5Niw2
IEBAIHN0YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50Rm8KICAgICByZXR1cm4g
Q0dQb2ludE1ha2UocG9pbnQueCwgTlNNYXhZKFsoTlNTY3JlZW4gKilbc2NyZWVucyBvYmplY3RB
dEluZGV4OjBdIGZyYW1lXSkgLSBwb2ludC55KTsKIH0KIAotCi0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCi0KIC0gKHZvaWQpb3JkZXJGcm9udFN1YnN0aXR1dGlv
bnNQYW5lbDooaWQpc2VuZGVyCiB7CiAgICAgQ09NTUFORF9QUk9MT0dVRQpAQCAtNTI2Nyw4ICs1
MjA3LDYgQEAgLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3RpbwogICAgIFtb
c2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOnNlbmRlcl07
CiB9CiAKLSNlbmRpZgotCiAtICh2b2lkKV9sb29rVXBJbkRpY3Rpb25hcnlGcm9tTWVudTooaWQp
c2VuZGVyCiB7CiAgICAgLy8gRGljdGlvbmFyeSBBUEkgd2lsbCBhY2NlcHQgYSB3aGl0ZXNwYWNl
LW9ubHkgc3RyaW5nIGFuZCBkaXNwbGF5IFVJIGFzIGlmIGl0IHdlcmUgcmVhbCB0ZXh0LApAQCAt
NTI4OSw0NCArNTIyNyw3IEBAIC0gKHZvaWQpX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Oihp
ZCkKICAgICBpZiAoZm9udCkKICAgICAgICAgcmVjdC5vcmlnaW4ueSArPSBbZm9udCBhc2NlbmRl
cl07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBb
c2VsZiBzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmc6YXR0clN0cmluZyBhdFBvaW50
OnJlY3Qub3JpZ2luXTsKLSAgICByZXR1cm47Ci0jZW5kaWYKLQotICAgIC8vIFdlIHNvZnQgbGlu
ayB0byBnZXQgdGhlIGZ1bmN0aW9uIHRoYXQgZGlzcGxheXMgdGhlIGRpY3Rpb25hcnkgKGVpdGhl
ciBwb3AtdXAgd2luZG93IG9yIGFwcCkgdG8gYXZvaWQgdGhlIHBlcmZvcm1hbmNlCi0gICAgLy8g
cGVuYWx0eSBvZiBsaW5raW5nIHRvIGFub3RoZXIgZnJhbWV3b3JrLiBUaGlzIGZ1bmN0aW9uIGNo
YW5nZWQgc2lnbmF0dXJlIGFzIHdlbGwgYXMgZnJhbWV3b3JrIGJldHdlZW4gVGlnZXIgYW5kIExl
b3BhcmQsCi0gICAgLy8gc28gdGhlIHR3byBjYXNlcyBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5Lgot
Ci0gICAgdHlwZWRlZiB2b2lkICgqU2VydmljZVdpbmRvd1Nob3dGdW5jdGlvbikoaWQgdW51c2Vk
RGljdGlvbmFyeVJlZiwgaWQgaW5Xb3JkU3RyaW5nLCBDRlJhbmdlIHNlbGVjdGlvblJhbmdlLCBp
ZCB1bnVzZWRGb250LCBDR1BvaW50IHRleHRPcmlnaW4sIEJvb2xlYW4gdmVydGljYWxUZXh0LCBp
ZCB1bnVzZWRUcmFuc2Zvcm0pOwotICAgIGNvbnN0IGNoYXIgKmZyYW1ld29ya1BhdGggPSAiL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvSElUb29sYm94IjsKLSAgICBjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUg
PSAiSElEaWN0aW9uYXJ5V2luZG93U2hvdyI7Ci0KLSAgICBzdGF0aWMgYm9vbCBsb29rZWRGb3JG
dW5jdGlvbiA9IGZhbHNlOwotICAgIHN0YXRpYyBTZXJ2aWNlV2luZG93U2hvd0Z1bmN0aW9uIGRp
Y3Rpb25hcnlTZXJ2aWNlV2luZG93U2hvdyA9IE5VTEw7Ci0KLSAgICBpZiAoIWxvb2tlZEZvckZ1
bmN0aW9uKSB7Ci0gICAgICAgIHZvaWQqIGxhbmdBbmFseXNpc0ZyYW1ld29yayA9IGRsb3Blbihm
cmFtZXdvcmtQYXRoLCBSVExEX0xBWlkpOwotICAgICAgICBBU1NFUlQobGFuZ0FuYWx5c2lzRnJh
bWV3b3JrKTsKLSAgICAgICAgaWYgKGxhbmdBbmFseXNpc0ZyYW1ld29yaykKLSAgICAgICAgICAg
IGRpY3Rpb25hcnlTZXJ2aWNlV2luZG93U2hvdyA9IChTZXJ2aWNlV2luZG93U2hvd0Z1bmN0aW9u
KWRsc3ltKGxhbmdBbmFseXNpc0ZyYW1ld29yaywgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgbG9v
a2VkRm9yRnVuY3Rpb24gPSB0cnVlOwotICAgIH0KLQotICAgIEFTU0VSVChkaWN0aW9uYXJ5U2Vy
dmljZVdpbmRvd1Nob3cpOwotICAgIGlmICghZGljdGlvbmFyeVNlcnZpY2VXaW5kb3dTaG93KSB7
Ci0gICAgICAgIE5TTG9nKEAiQ291bGRuJ3QgZmluZCB0aGUgJXMgZnVuY3Rpb24gaW4gJXMiLCBm
dW5jdGlvbk5hbWUsIGZyYW1ld29ya1BhdGgpOyAKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIC8vIFRoZSBISURpY3Rpb25hcnlXaW5kb3dTaG93IGZ1bmN0aW9uIHJlcXVpcmVzIHRoZSBv
cmlnaW4sIGluIENHIHNjcmVlbiBjb29yZGluYXRlcywgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBv
ZiB0ZXh0IGluIHRoZSBzZWxlY3Rpb24uCi0gICAgLy8gRklYTUUgNDk0NTgwODogV2UgYXBwcm94
aW1hdGUgdGhpcyBpbiBhIHdheSB0aGF0IHdvcmtzIHdlbGwgd2hlbiBhIHNpbmdsZSB3b3JkIGlz
IHNlbGVjdGVkLCBhbmQgbGVzcyB3ZWxsIGluIHNvbWUgb3RoZXIgY2FzZXMKLSAgICAvLyAoYnV0
IG5vIHdvcnNlIHRoYW4gd2UgZGlkIGluIFRpZ2VyKQotICAgIE5TUG9pbnQgd2luZG93UG9pbnQg
PSBbc2VsZiBjb252ZXJ0UG9pbnQ6cmVjdC5vcmlnaW4gdG9WaWV3Om5pbF07Ci0gICAgTlNQb2lu
dCBzY3JlZW5Qb2ludCA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRCYXNlVG9TY3JlZW46d2luZG93
UG9pbnRdOwotCi0gICAgZGljdGlvbmFyeVNlcnZpY2VXaW5kb3dTaG93KG5pbCwgYXR0clN0cmlu
ZywgQ0ZSYW5nZU1ha2UoMCwgW2F0dHJTdHJpbmcgbGVuZ3RoXSksIG5pbCwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcmVHcmFwaGljc1NjcmVlblBvaW50Rm9yQXBwS2l0U2Ny
ZWVuUG9pbnQoc2NyZWVuUG9pbnQpLCBmYWxzZSwgbmlsKTsKIH0KIAogLSAodm9pZClfZXhlY3V0
ZVNhdmVkS2V5cHJlc3NDb21tYW5kcwpAQCAtNTQ3OSw5ICs1MzgwLDcgQEAgLSAodm9pZClhdHRh
Y2hSb290TGF5ZXI6KENBTGF5ZXIqKWxheWVyCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+bGF5ZXJI
b3N0aW5nVmlldykgewogICAgICAgICBOU1ZpZXcqIGhvc3RpbmdWaWV3ID0gW1tXZWJMYXllckhv
c3RpbmdGbGlwcGVkVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbc2VsZiBib3VuZHNdXTsKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICAgICAgW2hvc3Rp
bmdWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hl
aWdodFNpemFibGUpXTsKLSNlbmRpZgogICAgICAgICBbc2VsZiBhZGRTdWJ2aWV3Omhvc3RpbmdW
aWV3XTsKICAgICAgICAgW2hvc3RpbmdWaWV3IHJlbGVhc2VdOwogICAgICAgICAvLyBob3N0aW5n
VmlldyBpcyBvd25lZCBieSBiZWluZyBhIHN1YnZpZXcgb2Ygc2VsZgpAQCAtNTQ5MSwyMyArNTM5
MCw2IEBAIC0gKHZvaWQpYXR0YWNoUm9vdExheWVyOihDQUxheWVyKilsYXllcgogICAgIC8vIE1h
a2UgYSBjb250YWluZXIgbGF5ZXIsIHdoaWNoIHdpbGwgZ2V0IHNpemVkL3Bvc2l0aW9uZWQgYnkg
QXBwS2l0IGFuZCBDQS4KICAgICBDQUxheWVyKiB2aWV3TGF5ZXIgPSBbV2ViUm9vdExheWVyIGxh
eWVyXTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAg
IC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9ucy4KLSAgICBOU051bGwgKm51bGxWYWx1ZSA9
IFtOU051bGwgbnVsbF07Ci0gICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25zID0gW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxsVmFsdWUsIEAiYW5jaG9yUG9pbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxsVmFsdWUsIEAiYm91bmRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbFZhbHVlLCBAImNvbnRlbnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bFZhbHVlLCBAImNvbnRlbnRzUmVjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxWYWx1ZSwgQCJvcGFjaXR5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZh
bHVlLCBAInBvc2l0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVl
LCBAInN1YmxheWVyVHJhbnNmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bFZhbHVlLCBAInN1YmxheWVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJ0cmFuc2Zvcm0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwot
ICAgIFt2aWV3TGF5ZXIgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dDphY3Rpb25zIGZvcktleTpAImFjdGlvbnMiXV07Ci0jZW5kaWYKLQogICAgIGlmIChbc2VsZiBs
YXllcl0pIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIGluIGEgbGF5ZXItYmFja2VkIHZpZXcsIHdl
IG5lZWQgdG8gbWFudWFsbHkgaW5pdGlhbGl6ZSB0aGUgZ2VvbWV0cnkgZm9yIG91ciBsYXllci4K
ICAgICAgICAgW3ZpZXdMYXllciBzZXRCb3VuZHM6TlNSZWN0VG9DR1JlY3QoW19wcml2YXRlLT5s
YXllckhvc3RpbmdWaWV3IGJvdW5kc10pXTsKQEAgLTU1MjQsMTEgKzU0MDYsOCBAQCAtICh2b2lk
KWF0dGFjaFJvb3RMYXllcjooQ0FMYXllciopbGF5ZXIKICAgICAKICAgICBpZiAoW1tzZWxmIF93
ZWJWaWV3XSBfcG9zdHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nTm90aWZpY2F0aW9uc10pCiAgICAg
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6X1dlYlZpZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3RpZmljYXRpb24g
b2JqZWN0OltzZWxmIF93ZWJWaWV3XSB1c2VySW5mbzpuaWxdOwotICAgIAotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIFt2aWV3TGF5ZXIgc2V0U3VibGF5
ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VTY2FsZSgxLCAtMSwgMSldOyAvLyBzZXRHZW9t
ZXRyeUZsaXBwZWQ6IGRvZXNuJ3QgZXhpc3Qgb24gTGVvcGFyZC4KLSAgICBbc2VsZiBfdXBkYXRl
TGF5ZXJIb3N0aW5nVmlld1Bvc2l0aW9uXTsKLSNlbGlmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPD0gMTA3MAorCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
PSAxMDcwCiAgICAgLy8gRG8gZ2VvbWV0cnkgZmxpcHBpbmcgaGVyZSwgd2hpY2ggZmxpcHMgYWxs
IHRoZSBjb21wb3NpdGluZyBsYXllcnMgc28gdGhleSBhcmUgdG9wLWRvd24uCiAgICAgW3ZpZXdM
YXllciBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKICNlbHNlCkBAIC01NTQ3LDM2ICs1NDI2LDYg
QEAgLSAodm9pZClkZXRhY2hSb290TGF5ZXIKICAgICB9CiB9CiAKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLS8vIFRoaXMgbWV0aG9kIGlzIG5lY2Vzc2FyeSBv
biBMZW9wYXJkIHRvIHdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS83MDY3ODkyPi4KLS0gKHZv
aWQpX3VwZGF0ZUxheWVySG9zdGluZ1ZpZXdQb3NpdGlvbgotewotICAgIGlmICghX3ByaXZhdGUt
PmxheWVySG9zdGluZ1ZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBjb25zdCBDR0Zs
b2F0IG1heEhlaWdodCA9IDIwNDg7Ci0gICAgTlNSZWN0IGxheWVyVmlld0ZyYW1lID0gW3NlbGYg
Ym91bmRzXTsKLQotICAgIGlmIChsYXllclZpZXdGcmFtZS5zaXplLmhlaWdodCA+IG1heEhlaWdo
dCkgewotICAgICAgICAvLyBDbGFtcCB0aGUgc2l6ZSBvZiB0aGUgdmlldyB0byA8PSBtYXhIZWln
aHQgdG8gYXZvaWQgdGhlIGJ1Zy4KLSAgICAgICAgbGF5ZXJWaWV3RnJhbWUuc2l6ZS5oZWlnaHQg
PSBtYXhIZWlnaHQ7Ci0gICAgICAgIE5TUmVjdCB2aXNpYmxlUmVjdCA9IFtbc2VsZiBlbmNsb3Np
bmdTY3JvbGxWaWV3XSBkb2N1bWVudFZpc2libGVSZWN0XTsKLSAgICAgICAgCi0gICAgICAgIC8v
IFBsYWNlIHRoZSB0b3Agb2YgdGhlIGxheWVyLWhvc3RpbmcgdmlldyBhdCB0aGUgdG9wIG9mIHRo
ZSB2aXNpYmxlUmVjdC4KLSAgICAgICAgQ0dGbG9hdCB0b3BPZmZzZXQgPSBOU01pblkodmlzaWJs
ZVJlY3QpOwotICAgICAgICBsYXllclZpZXdGcmFtZS5vcmlnaW4ueSA9IHRvcE9mZnNldDsKLQot
ICAgICAgICAvLyBDb21wZW5zYXRlIGZvciB0aGUgbW92ZWQgdmlldyBieSBhZGp1c3RpbmcgdGhl
IHN1YmxheWVyIHRyYW5zZm9ybSBvbiB0aGUgdmlldydzIGxheWVyICh1c2luZyBmbGlwcGVkIGNv
b3JkcykuCi0gICAgICAgIENBVHJhbnNmb3JtM0QgZmxpcFRyYW5zZm9ybSA9IENBVHJhbnNmb3Jt
M0RNYWtlVHJhbnNsYXRpb24oMCwgdG9wT2Zmc2V0LCAwKTsKLSAgICAgICAgZmxpcFRyYW5zZm9y
bSA9IENBVHJhbnNmb3JtM0RTY2FsZShmbGlwVHJhbnNmb3JtLCAxLCAtMSwgMSk7Ci0gICAgICAg
IFtbX3ByaXZhdGUtPmxheWVySG9zdGluZ1ZpZXcgbGF5ZXJdIHNldFN1YmxheWVyVHJhbnNmb3Jt
OmZsaXBUcmFuc2Zvcm1dOwotICAgIH0KLQotICAgIFtfcHJpdmF0ZS0+bGF5ZXJIb3N0aW5nVmll
dyBfdXBkYXRlTGF5ZXJHZW9tZXRyeUZyb21WaWV3XTsgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFy
Oi8vcHJvYmxlbS83MDcxNjM2PgotICAgIFtfcHJpdmF0ZS0+bGF5ZXJIb3N0aW5nVmlldyBzZXRG
cmFtZTpsYXllclZpZXdGcmFtZV07Ci19Ci0jZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA9PSAxMDUwCi0KIC0gKHZvaWQpZHJhd0xheWVyOihDQUxheWVyICopbGF5ZXIg
aW5Db250ZXh0OihDR0NvbnRleHRSZWYpY3R4CiB7CiAgICAgaWYgKF9wcml2YXRlKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAko
cmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
d0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDQgQEAgQGludGVyZmFjZSBX
ZWJIVE1MVmlldyAoV2ViSW50ZXJuYWwpCiAtIChCT09MKV93ZWJfaXNEcmF3aW5nSW50b0xheWVy
OwogI2VuZGlmCiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotLSAodm9pZClfdXBkYXRlTGF5ZXJIb3N0
aW5nVmlld1Bvc2l0aW9uOwotI2VuZGlmCi0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQkocmV2aXNpb24gMTQ3MjIz
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDYgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPFBERktpdC9QREZEb2N1bWVudC5oPgogCi0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi1AaW50ZXJmYWNlIFBERkRvY3VtZW50IChJbnRlcm5h
bCkKLS0gKENHUERGRG9jdW1lbnRSZWYpZG9jdW1lbnRSZWY7Ci1AZW5kCi0jZW5kaWYKLQogc3Rh
dGljIHZvaWQgYXBwZW5kVmFsdWVzSW5QREZOYW1lU3VidHJlZVRvVmVjdG9yKENHUERGRGljdGlv
bmFyeVJlZiBzdWJ0cmVlLCBWZWN0b3I8Q0dQREZPYmplY3RSZWY+JiB2YWx1ZXMpCiB7CiAgICAg
Q0dQREZBcnJheVJlZiBuYW1lczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzU0LDExICszNTQs
NyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQCIwIiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRQREZTY2FsZUZhY3RvclByZWZlcmVuY2VLZXksCiAgICAgICAgIEAiMCIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlU2l0ZVNwZWNpZmljU3Bvb2ZpbmdQ
cmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpXZWJLaXRFZGl0
YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3JdLCBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZl
cmVuY2VLZXksCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYlRleHREaXJlY3Rpb25TdWJtZW51QXV0
b21hdGljYWxseUluY2x1ZGVkXSwKLSNlbHNlCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
SW50OldlYlRleHREaXJlY3Rpb25TdWJtZW51TmV2ZXJJbmNsdWRlZF0sCi0jZW5kaWYKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRUZXh0RGlyZWN0aW9uU3Vi
bWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5LAog
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdFVzZXNQYWdlQ2Fj
aGVQcmVmZXJlbmNlS2V5LApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNv
dXJjZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZUludGVybmFsLmgJKHJldmlzaW9uIDE0NzIyMykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
MCArMjksNiBAQAogI2ltcG9ydCAiV2ViUmVzb3VyY2VQcml2YXRlLmgiCiAjaW1wb3J0IDx3dGYv
UGFzc1JlZlB0ci5oPgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAx
MDUwCi0jZGVmaW5lIE1BSUxfVEhSRUFEX1dPUktBUk9VTkQgMQotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CiB9CkBAIC00MSwxNiArMzcs
MyBAQCBAaW50ZXJmYWNlIFdlYlJlc291cmNlIChXZWJSZXNvdXJjZUludGVyCiAtIChpZClfaW5p
dFdpdGhDb3JlUmVzb3VyY2U6KFBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPilj
b3JlUmVzb3VyY2U7CiAtIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2UqKV9jb3JlUmVzb3VyY2U7
CiBAZW5kCi0KLSNpZmRlZiBNQUlMX1RIUkVBRF9XT1JLQVJPVU5ECi0KLUBpbnRlcmZhY2UgV2Vi
UmVzb3VyY2UgKFdlYk1haWxUaHJlYWRXb3JrYXJvdW5kKQotKyAoQk9PTClfbmVlZE1haWxUaHJl
YWRXb3JrYXJvdW5kSWZDYWxsZWRPZmZNYWluVGhyZWFkOwotQGVuZAotCi1pbmxpbmUgYm9vbCBu
ZWVkTWFpbFRocmVhZFdvcmthcm91bmQoKQotewotICAgIHJldHVybiAhcHRocmVhZF9tYWluX25w
KCkgJiYgW1dlYlJlc291cmNlIF9uZWVkTWFpbFRocmVhZFdvcmthcm91bmRJZkNhbGxlZE9mZk1h
aW5UaHJlYWRdOwotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oCShyZXZpc2lvbiAxNDcyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDcgQEAKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLXR5
cGVkZWYgaW50IFdlYlNvdXJjZUlkOwotI2Vsc2UKIHR5cGVkZWYgaW50cHRyX3QgV2ViU291cmNl
SWQ7Ci0jZW5kaWYKIAogQGNsYXNzIFdlYlZpZXc7CiBAY2xhc3MgV2ViRnJhbWU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNDcyMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw4
ICs0NDAsNiBAQCAtICh2b2lkKV9jbGVhckdsaWJMb29wT2JzZXJ2ZXI7CiAjZW5kaWYKIEBlbmQK
IAotc3RhdGljIHZvaWQgcGF0Y2hNYWlsUmVtb3ZlQXR0cmlidXRlc01ldGhvZCgpOwotCiBOU1N0
cmluZyAqV2ViRWxlbWVudERPTU5vZGVLZXkgPSAgICAgICAgICAgIEAiV2ViRWxlbWVudERPTU5v
ZGUiOwogTlNTdHJpbmcgKldlYkVsZW1lbnRGcmFtZUtleSA9ICAgICAgICAgICAgICBAIldlYkVs
ZW1lbnRGcmFtZSI7CiBOU1N0cmluZyAqV2ViRWxlbWVudEltYWdlS2V5ID0gICAgICAgICAgICAg
IEAiV2ViRWxlbWVudEltYWdlIjsKQEAgLTUwMiwxMyArNTAwLDExIEBAIEBpbnRlcmZhY2UgV2Vi
UHJvZ3Jlc3NJdGVtIDogTlNPYmplY3QKIAogc3RhdGljIEJPT0wgY29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkOwogc3RhdGljIEJPT0wgZ3JhbW1hckNoZWNraW5nRW5hYmxlZDsKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIHN0YXRpYyBCT09MIGF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDsKIHN0YXRpYyBCT09MIGF1dG9tYXRpY0xpbmtE
ZXRlY3Rpb25FbmFibGVkOwogc3RhdGljIEJPT0wgYXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVu
YWJsZWQ7CiBzdGF0aWMgQk9PTCBhdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkOwogc3Rh
dGljIEJPT0wgYXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKLSNlbmRpZgogCiBA
aW1wbGVtZW50YXRpb24gV2ViVmlldyAoQWxsV2ViVmlld3MpCiAKQEAgLTYxOSwyNCArNjE1LDYg
QEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uQwogICAgIGluaXRpYWxp
emVkID0gWUVTOwogfQogCi1zdGF0aWMgYm9vbCBydW5uaW5nTGVvcGFyZE1haWwoKQotewotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBhcHBs
aWNhdGlvbklzQXBwbGVNYWlsKCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gTk87Ci19Ci0KLXN0YXRp
YyBib29sIGNvcmVWaWRlb0hhczcyMjg4MzZGaXgoKQotewotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIE5TQnVuZGxlKiBjb3JlVmlkZW9GcmFtZXdvcmtC
dW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6QCIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrIl07Ci0gICAgZG91YmxlIHZlcnNpb24gPSBbW2NvcmVW
aWRlb0ZyYW1ld29ya0J1bmRsZSBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleTooTlNTdHJpbmcg
KilrQ0ZCdW5kbGVWZXJzaW9uS2V5XSBkb3VibGVWYWx1ZV07Ci0gICAgcmV0dXJuICh2ZXJzaW9u
ID49IDQ4KTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgYm9vbCBzaG91
bGRFbmFibGVMb2FkRGVmZXJyaW5nKCkKIHsKICAgICByZXR1cm4gIWFwcGxpY2F0aW9uSXNBZG9i
ZUluc3RhbGxlcigpOwpAQCAtNjY1LDIwICs2NDMsNiBAQCAtIChCT09MKV91c2VzRG9jdW1lbnRW
aWV3cwogfQogI2VuZGlmCiAKLXN0YXRpYyBOU1N0cmluZyAqbGVha01haWxRdWlya3NVc2VyU2Ny
aXB0Q29udGVudHMoKQotewotICAgIE5TU3RyaW5nICpzY3JpcHRQYXRoID0gW1tOU0J1bmRsZSBi
dW5kbGVGb3JDbGFzczpbV2ViVmlldyBjbGFzc11dIHBhdGhGb3JSZXNvdXJjZTpAIk1haWxRdWly
a3NVc2VyU2NyaXB0IiBvZlR5cGU6QCJqcyJdOwotICAgIE5TU3RyaW5nRW5jb2RpbmcgZW5jb2Rp
bmc7Ci0gICAgcmV0dXJuIFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6
c2NyaXB0UGF0aCB1c2VkRW5jb2Rpbmc6JmVuY29kaW5nIGVycm9yOjBdOwotfQotCi0tICh2b2lk
KV9pbmplY3RNYWlsUXVpcmtzU2NyaXB0Ci17Ci0gICAgc3RhdGljIE5TU3RyaW5nICptYWlsUXVp
cmtzU2NyaXB0Q29udGVudHMgPSBsZWFrTWFpbFF1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwot
ICAgIGNvcmUoc2VsZiktPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQoY29yZShbV2ViU2Ny
aXB0V29ybGQgd29ybGRdKSwKLSAgICAgICAgbWFpbFF1aXJrc1NjcmlwdENvbnRlbnRzLCBLVVJM
KCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRF
bmQsIEluamVjdEluQWxsRnJhbWVzKTsKLX0KLQogc3RhdGljIGJvb2wgbmVlZHNPdXRsb29rUXVp
cmtzU2NyaXB0KCkKIHsKICAgICBzdGF0aWMgYm9vbCBpc091dGxvb2tOZWVkaW5nUXVpcmtzU2Ny
aXB0ID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0hU
TUw1X1BBUlNFUikKQEAgLTc0Nyw3ICs3MTEsNiBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhGcmFtZU5hCiAKICAgICAgICAgV2ViS2l0SW5pdGlhbGl6ZVN0b3JhZ2VJZk5lY2Vz
c2FyeSgpOwogICAgICAgICBXZWJLaXRJbml0aWFsaXplQXBwbGljYXRpb25DYWNoZVBhdGhJZk5l
Y2Vzc2FyeSgpOwotICAgICAgICBwYXRjaE1haWxSZW1vdmVBdHRyaWJ1dGVzTWV0aG9kKCk7CiAg
ICAgICAgIAogICAgICAgICBTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwo
MC4wMDQpOwogICAgICAgICAKQEAgLTgzOSw5ICs4MDIsNiBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaWYgVVNFKEdMSUIpCiAgICAgW3NlbGYgX3NjaGVkdWxl
R2xpYkNvbnRleHRJdGVyYXRpb25zXTsKICNlbmRpZgotCi0gICAgaWYgKHJ1bm5pbmdMZW9wYXJk
TWFpbCgpKQotICAgICAgICBbc2VsZiBfaW5qZWN0TWFpbFF1aXJrc1NjcmlwdF07CiB9CiAKIC0g
KGlkKV9pbml0V2l0aEZyYW1lOihOU1JlY3QpZiBmcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVO
YW1lIGdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUgdXNlc0RvY3VtZW50Vmlld3M6KEJP
T0wpdXNlc0RvY3VtZW50Vmlld3MKQEAgLTE1MDksNyArMTQ2OSw3IEBAIC0gKHZvaWQpX3ByZWZl
cmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy0+c2V0TmVlZHNBZG9iZUZy
YW1lUmVsb2FkaW5nUXVpcmsoW3NlbGYgX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrXSk7
CiAgICAgc2V0dGluZ3MtPnNldFRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KFtzZWxm
IF9uZWVkc0xpbmtFbGVtZW50VGV4dENTU1F1aXJrXSk7CiAgICAgc2V0dGluZ3MtPnNldE5lZWRz
S2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVpcmtzKFtzZWxmIF9uZWVkc0tleWJvYXJkRXZl
bnREaXNhbWJpZ3VhdGlvblF1aXJrc10pOwotICAgIHNldHRpbmdzLT5zZXROZWVkc0xlb3BhcmRN
YWlsUXVpcmtzKHJ1bm5pbmdMZW9wYXJkTWFpbCgpKTsKKyAgICBzZXR0aW5ncy0+c2V0TmVlZHNM
ZW9wYXJkTWFpbFF1aXJrcyhmYWxzZSk7CiAgICAgc2V0dGluZ3MtPnNldE5lZWRzU2l0ZVNwZWNp
ZmljUXVpcmtzKF9wcml2YXRlLT51c2VTaXRlU3BlY2lmaWNTcG9vZmluZyk7CiAgICAgc2V0dGlu
Z3MtPnNldFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJBcmNoaXZl
RGVidWdNb2RlRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRMb2NhbEZpbGVDb250ZW50U25p
ZmZpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVk
XSk7CkBAIC0xNTIxLDggKzE0ODEsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdl
YlByZWZlcmVuCiAgICAgCiAgICAgLy8gRklYTUU6IEVuYWJsaW5nIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIHdoZW4gV2ViR0wgaXMgZW5hYmxlZCBjYXVzZXMgdGVzdHMgdG8gZmFpbCBvbiBMZW9w
YXJkIHdoaWNoIGV4cGVjdCBIVyBjb21wb3NpdGluZyB0byBiZSBkaXNhYmxlZC4KICAgICAvLyBV
bnRpbCB3ZSBmaXggdGhhdCwgSSB3aWxsIGNvbW1lbnQgb3V0IHRoZSB0ZXN0IChDRk0pCi0gICAg
c2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKChjb3JlVmlkZW9IYXM3
MjI4ODM2Rml4KCkgfHwgW3ByZWZlcmVuY2VzIHdlYkdMRW5hYmxlZF0gfHwgCi0gICAgICAgIFtw
cmVmZXJlbmNlcyBhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZF0pICYmIFtwcmVmZXJlbmNlcyBh
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZF0pOworICAgIHNldHRpbmdzLT5zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChb
cHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5z
ZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKFtwcmVmZXJlbmNlcyBjYW52YXNVc2VzQWNj
ZWxlcmF0ZWREcmF3aW5nXSk7ICAgIAogICAgIHNldHRpbmdzLT5zZXRTaG93RGVidWdCb3JkZXJz
KFtwcmVmZXJlbmNlcyBzaG93RGVidWdCb3JkZXJzXSk7CkBAIC0xNTQ2LDEwICsxNTA1LDcgQEAg
LSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbgogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICBzZXR0aW5ncy0+c2V0RnVsbFNjcmVlbkVuYWJsZWQoW3ByZWZlcmVu
Y2VzIGZ1bGxTY3JlZW5FbmFibGVkXSk7CiAjZW5kaWYKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICAvLyBBc3luY2hyb25vdXMgc3BlbGwgY2hlY2tpbmcg
QVBJIGlzIGF2YWlsYWJsZSBmb3IgMTAuNiBvciBsYXRlci4KICAgICBzZXR0aW5ncy0+c2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkXSk7Ci0jZW5kaWYKICAgICBzZXR0aW5ncy0+c2V0TWVtb3J5SW5m
b0VuYWJsZWQoW3ByZWZlcmVuY2VzIG1lbW9yeUluZm9FbmFibGVkXSk7CiAgICAgc2V0dGluZ3Mt
PnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgaHlwZXJsaW5rQXVkaXRp
bmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKFtz
ZWxmIF9uZWVkc1ByZUhUTUw1UGFyc2VyUXVpcmtzXSk7CkBAIC0zMTg0LDEzICszMTQwLDExIEBA
ICsgKHZvaWQpaW5pdGlhbGl6ZQogCiAgICAgRm9udDo6c2V0RGVmYXVsdFR5cGVzZXR0aW5nRmVh
dHVyZXMoW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0S2VybmluZ0FuZExpZ2F0dXJlc0VuYWJs
ZWRCeURlZmF1bHREZWZhdWx0c0tleV0gPyBLZXJuaW5nIHwgTGlnYXR1cmVzIDogMCk7CiAKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBhdXRvbWF0aWNR
dW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOwogICAgIGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25F
bmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljTGlua0RldGVjdGlvbkVu
YWJsZWRdOwogICAgIGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkID0gW2RlZmF1bHRz
IGJvb2xGb3JLZXk6V2ViQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRdOwogICAgIGF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXTsKICAgICBhdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb25FbmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljU3BlbGxp
bmdDb3JyZWN0aW9uRW5hYmxlZF07Ci0jZW5kaWYKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmICghW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkXSkKQEAgLTMzOTksMTIgKzMzNTMsNiBAQCBz
dGF0aWMgYm9vbCBjbGllbnROZWVkc1dlYlZpZXdJbml0VGhyZWFkCiAgICAgaWYgKFtidW5kbGVJ
ZGVudGlmaWVyIF93ZWJraXRfaGFzQ2FzZUluc2Vuc2l0aXZlUHJlZml4OkAiY29tLmFwcGxlLkF1
dG9tYXRvci4iXSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICAvLyBNYWlsLgotICAgIGlmIChbYnVuZGxlSWRl
bnRpZmllciBfd2Via2l0X2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmluZzpAImNvbS5hcHBs
ZS5NYWlsIl0pCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTQ3MjYsNyArNDY3NCw2IEBAIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJm
YWNlSXRlbVdpdGhvdXQKICAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjaGVja01hcmsg
PyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gWUVT
OwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIH0gZWxz
ZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlv
bjopKSB7CiAgICAgICAgIEJPT0wgY2hlY2tNYXJrID0gW3NlbGYgaXNBdXRvbWF0aWNRdW90ZVN1
YnN0aXR1dGlvbkVuYWJsZWRdOwogICAgICAgICBpZiAoWyhOU09iamVjdCAqKWl0ZW0gaXNLaW5k
T2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CkBAIC00NzYyLDcgKzQ3MDksNiBAQCAtIChC
T09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRob3V0CiAgICAgICAgICAgICBbbWVudUl0
ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIFlFUzsKLSNlbmRpZgogICAgIH0KICAgICBGT1JfRUFDSF9SRVNQ
T05ERVJfU0VMRUNUT1IoVkFMSURBVEUpCiAKQEAgLTU1NjIsMTUgKzU1MDgsOCBAQCAtICh2b2lk
KXNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQ6KEJPT0wpCiAgICAgCiAgICAgZ3JhbW1hckNoZWNr
aW5nRW5hYmxlZCA9IGZsYWc7CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gc2V0Qm9vbDpncmFtbWFyQ2hlY2tpbmdFbmFibGVkIGZvcktleTpXZWJHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkXTsgICAgCi0gICAgCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDYwCiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVw
ZGF0ZVBhbmVsc107Ci0jZWxzZQotICAgIE5TU3BlbGxDaGVja2VyICpzcGVsbENoZWNrZXIgPSBb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXTsKLSAgICBpZiAoW3NwZWxsQ2hlY2tl
ciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF91cGRhdGVHcmFtbWFyKV0pCi0gICAgICAg
IFtzcGVsbENoZWNrZXIgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfdXBkYXRlR3JhbW1hcild
OwotI2VuZGlmCi0gICAgCisKICAgICAvLyBXZSBjYWxsIF9wcmVmbGlnaHRTcGVsbENoZWNrZXIg
d2hlbiB0dXJuaW5nIGNvbnRpbnVvdXMgc3BlbGwgY2hlY2tpbmcgb24sIGJ1dCB3ZSBkb24ndCBu
ZWVkIHRvIGRvIHRoYXQgaGVyZQogICAgIC8vIGJlY2F1c2UgZ3JhbW1hciBjaGVja2luZyBvbmx5
IG9jY3VycyBvbiBjb2RlIHBhdGhzIHRoYXQgYWxyZWFkeSBwcmVmbGlnaHQgc3BlbGwgY2hlY2tp
bmcgYXBwcm9wcmlhdGVseS4KICAgICAKQEAgLTU1OTAsNTEgKzU1MjksMjkgQEAgLSAodm9pZCl0
b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRlcgogCiAtIChCT09MKWlzQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb25FbmFibGVkCiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA9PSAxMDUwCi0gICAgcmV0dXJuIE5POwotI2Vsc2UKICAgICByZXR1cm4gYXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOwotI2VuZGlmCiB9CiAKIC0gKEJPT0wpaXNBdXRvbWF0
aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBOTzsKLSNlbHNlCiAgICAgcmV0dXJuIGF1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkOwotI2VuZGlmCiB9CiAKIC0gKEJPT0wpaXNBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZAogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBOTzsKLSNlbHNlCiAgICAgcmV0dXJuIGF1dG9tYXRp
Y0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOwotI2VuZGlmCiB9CiAKIC0gKEJPT0wpaXNBdXRvbWF0
aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkCiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA9PSAxMDUwCi0gICAgcmV0dXJuIE5POwotI2Vsc2UKICAgICByZXR1cm4gYXV0b21h
dGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDsKLSNlbmRpZgogfQogCiAtIChCT09MKWlzQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZAogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBOTzsKLSNlbHNlCiAgICAgcmV0dXJuIGF1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ7Ci0jZW5kaWYKIH0KIAotI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotCiAtICh2b2lkKXNldEF1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgaWYgKGF1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCA9PSBmbGFnKQpAQCAtNTcwNSw4ICs1NjIyLDYgQEAg
LSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3RpbwogICAgIFtzZWxmIHNldEF1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQ6IVtzZWxmIGlzQXV0b21hdGljU3BlbGxp
bmdDb3JyZWN0aW9uRW5hYmxlZF1dOwogfQogCi0jZW5kaWYKLQogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxlRWRpdGluZykKQEAgLTYyMjAsMTEgKzYxMzUs
NyBAQCAtICh2b2lkKV9zZWFyY2hXaXRoU3BvdGxpZ2h0RnJvbU1lbnU6KGlkCiAgICAgaWYgKCFb
c2VsZWN0ZWRTdHJpbmcgbGVuZ3RoXSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRX
b3Jrc3BhY2VdIHNob3dTZWFyY2hSZXN1bHRzRm9yUXVlcnlTdHJpbmc6c2VsZWN0ZWRTdHJpbmdd
OwotI2Vsc2UKLSAgICAodm9pZClISVNlYXJjaFdpbmRvd1Nob3coKENGU3RyaW5nUmVmKXNlbGVj
dGVkU3RyaW5nLCBrTmlsT3B0aW9ucyk7Ci0jZW5kaWYKIH0KIAogI2lmIFVTRShHTElCKQpAQCAt
NjczOSwzOSArNjY1MCwzIEBAIHZvaWQgV2ViSW5zdGFsbE1lbW9yeVByZXNzdXJlSGFuZGxlcih2
b2kKIHsKICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKS5pbnN0YWxsKCk7CiB9Ci0KLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLQotc3RhdGljIElNUCBvcmln
aW5hbFJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXNJbXA7Ci0KLXN0YXRpYyBpZCBvYmpl
Y3RFbGVtZW50RGF0YUF0dHJpYnV0ZShET01IVE1MT2JqZWN0RWxlbWVudCAqc2VsZiwgU0VMKQot
ewotICAgIHJldHVybiBbc2VsZiBnZXRBdHRyaWJ1dGU6QCJkYXRhIl07Ci19Ci0KLXN0YXRpYyB2
b2lkIHJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXMoRE9NTm9kZSAqc2VsZiwgU0VMIHNl
bGVjdG9yLCBCT09MIGEsIEJPT0wgYiwgQk9PTCBjKQotewotICAgIC8vIFdoaWxlIGluc2lkZSB0
aGlzIE1haWwgZnVuY3Rpb24sIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgLVtET01IVE1MT2JqZWN0
RWxlbWVudCBkYXRhXSBiYWNrIHRvIHdoYXQgaXQgdXNlZCB0byBiZQotICAgIC8vIGJlZm9yZSB3
ZSBmaXhlZCBhIGJ1ZyBpbiBpdCAoc2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzMwMDQ0IGZvciB0aGF0IGNoYW5nZSkuCi0KLSAgICAvLyBJdCdzIGEgbGl0dGxlIGJpdCBzdHJh
bmdlIHRvIHBhdGNoIGEgbWV0aG9kIGRlZmluZWQgYnkgV2ViS2l0LCBidXQgaXQgaGVscHMga2Vl
cCB0aGlzIHdvcmthcm91bmQgc2VsZi1jb250YWluZWQuCi0KLSAgICBNZXRob2QgbWV0aG9kVG9Q
YXRjaCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9kKG9iamNfZ2V0UmVxdWlyZWRDbGFzcygiRE9N
SFRNTE9iamVjdEVsZW1lbnQiKSwgQHNlbGVjdG9yKGRhdGEpKTsKLSAgICBJTVAgb3JpZ2luYWxE
YXRhSW1wID0gbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRvUGF0Y2gsIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvYmplY3RFbGVtZW50RGF0YUF0dHJpYnV0ZSkpOwotICAgIG9yaWdpbmFs
UmVjdXJzaXZlbHlSZW1vdmVNYWlsQXR0cmlidXRlc0ltcChzZWxmLCBzZWxlY3RvciwgYSwgYiwg
Yyk7Ci0gICAgbWV0aG9kX3NldEltcGxlbWVudGF0aW9uKG1ldGhvZFRvUGF0Y2gsIG9yaWdpbmFs
RGF0YUltcCk7Ci19Ci0KLSNlbmRpZgotCi1zdGF0aWMgdm9pZCBwYXRjaE1haWxSZW1vdmVBdHRy
aWJ1dGVzTWV0aG9kKCkKLXsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09
IDEwNTAKLSAgICBpZiAoIVdLQXBwVmVyc2lvbkNoZWNrTGVzc1RoYW4oQCJjb20uYXBwbGUubWFp
bCIsIC0xLCA0LjApKQotICAgICAgICByZXR1cm47Ci0gICAgTWV0aG9kIG1ldGhvZFRvUGF0Y2gg
PSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldFJlcXVpcmVkQ2xhc3MoIkRPTU5vZGUi
KSwgQHNlbGVjdG9yKHJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXM6Y29udmVydE9iamVj
dHNUb0ltYWdlczpjb252ZXJ0RWRpdGFibGVFbGVtZW50czopKTsKLSAgICBpZiAoIW1ldGhvZFRv
UGF0Y2gpCi0gICAgICAgIHJldHVybjsKLSAgICBvcmlnaW5hbFJlY3Vyc2l2ZWx5UmVtb3ZlTWFp
bEF0dHJpYnV0ZXNJbXAgPSBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9QYXRjaCwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXMpKTsK
LSNlbmRpZgotfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzksNyArNjc5LDYgQEAgQGludGVyZmFj
ZSBXZWJWaWV3IChXZWJWaWV3VGV4dENoZWNraW5nKQogLSAoQk9PTClpc0F1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb25FbmFibGVkOwogLSAoQk9PTClpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVu
YWJsZWQ7CiAtIChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIC0gKHZvaWQpc2V0QXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOihCT09MKWZsYWc7CiAtICh2b2lkKXRvZ2ds
ZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOihpZClzZW5kZXI7CiAtICh2b2lkKXNldEF1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOihCT09MKWZsYWc7CkBAIC02OTAsNyArNjg5LDYgQEAg
QGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3VGV4dENoZWNraW5nKQogLSAodm9pZCl0b2dnbGVB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6KGlkKXNlbmRlcjsKIC0gKHZvaWQpc2V0QXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOwogLSAodm9pZCl0b2dnbGVBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlkKXNlbmRlcjsKLSNlbmRpZgogQGVuZAogCiBAaW50
ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5nSW5NYWlsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196077</attachid>
            <date>2013-04-01 23:27:11 -0700</date>
            <delta_ts>2013-04-02 09:45:25 -0700</delta_ts>
            <desc>Fixed per Mark&apos;s comments</desc>
            <filename>bug-113746-20130401232703.patch</filename>
            <type>text/plain</type>
            <size>42986</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzM4MCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDEzLTA0LTAx
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYktpdC9tYWMg
c2hvdWxkbid0IGhhdmUgY29kZSBmb3IgTWFjIDEwLjUgYW5kIGVhcmxpZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzc0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0ZWQgdGhlIGNvZGUgZm9y
IDEwLjUgYW5kIHJlbW92ZWQgaWYtZGVmcyBmb3IgMTAuNi4KKworICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViSG9z
dGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpbl0pOgorICAgICAgICAqIFBsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldyBpbml0V2l0aEZyYW1lOnBsdWdpblBhY2thZ2U6VVJMOmJhc2VVUkw6TUlNRVR5
cGU6YXR0cmlidXRlS2V5czphdHRyaWJ1dGVWYWx1ZXM6bG9hZE1hbnVhbGx5OmVsZW1lbnQ6V2Vi
Q29yZTo6XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06Cisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBjcmVhdGVQbHVnaW5dKToKKyAgICAgICAg
KC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGdldFZhcmlhYmxlOmZvclVSTDp2YWx1ZTpsZW5ndGg6
XSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBfd29ya2Fyb3VuZFNpbHZlcmxp
Z2h0RnVsbHNjcmVlbkJ1ZzpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c2VsZWN0SXRlbUFs
aWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3Lm1tOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcgcmVmbGVjdFNjcm9sbGVkQ2xpcFZpZXc6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGdWxs
U2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIg
X3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9kb2N1bWVudEZyYWdtZW50RnJv
bVBhc3RlYm9hcmQ6aW5Db250ZXh0OmFsbG93UGxhaW5UZXh0Ol0pOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBfZnJhbWVPckJvdW5kc0NoYW5nZWRdKToKKyAgICAgICAgKCtbV2ViSFRNTFZpZXcg
X2luc2VydGFibGVQYXN0ZWJvYXJkVHlwZXNdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2Rv
Y3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpmb3JUeXBlOmluQ29udGV4dDpzdWJyZXNvdXJj
ZXM6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1X
aXRob3V0RGVsZWdhdGU6XSk6CisgICAgICAgICh3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NF
bmFibGVkKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2xvb2tVcEluRGljdGlvbmFyeUZyb21N
ZW51Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBhdHRhY2hSb290TGF5ZXI6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJQREZEb2N1bWVudEV4dHJhcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICog
V2ViVmlldy9XZWJSZXNvdXJjZUludGVybmFsLmg6CisgICAgICAgICogV2ViVmlldy9XZWJTY3Jp
cHREZWJ1Z0RlbGVnYXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1l
Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisgICAgICAg
ICgrW1dlYlZpZXcgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoY2xpZW50TmVlZHNXZWJWaWV3SW5p
dFRocmVhZFdvcmthcm91bmQpOgorICAgICAgICAoLVtXZWJWaWV3IHZhbGlkYXRlVXNlckludGVy
ZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0R3JhbW1h
ckNoZWNraW5nRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzQXV0b21hdGljTGlu
a0RldGVjdGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0F1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnRFbmFibGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NlYXJjaFdpdGhT
cG90bGlnaHRGcm9tTWVudTpdKToKKyAgICAgICAgKFdlYkluc3RhbGxNZW1vcnlQcmVzc3VyZUhh
bmRsZXIpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMy0wNC0w
MSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJD
YWNoZSBzaG91bGQgZG8gdGhlIG5vcm1hbCBpbml0aWFsaXphdGlvbiBkYW5jZQpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCArMTAx
LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCiAgICAgX3NvdXJjZVVSTC5h
ZG9wdE5TKFtVUkwgY29weV0pOwogICAgIF9iYXNlVVJMLmFkb3B0TlMoW2Jhc2VVUkwgY29weV0p
OwogICAgIF9NSU1FVHlwZS5hZG9wdE5TKFtNSU1FIGNvcHldKTsKLSAgICAKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKKwogICAgIC8vIEVuYWJsZSAia2lvc2sg
bW9kZSIgd2hlbiBpbnN0YW50aWF0aW5nIHRoZSBRVCBwbHVnLWluIGluc2lkZSBvZiBEYXNoYm9h
cmQuIFNlZSA8cmRhcjovL3Byb2JsZW0vNjg3ODEwNT4KICAgICBpZiAoW1tbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiY29tLmFwcGxlLmRh
c2hib2FyZC5jbGllbnQiXSAmJgogICAgICAgICBbX3BsdWdpblBhY2thZ2UuZ2V0KCkgYnVuZGxl
SWRlbnRpZmllcl0gPT0gImNvbS5hcHBsZS5RdWlja1RpbWUgUGx1Z2luLnBsdWdpbiIpIHsKQEAg
LTExMyw3ICsxMTIsNiBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKICAgICAg
ICAgW211dGFibGVWYWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OkAidHJ1ZSJdOwogICAgICAgICBbc2Vs
ZiBzZXRBdHRyaWJ1dGVLZXlzOm11dGFibGVLZXlzLmdldCgpIGFuZFZhbHVlczptdXRhYmxlVmFs
dWVzLmdldCgpXTsKICAgICB9IGVsc2UKLSNlbmRpZgogICAgICAgICAgW3NlbGYgc2V0QXR0cmli
dXRlS2V5czprZXlzIGFuZFZhbHVlczp2YWx1ZXNdOwogCiAgICAgaWYgKGxvYWRNYW51YWxseSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCShyZXZpc2lvbiAxNDcyMjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5OSw3ICsxMDk5
LDYgQEAgLSAoQk9PTCljcmVhdGVQbHVnaW4KICNlbmRpZgogICAgICAgICAgICAgaWYgKGFjY2xl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBjb2RlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcg
YW5kIFdlYk5ldHNjYXBlUGx1Z2luVmlldy4KLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNjAKICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGxheWVyIGlzbid0
IGdvaW5nIHRvIGJlIGluc2VydGVkIGludG8gYSB2aWV3LCB3ZSBuZWVkIHRvIGNyZWF0ZSBhbm90
aGVyIGxheWVyIGFuZCBmbGlwIGl0cyBnZW9tZXRyeQogICAgICAgICAgICAgICAgIC8vIGluIG9y
ZGVyIHRvIGdldCB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gcmlnaHQuCiAgICAgICAgICAgICAgICAg
UmV0YWluUHRyPENBTGF5ZXI+IHJlYWxQbHVnaW5MYXllcihBZG9wdE5TLCBfcGx1Z2luTGF5ZXIu
bGVha1JlZigpKTsKQEAgLTExMTAsNyArMTEwOSw3IEBAIC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAK
ICAgICAgICAgICAgICAgICByZWFsUGx1Z2luTGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9
IGtDQUxheWVyV2lkdGhTaXphYmxlIHwga0NBTGF5ZXJIZWlnaHRTaXphYmxlOwogICAgICAgICAg
ICAgICAgIFtfcGx1Z2luTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6cmVhbFBsdWdpbkxheWVyLmdl
dCgpXTsKLSNlbmRpZgorCiAgICAgICAgICAgICAgICAgLy8gRWFnZXJseSBlbnRlciBjb21wb3Np
dGluZyBtb2RlLCBzaW5jZSB3ZSBrbm93IHdlJ2xsIG5lZWQgaXQuIFRoaXMgYXZvaWRzIGZpcmlu
ZyBzZXROZWVkc1N0eWxlUmVjYWxjKCkKICAgICAgICAgICAgICAgICAvLyBmb3IgaWZyYW1lcyB0
aGF0IGNvbnRhaW4gY29tcG9zaXRlZCBwbHVnaW5zIGF0IGJhZCB0aW1lcy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MDMzCiAgICAgICAgICAgICAgICAgY29yZShb
c2VsZiB3ZWJGcmFtZV0pLT52aWV3KCktPmVudGVyQ29tcG9zaXRpbmdNb2RlKCk7CkBAIC0yMjMx
LDcgKzIyMzAsNiBAQCAtIChOUEVycm9yKWdldFZhcmlhYmxlOihOUE5VUkxWYXJpYWJsZSl2CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIE5QTlVSTFZQcm94eTog
ewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgICAgICAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAt
MjI0OSw5ICsyMjQ3LDYgQEAgLSAoTlBFcnJvcilnZXRWYXJpYWJsZTooTlBOVVJMVmFyaWFibGUp
dgogICAgICAgICAgICAgICAgKmxlbmd0aCA9IHByb3hpZXNVVEY4Lmxlbmd0aCgpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0jZWxzZQotICAgICAg
ICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gTlBFUlJf
R0VORVJJQ19FUlJPUjsKQEAgLTIzNDEsNyArMjMzNiw2IEBAIC0gKEJPT0wpX3Nob3VsZENhbmNl
bFNyY1N0cmVhbQogLy8gRm9yIG5vdywgd2UnbGwgZGlzdGluZ3Vpc2ggb2xkZXIgYnJva2VuIHZl
cnNpb25zIG9mIFNpbHZlcmxpZ2h0IGJ5IGFza2luZyB0aGUgcGx1Zy1pbiBpZiBpdCByZXNvbHZl
ZCBpdHMgZnVsbCBzY3JlZW4gYmFkbmVzcy4KIC0gKHZvaWQpX3dvcmthcm91bmRTaWx2ZXJsaWdo
dEZ1bGxzY3JlZW5CdWc6KEJPT0wpaW5pdGlhbGl6ZWRQbHVnaW4KIHsKLSNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBBU1NFUlQoX2lzU2lsdmVybGlnaHQp
OwogICAgIE5QQm9vbCBpc0Z1bGxzY3JlZW5QZXJmb3JtYW5jZUlzc3VlRml4ZWQgPSAwOwogICAg
IE5QUGx1Z2luRnVuY3MgKnBsdWdpbkZ1bmNzID0gW19wbHVnaW5QYWNrYWdlLmdldCgpIHBsdWdp
bkZ1bmNzXTsKQEAgLTIzNjQsNyArMjM1OCw2IEBAIC0gKHZvaWQpX3dvcmthcm91bmRTaWx2ZXJs
aWdodEZ1bGxzY3JlZW4KICAgICAgICAgaWYgKCFyZWZDb3VudCkgCiAgICAgICAgICAgICBDR0xS
ZWxlYXNlUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXRPYmplY3QpOwogICAgIH0KLSNlbmRpZgogfQog
CiAtIChOUEVycm9yKV9jcmVhdGVQbHVnaW4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0JKHJldmlzaW9uIDE0NzIyMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9z
dGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI1
LDcgKzEyNSw2IEBAIC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAKICAgICAgICAgaWYgKGFjY2xlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQgJiYgX3Byb3h5LT5yZW5kZXJlclR5cGUoKSA9PSBVc2VBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGNh
biBiZSBzaGFyZWQgYmV0d2VlbiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgYW5kIFdlYk5l
dHNjYXBlUGx1Z2luVmlldy4KLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNjAKICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgbGF5ZXIgaXNuJ3QgZ29pbmcgdG8gYmUg
aW5zZXJ0ZWQgaW50byBhIHZpZXcsIHdlIG5lZWQgdG8gY3JlYXRlIGFub3RoZXIgbGF5ZXIgYW5k
IGZsaXAgaXRzIGdlb21ldHJ5CiAgICAgICAgICAgICAvLyBpbiBvcmRlciB0byBnZXQgdGhlIGNv
b3JkaW5hdGUgc3lzdGVtIHJpZ2h0LgogICAgICAgICAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHJl
YWxQbHVnaW5MYXllcihBZG9wdE5TLCBfcGx1Z2luTGF5ZXIubGVha1JlZigpKTsKQEAgLTEzNiw3
ICsxMzUsNiBAQCAtIChCT09MKWNyZWF0ZVBsdWdpbgogICAgICAgICAgICAgCiAgICAgICAgICAg
ICByZWFsUGx1Z2luTGF5ZXIuZ2V0KCkuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhT
aXphYmxlIHwga0NBTGF5ZXJIZWlnaHRTaXphYmxlOwogICAgICAgICAgICAgW19wbHVnaW5MYXll
ci5nZXQoKSBhZGRTdWJsYXllcjpyZWFsUGx1Z2luTGF5ZXIuZ2V0KCldOwotI2VuZGlmCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIEVhZ2VybHkgZW50ZXIgY29tcG9zaXRpbmcgbW9kZSwg
c2luY2Ugd2Uga25vdyB3ZSdsbCBuZWVkIGl0LiBUaGlzIGF2b2lkcyBmaXJpbmcgc2V0TmVlZHNT
dHlsZVJlY2FsYygpCiAgICAgICAgICAgICAvLyBmb3IgaWZyYW1lcyB0aGF0IGNvbnRhaW4gY29t
cG9zaXRlZCBwbHVnaW5zIGF0IGJhZCB0aW1lcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5MDMzCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCShyZXZpc2lvbiAxNDcyMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTgzOSwyMCArODM5LDEyIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbGVtZW50
RGlkQmx1cihjb24KIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNjAKICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIHJldHVybiB0cnVlOwotI2Vu
ZGlmCiB9CiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93
c01lbnVXcml0aW5nRGlyZWN0aW9uKCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNjAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpoYXNPcGVuZWRQb3B1cCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAxNDcyMjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTc5Miw3
ICs3OTIsNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpCiAgICAg
fQogfQogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiBzdGF0
aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3Vs
dHMsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMpCiB7CiAgICAgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKQEAgLTg3MSwxNiArODcwLDEzIEBAIHN0YXRpYyBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE4KIAogICAgIHJldHVybiByZXN1bHRzOwog
fQotI2VuZGlmCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChj
b25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tp
bmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7Ci0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgTlNTdHJpbmcgKnRleHRT
dHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3Rf
Y2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKICAgICBO
U0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hl
Y2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0
cmluZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdUeXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRo
b2dyYXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJE
b2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOwogICAgIFt0ZXh0
U3RyaW5nIHJlbGVhc2VdOwogICAgIHJlc3VsdHMgPSBjb3JlKGluY29taW5nUmVzdWx0cywgY2hl
Y2tpbmdUeXBlcyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNw
ZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmIGJhZEdyYW1tYXJQaHJhc2Us
IGNvbnN0IEdyYW1tYXJEZXRhaWwmIGdyYW1tYXJEZXRhaWwpCkBAIC05NDgsNyArOTQ0LDYgQEAg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdAogewogfQogCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiBAaW50ZXJmYWNlIFdlYkVkaXRv
clNwZWxsQ2hlY2tSZXNwb25kZXIgOiBOU09iamVjdAogewogICAgIFdlYkVkaXRvckNsaWVudCog
X2NsaWVudDsKQEAgLTk3Nyw3ICs5NzIsNiBAQCAtICh2b2lkKXBlcmZvcm0KIH0KIAogQGVuZAot
I2VuZGlmCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRDaGVja1N1Y2NlZWQoaW50IHNlcXVl
bmNlLCBOU0FycmF5KiByZXN1bHRzKQogewpAQCAtOTg4LDcgKzk4Miw2IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpkaWRDaGVja1N1Y2NlZWQoaW4KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVx
dWVzdD4gcmVxdWVzdCkKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNjAKICAgICBBU1NFUlQoIW1fdGV4dENoZWNraW5nUmVxdWVzdCk7CiAgICAgbV90ZXh0Q2hl
Y2tpbmdSZXF1ZXN0ID0gcmVxdWVzdDsKIApAQCAtMTAwMSw1ICs5OTQsNCBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGFyZ2V0OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGlu
aXRXaXRoQ2xpZW50OnRoaXMgc2VxdWVuY2U6c2VxdWVuY2UgcmVzdWx0czpyZXN1bHRzXSBhdXRv
cmVsZWFzZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQ6bmlsIG9y
ZGVyOjAgbW9kZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRGVmYXVsdFJ1bkxvb3BNb2Rl
XV07CiAgICAgICAgIH1dOwotI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbQkocmV2aXNpb24gMTQ3
MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0MSwxNSArNDQxLDYgQEAgLSAodm9pZClyZWZsZWN0
U2Nyb2xsZWRDbGlwVmlldzooTlNDbGlwVgogICAgIC8vIHBvc2l0aW9uIHRvIDAgKHRoZSBsZWZ0
KSB3aGVuIHRoZSB2aWV3IGlzIGluaXRpYWxseSBkaXNwbGF5ZWQuCiAgICAgLy8gVGhpcyBjYWxs
IHVwZGF0ZXMgdGhlIGluaXRpYWwgcG9zaXRpb24gY29ycmVjdGx5LgogICAgIFtzZWxmIGFkanVz
dEZvclNjcm9sbE9yaWdpbkNoYW5nZV07Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIE5TVmll
dyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKLSAgICBpZiAoW2RvY3VtZW50
VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKSB7Ci0gICAgICAgIFdlYkhU
TUxWaWV3ICpodG1sVmlldyA9IChXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldzsKLSAgICAgICAg
aWYgKFtodG1sVmlldyBfaXNVc2luZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmddKQotICAgICAgICAg
ICAgW2h0bWxWaWV3IF91cGRhdGVMYXllckhvc3RpbmdWaWV3UG9zaXRpb25dOwotICAgIH0KLSNl
bmRpZgogfQogCiAtIChCT09MKWFsbG93c0hvcml6b250YWxTY3JvbGxpbmcKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5t
bQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxs
U2NyZWVuQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIzLDggKzQyMyw2IEBAIC0g
KHZvaWQpYW5pbWF0aW9uRGlkRW5kOihOU0FuaW1hdGlvbiopYW4KIAogLSAodm9pZClfdXBkYXRl
TWVudUFuZERvY2tGb3JGdWxsU2NyZWVuCiB7Ci0gICAgLy8gTlNBcHBsaWNhdGlvblByZXNlbnRh
dGlvbk9wdGlvbnMgaXMgYXZhaWxhYmxlIG9uID4gMTAuNiBvbmx5OgotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIE5TQXBwbGljYXRpb25QcmVzZW50YXRp
b25PcHRpb25zIG9wdGlvbnMgPSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uRGVmYXVsdDsKICAg
ICBOU1NjcmVlbiogZnVsbHNjcmVlblNjcmVlbiA9IFtbc2VsZiB3aW5kb3ddIHNjcmVlbl07CiAg
ICAgCkBAIC00NDQsNyArNDQyLDYgQEAgLSAodm9pZClfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxs
U2NyZWVuCiAgICAgaWYgKFtOU0FwcCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFBy
ZXNlbnRhdGlvbk9wdGlvbnM6KV0pCiAgICAgICAgIFtOU0FwcCBzZXRQcmVzZW50YXRpb25PcHRp
b25zOm9wdGlvbnNdOwogICAgIGVsc2UKLSNlbmRpZgogICAgICAgICBTZXRTeXN0ZW1VSU1vZGUo
X2lzRnVsbFNjcmVlbiA/IGtVSU1vZGVBbGxIaWRkZW4gOiBrVUlNb2RlTm9ybWFsLCAwKTsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lv
biAxNDcyMjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yODgsOSArMjg4LDYgQEAgLSAoQk9PTClfZHJhd25CeUFuY2VzdG9y
OwogLSAodm9pZClfaW52YWxpZGF0ZUdTdGF0ZXNGb3JUcmVlOwogLSAodm9pZClfcHJvcGFnYXRl
RGlydHlSZWN0c1RvT3BhcXVlQW5jZXN0b3JzOwogLSAodm9pZClfd2luZG93Q2hhbmdlZEtleVN0
YXRlOwotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0tICh2b2lkKV91cGRhdGVMYXllckdlb21ldHJ5RnJv
bVZpZXc7Ci0jZW5kaWYKIEBlbmQKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
QEAgLTQxNCw4ICs0MTEsNiBAQCAtICh2b2lkKV93ZWJfc2V0UHJpbnRpbmdNb2RlUmVjdXJzaXZl
QW5kCiAtICh2b2lkKV93ZWJfY2xlYXJQcmludGluZ01vZGVSZWN1cnNpdmU7CiBAZW5kCiAKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLQogQGludGVyZmFjZSBX
ZWJIVE1MVmlldyAoV2ViSFRNTFZpZXdUZXh0Q2hlY2tpbmdJbnRlcm5hbCkKIC0gKHZvaWQpb3Jk
ZXJGcm9udFN1YnN0aXR1dGlvbnNQYW5lbDooaWQpc2VuZGVyOwogLSAoQk9PTClzbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQ7CkBAIC00MzgsOCArNDMzLDYgQEAgLSAodm9pZClzZXRBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb25FbgogLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb246KGlkKXNlbmRlcjsKIEBlbmQKIAotI2VuZGlmCi0KIEBpbnRlcmZhY2UgV2ViSFRNTFZp
ZXcgKFdlYkZvcndhcmREZWNsYXJhdGlvbikgLy8gRklYTUU6IFB1dCB0aGlzIGluIGEgbm9ybWFs
IGNhdGVnb3J5IGFuZCBzdG9wIGRvaW5nIHRoZSBmb3J3YXJkIGRlY2xhcmF0aW9uIHRyaWNrLgog
LSAodm9pZClfc2V0UHJpbnRpbmc6KEJPT0wpcHJpbnRpbmcgbWluaW11bVBhZ2VMb2dpY2FsV2lk
dGg6KGZsb2F0KW1pblBhZ2VXaWR0aCBsb2dpY2FsSGVpZ2h0OihmbG9hdCltaW5QYWdlSGVpZ2h0
IG9yaWdpbmFsUGFnZVdpZHRoOihmbG9hdClwYWdlTG9naWNhbFdpZHRoIG9yaWdpbmFsUGFnZUhl
aWdodDooZmxvYXQpcGFnZUxvZ2ljYWxIZWlnaHQgbWF4aW11bVNocmlua1JhdGlvOihmbG9hdClt
YXhpbXVtU2hyaW5rUmF0aW8gYWRqdXN0Vmlld1NpemU6KEJPT0wpYWRqdXN0Vmlld1NpemUgcGFn
aW5hdGVTY3JlZW5Db250ZW50OihCT09MKXBhZ2luYXRlU2NyZWVuQ29udGVudDsKIC0gKHZvaWQp
X3VwZGF0ZVNlY3VyZUlucHV0U3RhdGU7CkBAIC03OTcsMTcgKzc5MCw2IEBAIC0gKERPTURvY3Vt
ZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlczowXSkpCiAgICAgICAgIHJldHVybiBmcmFn
bWVudDsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAg
IGlmIChbdHlwZXMgY29udGFpbnNPYmplY3Q6TlNQSUNUUGJvYXJkVHlwZV0gJiYKLSAgICAgICAg
KGZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJv
YXJkIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3JUeXBlOk5TUElDVFBib2FyZFR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluQ29udGV4dDpjb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXM6MF0pKQotICAgICAgICByZXR1cm4g
ZnJhZ21lbnQ7Ci0jZW5kaWYKLQotICAgIC8vIE9ubHkgMTAuNSBhbmQgaGlnaGVyIHN1cHBvcnQg
c2V0dGluZyBhbmQgcmV0cmlldmluZyBwYXN0ZWJvYXJkIHR5cGVzIHdpdGggVVRJcywgYnV0IHdl
IGRvbid0IGJlbGlldmUKLSAgICAvLyB0aGF0IGFueSBhcHBsaWNhdGlvbnMgb24gVGlnZXIgcHV0
IHR5cGVzIGZvciB3aGljaCB3ZSBvbmx5IGhhdmUgYSBVVEksIGxpa2UgUE5HLCBvbiB0aGUgcGFz
dGVib2FyZC4KICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyopa1VUVHlw
ZVBOR10gJiYKICAgICAgICAgKGZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9t
UGFzdGVib2FyZDpwYXN0ZWJvYXJkIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JUeXBlOihOU1N0cmluZyopa1VUVHlwZVBORwpAQCAtMTIzNCwx
MCArMTIxNiw2IEBAIC0gKHZvaWQpX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkCiAgICAgICAgIFtbd2Vi
VmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IGRpZFNjcm9sbERvY3Vt
ZW50SW5GcmFtZVZpZXc6W3NlbGYgX2ZyYW1lVmlld11dOwogICAgIH0KICAgICBfcHJpdmF0ZS0+
bGFzdFNjcm9sbFBvc2l0aW9uID0gb3JpZ2luOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBb
c2VsZiBfdXBkYXRlTGF5ZXJIb3N0aW5nVmlld1Bvc2l0aW9uXTsKLSNlbmRpZgogfQogCiAtICh2
b2lkKV9zZXRBc2lkZVN1YnZpZXdzCkBAIC0xNjYxLDkgKzE2MzksNiBAQCArIChOU0FycmF5ICop
X2luc2VydGFibGVQYXN0ZWJvYXJkVHlwZXMKICAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSBu
aWw7CiAgICAgaWYgKCF0eXBlcykgewogICAgICAgICB0eXBlcyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBOU0hUTUxQYm9hcmRUeXBlLCBO
U0ZpbGVuYW1lc1Bib2FyZFR5cGUsIE5TVElGRlBib2FyZFR5cGUsIE5TUERGUGJvYXJkVHlwZSwK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICAgICAgICAg
IE5TUElDVFBib2FyZFR5cGUsCi0jZW5kaWYKICAgICAgICAgICAgIE5TVVJMUGJvYXJkVHlwZSwg
TlNSVEZEUGJvYXJkVHlwZSwgTlNSVEZQYm9hcmRUeXBlLCBOU1N0cmluZ1Bib2FyZFR5cGUsIE5T
Q29sb3JQYm9hcmRUeXBlLCBrVVRUeXBlUE5HLCBuaWxdOwogICAgICAgICBDRlJldGFpbih0eXBl
cyk7CiAgICAgfQpAQCAtMjA1MCwyMCArMjAyNSw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQg
KilfZG9jdW1lbnRGcmFnbWUKICAgICAgICAgW3Jlc291cmNlIHJlbGVhc2VdOwogICAgICAgICBy
ZXR1cm4gZnJhZ21lbnQ7CiAgICAgfQotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPT0gMTA1MAotICAgIGlmIChwYm9hcmRUeXBlID09IE5TUElDVFBib2FyZFR5cGUpIHsKLSAg
ICAgICAgV2ViUmVzb3VyY2UgKnJlc291cmNlID0gW1tXZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdp
dGhEYXRhOltwYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOk5TUElDVFBib2FyZFR5cGVdCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVS
TDp1bmlxdWVVUkxXaXRoUmVsYXRpdmVQYXJ0KEAiaW1hZ2UucGljdCIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU1FVHlwZTpAImlt
YWdlL3BpY3QiIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHRFbmNvZGluZ05hbWU6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lTmFtZTpuaWxdOwotICAgICAgICBET01Eb2N1
bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtbc2VsZiBfZGF0YVNvdXJjZV0gX2RvY3VtZW50RnJh
Z21lbnRXaXRoSW1hZ2VSZXNvdXJjZTpyZXNvdXJjZV07Ci0gICAgICAgIFtyZXNvdXJjZSByZWxl
YXNlXTsKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgIH0KLSNlbmRpZgotICAgIC8vIE9u
bHkgMTAuNSBhbmQgaGlnaGVyIHN1cHBvcnQgc2V0dGluZyBhbmQgcmV0cmlldmluZyBwYXN0ZWJv
YXJkIHR5cGVzIHdpdGggVVRJcywgYnV0IHdlIGRvbid0IGJlbGlldmUKLSAgICAvLyB0aGF0IGFu
eSBhcHBsaWNhdGlvbnMgb24gVGlnZXIgcHV0IHR5cGVzIGZvciB3aGljaCB3ZSBvbmx5IGhhdmUg
YSBVVEksIGxpa2UgUE5HLCBvbiB0aGUgcGFzdGVib2FyZC4KKwogICAgIGlmIChbcGJvYXJkVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nKilrVVRUeXBlUE5HXSkgewogICAgICAgICBXZWJS
ZXNvdXJjZSAqcmVzb3VyY2UgPSBbW1dlYlJlc291cmNlIGFsbG9jXSBpbml0V2l0aERhdGE6W3Bh
c3RlYm9hcmQgZGF0YUZvclR5cGU6KE5TU3RyaW5nKilrVVRUeXBlUE5HXQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6dW5p
cXVlVVJMV2l0aFJlbGF0aXZlUGFydChAImltYWdlLnBuZyIpCkBAIC0yNzAzLDcgKzI2NjUsNiBA
QCAtIChCT09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRob3V0CiAgICAgICAgIHJldHVy
biBZRVM7CiAgICAgfQogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDYwCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Iob3JkZXJGcm9udFN1YnN0aXR1dGlvbnNQ
YW5lbDopKSB7CiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilp
dGVtOwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xh
c3NdXSkgewpAQCAtMjc1Myw4ICsyNzE0LDcgQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZh
Y2VJdGVtV2l0aG91dAogICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIGlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRl
XTsKICAgICAgICAgcmV0dXJuIFtzZWxmIF9jYW5FZGl0XTsKICAgICB9Ci0jZW5kaWYKLSAgICAK
KwogICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gW3NlbGYgY29yZUNvbW1hbmRCeVNlbGVj
dG9yOmFjdGlvbl07CiAgICAgaWYgKGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSkgewogICAgICAgICBO
U01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKQEAgLTQ5MDEsMTIgKzQ4
NjEsNyBAQCAtICh2b2lkKWNoYW5nZUJhc2VXcml0aW5nRGlyZWN0aW9uOihpZClzCiAKIHN0YXRp
YyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogewotI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIHJldHVybiBZRVM7Ci0jZWxz
ZQotICAgIE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c107Ci0gICAgcmV0dXJuIFtkZWZhdWx0cyBib29sRm9yS2V5OkAiTlNBbGxv
d3NCYXNlV3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzIl0gfHwgW2RlZmF1bHRzIGJvb2xGb3JL
ZXk6QCJBcHBsZVRleHREaXJlY3Rpb24iXTsKLSNlbmRpZgogfQogCiAtICh2b2lkKV9jaGFuZ2VC
YXNlV3JpdGluZ0RpcmVjdGlvblRvOihOU1dyaXRpbmdEaXJlY3Rpb24pZGlyZWN0aW9uCkBAIC00
OTM5LDE4ICs0ODk0LDYgQEAgLSAodm9pZCltYWtlQmFzZVdyaXRpbmdEaXJlY3Rpb25SaWdodFRv
TAogICAgIFtzZWxmIF9jaGFuZ2VCYXNlV3JpdGluZ0RpcmVjdGlvblRvOk5TV3JpdGluZ0RpcmVj
dGlvblJpZ2h0VG9MZWZ0XTsKIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPT0gMTA1MAotLSAodm9pZCljaGFuZ2VCYXNlV3JpdGluZ0RpcmVjdGlvblRvTFRSOihpZClz
ZW5kZXIKLXsKLSAgICBbc2VsZiBtYWtlQmFzZVdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodDpz
ZW5kZXJdOwotfQotCi0tICh2b2lkKWNoYW5nZUJhc2VXcml0aW5nRGlyZWN0aW9uVG9SVEw6KGlk
KXNlbmRlcgotewotICAgIFtzZWxmIG1ha2VCYXNlV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0
OnNlbmRlcl07Ci19Ci0jZW5kaWYKLQogLSAodm9pZCltYWtlQmFzZVdyaXRpbmdEaXJlY3Rpb25O
YXR1cmFsOihpZClzZW5kZXIKIHsKICAgICBMT0dfRVJST1IoIlNlbnQgZnJvbSAlQC4iLCBzZW5k
ZXIpOwpAQCAtNTEzOCwyNCArNTA4MSw2IEBAIC0gKHZvaWQpdG9nZ2xlR3JhbW1hckNoZWNraW5n
OihpZClzZW5kZXIKICAgICBbW3NlbGYgX3dlYlZpZXddIHRvZ2dsZUdyYW1tYXJDaGVja2luZzpz
ZW5kZXJdOwogfQogCi0KLXN0YXRpYyBDR1BvaW50IGNvcmVHcmFwaGljc1NjcmVlblBvaW50Rm9y
QXBwS2l0U2NyZWVuUG9pbnQoTlNQb2ludCBwb2ludCkKLXsKLSAgICBOU0FycmF5ICpzY3JlZW5z
ID0gW05TU2NyZWVuIHNjcmVlbnNdOwotICAgIAotICAgIGlmIChbc2NyZWVucyBjb3VudF0gPT0g
MCkgewotICAgICAgICAvLyBZb3UgY291bGQgdGhlb3JldGljYWxseSBnZXQgaGVyZSBpZiBydW5u
aW5nIHdpdGggbm8gbW9uaXRvciwgaW4gd2hpY2ggY2FzZSBpdCBkb2Vzbid0IG1hdHRlcgotICAg
ICAgICAvLyBtdWNoIHdoZXJlIHRoZSAib24tc2NyZWVuIiBwb2ludCBpcy4KLSAgICAgICAgcmV0
dXJuIENHUG9pbnRNYWtlKHBvaW50LngsIHBvaW50LnkpOwotICAgIH0KLSAgICAKLSAgICAvLyBG
bGlwIHRoZSB5IGNvb3JkaW5hdGUgZnJvbSB0aGUgdG9wIG9mIHRoZSBtZW51IGJhciBzY3JlZW4g
LS0gc2VlIDQ2MzYzOTAKLSAgICByZXR1cm4gQ0dQb2ludE1ha2UocG9pbnQueCwgTlNNYXhZKFso
TlNTY3JlZW4gKilbc2NyZWVucyBvYmplY3RBdEluZGV4OjBdIGZyYW1lXSkgLSBwb2ludC55KTsK
LX0KLQotCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCi0KIC0g
KHZvaWQpb3JkZXJGcm9udFN1YnN0aXR1dGlvbnNQYW5lbDooaWQpc2VuZGVyCiB7CiAgICAgQ09N
TUFORF9QUk9MT0dVRQpAQCAtNTI2Nyw4ICs1MTkyLDYgQEAgLSAodm9pZCl0b2dnbGVBdXRvbWF0
aWNTcGVsbGluZ0NvcnJlY3RpbwogICAgIFtbc2VsZiBfd2ViVmlld10gdG9nZ2xlQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uOnNlbmRlcl07CiB9CiAKLSNlbmRpZgotCiAtICh2b2lkKV9sb29r
VXBJbkRpY3Rpb25hcnlGcm9tTWVudTooaWQpc2VuZGVyCiB7CiAgICAgLy8gRGljdGlvbmFyeSBB
UEkgd2lsbCBhY2NlcHQgYSB3aGl0ZXNwYWNlLW9ubHkgc3RyaW5nIGFuZCBkaXNwbGF5IFVJIGFz
IGlmIGl0IHdlcmUgcmVhbCB0ZXh0LApAQCAtNTI4OSw0NCArNTIxMiw3IEBAIC0gKHZvaWQpX2xv
b2tVcEluRGljdGlvbmFyeUZyb21NZW51OihpZCkKICAgICBpZiAoZm9udCkKICAgICAgICAgcmVj
dC5vcmlnaW4ueSArPSBbZm9udCBhc2NlbmRlcl07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBbc2VsZiBzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0
ZWRTdHJpbmc6YXR0clN0cmluZyBhdFBvaW50OnJlY3Qub3JpZ2luXTsKLSAgICByZXR1cm47Ci0j
ZW5kaWYKLQotICAgIC8vIFdlIHNvZnQgbGluayB0byBnZXQgdGhlIGZ1bmN0aW9uIHRoYXQgZGlz
cGxheXMgdGhlIGRpY3Rpb25hcnkgKGVpdGhlciBwb3AtdXAgd2luZG93IG9yIGFwcCkgdG8gYXZv
aWQgdGhlIHBlcmZvcm1hbmNlCi0gICAgLy8gcGVuYWx0eSBvZiBsaW5raW5nIHRvIGFub3RoZXIg
ZnJhbWV3b3JrLiBUaGlzIGZ1bmN0aW9uIGNoYW5nZWQgc2lnbmF0dXJlIGFzIHdlbGwgYXMgZnJh
bWV3b3JrIGJldHdlZW4gVGlnZXIgYW5kIExlb3BhcmQsCi0gICAgLy8gc28gdGhlIHR3byBjYXNl
cyBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5LgotCi0gICAgdHlwZWRlZiB2b2lkICgqU2VydmljZVdp
bmRvd1Nob3dGdW5jdGlvbikoaWQgdW51c2VkRGljdGlvbmFyeVJlZiwgaWQgaW5Xb3JkU3RyaW5n
LCBDRlJhbmdlIHNlbGVjdGlvblJhbmdlLCBpZCB1bnVzZWRGb250LCBDR1BvaW50IHRleHRPcmln
aW4sIEJvb2xlYW4gdmVydGljYWxUZXh0LCBpZCB1bnVzZWRUcmFuc2Zvcm0pOwotICAgIGNvbnN0
IGNoYXIgKmZyYW1ld29ya1BhdGggPSAiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9u
LmZyYW1ld29yay9GcmFtZXdvcmtzL0hJVG9vbGJveC5mcmFtZXdvcmsvSElUb29sYm94IjsKLSAg
ICBjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUgPSAiSElEaWN0aW9uYXJ5V2luZG93U2hvdyI7Ci0K
LSAgICBzdGF0aWMgYm9vbCBsb29rZWRGb3JGdW5jdGlvbiA9IGZhbHNlOwotICAgIHN0YXRpYyBT
ZXJ2aWNlV2luZG93U2hvd0Z1bmN0aW9uIGRpY3Rpb25hcnlTZXJ2aWNlV2luZG93U2hvdyA9IE5V
TEw7Ci0KLSAgICBpZiAoIWxvb2tlZEZvckZ1bmN0aW9uKSB7Ci0gICAgICAgIHZvaWQqIGxhbmdB
bmFseXNpc0ZyYW1ld29yayA9IGRsb3BlbihmcmFtZXdvcmtQYXRoLCBSVExEX0xBWlkpOwotICAg
ICAgICBBU1NFUlQobGFuZ0FuYWx5c2lzRnJhbWV3b3JrKTsKLSAgICAgICAgaWYgKGxhbmdBbmFs
eXNpc0ZyYW1ld29yaykKLSAgICAgICAgICAgIGRpY3Rpb25hcnlTZXJ2aWNlV2luZG93U2hvdyA9
IChTZXJ2aWNlV2luZG93U2hvd0Z1bmN0aW9uKWRsc3ltKGxhbmdBbmFseXNpc0ZyYW1ld29yaywg
ZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgbG9va2VkRm9yRnVuY3Rpb24gPSB0cnVlOwotICAgIH0K
LQotICAgIEFTU0VSVChkaWN0aW9uYXJ5U2VydmljZVdpbmRvd1Nob3cpOwotICAgIGlmICghZGlj
dGlvbmFyeVNlcnZpY2VXaW5kb3dTaG93KSB7Ci0gICAgICAgIE5TTG9nKEAiQ291bGRuJ3QgZmlu
ZCB0aGUgJXMgZnVuY3Rpb24gaW4gJXMiLCBmdW5jdGlvbk5hbWUsIGZyYW1ld29ya1BhdGgpOyAK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFRoZSBISURpY3Rpb25hcnlXaW5kb3dT
aG93IGZ1bmN0aW9uIHJlcXVpcmVzIHRoZSBvcmlnaW4sIGluIENHIHNjcmVlbiBjb29yZGluYXRl
cywgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0ZXh0IGluIHRoZSBzZWxlY3Rpb24uCi0gICAg
Ly8gRklYTUUgNDk0NTgwODogV2UgYXBwcm94aW1hdGUgdGhpcyBpbiBhIHdheSB0aGF0IHdvcmtz
IHdlbGwgd2hlbiBhIHNpbmdsZSB3b3JkIGlzIHNlbGVjdGVkLCBhbmQgbGVzcyB3ZWxsIGluIHNv
bWUgb3RoZXIgY2FzZXMKLSAgICAvLyAoYnV0IG5vIHdvcnNlIHRoYW4gd2UgZGlkIGluIFRpZ2Vy
KQotICAgIE5TUG9pbnQgd2luZG93UG9pbnQgPSBbc2VsZiBjb252ZXJ0UG9pbnQ6cmVjdC5vcmln
aW4gdG9WaWV3Om5pbF07Ci0gICAgTlNQb2ludCBzY3JlZW5Qb2ludCA9IFtbc2VsZiB3aW5kb3dd
IGNvbnZlcnRCYXNlVG9TY3JlZW46d2luZG93UG9pbnRdOwotCi0gICAgZGljdGlvbmFyeVNlcnZp
Y2VXaW5kb3dTaG93KG5pbCwgYXR0clN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgW2F0dHJTdHJpbmcg
bGVuZ3RoXSksIG5pbCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVHcmFw
aGljc1NjcmVlblBvaW50Rm9yQXBwS2l0U2NyZWVuUG9pbnQoc2NyZWVuUG9pbnQpLCBmYWxzZSwg
bmlsKTsKIH0KIAogLSAodm9pZClfZXhlY3V0ZVNhdmVkS2V5cHJlc3NDb21tYW5kcwpAQCAtNTQ3
OSw5ICs1MzY1LDcgQEAgLSAodm9pZClhdHRhY2hSb290TGF5ZXI6KENBTGF5ZXIqKWxheWVyCiB7
CiAgICAgaWYgKCFfcHJpdmF0ZS0+bGF5ZXJIb3N0aW5nVmlldykgewogICAgICAgICBOU1ZpZXcq
IGhvc3RpbmdWaWV3ID0gW1tXZWJMYXllckhvc3RpbmdGbGlwcGVkVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpbc2VsZiBib3VuZHNdXTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjAKICAgICAgICAgW2hvc3RpbmdWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5T
Vmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUpXTsKLSNlbmRpZgogICAgICAg
ICBbc2VsZiBhZGRTdWJ2aWV3Omhvc3RpbmdWaWV3XTsKICAgICAgICAgW2hvc3RpbmdWaWV3IHJl
bGVhc2VdOwogICAgICAgICAvLyBob3N0aW5nVmlldyBpcyBvd25lZCBieSBiZWluZyBhIHN1YnZp
ZXcgb2Ygc2VsZgpAQCAtNTQ5MSwyMyArNTM3NSw2IEBAIC0gKHZvaWQpYXR0YWNoUm9vdExheWVy
OihDQUxheWVyKilsYXllcgogICAgIC8vIE1ha2UgYSBjb250YWluZXIgbGF5ZXIsIHdoaWNoIHdp
bGwgZ2V0IHNpemVkL3Bvc2l0aW9uZWQgYnkgQXBwS2l0IGFuZCBDQS4KICAgICBDQUxheWVyKiB2
aWV3TGF5ZXIgPSBbV2ViUm9vdExheWVyIGxheWVyXTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9u
cy4KLSAgICBOU051bGwgKm51bGxWYWx1ZSA9IFtOU051bGwgbnVsbF07Ci0gICAgTlNEaWN0aW9u
YXJ5ICphY3Rpb25zID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiYW5jaG9yUG9pbnQi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiYm91bmRzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRzIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRzUmVjdCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJvcGFjaXR5IiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInBvc2l0aW9uIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVyVHJhbnNmb3JtIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVycyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJ0cmFuc2Zvcm0iLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgIFt2aWV3TGF5ZXIgc2V0U3R5bGU6W05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDphY3Rpb25zIGZvcktleTpAImFjdGlvbnMiXV07
Ci0jZW5kaWYKLQogICAgIGlmIChbc2VsZiBsYXllcl0pIHsKICAgICAgICAgLy8gSWYgd2UgYXJl
IGluIGEgbGF5ZXItYmFja2VkIHZpZXcsIHdlIG5lZWQgdG8gbWFudWFsbHkgaW5pdGlhbGl6ZSB0
aGUgZ2VvbWV0cnkgZm9yIG91ciBsYXllci4KICAgICAgICAgW3ZpZXdMYXllciBzZXRCb3VuZHM6
TlNSZWN0VG9DR1JlY3QoW19wcml2YXRlLT5sYXllckhvc3RpbmdWaWV3IGJvdW5kc10pXTsKQEAg
LTU1MjQsMTEgKzUzOTEsOCBAQCAtICh2b2lkKWF0dGFjaFJvb3RMYXllcjooQ0FMYXllciopbGF5
ZXIKICAgICAKICAgICBpZiAoW1tzZWxmIF93ZWJWaWV3XSBfcG9zdHNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTm90aWZpY2F0aW9uc10pCiAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6X1dlYlZpZXdEaWRTdGFydEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdOb3RpZmljYXRpb24gb2JqZWN0OltzZWxmIF93ZWJWaWV3XSB1c2VySW5m
bzpuaWxdOwotICAgIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1
MAotICAgIFt2aWV3TGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRE1ha2VT
Y2FsZSgxLCAtMSwgMSldOyAvLyBzZXRHZW9tZXRyeUZsaXBwZWQ6IGRvZXNuJ3QgZXhpc3Qgb24g
TGVvcGFyZC4KLSAgICBbc2VsZiBfdXBkYXRlTGF5ZXJIb3N0aW5nVmlld1Bvc2l0aW9uXTsKLSNl
bGlmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA3MAorCisjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDcwCiAgICAgLy8gRG8gZ2VvbWV0cnkgZmxp
cHBpbmcgaGVyZSwgd2hpY2ggZmxpcHMgYWxsIHRoZSBjb21wb3NpdGluZyBsYXllcnMgc28gdGhl
eSBhcmUgdG9wLWRvd24uCiAgICAgW3ZpZXdMYXllciBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsK
ICNlbHNlCkBAIC01NTQ3LDM2ICs1NDExLDYgQEAgLSAodm9pZClkZXRhY2hSb290TGF5ZXIKICAg
ICB9CiB9CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLS8v
IFRoaXMgbWV0aG9kIGlzIG5lY2Vzc2FyeSBvbiBMZW9wYXJkIHRvIHdvcmsgYXJvdW5kIDxyZGFy
Oi8vcHJvYmxlbS83MDY3ODkyPi4KLS0gKHZvaWQpX3VwZGF0ZUxheWVySG9zdGluZ1ZpZXdQb3Np
dGlvbgotewotICAgIGlmICghX3ByaXZhdGUtPmxheWVySG9zdGluZ1ZpZXcpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBjb25zdCBDR0Zsb2F0IG1heEhlaWdodCA9IDIwNDg7Ci0gICAgTlNS
ZWN0IGxheWVyVmlld0ZyYW1lID0gW3NlbGYgYm91bmRzXTsKLQotICAgIGlmIChsYXllclZpZXdG
cmFtZS5zaXplLmhlaWdodCA+IG1heEhlaWdodCkgewotICAgICAgICAvLyBDbGFtcCB0aGUgc2l6
ZSBvZiB0aGUgdmlldyB0byA8PSBtYXhIZWlnaHQgdG8gYXZvaWQgdGhlIGJ1Zy4KLSAgICAgICAg
bGF5ZXJWaWV3RnJhbWUuc2l6ZS5oZWlnaHQgPSBtYXhIZWlnaHQ7Ci0gICAgICAgIE5TUmVjdCB2
aXNpYmxlUmVjdCA9IFtbc2VsZiBlbmNsb3NpbmdTY3JvbGxWaWV3XSBkb2N1bWVudFZpc2libGVS
ZWN0XTsKLSAgICAgICAgCi0gICAgICAgIC8vIFBsYWNlIHRoZSB0b3Agb2YgdGhlIGxheWVyLWhv
c3RpbmcgdmlldyBhdCB0aGUgdG9wIG9mIHRoZSB2aXNpYmxlUmVjdC4KLSAgICAgICAgQ0dGbG9h
dCB0b3BPZmZzZXQgPSBOU01pblkodmlzaWJsZVJlY3QpOwotICAgICAgICBsYXllclZpZXdGcmFt
ZS5vcmlnaW4ueSA9IHRvcE9mZnNldDsKLQotICAgICAgICAvLyBDb21wZW5zYXRlIGZvciB0aGUg
bW92ZWQgdmlldyBieSBhZGp1c3RpbmcgdGhlIHN1YmxheWVyIHRyYW5zZm9ybSBvbiB0aGUgdmll
dydzIGxheWVyICh1c2luZyBmbGlwcGVkIGNvb3JkcykuCi0gICAgICAgIENBVHJhbnNmb3JtM0Qg
ZmxpcFRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlVHJhbnNsYXRpb24oMCwgdG9wT2Zmc2V0
LCAwKTsKLSAgICAgICAgZmxpcFRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RTY2FsZShmbGlwVHJh
bnNmb3JtLCAxLCAtMSwgMSk7Ci0gICAgICAgIFtbX3ByaXZhdGUtPmxheWVySG9zdGluZ1ZpZXcg
bGF5ZXJdIHNldFN1YmxheWVyVHJhbnNmb3JtOmZsaXBUcmFuc2Zvcm1dOwotICAgIH0KLQotICAg
IFtfcHJpdmF0ZS0+bGF5ZXJIb3N0aW5nVmlldyBfdXBkYXRlTGF5ZXJHZW9tZXRyeUZyb21WaWV3
XTsgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MDcxNjM2PgotICAgIFtfcHJp
dmF0ZS0+bGF5ZXJIb3N0aW5nVmlldyBzZXRGcmFtZTpsYXllclZpZXdGcmFtZV07Ci19Ci0jZW5k
aWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0KIC0gKHZvaWQp
ZHJhd0xheWVyOihDQUxheWVyICopbGF5ZXIgaW5Db250ZXh0OihDR0NvbnRleHRSZWYpY3R4CiB7
CiAgICAgaWYgKF9wcml2YXRlKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDggKzY2LDQgQEAgQGludGVyZmFjZSBXZWJIVE1MVmlldyAoV2ViSW50ZXJuYWwpCiAtIChC
T09MKV93ZWJfaXNEcmF3aW5nSW50b0xheWVyOwogI2VuZGlmCiAKLSNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1
MAotLSAodm9pZClfdXBkYXRlTGF5ZXJIb3N0aW5nVmlld1Bvc2l0aW9uOwotI2VuZGlmCi0KIEBl
bmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGRG9jdW1lbnRFeHRyYXMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZEb2N1bWVu
dEV4dHJhcy5tbQkocmV2aXNpb24gMTQ3MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZEb2N1bWVudEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDYg
QEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPFBERktpdC9QREZEb2N1bWVu
dC5oPgogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi1AaW50
ZXJmYWNlIFBERkRvY3VtZW50IChJbnRlcm5hbCkKLS0gKENHUERGRG9jdW1lbnRSZWYpZG9jdW1l
bnRSZWY7Ci1AZW5kCi0jZW5kaWYKLQogc3RhdGljIHZvaWQgYXBwZW5kVmFsdWVzSW5QREZOYW1l
U3VidHJlZVRvVmVjdG9yKENHUERGRGljdGlvbmFyeVJlZiBzdWJ0cmVlLCBWZWN0b3I8Q0dQREZP
YmplY3RSZWY+JiB2YWx1ZXMpCiB7CiAgICAgQ0dQREZBcnJheVJlZiBuYW1lczsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTQ3
MjIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzU0LDExICszNTQsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAg
ICAgQCIwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQREZTY2FsZUZhY3RvclBy
ZWZlcmVuY2VLZXksCiAgICAgICAgIEAiMCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0VXNlU2l0ZVNwZWNpZmljU3Bvb2ZpbmdQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpXZWJLaXRFZGl0YWJsZUxpbmtEZWZhdWx0QmVoYXZpb3JdLCBXZWJL
aXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXksCi0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50
OldlYlRleHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkXSwKLSNlbHNlCi0g
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYlRleHREaXJlY3Rpb25TdWJtZW51TmV2
ZXJJbmNsdWRlZF0sCi0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5j
ZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRET01Q
YXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6WUVTXSwgIFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5LApJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZUludGVybmFsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZUludGVybmFsLmgJKHJldmlzaW9u
IDE0NzIyMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VJbnRlcm5h
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksNiBAQAogI2ltcG9ydCAiV2ViUmVzb3Vy
Y2VQcml2YXRlLmgiCiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgogCi0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0jZGVmaW5lIE1BSUxfVEhSRUFEX1dPUktB
Uk9VTkQgMQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBcmNoaXZl
UmVzb3VyY2U7CiB9CkBAIC00MSwxNiArMzcsMyBAQCBAaW50ZXJmYWNlIFdlYlJlc291cmNlIChX
ZWJSZXNvdXJjZUludGVyCiAtIChpZClfaW5pdFdpdGhDb3JlUmVzb3VyY2U6KFBhc3NSZWZQdHI8
V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPiljb3JlUmVzb3VyY2U7CiAtIChXZWJDb3JlOjpBcmNo
aXZlUmVzb3VyY2UqKV9jb3JlUmVzb3VyY2U7CiBAZW5kCi0KLSNpZmRlZiBNQUlMX1RIUkVBRF9X
T1JLQVJPVU5ECi0KLUBpbnRlcmZhY2UgV2ViUmVzb3VyY2UgKFdlYk1haWxUaHJlYWRXb3JrYXJv
dW5kKQotKyAoQk9PTClfbmVlZE1haWxUaHJlYWRXb3JrYXJvdW5kSWZDYWxsZWRPZmZNYWluVGhy
ZWFkOwotQGVuZAotCi1pbmxpbmUgYm9vbCBuZWVkTWFpbFRocmVhZFdvcmthcm91bmQoKQotewot
ICAgIHJldHVybiAhcHRocmVhZF9tYWluX25wKCkgJiYgW1dlYlJlc291cmNlIF9uZWVkTWFpbFRo
cmVhZFdvcmthcm91bmRJZkNhbGxlZE9mZk1haW5UaHJlYWRdOwotfQotCi0jZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5oCShyZXZpc2lvbiAxNDcyMjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNj
cmlwdERlYnVnRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTEgKzI4LDcgQEAKIAog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID09IDEwNTAKLXR5cGVkZWYgaW50IFdlYlNvdXJjZUlkOwotI2Vsc2UK
IHR5cGVkZWYgaW50cHRyX3QgV2ViU291cmNlSWQ7Ci0jZW5kaWYKIAogQGNsYXNzIFdlYlZpZXc7
CiBAY2xhc3MgV2ViRnJhbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAxNDcyMjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw4ICs0NDAsNiBAQCAtICh2b2lkKV9jbGVhckdsaWJM
b29wT2JzZXJ2ZXI7CiAjZW5kaWYKIEBlbmQKIAotc3RhdGljIHZvaWQgcGF0Y2hNYWlsUmVtb3Zl
QXR0cmlidXRlc01ldGhvZCgpOwotCiBOU1N0cmluZyAqV2ViRWxlbWVudERPTU5vZGVLZXkgPSAg
ICAgICAgICAgIEAiV2ViRWxlbWVudERPTU5vZGUiOwogTlNTdHJpbmcgKldlYkVsZW1lbnRGcmFt
ZUtleSA9ICAgICAgICAgICAgICBAIldlYkVsZW1lbnRGcmFtZSI7CiBOU1N0cmluZyAqV2ViRWxl
bWVudEltYWdlS2V5ID0gICAgICAgICAgICAgIEAiV2ViRWxlbWVudEltYWdlIjsKQEAgLTUwMiwx
MyArNTAwLDExIEBAIEBpbnRlcmZhY2UgV2ViUHJvZ3Jlc3NJdGVtIDogTlNPYmplY3QKIAogc3Rh
dGljIEJPT0wgY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOwogc3RhdGljIEJPT0wgZ3Jh
bW1hckNoZWNraW5nRW5hYmxlZDsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNjAKIHN0YXRpYyBCT09MIGF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDsK
IHN0YXRpYyBCT09MIGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOwogc3RhdGljIEJPT0wg
YXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ7CiBzdGF0aWMgQk9PTCBhdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkOwogc3RhdGljIEJPT0wgYXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uRW5hYmxlZDsKLSNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoQWxsV2Vi
Vmlld3MpCiAKQEAgLTYxOSwyNCArNjE1LDYgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6
ZUFwcGxpY2F0aW9uQwogICAgIGluaXRpYWxpemVkID0gWUVTOwogfQogCi1zdGF0aWMgYm9vbCBy
dW5uaW5nTGVvcGFyZE1haWwoKQotewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPT0gMTA1MAotICAgIHJldHVybiBhcHBsaWNhdGlvbklzQXBwbGVNYWlsKCk7Ci0jZW5kaWYK
LSAgICByZXR1cm4gTk87Ci19Ci0KLXN0YXRpYyBib29sIGNvcmVWaWRlb0hhczcyMjg4MzZGaXgo
KQotewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIE5T
QnVuZGxlKiBjb3JlVmlkZW9GcmFtZXdvcmtCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aFBh
dGg6QCIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlVmlkZW8uZnJhbWV3b3JrIl07Ci0g
ICAgZG91YmxlIHZlcnNpb24gPSBbW2NvcmVWaWRlb0ZyYW1ld29ya0J1bmRsZSBvYmplY3RGb3JJ
bmZvRGljdGlvbmFyeUtleTooTlNTdHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XSBkb3VibGVW
YWx1ZV07Ci0gICAgcmV0dXJuICh2ZXJzaW9uID49IDQ4KTsKLSNlbmRpZgotICAgIHJldHVybiB0
cnVlOwotfQotCiBzdGF0aWMgYm9vbCBzaG91bGRFbmFibGVMb2FkRGVmZXJyaW5nKCkKIHsKICAg
ICByZXR1cm4gIWFwcGxpY2F0aW9uSXNBZG9iZUluc3RhbGxlcigpOwpAQCAtNjY1LDIwICs2NDMs
NiBAQCAtIChCT09MKV91c2VzRG9jdW1lbnRWaWV3cwogfQogI2VuZGlmCiAKLXN0YXRpYyBOU1N0
cmluZyAqbGVha01haWxRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKQotewotICAgIE5TU3RyaW5n
ICpzY3JpcHRQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViVmlldyBjbGFzc11d
IHBhdGhGb3JSZXNvdXJjZTpAIk1haWxRdWlya3NVc2VyU2NyaXB0IiBvZlR5cGU6QCJqcyJdOwot
ICAgIE5TU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmc7Ci0gICAgcmV0dXJuIFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6c2NyaXB0UGF0aCB1c2VkRW5jb2Rpbmc6JmVuY29k
aW5nIGVycm9yOjBdOwotfQotCi0tICh2b2lkKV9pbmplY3RNYWlsUXVpcmtzU2NyaXB0Ci17Ci0g
ICAgc3RhdGljIE5TU3RyaW5nICptYWlsUXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrTWFpbFF1
aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwotICAgIGNvcmUoc2VsZiktPmdyb3VwKCkuYWRkVXNl
clNjcmlwdFRvV29ybGQoY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwKLSAgICAgICAgbWFp
bFF1aXJrc1NjcmlwdENvbnRlbnRzLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxT
dHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKTsKLX0KLQog
c3RhdGljIGJvb2wgbmVlZHNPdXRsb29rUXVpcmtzU2NyaXB0KCkKIHsKICAgICBzdGF0aWMgYm9v
bCBpc091dGxvb2tOZWVkaW5nUXVpcmtzU2NyaXB0ID0gIVdlYktpdExpbmtlZE9uT3JBZnRlcihX
RUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIX0hUTUw1X1BBUlNFUikKQEAgLTc0Nyw3ICs3MTEsNiBA
QCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAKICAgICAgICAgV2Vi
S2l0SW5pdGlhbGl6ZVN0b3JhZ2VJZk5lY2Vzc2FyeSgpOwogICAgICAgICBXZWJLaXRJbml0aWFs
aXplQXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpOwotICAgICAgICBwYXRjaE1haWxS
ZW1vdmVBdHRyaWJ1dGVzTWV0aG9kKCk7CiAgICAgICAgIAogICAgICAgICBTZXR0aW5nczo6c2V0
RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogICAgICAgICAKQEAgLTgzOSw5ICs4
MDIsNiBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaWYgVVNF
KEdMSUIpCiAgICAgW3NlbGYgX3NjaGVkdWxlR2xpYkNvbnRleHRJdGVyYXRpb25zXTsKICNlbmRp
ZgotCi0gICAgaWYgKHJ1bm5pbmdMZW9wYXJkTWFpbCgpKQotICAgICAgICBbc2VsZiBfaW5qZWN0
TWFpbFF1aXJrc1NjcmlwdF07CiB9CiAKIC0gKGlkKV9pbml0V2l0aEZyYW1lOihOU1JlY3QpZiBm
cmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91
cE5hbWUgdXNlc0RvY3VtZW50Vmlld3M6KEJPT0wpdXNlc0RvY3VtZW50Vmlld3MKQEAgLTE1MDks
NyArMTQ2OSw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAg
ICBzZXR0aW5ncy0+c2V0TmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5nUXVpcmsoW3NlbGYgX25lZWRz
QWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrXSk7CiAgICAgc2V0dGluZ3MtPnNldFRyZWF0c0FueVRl
eHRDU1NMaW5rQXNTdHlsZXNoZWV0KFtzZWxmIF9uZWVkc0xpbmtFbGVtZW50VGV4dENTU1F1aXJr
XSk7CiAgICAgc2V0dGluZ3MtPnNldE5lZWRzS2V5Ym9hcmRFdmVudERpc2FtYmlndWF0aW9uUXVp
cmtzKFtzZWxmIF9uZWVkc0tleWJvYXJkRXZlbnREaXNhbWJpZ3VhdGlvblF1aXJrc10pOwotICAg
IHNldHRpbmdzLT5zZXROZWVkc0xlb3BhcmRNYWlsUXVpcmtzKHJ1bm5pbmdMZW9wYXJkTWFpbCgp
KTsKKyAgICBzZXR0aW5ncy0+c2V0TmVlZHNMZW9wYXJkTWFpbFF1aXJrcyhmYWxzZSk7CiAgICAg
c2V0dGluZ3MtPnNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKF9wcml2YXRlLT51c2VTaXRlU3Bl
Y2lmaWNTcG9vZmluZyk7CiAgICAgc2V0dGluZ3MtPnNldFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFi
bGVkKFtwcmVmZXJlbmNlcyB3ZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZF0pOwogICAgIHNldHRp
bmdzLT5zZXRMb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBsb2Nh
bEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkXSk7CkBAIC0xNTIxLDggKzE0ODEsNyBAQCAtICh2
b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgCiAgICAgLy8gRklYTUU6
IEVuYWJsaW5nIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHdoZW4gV2ViR0wgaXMgZW5hYmxlZCBj
YXVzZXMgdGVzdHMgdG8gZmFpbCBvbiBMZW9wYXJkIHdoaWNoIGV4cGVjdCBIVyBjb21wb3NpdGlu
ZyB0byBiZSBkaXNhYmxlZC4KICAgICAvLyBVbnRpbCB3ZSBmaXggdGhhdCwgSSB3aWxsIGNvbW1l
bnQgb3V0IHRoZSB0ZXN0IChDRk0pCi0gICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKChjb3JlVmlkZW9IYXM3MjI4ODM2Rml4KCkgfHwgW3ByZWZlcmVuY2VzIHdl
YkdMRW5hYmxlZF0gfHwgCi0gICAgICAgIFtwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZDJkQ2FudmFz
RW5hYmxlZF0pICYmIFtwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZF0p
OworICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChbcHJlZmVy
ZW5jZXMgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0
QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWREcmF3aW5n
RW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5n
KFtwcmVmZXJlbmNlcyBjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nXSk7ICAgIAogICAgIHNl
dHRpbmdzLT5zZXRTaG93RGVidWdCb3JkZXJzKFtwcmVmZXJlbmNlcyBzaG93RGVidWdCb3JkZXJz
XSk7CkBAIC0xNTQ2LDEwICsxNTA1LDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihX
ZWJQcmVmZXJlbgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzZXR0aW5ncy0+c2V0
RnVsbFNjcmVlbkVuYWJsZWQoW3ByZWZlcmVuY2VzIGZ1bGxTY3JlZW5FbmFibGVkXSk7CiAjZW5k
aWYKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICAvLyBB
c3luY2hyb25vdXMgc3BlbGwgY2hlY2tpbmcgQVBJIGlzIGF2YWlsYWJsZSBmb3IgMTAuNiBvciBs
YXRlci4KICAgICBzZXR0aW5ncy0+c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
W3ByZWZlcmVuY2VzIGFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkXSk7Ci0jZW5kaWYK
ICAgICBzZXR0aW5ncy0+c2V0TWVtb3J5SW5mb0VuYWJsZWQoW3ByZWZlcmVuY2VzIG1lbW9yeUlu
Zm9FbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChb
cHJlZmVyZW5jZXMgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNl
dFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKFtzZWxmIF9uZWVkc1ByZUhUTUw1UGFyc2VyUXVpcmtz
XSk7CkBAIC0zMTg0LDEzICszMTQwLDExIEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogCiAgICAgRm9u
dDo6c2V0RGVmYXVsdFR5cGVzZXR0aW5nRmVhdHVyZXMoW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2Vi
S2l0S2VybmluZ0FuZExpZ2F0dXJlc0VuYWJsZWRCeURlZmF1bHREZWZhdWx0c0tleV0gPyBLZXJu
aW5nIHwgTGlnYXR1cmVzIDogMCk7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjAKICAgICBhdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOwog
ICAgIGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6
V2ViQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdOwogICAgIGF1dG9tYXRpY0Rhc2hTdWJz
dGl0dXRpb25FbmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbkVuYWJsZWRdOwogICAgIGF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQg
PSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVk
XTsKICAgICBhdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkID0gW2RlZmF1bHRzIGJv
b2xGb3JLZXk6V2ViQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF07Ci0jZW5kaWYK
IAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGlmICgh
W2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVk
XSkKQEAgLTMzOTksMTIgKzMzNTMsNiBAQCBzdGF0aWMgYm9vbCBjbGllbnROZWVkc1dlYlZpZXdJ
bml0VGhyZWFkCiAgICAgaWYgKFtidW5kbGVJZGVudGlmaWVyIF93ZWJraXRfaGFzQ2FzZUluc2Vu
c2l0aXZlUHJlZml4OkAiY29tLmFwcGxlLkF1dG9tYXRvci4iXSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICAv
LyBNYWlsLgotICAgIGlmIChbYnVuZGxlSWRlbnRpZmllciBfd2Via2l0X2lzQ2FzZUluc2Vuc2l0
aXZlRXF1YWxUb1N0cmluZzpAImNvbS5hcHBsZS5NYWlsIl0pCi0gICAgICAgIHJldHVybiB0cnVl
OwotI2VuZGlmCi0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ3MjYsNyArNDY3NCw2IEBA
IC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXQKICAgICAgICAgICAgIFtt
ZW51SXRlbSBzZXRTdGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gWUVTOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA2MAogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dn
bGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjopKSB7CiAgICAgICAgIEJPT0wgY2hlY2tNYXJr
ID0gW3NlbGYgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRdOwogICAgICAgICBp
ZiAoWyhOU09iamVjdCAqKWl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7
CkBAIC00NzYyLDcgKzQ3MDksNiBAQCAtIChCT09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1X
aXRob3V0CiAgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0
YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFlFUzsKLSNlbmRp
ZgogICAgIH0KICAgICBGT1JfRUFDSF9SRVNQT05ERVJfU0VMRUNUT1IoVkFMSURBVEUpCiAKQEAg
LTU1NjIsMTUgKzU1MDgsOCBAQCAtICh2b2lkKXNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQ6KEJP
T0wpCiAgICAgCiAgICAgZ3JhbW1hckNoZWNraW5nRW5hYmxlZCA9IGZsYWc7CiAgICAgW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpncmFtbWFyQ2hlY2tpbmdF
bmFibGVkIGZvcktleTpXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkXTsgICAgCi0gICAgCi0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVBhbmVsc107Ci0jZWxzZQotICAgIE5TU3Bl
bGxDaGVja2VyICpzcGVsbENoZWNrZXIgPSBbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVj
a2VyXTsKLSAgICBpZiAoW3NwZWxsQ2hlY2tlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF91cGRhdGVHcmFtbWFyKV0pCi0gICAgICAgIFtzcGVsbENoZWNrZXIgcGVyZm9ybVNlbGVjdG9y
OkBzZWxlY3RvcihfdXBkYXRlR3JhbW1hcildOwotI2VuZGlmCi0gICAgCisKICAgICAvLyBXZSBj
YWxsIF9wcmVmbGlnaHRTcGVsbENoZWNrZXIgd2hlbiB0dXJuaW5nIGNvbnRpbnVvdXMgc3BlbGwg
Y2hlY2tpbmcgb24sIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoYXQgaGVyZQogICAgIC8vIGJl
Y2F1c2UgZ3JhbW1hciBjaGVja2luZyBvbmx5IG9jY3VycyBvbiBjb2RlIHBhdGhzIHRoYXQgYWxy
ZWFkeSBwcmVmbGlnaHQgc3BlbGwgY2hlY2tpbmcgYXBwcm9wcmlhdGVseS4KICAgICAKQEAgLTU1
OTAsNTEgKzU1MjksMjkgQEAgLSAodm9pZCl0b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRl
cgogCiAtIChCT09MKWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkCiB7Ci0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgcmV0dXJuIE5POwot
I2Vsc2UKICAgICByZXR1cm4gYXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOwotI2Vu
ZGlmCiB9CiAKIC0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZAogewotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBOTzsK
LSNlbHNlCiAgICAgcmV0dXJuIGF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOwotI2VuZGlm
CiB9CiAKIC0gKEJPT0wpaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZAogewotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVybiBOTzsK
LSNlbHNlCiAgICAgcmV0dXJuIGF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOwotI2Vu
ZGlmCiB9CiAKIC0gKEJPT0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkCiB7Ci0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgcmV0dXJuIE5P
OwotI2Vsc2UKICAgICByZXR1cm4gYXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZDsKLSNl
bmRpZgogfQogCiAtIChCT09MKWlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZAog
ewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHJldHVy
biBOTzsKLSNlbHNlCiAgICAgcmV0dXJuIGF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWQ7Ci0jZW5kaWYKIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA2MAotCiAtICh2b2lkKXNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZDooQk9P
TClmbGFnCiB7CiAgICAgaWYgKGF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCA9PSBm
bGFnKQpAQCAtNTcwNSw4ICs1NjIyLDYgQEAgLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3RpbwogICAgIFtzZWxmIHNldEF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWQ6IVtzZWxmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZF1dOwogfQogCi0j
ZW5kaWYKLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1VuZG9hYmxl
RWRpdGluZykKQEAgLTYyMjAsMTEgKzYxMzUsNyBAQCAtICh2b2lkKV9zZWFyY2hXaXRoU3BvdGxp
Z2h0RnJvbU1lbnU6KGlkCiAgICAgaWYgKCFbc2VsZWN0ZWRTdHJpbmcgbGVuZ3RoXSkKICAgICAg
ICAgcmV0dXJuOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYw
CiAgICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIHNob3dTZWFyY2hSZXN1bHRzRm9y
UXVlcnlTdHJpbmc6c2VsZWN0ZWRTdHJpbmddOwotI2Vsc2UKLSAgICAodm9pZClISVNlYXJjaFdp
bmRvd1Nob3coKENGU3RyaW5nUmVmKXNlbGVjdGVkU3RyaW5nLCBrTmlsT3B0aW9ucyk7Ci0jZW5k
aWYKIH0KIAogI2lmIFVTRShHTElCKQpAQCAtNjczOSwzOSArNjY1MCwzIEBAIHZvaWQgV2ViSW5z
dGFsbE1lbW9yeVByZXNzdXJlSGFuZGxlcih2b2kKIHsKICAgICBtZW1vcnlQcmVzc3VyZUhhbmRs
ZXIoKS5pbnN0YWxsKCk7CiB9Ci0KLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID09IDEwNTAKLQotc3RhdGljIElNUCBvcmlnaW5hbFJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJp
YnV0ZXNJbXA7Ci0KLXN0YXRpYyBpZCBvYmplY3RFbGVtZW50RGF0YUF0dHJpYnV0ZShET01IVE1M
T2JqZWN0RWxlbWVudCAqc2VsZiwgU0VMKQotewotICAgIHJldHVybiBbc2VsZiBnZXRBdHRyaWJ1
dGU6QCJkYXRhIl07Ci19Ci0KLXN0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJp
YnV0ZXMoRE9NTm9kZSAqc2VsZiwgU0VMIHNlbGVjdG9yLCBCT09MIGEsIEJPT0wgYiwgQk9PTCBj
KQotewotICAgIC8vIFdoaWxlIGluc2lkZSB0aGlzIE1haWwgZnVuY3Rpb24sIGNoYW5nZSB0aGUg
YmVoYXZpb3Igb2YgLVtET01IVE1MT2JqZWN0RWxlbWVudCBkYXRhXSBiYWNrIHRvIHdoYXQgaXQg
dXNlZCB0byBiZQotICAgIC8vIGJlZm9yZSB3ZSBmaXhlZCBhIGJ1ZyBpbiBpdCAoc2VlIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMwMDQ0IGZvciB0aGF0IGNoYW5nZSkuCi0KLSAg
ICAvLyBJdCdzIGEgbGl0dGxlIGJpdCBzdHJhbmdlIHRvIHBhdGNoIGEgbWV0aG9kIGRlZmluZWQg
YnkgV2ViS2l0LCBidXQgaXQgaGVscHMga2VlcCB0aGlzIHdvcmthcm91bmQgc2VsZi1jb250YWlu
ZWQuCi0KLSAgICBNZXRob2QgbWV0aG9kVG9QYXRjaCA9IGNsYXNzX2dldEluc3RhbmNlTWV0aG9k
KG9iamNfZ2V0UmVxdWlyZWRDbGFzcygiRE9NSFRNTE9iamVjdEVsZW1lbnQiKSwgQHNlbGVjdG9y
KGRhdGEpKTsKLSAgICBJTVAgb3JpZ2luYWxEYXRhSW1wID0gbWV0aG9kX3NldEltcGxlbWVudGF0
aW9uKG1ldGhvZFRvUGF0Y2gsIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvYmplY3RFbGVtZW50RGF0
YUF0dHJpYnV0ZSkpOwotICAgIG9yaWdpbmFsUmVjdXJzaXZlbHlSZW1vdmVNYWlsQXR0cmlidXRl
c0ltcChzZWxmLCBzZWxlY3RvciwgYSwgYiwgYyk7Ci0gICAgbWV0aG9kX3NldEltcGxlbWVudGF0
aW9uKG1ldGhvZFRvUGF0Y2gsIG9yaWdpbmFsRGF0YUltcCk7Ci19Ci0KLSNlbmRpZgotCi1zdGF0
aWMgdm9pZCBwYXRjaE1haWxSZW1vdmVBdHRyaWJ1dGVzTWV0aG9kKCkKLXsKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBpZiAoIVdLQXBwVmVyc2lvbkNo
ZWNrTGVzc1RoYW4oQCJjb20uYXBwbGUubWFpbCIsIC0xLCA0LjApKQotICAgICAgICByZXR1cm47
Ci0gICAgTWV0aG9kIG1ldGhvZFRvUGF0Y2ggPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpj
X2dldFJlcXVpcmVkQ2xhc3MoIkRPTU5vZGUiKSwgQHNlbGVjdG9yKHJlY3Vyc2l2ZWx5UmVtb3Zl
TWFpbEF0dHJpYnV0ZXM6Y29udmVydE9iamVjdHNUb0ltYWdlczpjb252ZXJ0RWRpdGFibGVFbGVt
ZW50czopKTsKLSAgICBpZiAoIW1ldGhvZFRvUGF0Y2gpCi0gICAgICAgIHJldHVybjsKLSAgICBv
cmlnaW5hbFJlY3Vyc2l2ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXNJbXAgPSBtZXRob2Rfc2V0SW1w
bGVtZW50YXRpb24obWV0aG9kVG9QYXRjaCwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHJlY3Vyc2l2
ZWx5UmVtb3ZlTWFpbEF0dHJpYnV0ZXMpKTsKLSNlbmRpZgotfQpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMTQ3MjIzKQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NzksNyArNjc5LDYgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3VGV4dENoZWNraW5n
KQogLSAoQk9PTClpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkOwogLSAoQk9PTClp
c0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQ7CiAtIChCT09MKWlzQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uRW5hYmxlZDsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjAKIC0gKHZvaWQpc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVk
OihCT09MKWZsYWc7CiAtICh2b2lkKXRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOihp
ZClzZW5kZXI7CiAtICh2b2lkKXNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkOihCT09M
KWZsYWc7CkBAIC02OTAsNyArNjg5LDYgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3VGV4
dENoZWNraW5nKQogLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQ6KGlkKXNl
bmRlcjsKIC0gKHZvaWQpc2V0QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZDooQk9P
TClmbGFnOwogLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb246KGlkKXNl
bmRlcjsKLSNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdFZGl0aW5n
SW5NYWlsKQo=
</data>
<flag name="review"
          id="218065"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>