<?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>131758</bug_id>
          
          <creation_ts>2014-04-16 13:47:19 -0700</creation_ts>
          <short_desc>Session-aware plugin autostart data</short_desc>
          <delta_ts>2014-05-05 09:50:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Hock">mhock</reporter>
          <assigned_to name="Martin Hock">mhock</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jeffm</cc>
    
    <cc>jonlee</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1001312</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-16 13:47:19 -0700</bug_when>
    <thetext>Add WK2 API for plugin autostart data for sessions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001314</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-16 13:48:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/15906540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001325</commentid>
    <comment_count>2</comment_count>
      <attachid>229479</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-16 14:14:26 -0700</bug_when>
    <thetext>Created attachment 229479
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005099</commentid>
    <comment_count>3</comment_count>
      <attachid>230412</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-29 14:01:32 -0700</bug_when>
    <thetext>Created attachment 230412
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005107</commentid>
    <comment_count>4</comment_count>
      <attachid>230416</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-29 14:20:48 -0700</bug_when>
    <thetext>Created attachment 230416
copyright</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005180</commentid>
    <comment_count>5</comment_count>
      <attachid>230416</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-29 16:00:47 -0700</bug_when>
    <thetext>Comment on attachment 230416
copyright

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

&gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:2
&gt; + * Copyright (C) 2012 - 2014 Apple Inc. All rights reserved.

No spaces around the &quot;-&quot;.

&gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:56
&gt; +    if ((m_hashToOriginMap.contains(session) &amp;&amp; m_hashToOriginMap.find(session)-&gt;value.contains(plugInOriginHash)) || m_hashToOriginMap.find(SessionID::defaultSessionID())-&gt;value.contains(plugInOriginHash))

It’s not good to do the same hash table lookup multiple times here as we do with contains, find and then add below. The design of add is supposed to allow using it in a way that avoids the multiple hash table lookups.

Also, find(x)-&gt;value is the same thing as get(x), so we should probably use get.

It’s really worthwhile to structure the hash table accesses so we don’t hash the same value more than once.

&gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:73
&gt; +    if (!m_autoStartTable.contains(SessionID::defaultSessionID()))
&gt; +        return copyMap;

Same problem with multiple hash table lookups. The find call is designed so you can find and then find again.

&gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:77
&gt; +    AutoStartTable::const_iterator end = table.end();
&gt; +    for (AutoStartTable::const_iterator it = table.begin(); it != end; ++it) {

This is much better written as a C++ for loop:

    for (auto&amp; x : table)

Not sure what to name &quot;x&quot;.

&gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:89
&gt; +    if (!m_autoStartTable.contains(SessionID::defaultSessionID()))
&gt; +        return ImmutableDictionary::create(std::move(map));

And again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005579</commentid>
    <comment_count>6</comment_count>
      <attachid>230537</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-30 16:54:02 -0700</bug_when>
    <thetext>Created attachment 230537
address comments + fix bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005581</commentid>
    <comment_count>7</comment_count>
      <attachid>230538</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-30 16:55:22 -0700</bug_when>
    <thetext>Created attachment 230538
style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005587</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-30 17:07:39 -0700</bug_when>
    <thetext>(In reply to comment #5)

Thanks for your comments!

&gt; (From update of attachment 230416 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230416&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:2
&gt; &gt; + * Copyright (C) 2012 - 2014 Apple Inc. All rights reserved.
&gt; 
&gt; No spaces around the &quot;-&quot;.

Done.

&gt; &gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:56
&gt; &gt; +    if ((m_hashToOriginMap.contains(session) &amp;&amp; m_hashToOriginMap.find(session)-&gt;value.contains(plugInOriginHash)) || m_hashToOriginMap.find(SessionID::defaultSessionID())-&gt;value.contains(plugInOriginHash))
&gt; 
&gt; It’s not good to do the same hash table lookup multiple times here as we do with contains, find and then add below. The design of add is supposed to allow using it in a way that avoids the multiple hash table lookups.

I made some changes to not check for defaultSessionID because I make sure it&apos;s there. There is one place where I do have to check twice:

+void PlugInAutoStartProvider::addAutoStartOriginHash(const String&amp; pageOrigin, unsigned plugInOriginHash, SessionID sessionID)
 {
-    if (m_hashToOriginMap.contains(plugInOriginHash))
+    const auto&amp; sessionIterator = m_hashToOriginMap.find(sessionID);
+    if ((sessionIterator != m_hashToOriginMap.end() &amp;&amp; sessionIterator-&gt;value.contains(plugInOriginHash)) || m_hashToOriginMap.get(SessionID::defaultSessionID()).contains(plugInOriginHash))
         return;

The reason I have to check sessionIterator-&gt;value.contains(plugInOriginHash) here instead of doing an add is that we may also find the result in the other location (under defaultSessionID).

I considered the possibility of having a handle into a hash table that would make subsequent insertion faster, but after consulting with Anders, it seems like more trouble than it&apos;s worth. Hashing a sessionID should be fast because we just return the ID itself (some modulus must be going on too, though).

&gt; Also, find(x)-&gt;value is the same thing as get(x), so we should probably use get.

Thanks for pointing that out, I had the mistaken impression that it could expensively copy sometimes. Fixed.

&gt; It’s really worthwhile to structure the hash table accesses so we don’t hash the same value more than once.

Tried to fix this as best I could.

&gt; &gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:73
&gt; &gt; +    if (!m_autoStartTable.contains(SessionID::defaultSessionID()))
&gt; &gt; +        return copyMap;
&gt; 
&gt; Same problem with multiple hash table lookups. The find call is designed so you can find and then find again.

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:77
&gt; &gt; +    AutoStartTable::const_iterator end = table.end();
&gt; &gt; +    for (AutoStartTable::const_iterator it = table.begin(); it != end; ++it) {
&gt; 
&gt; This is much better written as a C++ for loop:
&gt; 
&gt;     for (auto&amp; x : table)
&gt; 
&gt; Not sure what to name &quot;x&quot;.

I tried to give a somewhat descriptive name modeled after the underlying key/value type. Another possibility would be to give the type name instead of auto and use a generic variable name.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:89
&gt; &gt; +    if (!m_autoStartTable.contains(SessionID::defaultSessionID()))
&gt; &gt; +        return ImmutableDictionary::create(std::move(map));
&gt; 
&gt; And again.

Done, thanks. I also made similar changes to WebProcess.

There is probably some common code that can be pulled out, though I&apos;m not sure where it should be put.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005596</commentid>
    <comment_count>9</comment_count>
      <attachid>230542</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-04-30 17:17:38 -0700</bug_when>
    <thetext>Created attachment 230542
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005761</commentid>
    <comment_count>10</comment_count>
      <attachid>230542</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-05-01 10:13:04 -0700</bug_when>
    <thetext>Comment on attachment 230542
rebase

I thought there was something wrong with this patch on mac, but I am pretty sure it was fixed by http://trac.webkit.org/changeset/168093.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005762</commentid>
    <comment_count>11</comment_count>
      <attachid>230587</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-05-01 10:16:38 -0700</bug_when>
    <thetext>Created attachment 230587
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005795</commentid>
    <comment_count>12</comment_count>
      <attachid>230542</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-01 11:46:57 -0700</bug_when>
    <thetext>Comment on attachment 230542
rebase

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

Looks good to me overall, with some comments to address.

&gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:76
&gt; +    for (const auto&amp; keyOriginHash : m_autoStartTable.get(SessionID::defaultSessionID())) {
&gt; +        for (const auto&amp; originHash : keyOriginHash.value)
&gt; +            copyMap.set(originHash.key, originHash.value);

This function produces a map that&apos;s sent to newly created WebProcesses, and it only goes over defaultSessionID.

This patch adds code to propagate changes for all sessions to all processes live, but not when a new process is created.

&gt; Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:179
&gt;      m_context-&gt;client().plugInAutoStartOriginHashesChanged(m_context);

Client doesn&apos;t know about non-default sessions (there is simply no way to express those in current API), so there is no way to notify it unless it&apos;s the default session that changes.

Longer term, we should extend the API to support sessions.

&gt; Source/WebKit2/WebProcess/WebProcess.h:288
&gt; +    HashMap&lt;WebCore::SessionID, HashMap&lt;unsigned, double&gt;&gt; m_plugInAutoStartOriginHashes;

This is a pre-existing issue, but calling maps &quot;hashes&quot; is so misleading that maybe you can fix it now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005932</commentid>
    <comment_count>13</comment_count>
      <attachid>230637</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-05-01 18:10:46 -0700</bug_when>
    <thetext>Created attachment 230637
address comments + fix bug

I noticed a bug in my last patch which Alexey helped me find the root cause of - thanks! The bug was in the implementation of PlugInAutoStartProvider::addAutoStartOriginHash. I&apos;m not convinced that the new implementation is the nicest way to write it, but it does seem to work, at least. I repeat myself in two different branches in order to avoid doing redundant hash lookups. I&apos;d appreciate any opinions on my hash travails!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005934</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-01 18:11:58 -0700</bug_when>
    <thetext>Attachment 230637 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp:82:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005937</commentid>
    <comment_count>15</comment_count>
      <attachid>230637</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-01 18:18:15 -0700</bug_when>
    <thetext>Comment on attachment 230637
address comments + fix bug

I agree with the bot, please add the braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005953</commentid>
    <comment_count>16</comment_count>
      <attachid>230643</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-05-01 19:20:35 -0700</bug_when>
    <thetext>Created attachment 230643
fix braces

I actually fixed the braces but forgot to git add the file :( oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006180</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-02 15:19:21 -0700</bug_when>
    <thetext>Can this patch be landed now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006654</commentid>
    <comment_count>18</comment_count>
      <attachid>230643</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-05-05 09:49:58 -0700</bug_when>
    <thetext>Comment on attachment 230643
fix braces

Clearing flags on attachment: 230643

Committed r168290: &lt;http://trac.webkit.org/changeset/168290&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1006655</commentid>
    <comment_count>19</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-05-05 09:50:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229479</attachid>
            <date>2014-04-16 14:14:26 -0700</date>
            <delta_ts>2014-04-29 14:01:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pluginsession.01.diff</filename>
            <type>text/plain</type>
            <size>11448</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5MTYyNmVkLi45OGM2ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTQtMDQtMTYgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBXSzIgQVBJIGZvciBwbHVnaW4gYXV0b3N0YXJ0IGRhdGEgZm9yIHNlc3Npb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNzU4CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTkwNjU0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0Q29weVBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0ZvclNlc3Np
b24pOgorICAgICAgICAoV0tDb250ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzRm9y
U2Vzc2lvbik6CisgICAgICAgIChXS0NvbnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmls
dGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lRm9yU2Vzc2lvbik6CisgICAgICAgIChXS0Nv
bnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRm9yU2Vzc2lvbik6CisgICAgICAgIChXS0Nv
bnRleHRSZW1vdmVQbHVnSW5BdXRvU3RhcnREYXRhRm9yU2Vzc2lvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0ZvclNlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0OjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRm9yU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0
ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWVGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6cmVtb3ZlUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJGb3JTZXNzaW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorCiAyMDE0LTA0LTE2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0aW5nIHRlc3RzIGFm
dGVyIGJ1ZyAxMzE3MjEsIFtHVEtdIEZpeCB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmdzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCA3YWNkNzZl
Li5jMTRmMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
IC0gMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1OSw2ICs1NTksMTEgQEAgV0tEaWN0aW9uYXJ5UmVm
IFdLQ29udGV4dENvcHlQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5wbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoKS5sZWFrUmVmKCkpOwogfQogCitXS0RpY3Rpb25hcnlSZWYgV0tD
b250ZXh0Q29weVBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0ZvclNlc3Npb24oV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLU2Vzc2lvblJlZiBzZXNzaW9uUmVmKQoreworICAgIHJldHVybiB0
b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0ZvclNl
c3Npb24odG9JbXBsKHNlc3Npb25SZWYpKS5sZWFrUmVmKCkpOworfQorCiB2b2lkIFdLQ29udGV4
dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwg
V0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYpCiB7CiAgICAgaWYgKCFkaWN0aW9uYXJ5UmVm
KQpAQCAtNTY2LDYgKzU3MSwxMyBAQCB2b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2hlcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tEaWN0aW9uYQogICAgIHRvSW1w
bChjb250ZXh0UmVmKS0+c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKCp0b0ltcGwoZGlj
dGlvbmFyeVJlZikpOwogfQogCit2b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlc0ZvclNlc3Npb24oV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRGljdGlvbmFyeVJl
ZiBkaWN0aW9uYXJ5UmVmLCBXS1Nlc3Npb25SZWYgc2Vzc2lvblJlZikKK3sKKyAgICBpZiAoIWRp
Y3Rpb25hcnlSZWYpCisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNl
dFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0ZvclNlc3Npb24oKnRvSW1wbChkaWN0aW9uYXJ5
UmVmKSwgdG9JbXBsKHNlc3Npb25SZWYpKTsKK30KKwogdm9pZCBXS0NvbnRleHRTZXRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZiwgZG91YmxlIHRp
bWUpCiB7CiAgICAgaWYgKCFkaWN0aW9uYXJ5UmVmKQpAQCAtNTczLDYgKzU4NSwxMyBAQCB2b2lk
IFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRk
ZWRBZnRlclRpbWUoV0tDb250ZQogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UGx1Z0luQXV0
b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZSgqdG9JbXBsKGRp
Y3Rpb25hcnlSZWYpLCB0aW1lKTsKIH0KIAordm9pZCBXS0NvbnRleHRTZXRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lRm9yU2Vzc2lvbihXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYsIGRvdWJs
ZSB0aW1lLCBXS1Nlc3Npb25SZWYgc2Vzc2lvblJlZikKK3sKKyAgICBpZiAoIWRpY3Rpb25hcnlS
ZWYpCisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFBsdWdJbkF1
dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWVGb3JTZXNzaW9u
KCp0b0ltcGwoZGljdGlvbmFyeVJlZiksIHRpbWUsIHRvSW1wbChzZXNzaW9uUmVmKSk7Cit9CisK
IHZvaWQgV0tDb250ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyhXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgV0tBcnJheVJlZiBhcnJheVJlZikKIHsKICAgICBpZiAoIWFycmF5UmVmKQpAQCAt
NTgwLDYgKzU5OSwxOCBAQCB2b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQXJyYXlSZWYgYXJyYQogICAgIHRvSW1wbChjb250
ZXh0UmVmKS0+c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lucygqdG9JbXBsKGFycmF5UmVmKSk7CiB9
CiAKK3ZvaWQgV0tDb250ZXh0U2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZvclNlc3Npb24oV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQXJyYXlSZWYgYXJyYXlSZWYsIFdLU2Vzc2lvblJlZiBz
ZXNzaW9uUmVmKQoreworICAgIGlmICghYXJyYXlSZWYpCisgICAgICAgIHJldHVybjsKKyAgICB0
b0ltcGwoY29udGV4dFJlZiktPnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGb3JTZXNzaW9uKCp0
b0ltcGwoYXJyYXlSZWYpLCB0b0ltcGwoc2Vzc2lvblJlZikpOworfQorCit2b2lkIFdLQ29udGV4
dFJlbW92ZVBsdWdJbkF1dG9TdGFydERhdGFGb3JTZXNzaW9uKFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1Nlc3Npb25SZWYgc2Vzc2lvblJlZikKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZikt
PnJlbW92ZVBsdWdJbkF1dG9TdGFydFByb3ZpZGVyRm9yU2Vzc2lvbih0b0ltcGwoc2Vzc2lvblJl
ZikpOworfQorCiB2b2lkIFdLQ29udGV4dFNldEludmFsaWRNZXNzYWdlRnVuY3Rpb24oV0tDb250
ZXh0SW52YWxpZE1lc3NhZ2VGdW5jdGlvbiBpbnZhbGlkTWVzc2FnZUZ1bmN0aW9uKQogewogICAg
IFdlYkNvbnRleHQ6OnNldEludmFsaWRNZXNzYWdlQ2FsbGJhY2soaW52YWxpZE1lc3NhZ2VGdW5j
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKaW5kZXgg
M2FlNWM5YS4uZDcxNDUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaApAQCAtMTUwLDkgKzE1MCwxNCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHYXJi
YWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dFNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFi
bGVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29sIGVuYWJsZSk7CiAKIFdLX0VYUE9SVCBXS0Rp
Y3Rpb25hcnlSZWYgV0tDb250ZXh0Q29weVBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhXS0Nv
bnRleHRSZWYgY29udGV4dCk7CitXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENv
cHlQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNGb3JTZXNzaW9uKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS1Nlc3Npb25SZWYgc2Vzc2lvbik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGljdGlv
bmFyeVJlZiBkaWN0aW9uYXJ5KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlc0ZvclNlc3Npb24oV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRGlj
dGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCBXS1Nlc3Npb25SZWYgc2Vzc2lvbik7CiBXS19FWFBPUlQg
dm9pZCBXS0NvbnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS0FycmF5UmVmIGFycmF5UmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNl
dFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGb3JTZXNzaW9uKFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBXS0FycmF5UmVmIGFycmF5UmVmLCBXS1Nlc3Npb25SZWYgc2Vzc2lvbik7CiBXS19FWFBPUlQg
dm9pZCBXS0NvbnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50cmll
c0FkZGVkQWZ0ZXJUaW1lKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0RpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeVJlZiwgZG91YmxlIHRpbWUpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZUZv
clNlc3Npb24oV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRGljdGlvbmFyeVJlZiBkaWN0aW9u
YXJ5UmVmLCBkb3VibGUgdGltZSwgV0tTZXNzaW9uUmVmIHNlc3Npb24pOworV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0UmVtb3ZlUGx1Z0luQXV0b1N0YXJ0RGF0YUZvclNlc3Npb24oV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLU2Vzc2lvblJlZiBzZXNzaW9uKTsKIAogI2lmZGVmIF9fY3BsdXNw
bHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggYzdjNTFl
My4uYmY5MWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIC0g
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEzMTAsMjYgKzEzMTAsNjIgQEAgdm9pZCBXZWJDb250ZXh0OjpwbHVn
SW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpCiAg
ICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5kaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBs
dWdJbk9yaWdpbkhhc2gpOwogfQogCitQbHVnSW5BdXRvU3RhcnRQcm92aWRlciYgV2ViQ29udGV4
dDo6cGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJGb3JTZXNzaW9uKEFQSTo6U2Vzc2lvbiogc2Vzc2lv
bikKK3sKKyAgICBBU1NFUlQoc2Vzc2lvbiAmJiBzZXNzaW9uLT5nZXRJRCgpLmlzVmFsaWQoKSk7
CisKKyAgICBpZiAoc2Vzc2lvbi0+Z2V0SUQoKSA9PSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI7CisKKyAgICBy
ZXR1cm4gKm1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJGb3JTZXNzaW9uLmFkZChzZXNzaW9uLT5n
ZXRJRCgpLCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI+KG5ldyBQbHVn
SW5BdXRvU3RhcnRQcm92aWRlcih0aGlzKSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKK30KKwog
UGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJDb250ZXh0OjpwbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyLmF1dG9TdGFydE9yaWdpbnNUYWJsZUNvcHkoKTsKIH0KIAorUGFzc1JlZlB0cjxJbW11
dGFibGVEaWN0aW9uYXJ5PiBXZWJDb250ZXh0OjpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNG
b3JTZXNzaW9uKEFQSTo6U2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICByZXR1cm4gcGx1Z0luQXV0
b1N0YXJ0UHJvdmlkZXJGb3JTZXNzaW9uKHNlc3Npb24pLmF1dG9TdGFydE9yaWdpbnNUYWJsZUNv
cHkoKTsKK30KKwogdm9pZCBXZWJDb250ZXh0OjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
ZXMoSW1tdXRhYmxlRGljdGlvbmFyeSYgZGljdGlvbmFyeSkKIHsKICAgICBtX3BsdWdJbkF1dG9T
dGFydFByb3ZpZGVyLnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZShkaWN0aW9uYXJ5KTsKIH0KIAor
dm9pZCBXZWJDb250ZXh0OjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNGb3JTZXNzaW9u
KEltbXV0YWJsZURpY3Rpb25hcnkmIGRpY3Rpb25hcnksIEFQSTo6U2Vzc2lvbiogc2Vzc2lvbikK
K3sKKyAgICBwbHVnSW5BdXRvU3RhcnRQcm92aWRlckZvclNlc3Npb24oc2Vzc2lvbikuc2V0QXV0
b1N0YXJ0T3JpZ2luc1RhYmxlKGRpY3Rpb25hcnkpOworfQorCiB2b2lkIFdlYkNvbnRleHQ6OnNl
dFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoQVBJOjpBcnJheSYgYXJyYXkpCiB7CiAgICAgbV9wbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5zZXRBdXRvU3RhcnRPcmlnaW5zQXJyYXkoYXJyYXkpOwogfQog
Cit2b2lkIFdlYkNvbnRleHQ6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNGb3JTZXNzaW9uKEFQ
STo6QXJyYXkmIGFycmF5LCBBUEk6OlNlc3Npb24qIHNlc3Npb24pCit7CisgICAgcGx1Z0luQXV0
b1N0YXJ0UHJvdmlkZXJGb3JTZXNzaW9uKHNlc3Npb24pLnNldEF1dG9TdGFydE9yaWdpbnNBcnJh
eShhcnJheSk7Cit9CisKIHZvaWQgV2ViQ29udGV4dDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
c0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZShJbW11dGFibGVEaWN0aW9uYXJ5JiBk
aWN0aW9uYXJ5LCBkb3VibGUgdGltZSkKIHsKICAgICBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVy
LnNldEF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWUoZGlj
dGlvbmFyeSwgdGltZSk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dDo6c2V0UGx1Z0luQXV0b1N0YXJ0
T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZUZvclNlc3Npb24oSW1tdXRh
YmxlRGljdGlvbmFyeSYgZGljdGlvbmFyeSwgZG91YmxlIHRpbWUsIEFQSTo6U2Vzc2lvbiogc2Vz
c2lvbikKK3sKKyAgICBwbHVnSW5BdXRvU3RhcnRQcm92aWRlckZvclNlc3Npb24oc2Vzc2lvbiku
c2V0QXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZShkaWN0
aW9uYXJ5LCB0aW1lKTsKK30KKwordm9pZCBXZWJDb250ZXh0OjpyZW1vdmVQbHVnSW5BdXRvU3Rh
cnRQcm92aWRlckZvclNlc3Npb24oQVBJOjpTZXNzaW9uKiBzZXNzaW9uKQoreworICAgIEFTU0VS
VChzZXNzaW9uICYmIHNlc3Npb24tPmdldElEKCkuaXNWYWxpZCgpICYmIHNlc3Npb24tPmdldElE
KCkgIT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIG1fcGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXJGb3JTZXNzaW9uLnJlbW92ZShzZXNzaW9uLT5nZXRJRCgpKTsKK30KKwogI2lm
IEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogdm9pZCBXZWJDb250ZXh0OjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggYjJlMjMyNi4uZDEzNDFhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiV2Vi
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2Vz
c2lvbklELmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSURIYXNoLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CkBAIC0yNzUsOSArMjc1LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleHRDaGVj
a2VyU3RhdGVDaGFuZ2VkKCk7CiAKICAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+
IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1t
dXRhYmxlRGljdGlvbmFyeT4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzRm9yU2Vzc2lvbihB
UEk6OlNlc3Npb24qKTsKICAgICB2b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhJ
bW11dGFibGVEaWN0aW9uYXJ5Jik7CisgICAgdm9pZCBzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXNGb3JTZXNzaW9uKEltbXV0YWJsZURpY3Rpb25hcnkmLCBBUEk6OlNlc3Npb24qKTsKICAg
ICB2b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoQVBJOjpBcnJheSYpOworICAgIHZvaWQg
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZvclNlc3Npb24oQVBJOjpBcnJheSYsIEFQSTo6U2Vz
c2lvbiopOwogICAgIHZvaWQgc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVu
dHJpZXNBZGRlZEFmdGVyVGltZShJbW11dGFibGVEaWN0aW9uYXJ5JiwgZG91YmxlIHRpbWUpOwor
ICAgIHZvaWQgc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRl
ZEFmdGVyVGltZUZvclNlc3Npb24oSW1tdXRhYmxlRGljdGlvbmFyeSYsIGRvdWJsZSB0aW1lLCBB
UEk6OlNlc3Npb24qKTsKKyAgICB2b2lkIHJlbW92ZVBsdWdJbkF1dG9TdGFydFByb3ZpZGVyRm9y
U2Vzc2lvbihBUEk6OlNlc3Npb24qKTsKIAogICAgIC8vIE5ldHdvcmsgUHJvY2VzcyBNYW5hZ2Vt
ZW50CiAKQEAgLTQyMiw2ICs0MjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJ
bk9yaWdpbkhhc2gpOwogICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1
bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKIAorICAgIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
JiBwbHVnSW5BdXRvU3RhcnRQcm92aWRlckZvclNlc3Npb24oQVBJOjpTZXNzaW9uKik7CisKICAg
ICB2b2lkIHNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9v
bCk7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTQ1Nyw2ICs0NjQsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQ7CiAKICAgICBQbHVn
SW5BdXRvU3RhcnRQcm92aWRlciBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXI+PiBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyRm9yU2Vzc2lvbjsKICAgICAgICAgCiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5RG9jdW1lbnQ7CiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc1NlY3VyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230412</attachid>
            <date>2014-04-29 14:01:32 -0700</date>
            <delta_ts>2014-04-29 14:20:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pluginsession.03.diff</filename>
            <type>text/plain</type>
            <size>29226</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNGQ4YmYzLi4xMjcwYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDQtMjkgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KToKKyAgICAg
ICAgKiBwYWdlL1BsdWdJbkNsaWVudC5oOgorCiAyMDE0LTA0LTI5ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSB3b3JrYXJvdW5kIGZvciA8
cmRhcjovL3Byb2JsZW0vMTY1Nzg3Mjc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYjgxNjI0My4uZDY0NjAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC01MTEsNyArNTEx
LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdChQ
YXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGV2ZW50LAogCiAgICAgU3RyaW5nIHBsdWdJbk9yaWdpbiA9
IG1fbG9hZGVkVXJsLmhvc3QoKTsKICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgIVNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5wYWdlKCkt
Pm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpKSAmJiBkb2N1bWVu
dCgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkKCkpCi0gICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+ZGlk
U3RhcnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
LT5iYXNlVVJMKCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCkpOworICAg
ICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPmRpZFN0YXJ0RnJvbU9yaWdp
bihkb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhv
c3QoKSwgcGx1Z0luT3JpZ2luLCBsb2FkZWRNaW1lVHlwZSgpLCBkb2N1bWVudCgpLnBhZ2UoKS0+
c2Vzc2lvbklEKCkpOwogCiAgICAgTE9HKFBsdWdpbnMsICIlcCBVc2VyIGNsaWNrZWQgb24gc25h
cHNob3R0ZWQgcGx1Zy1pbi4gUmVzdGFydC4iLCB0aGlzKTsKICAgICByZXN0YXJ0U25hcHNob3R0
ZWRQbHVnSW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCmluZGV4IDY1ODJjNGUuLjky
OGI5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnSW5DbGllbnQuaApAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBQbHVnSW5DbGllbnRfaAogI2RlZmluZSBQbHVnSW5DbGllbnRfaAogCisjaW5jbHVk
ZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzQsNyArMzUsNyBAQCBjbGFzcyBQbHVnSW5DbGllbnQgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFNlc3Npb25JRCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGx1Z0luQ2xpZW50
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzI3ZGUwMS4uODVjYTBiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDE0LTA0LTI5ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTZXNzaW9uLWF3YXJlIHBsdWdpbiBhdXRvc3RhcnQgZGF0YQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNzU4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xNTkwNjU0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OlBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXI6OmFkZEF1dG9TdGFydE9yaWdpbkhhc2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5BdXRv
U3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9y
aWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXI6OmRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojph
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFydEZyb21PcmlnaW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmlzUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNo
b3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTQtMDQtMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuY3BwCmluZGV4IGU1NzI0MDMuLjE1MTUxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Miw2ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXI6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKFdlYkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKIHsKKyAgICBtX2hhc2hUb09yaWdpbk1hcC5hZGQoU2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4oKSk7
CisgICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IEF1dG9TdGFydFRhYmxlKCkpOwogfQogCiBzdGF0aWMgZG91YmxlIGV4cGlyYXRpb25UaW1lRnJv
bU5vdygpCkBAIC00OSwyOCArNTEsMzAgQEAgc3RhdGljIGRvdWJsZSBleHBpcmF0aW9uVGltZUZy
b21Ob3coKQogICAgIHJldHVybiBjdXJyZW50VGltZSgpICsgcGx1Z0luQXV0b1N0YXJ0RXhwaXJh
dGlvblRpbWVUaHJlc2hvbGQ7CiB9CiAKLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmFk
ZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoKQordm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0
YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9y
aWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9uKQogewotICAgIGlmIChtX2hhc2hUb09yaWdpbk1h
cC5jb250YWlucyhwbHVnSW5PcmlnaW5IYXNoKSkKKyAgICBpZiAoKG1faGFzaFRvT3JpZ2luTWFw
LmNvbnRhaW5zKHNlc3Npb24pICYmIG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbiktPnZh
bHVlLmNvbnRhaW5zKHBsdWdJbk9yaWdpbkhhc2gpKSB8fCBtX2hhc2hUb09yaWdpbk1hcC5maW5k
KFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKS0+dmFsdWUuY29udGFpbnMocGx1Z0luT3Jp
Z2luSGFzaCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF1dG9TdGFydFRhYmxlOjppdGVyYXRv
ciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuZmluZChwYWdlT3JpZ2luKTsKLSAgICBpZiAoaXQgPT0g
bV9hdXRvU3RhcnRUYWJsZS5lbmQoKSkKLSAgICAgICAgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmFk
ZChwYWdlT3JpZ2luLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKCkpLml0ZXJhdG9yOworICAg
IEF1dG9TdGFydFRhYmxlOjppdGVyYXRvciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuYWRkKHNlc3Np
b24sIEF1dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZU9yaWdpbiwgUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCgpKS5pdGVyYXRvcjsKIAogICAgIGRvdWJsZSBleHBpcmF0
aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJvbU5vdygpOwogICAgIGl0LT52YWx1ZS5zZXQocGx1
Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUpOwotICAgIG1faGFzaFRvT3JpZ2luTWFwLnNl
dChwbHVnSW5PcmlnaW5IYXNoLCBwYWdlT3JpZ2luKTsKKyAgICBtX2hhc2hUb09yaWdpbk1hcC5m
aW5kKHNlc3Npb24pLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgcGFnZU9yaWdpbik7CiAK
LSAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0
aW9uVGltZSkpOworICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhh
c2gsIGV4cGlyYXRpb25UaW1lLCBzZXNzaW9uKSk7CiAgICAgbV9jb250ZXh0LT5jbGllbnQoKS5w
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNDaGFuZ2VkKG1fY29udGV4dCk7CiB9CiAKIFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2ggUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9TdGFydE9y
aWdpbkhhc2hlc0NvcHkoKSBjb25zdAogewogICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gg
Y29weU1hcDsKLSAgICBBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9hdXRv
U3RhcnRUYWJsZS5lbmQoKTsKLSAgICBmb3IgKEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
aWYgKCFtX2F1dG9TdGFydFRhYmxlLmNvbnRhaW5zKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpKSkKKyAgICAgICAgcmV0dXJuIGNvcHlNYXA7CisKKyAgICBjb25zdCBBdXRvU3RhcnRUYWJs
ZSYgdGFibGUgPSBtX2F1dG9TdGFydFRhYmxlLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpLT52YWx1ZTsKKyAgICBBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
dGFibGUuZW5kKCk7CisgICAgZm9yIChBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB0YWJsZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRlcmF0b3IgbWFwRW5kID0gaXQtPnZhbHVlLmVuZCgpOwog
ICAgICAgICBmb3IgKFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0ZXJhdG9yIG1h
cEl0ID0gaXQtPnZhbHVlLmJlZ2luKCk7IG1hcEl0ICE9IG1hcEVuZDsgKyttYXBJdCkKICAgICAg
ICAgICAgIGNvcHlNYXAuc2V0KG1hcEl0LT5rZXksIG1hcEl0LT52YWx1ZSk7CkBAIC04MSw5ICs4
NSwxMyBAQCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
OjphdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCkgYwogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0
aW9uYXJ5PiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luc1RhYmxlQ29w
eSgpIGNvbnN0CiB7CiAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7Ci0gICAg
QXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fYXV0b1N0YXJ0VGFibGUuZW5k
KCk7CisgICAgaWYgKCFtX2F1dG9TdGFydFRhYmxlLmNvbnRhaW5zKFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKSkKKyAgICAgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0
ZShzdGQ6Om1vdmUobWFwKSk7CisKKyAgICBjb25zdCBBdXRvU3RhcnRUYWJsZSYgdGFibGUgPSBt
X2F1dG9TdGFydFRhYmxlLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpLT52YWx1
ZTsKKyAgICBBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdGFibGUuZW5kKCk7
CiAgICAgZG91YmxlIG5vdyA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgZm9yIChBdXRvU3RhcnRUYWJs
ZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgIGZvciAoQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
dGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEltbXV0YWJsZURpY3Rp
b25hcnk6Ok1hcFR5cGUgaGFzaE1hcDsKICAgICAgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aDo6Y29uc3RfaXRlcmF0b3IgdmFsdWVFbmQgPSBpdC0+dmFsdWUuZW5kKCk7CiAgICAgICAgIGZv
ciAoUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRlcmF0b3IgdmFsdWVJdCA9IGl0
LT52YWx1ZS5iZWdpbigpOyB2YWx1ZUl0ICE9IHZhbHVlRW5kOyArK3ZhbHVlSXQpIHsKQEAgLTEy
MSw2ICsxMjksOCBAQCB2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRP
cmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dAogICAgIG1faGFzaFRvT3JpZ2lu
TWFwLmNsZWFyKCk7CiAgICAgbV9hdXRvU3RhcnRUYWJsZS5jbGVhcigpOwogICAgIEhhc2hNYXA8
dW5zaWduZWQsIGRvdWJsZT4gaGFzaE1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+
JiBoYXNoVG9PcmlnaW5NYXAgPSBtX2hhc2hUb09yaWdpbk1hcC5hZGQoU2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4oKSkuaXRlcmF0b3ItPnZh
bHVlOworICAgIEF1dG9TdGFydFRhYmxlJiBhc3QgPSBtX2F1dG9TdGFydFRhYmxlLmFkZChTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgQXV0b1N0YXJ0VGFibGUoKSkuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gdGFibGUubWFwKCkuZW5kKCk7CiAgICAgZm9yIChJbW11dGFibGVEaWN0aW9uYXJ5OjpN
YXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IHRhYmxlLm1hcCgpLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewpAQCAtMTQyLDExICsxNTIsMTEgQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92
aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3QoSW1tdXQK
IAogICAgICAgICAgICAgaGFzaGVzLnNldChoYXNoLCBleHBpcmF0aW9uVGltZSk7CiAgICAgICAg
ICAgICBoYXNoTWFwLnNldChoYXNoLCBleHBpcmF0aW9uVGltZSk7Ci0gICAgICAgICAgICBtX2hh
c2hUb09yaWdpbk1hcC5zZXQoaGFzaCwgaXQtPmtleSk7CisgICAgICAgICAgICBoYXNoVG9Pcmln
aW5NYXAuc2V0KGhhc2gsIGl0LT5rZXkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFoYXNo
ZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9hdXRvU3RhcnRUYWJsZS5zZXQoaXQtPmtleSwg
aGFzaGVzKTsKKyAgICAgICAgICAgIGFzdC5zZXQoaXQtPmtleSwgaGFzaGVzKTsKICAgICB9CiAK
ICAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
UmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoaGFzaE1hcCkpOwpAQCAtMTYyLDE3ICsx
NzIsMjggQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2lu
c0FycmF5KEFQSTo6QXJyYXkmIG9yaWdpbkxpc3QpCiAgICAgfQogfQogCi12b2lkIFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJ
bk9yaWdpbkhhc2gpCit2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNl
ckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9u
KQogewotICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9oYXNoVG9PcmlnaW5NYXAuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICBpZiAoaXQgPT0g
bV9oYXNoVG9PcmlnaW5NYXAuZW5kKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+KiBtYXA7Cisg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQ7CisgICAgYm9v
bCBjb250YWlucyA9IGZhbHNlOworICAgIGlmIChtX2hhc2hUb09yaWdpbk1hcC5jb250YWlucyhz
ZXNzaW9uKSkgeworICAgICAgICBtYXAgPSAmKG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lv
biktPnZhbHVlKTsKKyAgICAgICAgaXQgPSBtYXAtPmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Cisg
ICAgICAgIGNvbnRhaW5zID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFjb250YWlucyB8fCBpdCA9
PSBtYXAtPmVuZCgpKSB7CisgICAgICAgIG1hcCA9ICYobV9oYXNoVG9PcmlnaW5NYXAuZmluZChT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSktPnZhbHVlKTsKKyAgICAgICAgaXQgPSBtYXAt
PmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7CisgICAgICAgIGlmIChpdCA9PSBtYXAtPmVuZCgpKSB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGRvdWJsZSBuZXdFeHBpcmF0aW9uVGltZSA9IGV4cGly
YXRpb25UaW1lRnJvbU5vdygpOwotICAgIG1fYXV0b1N0YXJ0VGFibGUuZmluZChpdC0+dmFsdWUp
LT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUpOwotICAgIG1f
Y29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEaWRBZGRQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gsIG5ld0V4cGlyYXRpb25U
aW1lKSk7CisgICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoc2Vzc2lvbiwgQXV0b1N0YXJ0VGFibGUo
KSkuaXRlcmF0b3ItPnZhbHVlLmFkZChpdC0+dmFsdWUsIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2goKSkuaXRlcmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9u
VGltZSk7CisgICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwg
bmV3RXhwaXJhdGlvblRpbWUsIHNlc3Npb24pKTsKICAgICBtX2NvbnRleHQtPmNsaWVudCgpLnBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0NoYW5nZWQobV9jb250ZXh0KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyLmgKaW5kZXggYzNiMzkwMi4uNTQyZDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyX2gKICNk
ZWZpbmUgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNz
aW9uSURIYXNoLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00NCw2ICs0NSw3IEBAIGNsYXNzIElt
bXV0YWJsZURpY3Rpb25hcnk7CiBjbGFzcyBXZWJDb250ZXh0OwogCiB0eXBlZGVmIEhhc2hNYXA8
dW5zaWduZWQsIGRvdWJsZT4gUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDsKK3R5cGVkZWYgSGFz
aE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g+IFNlc3Np
b25QbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoOwogdHlwZWRlZiBWZWN0b3I8U3RyaW5nPiBQbHVn
SW5BdXRvU3RhcnRPcmlnaW5zOwogCiBjbGFzcyBQbHVnSW5BdXRvU3RhcnRQcm92aWRlciB7CkBA
IC01MSw4ICs1Myw4IEBAIGNsYXNzIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcihXZWJDb250ZXh0Kik7CiAKLSAg
ICB2b2lkIGFkZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1
bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgdm9pZCBhZGRBdXRvU3RhcnRP
cmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2lu
SGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAog
ICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gYXV0b1N0YXJ0T3JpZ2luc1RhYmxl
Q29weSgpIGNvbnN0OwogICAgIHZvaWQgc2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlKEltbXV0YWJs
ZURpY3Rpb25hcnkmKTsKQEAgLTY4LDkgKzcwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRB
dXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dGFibGVEaWN0aW9u
YXJ5Jiwgc3RkOjpmdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0aW9uVGltZXN0YW1wKT4pOwog
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCwg
Q2FzZUZvbGRpbmdIYXNoPiBBdXRvU3RhcnRUYWJsZTsKLSAgICBBdXRvU3RhcnRUYWJsZSBtX2F1
dG9TdGFydFRhYmxlOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEF1
dG9TdGFydFRhYmxlPiBTZXNzaW9uQXV0b1N0YXJ0VGFibGU7CisgICAgU2Vzc2lvbkF1dG9TdGFy
dFRhYmxlIG1fYXV0b1N0YXJ0VGFibGU7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+
IG1faGFzaFRvT3JpZ2luTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNo
TWFwPHVuc2lnbmVkLCBTdHJpbmc+PiBtX2hhc2hUb09yaWdpbk1hcDsKIAogICAgIFBsdWdJbkF1
dG9TdGFydE9yaWdpbnMgbV9hdXRvU3RhcnRPcmlnaW5zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCAyOGE4NDg0Li4zMzU3OTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0xMjk0LDE0ICsxMjk0LDE0IEBAIHZvaWQg
V2ViQ29udGV4dDo6c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9v
bCBmbGFnKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0
SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoZmxhZykpOwogfQogCi12b2lk
IFdlYkNvbnRleHQ6OmFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQordm9pZCBXZWJDb250ZXh0Ojph
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5z
aWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Npb24pCiB7Ci0gICAgbV9wbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5hZGRBdXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VPcmlnaW4sIHBs
dWdJbk9yaWdpbkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYWRkQXV0b1N0
YXJ0T3JpZ2luSGFzaChwYWdlT3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uKTsKIH0K
IAotdm9pZCBXZWJDb250ZXh0OjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2ln
bmVkIHBsdWdJbk9yaWdpbkhhc2gpCit2b2lkIFdlYkNvbnRleHQ6OnBsdWdJbkRpZFJlY2VpdmVV
c2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Np
b24pCiB7Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5kaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIu
ZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uKTsKIH0K
IAogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJDb250ZXh0OjpwbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmgKaW5kZXggNTJiMjU3NS4uMGU1YTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oCkBAIC00MTYsOCArNDE2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJO
b3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0lu
T3JpZ2luSGFzaCk7Ci0gICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVu
c2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOworICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhh
c2gsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlcklu
dGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCk7
CiAKICAgICB2b2lkIHNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVz
c2FnZXMuaW4KaW5kZXggMWMzYzM1MC4uMDcyZDY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTU5LDYgKzU5LDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViQ29udGV4dCBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgICMgUGx1Zy1p
biBtZXNzYWdlcy4KLSAgICB2b2lkIEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goU3RyaW5n
IHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhhc2gpCi0gICAgdm9pZCBQbHVnSW5EaWRSZWNlaXZlVXNl
ckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gpCisgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbikKKyAgICB2b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24o
dWludDMyX3QgaGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb24pCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNzNmZWJj
Mi4uYWI4OTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtMTczNiw3ICsxNzM2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVn
aW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCkKICAgICBTdHJpbmcgcGx1Z2luT3JpZ2luID0g
cGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKS5ob3N0KCk7CiAgICAgU3RyaW5nIG1pbWVU
eXBlID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRNaW1lVHlwZSgpOwogCi0gICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwYWdlT3JpZ2lu
LCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wbHVn
SW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWlt
ZVR5cGUsIHBsdWdJbkltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnNlc3Npb25JRCgp
KTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpzaG91bGRDcmVhdGVUcmFuc2llbnRQYWludGluZ1Nu
YXBzaG90KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcAppbmRleCA4NTRkNzczLi5lMzU1
OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdJbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCkBAIC01Miw5ICs1Miw5IEBAIGJvb2wgV2Vi
UGx1Z0luQ2xpZW50OjpzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFn
ZU9yaWdpbiwgY29uc3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkuc2hvdWxkUGx1
Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihtX3BhZ2UsIHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwg
bWltZVR5cGUpOwogfQogCi12b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3JpZ2lu
KGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCit2b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9t
T3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5Pcmln
aW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKHBh
Z2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOworICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihwYWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1p
bWVUeXBlLCBzZXNzaW9uSUQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJ
bkNsaWVudC5oCmluZGV4IDUzMTAyOGEuLjAyYjhhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaApA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQbHVnSW5DbGllbnRfaAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9QbHVnSW5DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksNyArNDAsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0
IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6
OlNlc3Npb25JRCk7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTI2ZWYxNS4uM2NiNWQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xOTcsNiArMTk3LDcgQEAgV2Vi
UHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BS
T1RPQ09MUykKICAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlcj4oKTsKICNl
bmRpZgorICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPigpKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC03MjYsMTEgKzcyNywyMCBAQCBzdGF0
aWMgdW5zaWduZWQgaGFzaEZvclBsdWdJbk9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgcGx1ZwogICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwogfQogCi1ib29s
IFdlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5P
cmlnaW5IYXNoKQorYm9vbCBXZWJQcm9jZXNzOjppc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2go
dW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Npb24pCiB7Ci0gICAgSGFz
aE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlcy5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIGlmIChpdCA9PSBt
X3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4qIG1hcCA9IG51bGxwdHI7CisgICAgSGFz
aE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0b3IgaXQ7CisgICAgaWYgKG1fcGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmNvbnRhaW5zKHNlc3Npb24pKSB7CisgICAgICAgIG1h
cCA9ICYobV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmluZChzZXNzaW9uKS0+dmFsdWUp
OworICAgICAgICBpdCA9IG1hcC0+ZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICB9CisgICAg
aWYgKCFtYXAgfHwgaXQgPT0gbWFwLT5lbmQoKSkgeworICAgICAgICBtYXAgPSAmKG1fcGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
LT52YWx1ZSk7CisgICAgICAgIGl0ID0gbWFwLT5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAg
ICAgICBpZiAoaXQgPT0gbWFwLT5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiAgICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgPCBpdC0+dmFsdWU7CiB9CiAKQEAgLTczOCw3
ICs3NDgsNiBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21Pcmln
aW4oY29uc3QgV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaQogewogICAgIGlmICghcGx1Z2luT3Jp
Z2luLmlzRW1wdHkoKSAmJiBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnMuY29udGFpbnMocGx1Z2lu
T3JpZ2luKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0KICNpZmRlZiBFTkFCTEVfUFJJTUFSWV9T
TkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDCiAgICAgLy8gVGhlIHBsdWdpbiB3YXNuJ3QgaW4g
dGhlIGdlbmVyYWwgd2hpdGVsaXN0LCBzbyBjaGVjayBpZiBpdCBzaW1pbGFyIHRvIHRoZSBwcmlt
YXJ5IHBsdWdpbiBmb3IgdGhlIHBhZ2UgKGlmIHdlJ3ZlIGZvdW5kIG9uZSkuCiAgICAgaWYgKHBh
Z2UgJiYgcGFnZS0+bWF0Y2hlc1ByaW1hcnlQbHVnSW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2lu
LCBtaW1lVHlwZSkpCkBAIC03NDgsMTAgKzc1NywxMCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3Vs
ZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgV2ViUGFnZSogcGFnZSwgY29uc3QgU3Ry
aQogI2VuZGlmCiAKICAgICAvLyBMYXN0bHkgY2hlY2sgYWdhaW5zdCB0aGUgbW9yZSBleHBsaWNp
dCBoYXNoIGxpc3QuCi0gICAgcmV0dXJuIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChoYXNo
Rm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpKTsKKyAg
ICByZXR1cm4gaXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGhhc2hGb3JQbHVnSW5PcmlnaW4o
cGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSksIHBhZ2UtPnNlc3Npb25JRCgpKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNv
bnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHBhZ2VP
cmlnaW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIExPRyhQbHVnaW5zLCAiTm90IGFkZGluZyBlbXB0
eSBwYWdlIG9yaWdpbiIpOwpAQCAtNzU5LDcgKzc2OCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGx1
Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3Ry
aW5nCiAgICAgfQogCiAgICAgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCA9IGhhc2hGb3JQbHVn
SW5PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSk7Ci0gICAgaWYgKGlz
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5IYXNoKSkgeworICAgIGlmIChp
c1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklEKSkg
ewogICAgICAgICBMT0coUGx1Z2lucywgIkhhc2ggJXggYWxyZWFkeSBleGlzdHMgYXMgYXV0by1z
dGFydCBvcmlnaW4gKHJlcXVlc3QgZm9yICVzKSIsIHBsdWdJbk9yaWdpbkhhc2gsIHBhZ2VPcmln
aW4udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NjgsMjUgKzc3
NywyNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBT
dHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZwogICAgIC8vIGNvbWVzIGJhY2sgZnJvbSB0
aGUgcGFyZW50IHByb2Nlc3MuIFRlbXBvcmFyaWx5IGFkZCB0aGlzIGhhc2ggdG8gdGhlIGxpc3Qg
d2l0aCBhIHRoaXJ0eQogICAgIC8vIHNlY29uZCB0aW1lb3V0LiBUaGF0IHdheSwgZXZlbiBpZiB0
aGUgcGFyZW50IGRlY2lkZXMgbm90IHRvIGFkZCBpdCwgd2UnbGwgb25seSBiZQogICAgIC8vIGlu
Y29ycmVjdCBmb3IgYSBsaXR0bGUgd2hpbGUuCi0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGN1cnJlbnRUaW1lKCkgKyAzMCAqIDEwMDApOwor
ICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChzZXNzaW9uSUQsIEhhc2hNYXA8
dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRlcmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNo
LCBjdXJyZW50VGltZSgpICsgMzAgKiAxMDAwKTsKIAotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkFkZFBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCksIDApOworICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkFkZFBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklEKSwg
MCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUpCit2b2lk
IFdlYlByb2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1
Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lLCBTZXNzaW9uSUQgc2Vzc2lvbklE
KQogewogICAgIC8vIFdoZW4gY2FsbGVkLCBzb21lIHdlYiBwcm9jZXNzICh3aGljaCBhbHNvIG1p
Z2h0IGJlIHRoaXMgb25lKSBhZGRlZCB0aGUgb3JpZ2luIGZvciBhdXRvLXN0YXJ0aW5nLAogICAg
IC8vIG9yIHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgLy8gU2V0IHRoZSBiaXQgdG8g
YXZvaWQgaGF2aW5nIHJlZHVuZGFudGx5IGNhbGwgaW50byB0aGUgVUkgcHJvY2VzcyB1cG9uIHVz
ZXIgaW50ZXJhY3Rpb24uCi0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc2V0KHBs
dWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKTsKKyAgICBtX3BsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2hlcy5hZGQoc2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KCkpLml0
ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGNvbnN0
IEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mIGhhc2hlcykKIHsKLSAgICBtX3BsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlcy5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91Ymxl
PiY+KGhhc2hlcykpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmNsZWFyKCk7
CisgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1
ZS5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiY+KGhhc2hlcykpOwog
fQogCi12b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJ
bnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2lu
T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewog
ICAgIGlmIChwYWdlT3JpZ2luLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzk1LDEz
ICs4MDUsMjUgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0
aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QKICAgICBpZiAoIXBsdWdJbk9yaWdp
bkhhc2gpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT46
Oml0ZXJhdG9yIGl0ID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmluZChwbHVnSW5P
cmlnaW5IYXNoKTsKLSAgICBpZiAoaXQgPT0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMu
ZW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KiBt
YXA7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6aXRlcmF0b3IgaXQ7CisgICAgYm9v
bCBjb250YWlucyA9IGZhbHNlOworICAgIGlmIChtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cy5jb250YWlucyhzZXNzaW9uSUQpKSB7CisgICAgICAgIG1hcCA9ICYobV9wbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoZXMuZmluZChzZXNzaW9uSUQpLT52YWx1ZSk7CisgICAgICAgIGl0ID0gbWFw
LT5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBjb250YWlucyA9IHRydWU7CisgICAg
fQorICAgIGlmICghY29udGFpbnMgfHwgaXQgPT0gbWFwLT5lbmQoKSkgeworICAgICAgICBtYXAg
PSAmKG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpLT52YWx1ZSk7CisgICAgICAgIGl0ID0gbWFwLT5maW5kKHBsdWdJbk9yaWdp
bkhhc2gpOworICAgICAgICBpZiAoaXQgPT0gbWFwLT5lbmQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBpZiAoaXQtPnZhbHVlIC0gY3VycmVudFRpbWUoKSA+IHBsdWdJbkF1
dG9TdGFydEV4cGlyYXRpb25UaW1lVXBkYXRlVGhyZXNob2xkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0
OjpQbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gpLCAwKTsK
KyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0
OjpQbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gsIHNlc3Np
b25JRCksIDApOwogfQogCiBzdGF0aWMgdm9pZCBmcm9tQ291bnRlZFNldFRvSGFzaE1hcChUeXBl
Q291bnRTZXQqIGNvdW50ZWRTZXQsIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4mIG1hcCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZGIwYzg4OS4uMDdlNmRjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM2LDcgKzM2LDcgQEAK
ICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3Bh
dGNoZXIuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxlLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JREhhc2guaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtMTE5LDggKzExOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wpOwogCiAgICAgYm9vbCBzaG91bGRQbHVnSW5B
dXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIHBhZ2VPcmln
aW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
LSAgICB2b2lkIHBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmln
aW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
LSAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CisgICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdp
bk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAog
ICAgIGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVs
bEtleWJvYXJkQWNjZXNzRW5hYmxlZDsgfQogCkBAIC0yMTIsOCArMjEyLDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikgY29uc3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29s
IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwogCi0gICAgYm9vbCBpc1BsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgdm9pZCBkaWRBZGRQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIGRvdWJs
ZSBleHBpcmF0aW9uVGltZSk7CisgICAgYm9vbCBpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2go
dW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lk
IGRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFz
aCwgZG91YmxlIGV4cGlyYXRpb25UaW1lLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQg
cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwg
ZG91YmxlPiYgaGFzaGVzKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hl
TW9kZWwpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFdoZXRo
ZXIgdmlzaXRlZCBsaW5rcyBzaG91bGQgYmUgdHJhY2tlZCBvciBub3Qgc2hvdWxkIGJlIGhhbmRs
ZWQgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgYm9vbCBtX3Nob3VsZFRyYWNrVmlzaXRlZExpbmtz
OwogCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiBtX3BsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25l
ZCwgZG91YmxlPj4gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIAogICAgIGJvb2wgbV9oYXNTZXRDYWNo
ZU1vZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGE2ZmE1ZTAuLmE4NGUzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU0LDcgKzU0LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgICMgUGx1Zy1p
bnMuCi0gICAgRGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBk
b3VibGUgZXhwaXJhdGlvblRpbWUpCisgICAgRGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aCh1aW50MzJfdCBoYXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUsIFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiAgICAgUmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoSGFzaE1h
cDx1aW50MzJfdCxkb3VibGU+IGhhc2hlcykKIAogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVy
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFN0
cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230416</attachid>
            <date>2014-04-29 14:20:48 -0700</date>
            <delta_ts>2014-04-30 16:54:02 -0700</delta_ts>
            <desc>copyright</desc>
            <filename>pluginsession.04.diff</filename>
            <type>text/plain</type>
            <size>29532</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNGQ4YmYzLi4xMjcwYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDQtMjkgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KToKKyAgICAg
ICAgKiBwYWdlL1BsdWdJbkNsaWVudC5oOgorCiAyMDE0LTA0LTI5ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSB3b3JrYXJvdW5kIGZvciA8
cmRhcjovL3Byb2JsZW0vMTY1Nzg3Mjc+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYjgxNjI0My4uZDY0NjAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC01MTEsNyArNTEx
LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdChQ
YXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGV2ZW50LAogCiAgICAgU3RyaW5nIHBsdWdJbk9yaWdpbiA9
IG1fbG9hZGVkVXJsLmhvc3QoKTsKICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgIVNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5wYWdlKCkt
Pm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpKSAmJiBkb2N1bWVu
dCgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdF
bmFibGVkKCkpCi0gICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+ZGlk
U3RhcnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
LT5iYXNlVVJMKCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCkpOworICAg
ICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPmRpZFN0YXJ0RnJvbU9yaWdp
bihkb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhv
c3QoKSwgcGx1Z0luT3JpZ2luLCBsb2FkZWRNaW1lVHlwZSgpLCBkb2N1bWVudCgpLnBhZ2UoKS0+
c2Vzc2lvbklEKCkpOwogCiAgICAgTE9HKFBsdWdpbnMsICIlcCBVc2VyIGNsaWNrZWQgb24gc25h
cHNob3R0ZWQgcGx1Zy1pbi4gUmVzdGFydC4iLCB0aGlzKTsKICAgICByZXN0YXJ0U25hcHNob3R0
ZWRQbHVnSW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCmluZGV4IDY1ODJjNGUuLjky
OGI5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnSW5DbGllbnQuaApAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBQbHVnSW5DbGllbnRfaAogI2RlZmluZSBQbHVnSW5DbGllbnRfaAogCisjaW5jbHVk
ZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzQsNyArMzUsNyBAQCBjbGFzcyBQbHVnSW5DbGllbnQgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFNlc3Npb25JRCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGx1Z0luQ2xpZW50
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzI3ZGUwMS4uODVjYTBiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDE0LTA0LTI5ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTZXNzaW9uLWF3YXJlIHBsdWdpbiBhdXRvc3RhcnQgZGF0YQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNzU4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xNTkwNjU0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OlBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXI6OmFkZEF1dG9TdGFydE9yaWdpbkhhc2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5BdXRv
U3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9y
aWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXI6OmRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojph
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFydEZyb21PcmlnaW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmlzUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNo
b3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTQtMDQtMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuY3BwCmluZGV4IGU1NzI0MDMuLjE1MTUxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00Miw2ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXI6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKFdlYkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKIHsKKyAgICBtX2hhc2hUb09yaWdpbk1hcC5hZGQoU2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4oKSk7
CisgICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IEF1dG9TdGFydFRhYmxlKCkpOwogfQogCiBzdGF0aWMgZG91YmxlIGV4cGlyYXRpb25UaW1lRnJv
bU5vdygpCkBAIC00OSwyOCArNTEsMzAgQEAgc3RhdGljIGRvdWJsZSBleHBpcmF0aW9uVGltZUZy
b21Ob3coKQogICAgIHJldHVybiBjdXJyZW50VGltZSgpICsgcGx1Z0luQXV0b1N0YXJ0RXhwaXJh
dGlvblRpbWVUaHJlc2hvbGQ7CiB9CiAKLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmFk
ZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoKQordm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0
YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9y
aWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9uKQogewotICAgIGlmIChtX2hhc2hUb09yaWdpbk1h
cC5jb250YWlucyhwbHVnSW5PcmlnaW5IYXNoKSkKKyAgICBpZiAoKG1faGFzaFRvT3JpZ2luTWFw
LmNvbnRhaW5zKHNlc3Npb24pICYmIG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbiktPnZh
bHVlLmNvbnRhaW5zKHBsdWdJbk9yaWdpbkhhc2gpKSB8fCBtX2hhc2hUb09yaWdpbk1hcC5maW5k
KFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKS0+dmFsdWUuY29udGFpbnMocGx1Z0luT3Jp
Z2luSGFzaCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF1dG9TdGFydFRhYmxlOjppdGVyYXRv
ciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuZmluZChwYWdlT3JpZ2luKTsKLSAgICBpZiAoaXQgPT0g
bV9hdXRvU3RhcnRUYWJsZS5lbmQoKSkKLSAgICAgICAgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmFk
ZChwYWdlT3JpZ2luLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKCkpLml0ZXJhdG9yOworICAg
IEF1dG9TdGFydFRhYmxlOjppdGVyYXRvciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuYWRkKHNlc3Np
b24sIEF1dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZU9yaWdpbiwgUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCgpKS5pdGVyYXRvcjsKIAogICAgIGRvdWJsZSBleHBpcmF0
aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJvbU5vdygpOwogICAgIGl0LT52YWx1ZS5zZXQocGx1
Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUpOwotICAgIG1faGFzaFRvT3JpZ2luTWFwLnNl
dChwbHVnSW5PcmlnaW5IYXNoLCBwYWdlT3JpZ2luKTsKKyAgICBtX2hhc2hUb09yaWdpbk1hcC5m
aW5kKHNlc3Npb24pLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgcGFnZU9yaWdpbik7CiAK
LSAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0
aW9uVGltZSkpOworICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhh
c2gsIGV4cGlyYXRpb25UaW1lLCBzZXNzaW9uKSk7CiAgICAgbV9jb250ZXh0LT5jbGllbnQoKS5w
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNDaGFuZ2VkKG1fY29udGV4dCk7CiB9CiAKIFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2ggUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9TdGFydE9y
aWdpbkhhc2hlc0NvcHkoKSBjb25zdAogewogICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gg
Y29weU1hcDsKLSAgICBBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9hdXRv
U3RhcnRUYWJsZS5lbmQoKTsKLSAgICBmb3IgKEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
aWYgKCFtX2F1dG9TdGFydFRhYmxlLmNvbnRhaW5zKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpKSkKKyAgICAgICAgcmV0dXJuIGNvcHlNYXA7CisKKyAgICBjb25zdCBBdXRvU3RhcnRUYWJs
ZSYgdGFibGUgPSBtX2F1dG9TdGFydFRhYmxlLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpLT52YWx1ZTsKKyAgICBBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
dGFibGUuZW5kKCk7CisgICAgZm9yIChBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB0YWJsZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRlcmF0b3IgbWFwRW5kID0gaXQtPnZhbHVlLmVuZCgpOwog
ICAgICAgICBmb3IgKFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0ZXJhdG9yIG1h
cEl0ID0gaXQtPnZhbHVlLmJlZ2luKCk7IG1hcEl0ICE9IG1hcEVuZDsgKyttYXBJdCkKICAgICAg
ICAgICAgIGNvcHlNYXAuc2V0KG1hcEl0LT5rZXksIG1hcEl0LT52YWx1ZSk7CkBAIC04MSw5ICs4
NSwxMyBAQCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
OjphdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCkgYwogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0
aW9uYXJ5PiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luc1RhYmxlQ29w
eSgpIGNvbnN0CiB7CiAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7Ci0gICAg
QXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fYXV0b1N0YXJ0VGFibGUuZW5k
KCk7CisgICAgaWYgKCFtX2F1dG9TdGFydFRhYmxlLmNvbnRhaW5zKFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKSkKKyAgICAgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0
ZShzdGQ6Om1vdmUobWFwKSk7CisKKyAgICBjb25zdCBBdXRvU3RhcnRUYWJsZSYgdGFibGUgPSBt
X2F1dG9TdGFydFRhYmxlLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpLT52YWx1
ZTsKKyAgICBBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdGFibGUuZW5kKCk7
CiAgICAgZG91YmxlIG5vdyA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgZm9yIChBdXRvU3RhcnRUYWJs
ZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgIGZvciAoQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
dGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEltbXV0YWJsZURpY3Rp
b25hcnk6Ok1hcFR5cGUgaGFzaE1hcDsKICAgICAgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aDo6Y29uc3RfaXRlcmF0b3IgdmFsdWVFbmQgPSBpdC0+dmFsdWUuZW5kKCk7CiAgICAgICAgIGZv
ciAoUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRlcmF0b3IgdmFsdWVJdCA9IGl0
LT52YWx1ZS5iZWdpbigpOyB2YWx1ZUl0ICE9IHZhbHVlRW5kOyArK3ZhbHVlSXQpIHsKQEAgLTEy
MSw2ICsxMjksOCBAQCB2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRP
cmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dAogICAgIG1faGFzaFRvT3JpZ2lu
TWFwLmNsZWFyKCk7CiAgICAgbV9hdXRvU3RhcnRUYWJsZS5jbGVhcigpOwogICAgIEhhc2hNYXA8
dW5zaWduZWQsIGRvdWJsZT4gaGFzaE1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+
JiBoYXNoVG9PcmlnaW5NYXAgPSBtX2hhc2hUb09yaWdpbk1hcC5hZGQoU2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4oKSkuaXRlcmF0b3ItPnZh
bHVlOworICAgIEF1dG9TdGFydFRhYmxlJiBhc3QgPSBtX2F1dG9TdGFydFRhYmxlLmFkZChTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgQXV0b1N0YXJ0VGFibGUoKSkuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gdGFibGUubWFwKCkuZW5kKCk7CiAgICAgZm9yIChJbW11dGFibGVEaWN0aW9uYXJ5OjpN
YXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IHRhYmxlLm1hcCgpLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewpAQCAtMTQyLDExICsxNTIsMTEgQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92
aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3QoSW1tdXQK
IAogICAgICAgICAgICAgaGFzaGVzLnNldChoYXNoLCBleHBpcmF0aW9uVGltZSk7CiAgICAgICAg
ICAgICBoYXNoTWFwLnNldChoYXNoLCBleHBpcmF0aW9uVGltZSk7Ci0gICAgICAgICAgICBtX2hh
c2hUb09yaWdpbk1hcC5zZXQoaGFzaCwgaXQtPmtleSk7CisgICAgICAgICAgICBoYXNoVG9Pcmln
aW5NYXAuc2V0KGhhc2gsIGl0LT5rZXkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFoYXNo
ZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9hdXRvU3RhcnRUYWJsZS5zZXQoaXQtPmtleSwg
aGFzaGVzKTsKKyAgICAgICAgICAgIGFzdC5zZXQoaXQtPmtleSwgaGFzaGVzKTsKICAgICB9CiAK
ICAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
UmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoaGFzaE1hcCkpOwpAQCAtMTYyLDE3ICsx
NzIsMjggQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2lu
c0FycmF5KEFQSTo6QXJyYXkmIG9yaWdpbkxpc3QpCiAgICAgfQogfQogCi12b2lkIFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJ
bk9yaWdpbkhhc2gpCit2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNl
ckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9u
KQogewotICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9oYXNoVG9PcmlnaW5NYXAuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICBpZiAoaXQgPT0g
bV9oYXNoVG9PcmlnaW5NYXAuZW5kKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+KiBtYXA7Cisg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQ7CisgICAgYm9v
bCBjb250YWlucyA9IGZhbHNlOworICAgIGlmIChtX2hhc2hUb09yaWdpbk1hcC5jb250YWlucyhz
ZXNzaW9uKSkgeworICAgICAgICBtYXAgPSAmKG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lv
biktPnZhbHVlKTsKKyAgICAgICAgaXQgPSBtYXAtPmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Cisg
ICAgICAgIGNvbnRhaW5zID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFjb250YWlucyB8fCBpdCA9
PSBtYXAtPmVuZCgpKSB7CisgICAgICAgIG1hcCA9ICYobV9oYXNoVG9PcmlnaW5NYXAuZmluZChT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSktPnZhbHVlKTsKKyAgICAgICAgaXQgPSBtYXAt
PmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7CisgICAgICAgIGlmIChpdCA9PSBtYXAtPmVuZCgpKSB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGRvdWJsZSBuZXdFeHBpcmF0aW9uVGltZSA9IGV4cGly
YXRpb25UaW1lRnJvbU5vdygpOwotICAgIG1fYXV0b1N0YXJ0VGFibGUuZmluZChpdC0+dmFsdWUp
LT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUpOwotICAgIG1f
Y29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEaWRBZGRQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gsIG5ld0V4cGlyYXRpb25U
aW1lKSk7CisgICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoc2Vzc2lvbiwgQXV0b1N0YXJ0VGFibGUo
KSkuaXRlcmF0b3ItPnZhbHVlLmFkZChpdC0+dmFsdWUsIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2goKSkuaXRlcmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9u
VGltZSk7CisgICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwg
bmV3RXhwaXJhdGlvblRpbWUsIHNlc3Npb24pKTsKICAgICBtX2NvbnRleHQtPmNsaWVudCgpLnBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0NoYW5nZWQobV9jb250ZXh0KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyLmgKaW5kZXggYzNiMzkwMi4uNTQyZDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyX2gKICNk
ZWZpbmUgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNz
aW9uSURIYXNoLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00NCw2ICs0NSw3IEBAIGNsYXNzIElt
bXV0YWJsZURpY3Rpb25hcnk7CiBjbGFzcyBXZWJDb250ZXh0OwogCiB0eXBlZGVmIEhhc2hNYXA8
dW5zaWduZWQsIGRvdWJsZT4gUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDsKK3R5cGVkZWYgSGFz
aE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g+IFNlc3Np
b25QbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoOwogdHlwZWRlZiBWZWN0b3I8U3RyaW5nPiBQbHVn
SW5BdXRvU3RhcnRPcmlnaW5zOwogCiBjbGFzcyBQbHVnSW5BdXRvU3RhcnRQcm92aWRlciB7CkBA
IC01MSw4ICs1Myw4IEBAIGNsYXNzIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcihXZWJDb250ZXh0Kik7CiAKLSAg
ICB2b2lkIGFkZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1
bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgdm9pZCBhZGRBdXRvU3RhcnRP
cmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2lu
SGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAog
ICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gYXV0b1N0YXJ0T3JpZ2luc1RhYmxl
Q29weSgpIGNvbnN0OwogICAgIHZvaWQgc2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlKEltbXV0YWJs
ZURpY3Rpb25hcnkmKTsKQEAgLTY4LDkgKzcwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRB
dXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dGFibGVEaWN0aW9u
YXJ5Jiwgc3RkOjpmdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0aW9uVGltZXN0YW1wKT4pOwog
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCwg
Q2FzZUZvbGRpbmdIYXNoPiBBdXRvU3RhcnRUYWJsZTsKLSAgICBBdXRvU3RhcnRUYWJsZSBtX2F1
dG9TdGFydFRhYmxlOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEF1
dG9TdGFydFRhYmxlPiBTZXNzaW9uQXV0b1N0YXJ0VGFibGU7CisgICAgU2Vzc2lvbkF1dG9TdGFy
dFRhYmxlIG1fYXV0b1N0YXJ0VGFibGU7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+
IG1faGFzaFRvT3JpZ2luTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNo
TWFwPHVuc2lnbmVkLCBTdHJpbmc+PiBtX2hhc2hUb09yaWdpbk1hcDsKIAogICAgIFBsdWdJbkF1
dG9TdGFydE9yaWdpbnMgbV9hdXRvU3RhcnRPcmlnaW5zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCAyOGE4NDg0Li4zMzU3OTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0xMjk0LDE0ICsxMjk0LDE0IEBAIHZvaWQg
V2ViQ29udGV4dDo6c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9v
bCBmbGFnKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0
SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoZmxhZykpOwogfQogCi12b2lk
IFdlYkNvbnRleHQ6OmFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQordm9pZCBXZWJDb250ZXh0Ojph
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5z
aWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Npb24pCiB7Ci0gICAgbV9wbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5hZGRBdXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VPcmlnaW4sIHBs
dWdJbk9yaWdpbkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYWRkQXV0b1N0
YXJ0T3JpZ2luSGFzaChwYWdlT3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uKTsKIH0K
IAotdm9pZCBXZWJDb250ZXh0OjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2ln
bmVkIHBsdWdJbk9yaWdpbkhhc2gpCit2b2lkIFdlYkNvbnRleHQ6OnBsdWdJbkRpZFJlY2VpdmVV
c2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Np
b24pCiB7Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5kaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIu
ZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uKTsKIH0K
IAogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJDb250ZXh0OjpwbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmgKaW5kZXggNTJiMjU3NS4uMGU1YTkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oCkBAIC00MTYsOCArNDE2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJO
b3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0lu
T3JpZ2luSGFzaCk7Ci0gICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVu
c2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOworICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhh
c2gsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlcklu
dGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCk7
CiAKICAgICB2b2lkIHNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVz
c2FnZXMuaW4KaW5kZXggMWMzYzM1MC4uMDcyZDY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTU5LDYgKzU5LDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViQ29udGV4dCBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgICMgUGx1Zy1p
biBtZXNzYWdlcy4KLSAgICB2b2lkIEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goU3RyaW5n
IHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhhc2gpCi0gICAgdm9pZCBQbHVnSW5EaWRSZWNlaXZlVXNl
ckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gpCisgICAgdm9pZCBBZGRQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbikKKyAgICB2b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24o
dWludDMyX3QgaGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb24pCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNzNmZWJj
Mi4uYWI4OTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtMTczNiw3ICsxNzM2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVn
aW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCkKICAgICBTdHJpbmcgcGx1Z2luT3JpZ2luID0g
cGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKS5ob3N0KCk7CiAgICAgU3RyaW5nIG1pbWVU
eXBlID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRNaW1lVHlwZSgpOwogCi0gICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwYWdlT3JpZ2lu
LCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wbHVn
SW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWlt
ZVR5cGUsIHBsdWdJbkltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnNlc3Npb25JRCgp
KTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpzaG91bGRDcmVhdGVUcmFuc2llbnRQYWludGluZ1Nu
YXBzaG90KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcAppbmRleCA4NTRkNzczLi5lMzU1
OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdJbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCkBAIC01Miw5ICs1Miw5IEBAIGJvb2wgV2Vi
UGx1Z0luQ2xpZW50OjpzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFn
ZU9yaWdpbiwgY29uc3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkuc2hvdWxkUGx1
Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihtX3BhZ2UsIHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwg
bWltZVR5cGUpOwogfQogCi12b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3JpZ2lu
KGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCit2b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9t
T3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5Pcmln
aW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKHBh
Z2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOworICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihwYWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1p
bWVUeXBlLCBzZXNzaW9uSUQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJ
bkNsaWVudC5oCmluZGV4IDUzMTAyOGEuLjAyYjhhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaApA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQbHVnSW5DbGllbnRfaAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9QbHVnSW5DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksNyArNDAsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0
IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6
OlNlc3Npb25JRCk7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTI2ZWYxNS4uZDYxOTU5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTcsNiArMTk3LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgVVNFKFNPVVAp
ICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlcj4oKTsKICNlbmRpZgorICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwg
ZG91YmxlPigpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25z
dCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC03
MjYsMTEgKzcyNywyMCBAQCBzdGF0aWMgdW5zaWduZWQgaGFzaEZvclBsdWdJbk9yaWdpbihjb25z
dCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1ZwogICAgIHJldHVybiBoYXNo
ZXIuaGFzaCgpOwogfQogCi1ib29sIFdlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQorYm9vbCBXZWJQcm9jZXNzOjppc1BsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklE
IHNlc3Npb24pCiB7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKHBsdWdJbk9yaWdpbkhh
c2gpOwotICAgIGlmIChpdCA9PSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4qIG1h
cCA9IG51bGxwdHI7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0
b3IgaXQ7CisgICAgaWYgKG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmNvbnRhaW5zKHNl
c3Npb24pKSB7CisgICAgICAgIG1hcCA9ICYobV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMu
ZmluZChzZXNzaW9uKS0+dmFsdWUpOworICAgICAgICBpdCA9IG1hcC0+ZmluZChwbHVnSW5Pcmln
aW5IYXNoKTsKKyAgICB9CisgICAgaWYgKCFtYXAgfHwgaXQgPT0gbWFwLT5lbmQoKSkgeworICAg
ICAgICBtYXAgPSAmKG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQoU2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCkpLT52YWx1ZSk7CisgICAgICAgIGl0ID0gbWFwLT5maW5kKHBs
dWdJbk9yaWdpbkhhc2gpOworICAgICAgICBpZiAoaXQgPT0gbWFwLT5lbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgPCBpdC0+
dmFsdWU7CiB9CiAKQEAgLTczOCw3ICs3NDgsNiBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFBs
dWdJbkF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaQog
ewogICAgIGlmICghcGx1Z2luT3JpZ2luLmlzRW1wdHkoKSAmJiBtX3BsdWdJbkF1dG9TdGFydE9y
aWdpbnMuY29udGFpbnMocGx1Z2luT3JpZ2luKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0KICNp
ZmRlZiBFTkFCTEVfUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDCiAgICAgLy8g
VGhlIHBsdWdpbiB3YXNuJ3QgaW4gdGhlIGdlbmVyYWwgd2hpdGVsaXN0LCBzbyBjaGVjayBpZiBp
dCBzaW1pbGFyIHRvIHRoZSBwcmltYXJ5IHBsdWdpbiBmb3IgdGhlIHBhZ2UgKGlmIHdlJ3ZlIGZv
dW5kIG9uZSkuCiAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+bWF0Y2hlc1ByaW1hcnlQbHVnSW4ocGFn
ZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSkpCkBAIC03NDgsMTAgKzc1NywxMCBAQCBi
b29sIFdlYlByb2Nlc3M6OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgV2Vi
UGFnZSogcGFnZSwgY29uc3QgU3RyaQogI2VuZGlmCiAKICAgICAvLyBMYXN0bHkgY2hlY2sgYWdh
aW5zdCB0aGUgbW9yZSBleHBsaWNpdCBoYXNoIGxpc3QuCi0gICAgcmV0dXJuIGlzUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaChoYXNoRm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9y
aWdpbiwgbWltZVR5cGUpKTsKKyAgICByZXR1cm4gaXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
KGhhc2hGb3JQbHVnSW5PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSks
IHBhZ2UtPnNlc3Npb25JRCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFy
dEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdp
bk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z0lu
RGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7CiAgICAgaWYgKHBhZ2VPcmlnaW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIExPRyhQbHVn
aW5zLCAiTm90IGFkZGluZyBlbXB0eSBwYWdlIG9yaWdpbiIpOwpAQCAtNzU5LDcgKzc2OCw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYg
cGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nCiAgICAgfQogCiAgICAgdW5zaWduZWQgcGx1Z0luT3Jp
Z2luSGFzaCA9IGhhc2hGb3JQbHVnSW5PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBt
aW1lVHlwZSk7Ci0gICAgaWYgKGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5Pcmln
aW5IYXNoKSkgeworICAgIGlmIChpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3Jp
Z2luSGFzaCwgc2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUGx1Z2lucywgIkhhc2ggJXggYWxy
ZWFkeSBleGlzdHMgYXMgYXV0by1zdGFydCBvcmlnaW4gKHJlcXVlc3QgZm9yICVzKSIsIHBsdWdJ
bk9yaWdpbkhhc2gsIHBhZ2VPcmlnaW4udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC03NjgsMjUgKzc3NywyNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFN0
YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZwogICAg
IC8vIGNvbWVzIGJhY2sgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MuIFRlbXBvcmFyaWx5IGFkZCB0
aGlzIGhhc2ggdG8gdGhlIGxpc3Qgd2l0aCBhIHRoaXJ0eQogICAgIC8vIHNlY29uZCB0aW1lb3V0
LiBUaGF0IHdheSwgZXZlbiBpZiB0aGUgcGFyZW50IGRlY2lkZXMgbm90IHRvIGFkZCBpdCwgd2Un
bGwgb25seSBiZQogICAgIC8vIGluY29ycmVjdCBmb3IgYSBsaXR0bGUgd2hpbGUuCi0gICAgbV9w
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGN1cnJlbnRU
aW1lKCkgKyAzMCAqIDEwMDApOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFk
ZChzZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRlcmF0b3ItPnZhbHVl
LnNldChwbHVnSW5PcmlnaW5IYXNoLCBjdXJyZW50VGltZSgpICsgMzAgKiAxMDAwKTsKIAotICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkFk
ZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCks
IDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNv
bnRleHQ6OkFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3Jp
Z2luSGFzaCwgc2Vzc2lvbklEKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGlkQWRkUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUg
ZXhwaXJhdGlvblRpbWUpCit2b2lkIFdlYlByb2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1l
LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIC8vIFdoZW4gY2FsbGVkLCBzb21lIHdlYiBw
cm9jZXNzICh3aGljaCBhbHNvIG1pZ2h0IGJlIHRoaXMgb25lKSBhZGRlZCB0aGUgb3JpZ2luIGZv
ciBhdXRvLXN0YXJ0aW5nLAogICAgIC8vIG9yIHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24uCiAg
ICAgLy8gU2V0IHRoZSBiaXQgdG8gYXZvaWQgaGF2aW5nIHJlZHVuZGFudGx5IGNhbGwgaW50byB0
aGUgVUkgcHJvY2VzcyB1cG9uIHVzZXIgaW50ZXJhY3Rpb24uCi0gICAgbV9wbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKTsKKyAg
ICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoc2Vzc2lvbklELCBIYXNoTWFwPHVu
c2lnbmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwg
ZXhwaXJhdGlvblRpbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKGNvbnN0IEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mIGhhc2hlcykK
IHsKLSAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5zd2FwKGNvbnN0X2Nhc3Q8SGFz
aE1hcDx1bnNpZ25lZCwgZG91YmxlPiY+KGhhc2hlcykpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzLmNsZWFyKCk7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMu
YWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2lnbmVkLCBkb3Vi
bGU+KCkpLml0ZXJhdG9yLT52YWx1ZS5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwg
ZG91YmxlPiY+KGhhc2hlcykpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2Vp
dmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzczo6
cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewogICAgIGlmIChwYWdlT3JpZ2luLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzk1LDEzICs4MDUsMjUgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5E
aWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QK
ICAgICBpZiAoIXBsdWdJbk9yaWdpbkhhc2gpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT46Oml0ZXJhdG9yIGl0ID0gbV9wbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXMuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICBpZiAoaXQgPT0gbV9wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFw
PHVuc2lnbmVkLCBkb3VibGU+KiBtYXA7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6
aXRlcmF0b3IgaXQ7CisgICAgYm9vbCBjb250YWlucyA9IGZhbHNlOworICAgIGlmIChtX3BsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcy5jb250YWlucyhzZXNzaW9uSUQpKSB7CisgICAgICAgIG1h
cCA9ICYobV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmluZChzZXNzaW9uSUQpLT52YWx1
ZSk7CisgICAgICAgIGl0ID0gbWFwLT5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBj
b250YWlucyA9IHRydWU7CisgICAgfQorICAgIGlmICghY29udGFpbnMgfHwgaXQgPT0gbWFwLT5l
bmQoKSkgeworICAgICAgICBtYXAgPSAmKG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZp
bmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpLT52YWx1ZSk7CisgICAgICAgIGl0ID0g
bWFwLT5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBpZiAoaXQgPT0gbWFwLT5lbmQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoaXQtPnZhbHVlIC0gY3Vy
cmVudFRpbWUoKSA+IHBsdWdJbkF1dG9TdGFydEV4cGlyYXRpb25UaW1lVXBkYXRlVGhyZXNob2xk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpQbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBs
dWdJbk9yaWdpbkhhc2gpLCAwKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpQbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBs
dWdJbk9yaWdpbkhhc2gsIHNlc3Npb25JRCksIDApOwogfQogCiBzdGF0aWMgdm9pZCBmcm9tQ291
bnRlZFNldFRvSGFzaE1hcChUeXBlQ291bnRTZXQqIGNvdW50ZWRTZXQsIEhhc2hNYXA8U3RyaW5n
LCB1aW50NjRfdD4mIG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggZGIwYzg4OS4uMDdlNmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5j
bHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxl
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nl
c3Npb25JREhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTE5LDggKzExOSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wpOwogCiAg
ICAgYm9vbCBzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFdlYlBhZ2UqLCBj
b25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICB2b2lkIHBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihj
b25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdp
biwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21P
cmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdp
biwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lk
IHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2Vi
Q29yZTo6U2Vzc2lvbklEKTsKIAogICAgIGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsgfQogCkBAIC0yMTIs
OCArMjEyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRB
Y2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwogCi0gICAg
Ym9vbCBpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFz
aCk7Ci0gICAgdm9pZCBkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBs
dWdJbk9yaWdpbkhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSk7CisgICAgYm9vbCBpc1BsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6
U2Vzc2lvbklEKTsKKyAgICB2b2lkIGRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5z
aWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lLCBXZWJDb3JlOjpT
ZXNzaW9uSUQpOwogICAgIHZvaWQgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoY29u
c3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiYgaGFzaGVzKTsKIAogICAgIHZvaWQgcGxhdGZv
cm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHByaXZhdGU6
CiAgICAgLy8gRklYTUU6IFdoZXRoZXIgdmlzaXRlZCBsaW5rcyBzaG91bGQgYmUgdHJhY2tlZCBv
ciBub3Qgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgYm9vbCBtX3No
b3VsZFRyYWNrVmlzaXRlZExpbmtzOwogCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiBt
X3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Np
b25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj4gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIAog
ICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGE2ZmE1ZTAuLmE4NGUzMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTU0LDcgKzU0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKIAogICAgICMgUGx1Zy1pbnMuCi0gICAgRGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaCh1aW50MzJfdCBoYXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUpCisgICAgRGlkQWRkUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBkb3VibGUgZXhwaXJhdGlvblRp
bWUsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgUmVzZXRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoZXMoSGFzaE1hcDx1aW50MzJfdCxkb3VibGU+IGhhc2hlcykKIAogICAgIHZv
aWQgU3RhcnRNZW1vcnlTYW1wbGVyKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bXBsZUxvZ0ZpbGVIYW5kbGUsIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91YmxlIGludGVy
dmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230537</attachid>
            <date>2014-04-30 16:54:02 -0700</date>
            <delta_ts>2014-04-30 16:55:22 -0700</delta_ts>
            <desc>address comments + fix bugs</desc>
            <filename>pluginsession.06.diff</filename>
            <type>text/plain</type>
            <size>31348</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNzQzNjUzLi42MjVlOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDQtMzAgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KToKKyAgICAg
ICAgKiBwYWdlL1BsdWdJbkNsaWVudC5oOgorCiAyMDE0LTA0LTMwICBEYXZpZCBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBSZWdpb24gb2Zmc2V0
IG5vdCBmYWN0b3JlZCBpbiB3aGVuIG1hcHBpbmcgdG8gbG9jYWwgY29vcmRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiODE2MjQzLi5k
NjQ2MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVz
ZXJEaWRDbGlja1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQsCiAKICAgICBT
dHJpbmcgcGx1Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwuaG9zdCgpOwogICAgIGlmIChkb2N1bWVu
dCgpLnBhZ2UoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2Nh
bChkb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnBy
b3RvY29sKCkpICYmIGRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLmF1dG9zdGFydE9yaWdp
blBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCkt
PnBsdWdJbkNsaWVudCgpLT5kaWRTdGFydEZyb21PcmlnaW4oZG9jdW1lbnQoKS5wYWdlKCktPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCksIHBsdWdJbk9yaWdpbiwgbG9h
ZGVkTWltZVR5cGUoKSk7CisgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQo
KS0+ZGlkU3RhcnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCks
IGRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAKICAgICBMT0coUGx1Z2lucywgIiVw
IFVzZXIgY2xpY2tlZCBvbiBzbmFwc2hvdHRlZCBwbHVnLWluLiBSZXN0YXJ0LiIsIHRoaXMpOwog
ICAgIHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QbHVnSW5DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50
LmgKaW5kZXggNjU4MmM0ZS4uOTI4Yjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QbHVnSW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBsdWdJbkNsaWVudF9oCiAjZGVmaW5lIFBsdWdJ
bkNsaWVudF9oCiAKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCw3ICszNSw3IEBAIGNsYXNzIFBsdWdJ
bkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5n
JiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4o
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIH5QbHVnSW5DbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYWIzYzcwLi4xNTMzYjVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTQtMDQtMzAgIE1hcnRpbiBIb2NrICA8
bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFy
dCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzE3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5BdXRvU3Rh
cnRQcm92aWRlcjo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5IYXNoZXND
b3B5KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9TdGFy
dE9yaWdpbnNUYWJsZUNvcHkpOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92
aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2lu
c0FycmF5KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmRpZFJl
Y2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJ
bnRlcmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBs
dWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1
Z0luQ2xpZW50OjpkaWRTdGFydEZyb21PcmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21P
cmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21P
cmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRBZGRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVn
SW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisK
IDIwMTQtMDQtMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IEZvbGxvd3VwIHRvOiBIYW5kbGUgc2VsZWN0aW9uIHNlcnZpY2VzIG1lbnUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQ
cm92aWRlci5jcHAKaW5kZXggZTU3MjQwMy4uZDA5NjQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Miw2ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXI6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKFdlYkNvbnRleHQqIGNvbnRleHQp
CiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKIHsKKyAgICBtX2hhc2hUb09yaWdpbk1hcC5hZGQo
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4o
KSk7CisgICAgbV9hdXRvU3RhcnRUYWJsZS5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIEF1dG9TdGFydFRhYmxlKCkpOwogfQogCiBzdGF0aWMgZG91YmxlIGV4cGlyYXRpb25UaW1l
RnJvbU5vdygpCkBAIC00OSw1MSArNTEsNDQgQEAgc3RhdGljIGRvdWJsZSBleHBpcmF0aW9uVGlt
ZUZyb21Ob3coKQogICAgIHJldHVybiBjdXJyZW50VGltZSgpICsgcGx1Z0luQXV0b1N0YXJ0RXhw
aXJhdGlvblRpbWVUaHJlc2hvbGQ7CiB9CiAKLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6
OmFkZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25l
ZCBwbHVnSW5PcmlnaW5IYXNoKQordm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0
b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJ
bk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKG1faGFzaFRvT3Jp
Z2luTWFwLmNvbnRhaW5zKHBsdWdJbk9yaWdpbkhhc2gpKQorICAgIGNvbnN0IGF1dG8mIHNlc3Np
b25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbklEKTsKKyAgICBpZiAo
KHNlc3Npb25JdGVyYXRvciAhPSBtX2hhc2hUb09yaWdpbk1hcC5lbmQoKSAmJiBzZXNzaW9uSXRl
cmF0b3ItPnZhbHVlLmNvbnRhaW5zKHBsdWdJbk9yaWdpbkhhc2gpKSB8fCBtX2hhc2hUb09yaWdp
bk1hcC5nZXQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpLmNvbnRhaW5zKHBsdWdJbk9y
aWdpbkhhc2gpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBdXRvU3RhcnRUYWJsZTo6aXRlcmF0
b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmZpbmQocGFnZU9yaWdpbik7Ci0gICAgaWYgKGl0ID09
IG1fYXV0b1N0YXJ0VGFibGUuZW5kKCkpCi0gICAgICAgIGl0ID0gbV9hdXRvU3RhcnRUYWJsZS5h
ZGQocGFnZU9yaWdpbiwgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCgpKS5pdGVyYXRvcjsKKyAg
ICBBdXRvU3RhcnRUYWJsZTo6aXRlcmF0b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmFkZChzZXNz
aW9uSUQsIEF1dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZU9yaWdpbiwg
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCgpKS5pdGVyYXRvcjsKIAogICAgIGRvdWJsZSBleHBp
cmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJvbU5vdygpOwogICAgIGl0LT52YWx1ZS5zZXQo
cGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUpOwotICAgIG1faGFzaFRvT3JpZ2luTWFw
LnNldChwbHVnSW5PcmlnaW5IYXNoLCBwYWdlT3JpZ2luKTsKKyAgICBzZXNzaW9uSXRlcmF0b3It
PnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBwYWdlT3JpZ2luKTsKIAotICAgIG1fY29udGV4
dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEaWRBZGRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKSk7Cisg
ICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRp
ZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlv
blRpbWUsIHNlc3Npb25JRCkpOwogICAgIG1fY29udGV4dC0+Y2xpZW50KCkucGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZChtX2NvbnRleHQpOwogfQogCiBQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5IYXNoZXND
b3B5KCkgY29uc3QKIHsKICAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoIGNvcHlNYXA7Ci0g
ICAgQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fYXV0b1N0YXJ0VGFibGUu
ZW5kKCk7Ci0gICAgZm9yIChBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F1
dG9TdGFydFRhYmxlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoOjpjb25zdF9pdGVyYXRvciBtYXBFbmQgPSBpdC0+dmFsdWUuZW5k
KCk7Ci0gICAgICAgIGZvciAoUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRlcmF0
b3IgbWFwSXQgPSBpdC0+dmFsdWUuYmVnaW4oKTsgbWFwSXQgIT0gbWFwRW5kOyArK21hcEl0KQot
ICAgICAgICAgICAgY29weU1hcC5zZXQobWFwSXQtPmtleSwgbWFwSXQtPnZhbHVlKTsKLSAgICB9
CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGtleU9yaWdpbkhhc2ggOiBtX2F1dG9TdGFydFRhYmxl
LmdldChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpCisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgb3JpZ2luSGFzaCA6IGtleU9yaWdpbkhhc2gudmFsdWUpCisgICAgICAgICAgICBjb3B5
TWFwLnNldChvcmlnaW5IYXNoLmtleSwgb3JpZ2luSGFzaC52YWx1ZSk7CiAgICAgcmV0dXJuIGNv
cHlNYXA7CiB9CiAKIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXI6OmF1dG9TdGFydE9yaWdpbnNUYWJsZUNvcHkoKSBjb25zdAogewogICAgIElt
bXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwotICAgIEF1dG9TdGFydFRhYmxlOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX2F1dG9TdGFydFRhYmxlLmVuZCgpOworCiAgICAgZG91YmxlIG5v
dyA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgZm9yIChBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
IGZvciAoY29uc3QgYXV0byYgc3RyaW5nT3JpZ2luSGFzaCA6IG1fYXV0b1N0YXJ0VGFibGUuZ2V0
KFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSkgewogICAgICAgICBJbW11dGFibGVEaWN0
aW9uYXJ5OjpNYXBUeXBlIGhhc2hNYXA7Ci0gICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2g6OmNvbnN0X2l0ZXJhdG9yIHZhbHVlRW5kID0gaXQtPnZhbHVlLmVuZCgpOwotICAgICAgICBm
b3IgKFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0ZXJhdG9yIHZhbHVlSXQgPSBp
dC0+dmFsdWUuYmVnaW4oKTsgdmFsdWVJdCAhPSB2YWx1ZUVuZDsgKyt2YWx1ZUl0KSB7Ci0gICAg
ICAgICAgICBpZiAobm93ID4gdmFsdWVJdC0+dmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBoYXNoTWFwLnNldChTdHJpbmc6Om51bWJlcih2YWx1ZUl0LT5rZXkp
LCBBUEk6OkRvdWJsZTo6Y3JlYXRlKHZhbHVlSXQtPnZhbHVlKSk7Ci0gICAgICAgIH0KLQorICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbkhhc2ggOiBzdHJpbmdPcmlnaW5IYXNoLnZhbHVl
KQorICAgICAgICAgICAgaWYgKG5vdyA8PSBvcmlnaW5IYXNoLnZhbHVlKQorICAgICAgICAgICAg
ICAgIGhhc2hNYXAuc2V0KFN0cmluZzo6bnVtYmVyKG9yaWdpbkhhc2gua2V5KSwgQVBJOjpEb3Vi
bGU6OmNyZWF0ZShvcmlnaW5IYXNoLnZhbHVlKSk7CiAgICAgICAgIGlmIChoYXNoTWFwLnNpemUo
KSkKLSAgICAgICAgICAgIG1hcC5zZXQoaXQtPmtleSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6Y3Jl
YXRlKHN0ZDo6bW92ZShoYXNoTWFwKSkpOworICAgICAgICAgICAgbWFwLnNldChzdHJpbmdPcmln
aW5IYXNoLmtleSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKHN0ZDo6bW92ZShoYXNoTWFw
KSkpOwogICAgIH0KIAogICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoc3Rk
Ojptb3ZlKG1hcCkpOwpAQCAtMTIxLDMyICsxMTYsMzEgQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQ
cm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3QoSW1t
dXQKICAgICBtX2hhc2hUb09yaWdpbk1hcC5jbGVhcigpOwogICAgIG1fYXV0b1N0YXJ0VGFibGUu
Y2xlYXIoKTsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+IGhhc2hNYXA7CisgICAgSGFz
aE1hcDx1bnNpZ25lZCwgU3RyaW5nPiYgaGFzaFRvT3JpZ2luTWFwID0gbV9oYXNoVG9PcmlnaW5N
YXAuYWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2lnbmVkLCBT
dHJpbmc+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBdXRvU3RhcnRUYWJsZSYgYXN0ID0gbV9h
dXRvU3RhcnRUYWJsZS5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEF1dG9TdGFy
dFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1h
cFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHRhYmxlLm1hcCgpLmVuZCgpOwotICAgIGZvciAo
SW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0YWJsZS5t
YXAoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8mIHN0ckRpY3Qg
OiB0YWJsZS5tYXAoKSkgewogICAgICAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoIGhhc2hl
czsKLSAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeSogaGFzaGVzRm9yUGFnZSA9IHN0YXRpY19j
YXN0PEltbXV0YWJsZURpY3Rpb25hcnkqPihpdC0+dmFsdWUuZ2V0KCkpOwotICAgICAgICBJbW11
dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBoYXNoRW5kID0gaGFzaGVz
Rm9yUGFnZS0+bWFwKCkuZW5kKCk7Ci0gICAgICAgIGZvciAoSW1tdXRhYmxlRGljdGlvbmFyeTo6
TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaGFzaEl0ID0gaGFzaGVzRm9yUGFnZS0+bWFwKCkuYmVn
aW4oKTsgaGFzaEl0ICE9IGhhc2hFbmQ7ICsraGFzaEl0KSB7CisgICAgICAgIGZvciAoYXV0byYg
aGFzaFRpbWUgOiBzdGF0aWNfY2FzdDxJbW11dGFibGVEaWN0aW9uYXJ5Kj4oc3RyRGljdC52YWx1
ZS5nZXQoKSktPm1hcCgpKSB7CiAgICAgICAgICAgICBib29sIG9rOwotICAgICAgICAgICAgdW5z
aWduZWQgaGFzaCA9IGhhc2hJdC0+a2V5LnRvVUludCgmb2spOworICAgICAgICAgICAgdW5zaWdu
ZWQgaGFzaCA9IGhhc2hUaW1lLmtleS50b1VJbnQoJm9rKTsKICAgICAgICAgICAgIGlmICghb2sp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChoYXNoSXQtPnZh
bHVlLT50eXBlKCkgIT0gQVBJOjpEb3VibGU6OkFQSVR5cGUpCisgICAgICAgICAgICBpZiAoaGFz
aFRpbWUudmFsdWUtPnR5cGUoKSAhPSBBUEk6OkRvdWJsZTo6QVBJVHlwZSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgZG91YmxlIGV4cGlyYXRpb25UaW1lID0gc3Rh
dGljX2Nhc3Q8QVBJOjpEb3VibGUqPihoYXNoSXQtPnZhbHVlLmdldCgpKS0+dmFsdWUoKTsKKyAg
ICAgICAgICAgIGRvdWJsZSBleHBpcmF0aW9uVGltZSA9IHN0YXRpY19jYXN0PEFQSTo6RG91Ymxl
Kj4oaGFzaFRpbWUudmFsdWUuZ2V0KCkpLT52YWx1ZSgpOwogICAgICAgICAgICAgaWYgKCFpc0V4
cGlyYXRpb25UaW1lQWNjZXB0YWJsZShleHBpcmF0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgICAgIGhhc2hlcy5zZXQoaGFzaCwgZXhwaXJhdGlvblRpbWUp
OwogICAgICAgICAgICAgaGFzaE1hcC5zZXQoaGFzaCwgZXhwaXJhdGlvblRpbWUpOwotICAgICAg
ICAgICAgbV9oYXNoVG9PcmlnaW5NYXAuc2V0KGhhc2gsIGl0LT5rZXkpOworICAgICAgICAgICAg
aGFzaFRvT3JpZ2luTWFwLnNldChoYXNoLCBzdHJEaWN0LmtleSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIWhhc2hlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2F1dG9TdGFydFRhYmxl
LnNldChpdC0+a2V5LCBoYXNoZXMpOworICAgICAgICAgICAgYXN0LnNldChzdHJEaWN0LmtleSwg
aGFzaGVzKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6UmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoaGFzaE1h
cCkpOwpAQCAtMTU1LDI0ICsxNDksMzEgQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6
c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3QoSW1tdXQKIHZvaWQg
UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNBcnJheShBUEk6OkFy
cmF5JiBvcmlnaW5MaXN0KQogewogICAgIG1fYXV0b1N0YXJ0T3JpZ2lucy5jbGVhcigpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBsZW5ndGggPSBvcmlnaW5MaXN0LnNpemUoKTsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIGlmIChvcmlnaW5MaXN0LmF0KGkpLT50eXBlKCkgIT0gQVBJOjpT
dHJpbmc6OkFQSVR5cGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9hdXRvU3Rh
cnRPcmlnaW5zLmFwcGVuZChzdGF0aWNfY2FzdDxBUEk6OlN0cmluZyo+KG9yaWdpbkxpc3QuYXQo
aSkpLT5zdHJpbmcoKSk7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgc3RyaW5nIDogb3Jp
Z2luTGlzdC5lbGVtZW50c09mVHlwZTxBUEk6OlN0cmluZz4oKSkKKyAgICAgICAgbV9hdXRvU3Rh
cnRPcmlnaW5zLmFwcGVuZChzdHJpbmctPnN0cmluZygpKTsKIH0KIAotdm9pZCBQbHVnSW5BdXRv
U3RhcnRQcm92aWRlcjo6ZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5P
cmlnaW5IYXNoKQordm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6ZGlkUmVjZWl2ZVVzZXJJ
bnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBTZXNzaW9uSUQgc2Vzc2lvbklE
KQogewotICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9oYXNoVG9PcmlnaW5NYXAuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICBpZiAoaXQgPT0g
bV9oYXNoVG9PcmlnaW5NYXAuZW5kKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgSGFzaE1h
cDx1bnNpZ25lZCwgU3RyaW5nPj46OmNvbnN0X2l0ZXJhdG9yIHNlc3Npb25JdGVyYXRvciA9IG1f
aGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbklEKTsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdDsKKyAgICBib29sIGNvbnRhaW5zID0gZmFsc2U7Cisg
ICAgaWYgKHNlc3Npb25JdGVyYXRvciAhPSBtX2hhc2hUb09yaWdpbk1hcC5lbmQoKSkgeworICAg
ICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsK
KyAgICAgICAgY29udGFpbnMgPSBpdCAhPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgpOwor
ICAgIH0KKyAgICBpZiAoIWNvbnRhaW5zKSB7CisgICAgICAgIHNlc3Npb25JdGVyYXRvciA9IG1f
aGFzaFRvT3JpZ2luTWFwLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAg
ICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsK
KyAgICAgICAgaWYgKGl0ID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCkpIHsKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgZG91YmxlIG5ld0V4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRp
bWVGcm9tTm93KCk7Ci0gICAgbV9hdXRvU3RhcnRUYWJsZS5maW5kKGl0LT52YWx1ZSktPnZhbHVl
LnNldChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9uVGltZSk7Ci0gICAgbV9jb250ZXh0
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUpKTsK
KyAgICBtX2F1dG9TdGFydFRhYmxlLmFkZChzZXNzaW9uSUQsIEF1dG9TdGFydFRhYmxlKCkpLml0
ZXJhdG9yLT52YWx1ZS5hZGQoaXQtPnZhbHVlLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKCkp
Lml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUp
OworICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gsIG5ld0V4
cGlyYXRpb25UaW1lLCBzZXNzaW9uSUQpKTsKICAgICBtX2NvbnRleHQtPmNsaWVudCgpLnBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlc0NoYW5nZWQobV9jb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyLmgKaW5kZXggYzNiMzkwMi4uNTQyZDBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyX2gKICNkZWZp
bmUgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SURIYXNoLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00NCw2ICs0NSw3IEBAIGNsYXNzIEltbXV0
YWJsZURpY3Rpb25hcnk7CiBjbGFzcyBXZWJDb250ZXh0OwogCiB0eXBlZGVmIEhhc2hNYXA8dW5z
aWduZWQsIGRvdWJsZT4gUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDsKK3R5cGVkZWYgSGFzaE1h
cDxXZWJDb3JlOjpTZXNzaW9uSUQsIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g+IFNlc3Npb25Q
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoOwogdHlwZWRlZiBWZWN0b3I8U3RyaW5nPiBQbHVnSW5B
dXRvU3RhcnRPcmlnaW5zOwogCiBjbGFzcyBQbHVnSW5BdXRvU3RhcnRQcm92aWRlciB7CkBAIC01
MSw4ICs1Myw4IEBAIGNsYXNzIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyIHsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcihXZWJDb250ZXh0Kik7CiAKLSAgICB2
b2lkIGFkZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50ZXJhY3Rp
b24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgdm9pZCBhZGRBdXRvU3RhcnRPcmln
aW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFz
aCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50ZXJhY3Rp
b24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAogICAg
IFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gYXV0b1N0YXJ0T3JpZ2luc1RhYmxlQ29w
eSgpIGNvbnN0OwogICAgIHZvaWQgc2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlKEltbXV0YWJsZURp
Y3Rpb25hcnkmKTsKQEAgLTY4LDkgKzcwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBdXRv
U3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dGFibGVEaWN0aW9uYXJ5
Jiwgc3RkOjpmdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0aW9uVGltZXN0YW1wKT4pOwogCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCwgQ2Fz
ZUZvbGRpbmdIYXNoPiBBdXRvU3RhcnRUYWJsZTsKLSAgICBBdXRvU3RhcnRUYWJsZSBtX2F1dG9T
dGFydFRhYmxlOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEF1dG9T
dGFydFRhYmxlPiBTZXNzaW9uQXV0b1N0YXJ0VGFibGU7CisgICAgU2Vzc2lvbkF1dG9TdGFydFRh
YmxlIG1fYXV0b1N0YXJ0VGFibGU7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+IG1f
aGFzaFRvT3JpZ2luTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFw
PHVuc2lnbmVkLCBTdHJpbmc+PiBtX2hhc2hUb09yaWdpbk1hcDsKIAogICAgIFBsdWdJbkF1dG9T
dGFydE9yaWdpbnMgbV9hdXRvU3RhcnRPcmlnaW5zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAppbmRleCAyOGE4NDg0Li42YzliMjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0xMjk0LDE0ICsxMjk0LDE0IEBAIHZvaWQgV2Vi
Q29udGV4dDo6c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBm
bGFnKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SmF2
YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoZmxhZykpOwogfQogCi12b2lkIFdl
YkNvbnRleHQ6OmFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdl
T3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQordm9pZCBXZWJDb250ZXh0OjphZGRQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWdu
ZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBtX3BsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyLmFkZEF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1
Z0luT3JpZ2luSGFzaCk7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hZGRBdXRvU3Rh
cnRPcmlnaW5IYXNoKHBhZ2VPcmlnaW4sIHBsdWdJbk9yaWdpbkhhc2gsIHNlc3Npb25JRCk7CiB9
CiAKLXZvaWQgV2ViQ29udGV4dDo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoKQordm9pZCBXZWJDb250ZXh0OjpwbHVnSW5EaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5kaWRSZWNlaXZlVXNlcklu
dGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uSUQp
OwogfQogCiBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYkNvbnRleHQ6OnBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaAppbmRleCA1MmIyNTc1Li4wZTVhOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgKQEAgLTQxNiw4ICs0MTYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdp
c3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGFkZFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rp
b24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgdm9pZCBhZGRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3Jp
Z2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVV
c2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lv
bklEKTsKIAogICAgIHZvaWQgc2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5tZXNzYWdlcy5pbgppbmRleCAxYzNjMzUwLi4yZTRmNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgpAQCAtNTksNiArNTksNiBAQCBt
ZXNzYWdlcyAtPiBXZWJDb250ZXh0IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgIyBQ
bHVnLWluIG1lc3NhZ2VzLgotICAgIHZvaWQgQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChT
dHJpbmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCkKLSAgICB2b2lkIFBsdWdJbkRpZFJlY2Vp
dmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFzaCkKKyAgICB2b2lkIEFkZFBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2goU3RyaW5nIHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgdm9pZCBQbHVnSW5EaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggNTkzZGQzZi4uNDVhNmY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTczNiw3ICsxNzM2LDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCkKICAgICBTdHJpbmcgcGx1Z2lu
T3JpZ2luID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKS5ob3N0KCk7CiAgICAgU3Ry
aW5nIG1pbWVUeXBlID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRNaW1lVHlwZSgpOwogCi0g
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihw
YWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBhZ2VPcmlnaW4sIHBsdWdpbk9y
aWdpbiwgbWltZVR5cGUsIHBsdWdJbkltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnNl
c3Npb25JRCgpKTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpzaG91bGRDcmVhdGVUcmFuc2llbnRQ
YWludGluZ1NuYXBzaG90KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcAppbmRleCA4NTRk
NzczLi5lMzU1OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCkBAIC01Miw5ICs1Miw5IEBA
IGJvb2wgV2ViUGx1Z0luQ2xpZW50OjpzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0
cmluZyYgcGFnZU9yaWdpbiwgY29uc3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCku
c2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihtX3BhZ2UsIHBhZ2VPcmlnaW4sIHBsdWdp
bk9yaWdpbiwgbWltZVR5cGUpOwogfQogCi12b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRG
cm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5P
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit2b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlk
U3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkU3RhcnRGcm9t
T3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihwYWdlT3JpZ2luLCBwbHVnaW5P
cmlnaW4sIG1pbWVUeXBlLCBzZXNzaW9uSUQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdJbkNsaWVudC5oCmluZGV4IDUzMTAyOGEuLjAyYjhhY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5D
bGllbnQuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQbHVnSW5DbGllbnRfaAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9QbHVnSW5DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Np
b25JRC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksNyArNDAsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CiAgICAgdmlydHVh
bCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmln
aW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTI2ZWYxNS4uYTI5YmRkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xOTcsNiArMTk3LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYg
VVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBhZGRTdXBwbGVtZW50
PFdlYlNvdXBSZXF1ZXN0TWFuYWdlcj4oKTsKICNlbmRpZgorICAgIG1fcGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgSGFzaE1hcDx1
bnNpZ25lZCwgZG91YmxlPigpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplUHJv
Y2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCkBAIC03MjYsMTEgKzcyNywyMiBAQCBzdGF0aWMgdW5zaWduZWQgaGFzaEZvclBsdWdJbk9y
aWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1ZwogICAgIHJl
dHVybiBoYXNoZXIuaGFzaCgpOwogfQogCi1ib29sIFdlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQorYm9vbCBXZWJQcm9jZXNz
Ojppc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwg
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQocGx1
Z0luT3JpZ2luSGFzaCk7Ci0gICAgaWYgKGl0ID09IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpT
ZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+Ojpjb25zdF9pdGVyYXRvciBzZXNz
aW9uSXRlcmF0b3IgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKHNlc3Npb25J
RCk7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0b3IgaXQ7Cisg
ICAgYm9vbCBjb250YWlucyA9IGZhbHNlOworCisgICAgaWYgKHNlc3Npb25JdGVyYXRvciAhPSBt
X3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkgeworICAgICAgICBpdCA9IHNlc3Np
b25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAgY29udGFp
bnMgPSBpdCAhPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgpOworICAgIH0KKyAgICBpZiAo
IWNvbnRhaW5zKSB7CisgICAgICAgIHNlc3Npb25JdGVyYXRvciA9IG1fcGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAg
ICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAg
ICAgICAgaWYgKGl0ID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJldHVybiBjdXJyZW50VGltZSgpIDwgaXQtPnZh
bHVlOwogfQogCkBAIC03NDgsMTAgKzc2MCwxMSBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFBs
dWdJbkF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaQog
I2VuZGlmCiAKICAgICAvLyBMYXN0bHkgY2hlY2sgYWdhaW5zdCB0aGUgbW9yZSBleHBsaWNpdCBo
YXNoIGxpc3QuCi0gICAgcmV0dXJuIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChoYXNoRm9y
UGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpKTsKKyAgICBi
b29sIHJldCA9IGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChoYXNoRm9yUGx1Z0luT3JpZ2lu
KHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpLCBwYWdlLT5zZXNzaW9uSUQoKSk7
CisgICAgcmV0dXJuIHJldDsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZy
b21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlk
U3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQp
CiB7CiAgICAgaWYgKHBhZ2VPcmlnaW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIExPRyhQbHVnaW5z
LCAiTm90IGFkZGluZyBlbXB0eSBwYWdlIG9yaWdpbiIpOwpAQCAtNzU5LDcgKzc3Miw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFn
ZU9yaWdpbiwgY29uc3QgU3RyaW5nCiAgICAgfQogCiAgICAgdW5zaWduZWQgcGx1Z0luT3JpZ2lu
SGFzaCA9IGhhc2hGb3JQbHVnSW5PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1l
VHlwZSk7Ci0gICAgaWYgKGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5I
YXNoKSkgeworICAgIGlmIChpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2lu
SGFzaCwgc2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUGx1Z2lucywgIkhhc2ggJXggYWxyZWFk
eSBleGlzdHMgYXMgYXV0by1zdGFydCBvcmlnaW4gKHJlcXVlc3QgZm9yICVzKSIsIHBsdWdJbk9y
aWdpbkhhc2gsIHBhZ2VPcmlnaW4udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC03NjgsMjUgKzc4MSwyNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFN0YXJ0
RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZwogICAgIC8v
IGNvbWVzIGJhY2sgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MuIFRlbXBvcmFyaWx5IGFkZCB0aGlz
IGhhc2ggdG8gdGhlIGxpc3Qgd2l0aCBhIHRoaXJ0eQogICAgIC8vIHNlY29uZCB0aW1lb3V0LiBU
aGF0IHdheSwgZXZlbiBpZiB0aGUgcGFyZW50IGRlY2lkZXMgbm90IHRvIGFkZCBpdCwgd2UnbGwg
b25seSBiZQogICAgIC8vIGluY29ycmVjdCBmb3IgYSBsaXR0bGUgd2hpbGUuCi0gICAgbV9wbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGN1cnJlbnRUaW1l
KCkgKyAzMCAqIDEwMDApOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChz
ZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRlcmF0b3ItPnZhbHVlLnNl
dChwbHVnSW5PcmlnaW5IYXNoLCBjdXJyZW50VGltZSgpICsgMzAgKiAxMDAwKTsKIAotICAgIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkFkZFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCksIDAp
OworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRl
eHQ6OkFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2lu
SGFzaCwgc2Vzc2lvbklEKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUgZXhw
aXJhdGlvblRpbWUpCit2b2lkIFdlYlByb2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lLCBT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIC8vIFdoZW4gY2FsbGVkLCBzb21lIHdlYiBwcm9j
ZXNzICh3aGljaCBhbHNvIG1pZ2h0IGJlIHRoaXMgb25lKSBhZGRlZCB0aGUgb3JpZ2luIGZvciBh
dXRvLXN0YXJ0aW5nLAogICAgIC8vIG9yIHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAg
Ly8gU2V0IHRoZSBiaXQgdG8gYXZvaWQgaGF2aW5nIHJlZHVuZGFudGx5IGNhbGwgaW50byB0aGUg
VUkgcHJvY2VzcyB1cG9uIHVzZXIgaW50ZXJhY3Rpb24uCi0gICAgbV9wbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKTsKKyAgICBt
X3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoc2Vzc2lvbklELCBIYXNoTWFwPHVuc2ln
bmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgZXhw
aXJhdGlvblRpbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzKGNvbnN0IEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mIGhhc2hlcykKIHsK
LSAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1h
cDx1bnNpZ25lZCwgZG91YmxlPiY+KGhhc2hlcykpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaGVzLmNsZWFyKCk7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRk
KFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+
KCkpLml0ZXJhdG9yLT52YWx1ZS5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91
YmxlPiY+KGhhc2hlcykpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVV
c2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBs
dWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1
Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNv
bnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewogICAgIGlmIChwYWdlT3JpZ2luLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNzk1LDEzICs4MDksMjQgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QKICAg
ICBpZiAoIXBsdWdJbk9yaWdpbkhhc2gpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhhc2hNYXA8
dW5zaWduZWQsIGRvdWJsZT46Oml0ZXJhdG9yIGl0ID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICBpZiAoaXQgPT0gbV9wbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj46OmNvbnN0X2l0ZXJh
dG9yIHNlc3Npb25JdGVyYXRvciA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQo
c2Vzc2lvbklEKTsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Ojpjb25zdF9pdGVyYXRv
ciBpdDsKKyAgICBib29sIGNvbnRhaW5zID0gZmFsc2U7CisgICAgaWYgKHNlc3Npb25JdGVyYXRv
ciAhPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkgeworICAgICAgICBpdCA9
IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAg
Y29udGFpbnMgPSBpdCAhPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgpOworICAgIH0KKyAg
ICBpZiAoIWNvbnRhaW5zKSB7CisgICAgICAgIHNlc3Npb25JdGVyYXRvciA9IG1fcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwor
ICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNo
KTsKKyAgICAgICAgaWYgKGl0ID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGl0LT52YWx1ZSAtIGN1cnJlbnRUaW1l
KCkgPiBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVVwZGF0ZVRocmVzaG9sZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQ29udGV4dDo6UGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5Pcmln
aW5IYXNoKSwgMCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQ29udGV4dDo6UGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5Pcmln
aW5IYXNoLCBzZXNzaW9uSUQpLCAwKTsKIH0KIAogc3RhdGljIHZvaWQgZnJvbUNvdW50ZWRTZXRU
b0hhc2hNYXAoVHlwZUNvdW50U2V0KiBjb3VudGVkU2V0LCBIYXNoTWFwPFN0cmluZywgdWludDY0
X3Q+JiBtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGRiMGM4
ODkuLjA3ZTZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0z
Niw3ICszNiw3IEBACiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlZp
ZXdVcGRhdGVEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSURI
YXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExOSw4ICsxMTksOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhib29sKTsKIAogICAgIGJvb2wg
c2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBXZWJQYWdlKiwgY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7Ci0gICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7Ci0gICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNv
bnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOworICAgIHZvaWQgcGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNv
bnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBwbHVnSW5E
aWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNl
c3Npb25JRCk7CiAKICAgICBib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7IH0KIApAQCAtMjEyLDggKzIxMiw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9k
ZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKIAotICAgIGJvb2wgaXNQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwotICAg
IHZvaWQgZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5Pcmln
aW5IYXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUpOworICAgIGJvb2wgaXNQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdlYkNvcmU6OlNlc3Npb25J
RCk7CisgICAgdm9pZCBkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBs
dWdJbk9yaWdpbkhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSwgV2ViQ29yZTo6U2Vzc2lvbklE
KTsKICAgICB2b2lkIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGNvbnN0IEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT4mIGhhc2hlcyk7CiAKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2Fj
aGVNb2RlbChDYWNoZU1vZGVsKTsKQEAgLTI4NSw3ICsyODUsNyBAQCBwcml2YXRlOgogICAgIC8v
IEZJWE1FOiBXaGV0aGVyIHZpc2l0ZWQgbGlua3Mgc2hvdWxkIGJlIHRyYWNrZWQgb3Igbm90IHNo
b3VsZCBiZSBoYW5kbGVkIGluIHRoZSBVSSBwcm9jZXNzLgogICAgIGJvb2wgbV9zaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rczsKIAotICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4gbV9wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnM7CiAKICAgICBib29s
IG1faGFzU2V0Q2FjaGVNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhNmZhNWUwLi5hODRlMzA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01NCw3ICs1
NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAK
ICAgICAjIFBsdWctaW5zLgotICAgIERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWlu
dDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lKQorICAgIERpZEFkZFBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lLCBXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzKEhhc2hNYXA8dWludDMyX3QsZG91YmxlPiBoYXNoZXMpCiAKICAgICB2b2lkIFN0YXJ0
TWVtb3J5U2FtcGxlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dG
aWxlSGFuZGxlLCBTdHJpbmcgc2FtcGxlTG9nRmlsZVBhdGgsIGRvdWJsZSBpbnRlcnZhbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230538</attachid>
            <date>2014-04-30 16:55:22 -0700</date>
            <delta_ts>2014-04-30 17:17:38 -0700</delta_ts>
            <desc>style</desc>
            <filename>privatesetting.07.diff</filename>
            <type>text/plain</type>
            <size>85379</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjN2QxZmI4Li4wZTI3NzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5p
dGlhbGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNl
c3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRv
IGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vz
c2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24u
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5n
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBz
ZXR0aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpnZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
Ojppc0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAzLTI0ICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEb3dubG9hZCBzdXBwb3J0IGJ5
IENGVVJMRG93bmxvYWRSZWYgdW5kZXIgVVNFKENGTkVUV09SSykuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXgg
YzlhNTM2Ni4uYmY3MzBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIGJvb2wg
RGF0YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKCkgY29uc3QKIHsKICAgICBpZiAo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAg
ICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdz
KCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0
YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+
cHJvdG9jb2woKSkpKQorICAgICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgKGRvY3VtZW50
LT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxv
d3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLT5wcm90b2NvbCgpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IGYwMGUwZWQuLjkzNTlkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xp
Y3kuaCIKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0xMjMzLDgg
KzEyMzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBVUkwm
IGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VAogICAgIGlmIChtX3NlbmRQcm9ncmVz
c0V2ZW50cykgCiAgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CiAKLSAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgYm9vbCBwcml2YXRl
TW9kZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwor
ICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBh
Z2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJy
b3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiAKICAgICAvLyBSZXNldCBkaXNwbGF5IG1vZGUgdG8g
Zm9yY2UgYSByZWNhbGN1bGF0aW9uIG9mIHdoYXQgdG8gc2hvdyBiZWNhdXNlIHdlIGFyZSByZXNl
dHRpbmcgdGhlIHBsYXllci4KQEAgLTUyMjMsOCArNTIyMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKQogICAgIGlmICghbV9wbGF5ZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCku
c2V0dGluZ3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdzIHx8IHNldHRpbmdz
LT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlTW9kZSA9IGRvY3Vt
ZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
OwogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRl
RGlkQ2hhbmdlKCVzKSIsIGJvb2xTdHJpbmcocHJpdmF0ZU1vZGUpKTsKICAgICBtX3BsYXllci0+
c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA2YzhjOWU5Li4zNzQwNzg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTM0OCw3ICsz
NDgsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlz
dG9yeVVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKIAogICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRl
ciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5z
ZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQcml2YWN5
ID0gbV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgY29uc3QgVVJM
JiBoaXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9y
eSgpOwogCiAgICAgaWYgKCFmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5pc0NsaWVudFJl
ZGlyZWN0KCkpIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAgICAgICBMT0co
SGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBs
b2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT50aXRs
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCi0gICAgYm9vbCBuZWVk
UHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cisg
ICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lv
bigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CkBAIC00MzMsNyArNDMzLDcg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QoKQogICAg
ICAgICBtX2N1cnJlbnRJdGVtLT5jbGVhclNjcm9sbFBvaW50KCk7CiAgICAgfQogCi0gICAgYm9v
bCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKCFoaXN0b3J5VVJM
LmlzRW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIEhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKICAgICBp
ZiAobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQor
ICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpAQCAtODQ3LDcgKzg0
Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAKICAgICBwYWdlLT5iYWNrRm9yd2FyZCgp
LmFkZEl0ZW0odG9wSXRlbS5yZWxlYXNlKCkpOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3Mo
KS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBhZGRWaXNpdGVkTGlu
aygqcGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CkBAIC04NjYsNyArODY2
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamUKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3Jt
RGF0YSgwKTsKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3JtQ29udGVudFR5cGUoU3RyaW5nKCkp
OwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkp
CisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA3OWZiZTRmLi5jOGMwMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGUqIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVGb3JNYWlu
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAg
aWYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWRvY3VtZW50TG9hZGVyLT5m
cmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlv
bkNhY2hlKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpKQorICAgIGlmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiAo
ZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8
fCAhZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnRyZWUo
KS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBjYWNoZVN0b3JhZ2Uo
KS5jYWNoZUdyb3VwRm9yVVJMKHVybCkpIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHBh
c3NlZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBk
aXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUtPnNldHRp
bmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRv
cCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLT5wYWdl
KCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCku
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9zdExpc3RlbmVyVGFz
ayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsK
ICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJST1JfRVZF
TlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIxOSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVS
TChGcmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+YXBwbGljYXRpb25DYWNoZSgpKTsKIAogICAgIC8vIERvbid0IGFjY2VzcyBh
bnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAo
ZnJhbWUtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFt
ZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYg
KGZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50
cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9z
dExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3Vt
ZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RVJST1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDM0
LDcgKzQzNCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUqIGZy
YW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAgLy8gRG9u
J3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVk
LgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwg
IWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlv
bkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkp
IHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2Fj
aGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewog
ICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSk7
CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7CiAgICAgICAgIEFT
U0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA5YzY5YmVmLi43
ZmU1NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjphYm9ydCgpCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQoKQogewotICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyLT5m
cmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkub2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkt
PnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBtX2RvY3Vt
ZW50TG9hZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdz
KCkub2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2Fk
ZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKIH0KIAogYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tlZEZvclJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDk0YWRhZTcuLmU0YWRlYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTIwNCw3ICsy
MDQsNyBAQCB2b2lkIEljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24oSWNv
bkxvYWREZWNpc2lvbiBpY29uTG9hZERlY2lzaW9uKQogICAgIEFTU0VSVChpY29uTG9hZERlY2lz
aW9uICE9IEljb25Mb2FkVW5rbm93bik7CiAKICAgICAvLyAgRklYTUUgKDxyZGFyOi8vcHJvYmxl
bS85MTY4NjA1PikgLSBXZSBzaG91bGQgc3VwcG9ydCBpbi1tZW1vcnktb25seSBwcml2YXRlIGJy
b3dzaW5nIGljb25zIGluIGFzeW5jaHJvbm91cyBpY29uIGRhdGFiYXNlIG1vZGUuCi0gICAgaWYg
KGljb25EYXRhYmFzZSgpLnN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpICYmIG1fZnJhbWUucGFn
ZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoaWNvbkRh
dGFiYXNlKCkuc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdlKCktPnVz
ZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpY29uTG9h
ZERlY2lzaW9uID09IEljb25Mb2FkTm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGIzYjE1ODku
LjJiMTE3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFBhZ2U6OlBh
Z2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRp
b25DYW5kaWRhdGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMg
Zm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0Jl
Zm9yZVVubG9hZEV2ZW50KDApCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoc3RkOjptb3ZlKHBh
Z2VDbGllbnRzLnZpc2l0ZWRMaW5rU3RvcmUpKQotICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklE
OjplbXB0eVNlc3Npb25JRCgpKQorICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpCiB7CiAgICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKIApAQCAtMTA3Niwx
OSArMTA3NiwxMiBAQCB2b2lkIFBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpCiAg
ICAgICAgIHZpZXdzW2ldLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9p
ZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpwcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAg
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0dGluZ3MtPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKTsKKyAgICAvLyBEb24ndCBhbGxvdyBjaGFuZ2luZyB0aGUgcHJpdmF0ZSBicm93
c2luZyBzdGF0ZSBpZiB3ZSBoYXZlIHNldCBhIHNlc3Npb24gSUQuCisgICAgQVNTRVJUKG1fc2Vz
c2lvbklEID09IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpIHx8IG1fc2Vzc2lvbklEID09
IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKIAotICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3Rh
dGVEaWRDaGFuZ2UoKTsKLQotICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEg
dmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcwotICAgIC8vIGZy
b20gYmVsb3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVp
ciBsaWZldGltZS4KLSAgICBhdXRvIHZpZXdzID0gcGx1Z2luVmlld3MoKTsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2aWV3cy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlld3NbaV0t
PnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKKyAg
ICBzZXRTZXNzaW9uSUQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA/IFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQog
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMTUxMCwxOSArMTUwMywyNyBAQCBWaXNpdGVkTGlu
a1N0b3JlJiBQYWdlOjp2aXNpdGVkTGlua1N0b3JlKCkKIAogU2Vzc2lvbklEIFBhZ2U6OnNlc3Np
b25JRCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2Vzc2lvbklELmlzVmFsaWQoKSkKLSAgICAgICAg
cmV0dXJuIG1fc2Vzc2lvbklEOworICAgIEFTU0VSVChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwog
Ci0gICAgaWYgKHNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICBy
ZXR1cm4gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCk7Ci0KLSAgICByZXR1cm4g
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcmV0dXJuIG1fc2Vzc2lvbklEOwog
fQogCiB2b2lkIFBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IEFTU0VSVChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25J
RDsKKyAgICBpZiAoc2Vzc2lvbklEICE9IG1fc2Vzc2lvbklEKSB7CisgICAgICAgIG1fc2Vzc2lv
bklEID0gc2Vzc2lvbklEOworCisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7
CisKKyAgICAgICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8g
ZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2VzCisgICAgICAgIC8vIGZyb20gYmVs
b3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZl
dGltZS4KKyAgICAgICAgYXV0byB2aWV3cyA9IHBsdWdpblZpZXdzKCk7CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpZXdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgdmll
d3NbaV0tPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSk7CisgICAgfQogfQogCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCBmZWMwMDJjLi5lODBhOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzEzLDcgKzMx
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsK
ICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwotICAgIHZvaWQgcHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIAogICAgIHZvaWQgc2V0RGVidWdn
ZXIoSlNDOjpEZWJ1Z2dlciopOwogICAgIEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1YmxpYzoKIAogICAg
IFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKICAgICB2b2lkIHNldFNlc3Npb25JRChTZXNz
aW9uSUQpOwotICAgIGJvb2wgaXNTZXNzaW9uSURTZXQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Np
b25JRC5pc1ZhbGlkKCk7IH0KKyAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKTsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgaW5pdEdyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IDM0NmIw
MTMuLmVhNDVlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBQYWdlQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHIKICAgICBpZiAoc291cmNlID09IE1lc3Nh
Z2VTb3VyY2U6OkNTUykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS5jaHJvbWUoKS5jbGll
bnQoKS5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgdXJsKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFBhZ2VDb25z
b2xlOjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsCiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3Vt
ZW50QXNTdHJpbmcobWVzc2FnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRN
ZXNzYWdlVG9Db25zb2xlKCZtX3BhZ2UsIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBleGVjLCBhcmd1bWVudHMpOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnVzZXNFcGhl
bWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChnb3RNZXNzYWdlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDMyYjVhN2YuLmM2MTFlNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xNzEsNyArMTcxLDYgQEAgU2V0dGluZ3M6OlNldHRpbmdz
KFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzSmF2
YUVuYWJsZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseShmYWxzZSkKLSAgICAsIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKICAgICAs
IG1fYXJlSW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hcmVQbHVnaW5zRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1faXNTY3JpcHRFbmFibGVkKGZhbHNlKQpAQCAtNDI5LDExICs0MjgsNyBAQCB2
b2lkIFNldHRpbmdzOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGFyZVBsdWdpbnNFbmFibGVkKQog
CiB2b2lkIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID09IHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Ci0gICAgbV9wYWdlLT5wcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTE2ZjBkYy4uZDQ3MzgwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIHB1YmxpYzoKICAgICAvLyAgLSBIVFRQ
IENvb2tpZXMKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9k
ZUJvb2wpCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwotICAgIGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7
CiAgICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1By
ZWZldGNoaW5nRW5hYmxlZDsgfQpAQCAtMzAxLDcgKzMwMCw2IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxG
aWxlcyA6IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7Ci0gICAg
Ym9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hcmVJbWFnZXNF
bmFibGVkIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAxOwogICAgIGJvb2wg
bV9pc1NjcmlwdEVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
aW5kZXggMjY4MDZmNi4uOTQ4YzM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5Q
TlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgUGFnZSogcGFnZSA9IG1f
cGFyZW50RnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFn
ZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgICAgICooKE5QQm9v
bCopdmFsdWUpID0gcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICAgICAgcmV0dXJu
IE5QRVJSX05PX0VSUk9SOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggYzFiMjM3Yy4uNDU0MWI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC04NSw3ICs4NSw3
IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKHZh
bHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGZyYW1lKCkuc2V0dGlu
Z3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkucGFnZSgpLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgc2l6ZSA9
IHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5jcHAKaW5kZXggYzQ4NGI5Ni4uODFiYWU2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2UuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBTdG9yYWdlOjpjb250YWlucyhj
b25zdCBTdHJpbmcmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAKIGJvb2wgU3RvcmFn
ZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYg
KCFtX2ZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5zdG9yYWdlVHlwZSgpID09IExvY2Fs
U3RvcmFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGE1YTVlNjkuLmU5MDgwNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9j
a0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Np
b25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMw
MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxh
Y2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3
aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxNC0wMy0yMyAg
SHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgTW92ZSBhbGwg
RUZMIHR5cGVkZWZzIGludG8gRWZsVHlwZWRlZnMuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IDU3NjU0NTguLmU3NWNkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgi
CkBAIC04MDAsNyArODAxLDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192
aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICNlbmRpZgogICAg
IHByaXYtPnNldHRpbmdzLnNjcmlwdHNDYW5BY2Nlc3NDbGlwYm9hcmQgPSBwYWdlU2V0dGluZ3Mu
amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgpICYmIHBhZ2VTZXR0aW5ncy5ET01QYXN0ZUFs
bG93ZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVUZXh0YXJlYXMgPSBwYWdlU2V0
dGluZ3MudGV4dEFyZWFzQXJlUmVzaXphYmxlKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0
ZUJyb3dzaW5nID0gcGFnZVNldHRpbmdzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBw
cml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBwcml2LT5wYWdlLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpOwogICAgIHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3NpbmcgPSBwYWdlU2V0dGlu
Z3MuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5zcGF0aWFsTmF2
aWdhdGlvbiA9IHBhZ2VTZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoKTsKICAgICBw
cml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBwYWdlU2V0dGluZ3MubG9jYWxTdG9yYWdlRW5h
YmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGFmM2QwZWYuLjQzZTY2MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9ja0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZv
bGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2Ug
cXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRo
IFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisK
IDIwMTQtMDMtMTggIEphZSBIeXVuIFBhcmsgIDxqYWVwYXJrQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0dUS11bQ01ha2VdIEZpeCBXZWJLaXQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCmluZGV4IDllN2VkYzQuLmJiOTgyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAK
QEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bQogCiAKICAgICBDcmVk
ZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3JhZ2VNb2RlOwotICAgIGlmIChjb3JlKHZp
ZXcpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoY29yZSh2
aWV3KS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgY3JlZGVudGlhbFN0b3JhZ2VN
b2RlID0gRGlzYWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBlbHNlCiAgICAgICAgIGNyZWRl
bnRpYWxTdG9yYWdlTW9kZSA9IEFsbG93UGVyc2lzdGVudFN0b3JhZ2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggZGI5YjcyMS4uODZlZmU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBV
bmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNpc3RzIHNvbGVs
eSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJDb3JlOjpTZXR0
aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lvbklEKCkuaXNF
cGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3Rv
cnlJdGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKToKKwogMjAxNC0wMy0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gRG93bmxvYWQgc3VwcG9ydCBieSBDRlVSTERvd25sb2FkUmVmIHVu
ZGVyIFVTRShDRk5FVFdPUkspLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1MTkyNjQwLi5lZTNjYTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkKICAgICBIaXN0b3J5
SXRlbSogaGlzdG9yeUl0ZW0gPSAwOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2Vi
RnJhbWUuZ2V0KCkpLT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFwYWdlLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgaGlzdG9yeUl0ZW0gPSBwYWdlLT5iYWNrRm9yd2Fy
ZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRl
eCAwZGI0ZjgwLi43MWFjZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTExMyw3
ICsxMTMsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9u
SUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAK
ICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCBhNzJmOWY0Li42MGQ5MjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUu
Y29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dp
bmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBsYWNlIHF1ZXJ5
aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgd2l0aCBQYWdl
OjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisKIDIwMTQtMDMtMjIgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHJpbmc6OmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODhkYzM1MS4uMjg0MDY3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpCiAgICAgV2ViVmlldyogd2ViVmll
dyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gd2ViVmll
dy0+cGFnZSgpKSB7Ci0gICAgICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkpCisgICAgICAgIGlmICghcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkK
ICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gcGFnZS0+YmFja0ZvcndhcmQoKS5jdXJyZW50SXRl
bSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAppbmRleCBiZjU5ZWU3Li43
MTMzOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFn
ZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBp
ZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSkKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNz
aW9uKCkpCiAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKIAogICAgIHJldHVybiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDEzN2Q2MTcuLjRkZTNkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBAQAorMjAxNC0w
My0xMSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJp
dmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
IENoYW5nZSB0byByZWZlcmVuY2UgY291bnRlZCBzZXNzaW9uLgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmFkZFNlc3Npb25SZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5oOiBSZW1vdmUgY29kZSBzaW5jZSBTZXNzaW9uVHJhY2tlciBp
bXBsZW1lbnRzIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbiBjcmVhdGlvbi4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW06IERpdHRvLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNw
cDogRGl0dG8uCisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOiBSZW1vdmUgcHJpdmF0ZSBicm93c2luZyBwYXJhbWV0ZXIsIHNpbmNl
IHNlc3Npb25zIGltcGxlbWVudCB0aGUgZnVuY3Rpb25hbGl0eSB3aXRob3V0IGEgZ2xvYmFsIHNl
dHRpbmcuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6
IFJlZmVyZW5jZSBjb3VudCBzZXNzaW9ucyBtYW51YWxseSAobmVlZGVkIGR1ZSB0byBjcm9zcy1w
cm9jZXNzIHJlZmVyZW5jZXMpLgorICAgICAgICAoV2ViS2l0OjpzdGF0aWNTZXNzaW9uQ291bnRl
cik6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjphZGRTZXNzaW9uUmVmZXJlbmNl
KToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnJlbW92ZVNlc3Npb25SZWZlcmVu
Y2UpOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uVHJhY2tlci5oOiBEaXR0by4KKyAgICAgICAg
KiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOiBDaGFuZ2UgUHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCB0byBMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDogRGl0dG8uCisgICAgICAgIChXS1ByZWZlcmVuY2Vz
U2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1Bh
Z2VQcml2YXRlTWFjLmNwcDoKKyAgICAgICAgKFdLUGFnZUlzVVJMS25vd25IU1RTSG9zdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06IE1lY2hhbmljYWxseSBj
aGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdlOjpzZXNzaW9u
SUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ByaXZhdGVCcm93c2lu
Z0VuYWJsZWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHA6IERp
dHRvLgorICAgICAgICAoZXdrX3NldHRpbmdzX3ByaXZhdGVfYnJvd3NpbmdfZW5hYmxlZF9zZXQp
OgorICAgICAgICAoZXdrX3NldHRpbmdzX3ByaXZhdGVfYnJvd3NpbmdfZW5hYmxlZF9nZXQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcDogRGl0dG8uCisg
ICAgICAgICh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKToKKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3NpbmcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDogQ2hhbmdlIHRvIHJlZmVyZW5jZSBjb3Vu
dGVkIHNlc3Npb25zLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjplbnN1cmVOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OndpbmRvd1NlcnZlckNvbm5l
Y3Rpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjppbmNyZW1l
bnRQcml2YXRlQnJvd3NpbmdDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRl
Y3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6c29tZVBhZ2VJc1ByaXZhdGVCcm93c2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpj
cmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93
c2luZyk6IEltcGxlbWVudCB1c2luZyByZWZlcmVuY2UgY291bnQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkljb25EYXRhYmFzZS5jcHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29u
RGF0YWJhc2U6OnNldERhdGFiYXNlUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KTog
RG9uJ3Qgc2VuZCBtZXNzYWdlIHRvIFdlYlBhZ2UgcHJvY2VzcyB0aGF0IGRvZXNuJ3QgeWV0IGV4
aXN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOiBDbGVh
biB1cCBzZXNzaW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNlc3Npb25J
bXBsKTogVHJhY2sgcmVmZXJlbmNlIGNvdW50IGFuZCBvcHRpb25hbGx5IHNlbmQgbWVzc2FnZSB0
byBXZWJQYWdlIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Vz
c2lvbik6IFNlbmQgbWVzc2FnZSB0byBXZWJQYWdlIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOiBTZXQgc2Vzc2lvbiBiYXNlZCBv
biBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBwcmVmZXJlbmNlLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6YWRkUGFnZSk6IFNlc3Npb24ga2Vl
cHMgdHJhY2sgb2YgcmVmZXJlbmNlIGNvdW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlczo6cmVtb3ZlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjp1cGRh
dGVCb29sVmFsdWVGb3JLZXkpOiBDaGFuZ2UgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCB0byBsZWdh
Y3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
czo6dXBkYXRlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nVmFsdWUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6IFJlZmVyZW5jZSBjb3VudCBzZXNzaW9uLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDogTWVjaGFuaWNhbGx5IGNoYW5n
ZSBTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OnNlc3Npb25JRCgp
LmlzRXBoZW1lcmFsKCkuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmlzUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOiBSZW1vdmUgY29kZSBzaW5jZSBTZXNzaW9uVHJh
Y2tlciBpbXBsZW1lbnRzIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbiBjcmVhdGlvbi4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lm1tOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVByZWZlcmVuY2VzKTogU2V0IHNlc3Npb24gdG8gbGVnYWN5IHByaXZhdGUgc2Vzc2lvbiBp
ZiBuZWVkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOiBSZW1vdmUgZW5zdXJlL2Rlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
IGFzIFBhZ2UgcmVmZXJlbmNlIGNvdW50cyBpdHMgc2Vzc2lvbnMuCisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKTogTWFrZSBzdXJlIGlkZW50aWZpZXIg
YmFzZSBpcyBzZXQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE0LTAzLTI0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEb3dubG9hZCBzdXBw
b3J0IGJ5IENGVVJMRG93bmxvYWRSZWYgdW5kZXIgVVNFKENGTkVUV09SSykuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZWQ4MzMy
YS4uNGQzMzFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcApAQCAtMTY2LDEwICsxNjYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogaW5zdGVhZCBv
ZiBoYW5kbGluZyB0aGlzIGhlcmUsIGEgbWVzc2FnZSBzaG91bGQgYmUgc2VudCBsYXRlciAoc2Nh
bGVzIHRvIG11bHRpcGxlIHNlc3Npb25zKQotICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQpCi0gICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsK
LQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAg
ICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7
CiAKQEAgLTIxOSwxNCArMjE1LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVy
ZW5jZShzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIFNl
c3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOworICAgIFNlc3Npb25UcmFj
a2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCBjN2MzYWVkLi40YzZiNTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEwOCw4ICsxMDgsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBpbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsK
ICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9p
ZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAg
dm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwor
ICAgIHZvaWQgYWRkU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZv
aWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQg
ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJ
RCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggNzQ5OTQ0OS4uMDk5NGE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKICNlbmRpZgog
Ci0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQotICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCisgICAgQWRkU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQorICAgIFJlbW92ZVNlc3Npb25SZWZlcmVuY2UoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKIAogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1
aW50NjRfdCBkb3dubG9hZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggZjVjY2NjMS4uZWJiN2Y2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oCkBAIC00MCw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmly
dHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUg
cGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyLgotICAgIHN0YXRp
YyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsK
LQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5k
ZXggNWI5ZWIzOC4uYzQ2ZjA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtODUsMTUg
Kzg1LDQgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICByZXR1cm4gV2ViS2l0OjpibG9j
a2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBB
U1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghU2Vz
c2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwotICAgIFNlc3Npb25U
cmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVh
dGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFz
ZSgpICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSkpOwotfQot
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKaW5kZXggNmRhNGQ2OC4uM2Uy
N2NlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcApAQCAtNDYsMTEgKzQ2
LDYgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCAxNDFiYTdhLi42YmNlYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCkBAIC0zOCw3ICszOCw2IEBAIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygpCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CiAg
ICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNhY2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwgZGlza0Nh
Y2hlRGlyZWN0b3J5OwogICAgIGVuY29kZXIgPDwgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwpAQCAtNjUsOCArNjQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbgogCiBib29s
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiByZXN1bHQp
CiB7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShy
ZXN1bHQuY2FjaGVNb2RlbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3RvcnkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKaW5kZXggNThhY2IzOS4uZGFkMTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC01MCw3ICs1MCw2IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBj
b25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCi0gICAgYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkOwogICAgIENhY2hlTW9kZWwgY2FjaGVNb2RlbDsKIAogICAgIFN0cmluZyBkaXNr
Q2FjaGVEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lv
blRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcApp
bmRleCBiZGNmZmI5Li42MGY0YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2Vzc2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJh
Y2tlci5jcHAKQEAgLTQxLDYgKzQxLDE0IEBAIHN0YXRpYyBIYXNoTWFwPFNlc3Npb25JRCwgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBzdGF0aWNTZXNzaW9uCiAgICAg
cmV0dXJuIG1hcC5nZXQoKTsKIH0KIAorc3RhdGljIEhhc2hNYXA8U2Vzc2lvbklELCB1aW50NjRf
dD4mIHN0YXRpY1Nlc3Npb25Db3VudGVyKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U2Vzc2lvbklELCB1aW50
NjRfdD4+IG1hcDsKKyAgICByZXR1cm4gbWFwLmdldCgpOworfQorCiBzdGF0aWMgSGFzaE1hcDxj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24qLCBTZXNzaW9uSUQ+JiBzdG9yYWdlU2Vzc2lvblRv
SUQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC04MSwyMCArODksNDEg
QEAgU2Vzc2lvbklEIFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uKQogICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvblRvSUQoKS5nZXQo
JnNlc3Npb24pOwogfQogCi12b2lkIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Np
b24pCit2b2lkIFNlc3Npb25UcmFja2VyOjphZGRTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0gICAgQVNTRVJUKHNlc3Npb25JRCAhPSBTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIEFTU0VS
VChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CisKKyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzdGF0aWNTZXNzaW9uQ291bnRlcigpLnNldChz
ZXNzaW9uSUQsIHN0YXRpY1Nlc3Npb25Db3VudGVyKCkuZ2V0KHNlc3Npb25JRCkgKyAxKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElk
ZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKSAr
ICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpOwogICAgIHN0b3Jh
Z2VTZXNzaW9uVG9JRCgpLnNldChzZXNzaW9uLmdldCgpLCBzZXNzaW9uSUQpOwogICAgIHN0YXRp
Y1Nlc3Npb25NYXAoKS5zZXQoc2Vzc2lvbklELCBzdGQ6Om1vdmUoc2Vzc2lvbikpOworICAgIHN0
YXRpY1Nlc3Npb25Db3VudGVyKCkuc2V0KHNlc3Npb25JRCwgMSk7CiB9CiAKLXZvaWQgU2Vzc2lv
blRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFNlc3Np
b25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoc3RhdGljU2Vzc2lvbk1h
cCgpLmNvbnRhaW5zKHNlc3Npb25JRCkpIHsKKworICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSk7CisKKyAgICBBU1NFUlQoc3RhdGljU2Vzc2lvbk1hcCgpLmNvbnRhaW5zKHNlc3Np
b25JRCkpOworCisgICAgdWludDY0X3QgY291bnRlciA9IHN0YXRpY1Nlc3Npb25Db3VudGVyKCku
Z2V0KHNlc3Npb25JRCk7CisKKyAgICBpZiAoY291bnRlciA9PSAxKSB7CiAgICAgICAgIHN0b3Jh
Z2VTZXNzaW9uVG9JRCgpLnJlbW92ZShzZXNzaW9uKHNlc3Npb25JRCkpOwogICAgICAgICBzdGF0
aWNTZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7Ci0gICAgfQorICAgICAgICBzdGF0aWNT
ZXNzaW9uQ291bnRlcigpLnJlbW92ZShzZXNzaW9uSUQpOworICAgIH0gZWxzZQorICAgICAgICBz
dGF0aWNTZXNzaW9uQ291bnRlcigpLnNldChzZXNzaW9uSUQsIGNvdW50ZXIgLSAxKTsKIH0KIAog
dm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2Vy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaAppbmRleCAwYjAzMDI5
Li5hMmM4OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaApAQCAtNDIs
OCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0SWRlbnRpZmll
ckJhc2UoKTsKICAgICBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzZXNz
aW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7Ci0gICAgc3Rh
dGljIHZvaWQgc2V0U2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95
U2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyB2b2lkIGFkZFNlc3Npb25S
ZWZlcmVuY2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVTZXNz
aW9uUmVmZXJlbmNlKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgc3RhdGljIHZvaWQgc2V0SWRl
bnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuaAppbmRleCA5YTUzMjZhLi5iZjM5ZGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTExMyw3ICsxMTMsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBtYWNybyhGcmFtZUZsYXR0ZW5pbmdFbmFibGVkLCBm
cmFtZUZsYXR0ZW5pbmdFbmFibGVkLCBCb29sLCBib29sLCBERUZBVUxUX0ZSQU1FX0ZMQVRURU5J
TkdfRU5BQkxFRCkgXAogICAgIG1hY3JvKERldmVsb3BlckV4dHJhc0VuYWJsZWQsIGRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oSmF2YVNjcmlw
dEV4cGVyaW1lbnRzRW5hYmxlZCwgamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCwgQm9vbCwg
Ym9vbCwgZmFsc2UpIFwKLSAgICBtYWNybyhQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKExlZ2FjeVBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oVGV4dEFyZWFzQXJlUmVzaXphYmxlLCB0ZXh0QXJl
YXNBcmVSZXNpemFibGUsIEJvb2wsIGJvb2wsIERFRkFVTFRfVEVYVF9BUkVBU19BUkVfUkVTSVpB
QkxFKSBcCiAgICAgbWFjcm8oSmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSwg
amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSwgQm9vbCwgYm9vbCwgREVGQVVM
VF9KQVZBU0NSSVBUX0NBTl9PUEVOX1dJTkRPV1NfQVVUT01BVElDQUxMWSkgXAogICAgIG1hY3Jv
KEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCwgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkLCBCb29s
LCBib29sLCB0cnVlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
cmVmZXJlbmNlcy5jcHAKaW5kZXggNDUzN2IxOS4uY2M2NzdiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtMzQxLDEyICszNDEs
MTIgQEAgV0tTdHJpbmdSZWYgV0tQcmVmZXJlbmNlc0NvcHlEZWZhdWx0VGV4dEVuY29kaW5nTmFt
ZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2UKIAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29s
IGVuYWJsZWQpCiB7Ci0gICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChlbmFibGVkKTsKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRMZWdh
Y3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCiBib29sIFdLUHJlZmVyZW5j
ZXNHZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKTsKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+bGVnYWN5UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiB2b2lkIFdLUHJlZmVyZW5jZXNTZXREZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5h
YmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQ
YWdlUHJpdmF0ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
UGFnZVByaXZhdGVNYWMuY3BwCmluZGV4IDZhOWRjYTQuLmM0M2Y3MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLmNw
cApAQCAtNDIsNyArNDIsNyBAQCBwaWRfdCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1Bh
Z2VSZWYgcGFnZVJlZikKIGJvb2wgV0tQYWdlSXNVUkxLbm93bkhTVFNIb3N0KFdLUGFnZVJlZiBw
YWdlLCBXS1VSTFJlZiB1cmwpCiB7CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0
b0ltcGwocGFnZSk7Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gd2ViUGFnZVBy
b3h5LT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsK
KyAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSB3ZWJQYWdlUHJveHktPnVzZXNFcGhl
bWVyYWxTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuY29u
dGV4dCgpLmlzVVJMS25vd25IU1RTSG9zdCh0b0ltcGwodXJsKS0+c3RyaW5nKCksIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCA2MjE2NjBiLi43MmU4OTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtODgxLDEyICs4ODEs
MTIgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5TRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9p
ZCogZGF0YSkKIAogLSAoQk9PTClfcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZAogewotICAgIHJldHVy
biBbX2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMtPnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+
X3ByZWZlcmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKIC0gKHZv
aWQpX3NldFByaXZhdGVCcm93c2luZ0VuYWJsZWQ6KEJPT0wpcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZAogewotICAgIFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy0+c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKKyAgICBbX2Nv
bmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMtPnNldExlZ2FjeVByaXZhdGVC
cm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiB9CiAKIC0gKEJPT0wpX2Fs
bG93c1JlbW90ZUluc3BlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcAppbmRleCBmYWVjYWY2Li40NGIyZjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3Bw
CkBAIC0yMDkzLDcgKzIwOTMsNyBAQCBnYm9vbGVhbiB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9wcml2YXRlX2Jyb3dzaW5nKFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncykKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpLCBGQUxTRSk7CiAK
LSAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+bGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiAvKioKQEAgLTIxMDgsMTEgKzIxMDgsMTEg
QEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKFdlYktp
dFNldHRpbmdzKiBzZXR0aW5ncywgZ2Jvb2wKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19TRVRUSU5HUyhzZXR0aW5ncykpOwogCiAgICAgV2ViS2l0U2V0dGluZ3NQcml2YXRlKiBwcml2
ID0gc2V0dGluZ3MtPnByaXY7Ci0gICAgYm9vbCBjdXJyZW50VmFsdWUgPSBwcml2LT5wcmVmZXJl
bmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wgY3VycmVudFZhbHVlID0g
cHJpdi0+cHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICBp
ZiAoY3VycmVudFZhbHVlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByaXYt
PnByZWZlcmVuY2VzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOworICAgIHBy
aXYtPnByZWZlcmVuY2VzLT5zZXRMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQp
OwogICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcHJpdmF0
ZS1icm93c2luZyIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAK
aW5kZXggYzdjNTFlMy4uYTcxYjBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcApAQCAtMzg4LDggKzM4OCw2IEBAIHZvaWQgV2ViQ29udGV4dDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKQogCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKIAotICAgIHBhcmFtZXRlcnMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IFdlYlByZWZl
cmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0KICAgICBwYXJhbWV0
ZXJzLmNhY2hlTW9kZWwgPSBtX2NhY2hlTW9kZWw7CiAKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeSgpOwpAQCAtNDY0LDQ0ICs0NjIsMzAgQEAg
dm9pZCBXZWJDb250ZXh0OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm8KIH0KICNlbmRpZgogCi12b2lkIFdlYkNvbnRleHQ6Ondp
bGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKK3ZvaWQgV2ViQ29udGV4dDo6d2luZG93U2Vy
dmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNvbnRl
eHQqPiYgY29udGV4dHMgPSBhbGxDb250ZXh0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBj
b3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGNvbnRleHRz
W2ldLT5zZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKHRydWUp
OworICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkKKyAgICAgICAgbV9wcm9jZXNz
ZXNbaV0tPndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBX
ZWJDb250ZXh0Ojp3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKK3ZvaWQgV2ViQ29udGV4
dDo6aW5jcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKQogewotICAgIGNvbnN0IFZlY3RvcjxX
ZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gYWxsQ29udGV4dHMoKTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBj
b250ZXh0c1tpXS0+c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChmYWxzZSk7CisgICAgaWYgKCFtX3ByaXZhdGVCcm93c2luZ0NvdW50KQorICAgICAgICBzb21l
UGFnZUlzUHJpdmF0ZUJyb3dzaW5nKHRydWUpOworICAgIG1fcHJpdmF0ZUJyb3dzaW5nQ291bnQr
KzsKIH0KIAotdm9pZCBXZWJDb250ZXh0Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFu
Z2VkKCkKK3ZvaWQgV2ViQ29udGV4dDo6ZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKQog
ewotICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkKLSAgICAgICAgbV9wcm9jZXNz
ZXNbaV0tPndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3ByaXZh
dGVCcm93c2luZ0NvdW50LS07CisgICAgaWYgKCFtX3ByaXZhdGVCcm93c2luZ0NvdW50KQorICAg
ICAgICBzb21lUGFnZUlzUHJpdmF0ZUJyb3dzaW5nKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJDb250
ZXh0OjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKK3ZvaWQgV2ViQ29udGV4dDo6c29tZVBhZ2VJc1ByaXZh
dGVCcm93c2luZyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgbV9pY29uRGF0
YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7
Ci0KLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nl
c3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdF
bmFibGVkKQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV0
d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwg
MCk7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRUQoTkVUV09SS19QUk9DRVNTKQotCi0gICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOwotICAgIGVsc2UKLSAgICAgICAgc2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOwogfQogCiB2b2lkICgq
c19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSk7CkBAIC02
MzAsOSArNjE0LDYgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQ
cm9jZXNzKCkKICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRRT1Mo
d2ViUHJvY2Vzc0xhdGVuY3lRT1MoKSwgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKSksIDApOwog
I2VuZGlmCiAKLSAgICBpZiAoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRl
QnJvd3NpbmcoKSkKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSksIDApOwotCiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwogCiAgICAg
aWYgKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3Mp
IHsKQEAgLTc3OSw4ICs3NjAsNiBAQCBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4
dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYQogICAgICAgICBj
b25maWd1cmF0aW9uLnByZWZlcmVuY2VzID0gJmNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpOwogICAgIGlmICghY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQog
ICAgICAgICBjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBtX3Zpc2l0ZWRMaW5r
UHJvdmlkZXIuZ2V0KCk7Ci0gICAgaWYgKCFjb25maWd1cmF0aW9uLnNlc3Npb24pCi0gICAgICAg
IGNvbmZpZ3VyYXRpb24uc2Vzc2lvbiA9IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMtPnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSA/ICZBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9u
KCkgOiAmQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpOwogCiAgICAgUmVmUHRyPFdlYlBy
b2Nlc3NQcm94eT4gcHJvY2VzczsKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01v
ZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmgKaW5kZXggMmJlZDkwZS4uYTkzMDkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oCkBAIC0zMDQsOSArMzA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aW5kb3dT
ZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CiAKLSAgICBzdGF0aWMgdm9pZCB3aWxsU3Rh
cnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxTdG9wVXNpbmdQ
cml2YXRlQnJvd3NpbmcoKTsKLQogICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsU2Vzc2lvbihX
ZWJDb3JlOjpTZXNzaW9uSUQpOwogCiAjaWYgVVNFKFNPVVApCkBAIC0zNDAsNiArMzM3LDExIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChib29sKTsKIAorICAg
IHZvaWQgaW5jcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsKKyAgICB2b2lkIGRlY3JlbWVu
dFByaXZhdGVCcm93c2luZ0NvdW50KCk7CisKKyAgICBib29sIGFueVBhZ2VzQXJlVXNpbmdQcml2
YXRlQnJvd3NpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0NvdW50ID4gMDsg
fQorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTQyMSw3
ICs0MjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwog
ICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5P
cmlnaW5IYXNoKTsKIAotICAgIHZvaWQgc2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNvbWVQYWdlSXNQcml2YXRlQnJvd3Npbmco
Ym9vbCk7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAvLyBQbHVnaW5J
bmZvU3RvcmVDbGllbnQ6CkBAIC01MzYsNiArNTM4LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbV9idW5kbGVQYXJh
bWV0ZXJzOwogI2VuZGlmCisKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcm93c2luZ0NvdW50Owog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykljb25EYXRhYmFzZS5jcHAKaW5kZXggN2FkYWU4OS4uYTVmZDc4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBXZWJJY29uRGF0YWJhc2U6OnNldERhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAK
ICAgICAvLyBGSVhNRTogV2ViSWNvbkRhdGFiYXNlcyBhcmUgcGVyLVdlYkNvbnRleHQgYnV0IFdl
YkNvbnRleHQncyBkb24ndCBoYXZlIHRoZWlyIG93biBub3Rpb24gb2YgdGhlIGN1cnJlbnQgcHJp
dmF0ZSBicm93c2luZyBzZXR0aW5nLgogICAgIC8vIEFzIHdlIGNsZWFuIHVwIHByaXZhdGUgYnJv
d3NpbmcgdGhyb3VnaG91dCB0aGUgc3RhY2sgd2UgbmVlZCB0byBjbGVhbiBpdCB1cCBoZXJlLgot
ICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVm
ZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKKyAgICBtX2ljb25E
YXRhYmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQobV93ZWJDb250ZXh0LT5hbnlQ
YWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwogCiAgICAgaWYgKCFtX2ljb25EYXRhYmFz
ZUltcGwtPm9wZW4oZGlyZWN0b3J5TmFtZShwYXRoKSwgcGF0aEdldEZpbGVOYW1lKHBhdGgpKSkg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBvcGVuIFdlYktpdDIgaWNvbiBkYXRhYmFz
ZSBvbiBkaXNrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDZiMzUzMzUuLjZlZmE0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJFbWJlZGRlZE9iamVjdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1Nlc3Npb25JREhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CkBAIC0zMDQsNyArMzA1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1f
aXNUcmFja2luZ1RvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdl
SUQpCi0gICAgLCBtX3Nlc3Npb24oKmNvbmZpZ3VyYXRpb24uc2Vzc2lvbikKKyAgICAsIG1fc2Vz
c2lvbihBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkpCiAgICAgLCBtX2lzUGFnZVN1c3Bl
bmRlZChmYWxzZSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIG1fYWxsb3dz
UmVtb3RlSW5zcGVjdGlvbih0cnVlKQpAQCAtMzgwLDcgKzM4MSw4IEBAIFdlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcywgdWluCiAgICAgLy8gRklYTUU6IElmIHdlIGV2ZXIgZXhwb3NlIHRoZSBzZXNzaW9uIHN0
b3JhZ2Ugc2l6ZSBhcyBhIHByZWZlcmVuY2UsIHdlIG5lZWQgdG8gcGFzcyBpdCBoZXJlLgogICAg
IElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQ
cm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nID8gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkgOiBu
dWxscHRyOwogICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnN0b3JhZ2VNYW5hZ2VyKCkuY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UobV9wYWdlSUQsIGNvbm5lY3Rpb24sIHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgc2V0U2Vzc2lvbigqY29uZmlndXJhdGlv
bi5zZXNzaW9uKTsKKyAgICBpZiAobV9wcmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpKQorICAgICAgICBzZXRTZXNzaW9uSW1wbChBUEk6OlNlc3Npb246OmxlZ2FjeVBy
aXZhdGVTZXNzaW9uKCksIGZhbHNlKTsKIH0KIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5
KCkKQEAgLTM5OSw2ICs0MDEsNyBAQCBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQogI2lm
bmRlZiBOREVCVUcKICAgICB3ZWJQYWdlUHJveHlDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlm
CisgICAgc2V0U2Vzc2lvbihBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkpOwogfQogCiBQ
bGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIo
KSBjb25zdApAQCAtNTMxLDE1ICs1MzQsMzAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNo
VG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKICAgICBt
X3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFNlc3Npb24oQVBJOjpTZXNzaW9uJiBzZXNzaW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OnNldFNlc3Npb25JbXBsKEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbiwgYm9vbCBzZW5kTWVz
c2FnZVRvUGFnZSkKIHsKLSAgICBtX3Nlc3Npb24gPSBzZXNzaW9uOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb24uZ2V0SUQoKSksIG1f
cGFnZUlEKTsKKyAgICBpZiAoc2Vzc2lvbi5nZXRJRCgpICE9IG1fc2Vzc2lvbi0+Z2V0SUQoKSkg
eworICAgICAgICBpZiAoc2VuZE1lc3NhZ2VUb1BhZ2UpCisgICAgICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25JRChzZXNzaW9uLmdldElEKCkpLCBt
X3BhZ2VJRCk7CisKKyAgICAgICAgaWYgKHNlc3Npb24uZ2V0SUQoKS5pc0VwaGVtZXJhbCgpICYm
ICFtX3Nlc3Npb24tPmdldElEKCkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vz
cy0+Y29udGV4dCgpLmluY3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KCk7CisgICAgICAgIGVs
c2UgaWYgKCFzZXNzaW9uLmdldElEKCkuaXNFcGhlbWVyYWwoKSAmJiBtX3Nlc3Npb24tPmdldElE
KCkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLmRlY3Jl
bWVudFByaXZhdGVCcm93c2luZ0NvdW50KCk7CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQotICAgIGlmIChzZXNzaW9uLmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+Y29u
dGV4dCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uLmdldElEKCkpKTsKKyAgICAgICAg
aWYgKG1fc2Vzc2lvbi0+aXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+Y29u
dGV4dCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShtX3Nlc3Npb24tPmdldElEKCkpKTsKKyAgICAgICAgaWYg
KHNlc3Npb24uaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgp
LnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkU2Vz
c2lvblJlZmVyZW5jZShzZXNzaW9uLmdldElEKCkpKTsKICNlbmRpZgorICAgICAgICBtX3Nlc3Np
b24gPSBzZXNzaW9uOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldFNlc3Npb24o
QVBJOjpTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIHNldFNlc3Npb25JbXBsKHNlc3Npb24sIHRy
dWUpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQpAQCAtMjEx
OCw2ICsyMTM2LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSgp
CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX3ByZWZl
cmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgJiYgbV9zZXNzaW9uLT5nZXRJ
RCgpID09IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQorICAgICAgICBzZXRTZXNzaW9u
KEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSk7CisgICAgZWxzZSBpZiAoIW1f
cHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSAmJiBtX3Nlc3Npb24t
PmdldElEKCkgPT0gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpCisgICAgICAg
IHNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpKTsKKwogI2lmIEVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQogICAgIGlmIChtX3ByZWZlcmVuY2VzLT5kZXZlbG9wZXJFeHRy
YXNFbmFibGVkKCkpCiAgICAgICAgIGluc3BlY3RvcigpLT5lbmFibGVSZW1vdGVJbnNwZWN0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzQ2NjIxNi4u
MWUwZWVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDIx
LDcgKzQyMSw2IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbiB7CiAgICAgV2ViUGFnZUdy
b3VwKiBwYWdlR3JvdXAgPSBudWxscHRyOwogICAgIFdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNl
cyA9IG51bGxwdHI7CiAgICAgVmlzaXRlZExpbmtQcm92aWRlciogdmlzaXRlZExpbmtQcm92aWRl
ciA9IG51bGxwdHI7Ci0gICAgQVBJOjpTZXNzaW9uKiBzZXNzaW9uID0gbnVsbHB0cjsKICAgICBX
ZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gbnVsbHB0cjsKIH07CiAKQEAgLTQ0MCw2ICs0Mzks
NyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VJRDsgfQogICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVy
biBtX3Nlc3Npb24tPmdldElEKCk7IH0KKyAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLT5nZXRJRCgpLmlzRXBoZW1lcmFsKCk7IH0KIAogICAg
IFdlYkZyYW1lUHJveHkqIG1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdl
dCgpOyB9CiAgICAgV2ViRnJhbWVQcm94eSogZm9jdXNlZEZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9mb2N1c2VkRnJhbWUuZ2V0KCk7IH0KQEAgLTEwNTQsNiArMTA1NCw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2V0U2Vz
c2lvbkltcGwoQVBJOjpTZXNzaW9uJiwgYm9vbCBzZW5kTWVzc2FnZVRvUGFnZSk7CisKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVy
ZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcApp
bmRleCAwZjdkYTc5Li5mZTVjOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cmVmZXJlbmNlcy5jcHAKQEAgLTMyLDEwICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci0vLyBGSVhNRTogTWFuaXB1bGF0aW5nIHRoaXMgdmFyaWFibGUgaXMgbm90IHRocmVhZCBzYWZl
LgotLy8gSW5zdGVhZCBvZiB0cmFja2luZyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGFzIGEgYm9v
bGVhbiBwcmVmZXJlbmNlLCB3ZSBzaG91bGQgbGV0IHRoZSBjbGllbnQgcHJvdmlkZSBzdG9yYWdl
IHNlc3Npb25zIGV4cGxpY2l0bHkuCi1zdGF0aWMgdW5zaWduZWQgcHJpdmF0ZUJyb3dzaW5nUGFn
ZUNvdW50OwotCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CkBAIC02MiwyNSAr
NTgsMTIgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6YWRkUGFnZShXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcm94eSkKIHsKICAgICBBU1NFUlQoIW1fcGFnZXMuY29udGFpbnMoJndlYlBhZ2VQcm94eSkp
OwogICAgIG1fcGFnZXMuYWRkKCZ3ZWJQYWdlUHJveHkpOwotCi0gICAgaWYgKHByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSkgewotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkK
LSAgICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7
Ci0KLSAgICAgICAgKytwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQ7Ci0gICAgfQogfQogCiB2b2lk
IFdlYlByZWZlcmVuY2VzOjpyZW1vdmVQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQog
ewogICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZ3ZWJQYWdlUHJveHkpKTsKICAgICBtX3Bh
Z2VzLnJlbW92ZSgmd2ViUGFnZVByb3h5KTsKLQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpIHsKLSAgICAgICAgLS1wcml2YXRlQnJvd3NpbmdQYWdlQ291bnQ7Ci0gICAgICAgIGlm
ICghcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50KQotICAgICAgICAgICAgV2ViQ29udGV4dDo6d2ls
bFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQcmVmZXJl
bmNlczo6dXBkYXRlKCkKQEAgLTk3LDggKzgwLDggQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBk
YXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmEK
IAogdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sIHZhbHVlKQogewotICAgIGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6
OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkgewotICAgICAgICB1cGRhdGVQcml2YXRlQnJv
d3NpbmdWYWx1ZSh2YWx1ZSk7CisgICAgaWYgKGtleSA9PSBXZWJQcmVmZXJlbmNlc0tleTo6bGVn
YWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSB7CisgICAgICAgIHVwZGF0ZUxlZ2FjeVBy
aXZhdGVCcm93c2luZ1ZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTI0LDI3ICsxMDcsMjAgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlRmxvYXRWYWx1ZUZv
cktleShjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQgdmFsdWUpCiAgICAgdXBkYXRlKCk7IC8vIEZJ
WE1FOiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hhbmdlZCBrZXkgYW5kIHZhbHVlLgogfQogCi12b2lk
IFdlYlByZWZlcmVuY2VzOjp1cGRhdGVQcml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKQor
dm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9v
bCB2YWx1ZSkKIHsKLSAgICBwbGF0Zm9ybVVwZGF0ZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpLCB2YWx1ZSk7Ci0KLSAgICB1bnNp
Z25lZCBwYWdlc0NoYW5nZWQgPSBtX3BhZ2VzLnNpemUoKTsKLSAgICBpZiAoIXBhZ2VzQ2hhbmdl
ZCkKLSAgICAgICAgcmV0dXJuOworICAgIHBsYXRmb3JtVXBkYXRlQm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5OjpsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5KCksIHZhbHVl
KTsKIAogICAgIGlmICh2YWx1ZSkgewotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VD
b3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dz
aW5nKCk7Ci0gICAgICAgIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCArPSBwYWdlc0NoYW5nZWQ7
Ci0gICAgfQotCi0gICAgdXBkYXRlKCk7IC8vIEZJWE1FOiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hh
bmdlZCBrZXkgYW5kIHZhbHVlLgotCi0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBBU1NFUlQo
cHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50ID49IHBhZ2VzQ2hhbmdlZCk7Ci0gICAgICAgIHByaXZh
dGVCcm93c2luZ1BhZ2VDb3VudCAtPSBwYWdlc0NoYW5nZWQ7Ci0gICAgICAgIGlmICghcHJpdmF0
ZUJyb3dzaW5nUGFnZUNvdW50KQotICAgICAgICAgICAgV2ViQ29udGV4dDo6d2lsbFN0b3BVc2lu
Z1ByaXZhdGVCcm93c2luZygpOworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VzKSB7
CisgICAgICAgICAgICBpZiAocGFnZS0+c2Vzc2lvbklEKCkgPT0gV2ViQ29yZTo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCkpCisgICAgICAgICAgICAgICAgcGFnZS0+c2V0U2Vzc2lvbihB
UEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkpOworICAgICAgICB9CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlcykgeworICAgICAgICAgICAg
aWYgKHBhZ2UtPnNlc3Npb25JRCgpID09IFdlYkNvcmU6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0
ZVNlc3Npb25JRCgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb24oQVBJOjpTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbigpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTY2LDkg
KzE0Miw0IEBAIEZPUl9FQUNIX1dFQktJVF9QUkVGRVJFTkNFKERFRklORV9QUkVGRVJFTkNFX0dF
VFRFUl9BTkRfU0VUVEVSUykKIAogI3VuZGVmIERFRklORV9QUkVGRVJFTkNFX0dFVFRFUl9BTkRf
U0VUVEVSUwogCi1ib29sIFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJy
b3dzaW5nKCkKLXsKLSAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVu
Y2VzLmgKaW5kZXggZGQ1ZTJkMS4uZjFlNWU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByZWZlcmVuY2VzLmgKQEAgLTY4LDggKzY4LDYgQEAgcHVibGljOgogICAgIC8vIEV4cG9z
ZWQgZm9yIFdlYktpdFRlc3RSdW5uZXIgdXNlIG9ubHkuCiAgICAgdm9pZCBmb3JjZVVwZGF0ZSgp
IHsgdXBkYXRlKCk7IH0KIAotICAgIHN0YXRpYyBib29sIGFueVBhZ2VzQXJlVXNpbmdQcml2YXRl
QnJvd3NpbmcoKTsKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJQcmVmZXJlbmNlcyhjb25z
dCBTdHJpbmcmKTsKICAgICBXZWJQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlcyYpOwpA
QCAtODksNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVEb3VibGVW
YWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHZhbHVlKTsKICAgICB2b2lkIHBs
YXRmb3JtVXBkYXRlRmxvYXRWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQgdmFs
dWUpOwogCi0gICAgdm9pZCB1cGRhdGVQcml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKTsK
KyAgICB2b2lkIHVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKGJvb2wgdmFsdWUpOwog
CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlIG1fc3Rv
cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggNjcxY2I1Yy4uZmJmOTJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNTYxLDUgKzU2MSw1IEBAIHZvaWQg
V0tCdW5kbGVQYWdlU3RvcEV4dGVuZGluZ0luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24o
V0tCdW5kbGVQYWdlUmVmIHBhCiAKIGJvb2wgV0tCdW5kbGVQYWdlSXNVc2luZ0VwaGVtZXJhbFNl
c3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwYWdl
UmVmKS0+aXNVc2luZ0VwaGVtZXJhbFNlc3Npb24oKTsKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VS
ZWYpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRl
eCA3N2ViNTM3Li4yNWFiZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzEwLDkgKzMx
MCwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdl
YlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvbwogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJv
Y2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQ
cm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTI3ND4u
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQogICAg
IGlmIChlbmFibGVkKQotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgp
KTsKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVuY2UoU2Vzc2lvbklE
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAgIGVsc2UKLSAgICAgICAgU2Vzc2lvblRy
YWNrZXI6OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgp
KTsKKyAgICAgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKSkKKyAgICAgICAgICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVT
ZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKICNl
bmRpZgogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdy
b3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8
UGFnZSo+OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAhPSBwYWdlcy5lbmQo
KTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IDkzYjBiYWQuLjllZGVkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE1MzUsNyArMTUzNSw3IEBA
IGJvb2wgUGx1Z2luVmlldzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICBpZiAoIWZy
YW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdpblN0b3Jh
Z2UoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIHJldHVybiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
OwogfQogCiBib29sIFBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
RW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKaW5kZXggZGVmMjAzOC4uYjM5NmNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDAsOSArNDAsNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwog
ICAgIH0KIAotICAgIC8vIEZJWE1FOiByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQg
dXNlIFNlc3Npb25UcmFja2VyCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwotCiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2ll
QWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKICAg
ICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IDQ2ZDg5
MmUuLjYwNjhjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5tbQpAQCAtNDMsMjIgKzQzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAg
QVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKLQotICAgIGlmIChTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgYmFz
ZTsKLSAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkp
Ci0gICAgICAgIGJhc2UgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
OwotICAgIGVsc2UKLSAgICAgICAgYmFzZSA9IFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVy
QmFzZSgpOwotCi0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSArICcu
JyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpKTsKLX0KLQogdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250
ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKIHsKICAgICBbW05TSFRUUENvb2tp
ZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIHNldENvb2tpZUFjY2VwdFBvbGljeTpz
dGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHBvbGljeSldOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IDc3NzM3ZDQu
LmVlNjgwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAKQEAgLTM4LDE2ICszOCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihz
ZXNzaW9uSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vz
c2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbihTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKSk7Ci19Ci0K
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2Vi
RnJhbWUqIGZyYW1lKQogICAgIDogRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZS0+Y29yZUZy
YW1lKCkpCiB7CkBAIC01NSw3ICs0NSw3IEBAIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Oldl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqIGZyYW1lKQogCiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QKIHsKLSAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnVzZXNF
cGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybiAqU2Vzc2lvblRyYWNrZXI6OnNlc3Np
b24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJuIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCA5MzQxMGIzLi4xOTRh
NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgK
QEAgLTQzLDggKzQzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAg
ICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdDsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA1NjMyZDIxLi43OTU1NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiUGx1Z2lu
Vmlldy5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5o
IgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJX
S1NoYXJlZEFQSUNhc3QuaCIKQEAgLTIxNjgsMjQgKzIxNjksMjAgQEAgdm9pZCBXZWJQYWdlOjpz
ZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVkIGxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHBs
dWdpblZpZXctPnNldExheWVySG9zdGluZ01vZGUobV9sYXllckhvc3RpbmdNb2RlKTsKIH0KIAot
U2Vzc2lvbklEIFdlYlBhZ2U6OnNlc3Npb25JRCgpIGNvbnN0Citib29sIFdlYlBhZ2U6OnVzZXNF
cGhlbWVyYWxTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9wYWdlLT5pc1Nlc3Npb25JRFNl
dCgpKQotICAgICAgICByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQoKTsKLQotICAgIHJldHVybiBt
X3BhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
LX0KLQotYm9vbCBXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+
dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQo
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9u
SUQpOworICAgIEFTU0VSVChzZXNzaW9uSUQgIT0gbV9wYWdlLT5zZXNzaW9uSUQoKSk7CisgICAg
QVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOworICAgIGlmIChtX3BhZ2UtPnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkpCisgICAgICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJl
bmNlKG1fcGFnZS0+c2Vzc2lvbklEKCkpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihzZXNzaW9uSUQpOworICAgICAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVy
ZW5jZShzZXNzaW9uSUQpOworICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3Qg
ZG93bmxvYWRJRCkKQEAgLTI0OTAsMTAgKzI0ODcsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVBy
ZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNldHRpbmdz
LnNldExvY2FsU3RvcmFnZUVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5Ojpsb2NhbFN0b3JhZ2VFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRY
U1NBdWRpdG9yRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6Onhzc0F1ZGl0b3JFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZEtleSgpKSk7Ci0gICAgaWYgKG1fcGFnZS0+aXNTZXNzaW9u
SURTZXQoKSkKLSAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChtX3Bh
Z2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwotICAgIGVsc2UKLSAgICAgICAgc2V0dGlu
Z3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkpOworICAgIGlmIChz
dG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeVByaXZhdGVC
cm93c2luZ0VuYWJsZWRLZXkoKSkgJiYgIW1fcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkK
KyAgICAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKCkpOwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZlbG9wZXJFeHRyYXNFbmFi
bGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdEV4
cGVyaW1lbnRzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGV4dEFyZWFzQXJlUmVz
aXphYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGV4dEFy
ZWFzQXJlUmVzaXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDBiMTU1MzEuLmYyYWViMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkzLDggKzE5Myw4IEBAIHB1YmxpYzoK
IAogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdl
dCgpOyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0K
LSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1Vz
aW5nRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0OworICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOyB9CisgICAgYm9vbCB1
c2VzRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Vzc2lvbklEKFdlYkNv
cmU6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNTlhY2Q2
NC4uMDdhMzg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBA
IC0zNDgsNiArMzQ4LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyhj
b25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWUKICAgICBTZXNzaW9uVHJh
Y2tlcjo6c2V0SWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlm
aWVyKTsKICNlbmRpZgogCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFz
ZSgpLmlzTnVsbCgpKQorICAgICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2Uo
IiIpOworCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9u
KQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKTsKIApAQCAtNDcxLDIwICs0NzQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXlib2Fy
ZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICAgICBt
X2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwog
fQogCi12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lv
bklEIHNlc3Npb25JRCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykg
fHwgVVNFKFNPVVApCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vz
czo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsK
LSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAg
U2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7Ci0jZW5kaWYKLX0KLQog
RG93bmxvYWRNYW5hZ2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogewogICAgIEFT
U0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCAwOGEyMGNiLi5kMzc3ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtMTYzLDkgKzE2Myw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAKLSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAgICB2b2lkIHBhZ2VEaWRFbnRlcldp
bmRvdyh1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50
NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggYTZmYTVlMC4uNzNjMGEzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDksMTAgKzQ5LDYg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SWdub3Jl
VExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogI2VuZGlmCiAKLSAgICAvLyBMZWdhY3kg
cHJpdmF0ZSBicm93c2luZyBzZXNzaW9uIGlzIHBlciBwcm9jZXNzLiBJbmRpdmlkdWFsIHBhZ2Vz
IG9yIHBhZ2UgZ3JvdXBzIG1heSB1c2UgdGhlIHByaXZhdGUgc2Vzc2lvbiBvciB0aGUgZGVmYXVs
dCBvbmUgYXMgYXBwcm9wcmlhdGUuCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0KICAgICAjIFBsdWctaW5zLgog
ICAgIERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91Ymxl
IGV4cGlyYXRpb25UaW1lKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhh
c2hNYXA8dWludDMyX3QsZG91YmxlPiBoYXNoZXMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q4MzYxNy4uN2FhMjk2OSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlm
eSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCBmb3IgZXBoZW1lcmFs
IHNlc3Npb25zIHNpbWlsYXIgdG8gUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2Fs
bGJhY2suCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTQtMDMtMjQgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERvd25sb2FkIHN1cHBvcnQg
YnkgQ0ZVUkxEb3dubG9hZFJlZiB1bmRlciBVU0UoQ0ZORVRXT1JLKS4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOGJiYjU3MC4uZTFhZTdmMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEwNyw2ICsxMDcsNyBAQAogCQk1MkNCNDc0MTE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0I0NzQwMTQ0OEZCOTMwMDg3Mzk5NSAvKiBM
b2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwICovOyB9OwogCQk1
MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4
IC8qIFBhcmVudEZyYW1lLmNwcCAqLzsgfTsKIAkJNTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8q
IFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVu
ZGxlLmNwcCAqLzsgfTsKKwkJNzVGMzEzNDAxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNl
c3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBo
ZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJNzZF
MTgyREExNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyRDkxNTQ3NTUwMTAw
RjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1
NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFG
QUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREYx
NTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4
MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07CkBAIC00MzMsNiAr
NDM0LDcgQEAKIAkJNTJDQjQ3NDAxNDQ4RkI5MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDgg
LyogUGFyZW50RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGFyZW50RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0ODE0
RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxT
ZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxi
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyRDkxNTQ3NTUwMTAw
RjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2lsbFNlbmRTdWJtaXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2
ZW50X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxs
U2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY2LDYgKzc2OCw3IEBACiAJCQkJRjZGNDlD
NjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovLAog
CQkJCUY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
X0J1bmRsZS5jcHAgKi8sCiAJCQkJQzA0NUY5NDQxMzg1QzJFOTAwQzBGM0NEIC8qIERvd25sb2Fk
RGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAgKi8sCisJCQkJNzVGMzEzM0YxOEMxNzFCNzAwNDFD
QUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8s
CiAJCQkJMUE1RkVGREMxMjcwRTJBMzAwMEUyOTIxIC8qIEV2YWx1YXRlSmF2YVNjcmlwdC5jcHAg
Ki8sCiAJCQkJQkNDOEI5NUExMjYxMUY0NzAwREU0NkE0IC8qIEZhaWxlZExvYWQuY3BwICovLAog
CQkJCTFBMDJDODRFMTI1RDRBODQwMEUzRjRCRCAvKiBGaW5kLmNwcCAqLywKQEAgLTExNTEsNiAr
MTE1NCw3IEBACiAJCQkJMjk3MjM0QjQxNzNBRDA0ODAwOTgzNjAxIC8qIEN1c3RvbVByb3RvY29s
c0ludmFsaWRTY2hlbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzkwMjhCNjE0RkFCRDkyMDA3
RTZCNDMgLyogQWNjZXB0c0ZpcnN0TW91c2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE4NjFG
RjE3QkQ0REM3MDBENEU0MUUgLyogU3RvcExvYWRpbmdGcm9tRGlkRmluaXNoTG9hZGluZy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTc1RjMxMzQwMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxT
ZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MjZGMUI0NDQxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCNTVGMTFBMDE1MTY4MzRGMDA5MTU5MTYgLyogQXR0cmlidXRlZFN0cmluZy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTAwQ0Q5RjYzMTVCRTMxMkMwMDJEQTJDRSAvKiBCYWNrRm9yd2Fy
ZExpc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25Q
dXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODMwMzE5NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcu
aCIKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIHRlc3REb25lOworCitz
dGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEs
IFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgLy8gVGhp
cyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gbmF2aWdhdGluZyBpbiBQcml2YXRlIEJyb3dz
aW5nLgorICAgIEZBSUwoKTsKK30KKworc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKK3sKKyAgICB0ZXN0RG9uZSA9IHRydWU7Cit9CisKK1RFU1QoV2ViS2l0Miwg
RXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrKQoreworICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7
CisKKyAgICBXS0NvbnRleHRIaXN0b3J5Q2xpZW50VjAgaGlzdG9yeUNsaWVudDsKKyAgICBtZW1z
ZXQoJmhpc3RvcnlDbGllbnQsIDAsIHNpemVvZihoaXN0b3J5Q2xpZW50KSk7CisKKyAgICBoaXN0
b3J5Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgaGlzdG9yeUNsaWVudC5kaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOworCisg
ICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChjb250ZXh0LmdldCgpLCAmaGlzdG9yeUNsaWVu
dC5iYXNlKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwor
CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgcGFnZUxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQo
JnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVvZihwYWdlTG9hZGVyQ2xpZW50KSk7CisKKyAgICBw
YWdlTG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgcGFnZUxvYWRlckNsaWVudC5k
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUgPSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWU7CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFn
ZSgpLCAmcGFnZUxvYWRlckNsaWVudC5iYXNlKTsKKworICAgIFdLU2Vzc2lvblJlZiBzZXNzaW9u
ID0gV0tTZXNzaW9uQ3JlYXRlKHRydWUpOworICAgIFdLUGFnZVNldFNlc3Npb24od2ViVmlldy5w
YWdlKCksIHNlc3Npb24pOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdL
LCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgicHVzaC1zdGF0ZSIsICJodG1sIikpOworICAg
IFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpy
dW4oJnRlc3REb25lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230542</attachid>
            <date>2014-04-30 17:17:38 -0700</date>
            <delta_ts>2014-05-01 11:46:57 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>pluginsession.08.diff</filename>
            <type>text/plain</type>
            <size>31447</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNzI4Y2YxLi4zNTg2Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDQtMzAgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KToKKyAgICAg
ICAgKiBwYWdlL1BsdWdJbkNsaWVudC5oOgorCiAyMDE0LTA0LTMwICBWw61jdG9yIE1hbnVlbCBK
w6FxdWV6IExlYWwgIDx2amFxdWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0g
VXNlIEdzdE1ldGFWaWRlbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKaW5kZXggYjgxNjI0My4uZDY0NjAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC01MTEsNyArNTExLDcgQEAgdm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdChQYXNzUmVmUHRy
PE1vdXNlRXZlbnQ+IGV2ZW50LAogCiAgICAgU3RyaW5nIHBsdWdJbk9yaWdpbiA9IG1fbG9hZGVk
VXJsLmhvc3QoKTsKICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KS0+c2V0dGluZ3MoKS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkp
Ci0gICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+ZGlkU3RhcnRGcm9t
T3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNlVVJM
KCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCkpOworICAgICAgICBkb2N1
bWVudCgpLnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPmRpZFN0YXJ0RnJvbU9yaWdpbihkb2N1bWVu
dCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSwgcGx1
Z0luT3JpZ2luLCBsb2FkZWRNaW1lVHlwZSgpLCBkb2N1bWVudCgpLnBhZ2UoKS0+c2Vzc2lvbklE
KCkpOwogCiAgICAgTE9HKFBsdWdpbnMsICIlcCBVc2VyIGNsaWNrZWQgb24gc25hcHNob3R0ZWQg
cGx1Zy1pbi4gUmVzdGFydC4iLCB0aGlzKTsKICAgICByZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCmluZGV4IDY1ODJjNGUuLjkyOGI5NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QbHVnSW5DbGllbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQ
bHVnSW5DbGllbnRfaAogI2RlZmluZSBQbHVnSW5DbGllbnRfaAogCisjaW5jbHVkZSAiU2Vzc2lv
bklELmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzQsNyArMzUsNyBAQCBjbGFzcyBQbHVnSW5DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRv
U3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25J
RCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGx1Z0luQ2xpZW50KCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggZDcwZTRkMy4uMDJiYjA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBA
CisyMDE0LTA0LTMwICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBT
ZXNzaW9uLWF3YXJlIHBsdWdpbiBhdXRvc3RhcnQgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNzU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xNTkwNjU0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OlBsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmFkZEF1
dG9TdGFydE9yaWdpbkhhc2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92
aWRlcjo6YXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNUYWJs
ZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdJbkF1dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6YWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3JpZ2lu
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OldlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpp
c1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE0LTA0LTMwICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbaU9TXVtXSzJdIEFkZCBhIFNQSSB0
byBleGNsdWRlIHRoZSBleHRlbmRlZCBiYWNrZ3JvdW5kIGZyb20gc29tZSBhcmVhcyBvZiBXS1dl
YlZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAppbmRleCBlNTcyNDAzLi4zZTY4NGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIoV2Vi
Q29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogeworICAgIG1faGFz
aFRvT3JpZ2luTWFwLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgSGFzaE1hcDx1
bnNpZ25lZCwgU3RyaW5nPigpKTsKKyAgICBtX2F1dG9TdGFydFRhYmxlLmFkZChTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgQXV0b1N0YXJ0VGFibGUoKSk7CiB9CiAKIHN0YXRpYyBkb3Vi
bGUgZXhwaXJhdGlvblRpbWVGcm9tTm93KCkKQEAgLTQ5LDMxICs1MSwyOSBAQCBzdGF0aWMgZG91
YmxlIGV4cGlyYXRpb25UaW1lRnJvbU5vdygpCiAgICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgKyBw
bHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVzaG9sZDsKIH0KIAotdm9pZCBQbHVnSW5B
dXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBh
Z2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpCit2b2lkIFBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyOjphZGRBdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdp
biwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAg
ICBpZiAobV9oYXNoVG9PcmlnaW5NYXAuY29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkpCisgICAg
Y29uc3QgYXV0byYgc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNoVG9PcmlnaW5NYXAuZmluZChzZXNz
aW9uSUQpOworICAgIGlmICgoc2Vzc2lvbkl0ZXJhdG9yICE9IG1faGFzaFRvT3JpZ2luTWFwLmVu
ZCgpICYmIHNlc3Npb25JdGVyYXRvci0+dmFsdWUuY29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkp
IHx8IG1faGFzaFRvT3JpZ2luTWFwLmdldChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSku
Y29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF1dG9T
dGFydFRhYmxlOjppdGVyYXRvciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuZmluZChwYWdlT3JpZ2lu
KTsKLSAgICBpZiAoaXQgPT0gbV9hdXRvU3RhcnRUYWJsZS5lbmQoKSkKLSAgICAgICAgaXQgPSBt
X2F1dG9TdGFydFRhYmxlLmFkZChwYWdlT3JpZ2luLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
KCkpLml0ZXJhdG9yOworICAgIEF1dG9TdGFydFRhYmxlOjppdGVyYXRvciBpdCA9IG1fYXV0b1N0
YXJ0VGFibGUuYWRkKHNlc3Npb25JRCwgQXV0b1N0YXJ0VGFibGUoKSkuaXRlcmF0b3ItPnZhbHVl
LmFkZChwYWdlT3JpZ2luLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKCkpLml0ZXJhdG9yOwog
CiAgICAgZG91YmxlIGV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVGcm9tTm93KCk7CiAg
ICAgaXQtPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0aW9uVGltZSk7Ci0gICAg
bV9oYXNoVG9PcmlnaW5NYXAuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIHBhZ2VPcmlnaW4pOworICAg
IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIHBhZ2VPcmlnaW4p
OwogCi0gICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgZXhw
aXJhdGlvblRpbWUpKTsKKyAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5Pcmln
aW5IYXNoLCBleHBpcmF0aW9uVGltZSwgc2Vzc2lvbklEKSk7CiAgICAgbV9jb250ZXh0LT5jbGll
bnQoKS5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNDaGFuZ2VkKG1fY29udGV4dCk7CiB9CiAK
IFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2ggUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9T
dGFydE9yaWdpbkhhc2hlc0NvcHkoKSBjb25zdAogewogICAgIFBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2ggY29weU1hcDsKLSAgICBBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9hdXRvU3RhcnRUYWJsZS5lbmQoKTsKLSAgICBmb3IgKEF1dG9TdGFydFRhYmxlOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0ZXJhdG9yIG1hcEVu
ZCA9IGl0LT52YWx1ZS5lbmQoKTsKLSAgICAgICAgZm9yIChQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoOjpjb25zdF9pdGVyYXRvciBtYXBJdCA9IGl0LT52YWx1ZS5iZWdpbigpOyBtYXBJdCAhPSBt
YXBFbmQ7ICsrbWFwSXQpCi0gICAgICAgICAgICBjb3B5TWFwLnNldChtYXBJdC0+a2V5LCBtYXBJ
dC0+dmFsdWUpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBrZXlPcmlnaW5IYXNoIDogbV9hdXRv
U3RhcnRUYWJsZS5nZXQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKSB7CisgICAgICAg
IGZvciAoY29uc3QgYXV0byYgb3JpZ2luSGFzaCA6IGtleU9yaWdpbkhhc2gudmFsdWUpCisgICAg
ICAgICAgICBjb3B5TWFwLnNldChvcmlnaW5IYXNoLmtleSwgb3JpZ2luSGFzaC52YWx1ZSk7CiAg
ICAgfQogICAgIHJldHVybiBjb3B5TWFwOwogfQpAQCAtODEsMTkgKzgxLDE2IEBAIFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2ggUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9TdGFydE9yaWdp
bkhhc2hlc0NvcHkoKSBjCiBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KCkgY29uc3QKIHsKICAg
ICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKLSAgICBBdXRvU3RhcnRUYWJsZTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9hdXRvU3RhcnRUYWJsZS5lbmQoKTsKKwogICAgIGRvdWJs
ZSBub3cgPSBjdXJyZW50VGltZSgpOwotICAgIGZvciAoQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9hdXRvU3RhcnRUYWJsZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmluZ09yaWdpbkhhc2ggOiBtX2F1dG9TdGFydFRhYmxl
LmdldChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpIHsKICAgICAgICAgSW1tdXRhYmxl
RGljdGlvbmFyeTo6TWFwVHlwZSBoYXNoTWFwOwotICAgICAgICBQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoOjpjb25zdF9pdGVyYXRvciB2YWx1ZUVuZCA9IGl0LT52YWx1ZS5lbmQoKTsKLSAgICAg
ICAgZm9yIChQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoOjpjb25zdF9pdGVyYXRvciB2YWx1ZUl0
ID0gaXQtPnZhbHVlLmJlZ2luKCk7IHZhbHVlSXQgIT0gdmFsdWVFbmQ7ICsrdmFsdWVJdCkgewot
ICAgICAgICAgICAgaWYgKG5vdyA+IHZhbHVlSXQtPnZhbHVlKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgaGFzaE1hcC5zZXQoU3RyaW5nOjpudW1iZXIodmFsdWVJdC0+
a2V5KSwgQVBJOjpEb3VibGU6OmNyZWF0ZSh2YWx1ZUl0LT52YWx1ZSkpOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIG9yaWdpbkhhc2ggOiBzdHJpbmdPcmlnaW5IYXNoLnZhbHVlKSB7CisgICAg
ICAgICAgICBpZiAobm93IDw9IG9yaWdpbkhhc2gudmFsdWUpCisgICAgICAgICAgICAgICAgaGFz
aE1hcC5zZXQoU3RyaW5nOjpudW1iZXIob3JpZ2luSGFzaC5rZXkpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKG9yaWdpbkhhc2gudmFsdWUpKTsKICAgICAgICAgfQotCiAgICAgICAgIGlmIChoYXNoTWFw
LnNpemUoKSkKLSAgICAgICAgICAgIG1hcC5zZXQoaXQtPmtleSwgSW1tdXRhYmxlRGljdGlvbmFy
eTo6Y3JlYXRlKHN0ZDo6bW92ZShoYXNoTWFwKSkpOworICAgICAgICAgICAgbWFwLnNldChzdHJp
bmdPcmlnaW5IYXNoLmtleSwgSW1tdXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKHN0ZDo6bW92ZSho
YXNoTWFwKSkpOwogICAgIH0KIAogICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjpjcmVh
dGUoc3RkOjptb3ZlKG1hcCkpOwpAQCAtMTIxLDMyICsxMTgsMzEgQEAgdm9pZCBQbHVnSW5BdXRv
U3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rl
c3QoSW1tdXQKICAgICBtX2hhc2hUb09yaWdpbk1hcC5jbGVhcigpOwogICAgIG1fYXV0b1N0YXJ0
VGFibGUuY2xlYXIoKTsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+IGhhc2hNYXA7Cisg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPiYgaGFzaFRvT3JpZ2luTWFwID0gbV9oYXNoVG9P
cmlnaW5NYXAuYWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2ln
bmVkLCBTdHJpbmc+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBBdXRvU3RhcnRUYWJsZSYgYXN0
ID0gbV9hdXRvU3RhcnRUYWJsZS5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEF1
dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIEltbXV0YWJsZURpY3Rpb25h
cnk6Ok1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHRhYmxlLm1hcCgpLmVuZCgpOwotICAg
IGZvciAoSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0
YWJsZS5tYXAoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8mIHN0
ckRpY3QgOiB0YWJsZS5tYXAoKSkgewogICAgICAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
IGhhc2hlczsKLSAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFyeSogaGFzaGVzRm9yUGFnZSA9IHN0
YXRpY19jYXN0PEltbXV0YWJsZURpY3Rpb25hcnkqPihpdC0+dmFsdWUuZ2V0KCkpOwotICAgICAg
ICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBoYXNoRW5kID0g
aGFzaGVzRm9yUGFnZS0+bWFwKCkuZW5kKCk7Ci0gICAgICAgIGZvciAoSW1tdXRhYmxlRGljdGlv
bmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaGFzaEl0ID0gaGFzaGVzRm9yUGFnZS0+bWFw
KCkuYmVnaW4oKTsgaGFzaEl0ICE9IGhhc2hFbmQ7ICsraGFzaEl0KSB7CisgICAgICAgIGZvciAo
YXV0byYgaGFzaFRpbWUgOiBzdGF0aWNfY2FzdDxJbW11dGFibGVEaWN0aW9uYXJ5Kj4oc3RyRGlj
dC52YWx1ZS5nZXQoKSktPm1hcCgpKSB7CiAgICAgICAgICAgICBib29sIG9rOwotICAgICAgICAg
ICAgdW5zaWduZWQgaGFzaCA9IGhhc2hJdC0+a2V5LnRvVUludCgmb2spOworICAgICAgICAgICAg
dW5zaWduZWQgaGFzaCA9IGhhc2hUaW1lLmtleS50b1VJbnQoJm9rKTsKICAgICAgICAgICAgIGlm
ICghb2spCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChoYXNo
SXQtPnZhbHVlLT50eXBlKCkgIT0gQVBJOjpEb3VibGU6OkFQSVR5cGUpCisgICAgICAgICAgICBp
ZiAoaGFzaFRpbWUudmFsdWUtPnR5cGUoKSAhPSBBUEk6OkRvdWJsZTo6QVBJVHlwZSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgZG91YmxlIGV4cGlyYXRpb25UaW1l
ID0gc3RhdGljX2Nhc3Q8QVBJOjpEb3VibGUqPihoYXNoSXQtPnZhbHVlLmdldCgpKS0+dmFsdWUo
KTsKKyAgICAgICAgICAgIGRvdWJsZSBleHBpcmF0aW9uVGltZSA9IHN0YXRpY19jYXN0PEFQSTo6
RG91YmxlKj4oaGFzaFRpbWUudmFsdWUuZ2V0KCkpLT52YWx1ZSgpOwogICAgICAgICAgICAgaWYg
KCFpc0V4cGlyYXRpb25UaW1lQWNjZXB0YWJsZShleHBpcmF0aW9uVGltZSkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGhhc2hlcy5zZXQoaGFzaCwgZXhwaXJhdGlv
blRpbWUpOwogICAgICAgICAgICAgaGFzaE1hcC5zZXQoaGFzaCwgZXhwaXJhdGlvblRpbWUpOwot
ICAgICAgICAgICAgbV9oYXNoVG9PcmlnaW5NYXAuc2V0KGhhc2gsIGl0LT5rZXkpOworICAgICAg
ICAgICAgaGFzaFRvT3JpZ2luTWFwLnNldChoYXNoLCBzdHJEaWN0LmtleSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIWhhc2hlcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2F1dG9TdGFy
dFRhYmxlLnNldChpdC0+a2V5LCBoYXNoZXMpOworICAgICAgICAgICAgYXN0LnNldChzdHJEaWN0
LmtleSwgaGFzaGVzKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMo
aGFzaE1hcCkpOwpAQCAtMTU1LDI0ICsxNTEsMzEgQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92
aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3QoSW1tdXQK
IHZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNBcnJheShB
UEk6OkFycmF5JiBvcmlnaW5MaXN0KQogewogICAgIG1fYXV0b1N0YXJ0T3JpZ2lucy5jbGVhcigp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBsZW5ndGggPSBvcmlnaW5MaXN0LnNpemUoKTsgaSA8
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChvcmlnaW5MaXN0LmF0KGkpLT50eXBlKCkgIT0g
QVBJOjpTdHJpbmc6OkFQSVR5cGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9h
dXRvU3RhcnRPcmlnaW5zLmFwcGVuZChzdGF0aWNfY2FzdDxBUEk6OlN0cmluZyo+KG9yaWdpbkxp
c3QuYXQoaSkpLT5zdHJpbmcoKSk7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgc3RyaW5n
IDogb3JpZ2luTGlzdC5lbGVtZW50c09mVHlwZTxBUEk6OlN0cmluZz4oKSkKKyAgICAgICAgbV9h
dXRvU3RhcnRPcmlnaW5zLmFwcGVuZChzdHJpbmctPnN0cmluZygpKTsKIH0KIAotdm9pZCBQbHVn
SW5BdXRvU3RhcnRQcm92aWRlcjo6ZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoKQordm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6ZGlkUmVjZWl2
ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewotICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9oYXNoVG9PcmlnaW5NYXAuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICBpZiAo
aXQgPT0gbV9oYXNoVG9PcmlnaW5NYXAuZW5kKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwg
SGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPj46OmNvbnN0X2l0ZXJhdG9yIHNlc3Npb25JdGVyYXRv
ciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbklEKTsKKyAgICBIYXNoTWFwPHVuc2ln
bmVkLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdDsKKyAgICBib29sIGNvbnRhaW5zID0gZmFs
c2U7CisgICAgaWYgKHNlc3Npb25JdGVyYXRvciAhPSBtX2hhc2hUb09yaWdpbk1hcC5lbmQoKSkg
eworICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5I
YXNoKTsKKyAgICAgICAgY29udGFpbnMgPSBpdCAhPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVu
ZCgpOworICAgIH0KKyAgICBpZiAoIWNvbnRhaW5zKSB7CisgICAgICAgIHNlc3Npb25JdGVyYXRv
ciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
OworICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5I
YXNoKTsKKyAgICAgICAgaWYgKGl0ID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgZG91YmxlIG5ld0V4cGlyYXRpb25UaW1lID0gZXhwaXJh
dGlvblRpbWVGcm9tTm93KCk7Ci0gICAgbV9hdXRvU3RhcnRUYWJsZS5maW5kKGl0LT52YWx1ZSkt
PnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9uVGltZSk7Ci0gICAgbV9j
b250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRp
bWUpKTsKKyAgICBtX2F1dG9TdGFydFRhYmxlLmFkZChzZXNzaW9uSUQsIEF1dG9TdGFydFRhYmxl
KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQoaXQtPnZhbHVlLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoKCkpLml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlv
blRpbWUpOworICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gs
IG5ld0V4cGlyYXRpb25UaW1lLCBzZXNzaW9uSUQpKTsKICAgICBtX2NvbnRleHQtPmNsaWVudCgp
LnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlc0NoYW5nZWQobV9jb250ZXh0KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9T
dGFydFByb3ZpZGVyLmgKaW5kZXggYzNiMzkwMi4uNTQyZDBjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRl
ci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyX2gK
ICNkZWZpbmUgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9T
ZXNzaW9uSURIYXNoLmg+CiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00NCw2ICs0NSw3IEBAIGNsYXNz
IEltbXV0YWJsZURpY3Rpb25hcnk7CiBjbGFzcyBXZWJDb250ZXh0OwogCiB0eXBlZGVmIEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT4gUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDsKK3R5cGVkZWYg
SGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g+IFNl
c3Npb25QbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoOwogdHlwZWRlZiBWZWN0b3I8U3RyaW5nPiBQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5zOwogCiBjbGFzcyBQbHVnSW5BdXRvU3RhcnRQcm92aWRlciB7
CkBAIC01MSw4ICs1Myw4IEBAIGNsYXNzIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyIHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcihXZWJDb250ZXh0Kik7CiAK
LSAgICB2b2lkIGFkZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgdm9pZCBhZGRBdXRvU3Rh
cnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3Jp
Z2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsK
IAogICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gYXV0b1N0YXJ0T3JpZ2luc1Rh
YmxlQ29weSgpIGNvbnN0OwogICAgIHZvaWQgc2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlKEltbXV0
YWJsZURpY3Rpb25hcnkmKTsKQEAgLTY4LDkgKzcwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dGFibGVEaWN0
aW9uYXJ5Jiwgc3RkOjpmdW5jdGlvbjxib29sKGRvdWJsZSBleHBpcmF0aW9uVGltZXN0YW1wKT4p
OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aCwgQ2FzZUZvbGRpbmdIYXNoPiBBdXRvU3RhcnRUYWJsZTsKLSAgICBBdXRvU3RhcnRUYWJsZSBt
X2F1dG9TdGFydFRhYmxlOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQs
IEF1dG9TdGFydFRhYmxlPiBTZXNzaW9uQXV0b1N0YXJ0VGFibGU7CisgICAgU2Vzc2lvbkF1dG9T
dGFydFRhYmxlIG1fYXV0b1N0YXJ0VGFibGU7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJp
bmc+IG1faGFzaFRvT3JpZ2luTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBI
YXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+PiBtX2hhc2hUb09yaWdpbk1hcDsKIAogICAgIFBsdWdJ
bkF1dG9TdGFydE9yaWdpbnMgbV9hdXRvU3RhcnRPcmlnaW5zOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCAyYzZiYmFkLi45NGI1ZDM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0xMzAzLDE0ICsxMzAzLDE0IEBAIHZv
aWQgV2ViQ29udGV4dDo6c2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQo
Ym9vbCBmbGFnKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoZmxhZykpOwogfQogCi12
b2lkIFdlYkNvbnRleHQ6OmFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5n
JiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQordm9pZCBXZWJDb250ZXh0
OjphZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwg
dW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBt
X3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmFkZEF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdp
biwgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hZGRB
dXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VPcmlnaW4sIHBsdWdJbk9yaWdpbkhhc2gsIHNlc3Npb25J
RCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlv
bih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQordm9pZCBXZWJDb250ZXh0OjpwbHVnSW5EaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5kaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXIuZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoLCBzZXNz
aW9uSUQpOwogfQogCiBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYkNvbnRleHQ6
OnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAppbmRleCA1MmIyNTc1Li4wZTVhOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmgKQEAgLTQxNiw4ICs0MTYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGFk
ZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAgdm9pZCBhZGRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1
Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHBsdWdJbkRpZFJl
Y2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6
U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgc2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5tZXNzYWdlcy5pbgppbmRleCAxYzNjMzUwLi4yZTRmNDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgpAQCAtNTksNiArNTks
NiBAQCBtZXNzYWdlcyAtPiBXZWJDb250ZXh0IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAg
ICAgIyBQbHVnLWluIG1lc3NhZ2VzLgotICAgIHZvaWQgQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaChTdHJpbmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCkKLSAgICB2b2lkIFBsdWdJbkRp
ZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWludDMyX3QgaGFzaCkKKyAgICB2b2lkIEFkZFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2goU3RyaW5nIHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhhc2gsIFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgdm9pZCBQbHVnSW5EaWRSZWNlaXZlVXNl
ckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKaW5kZXggNTkzZGQzZi4uNDVhNmY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTczNiw3ICsxNzM2LDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCkKICAgICBTdHJpbmcg
cGx1Z2luT3JpZ2luID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKS5ob3N0KCk7CiAg
ICAgU3RyaW5nIG1pbWVUeXBlID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRNaW1lVHlwZSgp
OwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbihwYWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5wbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBhZ2VPcmlnaW4sIHBs
dWdpbk9yaWdpbiwgbWltZVR5cGUsIHBsdWdJbkltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdl
KCktPnNlc3Npb25JRCgpKTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpzaG91bGRDcmVhdGVUcmFu
c2llbnRQYWludGluZ1NuYXBzaG90KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcAppbmRl
eCA4NTRkNzczLi5lMzU1OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCkBAIC01Miw5ICs1
Miw5IEBAIGJvb2wgV2ViUGx1Z0luQ2xpZW50OjpzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNv
bnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hh
cmVkKCkuc2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihtX3BhZ2UsIHBhZ2VPcmlnaW4s
IHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOwogfQogCi12b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlk
U3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit2b2lkIFdlYlBsdWdJbkNsaWVu
dDo6ZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkU3Rh
cnRGcm9tT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOworICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihwYWdlT3JpZ2luLCBw
bHVnaW5PcmlnaW4sIG1pbWVUeXBlLCBzZXNzaW9uSUQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCmluZGV4IDUzMTAyOGEuLjAyYjhhY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnSW5DbGllbnQuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJQbHVnSW5DbGllbnRf
aAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnSW5DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1Nlc3Npb25JRC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzksNyArNDAsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CiAgICAg
dmlydHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBh
Z2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYg
cGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTI2ZWYxNS4uNjgw
NzkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xOTcsNiArMTk3LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vzcygp
CiAjaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBhZGRTdXBw
bGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlcj4oKTsKICNlbmRpZgorICAgIG1fcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgSGFz
aE1hcDx1bnNpZ25lZCwgZG91YmxlPigpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFs
aXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCkBAIC03MjYsMTEgKzcyNywyMiBAQCBzdGF0aWMgdW5zaWduZWQgaGFzaEZvclBs
dWdJbk9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Zwog
ICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwogfQogCi1ib29sIFdlYlByb2Nlc3M6OmlzUGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQorYm9vbCBXZWJQ
cm9jZXNzOjppc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2lu
SGFzaCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3Vi
bGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZp
bmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgaWYgKGl0ID09IG1fcGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaGVzLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+Ojpjb25zdF9pdGVyYXRv
ciBzZXNzaW9uSXRlcmF0b3IgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKHNl
c3Npb25JRCk7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0b3Ig
aXQ7CisgICAgYm9vbCBjb250YWlucyA9IGZhbHNlOworCisgICAgaWYgKHNlc3Npb25JdGVyYXRv
ciAhPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkgeworICAgICAgICBpdCA9
IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAg
Y29udGFpbnMgPSBpdCAhPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgpOworICAgIH0KKyAg
ICBpZiAoIWNvbnRhaW5zKSB7CisgICAgICAgIHNlc3Npb25JdGVyYXRvciA9IG1fcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwor
ICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNo
KTsKKyAgICAgICAgaWYgKGl0ID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJldHVybiBjdXJyZW50VGltZSgpIDwg
aXQtPnZhbHVlOwogfQogCkBAIC03NDgsMTAgKzc2MCwxMCBAQCBib29sIFdlYlByb2Nlc3M6OnNo
b3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgV2ViUGFnZSogcGFnZSwgY29uc3Qg
U3RyaQogI2VuZGlmCiAKICAgICAvLyBMYXN0bHkgY2hlY2sgYWdhaW5zdCB0aGUgbW9yZSBleHBs
aWNpdCBoYXNoIGxpc3QuCi0gICAgcmV0dXJuIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCho
YXNoRm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpKTsK
KyAgICByZXR1cm4gaXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGhhc2hGb3JQbHVnSW5Pcmln
aW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSksIHBhZ2UtPnNlc3Npb25JRCgp
KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2lu
KGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHBh
Z2VPcmlnaW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIExPRyhQbHVnaW5zLCAiTm90IGFkZGluZyBl
bXB0eSBwYWdlIG9yaWdpbiIpOwpAQCAtNzU5LDcgKzc3MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3Qg
U3RyaW5nCiAgICAgfQogCiAgICAgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCA9IGhhc2hGb3JQ
bHVnSW5PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSk7Ci0gICAgaWYg
KGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5IYXNoKSkgeworICAgIGlm
IChpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklE
KSkgewogICAgICAgICBMT0coUGx1Z2lucywgIkhhc2ggJXggYWxyZWFkeSBleGlzdHMgYXMgYXV0
by1zdGFydCBvcmlnaW4gKHJlcXVlc3QgZm9yICVzKSIsIHBsdWdJbk9yaWdpbkhhc2gsIHBhZ2VP
cmlnaW4udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NjgsMjUg
Kzc4MCwyNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25z
dCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZwogICAgIC8vIGNvbWVzIGJhY2sgZnJv
bSB0aGUgcGFyZW50IHByb2Nlc3MuIFRlbXBvcmFyaWx5IGFkZCB0aGlzIGhhc2ggdG8gdGhlIGxp
c3Qgd2l0aCBhIHRoaXJ0eQogICAgIC8vIHNlY29uZCB0aW1lb3V0LiBUaGF0IHdheSwgZXZlbiBp
ZiB0aGUgcGFyZW50IGRlY2lkZXMgbm90IHRvIGFkZCBpdCwgd2UnbGwgb25seSBiZQogICAgIC8v
IGluY29ycmVjdCBmb3IgYSBsaXR0bGUgd2hpbGUuCi0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGN1cnJlbnRUaW1lKCkgKyAzMCAqIDEwMDAp
OworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChzZXNzaW9uSUQsIEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRlcmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5I
YXNoLCBjdXJyZW50VGltZSgpICsgMzAgKiAxMDAwKTsKIAotICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkFkZFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCksIDApOworICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkFkZFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklE
KSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUpCit2
b2lkIFdlYlByb2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQg
cGx1Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lLCBTZXNzaW9uSUQgc2Vzc2lv
bklEKQogewogICAgIC8vIFdoZW4gY2FsbGVkLCBzb21lIHdlYiBwcm9jZXNzICh3aGljaCBhbHNv
IG1pZ2h0IGJlIHRoaXMgb25lKSBhZGRlZCB0aGUgb3JpZ2luIGZvciBhdXRvLXN0YXJ0aW5nLAog
ICAgIC8vIG9yIHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgLy8gU2V0IHRoZSBiaXQg
dG8gYXZvaWQgaGF2aW5nIHJlZHVuZGFudGx5IGNhbGwgaW50byB0aGUgVUkgcHJvY2VzcyB1cG9u
IHVzZXIgaW50ZXJhY3Rpb24uCi0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc2V0
KHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKTsKKyAgICBtX3BsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2hlcy5hZGQoc2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KCkp
Lml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGNv
bnN0IEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mIGhhc2hlcykKIHsKLSAgICBtX3BsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcy5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91
YmxlPiY+KGhhc2hlcykpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmNsZWFy
KCk7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52
YWx1ZS5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiY+KGhhc2hlcykp
OwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24o
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVz
ZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1
Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ewogICAgIGlmIChwYWdlT3JpZ2luLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzk1
LDEzICs4MDgsMjQgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QKICAgICBpZiAoIXBsdWdJbk9y
aWdpbkhhc2gpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJs
ZT46Oml0ZXJhdG9yIGl0ID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmluZChwbHVn
SW5PcmlnaW5IYXNoKTsKLSAgICBpZiAoaXQgPT0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
ZXMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25J
RCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj46OmNvbnN0X2l0ZXJhdG9yIHNlc3Npb25JdGVy
YXRvciA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQoc2Vzc2lvbklEKTsKKyAg
ICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Ojpjb25zdF9pdGVyYXRvciBpdDsKKyAgICBib29s
IGNvbnRhaW5zID0gZmFsc2U7CisgICAgaWYgKHNlc3Npb25JdGVyYXRvciAhPSBtX3BsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkgeworICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRv
ci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAgY29udGFpbnMgPSBpdCAh
PSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgpOworICAgIH0KKyAgICBpZiAoIWNvbnRhaW5z
KSB7CisgICAgICAgIHNlc3Npb25JdGVyYXRvciA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzLmZpbmQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICBpdCA9IHNl
c3Npb25JdGVyYXRvci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAgaWYg
KGl0ID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaWYgKGl0LT52YWx1ZSAtIGN1cnJlbnRUaW1lKCkgPiBwbHVnSW5BdXRv
U3RhcnRFeHBpcmF0aW9uVGltZVVwZGF0ZVRocmVzaG9sZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6
UGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoKSwgMCk7Cisg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6
UGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9u
SUQpLCAwKTsKIH0KIAogc3RhdGljIHZvaWQgZnJvbUNvdW50ZWRTZXRUb0hhc2hNYXAoVHlwZUNv
dW50U2V0KiBjb3VudGVkU2V0LCBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+JiBtYXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGRiMGM4ODkuLjA3ZTZkYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
U2Vzc2lvbklELmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSURIYXNoLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KQEAgLTExOSw4ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
aG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhib29sKTsKIAogICAgIGJvb2wgc2hvdWxkUGx1Z0luQXV0
b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0g
ICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0g
ICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFn
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOworICAgIHZvaWQgcGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFn
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5P
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICAg
ICBib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxL
ZXlib2FyZEFjY2Vzc0VuYWJsZWQ7IH0KIApAQCAtMjEyLDggKzIxMiw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpIGNvbnN0OwogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKIAotICAgIGJvb2wgaXNQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIHZvaWQgZGlkQWRkUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUg
ZXhwaXJhdGlvblRpbWUpOworICAgIGJvb2wgaXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVu
c2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBk
aWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gs
IGRvdWJsZSBleHBpcmF0aW9uVGltZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJl
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGNvbnN0IEhhc2hNYXA8dW5zaWduZWQsIGRv
dWJsZT4mIGhhc2hlcyk7CiAKICAgICB2b2lkIHBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1v
ZGVsKTsKQEAgLTI4NSw3ICsyODUsNyBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBXaGV0aGVy
IHZpc2l0ZWQgbGlua3Mgc2hvdWxkIGJlIHRyYWNrZWQgb3Igbm90IHNob3VsZCBiZSBoYW5kbGVk
IGluIHRoZSBVSSBwcm9jZXNzLgogICAgIGJvb2wgbV9zaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsK
IAotICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQs
IGRvdWJsZT4+IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOwogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnM7CiAKICAgICBib29sIG1faGFzU2V0Q2FjaGVN
b2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBhNmZhNWUwLi5hODRlMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01NCw3ICs1NCw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKICAgICAjIFBsdWctaW5z
LgotICAgIERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91
YmxlIGV4cGlyYXRpb25UaW1lKQorICAgIERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2go
dWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lLCBXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8
dWludDMyX3QsZG91YmxlPiBoYXNoZXMpCiAKICAgICB2b2lkIFN0YXJ0TWVtb3J5U2FtcGxlcihX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFuZGxlLCBTdHJp
bmcgc2FtcGxlTG9nRmlsZVBhdGgsIGRvdWJsZSBpbnRlcnZhbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230587</attachid>
            <date>2014-05-01 10:16:38 -0700</date>
            <delta_ts>2014-05-01 18:10:46 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>pluginsession.09.diff</filename>
            <type>text/plain</type>
            <size>31434</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NjcxN2JkLi5mMDViNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDUtMDEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KToKKyAgICAg
ICAgKiBwYWdlL1BsdWdJbkNsaWVudC5oOgorCiAyMDE0LTA0LTMwICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIFNlZWtpbmcgYmV0d2VlbiB0d28gYnVm
ZmVyZWQgcmFuZ2VzIGVucXV1ZXMgaW5jb3JyZWN0IGJ1ZmZlcnMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiODE2MjQzLi5kNjQ2MDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAK
QEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRD
bGlja1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQsCiAKICAgICBTdHJpbmcg
cGx1Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwuaG9zdCgpOwogICAgIGlmIChkb2N1bWVudCgpLnBh
Z2UoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChkb2N1
bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnByb3RvY29s
KCkpICYmIGRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLmF1dG9zdGFydE9yaWdpblBsdWdJ
blNuYXBzaG90dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJ
bkNsaWVudCgpLT5kaWRTdGFydEZyb21PcmlnaW4oZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCksIHBsdWdJbk9yaWdpbiwgbG9hZGVkTWlt
ZVR5cGUoKSk7CisgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+ZGlk
U3RhcnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
LT5iYXNlVVJMKCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCksIGRvY3Vt
ZW50KCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAKICAgICBMT0coUGx1Z2lucywgIiVwIFVzZXIg
Y2xpY2tlZCBvbiBzbmFwc2hvdHRlZCBwbHVnLWluLiBSZXN0YXJ0LiIsIHRoaXMpOwogICAgIHJl
c3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QbHVnSW5DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmgKaW5k
ZXggNjU4MmM0ZS4uOTI4Yjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QbHVn
SW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIFBsdWdJbkNsaWVudF9oCiAjZGVmaW5lIFBsdWdJbkNsaWVu
dF9oCiAKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCw3ICszNSw3IEBAIGNsYXNzIFBsdWdJbkNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5n
JiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IH5QbHVnSW5DbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzNzQzM2M1Li4wNDE5NzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTQtMDUtMDEgIE1hcnRpbiBIb2NrICA8bWhvY2tA
YXBwbGUuY29tPgorCisgICAgICAgIFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0
b1N0YXJ0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92
aWRlcjo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5B
dXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9TdGFydE9yaWdp
bnNUYWJsZUNvcHkpOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6
c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlV2l0aEl0ZW1zUGFzc2luZ1Rlc3QpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc0FycmF5
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmRpZFJlY2VpdmVV
c2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9T
dGFydFByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpbkRp
ZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z0luQ2xp
ZW50OjpkaWRTdGFydEZyb21PcmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbHVnSW5EaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTQt
MDUtMDEgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdIFRoZXJlIGFyZSBtYW55IHdhcm5pbmdzIHdpdGggc29mdHdhcmUgYmFja2VuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXIuY3BwCmluZGV4IGU1NzI0MDMuLjNlNjg0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92
aWRlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyOjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcihXZWJDb250ZXh0KiBjb250
ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiB7CisgICAgbV9oYXNoVG9PcmlnaW5NYXAu
YWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2lnbmVkLCBTdHJp
bmc+KCkpOworICAgIG1fYXV0b1N0YXJ0VGFibGUuYWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpLCBBdXRvU3RhcnRUYWJsZSgpKTsKIH0KIAogc3RhdGljIGRvdWJsZSBleHBpcmF0aW9u
VGltZUZyb21Ob3coKQpAQCAtNDksMzEgKzUxLDI5IEBAIHN0YXRpYyBkb3VibGUgZXhwaXJhdGlv
blRpbWVGcm9tTm93KCkKICAgICByZXR1cm4gY3VycmVudFRpbWUoKSArIHBsdWdJbkF1dG9TdGFy
dEV4cGlyYXRpb25UaW1lVGhyZXNob2xkOwogfQogCi12b2lkIFBsdWdJbkF1dG9TdGFydFByb3Zp
ZGVyOjphZGRBdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5z
aWduZWQgcGx1Z0luT3JpZ2luSGFzaCkKK3ZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmFk
ZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIGlmIChtX2hhc2hU
b09yaWdpbk1hcC5jb250YWlucyhwbHVnSW5PcmlnaW5IYXNoKSkKKyAgICBjb25zdCBhdXRvJiBz
ZXNzaW9uSXRlcmF0b3IgPSBtX2hhc2hUb09yaWdpbk1hcC5maW5kKHNlc3Npb25JRCk7CisgICAg
aWYgKChzZXNzaW9uSXRlcmF0b3IgIT0gbV9oYXNoVG9PcmlnaW5NYXAuZW5kKCkgJiYgc2Vzc2lv
bkl0ZXJhdG9yLT52YWx1ZS5jb250YWlucyhwbHVnSW5PcmlnaW5IYXNoKSkgfHwgbV9oYXNoVG9P
cmlnaW5NYXAuZ2V0KFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKS5jb250YWlucyhwbHVn
SW5PcmlnaW5IYXNoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQXV0b1N0YXJ0VGFibGU6Oml0
ZXJhdG9yIGl0ID0gbV9hdXRvU3RhcnRUYWJsZS5maW5kKHBhZ2VPcmlnaW4pOwotICAgIGlmIChp
dCA9PSBtX2F1dG9TdGFydFRhYmxlLmVuZCgpKQotICAgICAgICBpdCA9IG1fYXV0b1N0YXJ0VGFi
bGUuYWRkKHBhZ2VPcmlnaW4sIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goKSkuaXRlcmF0b3I7
CisgICAgQXV0b1N0YXJ0VGFibGU6Oml0ZXJhdG9yIGl0ID0gbV9hdXRvU3RhcnRUYWJsZS5hZGQo
c2Vzc2lvbklELCBBdXRvU3RhcnRUYWJsZSgpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VPcmln
aW4sIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goKSkuaXRlcmF0b3I7CiAKICAgICBkb3VibGUg
ZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZUZyb21Ob3coKTsKICAgICBpdC0+dmFsdWUu
c2V0KHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1lKTsKLSAgICBtX2hhc2hUb09yaWdp
bk1hcC5zZXQocGx1Z0luT3JpZ2luSGFzaCwgcGFnZU9yaWdpbik7CisgICAgc2Vzc2lvbkl0ZXJh
dG9yLT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgcGFnZU9yaWdpbik7CiAKLSAgICBtX2Nv
bnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkQWRkUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0aW9uVGltZSkp
OworICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gsIGV4cGly
YXRpb25UaW1lLCBzZXNzaW9uSUQpKTsKICAgICBtX2NvbnRleHQtPmNsaWVudCgpLnBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlc0NoYW5nZWQobV9jb250ZXh0KTsKIH0KIAogUGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luSGFz
aGVzQ29weSgpIGNvbnN0CiB7CiAgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCBjb3B5TWFw
OwotICAgIEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2F1dG9TdGFydFRh
YmxlLmVuZCgpOwotICAgIGZvciAoQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9hdXRvU3RhcnRUYWJsZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRlcmF0b3IgbWFwRW5kID0gaXQtPnZhbHVl
LmVuZCgpOwotICAgICAgICBmb3IgKFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0
ZXJhdG9yIG1hcEl0ID0gaXQtPnZhbHVlLmJlZ2luKCk7IG1hcEl0ICE9IG1hcEVuZDsgKyttYXBJ
dCkKLSAgICAgICAgICAgIGNvcHlNYXAuc2V0KG1hcEl0LT5rZXksIG1hcEl0LT52YWx1ZSk7CisK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGtleU9yaWdpbkhhc2ggOiBtX2F1dG9TdGFydFRhYmxlLmdl
dChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpIHsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBvcmlnaW5IYXNoIDoga2V5T3JpZ2luSGFzaC52YWx1ZSkKKyAgICAgICAgICAgIGNvcHlN
YXAuc2V0KG9yaWdpbkhhc2gua2V5LCBvcmlnaW5IYXNoLnZhbHVlKTsKICAgICB9CiAgICAgcmV0
dXJuIGNvcHlNYXA7CiB9CkBAIC04MSwxOSArODEsMTYgQEAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSgp
IGMKIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXI6OmF1dG9TdGFydE9yaWdpbnNUYWJsZUNvcHkoKSBjb25zdAogewogICAgIEltbXV0YWJsZURp
Y3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwotICAgIEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtX2F1dG9TdGFydFRhYmxlLmVuZCgpOworCiAgICAgZG91YmxlIG5vdyA9IGN1cnJl
bnRUaW1lKCk7Ci0gICAgZm9yIChBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X2F1dG9TdGFydFRhYmxlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGZvciAoY29u
c3QgYXV0byYgc3RyaW5nT3JpZ2luSGFzaCA6IG1fYXV0b1N0YXJ0VGFibGUuZ2V0KFNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKSkgewogICAgICAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpN
YXBUeXBlIGhhc2hNYXA7Ci0gICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0
X2l0ZXJhdG9yIHZhbHVlRW5kID0gaXQtPnZhbHVlLmVuZCgpOwotICAgICAgICBmb3IgKFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0ZXJhdG9yIHZhbHVlSXQgPSBpdC0+dmFsdWUu
YmVnaW4oKTsgdmFsdWVJdCAhPSB2YWx1ZUVuZDsgKyt2YWx1ZUl0KSB7Ci0gICAgICAgICAgICBp
ZiAobm93ID4gdmFsdWVJdC0+dmFsdWUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBoYXNoTWFwLnNldChTdHJpbmc6Om51bWJlcih2YWx1ZUl0LT5rZXkpLCBBUEk6OkRv
dWJsZTo6Y3JlYXRlKHZhbHVlSXQtPnZhbHVlKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
b3JpZ2luSGFzaCA6IHN0cmluZ09yaWdpbkhhc2gudmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChu
b3cgPD0gb3JpZ2luSGFzaC52YWx1ZSkKKyAgICAgICAgICAgICAgICBoYXNoTWFwLnNldChTdHJp
bmc6Om51bWJlcihvcmlnaW5IYXNoLmtleSksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luSGFz
aC52YWx1ZSkpOwogICAgICAgICB9Ci0KICAgICAgICAgaWYgKGhhc2hNYXAuc2l6ZSgpKQotICAg
ICAgICAgICAgbWFwLnNldChpdC0+a2V5LCBJbW11dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoc3Rk
Ojptb3ZlKGhhc2hNYXApKSk7CisgICAgICAgICAgICBtYXAuc2V0KHN0cmluZ09yaWdpbkhhc2gu
a2V5LCBJbW11dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoc3RkOjptb3ZlKGhhc2hNYXApKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0ZShzdGQ6Om1vdmUo
bWFwKSk7CkBAIC0xMjEsMzIgKzExOCwzMSBAQCB2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
OjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dAogICAg
IG1faGFzaFRvT3JpZ2luTWFwLmNsZWFyKCk7CiAgICAgbV9hdXRvU3RhcnRUYWJsZS5jbGVhcigp
OwogICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4gaGFzaE1hcDsKKyAgICBIYXNoTWFwPHVu
c2lnbmVkLCBTdHJpbmc+JiBoYXNoVG9PcmlnaW5NYXAgPSBtX2hhc2hUb09yaWdpbk1hcC5hZGQo
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4o
KSkuaXRlcmF0b3ItPnZhbHVlOworICAgIEF1dG9TdGFydFRhYmxlJiBhc3QgPSBtX2F1dG9TdGFy
dFRhYmxlLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgQXV0b1N0YXJ0VGFibGUo
KSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gdGFibGUubWFwKCkuZW5kKCk7Ci0gICAgZm9yIChJbW11dGFi
bGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IHRhYmxlLm1hcCgpLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGZvciAoYXV0byYgc3RyRGljdCA6IHRhYmxl
Lm1hcCgpKSB7CiAgICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2ggaGFzaGVzOwotICAg
ICAgICBJbW11dGFibGVEaWN0aW9uYXJ5KiBoYXNoZXNGb3JQYWdlID0gc3RhdGljX2Nhc3Q8SW1t
dXRhYmxlRGljdGlvbmFyeSo+KGl0LT52YWx1ZS5nZXQoKSk7Ci0gICAgICAgIEltbXV0YWJsZURp
Y3Rpb25hcnk6Ok1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGhhc2hFbmQgPSBoYXNoZXNGb3JQYWdl
LT5tYXAoKS5lbmQoKTsKLSAgICAgICAgZm9yIChJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBl
Ojpjb25zdF9pdGVyYXRvciBoYXNoSXQgPSBoYXNoZXNGb3JQYWdlLT5tYXAoKS5iZWdpbigpOyBo
YXNoSXQgIT0gaGFzaEVuZDsgKytoYXNoSXQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBoYXNoVGlt
ZSA6IHN0YXRpY19jYXN0PEltbXV0YWJsZURpY3Rpb25hcnkqPihzdHJEaWN0LnZhbHVlLmdldCgp
KS0+bWFwKCkpIHsKICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICB1bnNpZ25lZCBo
YXNoID0gaGFzaEl0LT5rZXkudG9VSW50KCZvayk7CisgICAgICAgICAgICB1bnNpZ25lZCBoYXNo
ID0gaGFzaFRpbWUua2V5LnRvVUludCgmb2spOwogICAgICAgICAgICAgaWYgKCFvaykKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGhhc2hJdC0+dmFsdWUtPnR5
cGUoKSAhPSBBUEk6OkRvdWJsZTo6QVBJVHlwZSkKKyAgICAgICAgICAgIGlmIChoYXNoVGltZS52
YWx1ZS0+dHlwZSgpICE9IEFQSTo6RG91YmxlOjpBUElUeXBlKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgICAgICBkb3VibGUgZXhwaXJhdGlvblRpbWUgPSBzdGF0aWNfY2Fz
dDxBUEk6OkRvdWJsZSo+KGhhc2hJdC0+dmFsdWUuZ2V0KCkpLT52YWx1ZSgpOworICAgICAgICAg
ICAgZG91YmxlIGV4cGlyYXRpb25UaW1lID0gc3RhdGljX2Nhc3Q8QVBJOjpEb3VibGUqPihoYXNo
VGltZS52YWx1ZS5nZXQoKSktPnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIWlzRXhwaXJhdGlv
blRpbWVBY2NlcHRhYmxlKGV4cGlyYXRpb25UaW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgaGFzaGVzLnNldChoYXNoLCBleHBpcmF0aW9uVGltZSk7CiAgICAg
ICAgICAgICBoYXNoTWFwLnNldChoYXNoLCBleHBpcmF0aW9uVGltZSk7Ci0gICAgICAgICAgICBt
X2hhc2hUb09yaWdpbk1hcC5zZXQoaGFzaCwgaXQtPmtleSk7CisgICAgICAgICAgICBoYXNoVG9P
cmlnaW5NYXAuc2V0KGhhc2gsIHN0ckRpY3Qua2V5KTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghaGFzaGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fYXV0b1N0YXJ0VGFibGUuc2V0KGl0
LT5rZXksIGhhc2hlcyk7CisgICAgICAgICAgICBhc3Quc2V0KHN0ckRpY3Qua2V5LCBoYXNoZXMp
OwogICAgIH0KIAogICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhoYXNoTWFwKSk7CkBA
IC0xNTUsMjQgKzE1MSwzMSBAQCB2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRv
U3RhcnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dAogdm9pZCBQbHVnSW5B
dXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc0FycmF5KEFQSTo6QXJyYXkmIG9y
aWdpbkxpc3QpCiB7CiAgICAgbV9hdXRvU3RhcnRPcmlnaW5zLmNsZWFyKCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDAsIGxlbmd0aCA9IG9yaWdpbkxpc3Quc2l6ZSgpOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKG9yaWdpbkxpc3QuYXQoaSktPnR5cGUoKSAhPSBBUEk6OlN0cmluZzo6
QVBJVHlwZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2F1dG9TdGFydE9yaWdp
bnMuYXBwZW5kKHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4ob3JpZ2luTGlzdC5hdChpKSktPnN0
cmluZygpKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBzdHJpbmcgOiBvcmlnaW5MaXN0
LmVsZW1lbnRzT2ZUeXBlPEFQSTo6U3RyaW5nPigpKQorICAgICAgICBtX2F1dG9TdGFydE9yaWdp
bnMuYXBwZW5kKHN0cmluZy0+c3RyaW5nKCkpOwogfQogCi12b2lkIFBsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhh
c2gpCit2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0
aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0g
ICAgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2hhc2hU
b09yaWdpbk1hcC5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIGlmIChpdCA9PSBtX2hhc2hU
b09yaWdpbk1hcC5lbmQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVuc2ln
bmVkLCBTdHJpbmc+Pjo6Y29uc3RfaXRlcmF0b3Igc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNoVG9P
cmlnaW5NYXAuZmluZChzZXNzaW9uSUQpOworICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0OworICAgIGJvb2wgY29udGFpbnMgPSBmYWxzZTsKKyAgICBpZiAo
c2Vzc2lvbkl0ZXJhdG9yICE9IG1faGFzaFRvT3JpZ2luTWFwLmVuZCgpKSB7CisgICAgICAgIGl0
ID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAg
ICBjb250YWlucyA9IGl0ICE9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCk7CisgICAgfQor
ICAgIGlmICghY29udGFpbnMpIHsKKyAgICAgICAgc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNoVG9P
cmlnaW5NYXAuZmluZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGl0
ID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAg
ICBpZiAoaXQgPT0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkgeworICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBkb3VibGUgbmV3RXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZUZyb21O
b3coKTsKLSAgICBtX2F1dG9TdGFydFRhYmxlLmZpbmQoaXQtPnZhbHVlKS0+dmFsdWUuc2V0KHBs
dWdJbk9yaWdpbkhhc2gsIG5ld0V4cGlyYXRpb25UaW1lKTsKLSAgICBtX2NvbnRleHQtPnNlbmRU
b0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkQWRkUGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9uVGltZSkpOworICAgIG1f
YXV0b1N0YXJ0VGFibGUuYWRkKHNlc3Npb25JRCwgQXV0b1N0YXJ0VGFibGUoKSkuaXRlcmF0b3It
PnZhbHVlLmFkZChpdC0+dmFsdWUsIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goKSkuaXRlcmF0
b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9uVGltZSk7CisgICAg
bV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFk
ZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlv
blRpbWUsIHNlc3Npb25JRCkpOwogICAgIG1fY29udGV4dC0+Y2xpZW50KCkucGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZChtX2NvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIu
aAppbmRleCBjM2IzOTAyLi41NDJkMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXJfaAogI2RlZmluZSBQbHVn
SW5BdXRvU3RhcnRQcm92aWRlcl9oCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JREhhc2gu
aD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQ0LDYgKzQ1LDcgQEAgY2xhc3MgSW1tdXRhYmxlRGlj
dGlvbmFyeTsKIGNsYXNzIFdlYkNvbnRleHQ7CiAKIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwg
ZG91YmxlPiBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoOwordHlwZWRlZiBIYXNoTWFwPFdlYkNv
cmU6OlNlc3Npb25JRCwgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaD4gU2Vzc2lvblBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2g7CiB0eXBlZGVmIFZlY3RvcjxTdHJpbmc+IFBsdWdJbkF1dG9TdGFy
dE9yaWdpbnM7CiAKIGNsYXNzIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyIHsKQEAgLTUxLDggKzUz
LDggQEAgY2xhc3MgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKFdlYkNvbnRleHQqKTsKIAotICAgIHZvaWQgYWRk
QXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBs
dWdJbk9yaWdpbkhhc2gpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICB2b2lkIGFkZEF1dG9TdGFydE9yaWdpbkhhc2go
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBXZWJD
b3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogCiAgICAgUGFzc1Jl
ZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBhdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGUoSW1tdXRhYmxlRGljdGlvbmFy
eSYpOwpAQCAtNjgsOSArNzAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEF1dG9TdGFydE9y
aWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KEltbXV0YWJsZURpY3Rpb25hcnkmLCBzdGQ6
OmZ1bmN0aW9uPGJvb2woZG91YmxlIGV4cGlyYXRpb25UaW1lc3RhbXApPik7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoLCBDYXNlRm9sZGlu
Z0hhc2g+IEF1dG9TdGFydFRhYmxlOwotICAgIEF1dG9TdGFydFRhYmxlIG1fYXV0b1N0YXJ0VGFi
bGU7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgQXV0b1N0YXJ0VGFi
bGU+IFNlc3Npb25BdXRvU3RhcnRUYWJsZTsKKyAgICBTZXNzaW9uQXV0b1N0YXJ0VGFibGUgbV9h
dXRvU3RhcnRUYWJsZTsKIAotICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4gbV9oYXNoVG9P
cmlnaW5NYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWdu
ZWQsIFN0cmluZz4+IG1faGFzaFRvT3JpZ2luTWFwOwogCiAgICAgUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2lucyBtX2F1dG9TdGFydE9yaWdpbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwCmluZGV4IGNjYjExODguLjQ1YmVlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKQEAgLTEzMjEsMTQgKzEzMjEsMTQgQEAgdm9pZCBXZWJDb250ZXh0
OjpzZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sIGZsYWcpCiAg
ICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRKYXZhU2NyaXB0
R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChmbGFnKSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4
dDo6YWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4s
IHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpCit2b2lkIFdlYkNvbnRleHQ6OmFkZFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVn
SW5PcmlnaW5IYXNoLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIG1fcGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXIuYWRkQXV0b1N0YXJ0T3JpZ2luSGFzaChwYWdlT3JpZ2luLCBwbHVnSW5Pcmln
aW5IYXNoKTsKKyAgICBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmFkZEF1dG9TdGFydE9yaWdp
bkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklEKTsKIH0KIAotdm9p
ZCBXZWJDb250ZXh0OjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBs
dWdJbk9yaWdpbkhhc2gpCit2b2lkIFdlYkNvbnRleHQ6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmRpZFJlY2VpdmVVc2VySW50ZXJhY3Rp
b24ocGx1Z0luT3JpZ2luSGFzaCk7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5kaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gsIHNlc3Npb25JRCk7CiB9CiAK
IFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gV2ViQ29udGV4dDo6cGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CmluZGV4IDI1NDVjNTAuLjMxYmNhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaApAQCAtNDIwLDggKzQyMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm90
aWZpY2F0aW9uT2JzZXJ2ZXJzKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9y
aWdpbkhhc2gpOwotICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNp
Z25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICB2b2lkIGFkZFBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNo
LCBXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRl
cmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CiAgICAgdm9pZCBzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVk
KGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3Nh
Z2VzLmluCmluZGV4IDFjM2MzNTAuLjJlNGY0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluCkBAIC01OSw2ICs1OSw2IEBAIG1lc3NhZ2Vz
IC0+IFdlYkNvbnRleHQgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICAjIFBsdWctaW4g
bWVzc2FnZXMuCi0gICAgdm9pZCBBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKFN0cmluZyBw
YWdlT3JpZ2luLCB1aW50MzJfdCBoYXNoKQotICAgIHZvaWQgUGx1Z0luRGlkUmVjZWl2ZVVzZXJJ
bnRlcmFjdGlvbih1aW50MzJfdCBoYXNoKQorICAgIHZvaWQgQWRkUGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaChTdHJpbmcgcGFnZU9yaWdpbiwgdWludDMyX3QgaGFzaCwgV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICB2b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24o
dWludDMyX3QgaGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA1OTNk
ZDNmLi40NWE2Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC0xNzM2LDcgKzE3MzYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBs
dWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oKQogICAgIFN0cmluZyBwbHVnaW5PcmlnaW4g
PSBwbHVnSW5JbWFnZUVsZW1lbnQtPmxvYWRlZFVybCgpLmhvc3QoKTsKICAgICBTdHJpbmcgbWlt
ZVR5cGUgPSBwbHVnSW5JbWFnZUVsZW1lbnQtPmxvYWRlZE1pbWVUeXBlKCk7CiAKLSAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5wbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBhZ2VPcmln
aW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBs
dWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBt
aW1lVHlwZSwgcGx1Z0luSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+c2Vzc2lvbklE
KCkpOwogfQogCiBib29sIFBsdWdpblZpZXc6OnNob3VsZENyZWF0ZVRyYW5zaWVudFBhaW50aW5n
U25hcHNob3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCmluZGV4IDg1NGQ3NzMuLmUz
NTU5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z0luQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgYm9vbCBX
ZWJQbHVnSW5DbGllbnQ6OnNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdAogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zaG91bGRQ
bHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKG1fcGFnZSwgcGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2lu
LCBtaW1lVHlwZSk7CiB9CiAKLXZvaWQgV2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFydEZyb21Pcmln
aW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFydEZy
b21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wbHVnSW5EaWRTdGFydEZyb21PcmlnaW4o
cGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSk7CisgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkucGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwg
bWltZVR5cGUsIHNlc3Npb25JRCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z0luQ2xpZW50LmgKaW5kZXggNTMxMDI4YS4uMDJiOGFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5o
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYlBsdWdJbkNsaWVudF9oCiAKICNpbmNsdWRl
IDxXZWJDb3JlL1BsdWdJbkNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zOSw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0
IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29y
ZTo6U2Vzc2lvbklEKTsKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBlZTk1ZDE2Li44Y2I2YWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMiwgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIwMSw2ICsyMDEsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNpZiBVU0UoU09V
UCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViU291
cFJlcXVlc3RNYW5hZ2VyPigpOwogI2VuZGlmCisgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMuYWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2lnbmVk
LCBkb3VibGU+KCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzKGNv
bnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAg
LTczNCwxMSArNzM1LDIyIEBAIHN0YXRpYyB1bnNpZ25lZCBoYXNoRm9yUGx1Z0luT3JpZ2luKGNv
bnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnCiAgICAgcmV0dXJuIGhh
c2hlci5oYXNoKCk7CiB9CiAKLWJvb2wgV2ViUHJvY2Vzczo6aXNQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpCitib29sIFdlYlByb2Nlc3M6OmlzUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmluZChwbHVnSW5Pcmln
aW5IYXNoKTsKLSAgICBpZiAoaXQgPT0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZW5k
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25J
RCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj46OmNvbnN0X2l0ZXJhdG9yIHNlc3Npb25JdGVy
YXRvciA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQoc2Vzc2lvbklEKTsKKyAg
ICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Ojpjb25zdF9pdGVyYXRvciBpdDsKKyAgICBib29s
IGNvbnRhaW5zID0gZmFsc2U7CisKKyAgICBpZiAoc2Vzc2lvbkl0ZXJhdG9yICE9IG1fcGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmVuZCgpKSB7CisgICAgICAgIGl0ID0gc2Vzc2lvbkl0ZXJh
dG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBjb250YWlucyA9IGl0
ICE9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCk7CisgICAgfQorICAgIGlmICghY29udGFp
bnMpIHsKKyAgICAgICAgc2Vzc2lvbkl0ZXJhdG9yID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMuZmluZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGl0ID0g
c2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBp
ZiAoaXQgPT0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgPCBpdC0+dmFsdWU7CiB9
CiAKQEAgLTc1NiwxMCArNzY4LDEwIEBAIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkUGx1Z0luQXV0
b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpCiAjZW5kaWYK
IAogICAgIC8vIExhc3RseSBjaGVjayBhZ2FpbnN0IHRoZSBtb3JlIGV4cGxpY2l0IGhhc2ggbGlz
dC4KLSAgICByZXR1cm4gaXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGhhc2hGb3JQbHVnSW5P
cmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSkpOworICAgIHJldHVybiBp
c1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goaGFzaEZvclBsdWdJbk9yaWdpbihwYWdlT3JpZ2lu
LCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKSwgcGFnZS0+c2Vzc2lvbklEKCkpOwogfQogCi12b2lk
IFdlYlByb2Nlc3M6OnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VP
cmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQordm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5n
JiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAocGFnZU9yaWdpbi5pc0Vt
cHR5KCkpIHsKICAgICAgICAgTE9HKFBsdWdpbnMsICJOb3QgYWRkaW5nIGVtcHR5IHBhZ2Ugb3Jp
Z2luIik7CkBAIC03NjcsNyArNzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFy
dEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcKICAgICB9
CiAKICAgICB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoID0gaGFzaEZvclBsdWdJbk9yaWdpbihw
YWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKLSAgICBpZiAoaXNQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gpKSB7CisgICAgaWYgKGlzUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uSUQpKSB7CiAgICAgICAg
IExPRyhQbHVnaW5zLCAiSGFzaCAleCBhbHJlYWR5IGV4aXN0cyBhcyBhdXRvLXN0YXJ0IG9yaWdp
biAocmVxdWVzdCBmb3IgJXMpIiwgcGx1Z0luT3JpZ2luSGFzaCwgcGFnZU9yaWdpbi51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc3NiwyNSArNzg4LDI2IEBAIHZv
aWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFn
ZU9yaWdpbiwgY29uc3QgU3RyaW5nCiAgICAgLy8gY29tZXMgYmFjayBmcm9tIHRoZSBwYXJlbnQg
cHJvY2Vzcy4gVGVtcG9yYXJpbHkgYWRkIHRoaXMgaGFzaCB0byB0aGUgbGlzdCB3aXRoIGEgdGhp
cnR5CiAgICAgLy8gc2Vjb25kIHRpbWVvdXQuIFRoYXQgd2F5LCBldmVuIGlmIHRoZSBwYXJlbnQg
ZGVjaWRlcyBub3QgdG8gYWRkIGl0LCB3ZSdsbCBvbmx5IGJlCiAgICAgLy8gaW5jb3JyZWN0IGZv
ciBhIGxpdHRsZSB3aGlsZS4KLSAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5zZXQo
cGx1Z0luT3JpZ2luSGFzaCwgY3VycmVudFRpbWUoKSArIDMwICogMTAwMCk7CisgICAgbV9wbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKHNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwg
ZG91YmxlPigpKS5pdGVyYXRvci0+dmFsdWUuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGN1cnJlbnRU
aW1lKCkgKyAzMCAqIDEwMDApOwogCi0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViQ29udGV4dDo6QWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChwYWdl
T3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoKSwgMCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6QWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaChwYWdlT3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uSUQpLCAwKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzOjpkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVk
IHBsdWdJbk9yaWdpbkhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSkKK3ZvaWQgV2ViUHJvY2Vz
czo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5I
YXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAg
Ly8gV2hlbiBjYWxsZWQsIHNvbWUgd2ViIHByb2Nlc3MgKHdoaWNoIGFsc28gbWlnaHQgYmUgdGhp
cyBvbmUpIGFkZGVkIHRoZSBvcmlnaW4gZm9yIGF1dG8tc3RhcnRpbmcsCiAgICAgLy8gb3IgcmVj
ZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4KICAgICAvLyBTZXQgdGhlIGJpdCB0byBhdm9pZCBoYXZp
bmcgcmVkdW5kYW50bHkgY2FsbCBpbnRvIHRoZSBVSSBwcm9jZXNzIHVwb24gdXNlciBpbnRlcmFj
dGlvbi4KLSAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5zZXQocGx1Z0luT3JpZ2lu
SGFzaCwgZXhwaXJhdGlvblRpbWUpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVz
LmFkZChzZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRlcmF0b3ItPnZh
bHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0aW9uVGltZSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoY29uc3QgSGFzaE1hcDx1
bnNpZ25lZCwgZG91YmxlPiYgaGFzaGVzKQogewotICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzLnN3YXAoY29uc3RfY2FzdDxIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Jj4oaGFzaGVz
KSk7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuY2xlYXIoKTsKKyAgICBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRlcmF0b3ItPnZhbHVlLnN3YXAoY29u
c3RfY2FzdDxIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Jj4oaGFzaGVzKSk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcm
IHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQordm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9u
KGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHBh
Z2VPcmlnaW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC04MDMsMTMgKzgxNiwyNCBA
QCB2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdAogICAgIGlmICghcGx1Z0luT3JpZ2luSGFzaCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6aXRlcmF0b3Ig
aXQgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKHBsdWdJbk9yaWdpbkhhc2gp
OwotICAgIGlmIChpdCA9PSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVu
c2lnbmVkLCBkb3VibGU+Pjo6Y29uc3RfaXRlcmF0b3Igc2Vzc2lvbkl0ZXJhdG9yID0gbV9wbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmluZChzZXNzaW9uSUQpOworICAgIEhhc2hNYXA8dW5z
aWduZWQsIGRvdWJsZT46OmNvbnN0X2l0ZXJhdG9yIGl0OworICAgIGJvb2wgY29udGFpbnMgPSBm
YWxzZTsKKyAgICBpZiAoc2Vzc2lvbkl0ZXJhdG9yICE9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzLmVuZCgpKSB7CisgICAgICAgIGl0ID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5maW5k
KHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBjb250YWlucyA9IGl0ICE9IHNlc3Npb25JdGVy
YXRvci0+dmFsdWUuZW5kKCk7CisgICAgfQorICAgIGlmICghY29udGFpbnMpIHsKKyAgICAgICAg
c2Vzc2lvbkl0ZXJhdG9yID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmluZChTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGl0ID0gc2Vzc2lvbkl0ZXJhdG9y
LT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBpZiAoaXQgPT0gc2Vzc2lv
bkl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAoaXQtPnZhbHVlIC0gY3VycmVudFRpbWUoKSA+IHBsdWdJbkF1dG9TdGFydEV4cGlyYXRp
b25UaW1lVXBkYXRlVGhyZXNob2xkKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpQbHVnSW5EaWRSZWNl
aXZlVXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gpLCAwKTsKKyAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpQbHVnSW5EaWRSZWNl
aXZlVXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gsIHNlc3Npb25JRCksIDApOwogfQog
CiBzdGF0aWMgdm9pZCBmcm9tQ291bnRlZFNldFRvSGFzaE1hcChUeXBlQ291bnRTZXQqIGNvdW50
ZWRTZXQsIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4mIG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMmUyOTg5YS4uZjM5NmU0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJUZXh0
Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIuaCIKICNpbmNs
dWRlICJWaXNpdGVkTGlua1RhYmxlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JREhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Rp
bWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgpAQCAtMTE5LDggKzExOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZFRyYWNrVmlz
aXRlZExpbmtzKGJvb2wpOwogCiAgICAgYm9vbCBzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3Jp
Z2luKGNvbnN0IFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICB2b2lkIHBsdWdJ
bkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICB2b2lkIHBsdWdJ
bkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25z
dCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgdm9p
ZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25z
dCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6
U2Vzc2lvbklEKTsKKyAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAogICAgIGJvb2wgZnVsbEtl
eWJvYXJkQWNjZXNzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbEtleWJvYXJkQWNjZXNz
RW5hYmxlZDsgfQogCkBAIC0yMTcsOCArMjE3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAg
ICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFj
Y2Vzc0VuYWJsZWQpOwogCi0gICAgYm9vbCBpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5z
aWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgdm9pZCBkaWRBZGRQbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGlt
ZSk7CisgICAgYm9vbCBpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0lu
T3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGRpZEFkZFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4cGly
YXRpb25UaW1lLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVzZXRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiYgaGFzaGVz
KTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwpAQCAtMjk0
LDcgKzI5NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFdoZXRoZXIgdmlzaXRlZCBsaW5r
cyBzaG91bGQgYmUgdHJhY2tlZCBvciBub3Qgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIFVJIHBy
b2Nlc3MuCiAgICAgYm9vbCBtX3Nob3VsZFRyYWNrVmlzaXRlZExpbmtzOwogCi0gICAgSGFzaE1h
cDx1bnNpZ25lZCwgZG91YmxlPiBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj4gbV9w
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luczsKIAogICAgIGJvb2wgbV9oYXNTZXRDYWNoZU1vZGVsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDhk
ZTc5MTUuLmI2N2JiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU0LDcgKzU0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgICMgUGx1Zy1pbnMuCi0gICAgRGlkQWRk
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBkb3VibGUgZXhwaXJhdGlv
blRpbWUpCisgICAgRGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNo
LCBkb3VibGUgZXhwaXJhdGlvblRpbWUsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAg
ICAgUmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoSGFzaE1hcDx1aW50MzJfdCxkb3Vi
bGU+IGhhc2hlcykKIAogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVyKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFN0cmluZyBzYW1wbGVMb2dG
aWxlUGF0aCwgZG91YmxlIGludGVydmFsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230637</attachid>
            <date>2014-05-01 18:10:46 -0700</date>
            <delta_ts>2014-05-01 19:20:35 -0700</delta_ts>
            <desc>address comments + fix bug</desc>
            <filename>pluginsession.10.diff</filename>
            <type>text/plain</type>
            <size>34736</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjMwYTBiLi5iNzc4NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDUtMDEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KToKKyAgICAg
ICAgKiBwYWdlL1BsdWdJbkNsaWVudC5oOgorCiAyMDE0LTA1LTAxICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBIVE1MTWVkaWFFbGVtZW50OiBSZW1vdmUgdHdv
IHVubmVjZXNzYXJ5IHZpcnR1YWwgb3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggYjgxNjI0My4uZDY0NjAzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC01MTEs
NyArNTExLDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFw
c2hvdChQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGV2ZW50LAogCiAgICAgU3RyaW5nIHBsdWdJbk9y
aWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYg
IVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5w
YWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpKSAmJiBk
b2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hv
dHRpbmdFbmFibGVkKCkpCi0gICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQo
KS0+ZGlkU3RhcnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCkp
OworICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPmRpZFN0YXJ0RnJv
bU9yaWdpbihkb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVS
TCgpLmhvc3QoKSwgcGx1Z0luT3JpZ2luLCBsb2FkZWRNaW1lVHlwZSgpLCBkb2N1bWVudCgpLnBh
Z2UoKS0+c2Vzc2lvbklEKCkpOwogCiAgICAgTE9HKFBsdWdpbnMsICIlcCBVc2VyIGNsaWNrZWQg
b24gc25hcHNob3R0ZWQgcGx1Zy1pbi4gUmVzdGFydC4iLCB0aGlzKTsKICAgICByZXN0YXJ0U25h
cHNob3R0ZWRQbHVnSW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0lu
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCmluZGV4IDY1ODJj
NGUuLjkyOGI5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnSW5DbGllbnQuaApAQCAtMjYsNiArMjYs
NyBAQAogI2lmbmRlZiBQbHVnSW5DbGllbnRfaAogI2RlZmluZSBQbHVnSW5DbGllbnRfaAogCisj
aW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzQsNyArMzUsNyBAQCBjbGFzcyBQbHVnSW5DbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9y
aWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYg
cGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFNlc3Npb25JRCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGx1Z0lu
Q2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmM1MDA4OC4uZGU3YjQxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ0IEBACisyMDE0LTA1LTAxICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNv
bT4KKworICAgICAgICBTZXNzaW9uLWF3YXJlIHBsdWdpbiBhdXRvc3RhcnQgZGF0YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNzU4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xNTkwNjU0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OlBsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmFk
ZEF1dG9TdGFydE9yaWdpbkhhc2gpOgorICAgICAgICAoV2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQ
cm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNU
YWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFydE9yaWdpbnNBcnJheSk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6YWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3Jp
Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OldlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojppc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hl
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2
ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE0LTA1LTAx
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
W1dLMl0gVHdlYWsgdGhlIGV4dGVuZGVkIGJhY2tncm91bmQgZXhjbHVzaW9uIGZvciBNb2JpbGVT
YWZhcmkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCAxOGRjMzQ2Li5mZmM5ZWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgogCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCA4NjQ1OGZmLi5mZTU5MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Np
b25JREhhc2guaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTE1MCw3ICsxNTEs
NyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2Vz
TmV0d29ya1Byb2Nlc3M7CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4g
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lv
bklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
ZXM7CiAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIAogICAgIGJv
b2wgbWVtb3J5Q2FjaGVEaXNhYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAppbmRleCBlNTcy
NDAzLi4wNzBhYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQyLDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6UGx1Z0luQXV0
b1N0YXJ0UHJvdmlkZXIoV2ViQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250
ZXh0KQogeworICAgIG1faGFzaFRvT3JpZ2luTWFwLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPigpKTsKKyAgICBtX2F1dG9TdGFydFRh
YmxlLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgQXV0b1N0YXJ0VGFibGUoKSk7
CiB9CiAKIHN0YXRpYyBkb3VibGUgZXhwaXJhdGlvblRpbWVGcm9tTm93KCkKQEAgLTQ5LDUxICs1
MSw1NCBAQCBzdGF0aWMgZG91YmxlIGV4cGlyYXRpb25UaW1lRnJvbU5vdygpCiAgICAgcmV0dXJu
IGN1cnJlbnRUaW1lKCkgKyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVRocmVzaG9sZDsK
IH0KIAotdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0YXJ0T3JpZ2luSGFz
aChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpCit2
b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphZGRBdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0
IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKLSAgICBpZiAobV9oYXNoVG9PcmlnaW5NYXAuY29udGFpbnMocGx1Z0lu
T3JpZ2luSGFzaCkpCisgICAgYXV0byBzZXNzaW9uSXRlcmF0b3IgPSBtX2hhc2hUb09yaWdpbk1h
cC5maW5kKHNlc3Npb25JRCk7CisgICAgaWYgKHNlc3Npb25JdGVyYXRvciA9PSBtX2hhc2hUb09y
aWdpbk1hcC5lbmQoKSkgeworICAgICAgICBpZiAobV9oYXNoVG9PcmlnaW5NYXAuZ2V0KFNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKS5jb250YWlucyhwbHVnSW5PcmlnaW5IYXNoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNoVG9Pcmln
aW5NYXAuc2V0KHNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPigpKS5pdGVyYXRv
cjsKKyAgICB9IGVsc2UgaWYgKHNlc3Npb25JdGVyYXRvci0+dmFsdWUuY29udGFpbnMocGx1Z0lu
T3JpZ2luSGFzaCkgfHwgbV9oYXNoVG9PcmlnaW5NYXAuZ2V0KFNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKS5jb250YWlucyhwbHVnSW5PcmlnaW5IYXNoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQXV0b1N0YXJ0VGFibGU6Oml0ZXJhdG9yIGl0ID0gbV9hdXRvU3RhcnRUYWJsZS5maW5k
KHBhZ2VPcmlnaW4pOwotICAgIGlmIChpdCA9PSBtX2F1dG9TdGFydFRhYmxlLmVuZCgpKQotICAg
ICAgICBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuYWRkKHBhZ2VPcmlnaW4sIFBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2goKSkuaXRlcmF0b3I7CisgICAgQXV0b1N0YXJ0VGFibGU6Oml0ZXJhdG9yIGl0
ID0gbV9hdXRvU3RhcnRUYWJsZS5hZGQoc2Vzc2lvbklELCBBdXRvU3RhcnRUYWJsZSgpKS5pdGVy
YXRvci0+dmFsdWUuYWRkKHBhZ2VPcmlnaW4sIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCgpKS5p
dGVyYXRvcjsKIAogICAgIGRvdWJsZSBleHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJv
bU5vdygpOwogICAgIGl0LT52YWx1ZS5zZXQocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRp
bWUpOwotICAgIG1faGFzaFRvT3JpZ2luTWFwLnNldChwbHVnSW5PcmlnaW5IYXNoLCBwYWdlT3Jp
Z2luKTsKKyAgICBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBw
YWdlT3JpZ2luKTsKIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdp
bkhhc2gsIGV4cGlyYXRpb25UaW1lKSk7Ci0gICAgbV9jb250ZXh0LT5jbGllbnQoKS5wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXNDaGFuZ2VkKG1fY29udGV4dCk7CisgICAgbV9jb250ZXh0LT5z
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUsIHNlc3Npb25J
RCkpOworCisgICAgaWYgKCFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgbV9jb250
ZXh0LT5jbGllbnQoKS5wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNDaGFuZ2VkKG1fY29udGV4
dCk7CiB9CiAKLVBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2ggUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXI6OmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkoKSBjb25zdAorU2Vzc2lvblBsdWdJbkF1dG9T
dGFydE9yaWdpbk1hcCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luSGFz
aGVzQ29weSgpIGNvbnN0CiB7Ci0gICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCBjb3B5TWFw
OwotICAgIEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2F1dG9TdGFydFRh
YmxlLmVuZCgpOwotICAgIGZvciAoQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9hdXRvU3RhcnRUYWJsZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRlcmF0b3IgbWFwRW5kID0gaXQtPnZhbHVl
LmVuZCgpOwotICAgICAgICBmb3IgKFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0
ZXJhdG9yIG1hcEl0ID0gaXQtPnZhbHVlLmJlZ2luKCk7IG1hcEl0ICE9IG1hcEVuZDsgKyttYXBJ
dCkKLSAgICAgICAgICAgIGNvcHlNYXAuc2V0KG1hcEl0LT5rZXksIG1hcEl0LT52YWx1ZSk7Cisg
ICAgU2Vzc2lvblBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCBzZXNzaW9uTWFwOworCisgICAgZm9y
IChjb25zdCBhdXRvJiBzZXNzaW9uS2V5T3JpZ2luSGFzaCA6IG1fYXV0b1N0YXJ0VGFibGUpIHsK
KyAgICAgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFwJiBtYXAgPSBzZXNzaW9uTWFwLmFkZChz
ZXNzaW9uS2V5T3JpZ2luSGFzaC5rZXksIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCgpKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYga2V5T3JpZ2luSGFzaCA6IHNl
c3Npb25LZXlPcmlnaW5IYXNoLnZhbHVlKQorICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBv
cmlnaW5IYXNoIDoga2V5T3JpZ2luSGFzaC52YWx1ZSkKKyAgICAgICAgICAgICAgICBtYXAuc2V0
KG9yaWdpbkhhc2gua2V5LCBvcmlnaW5IYXNoLnZhbHVlKTsKICAgICB9Ci0gICAgcmV0dXJuIGNv
cHlNYXA7CisgICAgcmV0dXJuIHNlc3Npb25NYXA7CiB9CiAKIFBhc3NSZWZQdHI8SW1tdXRhYmxl
RGljdGlvbmFyeT4gUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9TdGFydE9yaWdpbnNUYWJs
ZUNvcHkoKSBjb25zdAogewogICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwot
ICAgIEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2F1dG9TdGFydFRhYmxl
LmVuZCgpOworCiAgICAgZG91YmxlIG5vdyA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgZm9yIChBdXRv
U3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGZvciAoY29uc3QgYXV0byYgc3RyaW5nT3JpZ2luSGFz
aCA6IG1fYXV0b1N0YXJ0VGFibGUuZ2V0KFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSkg
ewogICAgICAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIGhhc2hNYXA7Ci0gICAgICAg
IFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0ZXJhdG9yIHZhbHVlRW5kID0gaXQt
PnZhbHVlLmVuZCgpOwotICAgICAgICBmb3IgKFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNv
bnN0X2l0ZXJhdG9yIHZhbHVlSXQgPSBpdC0+dmFsdWUuYmVnaW4oKTsgdmFsdWVJdCAhPSB2YWx1
ZUVuZDsgKyt2YWx1ZUl0KSB7Ci0gICAgICAgICAgICBpZiAobm93ID4gdmFsdWVJdC0+dmFsdWUp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBoYXNoTWFwLnNldChTdHJp
bmc6Om51bWJlcih2YWx1ZUl0LT5rZXkpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKHZhbHVlSXQtPnZh
bHVlKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luSGFzaCA6IHN0cmluZ09yaWdp
bkhhc2gudmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChub3cgPD0gb3JpZ2luSGFzaC52YWx1ZSkK
KyAgICAgICAgICAgICAgICBoYXNoTWFwLnNldChTdHJpbmc6Om51bWJlcihvcmlnaW5IYXNoLmtl
eSksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luSGFzaC52YWx1ZSkpOwogICAgICAgICB9Ci0K
ICAgICAgICAgaWYgKGhhc2hNYXAuc2l6ZSgpKQotICAgICAgICAgICAgbWFwLnNldChpdC0+a2V5
LCBJbW11dGFibGVEaWN0aW9uYXJ5OjpjcmVhdGUoc3RkOjptb3ZlKGhhc2hNYXApKSk7CisgICAg
ICAgICAgICBtYXAuc2V0KHN0cmluZ09yaWdpbkhhc2gua2V5LCBJbW11dGFibGVEaWN0aW9uYXJ5
OjpjcmVhdGUoc3RkOjptb3ZlKGhhc2hNYXApKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEltbXV0
YWJsZURpY3Rpb25hcnk6OmNyZWF0ZShzdGQ6Om1vdmUobWFwKSk7CkBAIC0xMjEsNTggKzEyNiw2
NCBAQCB2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFi
bGVXaXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dAogICAgIG1faGFzaFRvT3JpZ2luTWFwLmNsZWFy
KCk7CiAgICAgbV9hdXRvU3RhcnRUYWJsZS5jbGVhcigpOwogICAgIEhhc2hNYXA8dW5zaWduZWQs
IGRvdWJsZT4gaGFzaE1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+JiBoYXNoVG9P
cmlnaW5NYXAgPSBtX2hhc2hUb09yaWdpbk1hcC5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IEF1dG9TdGFydFRhYmxlJiBhc3QgPSBtX2F1dG9TdGFydFRhYmxlLmFkZChTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSwgQXV0b1N0YXJ0VGFibGUoKSkuaXRlcmF0b3ItPnZhbHVlOwogCi0g
ICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdGFi
bGUubWFwKCkuZW5kKCk7Ci0gICAgZm9yIChJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjpj
b25zdF9pdGVyYXRvciBpdCA9IHRhYmxlLm1hcCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoIGhhc2hlczsKLSAgICAgICAgSW1t
dXRhYmxlRGljdGlvbmFyeSogaGFzaGVzRm9yUGFnZSA9IHN0YXRpY19jYXN0PEltbXV0YWJsZURp
Y3Rpb25hcnkqPihpdC0+dmFsdWUuZ2V0KCkpOwotICAgICAgICBJbW11dGFibGVEaWN0aW9uYXJ5
OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBoYXNoRW5kID0gaGFzaGVzRm9yUGFnZS0+bWFwKCku
ZW5kKCk7Ci0gICAgICAgIGZvciAoSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgaGFzaEl0ID0gaGFzaGVzRm9yUGFnZS0+bWFwKCkuYmVnaW4oKTsgaGFzaEl0ICE9
IGhhc2hFbmQ7ICsraGFzaEl0KSB7CisgICAgZm9yIChhdXRvJiBzdHJEaWN0IDogdGFibGUubWFw
KCkpIHsKKyAgICAgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFwIGhhc2hlczsKKyAgICAgICAg
Zm9yIChhdXRvJiBoYXNoVGltZSA6IHN0YXRpY19jYXN0PEltbXV0YWJsZURpY3Rpb25hcnkqPihz
dHJEaWN0LnZhbHVlLmdldCgpKS0+bWFwKCkpIHsKICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBoYXNoID0gaGFzaEl0LT5rZXkudG9VSW50KCZvayk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBoYXNoID0gaGFzaFRpbWUua2V5LnRvVUludCgmb2spOwogICAgICAgICAg
ICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYg
KGhhc2hJdC0+dmFsdWUtPnR5cGUoKSAhPSBBUEk6OkRvdWJsZTo6QVBJVHlwZSkKKyAgICAgICAg
ICAgIGlmIChoYXNoVGltZS52YWx1ZS0+dHlwZSgpICE9IEFQSTo6RG91YmxlOjpBUElUeXBlKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBkb3VibGUgZXhwaXJhdGlv
blRpbWUgPSBzdGF0aWNfY2FzdDxBUEk6OkRvdWJsZSo+KGhhc2hJdC0+dmFsdWUuZ2V0KCkpLT52
YWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGV4cGlyYXRpb25UaW1lID0gc3RhdGljX2Nhc3Q8
QVBJOjpEb3VibGUqPihoYXNoVGltZS52YWx1ZS5nZXQoKSktPnZhbHVlKCk7CiAgICAgICAgICAg
ICBpZiAoIWlzRXhwaXJhdGlvblRpbWVBY2NlcHRhYmxlKGV4cGlyYXRpb25UaW1lKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaGFzaGVzLnNldChoYXNoLCBleHBp
cmF0aW9uVGltZSk7CiAgICAgICAgICAgICBoYXNoTWFwLnNldChoYXNoLCBleHBpcmF0aW9uVGlt
ZSk7Ci0gICAgICAgICAgICBtX2hhc2hUb09yaWdpbk1hcC5zZXQoaGFzaCwgaXQtPmtleSk7Cisg
ICAgICAgICAgICBoYXNoVG9PcmlnaW5NYXAuc2V0KGhhc2gsIHN0ckRpY3Qua2V5KTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghaGFzaGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fYXV0
b1N0YXJ0VGFibGUuc2V0KGl0LT5rZXksIGhhc2hlcyk7CisgICAgICAgICAgICBhc3Quc2V0KHN0
ckRpY3Qua2V5LCBoYXNoZXMpOwogICAgIH0KIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2hlcyhoYXNoTWFwKSk7CisgICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyho
YXNoTWFwKSk7CiB9CiAKIHZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OnNldEF1dG9TdGFy
dE9yaWdpbnNBcnJheShBUEk6OkFycmF5JiBvcmlnaW5MaXN0KQogewogICAgIG1fYXV0b1N0YXJ0
T3JpZ2lucy5jbGVhcigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBsZW5ndGggPSBvcmlnaW5M
aXN0LnNpemUoKTsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChvcmlnaW5MaXN0LmF0
KGkpLT50eXBlKCkgIT0gQVBJOjpTdHJpbmc6OkFQSVR5cGUpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgbV9hdXRvU3RhcnRPcmlnaW5zLmFwcGVuZChzdGF0aWNfY2FzdDxBUEk6OlN0
cmluZyo+KG9yaWdpbkxpc3QuYXQoaSkpLT5zdHJpbmcoKSk7Ci0gICAgfQorICAgIGZvciAoY29u
c3QgYXV0byYgc3RyaW5nIDogb3JpZ2luTGlzdC5lbGVtZW50c09mVHlwZTxBUEk6OlN0cmluZz4o
KSkKKyAgICAgICAgbV9hdXRvU3RhcnRPcmlnaW5zLmFwcGVuZChzdHJpbmctPnN0cmluZygpKTsK
IH0KIAotdm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6ZGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKQordm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92
aWRlcjo6ZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNo
LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9oYXNoVG9PcmlnaW5NYXAuZmluZChwbHVnSW5PcmlnaW5I
YXNoKTsKLSAgICBpZiAoaXQgPT0gbV9oYXNoVG9PcmlnaW5NYXAuZW5kKCkpIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPj46OmNvbnN0X2l0ZXJhdG9y
IHNlc3Npb25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoc2Vzc2lvbklEKTsKKyAg
ICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdDsKKyAgICBib29s
IGNvbnRhaW5zID0gZmFsc2U7CisgICAgaWYgKHNlc3Npb25JdGVyYXRvciAhPSBtX2hhc2hUb09y
aWdpbk1hcC5lbmQoKSkgeworICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmlu
ZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAgY29udGFpbnMgPSBpdCAhPSBzZXNzaW9uSXRl
cmF0b3ItPnZhbHVlLmVuZCgpOworICAgIH0KKyAgICBpZiAoIWNvbnRhaW5zKSB7CisgICAgICAg
IHNlc3Npb25JdGVyYXRvciA9IG1faGFzaFRvT3JpZ2luTWFwLmZpbmQoU2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOworICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmlu
ZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAgaWYgKGl0ID09IHNlc3Npb25JdGVyYXRvci0+
dmFsdWUuZW5kKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgZG91YmxlIG5ld0V4cGlyYXRp
b25UaW1lID0gZXhwaXJhdGlvblRpbWVGcm9tTm93KCk7Ci0gICAgbV9hdXRvU3RhcnRUYWJsZS5m
aW5kKGl0LT52YWx1ZSktPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9u
VGltZSk7Ci0gICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCwg
bmV3RXhwaXJhdGlvblRpbWUpKTsKKyAgICBtX2F1dG9TdGFydFRhYmxlLmFkZChzZXNzaW9uSUQs
IEF1dG9TdGFydFRhYmxlKCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQoaXQtPnZhbHVlLCBQbHVnSW5B
dXRvU3RhcnRPcmlnaW5NYXAoKSkuaXRlcmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNo
LCBuZXdFeHBpcmF0aW9uVGltZSk7CisgICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1
Z0luT3JpZ2luSGFzaCwgbmV3RXhwaXJhdGlvblRpbWUsIHNlc3Npb25JRCkpOwogICAgIG1fY29u
dGV4dC0+Y2xpZW50KCkucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZChtX2NvbnRl
eHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnSW5BdXRvU3RhcnRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaAppbmRleCBjM2IzOTAyLi5kZDM0MjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQ
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1
dG9TdGFydFByb3ZpZGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXJfaAogI2RlZmluZSBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcl9oCiAKKyNpbmNs
dWRlIDxXZWJDb3JlL1Nlc3Npb25JREhhc2guaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQzLDcg
KzQ0LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5Owog
Y2xhc3MgV2ViQ29udGV4dDsKIAotdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+IFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2g7Cit0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJs
ZT4gUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFwOwordHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlNl
c3Npb25JRCwgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luTWFwPiBTZXNzaW9uUGx1Z0luQXV0b1N0YXJ0
T3JpZ2luTWFwOwogdHlwZWRlZiBWZWN0b3I8U3RyaW5nPiBQbHVnSW5BdXRvU3RhcnRPcmlnaW5z
OwogCiBjbGFzcyBQbHVnSW5BdXRvU3RhcnRQcm92aWRlciB7CkBAIC01MSwxNSArNTMsMTUgQEAg
Y2xhc3MgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IFBs
dWdJbkF1dG9TdGFydFByb3ZpZGVyKFdlYkNvbnRleHQqKTsKIAotICAgIHZvaWQgYWRkQXV0b1N0
YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9y
aWdpbkhhc2gpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoKTsKKyAgICB2b2lkIGFkZEF1dG9TdGFydE9yaWdpbkhhc2goY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBXZWJDb3JlOjpT
ZXNzaW9uSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBw
bHVnSW5PcmlnaW5IYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogCiAgICAgUGFzc1JlZlB0cjxJ
bW11dGFibGVEaWN0aW9uYXJ5PiBhdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5KCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGUoSW1tdXRhYmxlRGljdGlvbmFyeSYpOwog
ICAgIHZvaWQgc2V0QXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVy
VGltZShJbW11dGFibGVEaWN0aW9uYXJ5JiwgZG91YmxlIHRpbWUpOwogICAgIHZvaWQgc2V0QXV0
b1N0YXJ0T3JpZ2luc0FycmF5KEFQSTo6QXJyYXkmKTsKIAotICAgIFBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2ggYXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSgpIGNvbnN0OworICAgIFNlc3Npb25Q
bHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAgYXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ29weSgpIGNvbnN0
OwogICAgIGNvbnN0IFBsdWdJbkF1dG9TdGFydE9yaWdpbnMmIGF1dG9TdGFydE9yaWdpbnMoKSBj
b25zdCB7IHJldHVybiBtX2F1dG9TdGFydE9yaWdpbnM7IH0KIAogcHJpdmF0ZToKQEAgLTY3LDEw
ICs2OSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRBdXRvU3RhcnRPcmlnaW5zVGFibGVX
aXRoSXRlbXNQYXNzaW5nVGVzdChJbW11dGFibGVEaWN0aW9uYXJ5Jiwgc3RkOjpmdW5jdGlvbjxi
b29sKGRvdWJsZSBleHBpcmF0aW9uVGltZXN0YW1wKT4pOwogCi0gICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCwgQ2FzZUZvbGRpbmdIYXNoPiBBdXRv
U3RhcnRUYWJsZTsKLSAgICBBdXRvU3RhcnRUYWJsZSBtX2F1dG9TdGFydFRhYmxlOworICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCwgQ2FzZUZvbGRp
bmdIYXNoPiBBdXRvU3RhcnRUYWJsZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6U2Vz
c2lvbklELCBBdXRvU3RhcnRUYWJsZT4gU2Vzc2lvbkF1dG9TdGFydFRhYmxlOworICAgIFNlc3Np
b25BdXRvU3RhcnRUYWJsZSBtX2F1dG9TdGFydFRhYmxlOwogCi0gICAgSGFzaE1hcDx1bnNpZ25l
ZCwgU3RyaW5nPiBtX2hhc2hUb09yaWdpbk1hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Np
b25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPj4gbV9oYXNoVG9PcmlnaW5NYXA7CiAKICAg
ICBQbHVnSW5BdXRvU3RhcnRPcmlnaW5zIG1fYXV0b1N0YXJ0T3JpZ2luczsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggYzI4ZTczOC4uZjg2YzNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTMxOCwxNCArMTMxOCwx
NCBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJF
bmFibGVkKGJvb2wgZmxhZykKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGZsYWcpKTsK
IH0KIAotdm9pZCBXZWJDb250ZXh0OjphZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0
IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCkKK3ZvaWQgV2Vi
Q29udGV4dDo6YWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VP
cmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hZGRBdXRvU3RhcnRPcmlnaW5IYXNoKHBh
Z2VPcmlnaW4sIHBsdWdJbk9yaWdpbkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuYWRkQXV0b1N0YXJ0T3JpZ2luSGFzaChwYWdlT3JpZ2luLCBwbHVnSW5PcmlnaW5IYXNoLCBz
ZXNzaW9uSUQpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCkKK3ZvaWQgV2ViQ29udGV4dDo6cGx1
Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuZGlk
UmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICBtX3BsdWdJbkF1
dG9TdGFydFByb3ZpZGVyLmRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24ocGx1Z0luT3JpZ2luSGFz
aCwgc2Vzc2lvbklEKTsKIH0KIAogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJD
b250ZXh0OjpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggMDM5OWZmYS4uNjRhNzRmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC00MjIsOCArNDIyLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKTsKICNlbmRpZgogCi0gICAg
dm9pZCBhZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdp
biwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOworICAgIHZvaWQgYWRk
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2ln
bmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBwbHVn
SW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdl
YkNvcmU6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIHNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KaW5kZXggMWMzYzM1MC4uMmU0ZjQ2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTU5
LDYgKzU5LDYgQEAgbWVzc2FnZXMgLT4gV2ViQ29udGV4dCBMZWdhY3lSZWNlaXZlciB7CiAjZW5k
aWYKIAogICAgICMgUGx1Zy1pbiBtZXNzYWdlcy4KLSAgICB2b2lkIEFkZFBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2goU3RyaW5nIHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhhc2gpCi0gICAgdm9pZCBQ
bHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gpCisgICAgdm9pZCBB
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKFN0cmluZyBwYWdlT3JpZ2luLCB1aW50MzJfdCBo
YXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIHZvaWQgUGx1Z0luRGlkUmVj
ZWl2ZVVzZXJJbnRlcmFjdGlvbih1aW50MzJfdCBoYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IDU5M2RkM2YuLjQ1YTZmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE3MzYsNyArMTczNiw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbigpCiAgICAg
U3RyaW5nIHBsdWdpbk9yaWdpbiA9IHBsdWdJbkltYWdlRWxlbWVudC0+bG9hZGVkVXJsKCkuaG9z
dCgpOwogICAgIFN0cmluZyBtaW1lVHlwZSA9IHBsdWdJbkltYWdlRWxlbWVudC0+bG9hZGVkTWlt
ZVR5cGUoKTsKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBsdWdJbkRpZFJlY2VpdmVVc2Vy
SW50ZXJhY3Rpb24ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSk7CisgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwYWdlT3Jp
Z2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlLCBwbHVnSW5JbWFnZUVsZW1lbnQtPmRvY3VtZW50
KCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6c2hvdWxkQ3Jl
YXRlVHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5j
cHAKaW5kZXggODU0ZDc3My4uZTM1NTkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcApAQCAt
NTIsOSArNTIsOSBAQCBib29sIFdlYlBsdWdJbkNsaWVudDo6c2hvdWxkQXV0b1N0YXJ0RnJvbU9y
aWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0CiAgICAgcmV0dXJuIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4obV9wYWdlLCBwYWdl
T3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKIH0KIAotdm9pZCBXZWJQbHVnSW5DbGll
bnQ6OmRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0
cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQordm9pZCBXZWJQbHVn
SW5DbGllbnQ6OmRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNv
bnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBsdWdJ
bkRpZFN0YXJ0RnJvbU9yaWdpbihwYWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsK
KyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wbHVnSW5EaWRTdGFydEZyb21PcmlnaW4ocGFnZU9y
aWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSwgc2Vzc2lvbklEKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAppbmRleCA1MzEwMjhhLi4wMmI4YWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z0luQ2xpZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViUGx1Z0lu
Q2xpZW50X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z0luQ2xpZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TZXNzaW9uSUQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM5LDcgKzQw
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgp
OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBT
dHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogCiAgICAgV2ViUGFnZSogbV9wYWdl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDhjOGJh
OWMuLjAzYzM0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEw
LCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAwLDYgKzIwMCw3IEBAIFdlYlByb2Nlc3M6OldlYlBy
b2Nlc3MoKQogI2lmIFVTRShTT1VQKSAmJiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAg
YWRkU3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXI+KCk7CiAjZW5kaWYKKyAgICBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
aW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNzI2LDExICs3MjcsMjIgQEAgc3RhdGljIHVuc2lnbmVkIGhh
c2hGb3JQbHVnSW5PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IHBsdWcKICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzOjpp
c1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCkKK2Jv
b2wgV2ViUHJvY2Vzczo6aXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJ
bk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgSGFzaE1hcDx1bnNpZ25l
ZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2hlcy5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIGlmIChpdCA9PSBtX3BsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Pjo6Y29uc3Rf
aXRlcmF0b3Igc2Vzc2lvbkl0ZXJhdG9yID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMu
ZmluZChzZXNzaW9uSUQpOworICAgIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT46OmNvbnN0X2l0
ZXJhdG9yIGl0OworICAgIGJvb2wgY29udGFpbnMgPSBmYWxzZTsKKworICAgIGlmIChzZXNzaW9u
SXRlcmF0b3IgIT0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZW5kKCkpIHsKKyAgICAg
ICAgaXQgPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Cisg
ICAgICAgIGNvbnRhaW5zID0gaXQgIT0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5lbmQoKTsKKyAg
ICB9CisgICAgaWYgKCFjb250YWlucykgeworICAgICAgICBzZXNzaW9uSXRlcmF0b3IgPSBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpKTsKKyAgICAgICAgaXQgPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmZpbmQocGx1Z0luT3Jp
Z2luSGFzaCk7CisgICAgICAgIGlmIChpdCA9PSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gY3VycmVudFRp
bWUoKSA8IGl0LT52YWx1ZTsKIH0KIApAQCAtNzQ4LDEwICs3NjAsMTAgQEAgYm9vbCBXZWJQcm9j
ZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFdlYlBhZ2UqIHBhZ2Us
IGNvbnN0IFN0cmkKICNlbmRpZgogCiAgICAgLy8gTGFzdGx5IGNoZWNrIGFnYWluc3QgdGhlIG1v
cmUgZXhwbGljaXQgaGFzaCBsaXN0LgotICAgIHJldHVybiBpc1BsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2goaGFzaEZvclBsdWdJbk9yaWdpbihwYWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVU
eXBlKSk7CisgICAgcmV0dXJuIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChoYXNoRm9yUGx1
Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpLCBwYWdlLT5zZXNz
aW9uSUQoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2lu
KGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCit2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFN0YXJ0RnJv
bU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IGlmIChwYWdlT3JpZ2luLmlzRW1wdHkoKSkgewogICAgICAgICBMT0coUGx1Z2lucywgIk5vdCBh
ZGRpbmcgZW1wdHkgcGFnZSBvcmlnaW4iKTsKQEAgLTc1OSw3ICs3NzEsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4s
IGNvbnN0IFN0cmluZwogICAgIH0KIAogICAgIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2ggPSBo
YXNoRm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOwot
ICAgIGlmIChpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGx1Z0luT3JpZ2luSGFzaCkpIHsK
KyAgICBpZiAoaXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gsIHNl
c3Npb25JRCkpIHsKICAgICAgICAgTE9HKFBsdWdpbnMsICJIYXNoICV4IGFscmVhZHkgZXhpc3Rz
IGFzIGF1dG8tc3RhcnQgb3JpZ2luIChyZXF1ZXN0IGZvciAlcykiLCBwbHVnSW5PcmlnaW5IYXNo
LCBwYWdlT3JpZ2luLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NzY4LDI1ICs3ODAsMzEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21Pcmln
aW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcKICAgICAvLyBjb21lcyBi
YWNrIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzLiBUZW1wb3JhcmlseSBhZGQgdGhpcyBoYXNoIHRv
IHRoZSBsaXN0IHdpdGggYSB0aGlydHkKICAgICAvLyBzZWNvbmQgdGltZW91dC4gVGhhdCB3YXks
IGV2ZW4gaWYgdGhlIHBhcmVudCBkZWNpZGVzIG5vdCB0byBhZGQgaXQsIHdlJ2xsIG9ubHkgYmUK
ICAgICAvLyBpbmNvcnJlY3QgZm9yIGEgbGl0dGxlIHdoaWxlLgotICAgIG1fcGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzLnNldChwbHVnSW5PcmlnaW5IYXNoLCBjdXJyZW50VGltZSgpICsgMzAg
KiAxMDAwKTsKKyAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoc2Vzc2lvbklE
LCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0lu
T3JpZ2luSGFzaCwgY3VycmVudFRpbWUoKSArIDMwICogMTAwMCk7CiAKLSAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpBZGRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoKHBhZ2VPcmlnaW4sIHBsdWdJbk9yaWdpbkhhc2gpLCAwKTsKKyAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpBZGRQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VPcmlnaW4sIHBsdWdJbk9yaWdpbkhhc2gsIHNl
c3Npb25JRCksIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4cGlyYXRpb25U
aW1lKQordm9pZCBXZWJQcm9jZXNzOjpkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVu
c2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSwgU2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKICAgICAvLyBXaGVuIGNhbGxlZCwgc29tZSB3ZWIgcHJvY2VzcyAod2hp
Y2ggYWxzbyBtaWdodCBiZSB0aGlzIG9uZSkgYWRkZWQgdGhlIG9yaWdpbiBmb3IgYXV0by1zdGFy
dGluZywKICAgICAvLyBvciByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uLgogICAgIC8vIFNldCB0
aGUgYml0IHRvIGF2b2lkIGhhdmluZyByZWR1bmRhbnRseSBjYWxsIGludG8gdGhlIFVJIHByb2Nl
c3MgdXBvbiB1c2VyIGludGVyYWN0aW9uLgotICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzLnNldChwbHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0aW9uVGltZSk7CisgICAgbV9wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKHNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91
YmxlPigpKS5pdGVyYXRvci0+dmFsdWUuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25U
aW1lKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkRl
ZmF1bHRIYXNoZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiYgaGFzaGVzKQorewor
ICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmNsZWFyKCk7CisgICAgbV9wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBI
YXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1ZS5zd2FwKGNvbnN0X2Nh
c3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiY+KGhhc2hlcykpOwogfQogCi12b2lkIFdlYlBy
b2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGNvbnN0IEhhc2hNYXA8dW5z
aWduZWQsIGRvdWJsZT4mIGhhc2hlcykKK3ZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoY29uc3QgSGFzaE1hcDxTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWdu
ZWQsIGRvdWJsZT4+JiBoYXNoZXMpCiB7Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
ZXMuc3dhcChjb25zdF9jYXN0PEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mPihoYXNoZXMpKTsK
KyAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1h
cDxTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+Jj4oaGFzaGVzKSk7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBT
dHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQordm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5Pcmln
aW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAg
aWYgKHBhZ2VPcmlnaW4uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC03OTUsMTMgKzgx
MywyNCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24o
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdAogICAgIGlmICghcGx1Z0luT3JpZ2luSGFz
aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6aXRl
cmF0b3IgaXQgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKHBsdWdJbk9yaWdp
bkhhc2gpOwotICAgIGlmIChpdCA9PSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNo
TWFwPHVuc2lnbmVkLCBkb3VibGU+Pjo6Y29uc3RfaXRlcmF0b3Igc2Vzc2lvbkl0ZXJhdG9yID0g
bV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmluZChzZXNzaW9uSUQpOworICAgIEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT46OmNvbnN0X2l0ZXJhdG9yIGl0OworICAgIGJvb2wgY29udGFp
bnMgPSBmYWxzZTsKKyAgICBpZiAoc2Vzc2lvbkl0ZXJhdG9yICE9IG1fcGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzLmVuZCgpKSB7CisgICAgICAgIGl0ID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1
ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBjb250YWlucyA9IGl0ICE9IHNlc3Np
b25JdGVyYXRvci0+dmFsdWUuZW5kKCk7CisgICAgfQorICAgIGlmICghY29udGFpbnMpIHsKKyAg
ICAgICAgc2Vzc2lvbkl0ZXJhdG9yID0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZmlu
ZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGl0ID0gc2Vzc2lvbkl0
ZXJhdG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBpZiAoaXQgPT0g
c2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBpZiAoaXQtPnZhbHVlIC0gY3VycmVudFRpbWUoKSA+IHBsdWdJbkF1dG9TdGFydEV4
cGlyYXRpb25UaW1lVXBkYXRlVGhyZXNob2xkKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpQbHVnSW5E
aWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gpLCAwKTsKKyAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpQbHVnSW5E
aWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdpbkhhc2gsIHNlc3Npb25JRCksIDAp
OwogfQogCiBzdGF0aWMgdm9pZCBmcm9tQ291bnRlZFNldFRvSGFzaE1hcChUeXBlQ291bnRTZXQq
IGNvdW50ZWRTZXQsIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4mIG1hcCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODQ4ZTY0OS4uNGExN2ZiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl
ICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIuaCIK
ICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JREhhc2guaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpAQCAtMTE2LDggKzExNiw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBz
aG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFdlYlBhZ2UqLCBjb25zdCBTdHJp
bmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKLSAgICB2b2lkIHBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJp
bmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKLSAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSk7CisgICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHBsdWdJbkRp
ZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vz
c2lvbklEKTsKIAogICAgIGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsgfQogCkBAIC0yMTQsOSArMjE0LDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9k
ZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKIAotICAgIGJvb2wgaXNQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwotICAg
IHZvaWQgZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5Pcmln
aW5IYXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUpOwotICAgIHZvaWQgcmVzZXRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiYgaGFzaGVz
KTsKKyAgICBib29sIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5P
cmlnaW5IYXNoLCBXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZGlkQWRkUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUgZXhwaXJh
dGlvblRpbWUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCByZXNldFBsdWdJbkF1dG9T
dGFydE9yaWdpbkRlZmF1bHRIYXNoZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiYg
aGFzaGVzKTsKKyAgICB2b2lkIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGNvbnN0
IEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiYg
aGFzaGVzKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOwog
ICAgIHZvaWQgcGxhdGZvcm1DbGVhclJlc291cmNlQ2FjaGVzKFJlc291cmNlQ2FjaGVzVG9DbGVh
cik7CkBAIC0yODgsNyArMjg5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pbkRpZENsb3Nl
OwogCi0gICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiBtX3BsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25l
ZCwgZG91YmxlPj4gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luczsKIAogICAgIGJvb2wgbV9oYXNTZXRDYWNo
ZU1vZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IDVlM2Y2NTIuLjMzZjMyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTUzLDggKzUzLDkgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGVzdHJveVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgICMgUGx1Zy1p
bnMuCi0gICAgRGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1aW50MzJfdCBoYXNoLCBk
b3VibGUgZXhwaXJhdGlvblRpbWUpCi0gICAgUmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
ZXMoSGFzaE1hcDx1aW50MzJfdCxkb3VibGU+IGhhc2hlcykKKyAgICBEaWRBZGRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoKHVpbnQzMl90IGhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSwgV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdp
bkRlZmF1bHRIYXNoZXMoSGFzaE1hcDx1aW50MzJfdCxkb3VibGU+IGhhc2hlcykKKyAgICBSZXNl
dFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwg
SGFzaE1hcDx1aW50MzJfdCxkb3VibGU+PiBoYXNoZXMpCiAKICAgICB2b2lkIFN0YXJ0TWVtb3J5
U2FtcGxlcihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dGaWxlSGFu
ZGxlLCBTdHJpbmcgc2FtcGxlTG9nRmlsZVBhdGgsIGRvdWJsZSBpbnRlcnZhbCk7CiAgICAgdm9p
ZCBTdG9wTWVtb3J5U2FtcGxlcigpOwo=
</data>
<flag name="review"
          id="255019"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="255021"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230643</attachid>
            <date>2014-05-01 19:20:35 -0700</date>
            <delta_ts>2014-05-05 09:49:58 -0700</delta_ts>
            <desc>fix braces</desc>
            <filename>pluginsession.11.diff</filename>
            <type>text/plain</type>
            <size>34759</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjMwYTBiLi41NTY2MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDUtMDEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3Yu
CisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOgor
ICAgICAgICAqIHBhZ2UvUGx1Z0luQ2xpZW50Lmg6CisKIDIwMTQtMDUtMDEgIEFuZHJlYXMgS2xp
bmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6IFJlbW92
ZSB0d28gdW5uZWNlc3NhcnkgdmlydHVhbCBvdmVycmlkZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiODE2MjQzLi5kNjQ2MDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAg
LTUxMSw3ICs1MTEsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlj
a1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQsCiAKICAgICBTdHJpbmcgcGx1
Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwuaG9zdCgpOwogICAgIGlmIChkb2N1bWVudCgpLnBhZ2Uo
KSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChkb2N1bWVu
dCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnByb3RvY29sKCkp
ICYmIGRvY3VtZW50KCkucGFnZSgpLT5zZXR0aW5ncygpLmF1dG9zdGFydE9yaWdpblBsdWdJblNu
YXBzaG90dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNs
aWVudCgpLT5kaWRTdGFydEZyb21PcmlnaW4oZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgp
LmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCksIHBsdWdJbk9yaWdpbiwgbG9hZGVkTWltZVR5
cGUoKSk7CisgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+ZGlkU3Rh
cnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5i
YXNlVVJMKCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCksIGRvY3VtZW50
KCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAKICAgICBMT0coUGx1Z2lucywgIiVwIFVzZXIgY2xp
Y2tlZCBvbiBzbmFwc2hvdHRlZCBwbHVnLWluLiBSZXN0YXJ0LiIsIHRoaXMpOwogICAgIHJlc3Rh
cnRTbmFwc2hvdHRlZFBsdWdJbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
bHVnSW5DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z0luQ2xpZW50LmgKaW5kZXgg
NjU4MmM0ZS4uOTI4Yjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnSW5D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjaWZuZGVmIFBsdWdJbkNsaWVudF9oCiAjZGVmaW5lIFBsdWdJbkNsaWVudF9o
CiAKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCw3ICszNSw3IEBAIGNsYXNzIFBsdWdJbkNsaWVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgU2Vzc2lvbklEKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Q
bHVnSW5DbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiYzUwMDg4Li5hZWM3NGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTQtMDUtMDEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBw
bGUuY29tPgorCisgICAgICAgIFNlc3Npb24tYXdhcmUgcGx1Z2luIGF1dG9zdGFydCBkYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE3NTgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1OTA2NTQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpQbHVn
SW5BdXRvU3RhcnRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFydFBy
b3ZpZGVyOjphZGRBdXRvU3RhcnRPcmlnaW5IYXNoKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z0lu
QXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9TdGFydE9yaWdpbkhhc2hlc0NvcHkpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0T3JpZ2luc1RhYmxlQ29w
eSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3Rh
cnRPcmlnaW5zVGFibGVXaXRoSXRlbXNQYXNzaW5nVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zQXJyYXkpOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6ZGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OmFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b250ZXh0Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luRGlkUmVjZWl2ZVVz
ZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnSW5DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnSW5DbGllbnQ6OmRpZFN0
YXJ0RnJvbU9yaWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnSW5DbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6aXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6c2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkRl
ZmF1bHRIYXNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsdWdJ
bkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwog
MjAxNC0wNS0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXVtXSzJdIFR3ZWFrIHRoZSBleHRlbmRlZCBiYWNrZ3JvdW5kIGV4Y2x1c2lvbiBm
b3IgTW9iaWxlU2FmYXJpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMThkYzM0Ni4uZmZjOWVjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKIAogI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggODY0NThmZi4uZmU1OTA3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9TZXNzaW9uSURIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC0x
NTAsNyArMTUxLDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAg
IGJvb2wgdXNlc05ldHdvcmtQcm9jZXNzOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPHVuc2lnbmVk
LCBkb3VibGU+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj4gcGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzOwogICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdJbkF1dG9TdGFydE9yaWdpbnM7
CiAKICAgICBib29sIG1lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAK
aW5kZXggZTU3MjQwMy4uYzIzNzZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw2ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6
OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKIHsKKyAgICBtX2hhc2hUb09yaWdpbk1hcC5hZGQoU2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4oKSk7CisgICAgbV9h
dXRvU3RhcnRUYWJsZS5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEF1dG9TdGFy
dFRhYmxlKCkpOwogfQogCiBzdGF0aWMgZG91YmxlIGV4cGlyYXRpb25UaW1lRnJvbU5vdygpCkBA
IC00OSw1MSArNTEsNTUgQEAgc3RhdGljIGRvdWJsZSBleHBpcmF0aW9uVGltZUZyb21Ob3coKQog
ICAgIHJldHVybiBjdXJyZW50VGltZSgpICsgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVU
aHJlc2hvbGQ7CiB9CiAKLXZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmFkZEF1dG9TdGFy
dE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5Pcmln
aW5IYXNoKQordm9pZCBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YWRkQXV0b1N0YXJ0T3JpZ2lu
SGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gs
IFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKG1faGFzaFRvT3JpZ2luTWFwLmNvbnRh
aW5zKHBsdWdJbk9yaWdpbkhhc2gpKQorICAgIGF1dG8gc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNo
VG9PcmlnaW5NYXAuZmluZChzZXNzaW9uSUQpOworICAgIGlmIChzZXNzaW9uSXRlcmF0b3IgPT0g
bV9oYXNoVG9PcmlnaW5NYXAuZW5kKCkpIHsKKyAgICAgICAgaWYgKG1faGFzaFRvT3JpZ2luTWFw
LmdldChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkuY29udGFpbnMocGx1Z0luT3JpZ2lu
SGFzaCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNlc3Npb25JdGVyYXRvciA9IG1f
aGFzaFRvT3JpZ2luTWFwLnNldChzZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz4o
KSkuaXRlcmF0b3I7CisgICAgfSBlbHNlIGlmIChzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmNvbnRh
aW5zKHBsdWdJbk9yaWdpbkhhc2gpIHx8IG1faGFzaFRvT3JpZ2luTWFwLmdldChTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSkuY29udGFpbnMocGx1Z0luT3JpZ2luSGFzaCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEF1dG9TdGFydFRhYmxlOjppdGVyYXRvciBpdCA9IG1fYXV0b1N0YXJ0
VGFibGUuZmluZChwYWdlT3JpZ2luKTsKLSAgICBpZiAoaXQgPT0gbV9hdXRvU3RhcnRUYWJsZS5l
bmQoKSkKLSAgICAgICAgaXQgPSBtX2F1dG9TdGFydFRhYmxlLmFkZChwYWdlT3JpZ2luLCBQbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoKCkpLml0ZXJhdG9yOworICAgIEF1dG9TdGFydFRhYmxlOjpp
dGVyYXRvciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuYWRkKHNlc3Npb25JRCwgQXV0b1N0YXJ0VGFi
bGUoKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlT3JpZ2luLCBQbHVnSW5BdXRvU3RhcnRPcmln
aW5NYXAoKSkuaXRlcmF0b3I7CiAKICAgICBkb3VibGUgZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0
aW9uVGltZUZyb21Ob3coKTsKICAgICBpdC0+dmFsdWUuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGV4
cGlyYXRpb25UaW1lKTsKLSAgICBtX2hhc2hUb09yaWdpbk1hcC5zZXQocGx1Z0luT3JpZ2luSGFz
aCwgcGFnZU9yaWdpbik7CisgICAgc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0luT3Jp
Z2luSGFzaCwgcGFnZU9yaWdpbik7CiAKLSAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChw
bHVnSW5PcmlnaW5IYXNoLCBleHBpcmF0aW9uVGltZSkpOwotICAgIG1fY29udGV4dC0+Y2xpZW50
KCkucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZChtX2NvbnRleHQpOworICAgIG1f
Y29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEaWRBZGRQ
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRpb25UaW1l
LCBzZXNzaW9uSUQpKTsKKworICAgIGlmICghc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAg
ICAgIG1fY29udGV4dC0+Y2xpZW50KCkucGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hhbmdl
ZChtX2NvbnRleHQpOwogfQogCi1QbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoIFBsdWdJbkF1dG9T
dGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5KCkgY29uc3QKK1Nlc3Npb25Q
bHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6OmF1dG9TdGFy
dE9yaWdpbkhhc2hlc0NvcHkoKSBjb25zdAogewotICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2ggY29weU1hcDsKLSAgICBBdXRvU3RhcnRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9h
dXRvU3RhcnRUYWJsZS5lbmQoKTsKLSAgICBmb3IgKEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVy
YXRvciBpdCA9IG1fYXV0b1N0YXJ0VGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2g6OmNvbnN0X2l0ZXJhdG9yIG1hcEVuZCA9
IGl0LT52YWx1ZS5lbmQoKTsKLSAgICAgICAgZm9yIChQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
Ojpjb25zdF9pdGVyYXRvciBtYXBJdCA9IGl0LT52YWx1ZS5iZWdpbigpOyBtYXBJdCAhPSBtYXBF
bmQ7ICsrbWFwSXQpCi0gICAgICAgICAgICBjb3B5TWFwLnNldChtYXBJdC0+a2V5LCBtYXBJdC0+
dmFsdWUpOworICAgIFNlc3Npb25QbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXAgc2Vzc2lvbk1hcDsK
KworICAgIGZvciAoY29uc3QgYXV0byYgc2Vzc2lvbktleU9yaWdpbkhhc2ggOiBtX2F1dG9TdGFy
dFRhYmxlKSB7CisgICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCYgbWFwID0gc2Vzc2lv
bk1hcC5hZGQoc2Vzc2lvbktleU9yaWdpbkhhc2gua2V5LCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5N
YXAoKSkuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleU9yaWdp
bkhhc2ggOiBzZXNzaW9uS2V5T3JpZ2luSGFzaC52YWx1ZSkgeworICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBvcmlnaW5IYXNoIDoga2V5T3JpZ2luSGFzaC52YWx1ZSkKKyAgICAgICAgICAg
ICAgICBtYXAuc2V0KG9yaWdpbkhhc2gua2V5LCBvcmlnaW5IYXNoLnZhbHVlKTsKKyAgICAgICAg
fQogICAgIH0KLSAgICByZXR1cm4gY29weU1hcDsKKyAgICByZXR1cm4gc2Vzc2lvbk1hcDsKIH0K
IAogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBQbHVnSW5BdXRvU3RhcnRQcm92aWRl
cjo6YXV0b1N0YXJ0T3JpZ2luc1RhYmxlQ29weSgpIGNvbnN0CiB7CiAgICAgSW1tdXRhYmxlRGlj
dGlvbmFyeTo6TWFwVHlwZSBtYXA7Ci0gICAgQXV0b1N0YXJ0VGFibGU6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fYXV0b1N0YXJ0VGFibGUuZW5kKCk7CisKICAgICBkb3VibGUgbm93ID0gY3VycmVu
dFRpbWUoKTsKLSAgICBmb3IgKEF1dG9TdGFydFRhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
YXV0b1N0YXJ0VGFibGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChjb25z
dCBhdXRvJiBzdHJpbmdPcmlnaW5IYXNoIDogbV9hdXRvU3RhcnRUYWJsZS5nZXQoU2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCkpKSB7CiAgICAgICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1h
cFR5cGUgaGFzaE1hcDsKLSAgICAgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDo6Y29uc3Rf
aXRlcmF0b3IgdmFsdWVFbmQgPSBpdC0+dmFsdWUuZW5kKCk7Ci0gICAgICAgIGZvciAoUGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaDo6Y29uc3RfaXRlcmF0b3IgdmFsdWVJdCA9IGl0LT52YWx1ZS5i
ZWdpbigpOyB2YWx1ZUl0ICE9IHZhbHVlRW5kOyArK3ZhbHVlSXQpIHsKLSAgICAgICAgICAgIGlm
IChub3cgPiB2YWx1ZUl0LT52YWx1ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGhhc2hNYXAuc2V0KFN0cmluZzo6bnVtYmVyKHZhbHVlSXQtPmtleSksIEFQSTo6RG91
YmxlOjpjcmVhdGUodmFsdWVJdC0+dmFsdWUpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBv
cmlnaW5IYXNoIDogc3RyaW5nT3JpZ2luSGFzaC52YWx1ZSkgeworICAgICAgICAgICAgaWYgKG5v
dyA8PSBvcmlnaW5IYXNoLnZhbHVlKQorICAgICAgICAgICAgICAgIGhhc2hNYXAuc2V0KFN0cmlu
Zzo6bnVtYmVyKG9yaWdpbkhhc2gua2V5KSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5IYXNo
LnZhbHVlKSk7CiAgICAgICAgIH0KLQogICAgICAgICBpZiAoaGFzaE1hcC5zaXplKCkpCi0gICAg
ICAgICAgICBtYXAuc2V0KGl0LT5rZXksIEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0ZShzdGQ6
Om1vdmUoaGFzaE1hcCkpKTsKKyAgICAgICAgICAgIG1hcC5zZXQoc3RyaW5nT3JpZ2luSGFzaC5r
ZXksIEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0ZShzdGQ6Om1vdmUoaGFzaE1hcCkpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKHN0ZDo6bW92ZSht
YXApKTsKQEAgLTEyMSw1OCArMTI3LDY0IEBAIHZvaWQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI6
OnNldEF1dG9TdGFydE9yaWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KEltbXV0CiAgICAg
bV9oYXNoVG9PcmlnaW5NYXAuY2xlYXIoKTsKICAgICBtX2F1dG9TdGFydFRhYmxlLmNsZWFyKCk7
CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiBoYXNoTWFwOworICAgIEhhc2hNYXA8dW5z
aWduZWQsIFN0cmluZz4mIGhhc2hUb09yaWdpbk1hcCA9IG1faGFzaFRvT3JpZ2luTWFwLmFkZChT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwgU3RyaW5nPigp
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgQXV0b1N0YXJ0VGFibGUmIGFzdCA9IG1fYXV0b1N0YXJ0
VGFibGUuYWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBBdXRvU3RhcnRUYWJsZSgp
KS5pdGVyYXRvci0+dmFsdWU7CiAKLSAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlOjpj
b25zdF9pdGVyYXRvciBlbmQgPSB0YWJsZS5tYXAoKS5lbmQoKTsKLSAgICBmb3IgKEltbXV0YWJs
ZURpY3Rpb25hcnk6Ok1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFibGUubWFwKCkuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2ggaGFzaGVzOwotICAgICAgICBJbW11dGFibGVEaWN0aW9uYXJ5KiBoYXNoZXNGb3JQYWdlID0g
c3RhdGljX2Nhc3Q8SW1tdXRhYmxlRGljdGlvbmFyeSo+KGl0LT52YWx1ZS5nZXQoKSk7Ci0gICAg
ICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGhhc2hFbmQg
PSBoYXNoZXNGb3JQYWdlLT5tYXAoKS5lbmQoKTsKLSAgICAgICAgZm9yIChJbW11dGFibGVEaWN0
aW9uYXJ5OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBoYXNoSXQgPSBoYXNoZXNGb3JQYWdlLT5t
YXAoKS5iZWdpbigpOyBoYXNoSXQgIT0gaGFzaEVuZDsgKytoYXNoSXQpIHsKKyAgICBmb3IgKGF1
dG8mIHN0ckRpY3QgOiB0YWJsZS5tYXAoKSkgeworICAgICAgICBQbHVnSW5BdXRvU3RhcnRPcmln
aW5NYXAgaGFzaGVzOworICAgICAgICBmb3IgKGF1dG8mIGhhc2hUaW1lIDogc3RhdGljX2Nhc3Q8
SW1tdXRhYmxlRGljdGlvbmFyeSo+KHN0ckRpY3QudmFsdWUuZ2V0KCkpLT5tYXAoKSkgewogICAg
ICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgICAgIHVuc2lnbmVkIGhhc2ggPSBoYXNoSXQtPmtl
eS50b1VJbnQoJm9rKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGhhc2ggPSBoYXNoVGltZS5rZXku
dG9VSW50KCZvayk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgICAgICBpZiAoaGFzaEl0LT52YWx1ZS0+dHlwZSgpICE9IEFQSTo6RG91
YmxlOjpBUElUeXBlKQorICAgICAgICAgICAgaWYgKGhhc2hUaW1lLnZhbHVlLT50eXBlKCkgIT0g
QVBJOjpEb3VibGU6OkFQSVR5cGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgICAgIGRvdWJsZSBleHBpcmF0aW9uVGltZSA9IHN0YXRpY19jYXN0PEFQSTo6RG91YmxlKj4o
aGFzaEl0LT52YWx1ZS5nZXQoKSktPnZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgZXhwaXJh
dGlvblRpbWUgPSBzdGF0aWNfY2FzdDxBUEk6OkRvdWJsZSo+KGhhc2hUaW1lLnZhbHVlLmdldCgp
KS0+dmFsdWUoKTsKICAgICAgICAgICAgIGlmICghaXNFeHBpcmF0aW9uVGltZUFjY2VwdGFibGUo
ZXhwaXJhdGlvblRpbWUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBoYXNoZXMuc2V0KGhhc2gsIGV4cGlyYXRpb25UaW1lKTsKICAgICAgICAgICAgIGhhc2hNYXAu
c2V0KGhhc2gsIGV4cGlyYXRpb25UaW1lKTsKLSAgICAgICAgICAgIG1faGFzaFRvT3JpZ2luTWFw
LnNldChoYXNoLCBpdC0+a2V5KTsKKyAgICAgICAgICAgIGhhc2hUb09yaWdpbk1hcC5zZXQoaGFz
aCwgc3RyRGljdC5rZXkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFoYXNoZXMuaXNFbXB0
eSgpKQotICAgICAgICAgICAgbV9hdXRvU3RhcnRUYWJsZS5zZXQoaXQtPmtleSwgaGFzaGVzKTsK
KyAgICAgICAgICAgIGFzdC5zZXQoc3RyRGljdC5rZXksIGhhc2hlcyk7CiAgICAgfQogCi0gICAg
bV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlc2V0
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGhhc2hNYXApKTsKKyAgICBtX2NvbnRleHQtPnNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVzZXRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5EZWZhdWx0SGFzaGVzKGhhc2hNYXApKTsKIH0KIAogdm9pZCBQbHVnSW5BdXRvU3Rh
cnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc0FycmF5KEFQSTo6QXJyYXkmIG9yaWdpbkxp
c3QpCiB7CiAgICAgbV9hdXRvU3RhcnRPcmlnaW5zLmNsZWFyKCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDAsIGxlbmd0aCA9IG9yaWdpbkxpc3Quc2l6ZSgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgaWYgKG9yaWdpbkxpc3QuYXQoaSktPnR5cGUoKSAhPSBBUEk6OlN0cmluZzo6QVBJVHlw
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2F1dG9TdGFydE9yaWdpbnMuYXBw
ZW5kKHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4ob3JpZ2luTGlzdC5hdChpKSktPnN0cmluZygp
KTsKLSAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBzdHJpbmcgOiBvcmlnaW5MaXN0LmVsZW1l
bnRzT2ZUeXBlPEFQSTo6U3RyaW5nPigpKQorICAgICAgICBtX2F1dG9TdGFydE9yaWdpbnMuYXBw
ZW5kKHN0cmluZy0+c3RyaW5nKCkpOwogfQogCi12b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
OjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpCit2
b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpkaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVu
c2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgSGFz
aE1hcDx1bnNpZ25lZCwgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2hhc2hUb09yaWdp
bk1hcC5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOwotICAgIGlmIChpdCA9PSBtX2hhc2hUb09yaWdp
bk1hcC5lbmQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBT
dHJpbmc+Pjo6Y29uc3RfaXRlcmF0b3Igc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNoVG9PcmlnaW5N
YXAuZmluZChzZXNzaW9uSUQpOworICAgIEhhc2hNYXA8dW5zaWduZWQsIFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGl0OworICAgIGJvb2wgY29udGFpbnMgPSBmYWxzZTsKKyAgICBpZiAoc2Vzc2lv
bkl0ZXJhdG9yICE9IG1faGFzaFRvT3JpZ2luTWFwLmVuZCgpKSB7CisgICAgICAgIGl0ID0gc2Vz
c2lvbkl0ZXJhdG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBjb250
YWlucyA9IGl0ICE9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZW5kKCk7CisgICAgfQorICAgIGlm
ICghY29udGFpbnMpIHsKKyAgICAgICAgc2Vzc2lvbkl0ZXJhdG9yID0gbV9oYXNoVG9PcmlnaW5N
YXAuZmluZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGl0ID0gc2Vz
c2lvbkl0ZXJhdG9yLT52YWx1ZS5maW5kKHBsdWdJbk9yaWdpbkhhc2gpOworICAgICAgICBpZiAo
aXQgPT0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkgeworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBkb3VibGUgbmV3RXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZUZyb21Ob3coKTsK
LSAgICBtX2F1dG9TdGFydFRhYmxlLmZpbmQoaXQtPnZhbHVlKS0+dmFsdWUuc2V0KHBsdWdJbk9y
aWdpbkhhc2gsIG5ld0V4cGlyYXRpb25UaW1lKTsKLSAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9uVGltZSkpOworICAgIG1fYXV0b1N0
YXJ0VGFibGUuYWRkKHNlc3Npb25JRCwgQXV0b1N0YXJ0VGFibGUoKSkuaXRlcmF0b3ItPnZhbHVl
LmFkZChpdC0+dmFsdWUsIFBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCgpKS5pdGVyYXRvci0+dmFs
dWUuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIG5ld0V4cGlyYXRpb25UaW1lKTsKKyAgICBtX2NvbnRl
eHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGlkQWRkUGx1Z0lu
QXV0b1N0YXJ0T3JpZ2luSGFzaChwbHVnSW5PcmlnaW5IYXNoLCBuZXdFeHBpcmF0aW9uVGltZSwg
c2Vzc2lvbklEKSk7CiAgICAgbV9jb250ZXh0LT5jbGllbnQoKS5wbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXNDaGFuZ2VkKG1fY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oCmluZGV4
IGMzYjM5MDIuLmRkMzQyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaApAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcl9oCiAjZGVmaW5lIFBsdWdJbkF1dG9T
dGFydFByb3ZpZGVyX2gKIAorI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklESGFzaC5oPgogI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgpAQCAtNDMsNyArNDQsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IEltbXV0YWJsZURpY3Rpb25hcnk7CiBjbGFzcyBXZWJDb250ZXh0OwogCi10eXBlZGVmIEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT4gUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaDsKK3R5cGVkZWYg
SGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXA7Cit0eXBl
ZGVmIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXA+
IFNlc3Npb25QbHVnSW5BdXRvU3RhcnRPcmlnaW5NYXA7CiB0eXBlZGVmIFZlY3RvcjxTdHJpbmc+
IFBsdWdJbkF1dG9TdGFydE9yaWdpbnM7CiAKIGNsYXNzIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVy
IHsKQEAgLTUxLDE1ICs1MywxNSBAQCBjbGFzcyBQbHVnSW5BdXRvU3RhcnRQcm92aWRlciB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIoV2ViQ29udGV4dCop
OwogCi0gICAgdm9pZCBhZGRBdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9y
aWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVXNl
ckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOworICAgIHZvaWQgYWRkQXV0
b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJ
bk9yaWdpbkhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlVXNl
ckludGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdlYkNvcmU6OlNlc3Npb25J
RCk7CiAKICAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGF1dG9TdGFydE9yaWdp
bnNUYWJsZUNvcHkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9TdGFydE9yaWdpbnNUYWJsZShJ
bW11dGFibGVEaWN0aW9uYXJ5Jik7CiAgICAgdm9pZCBzZXRBdXRvU3RhcnRPcmlnaW5zRmlsdGVy
aW5nT3V0RW50cmllc0FkZGVkQWZ0ZXJUaW1lKEltbXV0YWJsZURpY3Rpb25hcnkmLCBkb3VibGUg
dGltZSk7CiAgICAgdm9pZCBzZXRBdXRvU3RhcnRPcmlnaW5zQXJyYXkoQVBJOjpBcnJheSYpOwog
Ci0gICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCBhdXRvU3RhcnRPcmlnaW5IYXNoZXNDb3B5
KCkgY29uc3Q7CisgICAgU2Vzc2lvblBsdWdJbkF1dG9TdGFydE9yaWdpbk1hcCBhdXRvU3RhcnRP
cmlnaW5IYXNoZXNDb3B5KCkgY29uc3Q7CiAgICAgY29uc3QgUGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
cyYgYXV0b1N0YXJ0T3JpZ2lucygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1N0YXJ0T3JpZ2luczsg
fQogCiBwcml2YXRlOgpAQCAtNjcsMTAgKzY5LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNl
dEF1dG9TdGFydE9yaWdpbnNUYWJsZVdpdGhJdGVtc1Bhc3NpbmdUZXN0KEltbXV0YWJsZURpY3Rp
b25hcnkmLCBzdGQ6OmZ1bmN0aW9uPGJvb2woZG91YmxlIGV4cGlyYXRpb25UaW1lc3RhbXApPik7
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
LCBDYXNlRm9sZGluZ0hhc2g+IEF1dG9TdGFydFRhYmxlOwotICAgIEF1dG9TdGFydFRhYmxlIG1f
YXV0b1N0YXJ0VGFibGU7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGx1Z0luQXV0b1N0
YXJ0T3JpZ2luTWFwLCBDYXNlRm9sZGluZ0hhc2g+IEF1dG9TdGFydFRhYmxlOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEF1dG9TdGFydFRhYmxlPiBTZXNzaW9uQXV0
b1N0YXJ0VGFibGU7CisgICAgU2Vzc2lvbkF1dG9TdGFydFRhYmxlIG1fYXV0b1N0YXJ0VGFibGU7
CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+IG1faGFzaFRvT3JpZ2luTWFwOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBTdHJpbmc+PiBt
X2hhc2hUb09yaWdpbk1hcDsKIAogICAgIFBsdWdJbkF1dG9TdGFydE9yaWdpbnMgbV9hdXRvU3Rh
cnRPcmlnaW5zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRl
eCBjMjhlNzM4Li5mODZjM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCkBAIC0xMzE4LDE0ICsxMzE4LDE0IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0SmF2YVNjcmlw
dEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoYm9vbCBmbGFnKQogICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0
b3JUaW1lckVuYWJsZWQoZmxhZykpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OmFkZFBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVn
SW5PcmlnaW5IYXNoKQordm9pZCBXZWJDb250ZXh0OjphZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwg
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmFk
ZEF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCk7CisgICAg
bV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hZGRBdXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VPcmln
aW4sIHBsdWdJbk9yaWdpbkhhc2gsIHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6
cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNo
KQordm9pZCBXZWJDb250ZXh0OjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2ln
bmVkIHBsdWdJbk9yaWdpbkhhc2gsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgbV9wbHVn
SW5BdXRvU3RhcnRQcm92aWRlci5kaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBsdWdJbk9yaWdp
bkhhc2gpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuZGlkUmVjZWl2ZVVzZXJJbnRl
cmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uSUQpOwogfQogCiBQYXNzUmVmUHRyPElt
bXV0YWJsZURpY3Rpb25hcnk+IFdlYkNvbnRleHQ6OnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCAwMzk5ZmZh
Li42NGE3NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTQyMiw4
ICs0MjIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2Vy
dmVycygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2go
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKLSAg
ICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3Jp
Z2luSGFzaCk7CisgICAgdm9pZCBhZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0
cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vz
c2lvbklEKTsKKyAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWdu
ZWQgcGx1Z0luT3JpZ2luSGFzaCwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgc2V0
QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgppbmRleCAx
YzNjMzUwLi4yZTRmNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5tZXNzYWdlcy5pbgpAQCAtNTksNiArNTksNiBAQCBtZXNzYWdlcyAtPiBXZWJDb250ZXh0
IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgIyBQbHVnLWluIG1lc3NhZ2VzLgotICAg
IHZvaWQgQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChTdHJpbmcgcGFnZU9yaWdpbiwgdWlu
dDMyX3QgaGFzaCkKLSAgICB2b2lkIFBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odWlu
dDMyX3QgaGFzaCkKKyAgICB2b2lkIEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goU3RyaW5n
IHBhZ2VPcmlnaW4sIHVpbnQzMl90IGhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CisgICAgdm9pZCBQbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVpbnQzMl90IGhhc2gs
IFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNTkzZGQzZi4uNDVhNmY3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtMTczNiw3ICsxNzM2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKCkKICAgICBTdHJpbmcgcGx1Z2luT3JpZ2luID0gcGx1Z0luSW1hZ2VF
bGVtZW50LT5sb2FkZWRVcmwoKS5ob3N0KCk7CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gcGx1Z0lu
SW1hZ2VFbGVtZW50LT5sb2FkZWRNaW1lVHlwZSgpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkucGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwYWdlT3JpZ2luLCBwbHVnaW5Pcmln
aW4sIG1pbWVUeXBlKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wbHVnSW5EaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUsIHBsdWdJ
bkltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPnNlc3Npb25JRCgpKTsKIH0KIAogYm9v
bCBQbHVnaW5WaWV3OjpzaG91bGRDcmVhdGVUcmFuc2llbnRQYWludGluZ1NuYXBzaG90KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z0luQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcAppbmRleCA4NTRkNzczLi5lMzU1OTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnSW5DbGllbnQuY3BwCkBAIC01Miw5ICs1Miw5IEBAIGJvb2wgV2ViUGx1Z0luQ2xpZW50
OjpzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29u
c3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkuc2hvdWxkUGx1Z0luQXV0b1N0YXJ0
RnJvbU9yaWdpbihtX3BhZ2UsIHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpOwog
fQogCi12b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCit2b2lkIFdlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0
IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKHBhZ2VPcmlnaW4sIHBs
dWdpbk9yaWdpbiwgbWltZVR5cGUpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBsdWdJbkRp
ZFN0YXJ0RnJvbU9yaWdpbihwYWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlLCBzZXNz
aW9uSUQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCmlu
ZGV4IDUzMTAyOGEuLjAyYjhhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBXZWJQbHVnSW5DbGllbnRfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVn
SW5DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtMzksNyArNDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9TdGFy
dEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdp
bk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0
YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1
Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7
CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggOGM4YmE5Yy4uMDNjMzRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDAsNiArMjAw
LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgVVNFKFNPVVApICYmICFFTkFCTEUo
Q1VTVE9NX1BST1RPQ09MUykKICAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdl
cj4oKTsKICNlbmRpZgorICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPigpKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nl
c3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC03MjYsMTEgKzcyNywy
MiBAQCBzdGF0aWMgdW5zaWduZWQgaGFzaEZvclBsdWdJbk9yaWdpbihjb25zdCBTdHJpbmcmIHBh
Z2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1ZwogICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwog
fQogCi1ib29sIFdlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25l
ZCBwbHVnSW5PcmlnaW5IYXNoKQorYm9vbCBXZWJQcm9jZXNzOjppc1BsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgU2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAg
aWYgKGl0ID09IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hNYXA8dW5z
aWduZWQsIGRvdWJsZT4+Ojpjb25zdF9pdGVyYXRvciBzZXNzaW9uSXRlcmF0b3IgPSBtX3BsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKHNlc3Npb25JRCk7CisgICAgSGFzaE1hcDx1bnNp
Z25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0b3IgaXQ7CisgICAgYm9vbCBjb250YWlucyA9IGZh
bHNlOworCisgICAgaWYgKHNlc3Npb25JdGVyYXRvciAhPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlcy5lbmQoKSkgeworICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUuZmlu
ZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAgY29udGFpbnMgPSBpdCAhPSBzZXNzaW9uSXRl
cmF0b3ItPnZhbHVlLmVuZCgpOworICAgIH0KKyAgICBpZiAoIWNvbnRhaW5zKSB7CisgICAgICAg
IHNlc3Npb25JdGVyYXRvciA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmZpbmQoU2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICBpdCA9IHNlc3Npb25JdGVyYXRv
ci0+dmFsdWUuZmluZChwbHVnSW5PcmlnaW5IYXNoKTsKKyAgICAgICAgaWYgKGl0ID09IHNlc3Np
b25JdGVyYXRvci0+dmFsdWUuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogICAgIHJldHVybiBjdXJyZW50VGltZSgpIDwgaXQtPnZhbHVlOwogfQogCkBAIC03NDgsMTAg
Kzc2MCwxMCBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21Pcmln
aW4oY29uc3QgV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaQogI2VuZGlmCiAKICAgICAvLyBMYXN0
bHkgY2hlY2sgYWdhaW5zdCB0aGUgbW9yZSBleHBsaWNpdCBoYXNoIGxpc3QuCi0gICAgcmV0dXJu
IGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChoYXNoRm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmln
aW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpKTsKKyAgICByZXR1cm4gaXNQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoKGhhc2hGb3JQbHVnSW5PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2lu
LCBtaW1lVHlwZSksIHBhZ2UtPnNlc3Npb25JRCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpw
bHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBT
dHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3ZvaWQgV2ViUHJv
Y2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHBhZ2VPcmlnaW4uaXNFbXB0eSgpKSB7CiAgICAg
ICAgIExPRyhQbHVnaW5zLCAiTm90IGFkZGluZyBlbXB0eSBwYWdlIG9yaWdpbiIpOwpAQCAtNzU5
LDcgKzc3MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNv
bnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nCiAgICAgfQogCiAgICAgdW5zaWdu
ZWQgcGx1Z0luT3JpZ2luSGFzaCA9IGhhc2hGb3JQbHVnSW5PcmlnaW4ocGFnZU9yaWdpbiwgcGx1
Z2luT3JpZ2luLCBtaW1lVHlwZSk7Ci0gICAgaWYgKGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aChwbHVnSW5PcmlnaW5IYXNoKSkgeworICAgIGlmIChpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhh
c2gocGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUGx1Z2lucywg
Ikhhc2ggJXggYWxyZWFkeSBleGlzdHMgYXMgYXV0by1zdGFydCBvcmlnaW4gKHJlcXVlc3QgZm9y
ICVzKSIsIHBsdWdJbk9yaWdpbkhhc2gsIHBhZ2VPcmlnaW4udXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC03NjgsMjUgKzc4MCwzMSBAQCB2b2lkIFdlYlByb2Nlc3M6
OnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0
IFN0cmluZwogICAgIC8vIGNvbWVzIGJhY2sgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MuIFRlbXBv
cmFyaWx5IGFkZCB0aGlzIGhhc2ggdG8gdGhlIGxpc3Qgd2l0aCBhIHRoaXJ0eQogICAgIC8vIHNl
Y29uZCB0aW1lb3V0LiBUaGF0IHdheSwgZXZlbiBpZiB0aGUgcGFyZW50IGRlY2lkZXMgbm90IHRv
IGFkZCBpdCwgd2UnbGwgb25seSBiZQogICAgIC8vIGluY29ycmVjdCBmb3IgYSBsaXR0bGUgd2hp
bGUuCi0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhh
c2gsIGN1cnJlbnRUaW1lKCkgKyAzMCAqIDEwMDApOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaGVzLmFkZChzZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRl
cmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBjdXJyZW50VGltZSgpICsgMzAgKiAx
MDAwKTsKIAotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YkNvbnRleHQ6OkFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0lu
T3JpZ2luSGFzaCksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkNvbnRleHQ6OkFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdp
biwgcGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklEKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
czo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5I
YXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUpCit2b2lkIFdlYlByb2Nlc3M6OmRpZEFkZFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91YmxlIGV4
cGlyYXRpb25UaW1lLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIC8vIFdoZW4gY2FsbGVk
LCBzb21lIHdlYiBwcm9jZXNzICh3aGljaCBhbHNvIG1pZ2h0IGJlIHRoaXMgb25lKSBhZGRlZCB0
aGUgb3JpZ2luIGZvciBhdXRvLXN0YXJ0aW5nLAogICAgIC8vIG9yIHJlY2VpdmVkIHVzZXIgaW50
ZXJhY3Rpb24uCiAgICAgLy8gU2V0IHRoZSBiaXQgdG8gYXZvaWQgaGF2aW5nIHJlZHVuZGFudGx5
IGNhbGwgaW50byB0aGUgVUkgcHJvY2VzcyB1cG9uIHVzZXIgaW50ZXJhY3Rpb24uCi0gICAgbV9w
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc2V0KHBsdWdJbk9yaWdpbkhhc2gsIGV4cGlyYXRp
b25UaW1lKTsKKyAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoc2Vzc2lvbklE
LCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1ZS5zZXQocGx1Z0lu
T3JpZ2luSGFzaCwgZXhwaXJhdGlvblRpbWUpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnJlc2V0
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyhjb25zdCBIYXNoTWFwPHVuc2lnbmVk
LCBkb3VibGU+JiBoYXNoZXMpCit7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMu
Y2xlYXIoKTsKKyAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoU2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRlcmF0
b3ItPnZhbHVlLnN3YXAoY29uc3RfY2FzdDxIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+Jj4oaGFz
aGVzKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiYgaGFzaGVzKQordm9pZCBXZWJQ
cm9jZXNzOjpyZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhjb25zdCBIYXNoTWFwPFNl
c3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj4mIGhhc2hlcykKIHsKLSAgICBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25l
ZCwgZG91YmxlPiY+KGhhc2hlcykpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVz
LnN3YXAoY29uc3RfY2FzdDxIYXNoTWFwPFNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91
YmxlPj4mPihoYXNoZXMpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZl
VXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit2b2lkIFdlYlByb2Nlc3M6OnBs
dWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lv
bklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAocGFnZU9yaWdpbi5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTc5NSwxMyArODEzLDI0IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlk
UmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0CiAg
ICAgaWYgKCFwbHVnSW5PcmlnaW5IYXNoKQogICAgICAgICByZXR1cm47CiAKLSAgICBIYXNoTWFw
PHVuc2lnbmVkLCBkb3VibGU+OjppdGVyYXRvciBpdCA9IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgaWYgKGl0ID09IG1fcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzLmVuZCgpKQotICAgICAgICByZXR1cm47CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+Ojpjb25zdF9pdGVy
YXRvciBzZXNzaW9uSXRlcmF0b3IgPSBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5maW5k
KHNlc3Npb25JRCk7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPjo6Y29uc3RfaXRlcmF0
b3IgaXQ7CisgICAgYm9vbCBjb250YWlucyA9IGZhbHNlOworICAgIGlmIChzZXNzaW9uSXRlcmF0
b3IgIT0gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuZW5kKCkpIHsKKyAgICAgICAgaXQg
PSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmZpbmQocGx1Z0luT3JpZ2luSGFzaCk7CisgICAgICAg
IGNvbnRhaW5zID0gaXQgIT0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS5lbmQoKTsKKyAgICB9Cisg
ICAgaWYgKCFjb250YWlucykgeworICAgICAgICBzZXNzaW9uSXRlcmF0b3IgPSBtX3BsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcy5maW5kKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsK
KyAgICAgICAgaXQgPSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmZpbmQocGx1Z0luT3JpZ2luSGFz
aCk7CisgICAgICAgIGlmIChpdCA9PSBzZXNzaW9uSXRlcmF0b3ItPnZhbHVlLmVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChpdC0+dmFsdWUgLSBjdXJyZW50VGlt
ZSgpID4gcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVVcGRhdGVUaHJlc2hvbGQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkNvbnRleHQ6OlBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24ocGx1Z0luT3Jp
Z2luSGFzaCksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkNvbnRleHQ6OlBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24ocGx1Z0luT3Jp
Z2luSGFzaCwgc2Vzc2lvbklEKSwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkIGZyb21Db3VudGVkU2V0
VG9IYXNoTWFwKFR5cGVDb3VudFNldCogY291bnRlZFNldCwgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2
NF90PiYgbWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA4NDhl
NjQ5Li40YTE3ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJW
aWV3VXBkYXRlRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGUuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklE
SGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMTYsOCArMTE2LDggQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICBib29sIHNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4oY29u
c3QgV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVn
aW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotICAgIHZvaWQgcGx1Z0luRGlkU3Rh
cnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVn
aW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotICAgIHZvaWQgcGx1Z0luRGlkUmVj
ZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2b2lkIHBsdWdJ
bkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9u
SUQpOworICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJp
bmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogCiAgICAgYm9vbCBmdWxsS2V5Ym9hcmRB
Y2Nlc3NFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
OyB9CiAKQEAgLTIxNCw5ICsyMTQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgdm9p
ZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0Vu
YWJsZWQpOwogCi0gICAgYm9vbCBpc1BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQg
cGx1Z0luT3JpZ2luSGFzaCk7Ci0gICAgdm9pZCBkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSk7Ci0g
ICAgdm9pZCByZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhjb25zdCBIYXNoTWFwPHVu
c2lnbmVkLCBkb3VibGU+JiBoYXNoZXMpOworICAgIGJvb2wgaXNQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFdlYkNvcmU6OlNlc3Npb25JRCk7Cisg
ICAgdm9pZCBkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJbk9y
aWdpbkhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAg
ICB2b2lkIHJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyhjb25zdCBIYXNo
TWFwPHVuc2lnbmVkLCBkb3VibGU+JiBoYXNoZXMpOworICAgIHZvaWQgcmVzZXRQbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMoY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT4+JiBoYXNoZXMpOwogCiAgICAgdm9pZCBwbGF0Zm9ybVNldENh
Y2hlTW9kZWwoQ2FjaGVNb2RlbCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYWNo
ZXMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyKTsKQEAgLTI4OCw3ICsyODksNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX2luRGlkQ2xvc2U7CiAKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+
IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vz
c2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiBtX3BsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlczsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5zOwog
CiAgICAgYm9vbCBtX2hhc1NldENhY2hlTW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNWUzZjY1Mi4uMzNmMzIzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtNTMsOCArNTMsOSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogCiAgICAgIyBQbHVnLWlucy4KLSAgICBEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoKHVpbnQzMl90IGhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSkKLSAgICBSZXNldFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhIYXNoTWFwPHVpbnQzMl90LGRvdWJsZT4gaGFzaGVz
KQorICAgIERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91
YmxlIGV4cGlyYXRpb25UaW1lLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIFJl
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyhIYXNoTWFwPHVpbnQzMl90LGRv
dWJsZT4gaGFzaGVzKQorICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hN
YXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVpbnQzMl90LGRvdWJsZT4+IGhhc2hlcykK
IAogICAgIHZvaWQgU3RhcnRNZW1vcnlTYW1wbGVyKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNhbXBsZUxvZ0ZpbGVIYW5kbGUsIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCwgZG91
YmxlIGludGVydmFsKTsKICAgICB2b2lkIFN0b3BNZW1vcnlTYW1wbGVyKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>