<?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>153123</bug_id>
          
          <creation_ts>2016-01-15 04:56:17 -0800</creation_ts>
          <short_desc>Web Inspector: Inspector doesnt support multiple frontends running in parallel</short_desc>
          <delta_ts>2026-01-12 09:02:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>148902</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andre Moreira Magalhaes">andrunko</reporter>
          <assigned_to name="Andre Moreira Magalhaes">andrunko</assigned_to>
          <cc>graouts</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1155739</commentid>
    <comment_count>0</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2016-01-15 04:56:17 -0800</bug_when>
    <thetext>WebKit inspector should allow connecting multiple frontends (e.g. Inspect Element UI + browser on WEBKIT_INSPECTOR_SERVER addr + eclipse chromedevtools plugin) and send responses to the correct frontends when receiving a method call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155740</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-15 04:56:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/24205647&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155782</commentid>
    <comment_count>2</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-15 08:52:30 -0800</bug_when>
    <thetext>We started work in this direction. It&apos;s not finished yet, but it would be good to continue it.

*** This bug has been marked as a duplicate of bug 148481 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196426</commentid>
    <comment_count>3</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2016-05-25 12:58:37 -0700</bug_when>
    <thetext>Reopening this one as the change here is different than the one in bug 148481 and bug and bug 148902, where the original patch was sent in.

I will push separate patches for 148902 and here (with the one here depending on the one in 148902).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196453</commentid>
    <comment_count>4</comment_count>
      <attachid>279805</attachid>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2016-05-25 13:54:00 -0700</bug_when>
    <thetext>Created attachment 279805
Staged patch

Note that the original patch from bug 148902 was split in 2 (as requested on the bug), with this one handling the multiple remote frontends support.

Please use the combined patch on https://bugs.webkit.org/attachment.cgi?id=279620 to test functionality.

The new patches (when combined) are the same as the combined patch but with updated ChangeLog entries.

Not marking to review as this patch wont build without the one from bug 148902.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216114</commentid>
    <comment_count>5</comment_count>
      <attachid>285015</attachid>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2016-08-01 08:24:15 -0700</bug_when>
    <thetext>Created attachment 285015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216116</commentid>
    <comment_count>6</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2016-08-01 08:25:37 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created attachment 285015 [details]
&gt; Patch

Rebased patch - not marking as review as this one requires changes from bug #148902 and wont build otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216171</commentid>
    <comment_count>7</comment_count>
      <attachid>285015</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-08-01 11:24:05 -0700</bug_when>
    <thetext>Comment on attachment 285015
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Web Inspector: Inspector doesnt support multiple frontends running in parallel

Nit: doesn&apos;t

I think this bug title should talk specifically about WebInspectorServer. The code path through RemoteInspector is separate and not addressed by this patch.

&gt; Source/WebCore/inspector/InspectorController.cpp:335
&gt;  {

I am wary of changes to InspectorController::show because it&apos;s relied upon in subtle ways when popping up a local frontend.

We need to decide what show() should do in the presence of multiple frontends. Should it tell all frontends that they are visible? Should it show/bringToFront only a local frontend? Should it bring to front the most recently connected frontend? I&apos;m not sure, but we should decide something and make sure it actually works as intended (for both RemoteInspector and WebInspectorServer).

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp:70
&gt; +    for (auto it = m_connectionMap.begin(); it != end; ++it) {

This is unsafe, because it mutates m_connectionMap while iterating over it. You need to make a copy of the list of connections and iterate over that instead.

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp:73
&gt; +            WebInspectorProxy* client = m_clientMap.get(connection-&gt;identifier());

Aside: The two map members in this class are poorly named. &apos;client&apos; and &apos;connection&apos; are too vague in this part of the code base. Ideally they should be mentioning webpages and frontends. The key type should be way more obvious- right now it seems to be connection-&gt;identifier(), but also sometimes the pageID is used too.

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp:97
&gt; +        for (WebSocketServerConnection* connection : connections)

See comment above about mutating while iterating.

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp:109
&gt; +    Vector&lt;WebSocketServerConnection*&gt; connections = m_connectionMap.get(pageIdForConnection);

A double-map seems kind of clunky and unnecessary, considering that there will only ever be 1 frontend most of the time. Can this code take the Vector&lt;std::tuple&lt;frontend, webpage&gt;&gt; type approach that&apos;s used in JSC / WebCore parts of Web Inspector?

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp:185
&gt; +    client-&gt;remoteFrontendConnected(reinterpret_cast&lt;uint64_t&gt;(connection));

Uh, let&apos;s not do this. It&apos;s a bad idea and also makes debugging horrible. If you really need to use an opaque ID, then have each connection carry it around to identify itself.

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp:194
&gt; +    client-&gt;dispatchMessageFromRemoteFrontend(reinterpret_cast&lt;uint64_t&gt;(connection), message);

See above.

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.cpp:213
&gt; +        client-&gt;remoteFrontendDisconnected(reinterpret_cast&lt;uint64_t&gt;(connection));

See above.

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.h:50
&gt; +    void sendMessageOverConnection(uint64_t connectionID, unsigned pageIdForConnection, const String&amp; message);

I have no idea what this method might do. Message from backend to frontend? Frontend to backend? It should be obvious. It is not clear from the design why there is a connection per-pageId instead of per-frontend. A frontend can&apos;t inspect more than one page at a time, at least in Mac ports.

&gt; Source/WebKit2/UIProcess/InspectorServer/WebInspectorServer.h:72
&gt; +    HashMap&lt;unsigned, Vector&lt;WebSocketServerConnection*&gt;&gt; m_connectionMap;

See note above. This is not necessary.

&gt; Source/WebKit2/WebProcess/WebPage/WebInspectorRemoteManager.cpp:57
&gt; +WebInspectorRemoteManager::WebInspectorRemoteManager(WebPage* page)

If this object is owned by page, then m_page should be a Page&amp; reference instead of a pointer.

&gt; Source/WebKit2/WebProcess/WebPage/WebInspectorRemoteManager.cpp:67
&gt; +uint64_t WebInspectorRemoteManager::tokenForRemoteFrontend(const RefPtr&lt;WebInspector&gt;&amp; remoteFrontend) const

the const RefPtr&lt;&gt;&amp; parameter type is unusual. Normally we would pass RefPtr&lt;WebInspector&gt;&amp;&amp;.

&gt; Source/WebKit2/WebProcess/WebPage/WebInspectorRemoteManager.cpp:74
&gt; +    return -1;

Use Optional&lt;T&gt; as the return type, not a magic number.

&gt; Source/WebKit2/WebProcess/WebPage/WebInspectorRemoteManager.messages.in:1
&gt; +# Copyright (C) 2010, 2014 Apple Inc. All rights reserved.

Copyright is outdated. Please update.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:1334
&gt; +    RefPtr&lt;WebInspectorRemoteManager&gt; m_inspectorRemoteManager;

This does not have shared ownership with other classes and it is nullable. So it should be a std::unique_ptr instead of a RefPtr.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279805</attachid>
            <date>2016-05-25 13:54:00 -0700</date>
            <delta_ts>2016-08-01 08:23:58 -0700</delta_ts>
            <desc>Staged patch</desc>
            <filename>0002-Web-Inspector-Inspector-doesnt-support-multiple-fron.patch</filename>
            <type>text/plain</type>
            <size>42120</size>
            <attacher name="Andre Moreira Magalhaes">andrunko</attacher>
            
              <data encoding="base64">RnJvbSA2MTdlMzFiOTM0M2NjYmYwMTI3NmIyY2VmOWY4ODM4MWNkMjc1MzQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmUgTW9yZWlyYSBNYWdhbGhhZXMgKGFuZHJ1bmtvKSIg
PGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CkRhdGU6IFdlZCwgMjUgTWF5IDIwMTYg
MTc6MDA6MDggLTAzMDAKU3ViamVjdDogW1BBVENIIDIvMl0gV2ViIEluc3BlY3RvcjogSW5zcGVj
dG9yIGRvZXNudCBzdXBwb3J0IG11bHRpcGxlCiBmcm9udGVuZHMgcnVubmluZyBpbiBwYXJhbGxl
bCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTIzCiA8cmRhcjov
L3Byb2JsZW0vMjQyMDU2NDc+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KLS0tCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAxMiArKwog
Li4uL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAgICAgICAgICAgfCAgMTAg
KysKIC4uLi9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCAgICAgICAgICAgIHwg
ICAxICsKIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgIDE2ICsrKwogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwICAgfCAgIDggKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcCAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICA3MCArKysrKysrKysrKysKIC4uLi9JbnNwZWN0b3JTZXJ2ZXIv
V2ViSW5zcGVjdG9yU2VydmVyLmNwcCAgICAgICAgIHwgIDU0ICsrKysrLS0tLQogLi4uL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmggfCAgIDQgKy0KIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgICAgIHwgIDE3ICstLQog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggICAgICAgfCAgIDgg
Ky0KIC4uLi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gICAgICAgIHwg
ICAyICstCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cCB8ICAzNiArKystLS0KIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuaCAgIHwgIDE1ICstLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
bWVzc2FnZXMuaW4gICAgfCAgIDUgLQogLi4uL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVtb3RlTWFu
YWdlci5jcHAgICAgICAgICAgfCAxMjEgKysrKysrKysrKysrKysrKysrKysrCiAuLi4vV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIuaCB8ICA3NSArKysrKysrKysr
KysrCiAuLi4vV2ViUGFnZS9XZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyLm1lc3NhZ2VzLmluICB8
ICAzMCArKysrKwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
ICAgICAgfCAgMzUgKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oICAgICAgICB8ICAgNyArKwogMjEgZmlsZXMgY2hhbmdlZCwgNDQ3IGluc2VydGlvbnMo
KyksIDgzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyLmNwcAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JS
ZW1vdGVNYW5hZ2VyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlci5tZXNzYWdlcy5pbgoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCmluZGV4IGY4NjAzMDIuLmIwMDc2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE2LTA1LTI1ICBBbmRyZSBNb3JlaXJhIE1hZ2Fs
aGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNAY29sbGFib3JhLmNvLnVrPgogCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEluc3BlY3RvciBkb2VzbnQgc3VwcG9ydCBtdWx0aXBsZSBmcm9udGVuZHMgcnVu
bmluZyBpbiBwYXJhbGxlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzMTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDIwNTY0Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5k
Um91dGVyOjpoYXNGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmg6CisKKzIwMTYtMDUtMjUgIEFuZHJlIE1vcmVpcmEgTWFnYWxoYWVzICAgPGFu
ZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CisKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
cGFzcyBmcm9udGVuZCB0b2tlbiB0byBhZ2VudCdzIGZyb250ZW5kIGF0dGFjaC9kZXRhY2ggbWV0
aG9kcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
OTAyCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjU5MjQxND4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5j
cHAKaW5kZXggZGE4ZTMzOC4uZWU2YjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5jcHAKQEAgLTY0
LDYgKzY0LDE2IEBAIHZvaWQgRnJvbnRlbmRSb3V0ZXI6OmRpc2Nvbm5lY3RBbGxGcm9udGVuZHMo
KQogICAgIG1fY29ubmVjdGlvbnMuY2xlYXIoKTsKIH0KIAorYm9vbCBGcm9udGVuZFJvdXRlcjo6
aGFzRnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBjb25uZWN0aW9uKSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgcmVjb3JkIDogbV9jb25uZWN0aW9ucykgeworICAgICAgICBpZiAoc3RkOjpnZXQ8
MD4ocmVjb3JkKSA9PSBjb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEZyb250ZW5kUm91dGVyOjpoYXNMb2Nh
bEZyb250ZW5kKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fY29ubmVjdGlv
bnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRSb3V0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRSb3V0ZXIuaAppbmRleCA1NDIyYjMzLi4wODcxODIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZFJvdXRlci5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZyb250
ZW5kUm91dGVyPiBjcmVhdGUoKTsKIAogICAgIGJvb2wgaGFzRnJvbnRlbmRzKCkgY29uc3QgeyBy
ZXR1cm4gIW1fY29ubmVjdGlvbnMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNGcm9udGVuZChG
cm9udGVuZENoYW5uZWwqKSBjb25zdDsKICAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25z
dDsKICAgICBib29sIGhhc1JlbW90ZUZyb250ZW5kKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2FmN2JiLi4zZWMzYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTYtMDUtMjUg
IEFuZHJlIE1vcmVpcmEgTWFnYWxoYWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28u
dWs+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yIGRvZXNudCBzdXBwb3J0IG11
bHRpcGxlIGZyb250ZW5kcyBydW5uaW5nIGluIHBhcmFsbGVsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMjMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI0MjA1NjQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBEbyBub3QgYnJlYWsg
aWYgYSByZW1vdGUgaW5zcGVjdG9yIGluc3RhbmNlIGlzCisgICAgICAgIGNvbm5lY3RlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3cpOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29u
dHJvbGxlcjo6cG9wdWxhdGUpOgorCisyMDE2LTA1LTI1ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFl
cyAgIDxhbmRyZS5tYWdhbGhhZXNAY29sbGFib3JhLmNvLnVrPgorCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHBhc3MgZnJvbnRlbmQgdG9rZW4gdG8gYWdlbnQncyBmcm9udGVuZCBhdHRhY2gvZGV0
YWNoIG1ldGhvZHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0ODkwMgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI1OTI0MTQ+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMGFjMWQ4
ZS4uODgwNTVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtMjQ3LDYgKzI0Nyw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldv
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiBjb25uZWN0aW9uLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikK
IHsKKyAgICBpZiAobV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmQoY29ubmVjdGlvbikpCisg
ICAgICAgIHJldHVybjsKKwogICAgIEFTU0VSVF9BUkcoY29ubmVjdGlvbiwgY29ubmVjdGlvbik7
CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsKIApAQCAtMzMwLDggKzMzMyw2IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEFsbEZyb250ZW5kcygpCiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiB7Ci0gICAgQVNTRVJUKCFtX2Zyb250ZW5kUm91
dGVyLT5oYXNSZW1vdGVGcm9udGVuZCgpKTsKLQogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTM3MSw4ICszNzIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
Omluc3BlY3QoTm9kZSogbm9kZSkKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFoYXNSZW1vdGVGcm9udGVuZCgpKQotICAgICAgICBzaG93KCk7CisgICAg
c2hvdygpOwogCiAgICAgbV9kb21BZ2VudC0+aW5zcGVjdChub2RlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlZjIyZTUyLi5kZmE3
ZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CkBAIC05MDcsNyArOTA3LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRl
KCkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKFNwZWVjaE1lbnVJdGVtLCBtX2NvbnRleHRN
ZW51LmdldCgpKTsKICNlbmRpZiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiAoZnJhbWUtPnBhZ2UoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3Rpb25MZXZlbCgpID4gMCB8fCBmcmFtZS0+cGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaGFzUmVtb3RlRnJvbnRlbmQoKSkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2UoKSAmJiAoZnJhbWUtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLmluc3BlY3Rpb25MZXZlbCgpID4gMCkpKSB7CiAKICAgICAgICAgICAg
ICAgICAvLyBJbiBHVEsrIHVuYXZhaWxhYmxlIGl0ZW1zIGFyZSBub3QgaGlkZGVuIGJ1dCBpbnNl
bnNpdGl2ZS4KICNpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGI0ZDIz
OGEuLjQyZjNlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC02MzIsNiArNjMyLDcgQEAgc2V0
KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCisgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTczMSw2ICs3MzIsNyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KICAgICBXZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCisgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGRkOGI1YjIu
LmIxMjQxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3NSBAQAogMjAxNi0wNS0yNSAgQW5kcmUg
TW9yZWlyYSBNYWdhbGhhZXMgICA8YW5kcmUubWFnYWxoYWVzQGNvbGxhYm9yYS5jby51az4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3IgZG9lc250IHN1cHBvcnQgbXVsdGlwbGUg
ZnJvbnRlbmRzIHJ1bm5pbmcgaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQy
MDU2NDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICBD
dXJyZW50bHksIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgb25seSBhbGxvd3Mgb25lIHJlbW90ZSBj
b25uZWN0aW9uIHBlciBwYWdlLCB0aHVzIGJyZWFraW5nCisgICAgICAgd2hlbiBtdWx0aXBsZSBy
ZW1vdGUgZnJvbnRlbmRzIGFyZSBjb25uZWN0ZWQuIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGlzIGJl
aGF2aW91ciBieSBhbGxvd2luZworICAgICAgIG11bHRpcGxlIHJlbW90ZSBmcm9udGVuZCBjb25u
ZWN0aW9ucyB1c2luZyBzZXBhcmF0ZSBXZWJJbnNwZWN0b3IgaW5zdGFuY2VzIGFuZCBwcm9wZXJs
eQorICAgICAgIHJvdXRpbmcgbWVzc2FnZXMgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0aGUgYmFj
a2VuZCBhbmQgZnJvbnRlbmRzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwOiBBbGxv
dyBtdWx0aXBsZSByZW1vdGUgaW5zcGVjdG9yCisgICAgICAgIGNvbm5lY3Rpb25zIHRvIHRoZSBz
YW1lIHBhZ2UuIFRodXMgYWxsb3dpbmcgc2VwYXJhdGUgZnJvbnRlbmRzIHRvIHJ1biBpbiBwYXJh
bGxlbC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjp+V2ViSW5zcGVjdG9y
U2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjp1bnJlZ2lzdGVy
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclNlcnZlcjo6c2VuZE1lc3NhZ2VP
dmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclNlcnZlcjo6ZGlk
RXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OmNsb3NlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclNlcnZlcjo6aW5zcGVjdG9yVXJsRm9yUGFnZUlEKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlV2ViU29ja2V0VXBn
cmFkZUhUVFBSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5jcHA6IFVzZSB0aGUgbmV3IFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIgdG8g
c2VuZCBtZXNzYWdlcyB0bworICAgICAgICBiYWNrZW5kLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZy
b250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdl
VG9SZW1vdGVGcm9udGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOiBBbGxvdyBjcmVh
dGluZyBtdWx0aXBsZSBpbnN0YW5jZXMgd2l0aCBhIGRpZmZlcmVudAorICAgICAgICBjb25uZWN0
aW9uIHR5cGUgKHJlbW90ZS9sb2NhbCkgYW5kIHVzZSB0aGUgbmV3IFdlYkluc3BlY3RvclJlbW90
ZU1hbmFnZXIgdG8gc2VuZCBtZXNzYWdlcworICAgICAgICB0byB0aGUgcHJvcGVyIGZyb250ZW5k
IHdoZW4gYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yOjpkaXNjb25uZWN0RnJvbVBhZ2UpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW46IE1vdmUgcmVt
b3RlIGZyb250ZW5kIG1lc3NhZ2VzIHRvIHRoZSBuZXcKKyAgICAgICAgV2ViSW5zcGVjdG9yUmVt
b3RlTWFuYWdlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVt
b3RlTWFuYWdlci5jcHA6IEFkZGVkLiBXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyIGlzCisgICAg
ICAgIGEgbWVzc2FnZSBoYW5kbGVyIGZvciByZW1vdGUgaW5zcGVjdG9yIGZyb250ZW5kcy4gSXQg
Y3JlYXRlcyByZW1vdGUgaW5zcGVjdG9yIGluc3RhbmNlcyB3aGVuCisgICAgICAgIGEgbmV3IHJl
bW90ZSBmcm9udGVuZCBpcyBjb25uZWN0ZWQsIHByb3Blcmx5IHJlbW92aW5nIGl0IHdoZW4gdGhl
IGZyb250ZW5kIGlzIGRpc2Nvbm5lY3RlZC4KKyAgICAgICAgSXQgaWRlbnRpZmllcyBhIGZyb250
ZW5kIGJ5IHRva2VuLCBhbGxvd2luZyB0byBwcm9wZXJseSByb3V0ZSBtZXNzYWdlcy4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6V2ViSW5zcGVjdG9yUmVtb3RlTWFu
YWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI6On5XZWJJ
bnNwZWN0b3JSZW1vdGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUmVt
b3RlTWFuYWdlcjo6dG9rZW5Gb3JSZW1vdGVGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclJlbW90ZU1hbmFnZXI6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6cmVtb3RlRnJvbnRlbmREaXNj
b25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjpz
ZW5kUmVtb3RlRnJvbnRlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6ZGlzY29ubmVjdEZyb21QYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjpwYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlci5tZXNzYWdlcy5pbjogRGVm
aW5lIG1lc3NhZ2VzIGhhbmRsZWQgYnkKKyAgICAgICAgV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdl
ci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6IFByb3Blcmx5IHJv
dXRlIHJlbW90ZSBpbnNwZWN0b3IgbWVzc2FnZXMgdG8KKyAgICAgICAgV2ViSW5zcGVjdG9yUmVt
b3RlTWFuYWdlci4KKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNwYXRjaEZha2VNb3VzZU1v
dmVFdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp+V2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5z
cGVjdG9yUmVtb3RlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCisy
MDE2LTA1LTI1ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNAY29s
bGFib3JhLmNvLnVrPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhc3MgZnJvbnRlbmQgdG9r
ZW4gdG8gYWdlbnQncyBmcm9udGVuZCBhdHRhY2gvZGV0YWNoIG1ldGhvZHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODkwMgogICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjI1OTI0MTQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKaW5kZXgg
NjYzODc3NC4uMjUyMTNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcApAQCAtNjYs
MTEgKzY2LDEzIEBAIFdlYkluc3BlY3RvclNlcnZlcjo6V2ViSW5zcGVjdG9yU2VydmVyKCkKIFdl
Ykluc3BlY3RvclNlcnZlcjo6fldlYkluc3BlY3RvclNlcnZlcigpCiB7CiAgICAgLy8gQ2xvc2Ug
YW55IHJlbWFpbmluZyBvcGVuIGNvbm5lY3Rpb25zLgotICAgIEhhc2hNYXA8dW5zaWduZWQsIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb24qPjo6aXRlcmF0b3IgZW5kID0gbV9jb25uZWN0aW9uTWFw
LmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCwgV2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbio+OjppdGVyYXRvciBpdCA9IG1fY29ubmVjdGlvbk1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9
IGl0LT52YWx1ZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yUHJveHkqIGNsaWVudCA9IG1fY2xpZW50
TWFwLmdldChjb25uZWN0aW9uLT5pZGVudGlmaWVyKCkpOwotICAgICAgICBjbG9zZUNvbm5lY3Rp
b24oY2xpZW50LCBjb25uZWN0aW9uKTsKKyAgICBhdXRvIGVuZCA9IG1fY29ubmVjdGlvbk1hcC5l
bmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIFZlY3RvcjxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKj4g
Y29ubmVjdGlvbnMgPSBpdC0+dmFsdWU7CisgICAgICAgIGZvciAoV2ViU29ja2V0U2VydmVyQ29u
bmVjdGlvbiogY29ubmVjdGlvbiA6IGNvbm5lY3Rpb25zKSB7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3JQcm94eSogY2xpZW50ID0gbV9jbGllbnRNYXAuZ2V0KGNvbm5lY3Rpb24tPmlkZW50aWZp
ZXIoKSk7CisgICAgICAgICAgICBjbG9zZUNvbm5lY3Rpb24oY2xpZW50LCBjb25uZWN0aW9uKTsK
KyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtOTAsOSArOTIsMTEgQEAgaW50IFdlYkluc3BlY3Rv
clNlcnZlcjo6cmVnaXN0ZXJQYWdlKFdlYkluc3BlY3RvclByb3h5KiBjbGllbnQpCiB2b2lkIFdl
Ykluc3BlY3RvclNlcnZlcjo6dW5yZWdpc3RlclBhZ2UoaW50IHBhZ2VJZCkKIHsKICAgICBtX2Ns
aWVudE1hcC5yZW1vdmUocGFnZUlkKTsKLSAgICBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBj
b25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChwYWdlSWQpOwotICAgIGlmIChjb25uZWN0
aW9uKQotICAgICAgICBjbG9zZUNvbm5lY3Rpb24oMCwgY29ubmVjdGlvbik7CisgICAgVmVjdG9y
PFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qPiBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbk1h
cC5nZXQocGFnZUlkKTsKKyAgICBpZiAoIWNvbm5lY3Rpb25zLmlzRW1wdHkoKSkgeworICAgICAg
ICBmb3IgKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9u
cykKKyAgICAgICAgICAgIGNsb3NlQ29ubmVjdGlvbigwLCBjb25uZWN0aW9uKTsKKyAgICB9CiB9
CiAKIFN0cmluZyBXZWJJbnNwZWN0b3JTZXJ2ZXI6Omluc3BlY3RvclVybEZvclBhZ2VJRChpbnQp
CkBAIC0xMDAsMTEgKzEwNCwxNSBAQCBTdHJpbmcgV2ViSW5zcGVjdG9yU2VydmVyOjppbnNwZWN0
b3JVcmxGb3JQYWdlSUQoaW50KQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3JTZXJ2ZXI6OnNlbmRNZXNzYWdlT3ZlckNvbm5lY3Rpb24odW5zaWduZWQgcGFnZUlk
Rm9yQ29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBXZWJJbnNwZWN0b3JT
ZXJ2ZXI6OnNlbmRNZXNzYWdlT3ZlckNvbm5lY3Rpb24odWludDY0X3QgY29ubmVjdGlvbklELCB1
bnNpZ25lZCBwYWdlSWRGb3JDb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1h
cC5nZXQocGFnZUlkRm9yQ29ubmVjdGlvbik7Ci0gICAgaWYgKGNvbm5lY3Rpb24pCi0gICAgICAg
IGNvbm5lY3Rpb24tPnNlbmRXZWJTb2NrZXRNZXNzYWdlKG1lc3NhZ2UpOworICAgIFZlY3RvcjxX
ZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKj4gY29ubmVjdGlvbnMgPSBtX2Nvbm5lY3Rpb25NYXAu
Z2V0KHBhZ2VJZEZvckNvbm5lY3Rpb24pOworICAgIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24gPSByZWludGVycHJldF9jYXN0PFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24q
Pihjb25uZWN0aW9uSUQpOworICAgIEFTU0VSVChjb25uZWN0aW9uICYmIGNvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24pKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24gfHwgIWNvbm5lY3Rpb25z
LmNvbnRhaW5zKGNvbm5lY3Rpb24pKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25uZWN0aW9u
LT5zZW5kV2ViU29ja2V0TWVzc2FnZShtZXNzYWdlKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JT
ZXJ2ZXI6OmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiByZXF1ZXN0KQpA
QCAtMTY2LDE5ICsxNzQsMTUgQEAgdm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZEVzdGFibGlz
aFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGkKICAgICB1bnNpZ25l
ZCBwYWdlSWQgPSBwYWdlSWRGcm9tUmVxdWVzdFBhdGgocGF0aCk7CiAgICAgQVNTRVJUKHBhZ2VJ
ZCk7CiAKLSAgICAvLyBJZ25vcmUgY29ubmVjdGlvbnMgdG8gYSBwYWdlIHRoYXQgYWxyZWFkeSBo
YXZlIGEgcmVtb3RlIGluc3BlY3RvciBjb25uZWN0ZWQuCi0gICAgaWYgKG1fY29ubmVjdGlvbk1h
cC5jb250YWlucyhwYWdlSWQpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQSByZW1vdGUgaW5zcGVj
dG9yIGNvbm5lY3Rpb24gYWxyZWFkeSBleGlzdCBmb3IgcGFnZSBJRCAlZC4gSWdub3JpbmcuIiwg
cGFnZUlkKTsKLSAgICAgICAgY29ubmVjdGlvbi0+c2h1dGRvd25Ob3coKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIC8vIE1hcCB0aGUgcGFnZUlkIHRvIHRoZSBjb25uZWN0aW9uIGlu
IGNhc2Ugd2UgbmVlZCB0byBjbG9zZSB0aGUgY29ubmVjdGlvbiBsb2NhbGx5LgogICAgIGNvbm5l
Y3Rpb24tPnNldElkZW50aWZpZXIocGFnZUlkKTsKLSAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0KHBh
Z2VJZCwgY29ubmVjdGlvbik7CisKKyAgICBWZWN0b3I8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlv
bio+IGNvbm5lY3Rpb25zID0gbV9jb25uZWN0aW9uTWFwLmdldChwYWdlSWQpOworICAgIGNvbm5l
Y3Rpb25zLmFwcGVuZChjb25uZWN0aW9uKTsKKyAgICBtX2Nvbm5lY3Rpb25NYXAuc2V0KHBhZ2VJ
ZCwgY29ubmVjdGlvbnMpOwogCiAgICAgV2ViSW5zcGVjdG9yUHJveHkqIGNsaWVudCA9IG1fY2xp
ZW50TWFwLmdldChwYWdlSWQpOwotICAgIGNsaWVudC0+cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQo
KTsKKyAgICBjbGllbnQtPnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3Q+KGNvbm5lY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRp
ZFJlY2VpdmVXZWJTb2NrZXRNZXNzYWdlKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTE4Nyw3ICsxOTEsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldE1lc3NhZ2UoV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbiogYwogICAgIHVuc2lnbmVkIHBhZ2VJZCA9IGNvbm5lY3Rpb24tPmlkZW50
aWZpZXIoKTsKICAgICBBU1NFUlQocGFnZUlkKTsKICAgICBXZWJJbnNwZWN0b3JQcm94eSogY2xp
ZW50ID0gbV9jbGllbnRNYXAuZ2V0KHBhZ2VJZCk7Ci0gICAgY2xpZW50LT5kaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQobWVzc2FnZSk7CisgICAgY2xpZW50LT5kaXNwYXRjaE1lc3Nh
Z2VGcm9tUmVtb3RlRnJvbnRlbmQocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oY29ubmVjdGlv
biksIG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkQ2xvc2VXZWJT
b2NrZXRDb25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCkBA
IC0yMDYsMTAgKzIxMCwxMiBAQCB2b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6Y2xvc2VDb25uZWN0
aW9uKFdlYkluc3BlY3RvclByb3h5KiBjbGllbnQsIFdlYlNvY2tldFNlcgogewogICAgIC8vIExv
Y2FsIHNpZGUgY2xlYW51cC4KICAgICBpZiAoY2xpZW50KQotICAgICAgICBjbGllbnQtPnJlbW90
ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7CisgICAgICAgIGNsaWVudC0+cmVtb3RlRnJvbnRlbmRE
aXNjb25uZWN0ZWQocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oY29ubmVjdGlvbikpOwogCiAg
ICAgLy8gUmVtb3RlIHNpZGUgY2xlYW51cC4KLSAgICBtX2Nvbm5lY3Rpb25NYXAucmVtb3ZlKGNv
bm5lY3Rpb24tPmlkZW50aWZpZXIoKSk7CisgICAgVmVjdG9yPFdlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb24qPiBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbk1hcC5nZXQoY29ubmVjdGlvbi0+aWRl
bnRpZmllcigpKTsKKyAgICBjb25uZWN0aW9ucy5yZW1vdmVGaXJzdChjb25uZWN0aW9uKTsKKyAg
ICBtX2Nvbm5lY3Rpb25NYXAuc2V0KGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKSwgY29ubmVjdGlv
bnMpOwogICAgIGNvbm5lY3Rpb24tPnNldElkZW50aWZpZXIoMCk7CiAgICAgY29ubmVjdGlvbi0+
c2h1dGRvd25Ob3coKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCmluZGV4IDEzMjk5YjEu
LjFmZjYyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgaW50IHJlZ2lzdGVyUGFnZShXZWJJbnNwZWN0b3JQcm94eSogY2xpZW50KTsK
ICAgICB2b2lkIHVucmVnaXN0ZXJQYWdlKGludCBwYWdlSWQpOwogICAgIFN0cmluZyBpbnNwZWN0
b3JVcmxGb3JQYWdlSUQoaW50IHBhZ2VJZCk7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZU92ZXJDb25u
ZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CisgICAgdm9pZCBzZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rp
b25JRCwgdW5zaWduZWQgcGFnZUlkRm9yQ29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKIAogcHJpdmF0ZToKICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXIoKTsKQEAgLTY5LDcgKzY5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVBhZ2VJZDsKICAgICBD
bGllbnRNYXAgbV9jbGllbnRNYXA7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbio+IG1fY29ubmVjdGlvbk1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBW
ZWN0b3I8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbio+PiBtX2Nvbm5lY3Rpb25NYXA7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApp
bmRleCAyYjIxMTAzLi4wZjQxMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorI2luY2x1ZGUg
IldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclNlcnZlci5oIgogI2VuZGlmCiAKQEAgLTQzMywxOSArNDM0LDE5IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKQogICAgICAgICBtX3JlbW90ZUlu
c3BlY3Rpb25QYWdlSWQgPSBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVy
UGFnZSh0aGlzKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRD
b25uZWN0ZWQoKQordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQodWludDY0X3QgcmVtb3RlRnJvbnRlbmRUb2tlbikKIHsKLSAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kQ29u
bmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI6OlJl
bW90ZUZyb250ZW5kQ29ubmVjdGVkKHJlbW90ZUZyb250ZW5kVG9rZW4pLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRl
bmREaXNjb25uZWN0ZWQoKQordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRE
aXNjb25uZWN0ZWQodWludDY0X3QgcmVtb3RlRnJvbnRlbmRUb2tlbikKIHsKLSAgICBtX2luc3Bl
Y3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZy
b250ZW5kRGlzY29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclJlbW90
ZU1hbmFnZXI6OlJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKHJlbW90ZUZyb250ZW5kVG9rZW4p
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9u
dGVuZCh1aW50NjRfdCByZW1vdGVGcm9udGVuZFRva2VuLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiB7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6U2VuZFJlbW90ZUZyb250ZW5kTWVzc2FnZVRvQmFj
a2VuZChyZW1vdGVGcm9udGVuZFRva2VuLCBtZXNzYWdlKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSk7CiB9CiAjZW5kaWYKIApAQCAtNjg3LDEwICs2ODgsMTAgQEAgYm9vbCBXZWJJbnNwZWN0
b3JQcm94eTo6c2hvdWxkT3BlbkF0dGFjaGVkKCkKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1Jf
U0VSVkVSKQotdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1aW50NjRfdCByZW1vdGVGcm9udGVuZFRva2VuLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJ
ZCk7Ci0gICAgV2ViSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5zZW5kTWVzc2FnZU92ZXJD
b25uZWN0aW9uKG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCwgbWVzc2FnZSk7CisgICAgV2ViSW5z
cGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5zZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKHJlbW90
ZUZyb250ZW5kVG9rZW4sIG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZCwgbWVzc2FnZSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApp
bmRleCA1ZmE0YzkwLi5hYThiNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuaApAQCAtMTQ4LDkgKzE0OCw5IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQogICAgIHZvaWQgZW5hYmxlUmVtb3RlSW5zcGVjdGlvbigpOwot
ICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsKLSAgICB2b2lkIHJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKCk7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHJlbW90ZUZyb250ZW5kQ29u
bmVjdGVkKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kVG9rZW4pOworICAgIHZvaWQgcmVtb3RlRnJv
bnRlbmREaXNjb25uZWN0ZWQodWludDY0X3QgcmVtb3RlRnJvbnRlbmRUb2tlbik7CisgICAgdm9p
ZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQodWludDY0X3QgcmVtb3RlRnJvbnRl
bmRUb2tlbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBpbnQgcmVtb3RlSW5zcGVjdGlv
blBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlSW5zcGVjdGlvblBhZ2VJZDsgfQogI2Vu
ZGlmCiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX1NFUlZFUikKLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250
ZW5kKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kVG9rZW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQXR0YWNoKCkgY29uc3QgeyByZXR1cm4gbV9jYW5BdHRh
Y2g7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBjMmVkNzgyLi40MDJiNmJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC00NSw2ICs0NSw2IEBAIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclByb3h5IHsKICAgICBTdGFy
dFdpbmRvd0RyYWcoKQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgU2VuZE1l
c3NhZ2VUb1JlbW90ZUZyb250ZW5kKFN0cmluZyBtZXNzYWdlKQorICAgIFNlbmRNZXNzYWdlVG9S
ZW1vdGVGcm9udGVuZCh1aW50NjRfdCByZW1vdGVGcm9udGVuZFRva2VuLCBTdHJpbmcgbWVzc2Fn
ZSkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcAppbmRleCBhZTU3OWM4Li5hNDQ4MjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgpAQCAtNTMsMTMgKzU0LDE0IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtQXR0YWNoZWRX
aWR0aCA9IDUwMDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZjxXZWJJbnNwZWN0b3I+IFdl
Ykluc3BlY3Rvcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCitSZWY8V2ViSW5zcGVjdG9yPiBXZWJJ
bnNwZWN0b3I6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9u
VHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3IocGFnZSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkluc3BlY3RvcihwYWdlLCBjb25uZWN0aW9uVHlw
ZSkpOwogfQogCi1XZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJQYWdlKiBwYWdlKQorV2Vi
SW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFnZSwgQ29ubmVjdGlvblR5cGUgY29u
bmVjdGlvblR5cGUpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fY29ubmVjdGlvblR5cGUo
Y29ubmVjdGlvblR5cGUpCiB7CiB9CiAKQEAgLTcyLDYgKzc0LDkgQEAgV2ViSW5zcGVjdG9yOjp+
V2ViSW5zcGVjdG9yKCkKIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3RvckNsaWVudAogdm9pZCBX
ZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENvbm5lY3Rpb24oYm9vbCB1bmRlclRlc3QpCiB7Cisg
ICAgaWYgKG1fZnJvbnRlbmRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKICNpZiBVU0Uo
VU5JWF9ET01BSU5fU09DS0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29j
a2V0UGFpciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7CiAg
ICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKHNvY2tl
dFBhaXIuc2VydmVyKTsKQEAgLTI4MiwzMCArMjg3LDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiBib29sIFdlYkluc3Bl
Y3Rvcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBpZiAobV9yZW1vdGVGcm9udGVuZENvbm5l
Y3RlZCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9S
ZW1vdGVGcm9udGVuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgaWYgKGNvbm5l
Y3Rpb25UeXBlKCkgPT0gQ29ubmVjdGlvblR5cGU6OlJlbW90ZSkgeworICAgICAgICB1aW50NjRf
dCByZW1vdGVGcm9udGVuZFRva2VuID0gbV9wYWdlLT5pbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKCkt
PnRva2VuRm9yUmVtb3RlRnJvbnRlbmQodGhpcyk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQocmVtb3RlRnJvbnRlbmRUb2tl
biwgbWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIH0KICAgICBlbHNlCiAjZW5kaWYK
KyAgICBpZiAobV9mcm9udGVuZENvbm5lY3Rpb24pCiAgICAgICAgIG1fZnJvbnRlbmRDb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KG1lc3NhZ2UpLCAwKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNU
T1JfU0VSVkVSKQotdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkK
LXsKLSAgICBpZiAobV9wYWdlLT5jb3JlUGFnZSgpKSB7Ci0gICAgICAgIG1fcmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQgPSB0cnVlOwotICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS5jb25uZWN0RnJvbnRlbmQodGhpcyk7Ci0gICAgfQotfQotCi12b2lkIFdl
Ykluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQotewotICAgIG1fcmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQgPSBmYWxzZTsKLQotICAgIGlmIChtX3BhZ2UtPmNvcmVQYWdlKCkp
Ci0gICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nv
bm5lY3RGcm9udGVuZCh0aGlzKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApp
bmRleCA4NDA1OGZiLi41NWEzYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCkBAIC0zOSwxNCArMzksMTQgQEAgY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6QnVuZGxlSW5zcGVjdG9yPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xp
ZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8V2ViSW5zcGVjdG9yPiBjcmVhdGUoV2ViUGFnZSopOworICAgIHN0YXRpYyBSZWY8
V2ViSW5zcGVjdG9yPiBjcmVhdGUoV2ViUGFnZSosIENvbm5lY3Rpb25UeXBlID0gQ29ubmVjdGlv
blR5cGU6OkxvY2FsKTsKIAogICAgIFdlYlBhZ2UqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2U7IH0KIAogICAgIHZvaWQgdXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpOwogCiAgICAgYm9v
bCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsK
LSAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIENvbm5lY3Rpb25UeXBlOjpMb2NhbDsgfQorICAgIENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rp
b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb25uZWN0aW9uVHlwZTsgfQogCiAg
ICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZl
ci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKQEAgLTg2LDE3ICs4NiwxMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOwogCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgdm9pZCByZW1vdGVGcm9udGVuZENvbm5lY3RlZCgp
OwotICAgIHZvaWQgcmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKTsKLSNlbmRpZgotCiAgICAg
dm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IGNsb3NlKCk7IH0KIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OwogCi0gICAgZXhwbGljaXQgV2ViSW5zcGVj
dG9yKFdlYlBhZ2UqKTsKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3IoV2ViUGFnZSosIENvbm5l
Y3Rpb25UeXBlKTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3IoKTsKIAogICAgIGJvb2wgY2Fu
QXR0YWNoV2luZG93KCk7CkBAIC0xMDksMTMgKzEwNCwxMSBAQCBwcml2YXRlOgogCiAgICAgV2Vi
UGFnZSogbV9wYWdlOwogCisgICAgQ29ubmVjdGlvblR5cGUgbV9jb25uZWN0aW9uVHlwZTsKICAg
ICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Zyb250ZW5kQ29ubmVjdGlvbjsKIAogICAgIGJv
b2wgbV9hdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3ByZXZpb3VzQ2FuQXR0YWNoIHsg
ZmFsc2UgfTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLSAgICBib29sIG1fcmVtb3Rl
RnJvbnRlbmRDb25uZWN0ZWQgeyBmYWxzZSB9OwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCmluZGV4IDQ1ZWNjZDguLjA3ZThmMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5tZXNzYWdlcy5pbgpAQCAtNDEsOSArNDEsNCBAQCBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0
b3IgewogICAgIFN0b3BFbGVtZW50U2VsZWN0aW9uKCkKIAogICAgIFNlbmRNZXNzYWdlVG9CYWNr
ZW5kKFN0cmluZyBtZXNzYWdlKQotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAg
UmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQotICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVk
KCkKLSNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMTQ2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlci5jcHAK
QEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ29sbGFi
b3JhIEx0ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyLmgi
CisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JSZW1v
dGVNYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9DaHJvbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNw
ZWN0b3JQYWdlQWdlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1dpbmRvd0ZlYXR1cmVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUmVmPFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI+IFdlYkluc3BlY3Rv
clJlbW90ZU1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIocGFnZSkpOworfQorCitXZWJJbnNw
ZWN0b3JSZW1vdGVNYW5hZ2VyOjpXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKFdlYlBhZ2UqIHBh
Z2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdl
cjo6fldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIoKQoreworICAgIGRpc2Nvbm5lY3RGcm9tUGFn
ZSgpOworfQorCit1aW50NjRfdCBXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjp0b2tlbkZvclJl
bW90ZUZyb250ZW5kKGNvbnN0IFJlZlB0cjxXZWJJbnNwZWN0b3I+JiByZW1vdGVGcm9udGVuZCkg
Y29uc3QKK3sKKyAgICBhdXRvIGVuZCA9IG1fcmVtb3RlRnJvbnRlbmRzLmVuZCgpOworICAgIGZv
ciAoYXV0byBpdCA9IG1fcmVtb3RlRnJvbnRlbmRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBpZiAoaXQtPnZhbHVlID09IHJlbW90ZUZyb250ZW5kKQorICAgICAgICAgICAg
cmV0dXJuIGl0LT5rZXk7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JSZW1vdGVNYW5hZ2VyOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCh1aW50NjRfdCByZW1v
dGVGcm9udGVuZFRva2VuKQoreworICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IHJlbW90ZUZyb250
ZW5kID0gbV9yZW1vdGVGcm9udGVuZHMuZ2V0KHJlbW90ZUZyb250ZW5kVG9rZW4pOworICAgIEFT
U0VSVCghcmVtb3RlRnJvbnRlbmQuZ2V0KCkpOworCisgICAgcmVtb3RlRnJvbnRlbmQgPSBXZWJJ
bnNwZWN0b3I6OmNyZWF0ZShtX3BhZ2UsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsOjpDb25u
ZWN0aW9uVHlwZTo6UmVtb3RlKTsKKyAgICBtX3JlbW90ZUZyb250ZW5kcy5zZXQocmVtb3RlRnJv
bnRlbmRUb2tlbiwgcmVtb3RlRnJvbnRlbmQpOworCisgICAgaWYgKG1fcGFnZS0+Y29yZVBhZ2Uo
KSkKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29u
bmVjdEZyb250ZW5kKHJlbW90ZUZyb250ZW5kLmdldCgpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JSZW1vdGVNYW5hZ2VyOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCh1aW50NjRfdCByZW1v
dGVGcm9udGVuZFRva2VuKQoreworICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IHJlbW90ZUZyb250
ZW5kID0gbV9yZW1vdGVGcm9udGVuZHMuZ2V0KHJlbW90ZUZyb250ZW5kVG9rZW4pOworICAgIEFT
U0VSVChyZW1vdGVGcm9udGVuZC5nZXQoKSk7CisgICAgaWYgKCFyZW1vdGVGcm9udGVuZC5nZXQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGFnZS0+Y29yZVBhZ2UoKSkKKyAgICAg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZy
b250ZW5kKHJlbW90ZUZyb250ZW5kLmdldCgpKTsKKyAgICBtX3JlbW90ZUZyb250ZW5kcy5yZW1v
dmUocmVtb3RlRnJvbnRlbmRUb2tlbik7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUmVtb3RlTWFu
YWdlcjo6c2VuZFJlbW90ZUZyb250ZW5kTWVzc2FnZVRvQmFja2VuZCh1aW50NjRfdCByZW1vdGVG
cm9udGVuZFRva2VuLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgUmVmUHRyPFdlYklu
c3BlY3Rvcj4gcmVtb3RlRnJvbnRlbmQgPSBtX3JlbW90ZUZyb250ZW5kcy5nZXQocmVtb3RlRnJv
bnRlbmRUb2tlbik7CisgICAgQVNTRVJUKHJlbW90ZUZyb250ZW5kLmdldCgpKTsKKyAgICBpZiAo
IXJlbW90ZUZyb250ZW5kLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgcmVtb3RlRnJvbnRl
bmQtPnNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpOworfQorCit2b2lkIFdlYkluc3BlY3Rv
clJlbW90ZU1hbmFnZXI6OmRpc2Nvbm5lY3RGcm9tUGFnZSgpCit7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFdlYkluc3BlY3Rvcj4+OjppdGVyYXRvciBlbmQgPSBtX3JlbW90ZUZyb250
ZW5kcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJJbnNwZWN0
b3I+Pjo6aXRlcmF0b3IgaXQgPSBtX3JlbW90ZUZyb250ZW5kcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPFdlYkluc3BlY3Rvcj4gcmVtb3RlRnJvbnRlbmQgPSBp
dC0+dmFsdWU7CisgICAgICAgIHJlbW90ZUZyb250ZW5kLT5kaXNjb25uZWN0RnJvbVBhZ2UoKTsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JSZW1vdGVNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVt
b3RlTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MTY4NWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yUmVtb3RlTWFuYWdlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbnNwZWN0
b3JSZW1vdGVNYW5hZ2VyX2gKKyNkZWZpbmUgV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcl9oCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIE1lc3NhZ2VE
ZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKK2NsYXNz
IFdlYkluc3BlY3RvcjsKKworY2xhc3MgV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI+LCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9yUmVtb3Rl
TWFuYWdlcj4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JSZW1v
dGVNYW5hZ2VyKCk7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
OyB9CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yUmVtb3Rl
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKworICAgIHVp
bnQ2NF90IHRva2VuRm9yUmVtb3RlRnJvbnRlbmQoY29uc3QgUmVmUHRyPFdlYkluc3BlY3Rvcj4m
IHJlbW90ZUZyb250ZW5kKSBjb25zdDsKKyAgICB2b2lkIHJlbW90ZUZyb250ZW5kQ29ubmVjdGVk
KHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kVG9rZW4pOworICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRE
aXNjb25uZWN0ZWQodWludDY0X3QgcmVtb3RlRnJvbnRlbmRUb2tlbik7CisgICAgdm9pZCBzZW5k
UmVtb3RlRnJvbnRlbmRNZXNzYWdlVG9CYWNrZW5kKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kVG9r
ZW4sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFn
ZSgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIo
V2ViUGFnZSopOworCisgICAgV2ViUGFnZSogbV9wYWdlIHsgbnVsbHB0ciB9OworICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJJbnNwZWN0b3I+PiBtX3JlbW90ZUZyb250ZW5kczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9T
RVJWRVIpCisKKyNlbmRpZiAvLyBXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JSZW1vdGVN
YW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3RvclJlbW90ZU1hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMDgwNDA0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyLm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisj
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorbWVzc2FnZXMgLT4gV2ViSW5z
cGVjdG9yUmVtb3RlTWFuYWdlciB7CisgICAgUmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQodWludDY0
X3QgcmVtb3RlRnJvbnRlbmRJZGVudGlmaWVyKQorICAgIFJlbW90ZUZyb250ZW5kRGlzY29ubmVj
dGVkKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kSWRlbnRpZmllcikKKyAgICBTZW5kUmVtb3RlRnJv
bnRlbmRNZXNzYWdlVG9CYWNrZW5kKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kSWRlbnRpZmllciwg
U3RyaW5nIG1lc3NhZ2UpCit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcxZjQ5MjUuLjY0M2VkMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5NSw2ICsxOTUs
MTEgQEAKICNpbmNsdWRlICJXZWJEZXZpY2VQcm94aW1pdHlDbGllbnQuaCIKICNlbmRpZgogCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUmVtb3Rl
TWFuYWdlci5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXJNZXNzYWdlcy5o
IgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJQREZQbHVnaW4uaCIK
ICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgpAQCAtNTI5LDYgKzUzNCw5
IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAgICAgd2ViUHJvY2Vzcy5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCwgKnRoaXMpOwogICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwg
KnRoaXMpOworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIHdlYlByb2Nlc3MuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisjZW5kaWYKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCiAgICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlE
LCAqdGhpcyk7CiAjZW5kaWYKQEAgLTYyMiw2ICs2MzAsOSBAQCBXZWJQYWdlOjp+V2ViUGFnZSgp
CiAjZW5kaWYKICAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKICAgICB3ZWJQ
cm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VS
VkVSKQorICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsK
KyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB3ZWJQcm9jZXNzLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogI2VuZGlmCkBAIC0xMDI1LDYgKzEwMzYsMTIgQEAg
dm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAgICAgICAgIG1faW5zcGVjdG9yLT5kaXNjb25uZWN0RnJv
bVBhZ2UoKTsKICAgICAgICAgbV9pbnNwZWN0b3IgPSBudWxscHRyOwogICAgIH0KKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpZiAobV9pbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKSB7
CisgICAgICAgIG1faW5zcGVjdG9yUmVtb3RlTWFuYWdlci0+ZGlzY29ubmVjdEZyb21QYWdlKCk7
CisgICAgICAgIG1faW5zcGVjdG9yUmVtb3RlTWFuYWdlciA9IG51bGxwdHI7CisgICAgfQorI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9mdWxsU2NyZWVuTWFuYWdl
ciA9IG51bGxwdHI7CkBAIC0zMjI2LDYgKzMyNDMsMTcgQEAgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlciYgV2ViUGFnZTo6dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCiB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlciogV2Vi
UGFnZTo6aW5zcGVjdG9yUmVtb3RlTWFuYWdlcigpCit7CisgICAgaWYgKG1faXNDbG9zZWQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghbV9pbnNwZWN0b3JSZW1vdGVNYW5hZ2Vy
KQorICAgICAgICBtX2luc3BlY3RvclJlbW90ZU1hbmFnZXIgPSBXZWJJbnNwZWN0b3JSZW1vdGVN
YW5hZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yUmVtb3RlTWFuYWdl
ci5nZXQoKTsKK30KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQYWdlOjpz
ZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYm9vbCBhbGxvd3MpCiB7CkBAIC0z
ODQ2LDYgKzM4NzQsMTMgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViSW5zcGVjdG9yUmVtb3RlTWFu
YWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGluc3BlY3RvclJlbW90ZU1h
bmFnZXIoKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgZnVsbFNjcmVl
bk1hbmFnZXIoKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyZmEzZjIwLi45
OTQ1YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTE3Miw2ICsxNzIsNyBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlcjsKIGNsYXNzIFdl
YkltYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yOwogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50Owor
Y2xhc3MgV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjsKIGNsYXNzIFdlYkluc3BlY3RvclVJOwog
Y2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKQEAgLTI0OSw2
ICsyNTAsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvcihMYXp5Q3Jl
YXRpb25Qb2xpY3kgPSBMYXp5Q3JlYXRpb25Qb2xpY3k6OkNyZWF0ZUlmTmVlZGVkKTsKICAgICBX
ZWJJbnNwZWN0b3JVSSogaW5zcGVjdG9yVUkoKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKKyAgICBXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKiBpbnNwZWN0b3JSZW1vdGVNYW5hZ2Vy
KCk7CisjZW5kaWYKICAgICBib29sIGlzSW5zcGVjdG9yUGFnZSgpIHsgcmV0dXJuICEhbV9pbnNw
ZWN0b3JVSTsgfQogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQpAQCAtMTMxNSw2ICsxMzE5LDkgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcj4gbV9wbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOwogICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiBtX3ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
KyAgICBSZWZQdHI8V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcj4gbV9pbnNwZWN0b3JSZW1vdGVN
YW5hZ2VyOworI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9hbGxvd3NNZWRp
YURvY3VtZW50SW5saW5lUGxheWJhY2sgeyBmYWxzZSB9OwogI2VuZGlmCi0tIAoyLjUuMAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285015</attachid>
            <date>2016-08-01 08:24:15 -0700</date>
            <delta_ts>2016-08-01 11:24:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153123-20160801122253.patch</filename>
            <type>text/plain</type>
            <size>41477</size>
            <attacher name="Andre Moreira Magalhaes">andrunko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YmY2NDM3YzE1ZTZlOWI2NDk4MWJhNmJmMTFmMjQwYWZhMWM1OWUyLi42ZTUxMzJmMjM4ZjlkMmMx
M2U3ZDRlNjc3NTc4ZmVkNjhlZmRlOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNyBAQAogMjAxNi0wNS0yNSAgQW5kcmUgTW9yZWlyYSBNYWdhbGhhZXMgICA8YW5kcmUu
bWFnYWxoYWVzQGNvbGxhYm9yYS5jby51az4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNw
ZWN0b3IgZG9lc250IHN1cHBvcnQgbXVsdGlwbGUgZnJvbnRlbmRzIHJ1bm5pbmcgaW4gcGFyYWxs
ZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEy
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQyMDU2NDc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRSb3V0ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcjo6aGFzRnJv
bnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oOgor
CisyMDE2LTA1LTI1ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNA
Y29sbGFib3JhLmNvLnVrPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhc3MgZnJvbnRlbmQg
dG9rZW4gdG8gYWdlbnQncyBmcm9udGVuZCBhdHRhY2gvZGV0YWNoIG1ldGhvZHMKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODkwMgogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjI1OTI0MTQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk0MWNiZWMzZTA4NDExZDUw
Yjk3YjZhYzMxZDdiOTdmM2U0ZmRmMS4uNzFmOWU0NTBiZDhhNGIzYjIyNjc3Zjc1ZmFkOTZkNDA5
MGU5MmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDE2LTA1LTI1ICBBbmRyZSBN
b3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNAY29sbGFib3JhLmNvLnVrPgogCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvciBkb2VzbnQgc3VwcG9ydCBtdWx0aXBsZSBm
cm9udGVuZHMgcnVubmluZyBpbiBwYXJhbGxlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDIw
NTY0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDogRG8gbm90IGJyZWFrIGlmIGEgcmVt
b3RlIGluc3BlY3RvciBpbnN0YW5jZSBpcworICAgICAgICBjb25uZWN0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6
OnBvcHVsYXRlKToKKworMjAxNi0wNS0yNSAgQW5kcmUgTW9yZWlyYSBNYWdhbGhhZXMgICA8YW5k
cmUubWFnYWxoYWVzQGNvbGxhYm9yYS5jby51az4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBw
YXNzIGZyb250ZW5kIHRva2VuIHRvIGFnZW50J3MgZnJvbnRlbmQgYXR0YWNoL2RldGFjaCBtZXRo
b2RzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg5
MDIKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNTkyNDE0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJlODMw
NGNmM2QyNTYzNmYyODkzY2E5ZmQ1NGRjNWUzMDJiNGQ3ZjcuLjY1MmNjNjRiYTI3ZTk5MDBlMDNi
MWRiMDkyMTAzOGQ2ZGM3ZWY0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3NSBAQAogMjAxNi0w
NS0yNSAgQW5kcmUgTW9yZWlyYSBNYWdhbGhhZXMgICA8YW5kcmUubWFnYWxoYWVzQGNvbGxhYm9y
YS5jby51az4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3IgZG9lc250IHN1cHBv
cnQgbXVsdGlwbGUgZnJvbnRlbmRzIHJ1bm5pbmcgaW4gcGFyYWxsZWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzEyMworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjQyMDU2NDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICBDdXJyZW50bHksIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIgb25seSBhbGxvd3Mg
b25lIHJlbW90ZSBjb25uZWN0aW9uIHBlciBwYWdlLCB0aHVzIGJyZWFraW5nCisgICAgICAgd2hl
biBtdWx0aXBsZSByZW1vdGUgZnJvbnRlbmRzIGFyZSBjb25uZWN0ZWQuIFRoaXMgcGF0Y2ggY2hh
bmdlcyB0aGlzIGJlaGF2aW91ciBieSBhbGxvd2luZworICAgICAgIG11bHRpcGxlIHJlbW90ZSBm
cm9udGVuZCBjb25uZWN0aW9ucyB1c2luZyBzZXBhcmF0ZSBXZWJJbnNwZWN0b3IgaW5zdGFuY2Vz
IGFuZCBwcm9wZXJseQorICAgICAgIHJvdXRpbmcgbWVzc2FnZXMgYmFjayBhbmQgZm9ydGggYmV0
d2VlbiB0aGUgYmFja2VuZCBhbmQgZnJvbnRlbmRzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2
ZXIuY3BwOiBBbGxvdyBtdWx0aXBsZSByZW1vdGUgaW5zcGVjdG9yCisgICAgICAgIGNvbm5lY3Rp
b25zIHRvIHRoZSBzYW1lIHBhZ2UuIFRodXMgYWxsb3dpbmcgc2VwYXJhdGUgZnJvbnRlbmRzIHRv
IHJ1biBpbiBwYXJhbGxlbC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjp+
V2ViSW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVy
Ojp1bnJlZ2lzdGVyUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclNlcnZlcjo6
c2VuZE1lc3NhZ2VPdmVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clNlcnZlcjo6ZGlkRXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVdlYlNvY2tldE1lc3NhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OmNsb3NlQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclNlcnZlcjo6aW5zcGVjdG9yVXJsRm9yUGFnZUlEKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZl
V2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6IFVzZSB0aGUgbmV3IFdlYkluc3BlY3RvclJlbW90
ZU1hbmFnZXIgdG8gc2VuZCBtZXNzYWdlcyB0bworICAgICAgICBiYWNrZW5kLgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0Y2hNZXNzYWdl
RnJvbVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OnNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
OiBBbGxvdyBjcmVhdGluZyBtdWx0aXBsZSBpbnN0YW5jZXMgd2l0aCBhIGRpZmZlcmVudAorICAg
ICAgICBjb25uZWN0aW9uIHR5cGUgKHJlbW90ZS9sb2NhbCkgYW5kIHVzZSB0aGUgbmV3IFdlYklu
c3BlY3RvclJlbW90ZU1hbmFnZXIgdG8gc2VuZCBtZXNzYWdlcworICAgICAgICB0byB0aGUgcHJv
cGVyIGZyb250ZW5kIHdoZW4gYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6Om9wZW5Gcm9udGVuZENvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3I6OnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpkaXNjb25uZWN0RnJvbVBhZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IubWVzc2FnZXMu
aW46IE1vdmUgcmVtb3RlIGZyb250ZW5kIG1lc3NhZ2VzIHRvIHRoZSBuZXcKKyAgICAgICAgV2Vi
SW5zcGVjdG9yUmVtb3RlTWFuYWdlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yUmVtb3RlTWFuYWdlci5jcHA6IEFkZGVkLiBXZWJJbnNwZWN0b3JSZW1vdGVNYW5h
Z2VyIGlzCisgICAgICAgIGEgbWVzc2FnZSBoYW5kbGVyIGZvciByZW1vdGUgaW5zcGVjdG9yIGZy
b250ZW5kcy4gSXQgY3JlYXRlcyByZW1vdGUgaW5zcGVjdG9yIGluc3RhbmNlcyB3aGVuCisgICAg
ICAgIGEgbmV3IHJlbW90ZSBmcm9udGVuZCBpcyBjb25uZWN0ZWQsIHByb3Blcmx5IHJlbW92aW5n
IGl0IHdoZW4gdGhlIGZyb250ZW5kIGlzIGRpc2Nvbm5lY3RlZC4KKyAgICAgICAgSXQgaWRlbnRp
ZmllcyBhIGZyb250ZW5kIGJ5IHRva2VuLCBhbGxvd2luZyB0byBwcm9wZXJseSByb3V0ZSBtZXNz
YWdlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6V2ViSW5zcGVj
dG9yUmVtb3RlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclJlbW90ZU1h
bmFnZXI6On5XZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6dG9rZW5Gb3JSZW1vdGVGcm9udGVuZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI6OnJlbW90ZUZyb250ZW5kQ29ubmVj
dGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6cmVtb3Rl
RnJvbnRlbmREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JSZW1v
dGVNYW5hZ2VyOjpzZW5kUmVtb3RlRnJvbnRlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6ZGlzY29ubmVjdEZyb21QYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlci5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjpwYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlci5tZXNz
YWdlcy5pbjogRGVmaW5lIG1lc3NhZ2VzIGhhbmRsZWQgYnkKKyAgICAgICAgV2ViSW5zcGVjdG9y
UmVtb3RlTWFuYWdlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
IFByb3Blcmx5IHJvdXRlIHJlbW90ZSBpbnNwZWN0b3IgbWVzc2FnZXMgdG8KKyAgICAgICAgV2Vi
SW5zcGVjdG9yUmVtb3RlTWFuYWdlci4KKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNwYXRj
aEZha2VNb3VzZU1vdmVFdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp+V2ViUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6aW5zcGVjdG9yUmVtb3RlTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorCisyMDE2LTA1LTI1ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5t
YWdhbGhhZXNAY29sbGFib3JhLmNvLnVrPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhc3Mg
ZnJvbnRlbmQgdG9rZW4gdG8gYWdlbnQncyBmcm9udGVuZCBhdHRhY2gvZGV0YWNoIG1ldGhvZHMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODkwMgog
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI1OTI0MTQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwCmlu
ZGV4IGRhOGUzMzg4MGQzOTM1MGVkZTJiYmQ0NjM1OWE1M2VlNGRkZjJlOWIuLmVlNmI4YzIyYTBh
NjdkNzVhOTU4MzQ0MGE3NmQ4OTIwNWFjNDNiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuY3BwCkBA
IC02NCw2ICs2NCwxNiBAQCB2b2lkIEZyb250ZW5kUm91dGVyOjpkaXNjb25uZWN0QWxsRnJvbnRl
bmRzKCkKICAgICBtX2Nvbm5lY3Rpb25zLmNsZWFyKCk7CiB9CiAKK2Jvb2wgRnJvbnRlbmRSb3V0
ZXI6Omhhc0Zyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCogY29ubmVjdGlvbikgY29uc3QKK3sKKyAg
ICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fY29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYgKHN0ZDo6
Z2V0PDA+KHJlY29yZCkgPT0gY29ubmVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBGcm9udGVuZFJvdXRlcjo6aGFz
TG9jYWxGcm9udGVuZCgpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2Nvbm5l
Y3Rpb25zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kUm91dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kUm91dGVyLmgKaW5kZXggNTQyMmIzM2RmNTRmNTA1YmZkZjk4NDU2
MWE2YWI3YzhhZDQ5Y2I5NS4uMDg3MTgyMDQyMWRiOWQzMmZjYTQyNjgxNGY0ZGU1OTNhNTMxNThk
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZFJvdXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRSb3V0ZXIuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxGcm9udGVuZFJvdXRlcj4gY3JlYXRlKCk7CiAKICAgICBib29sIGhhc0Zyb250ZW5k
cygpIGNvbnN0IHsgcmV0dXJuICFtX2Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsgfQorICAgIGJvb2wg
aGFzRnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKikgY29uc3Q7CiAgICAgYm9vbCBoYXNMb2NhbEZy
b250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggY2U2NTFjZTYzNmI4NzUxZDU5NWUwYmNmNjE5YTBiNzgzMmFiYzk0MC4uMmI3NWY0NGIzNzFi
NjMzNDNmMWUzMDEyMGJjMGM0M2VjOWJiYWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjQ3LDYgKzI0Nyw5IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBm
cmFtZSwgRE9NV3JhcHBlcldvCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZy
b250ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjb25uZWN0aW9uLCBib29sIGlzQXV0
b21hdGljSW5zcGVjdGlvbikKIHsKKyAgICBpZiAobV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRl
bmQoY29ubmVjdGlvbikpCisgICAgICAgIHJldHVybjsKKwogICAgIEFTU0VSVF9BUkcoY29ubmVj
dGlvbiwgY29ubmVjdGlvbik7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsKIApAQCAt
MzMwLDggKzMzMyw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEFsbEZy
b250ZW5kcygpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiB7Ci0gICAgQVNT
RVJUKCFtX2Zyb250ZW5kUm91dGVyLT5oYXNSZW1vdGVGcm9udGVuZCgpKTsKLQogICAgIGlmICgh
ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM4Miw4ICszODMsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3QoTm9kZSogbm9kZSkKICAgICBpZiAoIWVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFoYXNSZW1vdGVGcm9udGVuZCgpKQotICAg
ICAgICBzaG93KCk7CisgICAgc2hvdygpOwogCiAgICAgbV9kb21BZ2VudC0+aW5zcGVjdChub2Rl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApp
bmRleCBiN2FmZGU5NWZhNTc3M2E5ZjM4MDg2MjMyZTcwNzNlYTI2ZjI4OGUzLi5mZTVlM2JlMzhk
ZDc3NDQ4MzdmMDM3MWIyOWNkOTRlNjQxODEzZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC05MDcsNyArOTA3LDcgQEAgdm9pZCBDb250
ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVt
KFNwZWVjaE1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZiAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUt
PnBhZ2UoKSAmJiAoZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3Rp
b25MZXZlbCgpID4gMCB8fCBmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaGFz
UmVtb3RlRnJvbnRlbmQoKSkpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZnJhbWUtPnBhZ2Uo
KSAmJiAoZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3Rpb25MZXZl
bCgpID4gMCkpKSB7CiAKICAgICAgICAgICAgICAgICAvLyBJbiBHVEsrIHVuYXZhaWxhYmxlIGl0
ZW1zIGFyZSBub3QgaGlkZGVuIGJ1dCBpbnNlbnNpdGl2ZS4KICNpZiBQTEFURk9STShHVEspCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CmluZGV4IDJhYjBjZGZjMmY0NjNiYjBkMGQwZjViMDM3MzI0MjEwNjI2
MTc3YTQuLmU2N2M3M2EzYmI1YmU0MjYxODA0N2E5M2Q4ZTI4NGQ2NDM4YWM1OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CkBAIC02MzQsNiArNjM0LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXIuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clJlbW90ZU1hbmFnZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5j
cHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTczMyw2ICs3MzQsNyBA
QCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9F
dmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRl
ZExpbmtUYWJsZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclJlbW90ZU1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDY2Mzg3NzQ4
NWViZWIxZjQ5NGVlMjZiZjJiZmNmZTY4OWRjODk3NDguLjI1MjEzZjQ1ZjUxMjY2ZWIyZTAyNmQx
NTgzNmJjZjllOTYwYTlmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKQEAgLTY2
LDExICs2NiwxMyBAQCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OldlYkluc3BlY3RvclNlcnZlcigpCiBX
ZWJJbnNwZWN0b3JTZXJ2ZXI6On5XZWJJbnNwZWN0b3JTZXJ2ZXIoKQogewogICAgIC8vIENsb3Nl
IGFueSByZW1haW5pbmcgb3BlbiBjb25uZWN0aW9ucy4KLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBX
ZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKj46Oml0ZXJhdG9yIGVuZCA9IG1fY29ubmVjdGlvbk1h
cC5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8dW5zaWduZWQsIFdlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb24qPjo6aXRlcmF0b3IgaXQgPSBtX2Nvbm5lY3Rpb25NYXAuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24g
PSBpdC0+dmFsdWU7Ci0gICAgICAgIFdlYkluc3BlY3RvclByb3h5KiBjbGllbnQgPSBtX2NsaWVu
dE1hcC5nZXQoY29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgY2xvc2VDb25uZWN0
aW9uKGNsaWVudCwgY29ubmVjdGlvbik7CisgICAgYXV0byBlbmQgPSBtX2Nvbm5lY3Rpb25NYXAu
ZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb25uZWN0aW9uTWFwLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBWZWN0b3I8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbio+
IGNvbm5lY3Rpb25zID0gaXQtPnZhbHVlOworICAgICAgICBmb3IgKFdlYlNvY2tldFNlcnZlckNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9ucykgeworICAgICAgICAgICAgV2ViSW5z
cGVjdG9yUHJveHkqIGNsaWVudCA9IG1fY2xpZW50TWFwLmdldChjb25uZWN0aW9uLT5pZGVudGlm
aWVyKCkpOworICAgICAgICAgICAgY2xvc2VDb25uZWN0aW9uKGNsaWVudCwgY29ubmVjdGlvbik7
CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTkwLDkgKzkyLDExIEBAIGludCBXZWJJbnNwZWN0
b3JTZXJ2ZXI6OnJlZ2lzdGVyUGFnZShXZWJJbnNwZWN0b3JQcm94eSogY2xpZW50KQogdm9pZCBX
ZWJJbnNwZWN0b3JTZXJ2ZXI6OnVucmVnaXN0ZXJQYWdlKGludCBwYWdlSWQpCiB7CiAgICAgbV9j
bGllbnRNYXAucmVtb3ZlKHBhZ2VJZCk7Ci0gICAgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiog
Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQocGFnZUlkKTsKLSAgICBpZiAoY29ubmVj
dGlvbikKLSAgICAgICAgY2xvc2VDb25uZWN0aW9uKDAsIGNvbm5lY3Rpb24pOworICAgIFZlY3Rv
cjxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKj4gY29ubmVjdGlvbnMgPSBtX2Nvbm5lY3Rpb25N
YXAuZ2V0KHBhZ2VJZCk7CisgICAgaWYgKCFjb25uZWN0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZm9yIChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uIDogY29ubmVjdGlv
bnMpCisgICAgICAgICAgICBjbG9zZUNvbm5lY3Rpb24oMCwgY29ubmVjdGlvbik7CisgICAgfQog
fQogCiBTdHJpbmcgV2ViSW5zcGVjdG9yU2VydmVyOjppbnNwZWN0b3JVcmxGb3JQYWdlSUQoaW50
KQpAQCAtMTAwLDExICsxMDQsMTUgQEAgU3RyaW5nIFdlYkluc3BlY3RvclNlcnZlcjo6aW5zcGVj
dG9yVXJsRm9yUGFnZUlEKGludCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgV2Vi
SW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJ
ZEZvckNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViSW5zcGVjdG9y
U2VydmVyOjpzZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwg
dW5zaWduZWQgcGFnZUlkRm9yQ29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewot
ICAgIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25N
YXAuZ2V0KHBhZ2VJZEZvckNvbm5lY3Rpb24pOwotICAgIGlmIChjb25uZWN0aW9uKQotICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kV2ViU29ja2V0TWVzc2FnZShtZXNzYWdlKTsKKyAgICBWZWN0b3I8
V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbio+IGNvbm5lY3Rpb25zID0gbV9jb25uZWN0aW9uTWFw
LmdldChwYWdlSWRGb3JDb25uZWN0aW9uKTsKKyAgICBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9u
KiBjb25uZWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9u
Kj4oY29ubmVjdGlvbklEKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbiAmJiBjb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uKSk7CisgICAgaWYgKCFjb25uZWN0aW9uIHx8ICFjb25uZWN0aW9u
cy5jb250YWlucyhjb25uZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29ubmVjdGlv
bi0+c2VuZFdlYlNvY2tldE1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9y
U2VydmVyOjpkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVy
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgUGFzc1JlZlB0cjxIVFRQUmVxdWVzdD4gcmVxdWVzdCkK
QEAgLTE2NiwxOSArMTc0LDE1IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpkaWRFc3RhYmxp
c2hXZWJTb2NrZXRDb25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3RpCiAgICAgdW5zaWdu
ZWQgcGFnZUlkID0gcGFnZUlkRnJvbVJlcXVlc3RQYXRoKHBhdGgpOwogICAgIEFTU0VSVChwYWdl
SWQpOwogCi0gICAgLy8gSWdub3JlIGNvbm5lY3Rpb25zIHRvIGEgcGFnZSB0aGF0IGFscmVhZHkg
aGF2ZSBhIHJlbW90ZSBpbnNwZWN0b3IgY29ubmVjdGVkLgotICAgIGlmIChtX2Nvbm5lY3Rpb25N
YXAuY29udGFpbnMocGFnZUlkKSkgewotICAgICAgICBMT0dfRVJST1IoIkEgcmVtb3RlIGluc3Bl
Y3RvciBjb25uZWN0aW9uIGFscmVhZHkgZXhpc3QgZm9yIHBhZ2UgSUQgJWQuIElnbm9yaW5nLiIs
IHBhZ2VJZCk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNodXRkb3duTm93KCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICAvLyBNYXAgdGhlIHBhZ2VJZCB0byB0aGUgY29ubmVjdGlvbiBp
biBjYXNlIHdlIG5lZWQgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24gbG9jYWxseS4KICAgICBjb25u
ZWN0aW9uLT5zZXRJZGVudGlmaWVyKHBhZ2VJZCk7Ci0gICAgbV9jb25uZWN0aW9uTWFwLnNldChw
YWdlSWQsIGNvbm5lY3Rpb24pOworCisgICAgVmVjdG9yPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b24qPiBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbk1hcC5nZXQocGFnZUlkKTsKKyAgICBjb25u
ZWN0aW9ucy5hcHBlbmQoY29ubmVjdGlvbik7CisgICAgbV9jb25uZWN0aW9uTWFwLnNldChwYWdl
SWQsIGNvbm5lY3Rpb25zKTsKIAogICAgIFdlYkluc3BlY3RvclByb3h5KiBjbGllbnQgPSBtX2Ns
aWVudE1hcC5nZXQocGFnZUlkKTsKLSAgICBjbGllbnQtPnJlbW90ZUZyb250ZW5kQ29ubmVjdGVk
KCk7CisgICAgY2xpZW50LT5yZW1vdGVGcm9udGVuZENvbm5lY3RlZChyZWludGVycHJldF9jYXN0
PHVpbnQ2NF90Pihjb25uZWN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpk
aWRSZWNlaXZlV2ViU29ja2V0TWVzc2FnZShXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xODcsNyArMTkxLDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVXZWJTb2NrZXRNZXNzYWdlKFdlYlNvY2tldFNl
cnZlckNvbm5lY3Rpb24qIGMKICAgICB1bnNpZ25lZCBwYWdlSWQgPSBjb25uZWN0aW9uLT5pZGVu
dGlmaWVyKCk7CiAgICAgQVNTRVJUKHBhZ2VJZCk7CiAgICAgV2ViSW5zcGVjdG9yUHJveHkqIGNs
aWVudCA9IG1fY2xpZW50TWFwLmdldChwYWdlSWQpOwotICAgIGNsaWVudC0+ZGlzcGF0Y2hNZXNz
YWdlRnJvbVJlbW90ZUZyb250ZW5kKG1lc3NhZ2UpOworICAgIGNsaWVudC0+ZGlzcGF0Y2hNZXNz
YWdlRnJvbVJlbW90ZUZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGNvbm5lY3Rp
b24pLCBtZXNzYWdlKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZENsb3NlV2Vi
U29ja2V0Q29ubmVjdGlvbihXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uKQpA
QCAtMjA2LDEwICsyMTAsMTIgQEAgdm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmNsb3NlQ29ubmVj
dGlvbihXZWJJbnNwZWN0b3JQcm94eSogY2xpZW50LCBXZWJTb2NrZXRTZXIKIHsKICAgICAvLyBM
b2NhbCBzaWRlIGNsZWFudXAuCiAgICAgaWYgKGNsaWVudCkKLSAgICAgICAgY2xpZW50LT5yZW1v
dGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpOworICAgICAgICBjbGllbnQtPnJlbW90ZUZyb250ZW5k
RGlzY29ubmVjdGVkKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGNvbm5lY3Rpb24pKTsKIAog
ICAgIC8vIFJlbW90ZSBzaWRlIGNsZWFudXAuCi0gICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShj
b25uZWN0aW9uLT5pZGVudGlmaWVyKCkpOworICAgIFZlY3RvcjxXZWJTb2NrZXRTZXJ2ZXJDb25u
ZWN0aW9uKj4gY29ubmVjdGlvbnMgPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGNvbm5lY3Rpb24tPmlk
ZW50aWZpZXIoKSk7CisgICAgY29ubmVjdGlvbnMucmVtb3ZlRmlyc3QoY29ubmVjdGlvbik7Cisg
ICAgbV9jb25uZWN0aW9uTWFwLnNldChjb25uZWN0aW9uLT5pZGVudGlmaWVyKCksIGNvbm5lY3Rp
b25zKTsKICAgICBjb25uZWN0aW9uLT5zZXRJZGVudGlmaWVyKDApOwogICAgIGNvbm5lY3Rpb24t
PnNodXRkb3duTm93KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCAxMzI5OWIx
NmUxOTNmNjc0YzBjNGZkY2M3Nzc4ZTZjZjY2ZDkwOTFhLi4xZmY2MmIzZTgwNWZiM2Y0ZjliZWFm
ZTcwMGM2ZmE5OWQzYjcyODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIGludCByZWdpc3RlclBhZ2UoV2ViSW5zcGVjdG9yUHJveHkq
IGNsaWVudCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyUGFnZShpbnQgcGFnZUlkKTsKICAgICBTdHJp
bmcgaW5zcGVjdG9yVXJsRm9yUGFnZUlEKGludCBwYWdlSWQpOwotICAgIHZvaWQgc2VuZE1lc3Nh
Z2VPdmVyQ29ubmVjdGlvbih1bnNpZ25lZCBwYWdlSWRGb3JDb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VPdmVyQ29ubmVjdGlvbih1aW50NjRf
dCBjb25uZWN0aW9uSUQsIHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAKIHByaXZhdGU6CiAgICAgV2ViSW5zcGVjdG9yU2VydmVyKCk7CkBAIC02
OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBtX25leHRBdmFpbGFibGVQYWdl
SWQ7CiAgICAgQ2xpZW50TWFwIG1fY2xpZW50TWFwOwotICAgIEhhc2hNYXA8dW5zaWduZWQsIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb24qPiBtX2Nvbm5lY3Rpb25NYXA7CisgICAgSGFzaE1hcDx1
bnNpZ25lZCwgVmVjdG9yPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qPj4gbV9jb25uZWN0aW9u
TWFwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAKaW5kZXggZTQ2NTcyZGY2OTBmMDZlOGQ4NmRiMjQ3ZDMyZDYyOWY1OGNjMDA1OS4u
ZDljMTdlYWIxNzVlNmZjNTY4YWU3MzU2NGEzODVmMGQ2YzE0MjNmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC00Nyw2ICs0Nyw3IEBA
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNlbmRpZgogCkBAIC00MzYsMTkgKzQz
NywxOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjplbmFibGVSZW1vdGVJbnNwZWN0aW9uKCkK
ICAgICAgICAgbV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlkID0gV2ViSW5zcGVjdG9yU2VydmVyOjpz
aW5nbGV0b24oKS5yZWdpc3RlclBhZ2UodGhpcyk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJl
bW90ZUZyb250ZW5kQ29ubmVjdGVkKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kVG9rZW4pCiB7Ci0g
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JSZW1vdGVNYW5hZ2VyOjpSZW1vdGVGcm9udGVuZENvbm5lY3RlZChyZW1vdGVGcm9udGVuZFRv
a2VuKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKK3ZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kVG9r
ZW4pCiB7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpLCBtX2luc3BlY3RlZFBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjpSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZChy
ZW1vdGVGcm9udGVuZFRva2VuKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1l
c3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQodWludDY0X3QgcmVtb3RlRnJvbnRlbmRUb2tlbiwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSks
IG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI6OlNlbmRSZW1vdGVG
cm9udGVuZE1lc3NhZ2VUb0JhY2tlbmQocmVtb3RlRnJvbnRlbmRUb2tlbiwgbWVzc2FnZSksIG1f
aW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTY2NSwxMCArNjY2LDEw
IEBAIGJvb2wgV2ViSW5zcGVjdG9yUHJveHk6OnNob3VsZE9wZW5BdHRhY2hlZCgpCiB9CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKLXZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRN
ZXNzYWdlVG9SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQodWludDY0X3QgcmVtb3Rl
RnJvbnRlbmRUb2tlbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVChtX3Jl
bW90ZUluc3BlY3Rpb25QYWdlSWQpOwotICAgIFdlYkluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9u
KCkuc2VuZE1lc3NhZ2VPdmVyQ29ubmVjdGlvbihtX3JlbW90ZUluc3BlY3Rpb25QYWdlSWQsIG1l
c3NhZ2UpOworICAgIFdlYkluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkuc2VuZE1lc3NhZ2VP
dmVyQ29ubmVjdGlvbihyZW1vdGVGcm9udGVuZFRva2VuLCBtX3JlbW90ZUluc3BlY3Rpb25QYWdl
SWQsIG1lc3NhZ2UpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmgKaW5kZXggNWZhNGM5MDk4YmIyZTFiYzMxYjQ2NzAzOGJhYTVhNjZm
MTkxOWJjMi4uYWE4YjRhMmFkYjRkMjE2ODIyMWQ5ZDRjZjBmMmRiMDI4ZmI5YjBhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTE0OCw5ICsx
NDgsOSBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKICAgICB2b2lk
IGVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKLSAgICB2b2lkIHJlbW90ZUZyb250ZW5kQ29ubmVj
dGVkKCk7Ci0gICAgdm9pZCByZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpOwotICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CisgICAgdm9pZCByZW1vdGVGcm9udGVuZENvbm5lY3RlZCh1aW50NjRfdCByZW1vdGVGcm9udGVu
ZFRva2VuKTsKKyAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKHVpbnQ2NF90IHJl
bW90ZUZyb250ZW5kVG9rZW4pOworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZy
b250ZW5kKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kVG9rZW4sIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CiAgICAgaW50IHJlbW90ZUluc3BlY3Rpb25QYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Jl
bW90ZUluc3BlY3Rpb25QYWdlSWQ7IH0KICNlbmRpZgogCkBAIC0yMDIsNyArMjAyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgdm9pZCBz
ZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2
b2lkIHNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVuZCh1aW50NjRfdCByZW1vdGVGcm9udGVuZFRv
a2VuLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkF0dGFj
aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuQXR0YWNoOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYzJlZDc4
MmRiMTljYjhiNGFlY2FlYjk0NTc4ZDI1ZjBkYTI2NzdjNC4uNDAyYjZiZWEwODUxYWY4ZGI5NmY1
MDIxNDY0ZDMxNTg3NDVlYTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDUsNiArNDUsNiBAQCBtZXNz
YWdlcyAtPiBXZWJJbnNwZWN0b3JQcm94eSB7CiAgICAgU3RhcnRXaW5kb3dEcmFnKCkKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQotICAgIFNlbmRNZXNzYWdlVG9SZW1vdGVGcm9udGVu
ZChTdHJpbmcgbWVzc2FnZSkKKyAgICBTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRlbmQodWludDY0
X3QgcmVtb3RlRnJvbnRlbmRUb2tlbiwgU3RyaW5nIG1lc3NhZ2UpCiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKaW5k
ZXggYWU1NzljODZlNzNkODczZmU2MzMxZmQzMTI5ZTIwOTU1YTljYWMyMy4uYTQ0ODIzM2Q2MGVh
ZTdmZTQ2YTY2MTQyMTM0YTdiMzk5MjU5ZDZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclJlbW90ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTUzLDEz
ICs1NCwxNCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA1MDA7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2ViSW5zcGVjdG9yPiBXZWJJbnNwZWN0b3I6
OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQorUmVmPFdlYkluc3BlY3Rvcj4gV2ViSW5zcGVjdG9yOjpj
cmVhdGUoV2ViUGFnZSogcGFnZSwgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW5zcGVjdG9yKHBhZ2UpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3IocGFnZSwgY29ubmVjdGlvblR5cGUpKTsKIH0KIAot
V2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFnZSkKK1dlYkluc3BlY3Rvcjo6
V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBl
KQogICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2Nvbm5lY3Rpb25UeXBlKGNvbm5lY3Rpb25U
eXBlKQogewogfQogCkBAIC03Miw2ICs3NCw5IEBAIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3Rv
cigpCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JDbGllbnQKIHZvaWQgV2ViSW5zcGVjdG9y
OjpvcGVuRnJvbnRlbmRDb25uZWN0aW9uKGJvb2wgdW5kZXJUZXN0KQogeworICAgIGlmIChtX2Zy
b250ZW5kQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCiAjaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJ
UEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwogICAgIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihzb2NrZXRQYWlyLnNlcnZl
cik7CkBAIC0yODIsMzAgKzI4NywxNSBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogYm9vbCBXZWJJbnNwZWN0b3I6OnNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUl9TRVJWRVIpCi0gICAgaWYgKG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpCi0gICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvUmVtb3RlRnJvbnRl
bmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIGlmIChjb25uZWN0aW9uVHlwZSgp
ID09IENvbm5lY3Rpb25UeXBlOjpSZW1vdGUpIHsKKyAgICAgICAgdWludDY0X3QgcmVtb3RlRnJv
bnRlbmRUb2tlbiA9IG1fcGFnZS0+aW5zcGVjdG9yUmVtb3RlTWFuYWdlcigpLT50b2tlbkZvclJl
bW90ZUZyb250ZW5kKHRoaXMpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
U2VuZE1lc3NhZ2VUb1JlbW90ZUZyb250ZW5kKHJlbW90ZUZyb250ZW5kVG9rZW4sIG1lc3NhZ2Up
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICB9CiAgICAgZWxzZQogI2VuZGlmCisgICAgaWYgKG1f
ZnJvbnRlbmRDb25uZWN0aW9uKQogICAgICAgICBtX2Zyb250ZW5kQ29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSwg
MCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
LXZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCi17Ci0gICAgaWYg
KG1fcGFnZS0+Y29yZVBhZ2UoKSkgewotICAgICAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVk
ID0gdHJ1ZTsKLSAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuY29ubmVjdEZyb250ZW5kKHRoaXMpOwotICAgIH0KLX0KLQotdm9pZCBXZWJJbnNwZWN0b3I6
OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKLXsKLSAgICBtX3JlbW90ZUZyb250ZW5kQ29u
bmVjdGVkID0gZmFsc2U7Ci0KLSAgICBpZiAobV9wYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRl
bmQodGhpcyk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKaW5kZXggODQwNThm
YjNhM2Y5ZDBlYTk4YjM3ZmExZTI3OTdhOTZkNjVhOGY3Yi4uNTVhM2JhNmM4MDkzN2EzMjVkNjY0
ZTg4MmMzZDIzZDk0MzVjYzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIFdlYkluc3BlY3RvciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OkJ1bmRsZUluc3BlY3Rvcj4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPFdl
Ykluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqLCBDb25uZWN0aW9uVHlwZSA9IENvbm5lY3Rpb25U
eXBlOjpMb2NhbCk7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
OyB9CiAKICAgICB2b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHkoKTsKIAogICAgIGJvb2wg
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7Ci0g
ICAgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBDb25uZWN0aW9uVHlwZTo6TG9jYWw7IH0KKyAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9u
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29ubmVjdGlvblR5cGU7IH0KIAogICAg
IC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC04NiwxNyArODYsMTIgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKTsKIAotI2lmIEVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQotICAgIHZvaWQgcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKTsK
LSAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCk7Ci0jZW5kaWYKLQogICAgIHZv
aWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBjbG9zZSgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKIAotICAgIGV4cGxpY2l0IFdlYkluc3BlY3Rv
cihXZWJQYWdlKik7CisgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqLCBDb25uZWN0
aW9uVHlwZSk7CiAgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yKCk7CiAKICAgICBib29sIGNhbkF0
dGFjaFdpbmRvdygpOwpAQCAtMTA5LDEzICsxMDQsMTEgQEAgcHJpdmF0ZToKIAogICAgIFdlYlBh
Z2UqIG1fcGFnZTsKIAorICAgIENvbm5lY3Rpb25UeXBlIG1fY29ubmVjdGlvblR5cGU7CiAgICAg
UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9mcm9udGVuZENvbm5lY3Rpb247CiAKICAgICBib29s
IG1fYXR0YWNoZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wcmV2aW91c0NhbkF0dGFjaCB7IGZh
bHNlIH07Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCi0gICAgYm9vbCBtX3JlbW90ZUZy
b250ZW5kQ29ubmVjdGVkIHsgZmFsc2UgfTsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgppbmRleCA0NWVjY2Q4MjIzMTNlYTE1MDVlZmNiN2Nh
YmUzYjI0ODFmMjlhMGZlLi4wN2U4ZjJkNTMyYzNlZjBiYTBiMTYzOWRjNmNiOWQ1ODhmODRkYThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KQEAgLTQxLDkgKzQxLDQgQEAgbWVzc2FnZXMgLT4gV2Vi
SW5zcGVjdG9yIHsKICAgICBTdG9wRWxlbWVudFNlbGVjdGlvbigpCiAKICAgICBTZW5kTWVzc2Fn
ZVRvQmFja2VuZChTdHJpbmcgbWVzc2FnZSkKLQotI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVS
KQotICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKLSAgICBSZW1vdGVGcm9udGVuZERpc2Nv
bm5lY3RlZCgpCi0jZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZjE0NmNkZmFiNWRhMDk4YWM0Y2UwNTNiNTJiMjA0MDI2ZjBiYWJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclJl
bW90ZU1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1LCAyMDE2IENvbGxhYm9yYSBMdGQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
UmVtb3RlTWFuYWdlci5oIgorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yLmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yUGFnZUFnZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWlu
RnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxXZWJJbnNwZWN0b3JSZW1vdGVNYW5h
Z2VyPiBXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKHBhZ2Up
KTsKK30KKworV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6V2ViSW5zcGVjdG9yUmVtb3RlTWFu
YWdlcihXZWJQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1dlYkluc3Bl
Y3RvclJlbW90ZU1hbmFnZXI6On5XZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKCkKK3sKKyAgICBk
aXNjb25uZWN0RnJvbVBhZ2UoKTsKK30KKwordWludDY0X3QgV2ViSW5zcGVjdG9yUmVtb3RlTWFu
YWdlcjo6dG9rZW5Gb3JSZW1vdGVGcm9udGVuZChjb25zdCBSZWZQdHI8V2ViSW5zcGVjdG9yPiYg
cmVtb3RlRnJvbnRlbmQpIGNvbnN0Cit7CisgICAgYXV0byBlbmQgPSBtX3JlbW90ZUZyb250ZW5k
cy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX3JlbW90ZUZyb250ZW5kcy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT52YWx1ZSA9PSByZW1vdGVGcm9udGVu
ZCkKKyAgICAgICAgICAgIHJldHVybiBpdC0+a2V5OworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9
CisKK3ZvaWQgV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6cmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQodWludDY0X3QgcmVtb3RlRnJvbnRlbmRUb2tlbikKK3sKKyAgICBSZWZQdHI8V2ViSW5zcGVj
dG9yPiByZW1vdGVGcm9udGVuZCA9IG1fcmVtb3RlRnJvbnRlbmRzLmdldChyZW1vdGVGcm9udGVu
ZFRva2VuKTsKKyAgICBBU1NFUlQoIXJlbW90ZUZyb250ZW5kLmdldCgpKTsKKworICAgIHJlbW90
ZUZyb250ZW5kID0gV2ViSW5zcGVjdG9yOjpjcmVhdGUobV9wYWdlLCBJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGU6OlJlbW90ZSk7CisgICAgbV9yZW1vdGVGcm9udGVu
ZHMuc2V0KHJlbW90ZUZyb250ZW5kVG9rZW4sIHJlbW90ZUZyb250ZW5kKTsKKworICAgIGlmICht
X3BhZ2UtPmNvcmVQYWdlKCkpCisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLmNvbm5lY3RGcm9udGVuZChyZW1vdGVGcm9udGVuZC5nZXQoKSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0
ZWQodWludDY0X3QgcmVtb3RlRnJvbnRlbmRUb2tlbikKK3sKKyAgICBSZWZQdHI8V2ViSW5zcGVj
dG9yPiByZW1vdGVGcm9udGVuZCA9IG1fcmVtb3RlRnJvbnRlbmRzLmdldChyZW1vdGVGcm9udGVu
ZFRva2VuKTsKKyAgICBBU1NFUlQocmVtb3RlRnJvbnRlbmQuZ2V0KCkpOworICAgIGlmICghcmVt
b3RlRnJvbnRlbmQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3BhZ2UtPmNv
cmVQYWdlKCkpCisgICAgICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmRpc2Nvbm5lY3RGcm9udGVuZChyZW1vdGVGcm9udGVuZC5nZXQoKSk7CisgICAgbV9yZW1v
dGVGcm9udGVuZHMucmVtb3ZlKHJlbW90ZUZyb250ZW5kVG9rZW4pOworfQorCit2b2lkIFdlYklu
c3BlY3RvclJlbW90ZU1hbmFnZXI6OnNlbmRSZW1vdGVGcm9udGVuZE1lc3NhZ2VUb0JhY2tlbmQo
dWludDY0X3QgcmVtb3RlRnJvbnRlbmRUb2tlbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IHJlbW90ZUZyb250ZW5kID0gbV9yZW1vdGVGcm9udGVu
ZHMuZ2V0KHJlbW90ZUZyb250ZW5kVG9rZW4pOworICAgIEFTU0VSVChyZW1vdGVGcm9udGVuZC5n
ZXQoKSk7CisgICAgaWYgKCFyZW1vdGVGcm9udGVuZC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHJlbW90ZUZyb250ZW5kLT5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyOjpkaXNjb25uZWN0RnJvbVBhZ2UoKQorewor
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJJbnNwZWN0b3I+Pjo6aXRlcmF0b3IgZW5k
ID0gbV9yZW1vdGVGcm9udGVuZHMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViSW5zcGVjdG9yPj46Oml0ZXJhdG9yIGl0ID0gbV9yZW1vdGVGcm9udGVuZHMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxXZWJJbnNwZWN0b3I+IHJl
bW90ZUZyb250ZW5kID0gaXQtPnZhbHVlOworICAgICAgICByZW1vdGVGcm9udGVuZC0+ZGlzY29u
bmVjdEZyb21QYWdlKCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yUmVtb3RlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjE2ODVjNDUwNTE0MzI0
NDNiNzE4YmU1NzllOWEwMzRiMmYxMmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIuaApAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENvbGxhYm9yYSBMdGQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcl9oCisjZGVmaW5lIFdlYklu
c3BlY3RvclJlbW90ZU1hbmFnZXJfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisK
KyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENv
bm5lY3Rpb247CitjbGFzcyBNZXNzYWdlRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJJbnNwZWN0b3I7CisKK2NsYXNzIFdlYkluc3Bl
Y3RvclJlbW90ZU1hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJJbnNwZWN0b3JSZW1vdGVN
YW5hZ2VyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI+IGNyZWF0ZShXZWJQYWdlKik7CisgICAg
dmlydHVhbCB+V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcigpOworCisgICAgV2ViUGFnZSogcGFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2Vu
ZXJhdGVkIFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJikgb3ZlcnJpZGU7CisKKyAgICB1aW50NjRfdCB0b2tlbkZvclJlbW90ZUZyb250ZW5kKGNv
bnN0IFJlZlB0cjxXZWJJbnNwZWN0b3I+JiByZW1vdGVGcm9udGVuZCkgY29uc3Q7CisgICAgdm9p
ZCByZW1vdGVGcm9udGVuZENvbm5lY3RlZCh1aW50NjRfdCByZW1vdGVGcm9udGVuZFRva2VuKTsK
KyAgICB2b2lkIHJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKHVpbnQ2NF90IHJlbW90ZUZyb250
ZW5kVG9rZW4pOworICAgIHZvaWQgc2VuZFJlbW90ZUZyb250ZW5kTWVzc2FnZVRvQmFja2VuZCh1
aW50NjRfdCByZW1vdGVGcm9udGVuZFRva2VuLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCisg
ICAgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBX
ZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKFdlYlBhZ2UqKTsKKworICAgIFdlYlBhZ2UqIG1fcGFn
ZSB7IG51bGxwdHIgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViSW5zcGVjdG9y
Pj4gbV9yZW1vdGVGcm9udGVuZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQorCisjZW5kaWYgLy8gV2ViSW5zcGVjdG9y
UmVtb3RlTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA4MDQwNGEyMWY2ZDYxMjk4ZWI2YzU0YWE2ZDQyMDc3M2NjZWFhMWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yUmVtb3RlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIgewor
ICAgIFJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKHVpbnQ2NF90IHJlbW90ZUZyb250ZW5kSWRlbnRp
ZmllcikKKyAgICBSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCh1aW50NjRfdCByZW1vdGVGcm9u
dGVuZElkZW50aWZpZXIpCisgICAgU2VuZFJlbW90ZUZyb250ZW5kTWVzc2FnZVRvQmFja2VuZCh1
aW50NjRfdCByZW1vdGVGcm9udGVuZElkZW50aWZpZXIsIFN0cmluZyBtZXNzYWdlKQorfQorI2Vu
ZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAzYjM1ZWFhMTlhMDUyYjRjMjA5MzE1NjRlMGE1ZDc2ZDljNTlmN2M0Li45NDY5NDU1NmJj
YTMzYmU2OTk2MjU4YWFiMzQwZWEzYThhNGU4MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMDMsNiArMjAzLDExIEBACiAjaW5jbHVk
ZSAiV2ViRGV2aWNlUHJveGltaXR5Q2xpZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlNQ
RUNUT1JfU0VSVkVSKQorI2luY2x1ZGUgIldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JSZW1vdGVNYW5hZ2VyTWVzc2FnZXMuaCIKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiUERGUGx1Z2luLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKQEAgLTUzNSw2ICs1NDAsOSBAQCBXZWJQYWdlOjpX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKICNlbmRpZgogICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0
aGlzKTsKICAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOworI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwogI2Vu
ZGlmCkBAIC02MjgsNiArNjM2LDkgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQogI2VuZGlmCiAgICAg
d2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAgICAgd2ViUHJvY2Vzcy5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlEKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICB3ZWJQ
cm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUmVtb3Rl
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisjZW5kaWYKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZUlEKTsKICNlbmRpZgpAQCAtMTA0Myw2ICsxMDU0LDEyIEBAIHZvaWQgV2ViUGFnZTo6
Y2xvc2UoKQogICAgICAgICBtX2luc3BlY3Rvci0+ZGlzY29ubmVjdEZyb21QYWdlKCk7CiAgICAg
ICAgIG1faW5zcGVjdG9yID0gbnVsbHB0cjsKICAgICB9CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9T
RVJWRVIpCisgICAgaWYgKG1faW5zcGVjdG9yUmVtb3RlTWFuYWdlcikgeworICAgICAgICBtX2lu
c3BlY3RvclJlbW90ZU1hbmFnZXItPmRpc2Nvbm5lY3RGcm9tUGFnZSgpOworICAgICAgICBtX2lu
c3BlY3RvclJlbW90ZU1hbmFnZXIgPSBudWxscHRyOworICAgIH0KKyNlbmRpZgogCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBudWxscHRyOwpA
QCAtMzI3NSw2ICszMjkyLDE3IEBAIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIFdlYlBhZ2U6
OnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX1NFUlZFUikKK1dlYkluc3BlY3RvclJlbW90ZU1hbmFnZXIqIFdlYlBhZ2U6Omluc3BlY3Rv
clJlbW90ZU1hbmFnZXIoKQoreworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoIW1faW5zcGVjdG9yUmVtb3RlTWFuYWdlcikKKyAgICAgICAgbV9p
bnNwZWN0b3JSZW1vdGVNYW5hZ2VyID0gV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlcjo6Y3JlYXRl
KHRoaXMpOworICAgIHJldHVybiBtX2luc3BlY3RvclJlbW90ZU1hbmFnZXIuZ2V0KCk7Cit9Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKIHZvaWQgV2ViUGFnZTo6c2V0QWxsb3dzTWVkaWFE
b2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQogewpAQCAtMzg5NSw2ICszOTIzLDEz
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBpbnNwZWN0b3JSZW1vdGVNYW5hZ2VyKCktPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGZ1bGxTY3JlZW5NYW5hZ2VyKCktPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZGExNmQ3OGZjNDA2MWVmMDkxMzQ3MWU3
ODI4NGIxZjQwYTc2YmZhMC4uMzVlN2QzMWY2YWFiMGFmZDM2Yjg4ZGZjOWEwOGZmODNhNzllYjkx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
NzMsNiArMTczLDcgQEAgY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXI7CiBjbGFzcyBXZWJJbWFn
ZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKK2NsYXNz
IFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI7CiBjbGFzcyBXZWJJbnNwZWN0b3JVSTsKIGNsYXNz
IFdlYkdlc3R1cmVFdmVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CkBAIC0yNTEsNiArMjUy
LDkgQEAgcHVibGljOgogCiAgICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IoTGF6eUNyZWF0aW9u
UG9saWN5ID0gTGF6eUNyZWF0aW9uUG9saWN5OjpDcmVhdGVJZk5lZWRlZCk7CiAgICAgV2ViSW5z
cGVjdG9yVUkqIGluc3BlY3RvclVJKCk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisg
ICAgV2ViSW5zcGVjdG9yUmVtb3RlTWFuYWdlciogaW5zcGVjdG9yUmVtb3RlTWFuYWdlcigpOwor
I2VuZGlmCiAgICAgYm9vbCBpc0luc3BlY3RvclBhZ2UoKSB7IHJldHVybiAhIW1faW5zcGVjdG9y
VUk7IH0KIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKQEAgLTEzMjYsNiArMTMzMCw5IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+IG1fcGxheWJhY2tTZXNzaW9uTWFu
YWdlcjsKICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4gbV92aWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOwogI2VuZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAg
UmVmUHRyPFdlYkluc3BlY3RvclJlbW90ZU1hbmFnZXI+IG1faW5zcGVjdG9yUmVtb3RlTWFuYWdl
cjsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fYWxsb3dzTWVkaWFEb2N1
bWVudElubGluZVBsYXliYWNrIHsgZmFsc2UgfTsKICNlbmRpZgo=
</data>
<flag name="review"
          id="308678"
          type_id="1"
          status="-"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>