<?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>99435</bug_id>
          
          <creation_ts>2012-10-16 01:44:05 -0700</creation_ts>
          <short_desc>MediaStream API: Add the chromium API for RTCDataChannel</short_desc>
          <delta_ts>2012-10-17 01:58:52 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>cabanier</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>742962</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-16 01:44:05 -0700</bug_when>
    <thetext>Add the chromium API for RTCDataChannel, as well as DRT mock changes and tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742996</commentid>
    <comment_count>1</comment_count>
      <attachid>168898</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-16 02:30:51 -0700</bug_when>
    <thetext>Created attachment 168898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743185</commentid>
    <comment_count>2</comment_count>
    <who name="Rik Cabanier">cabanier</who>
    <bug_when>2012-10-16 08:58:43 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743407</commentid>
    <comment_count>3</comment_count>
      <attachid>168898</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-16 12:15:16 -0700</bug_when>
    <thetext>Comment on attachment 168898
Patch

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

&gt; Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h:71
&gt; +    // RTCDataChannel
&gt; +    virtual bool openDataChannel(const WebRTCDataChannel&amp;) { return false; }
&gt; +    virtual bool sendStringData(const WebRTCDataChannel&amp;, const WebString&amp;) { return false; }
&gt; +    virtual bool sendRawData(const WebRTCDataChannel&amp;, const char*, size_t) { return false; }
&gt; +    virtual void closeDataChannel(const WebRTCDataChannel&amp;) { }

The relationship between the PeerConnectionHandler and the DataChannel are slightly strange.  The data channel seems to represent the WebKit side of the channel and you&apos;re using PeerConnectionHandler as the embedder endpoint.  I would have expected the DataChannel to have more a of a send/didReceive sort of API, but this approach seems ok too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743437</commentid>
    <comment_count>4</comment_count>
      <attachid>168898</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-16 12:47:45 -0700</bug_when>
    <thetext>Comment on attachment 168898
Patch

Rejecting attachment 168898 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Rename some AudioNodes

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.

Full output: http://queues.webkit.org/results/14391275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743495</commentid>
    <comment_count>5</comment_count>
      <attachid>168898</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-16 13:41:39 -0700</bug_when>
    <thetext>Comment on attachment 168898
Patch

Clearing flags on attachment: 168898

Committed r131494: &lt;http://trac.webkit.org/changeset/131494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743496</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-16 13:41:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744024</commentid>
    <comment_count>7</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-10-17 01:58:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 168898 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168898&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebRTCPeerConnectionHandler.h:71
&gt; &gt; +    // RTCDataChannel
&gt; &gt; +    virtual bool openDataChannel(const WebRTCDataChannel&amp;) { return false; }
&gt; &gt; +    virtual bool sendStringData(const WebRTCDataChannel&amp;, const WebString&amp;) { return false; }
&gt; &gt; +    virtual bool sendRawData(const WebRTCDataChannel&amp;, const char*, size_t) { return false; }
&gt; &gt; +    virtual void closeDataChannel(const WebRTCDataChannel&amp;) { }
&gt; 
&gt; The relationship between the PeerConnectionHandler and the DataChannel are slightly strange.  The data channel seems to represent the WebKit side of the channel and you&apos;re using PeerConnectionHandler as the embedder endpoint.  I would have expected the DataChannel to have more a of a send/didReceive sort of API, but this approach seems ok too.

It&apos;s a very good comment, I implemented it like this for two reasons:

1)  Data channels are not stand-alone entities like websockets are, they are &quot;only&quot; a view into part of the data stream between two PeerConnections. Hence it makes some sense of extending the PeerConnection handler interface.

2) The current descriptor pattern that we are using doesn&apos;t really work for communication from JS to the UA, but the other way is fine.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168898</attachid>
            <date>2012-10-16 02:30:51 -0700</date>
            <delta_ts>2012-10-16 13:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99435-20121016112940.patch</filename>
            <type>text/plain</type>
            <size>32895</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5NGNkNjAwOTVjMTYy
OTRlMmNkMjA2YjBhZjBiNjMzMzU1MDJlMjlhLi5hZTQzYzFhMjU4ODEzYWRjZjFhMDU1ZDYwMjRi
OTRjZDVlYjlkYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0xNiAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEFkZCB0aGUgY2hyb21pdW0gQVBJIGZvciBSVENEYXRhQ2hhbm5lbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0MzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgV2ViUlRDRGF0
YUNoYW5uZWwuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAg
KEV4dHJhRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjpFeHRyYURh
dGE6On5FeHRyYURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbDo6V2Vi
UlRDRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbDo6fldl
YlJUQ0RhdGFDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWw6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjppc051bGwpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Om9wZW5EYXRh
Q2hhbm5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6
c2VuZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6OnNlbmRSYXdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjpjbG9zZURhdGFDaGFubmVsKToKKwogMjAxMi0xMC0xMyAgQ2hyaXMgUm9nZXJz
ICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFdlYkF1ZGlvQnVzIG5lZWRzIHN1cHBv
cnQgZm9yIHJlc2l6aW5nIGJ1cyB0byBhIHNtYWxsZXIgc2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdjMGZk
NjcxOWZkMTFhNWI3Nzg5YzdlNDZjNmQzMDE4ZmE3ZTAzM2QuLmFkNzU3MGZlNzlhZjkzNWNjZGY1
YmY2MTA5YmY3MDc3YTRiODk3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0x
MC0xNiAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IEFkZCB0aGUgY2hyb21pdW0gQVBJIGZvciBSVENEYXRhQ2hhbm5lbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0MzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgV2Vi
UlRDRGF0YUNoYW5uZWwuCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1kYXRhY2hhbm5lbC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJSVENEYXRhQ2hhbm5lbC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEV4dHJhRGF0YUNvbnRhaW5lcik6
CisgICAgICAgIChXZWJLaXQ6OkV4dHJhRGF0YUNvbnRhaW5lcjo6RXh0cmFEYXRhQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYktpdDo6RXh0cmFEYXRhQ29udGFpbmVyOjpleHRyYURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbDo6V2ViUlRDRGF0YUNoYW5uZWwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJS
VENEYXRhQ2hhbm5lbDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5l
bDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWw6Om9wZXJhdG9yIFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvciopOgorICAgICAgICAoV2ViS2l0OjpXZWJSVENEYXRh
Q2hhbm5lbDo6ZXh0cmFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWw6
OnNldEV4dHJhRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjpsYWJl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjpyZWxpYWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjpzZXRCdWZmZXJlZEFtb3VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjpyZWFkeVN0YXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjpkYXRhQXJyaXZlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsOjplcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06Om5lZ290
aWF0aW9uTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtOjpkaWRHZW5lcmF0ZUlDRUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpkaWRD
aGFuZ2VSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtOjpkaWRDaGFuZ2VJQ0VTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKToKKwog
MjAxMi0xMC0xNiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgaW4gTG9jYWxlKiBjbGFzc2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGZiZTUwN2E4ZTViNjY5NmM5MDBhNmQzYTE3NmVlYTQ3YWZkYmQ4NzIu
LjA3NGVhMGZmZWUzNWI5ODY0ZTFkNTYwNmRkYTAzMzA0Y2MyODU3NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMTYgIFRvbW15IFdpZGVuZmx5
Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBBZGQg
dGhlIGNocm9taXVtIEFQSSBmb3IgUlRDRGF0YUNoYW5uZWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGNoZWNrcyBmb3IgUlRDRGF0YUNoYW5u
ZWwuCisKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisKIDIwMTItMTAt
MTUgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gRW5hYmxlIEZBU1RfTU9CSUxFX1NDUk9MTElORyBmb3IgQW5kcm9pZApkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZv
cm0uZ3lwaQppbmRleCA2OWRlOTM3MzRlMjdlY2E1ODIxMDRhZmExMmM1MTViYzk2Yjg3MTc2Li5m
ZDI0YzBhOTdlODgwMGI1Mjk0YmU3NmY4ZDE0MjUxZDM5MDMxYjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0u
Z3lwaQpAQCAtMTA3LDYgKzEwNyw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YlByaXZhdGVPd25QdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZh
dGVQdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0NvbmZpZ3VyYXRp
b24uaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENJQ0VDYW5kaWRhdGUuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJSVENEYXRhQ2hhbm5lbC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJSVENEYXRhQ2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNzU0MWNjOWEyNWI3ZTc5YWJiOGQwZjU4
MjAzODc0YTdiM2FmNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJSVENEYXRhQ2hhbm5lbF9oCisjZGVmaW5lIFdlYlJUQ0RhdGFDaGFu
bmVsX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIu
aCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUlRDRGF0YUNoYW5uZWwgeworcHVibGljOgorICAgIGNsYXNzIEV4dHJhRGF0YSB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5FeHRyYURhdGEoKSB7IH0KKyAgICB9OworCisg
ICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlTdGF0ZUNvbm5lY3RpbmcgPSAwLAor
ICAgICAgICBSZWFkeVN0YXRlT3BlbiA9IDEsCisgICAgICAgIFJlYWR5U3RhdGVDbG9zaW5nID0g
MiwKKyAgICAgICAgUmVhZHlTdGF0ZUNsb3NlZCA9IDMsCisgICAgfTsKKworICAgIFdlYlJUQ0Rh
dGFDaGFubmVsKCkgeyB9CisgICAgV2ViUlRDRGF0YUNoYW5uZWwoY29uc3QgV2ViUlRDRGF0YUNo
YW5uZWwmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViUlRDRGF0YUNoYW5uZWwo
KSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlJUQ0RhdGFDaGFubmVsJiBvcGVyYXRvcj0oY29uc3Qg
V2ViUlRDRGF0YUNoYW5uZWwmIG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90aGVyKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBp
bml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpOworCisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYpOworCisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7
IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgV2ViU3Ry
aW5nIGxhYmVsKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIHJlbGlhYmxlKCkgY29u
c3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QnVmZmVyZWRBbW91bnQodW5zaWduZWQg
bG9uZyk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKFJlYWR5U3Rh
dGUpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkYXRhQXJyaXZlZChjb25zdCBXZWJTdHJpbmcm
KTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGF0YUFycml2ZWQoY29uc3QgY2hhciosIHNpemVf
dCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGVycm9yKCk7CisKKyAgICAvLyBFeHRyYSBkYXRh
IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlJUQ0RhdGFDaGFubmVsLgorICAgIC8vIElmIG5vbi1u
dWxsLCB0aGUgZXh0cmEgZGF0YSBwb2ludGVyIHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSBvYmpl
Y3QgaXMgZGVzdHJveWVkLgorICAgIC8vIFNldHRpbmcgdGhlIGV4dHJhIGRhdGEgcG9pbnRlciB3
aWxsIGNhdXNlIGFueSBleGlzdGluZyBub24tbnVsbAorICAgIC8vIGV4dHJhIGRhdGEgcG9pbnRl
ciB0byBiZSBkZWxldGVkLgorICAgIFdFQktJVF9FWFBPUlQgRXh0cmFEYXRhKiBleHRyYURhdGEo
KSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RXh0cmFEYXRhKEV4dHJhRGF0YSop
OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViUlRDRGF0YUNoYW5uZWwoY29u
c3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4mKTsK
KyAgICBXZWJSVENEYXRhQ2hhbm5lbChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3Iq
KTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxE
ZXNjcmlwdG9yPigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
RGVzY3JpcHRvciooKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQ
dHI8V2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBtX3ByaXZhdGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJUQ0RhdGFDaGFubmVsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IGUwYzY2MzA2OWFhYTg5MjY0NmUxODhiYTZiNWNi
MTM3ZDVjMzQwMzEuLjMxNzAyMTQxMjQzMGIzMzFiYTMyNTk1MGNlMjQwNTg3YmMyM2RmOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtMzUsMTIgKzM1LDE0IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIFdlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvcjsKIGNsYXNzIFdlYlJUQ0NvbmZpZ3VyYXRpb247CitjbGFzcyBXZWJSVENEYXRh
Q2hhbm5lbDsKIGNsYXNzIFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIGNsYXNzIFdlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudDsKIGNsYXNzIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKIGNs
YXNzIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q7CiBjbGFzcyBXZWJSVENTdGF0c1Jl
cXVlc3Q7CiBjbGFzcyBXZWJSVENWb2lkUmVxdWVzdDsKK2NsYXNzIFdlYlN0cmluZzsKIAogY2xh
c3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyIHsKIHB1YmxpYzoKQEAgLTYxLDYgKzYzLDEy
IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogUmVtb3ZlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24g
d2hlbiBjbGllbnRzIGhhdmUgY2hhbmdlZC4KICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29u
c3QgV2ViUlRDU3RhdHNSZXF1ZXN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7
CisKKyAgICAvLyBSVENEYXRhQ2hhbm5lbAorICAgIHZpcnR1YWwgYm9vbCBvcGVuRGF0YUNoYW5u
ZWwoY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBzZW5kU3RyaW5nRGF0YShjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYsIGNvbnN0IFdl
YlN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNlbmRSYXdEYXRh
KGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiwgY29uc3QgY2hhciosIHNpemVfdCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhQ2hhbm5lbChjb25zdCBXZWJSVENE
YXRhQ2hhbm5lbCYpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMWVjN2RkOGNkZmExNDY0Njk1NWQ2MjQ0MGE2YmM3NjY3NjdjZjQ4OS4uMjc5YjQ2
YjE5Yjg0YWI3NDNjYjhkZGM3NjQ2MTQ0NmMwMWM1MmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
ODM5Myw2ICs4MzkzLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDQ29uZmlndXJhdGlvbi5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDRGF0YUNoYW5uZWwuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0lDRUNhbmRpZGF0ZS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlJUQ0RhdGFDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUlRDRGF0YUNo
YW5uZWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjMTQ3OWY4MTE0NTBmMDQ2NDc2ZmM2ZGJlZDBjOTQ0ZTE5
YzQ3ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYlJUQ0RhdGFDaGFubmVsLmNwcApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgorCisjaW5jbHVkZSAiUlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRXh0cmFEYXRhQ29udGFpbmVyIDogcHVibGljIFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6RXh0cmFEYXRhIHsKK3B1YmxpYzoKKyAgICBF
eHRyYURhdGFDb250YWluZXIoV2ViUlRDRGF0YUNoYW5uZWw6OkV4dHJhRGF0YSogZXh0cmFEYXRh
KSA6IG1fZXh0cmFEYXRhKFdURjo6YWRvcHRQdHIoZXh0cmFEYXRhKSkgeyB9CisKKyAgICBXZWJS
VENEYXRhQ2hhbm5lbDo6RXh0cmFEYXRhKiBleHRyYURhdGEoKSB7IHJldHVybiBtX2V4dHJhRGF0
YS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIE93blB0cjxXZWJSVENEYXRhQ2hhbm5lbDo6RXh0
cmFEYXRhPiBtX2V4dHJhRGF0YTsKK307CisKK1dlYlJUQ0RhdGFDaGFubmVsOjpXZWJSVENEYXRh
Q2hhbm5lbChjb25zdCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4mIGRhdGFD
aGFubmVsKQorICAgIDogbV9wcml2YXRlKGRhdGFDaGFubmVsKQoreworfQorCitXZWJSVENEYXRh
Q2hhbm5lbDo6V2ViUlRDRGF0YUNoYW5uZWwoUlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yKiBkYXRh
Q2hhbm5lbCkKKyAgICA6IG1fcHJpdmF0ZShkYXRhQ2hhbm5lbCkKK3sKK30KKwordm9pZCBXZWJS
VENEYXRhQ2hhbm5lbDo6aW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJl
bGlhYmxlKQoreworICAgIG1fcHJpdmF0ZSA9IFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6Y3Jl
YXRlKGxhYmVsLCByZWxpYWJsZSk7Cit9CisKK3ZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6OmFzc2ln
bihjb25zdCBXZWJSVENEYXRhQ2hhbm5lbCYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3Ro
ZXIubV9wcml2YXRlOworfQorCit2b2lkIFdlYlJUQ0RhdGFDaGFubmVsOjpyZXNldCgpCit7Cisg
ICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK1dlYlJUQ0RhdGFDaGFubmVsOjpvcGVyYXRvciBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4oKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK1dlYlJUQ0RhdGFDaGFubmVsOjpvcGVy
YXRvciBXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3IqKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJSVENEYXRhQ2hhbm5lbDo6RXh0cmFEYXRh
KiBXZWJSVENEYXRhQ2hhbm5lbDo6ZXh0cmFEYXRhKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8UlRD
RGF0YUNoYW5uZWxEZXNjcmlwdG9yOjpFeHRyYURhdGE+IGRhdGEgPSBtX3ByaXZhdGUtPmV4dHJh
RGF0YSgpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEV4dHJhRGF0YUNvbnRhaW5lcio+KGRhdGEuZ2V0KCkpLT5leHRyYURhdGEoKTsK
K30KKwordm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6c2V0RXh0cmFEYXRhKEV4dHJhRGF0YSogZXh0
cmFEYXRhKQoreworICAgIG1fcHJpdmF0ZS0+c2V0RXh0cmFEYXRhKGFkb3B0UmVmKG5ldyBFeHRy
YURhdGFDb250YWluZXIoZXh0cmFEYXRhKSkpOworfQorCitXZWJTdHJpbmcgV2ViUlRDRGF0YUNo
YW5uZWw6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5sYWJlbCgpOworfQorCitib29sIFdlYlJUQ0RhdGFDaGFubmVsOjpyZWxp
YWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+cmVsaWFibGUoKTsKK30KKwordm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6c2V0QnVmZmVy
ZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkKK3sKKyAgICBBU1NFUlQoIWlz
TnVsbCgpKTsKKyAgICBtX3ByaXZhdGUtPnNldEJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50
KTsKK30KKwordm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6cmVhZHlTdGF0ZUNoYW5nZWQoUmVhZHlT
dGF0ZSBzdGF0ZSkKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICBtX3ByaXZhdGUtPnJl
YWR5U3RhdGVDaGFuZ2VkKHN0YXRpY19jYXN0PFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVh
ZHlTdGF0ZT4oc3RhdGUpKTsKK30KKwordm9pZCBXZWJSVENEYXRhQ2hhbm5lbDo6ZGF0YUFycml2
ZWQoY29uc3QgV2ViU3RyaW5nJiBkYXRhKQoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAg
IG1fcHJpdmF0ZS0+ZGF0YUFycml2ZWQoZGF0YSk7Cit9CisKK3ZvaWQgV2ViUlRDRGF0YUNoYW5u
ZWw6OmRhdGFBcnJpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQorewor
ICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIG1fcHJpdmF0ZS0+ZGF0YUFycml2ZWQoZGF0YSwg
ZGF0YUxlbmd0aCk7Cit9CisKK3ZvaWQgV2ViUlRDRGF0YUNoYW5uZWw6OmVycm9yKCkKK3sKKyAg
ICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICBtX3ByaXZhdGUtPmVycm9yKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0u
Y3BwCmluZGV4IDA3YzFjY2QxNWFhYzU1YjYxZGFkYzBlNGFiYzBjNjA1ODk5ZWFjNjEuLjYxZmIx
YzQ4YWQwZDBkNDIzZGRhZGJhODg0M2RhNmU4NGI2MGE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViUlRDQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5l
bC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENJQ0VDYW5kaWRhdGUuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJU
Q1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QuaD4KQEAgLTE3NSw2ICsxNzYsMzggQEAgdm9pZCBS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6Z2V0U3RhdHMoUGFzc1JlZlB0cjxSVENT
dGF0c1JlcXVlc3Q+IHJlcXUKICAgICBtX3dlYkhhbmRsZXItPmdldFN0YXRzKHJlcXVlc3QpOwog
fQogCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpvcGVuRGF0YUNoYW5u
ZWwoUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsKQorewor
ICAgIGlmICghbV93ZWJIYW5kbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gbV93ZWJIYW5kbGVyLT5vcGVuRGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpOworfQorCitib29s
IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpzZW5kU3RyaW5nRGF0YShQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwsIGNvbnN0IFN0cmluZyYg
ZGF0YSkKK3sKKyAgICBpZiAoIW1fd2ViSGFuZGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+c2VuZFN0cmluZ0RhdGEoZGF0YUNoYW5uZWwsIGRh
dGEpOworfQorCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpzZW5kUmF3
RGF0YShQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQoreworICAgIGlmICghbV93ZWJIYW5k
bGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5z
ZW5kUmF3RGF0YShkYXRhQ2hhbm5lbCwgZGF0YSwgZGF0YUxlbmd0aCk7Cit9CisKK3ZvaWQgUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNsb3NlRGF0YUNoYW5uZWwoUGFzc1JlZlB0
cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsKQoreworICAgIGlmICghbV93
ZWJIYW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5j
bG9zZURhdGFDaGFubmVsKGRhdGFDaGFubmVsKTsKK30KKwogdm9pZCBSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDaHJvbWl1bTo6c3RvcCgpCiB7CiAgICAgaWYgKCFtX3dlYkhhbmRsZXIpCkBAIC0y
MTMsMjkgKzI0Niw2IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmRp
ZFJlbW92ZVJlbW90ZVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lCiAgICAgbV9jbGllbnQtPmRp
ZFJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOwogfQogCi1ib29s
IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpvcGVuRGF0YUNoYW5uZWwoUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I+IGRhdGFDaGFubmVsKQotewotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgd2hlbiBXZWJLaXQgY2hhbmdlcyBoYXZlIGxhbmRlZC4KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnNl
bmRTdHJpbmdEYXRhKFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBkYXRhQ2hh
bm5lbCwgY29uc3QgU3RyaW5nJiBkYXRhKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hl
biBXZWJLaXQgY2hhbmdlcyBoYXZlIGxhbmRlZC4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnNlbmRSYXdEYXRhKFBhc3NSZWZQ
dHI8UlRDRGF0YUNoYW5uZWxEZXNjcmlwdG9yPiBkYXRhQ2hhbm5lbCwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGRhdGFMZW5ndGgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFdl
YktpdCBjaGFuZ2VzIGhhdmUgbGFuZGVkLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6Y2xvc2VEYXRhQ2hhbm5lbChQYXNzUmVm
UHRyPFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcj4gZGF0YUNoYW5uZWwpCi17Ci0gICAgLy8gRklY
TUU6IEltcGxlbWVudCB3aGVuIFdlYktpdCBjaGFuZ2VzIGhhdmUgbGFuZGVkLgotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApp
bmRleCBkMjQ2MWE5YjQ2ZWM5MGUzODUyZjE4MzY5NWM0YTAyN2Y3NmYyZDMyLi45NWU4YjYwN2Qy
MjhmOGJlODVjZGNlOWEzMWIxODkzNzExM2Q1MmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjQsNiArNjQsNyBAQAog
I2luY2x1ZGUgIlBhZ2VWaXNpYmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlv
bjAwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DdXJzb3IuaCIKKyNpbmNsdWRlICJSVENEYXRhQ2hh
bm5lbERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKQEAgLTExNiw2ICsxMTcsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0
cmVhbVNvdXJjZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlZmVy
cmVyUG9saWN5Lmg+CkBAIC01OTEsNiArNTkzLDExIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0ZUNvbm5lY3Rl
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudDo6SUNFU3RhdGVDb21wbGV0ZWQsIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dDo6SWNlU3RhdGVDb21wbGV0ZWQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ6OklDRVN0YXRlRmFpbGVkLCBSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQ6OkljZVN0YXRlRmFpbGVkKTsKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJQ0VTdGF0ZUNs
b3NlZCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OjpJY2VTdGF0ZUNsb3NlZCk7CisK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3Rh
dGVDb25uZWN0aW5nLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDb25uZWN0
aW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJl
YWR5U3RhdGVPcGVuLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVPcGVuKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3Rh
dGVDbG9zaW5nLCBSVENEYXRhQ2hhbm5lbERlc2NyaXB0b3I6OlJlYWR5U3RhdGVDbG9zaW5nKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViUlRDRGF0YUNoYW5uZWw6OlJlYWR5U3Rh
dGVDbG9zZWQsIFJUQ0RhdGFDaGFubmVsRGVzY3JpcHRvcjo6UmVhZHlTdGF0ZUNsb3NlZCk7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWY5MGQxYjgzMjcyZTI1ZDNhODdkYTU2
NjMzMWI4NzRlMzAxYjhhMS4uM2M1Y2U0YTA0NjgwMTBjNTY5YTlmZmExMGE5YTJhY2U3M2EwZjll
NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMxIEBACisyMDEyLTEwLTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29n
bGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogQWRkIHRoZSBjaHJvbWl1bSBBUEkg
Zm9yIFJUQ0RhdGFDaGFubmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05OTQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGluZyBtb2NrIHN1cHBvcnQgZm9yIFdlYlJUQ0RhdGFDaGFubmVsLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5jcHA6CisgICAgICAgIChTdHJpbmdEYXRhVGFzayk6CisgICAgICAgIChTdHJpbmdE
YXRhVGFzazo6U3RyaW5nRGF0YVRhc2spOgorICAgICAgICAoQ2hhclB0ckRhdGFUYXNrKToKKyAg
ICAgICAgKENoYXJQdHJEYXRhVGFzazo6Q2hhclB0ckRhdGFUYXNrKToKKyAgICAgICAgKERhdGFD
aGFubmVsUmVhZHlTdGF0ZVRhc2spOgorICAgICAgICAoRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFz
azo6RGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayk6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlv
blJlYWR5U3RhdGVUYXNrKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRh
c2s6OlJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2spOgorICAgICAgICAoTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6
CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnN0b3ApOgorICAgICAg
ICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6b3BlbkRhdGFDaGFubmVsKToKKyAg
ICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNsb3NlRGF0YUNoYW5uZWwp
OgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c2VuZFN0cmluZ0Rh
dGEpOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c2VuZFJhd0Rh
dGEpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIpOgorCiAyMDEyLTEwLTE1ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBEaXNwbGF5IHBhZ2UgZmF2aWNvbnMgaW4g
TWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggMDlmNWM1
ZDVlMTI2YzdlMjUwMzVkODRmZDFmMTE3N2FhYTUyYzQ4NS4uNzQyZTMwZTE5ZWNiN2FiYjVlOGVh
ZTc4OTEyYzYxMTA4NjVlOTQwMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAK
QEAgLTEyNCwxNyArMTI0LDEwMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdWNjZWVkZWQ7CiB9
OwogCitjbGFzcyBTdHJpbmdEYXRhVGFzayA6IHB1YmxpYyBNZXRob2RUYXNrPE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICBTdHJpbmdEYXRhVGFzayhNb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0IFdlYlJUQ0RhdGFDaGFu
bmVsJiBkYXRhQ2hhbm5lbCwgY29uc3QgV2ViU3RyaW5nJiBkYXRhKQorICAgICAgICA6IE1ldGhv
ZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICAs
IG1fZGF0YUNoYW5uZWwoZGF0YUNoYW5uZWwpCisgICAgICAgICwgbV9kYXRhKGRhdGEpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKKyAgICB7
CisgICAgICAgIG1fZGF0YUNoYW5uZWwuZGF0YUFycml2ZWQobV9kYXRhKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgV2ViUlRDRGF0YUNoYW5uZWwgbV9kYXRhQ2hhbm5lbDsKKyAgICBXZWJTdHJp
bmcgbV9kYXRhOworfTsKKworY2xhc3MgQ2hhclB0ckRhdGFUYXNrIDogcHVibGljIE1ldGhvZFRh
c2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4geworcHVibGljOgorICAgIENoYXJQ
dHJEYXRhVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmplY3QsIGNvbnN0
IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKKyAgICAgICAgOiBNZXRob2RUYXNrPE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI+KG9iamVjdCkKKyAgICAgICAgLCBtX2RhdGFDaGFubmVsKGRhdGFDaGFubmVsKQorICAg
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICB7CisgICAgICAgIG1fZGF0YSA9IG5ldyBjaGFy
W21fbGVuZ3RoXTsKKyAgICAgICAgbWVtY3B5KG1fZGF0YSwgZGF0YSwgbV9sZW5ndGgpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkgT1ZFUlJJREUKKyAgICB7CisgICAg
ICAgIG1fZGF0YUNoYW5uZWwuZGF0YUFycml2ZWQobV9kYXRhLCBtX2xlbmd0aCk7CisgICAgICAg
IGRlbGV0ZSBtX2RhdGE7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYlJUQ0RhdGFDaGFubmVs
IG1fZGF0YUNoYW5uZWw7CisgICAgY2hhciogbV9kYXRhOworICAgIHNpemVfdCBtX2xlbmd0aDsK
K307CisKK2NsYXNzIERhdGFDaGFubmVsUmVhZHlTdGF0ZVRhc2sgOiBwdWJsaWMgTWV0aG9kVGFz
azxNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiB7CitwdWJsaWM6CisgICAgRGF0YUNo
YW5uZWxSZWFkeVN0YXRlVGFzayhNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBvYmpl
Y3QsIGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCwgV2ViUlRDRGF0YUNoYW5u
ZWw6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgICAgIDogTWV0aG9kVGFzazxNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9kYXRhQ2hhbm5lbChkYXRh
Q2hhbm5lbCkKKyAgICAgICAgLCBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2RhdGFD
aGFubmVsLnJlYWR5U3RhdGVDaGFuZ2VkKG1fc3RhdGUpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBXZWJSVENEYXRhQ2hhbm5lbCBtX2RhdGFDaGFubmVsOworICAgIFdlYlJUQ0RhdGFDaGFubmVs
OjpSZWFkeVN0YXRlIG1fc3RhdGU7Cit9OworCitjbGFzcyBSVENQZWVyQ29ubmVjdGlvblJlYWR5
U3RhdGVUYXNrIDogcHVibGljIE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcj4geworcHVibGljOgorICAgIFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2soTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogb2JqZWN0LCBXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQqIGNsaWVudCwgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
OjpSZWFkeVN0YXRlIHN0YXRlKQorICAgICAgICA6IE1ldGhvZFRhc2s8TW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcj4ob2JqZWN0KQorICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAg
ICAgICAgLCBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
cnVuSWZWYWxpZCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdl
UmVhZHlTdGF0ZShtX3N0YXRlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQ6OlJlYWR5U3RhdGUgbV9zdGF0ZTsKK307CisKIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogCiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpNb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyKFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xp
ZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQogICAg
ICwgbV9zdHJlYW1Db3VudCgwKQogewogfQogCiBib29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OmluaXRpYWxpemUoY29uc3QgV2ViUlRDQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdl
Yk1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQogewotICAgIHJldHVybiBNb2NrQ29uc3Ry
YWludHM6OnZlcmlmeUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTsKKyAgICBpZiAoTW9ja0NvbnN0
cmFpbnRzOjp2ZXJpZnlDb25zdHJhaW50cyhjb25zdHJhaW50cykpIHsKKyAgICAgICAgcG9zdFRh
c2sobmV3IFJUQ1BlZXJDb25uZWN0aW9uUmVhZHlTdGF0ZVRhc2sodGhpcywgbV9jbGllbnQsIFdl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6UmVhZHlTdGF0ZUFjdGl2ZSkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQg
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlT2ZmZXIoY29uc3QgV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViTWVkaWFDb25zdHJh
aW50cyYgY29uc3RyYWludHMpCkBAIC0yMzAsNiArMzE2LDM5IEBAIHZvaWQgTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcjo6Z2V0U3RhdHMoY29uc3QgV2ViUlRDU3RhdHNSZXF1ZXN0JiBy
ZXF1ZXN0CiAKIHZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c3RvcCgpCiB7
CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKK30KKworYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjpvcGVuRGF0YUNoYW5uZWwoY29uc3QgV2ViUlRDRGF0YUNoYW5uZWwmIGRhdGFD
aGFubmVsKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHBvc3RUYXNrKG5ldyBEYXRhQ2hhbm5lbFJlYWR5U3RhdGVUYXNrKHRoaXMsIGRhdGFDaGFu
bmVsLCBXZWJSVENEYXRhQ2hhbm5lbDo6UmVhZHlTdGF0ZU9wZW4pKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjbG9zZURhdGFD
aGFubmVsKGNvbnN0IFdlYlJUQ0RhdGFDaGFubmVsJiBkYXRhQ2hhbm5lbCkKK3sKKyAgICBwb3N0
VGFzayhuZXcgRGF0YUNoYW5uZWxSZWFkeVN0YXRlVGFzayh0aGlzLCBkYXRhQ2hhbm5lbCwgV2Vi
UlRDRGF0YUNoYW5uZWw6OlJlYWR5U3RhdGVDbG9zZWQpKTsKK30KKworYm9vbCBNb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZW5kU3RyaW5nRGF0YShjb25zdCBXZWJSVENEYXRhQ2hh
bm5lbCYgZGF0YUNoYW5uZWwsIGNvbnN0IFdlYlN0cmluZyYgZGF0YSkKK3sKKyAgICBpZiAobV9z
dG9wcGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwb3N0VGFzayhuZXcgU3RyaW5n
RGF0YVRhc2sodGhpcywgZGF0YUNoYW5uZWwsIGRhdGEpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZW5kUmF3RGF0YShjb25z
dCBXZWJSVENEYXRhQ2hhbm5lbCYgZGF0YUNoYW5uZWwsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcG9zdFRhc2sobmV3IENoYXJQdHJEYXRhVGFzayh0aGlzLCBkYXRhQ2hhbm5lbCwgZGF0
YSwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IDQzZDA4N2UzNWNh
YzZmMzMwMDcwMzNhMjY2NmNkNjgzMTVlMWRhNjIuLjBlMzQ0OGYyMWM4NjEwNmJlNTNiMGVjYzQ2
MmE4ZjMwMDg1N2IwZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiVGFzay5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbC5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlw
dGlvblJlcXVlc3QuaD4KQEAgLTYyLDYgKzYzLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0U3RhdHMoY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0c1JlcXVlc3QmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCBib29sIG9w
ZW5EYXRhQ2hhbm5lbChjb25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFdlYktpdDo6V2ViUlRDRGF0
YUNoYW5uZWwmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBXZWJLaXQ6OldlYlJUQ0RhdGFDaGFubmVsJiwgY29u
c3QgY2hhciosIHNpemVfdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YUNo
YW5uZWwoY29uc3QgV2ViS2l0OjpXZWJSVENEYXRhQ2hhbm5lbCYpIE9WRVJSSURFOworCiAgICAg
Ly8gVGFzayByZWxhdGVkIG1ldGhvZHMKICAgICBUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVy
biAmbV90YXNrTGlzdDsgfQogCkBAIC02OSw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQogCiAgICAgV2ViS2l0OjpXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworICAgIGJvb2wgbV9zdG9wcGVkOwog
ICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgV2ViS2l0OjpXZWJSVENTZXNzaW9uRGVzY3Jp
cHRpb24gbV9sb2NhbERlc2NyaXB0aW9uOwogICAgIFdlYktpdDo6V2ViUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uIG1fcmVtb3RlRGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWM4MWE4N2U4MTc5ZmU1N2FjYTFk
MGYwZDc2MzY0MzU4YzVlYjVhYS4uOTUxNzdkNmZmZmEyNGQxNzUzYzkzNTAzOGM2ZGUzMTgyYzVi
MDg4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTE2ICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogQWRkIHRo
ZSBjaHJvbWl1bSBBUEkgZm9yIFJUQ0RhdGFDaGFubmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyB0ZXN0cyBmb3IgUlRDRGF0YUNoYW5uZWwu
CisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFu
bmVsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1kYXRhY2hhbm5lbC5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0xNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IHNvbWUgYXBwZWFy
YW5jZSBnbGl0Y2hlcyBvZiBtdWx0aXBsZSBmaWVsZHMgaW5wdXQgZWxlbWVudHMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNo
YW5uZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1kYXRhY2hhbm5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc5NjRhODA1
ZWZjMDAxNDczNmMzZGQ1MjNjMjYwNTQ3NThhYzNmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZGF0YWNoYW5uZWwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3RzIFJUQ0RhdGFDaGFubmVsLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwY19vbm9wZW4gd2FzIGNhbGxlZAorUEFT
UyBkYy5yZWFkeVN0YXRlIGlzICdjb25uZWN0aW5nJworUEFTUyBkYy5yZWxpYWJsZSBpcyB0cnVl
CitQQVNTIGRjLnJlbGlhYmxlIGlzIHRydWUKK1BBU1MgZGMucmVsaWFibGUgaXMgdHJ1ZQorUEFT
UyBkYy5yZWxpYWJsZSBpcyBmYWxzZQorUEFTUyBkY19vbm9wZW4gd2FzIGNhbGxlZAorUEFTUyBk
Yy5yZWFkeVN0YXRlIGlzICdvcGVuJworUEFTUyBkYy5sYWJlbCBpcyAnbGFiZWwnCitQQVNTIGRj
X29ubWVzc2FnZV9zdHJpbmcgd2FzIGNhbGxlZAorUEFTUyBkYXRhIGlzICd4eXp6eScKK1BBU1Mg
ZGNfb25tZXNzYWdlX2FycmF5YnVmZmVyIHdhcyBjYWxsZWQKK1BBU1MgZGF0YS5ieXRlTGVuZ3Ro
IGlzIDIKK1BBU1MgYXJyYXlbMF0gaXMgMTcKK1BBU1MgYXJyYXlbMV0gaXMgMTkKK1BBU1MgZGNf
b25tZXNzYWdlX2FycmF5YnVmZmVydmlldyB3YXMgY2FsbGVkCitQQVNTIGRhdGEuYnl0ZUxlbmd0
aCBpcyAyCitQQVNTIGFycmF5WzBdIGlzIDExCitQQVNTIGFycmF5WzFdIGlzIDEzCitQQVNTIGRj
X29uY2xvc2Ugd2FzIGNhbGxlZAorUEFTUyBkYy5yZWFkeVN0YXRlIGlzICdjbG9zZWQnCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kYXRhY2hh
bm5lbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi1kYXRhY2hhbm5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4NWM4OGQwM2NhOTZhZTZiZTc2OWZmOGU5
YjkzOGIyZDkyNDQ5MTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWRhdGFjaGFubmVsLmh0bWwKQEAgLTAsMCArMSw5NiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIFJU
Q0RhdGFDaGFubmVsLiIpOworCit2YXIgcGMgPSBudWxsOwordmFyIGRjID0gbnVsbDsKK3ZhciBk
YXRhOwordmFyIGFycmF5OworCitmdW5jdGlvbiBkY19vbmNsb3NlKCkgeworICAgIHRlc3RQYXNz
ZWQoImRjX29uY2xvc2Ugd2FzIGNhbGxlZCIpOworICAgIHNob3VsZEJlKCJkYy5yZWFkeVN0YXRl
IiwgIidjbG9zZWQnIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gZGNf
b25tZXNzYWdlX2FycmF5YnVmZmVydmlldyhlKSB7CisgICAgdGVzdFBhc3NlZCgiZGNfb25tZXNz
YWdlX2FycmF5YnVmZmVydmlldyB3YXMgY2FsbGVkIik7CisgICAgZGF0YSA9IGUuZGF0YTsKKyAg
ICBzaG91bGRCZSgiZGF0YS5ieXRlTGVuZ3RoIiwgIjIiKTsKKyAgICBhcnJheSA9IG5ldyBJbnQ4
QXJyYXkoZS5kYXRhKTsKKyAgICBzaG91bGRCZSgiYXJyYXlbMF0iLCAiMTEiKTsKKyAgICBzaG91
bGRCZSgiYXJyYXlbMV0iLCAiMTMiKTsKKworICAgIGRjLm9uY2xvc2UgPSBkY19vbmNsb3NlOwor
ICAgIGRjLmNsb3NlKCk7Cit9CisKK2Z1bmN0aW9uIGRjX29ubWVzc2FnZV9hcnJheWJ1ZmZlcihl
KSB7CisgICAgdGVzdFBhc3NlZCgiZGNfb25tZXNzYWdlX2FycmF5YnVmZmVyIHdhcyBjYWxsZWQi
KTsKKyAgICBkYXRhID0gZS5kYXRhOworICAgIHNob3VsZEJlKCJkYXRhLmJ5dGVMZW5ndGgiLCAi
MiIpOworICAgIGFycmF5ID0gbmV3IEludDhBcnJheShlLmRhdGEpOworICAgIHNob3VsZEJlKCJh
cnJheVswXSIsICIxNyIpOworICAgIHNob3VsZEJlKCJhcnJheVsxXSIsICIxOSIpOworCisgICAg
YXJyYXlbMF0gPSAxMTsKKyAgICBhcnJheVsxXSA9IDEzOworICAgIGRjLm9ubWVzc2FnZSA9IGRj
X29ubWVzc2FnZV9hcnJheWJ1ZmZlcnZpZXc7CisgICAgZGMuc2VuZChhcnJheSk7Cit9CisKK2Z1
bmN0aW9uIGRjX29ubWVzc2FnZV9zdHJpbmcoZSkgeworICAgIHRlc3RQYXNzZWQoImRjX29ubWVz
c2FnZV9zdHJpbmcgd2FzIGNhbGxlZCIpOworICAgIGRhdGEgPSBlLmRhdGE7CisgICAgc2hvdWxk
QmUoImRhdGEiLCAiJ3h5enp5JyIpOworCisgICAgZGMuYmluYXJ5VHlwZSA9ICJhcnJheWJ1ZmZl
ciI7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigyKTsKKyAgICB2YXIgYXJyYXkg
PSBuZXcgSW50OEFycmF5KGJ1ZmZlcik7CisgICAgYXJyYXlbMF0gPSAxNzsKKyAgICBhcnJheVsx
XSA9IDE5OworICAgIGRjLm9ubWVzc2FnZSA9IGRjX29ubWVzc2FnZV9hcnJheWJ1ZmZlcjsKKyAg
ICBkYy5zZW5kKGJ1ZmZlcik7Cit9CisKK2Z1bmN0aW9uIGRjX29ub3BlbigpIHsKKyAgICB0ZXN0
UGFzc2VkKCJkY19vbm9wZW4gd2FzIGNhbGxlZCIpOworICAgIHNob3VsZEJlKCJkYy5yZWFkeVN0
YXRlIiwgIidvcGVuJyIpOworICAgIHNob3VsZEJlKCJkYy5sYWJlbCIsICInbGFiZWwnIik7CisK
KyAgICBkYy5vbm1lc3NhZ2UgPSBkY19vbm1lc3NhZ2Vfc3RyaW5nOworICAgIGRjLnNlbmQoInh5
enp5Iik7Cit9CisKK2Z1bmN0aW9uIHBjX29ub3BlbigpIHsKKyAgICB0ZXN0UGFzc2VkKCJwY19v
bm9wZW4gd2FzIGNhbGxlZCIpOworICAgIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVs
MSIpOworICAgIHNob3VsZEJlKCJkYy5yZWFkeVN0YXRlIiwgIidjb25uZWN0aW5nJyIpOworICAg
IHNob3VsZEJlKCJkYy5yZWxpYWJsZSIsICJ0cnVlIik7CisKKyAgICBkYyA9IHBjLmNyZWF0ZURh
dGFDaGFubmVsKCJsYWJlbDIiLCB7fSk7CisgICAgc2hvdWxkQmUoImRjLnJlbGlhYmxlIiwgInRy
dWUiKTsKKworICAgIGRjID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsMyIsIHtyZWxpYWJs
ZTp0cnVlfSk7CisgICAgc2hvdWxkQmUoImRjLnJlbGlhYmxlIiwgInRydWUiKTsKKworICAgIGRj
ID0gcGMuY3JlYXRlRGF0YUNoYW5uZWwoImxhYmVsIiwge3JlbGlhYmxlOmZhbHNlfSk7CisgICAg
c2hvdWxkQmUoImRjLnJlbGlhYmxlIiwgImZhbHNlIik7CisgICAgZGMub25vcGVuID0gZGNfb25v
cGVuOworfQorCitwYyA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxsKTsK
K3BjLm9ub3BlbiA9IHBjX29ub3BlbjsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
d2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>