<?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>235236</bug_id>
          
          <creation_ts>2022-01-14 10:16:45 -0800</creation_ts>
          <short_desc>Make LocalStorage prewarming async</short_desc>
          <delta_ts>2022-01-20 09:26:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>234925</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1830949</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-14 10:16:45 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830972</commentid>
    <comment_count>1</comment_count>
      <attachid>449186</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-14 11:01:58 -0800</bug_when>
    <thetext>Created attachment 449186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830992</commentid>
    <comment_count>2</comment_count>
      <attachid>449194</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-14 11:46:03 -0800</bug_when>
    <thetext>Created attachment 449194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831378</commentid>
    <comment_count>3</comment_count>
      <attachid>449300</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-16 18:49:57 -0800</bug_when>
    <thetext>Created attachment 449300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831546</commentid>
    <comment_count>4</comment_count>
      <attachid>449344</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-17 12:05:23 -0800</bug_when>
    <thetext>Created attachment 449344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831555</commentid>
    <comment_count>5</comment_count>
      <attachid>449346</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-17 13:06:06 -0800</bug_when>
    <thetext>Created attachment 449346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831577</commentid>
    <comment_count>6</comment_count>
      <attachid>449351</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-17 15:22:41 -0800</bug_when>
    <thetext>Created attachment 449351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831828</commentid>
    <comment_count>7</comment_count>
      <attachid>449351</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-18 14:24:25 -0800</bug_when>
    <thetext>Comment on attachment 449351
Patch

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

&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.cpp:35
&gt; +    static std::atomic&lt;uint64_t&gt; currenIdentifier(0);

(0) is unnecessary.

Does this really get called from different threads? I see that you&apos;re using atomic here and generateThreadSafe() below.

&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.cpp:36
&gt; +    return ++currenIdentifier;

typo: current

&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.cpp:50
&gt; +    ASSERT(!m_listeners.contains(connection) || m_listeners.get(connection) == identifier);

Could you clarify why this new assertion is true?

A connection identifies a WebProcess. What prevents having several StorageAreaMapIdentifier within a single WebProcess (especially when several tabs share the same WebProcess)?

&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.h:82
&gt; +    HashMap&lt;IPC::Connection::UniqueID, StorageAreaMapIdentifier&gt; m_listeners;

I am surprised we can have a map from IPC::Connection/WebProcess to a single StorageAreaMapIdentifier.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1192
&gt; +    for (auto key : copyToVector(m_storageAreaMaps.keys()))

The fact that we call copyToVector() here seems to indicate that m_storageAreaMaps can change while we iterate.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1193
&gt; +        m_storageAreaMaps.get(key)-&gt;disconnect();

however, you fail to null check the value returned by m_storageAreaMaps.get(key) here so this doesn&apos;t look safe?

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1702
&gt; +    m_storageAreaMaps.add(identifier, storageAreaMap);

Here, the code seems to indicate we can have several StorageAreaMapIdentifiers within a single WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831873</commentid>
    <comment_count>8</comment_count>
      <attachid>449351</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-18 15:58:03 -0800</bug_when>
    <thetext>Comment on attachment 449351
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.cpp:35
&gt;&gt; +    static std::atomic&lt;uint64_t&gt; currenIdentifier(0);
&gt; 
&gt; (0) is unnecessary.
&gt; 
&gt; Does this really get called from different threads? I see that you&apos;re using atomic here and generateThreadSafe() below.

Will remove. Each session has a storage thread.

&gt;&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.cpp:36
&gt;&gt; +    return ++currenIdentifier;
&gt; 
&gt; typo: current

oh, will change.

&gt;&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.cpp:50
&gt;&gt; +    ASSERT(!m_listeners.contains(connection) || m_listeners.get(connection) == identifier);
&gt; 
&gt; Could you clarify why this new assertion is true?
&gt; 
&gt; A connection identifies a WebProcess. What prevents having several StorageAreaMapIdentifier within a single WebProcess (especially when several tabs share the same WebProcess)?

Nothing prevents several StorageAreaMaps in a web process, we just don&apos;t have multiple StorageAreaMaps in a web process pointing to the same StorageArea... 
So previously StorageArea should receive only one sync connect message from one web process, but now it may receives two: one async and one sync. One the second sync message, the listener (IPC::Connection) should already be added, and in this case the message should come from the same StorageAreaMap in the process.

&gt;&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.h:82
&gt;&gt; +    HashMap&lt;IPC::Connection::UniqueID, StorageAreaMapIdentifier&gt; m_listeners;
&gt; 
&gt; I am surprised we can have a map from IPC::Connection/WebProcess to a single StorageAreaMapIdentifier.

In web process, a StorageAreaMap can be identified by {session, origin, storageType} or StorageAreaMapIdentifier.
In network process, a StorageArea can be identified by {session, origin, storageType} or StorageAreaIdentifier.
Therefore, there should not be two StorageAreaMaps in a web process pointing to the same StorageArea in a web process (a StorageArea should not record two StorageAreaMapIdentifiers for one IPC::Connection.)

&gt;&gt; Source/WebKit/WebProcess/WebProcess.cpp:1193
&gt;&gt; +        m_storageAreaMaps.get(key)-&gt;disconnect();
&gt; 
&gt; however, you fail to null check the value returned by m_storageAreaMaps.get(key) here so this doesn&apos;t look safe?

Yes, should add a null check.

&gt;&gt; Source/WebKit/WebProcess/WebProcess.cpp:1702
&gt;&gt; +    m_storageAreaMaps.add(identifier, storageAreaMap);
&gt; 
&gt; Here, the code seems to indicate we can have several StorageAreaMapIdentifiers within a single WebProcess.

That&apos;s true a web process can have multiple StorageAreaMapIdentifiers, that&apos;s why StorageArea(network process) needs to send back StorageAreaMapIdentifier in the messages to let web process know which StorageAreaMap has change...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831875</commentid>
    <comment_count>9</comment_count>
      <attachid>449441</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-18 16:01:49 -0800</bug_when>
    <thetext>Created attachment 449441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831876</commentid>
    <comment_count>10</comment_count>
      <attachid>449442</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-18 16:02:46 -0800</bug_when>
    <thetext>Created attachment 449442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831880</commentid>
    <comment_count>11</comment_count>
      <attachid>449443</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-18 16:10:47 -0800</bug_when>
    <thetext>Created attachment 449443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831881</commentid>
    <comment_count>12</comment_count>
      <attachid>449444</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-18 16:12:20 -0800</bug_when>
    <thetext>Created attachment 449444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831892</commentid>
    <comment_count>13</comment_count>
      <attachid>449447</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-18 16:26:19 -0800</bug_when>
    <thetext>Created attachment 449447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831901</commentid>
    <comment_count>14</comment_count>
      <attachid>449449</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-18 16:42:04 -0800</bug_when>
    <thetext>Created attachment 449449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832423</commentid>
    <comment_count>15</comment_count>
      <attachid>449449</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-20 08:21:35 -0800</bug_when>
    <thetext>Comment on attachment 449449
Patch

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

r=me with nit. Should probably monitor PLT bots after this lands given that this changes a PLT optimization.

&gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.cpp:52
&gt; +    m_listeners.set(connection, identifier);

Why set() and not add()? add() is more efficient and based on your assertions above, it seems add() would suffice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832432</commentid>
    <comment_count>16</comment_count>
      <attachid>449579</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-20 08:35:45 -0800</bug_when>
    <thetext>Created attachment 449579
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832438</commentid>
    <comment_count>17</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-01-20 08:39:11 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #15)
&gt; Comment on attachment 449449 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449449&amp;action=review
&gt; 
&gt; r=me with nit. Should probably monitor PLT bots after this lands given that
&gt; this changes a PLT optimization.

Sure

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/storage/StorageAreaBase.cpp:52
&gt; &gt; +    m_listeners.set(connection, identifier);
&gt; 
&gt; Why set() and not add()? add() is more efficient and based on your
&gt; assertions above, it seems add() would suffice.

Changed to use add().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832461</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-20 09:25:19 -0800</bug_when>
    <thetext>Committed r288298 (246219@main): &lt;https://commits.webkit.org/246219@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449579.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832462</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-20 09:26:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/87833142&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449186</attachid>
            <date>2022-01-14 11:01:58 -0800</date>
            <delta_ts>2022-01-14 11:50:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220114110156.patch</filename>
            <type>text/plain</type>
            <size>61254</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNmYmI0YzJhYWIxNWM1
MDNjM2YyYWZkYmVlY2JlNjBiZjVmZGRhYy4uYmU1YThiYjgxNzUwZTVkNmJhN2ZmMWNhYzJkNDcy
NjJjYmI5YzcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTEzICBB
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2xlYW51cF0gTGluZTo6
c2VsZWN0aW9uU3RhdGUgbG9naWMgaXMgc2xpZ2h0bHkgY29uZnVzaW5nIGFuZCByZWR1bmRhbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTg3N2VmYjQ3ZjI0NTJkNWE1MTQ2ZjM4ODkzMTRkOWZmNzAwYzViMC4uMDM2
NDllYWQyZjdjODJkMWY0YjQ5MzNjMDJiNTNiNTIxZTAyNDM3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw5MSBAQAorMjAyMi0wMS0xNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIExvY2FsU3RvcmFnZSBwcmV3YXJtaW5nIGFzeW5jCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yYWdlQXJlYU1hcCBpbiB3ZWIg
cHJvY2VzcyBuZWVkcyB0byBzeW5jIHdpdGggYSByZW1vdGUgU3RvcmFnZUFyZWEgaW4gbmV0d29y
ayBwcm9jZXNzIGJlZm9yZSBpdCBwZXJmb3JtcyBhbnkKKyAgICAgICAgV2ViIFN0b3JhZ2Ugb3Bl
cmF0aW9uLiBUbyBjb25uZWN0IHRvIHJlbW90ZSBTdG9yYWdlQXJlYSwgU3RvcmFnZUFyZWFNYXAg
Y3VycmVudGx5IHNlbmRzIG91dCB0d28gc3luYyBtZXNzYWdlczoKKyAgICAgICAgMS4gQ29ubmVj
dFRvKlN0b3JhZ2VBcmVhOiBmb3IgZ2V0dGluZyB0aGUgcmVtb3RlIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllcgorICAgICAgICAyLiBnZXRWYWx1ZXM6IGZvciBnZXR0aW5nIHRoZSBjb250ZW50IG9mIFN0
b3JhZ2VBcmVhCisgICAgICAgIFdlIGNhbiBtZXJnZSB0aGVzZSB0d28gbWVzc2FnZXMgaW50byBv
bmUgbWVzc2FnZTogQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jLCBhbmQgcmV0dXJuIGJvdGggcmVt
b3RlIAorICAgICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgYW5kIGNvbnRlbnQgaW4gaXRzIHJl
cGx5LiBUaGlzIHdheSwgd2ViIHByb2Nlc3Mgd2lsbCBub3QgYmUgYmxvY2tlZCB0d2ljZS4KKwor
ICAgICAgICBUbyByZWR1Y2UgdGhlIHdhaXQgdGltZSBmb3IgY29ubmVjdGluZyB0byBhIGxvY2Fs
IFN0b3JhZ2VBcmVhLCB3ZSB3b3VsZCBwcmV3YXJtIExvY2FsU3RvcmFnZSBieSBjcmVhdGluZyBp
dHMgCisgICAgICAgIFN0b3JhZ2VBcmVhTWFwIGFoZWFkIGFuZCBtYWtpbmcgaXQgY29ubmVjdGVk
IChyMjQ3NTU1KSwgYnV0IHdlIGRvbid0IGFjdHVhbGx5IG5lZWQgU3RvcmFnZUFyZWFNYXAgdG8g
YmUgcmVhZHkgCisgICAgICAgIGZvciBvcGVyYXRpb24gYXQgdGhpcyB0aW1lLiBUaGVyZWZvcmUs
IGEgbmV3IGFzeW5jIG1lc3NhZ2UgQ29ubmVjdFRvU3RvcmFnZUFyZWEgaXMgYWRkZWQgdG8gYmUg
dXNlZCBmb3IgCisgICAgICAgIHByZXdhcm1pbmcuCisKKyAgICAgICAgSWYgTG9jYWxTdG9yYWdl
IGlzIHVzZWQgaW1tZWRpYXRlIGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5
IHNlbmQgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5n
IHRoZSByZXBseSBvZiBDb25uZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdl
QXJlYU1hcCB3b3VsZCBoYW5kbGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICBy
ZXBseSBiZWZvcmUgQ29ubmVjdFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3Jp
dHkgb2Ygc3luYyBtZXNzYWdlKSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAg
ICBtZXNzYWdlcyAoRGlzcGF0Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBz
ZW50IGZyb20gbmV0d29yayBwcm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5Lgor
ICAgICAgICBUbyBzb2x2ZSB0aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5k
aWNhdGUgdGhlIG9yZGVyIG9mIG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNv
CisgICAgICAgIFN0b3JhZ2VBcmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hl
biBpdCBpcyBhbHJlYWR5IHN5bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9y
YWdlQXJlYS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkxvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRM
b2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJh
bnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1h
bmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFC
YXNlOjpub3RpZnlMaXN0ZW5lcnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFCYXNlOjpkaXNwYXRjaEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQpOgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVy
U3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVy
U3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJl
YU1hcCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xl
YXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYU1hcDo6c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6OmNvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29u
bmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBB
ZGRlZC4KKwogMjAyMi0wMS0xMyAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW1hDQnVpbGRdIEFkZCAicHJvZHVjdCBkZXBlbmRlbmNpZXMiIHdoaWNoIGluZmx1
ZW5jZSB3b3Jrc3BhY2UgYnVpbGQgb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCA2MWViOGE0MWMxODkyZjIwMGM1ODU4M2E2OTdlZDI1ODhmNjljZjY5Li4zNTg3YTc3NDE2OGMw
MTYwZmU2OWUyYjEwMTI5NTg0YjA0MjJjYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBET01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJ
Zk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHBhZ2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKKyAgICBsb2Nh
bFN0b3JhZ2UtPmFyZWEoKS5wcmV3YXJtKCk7CiB9CiAKIERPTVdpbmRvdzo6fkRPTVdpbmRvdygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDg2ZjlhN2JlM2ViYTBkYmYyYjI3NWM3NTFjYzg0M2Rk
YWE3NGE1YzEuLmE0N2VhMGQ4NDQwMDU4MGNlYmUxMjFjODllYmMwZjg3NzI0N2ZjODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDU3LDE5ICsxMDU3LDYgQEAgdm9pZCBGcmFtZTo6ZHJvcENo
aWxkcmVuKCkKICAgICAgICAgdHJlZSgpLnJlbW92ZUNoaWxkKCpjaGlsZCk7CiB9CiAKLXZvaWQg
RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKQotewotICAgIEFTU0VSVChpc01haW5GcmFt
ZSgpKTsKLSAgICBBU1NFUlQobV9sb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQgPCBtYXhsb2Nh
bFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQpOwotICAgICsrbV9sb2NhbFN0b3JhZ2VQcmV3YXJtaW5n
Q291bnQ7Ci19Ci0KLWJvb2wgRnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSBjb25zdAot
ewotICAgIEFTU0VSVChpc01haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VQ
cmV3YXJtaW5nQ291bnQgPCBtYXhsb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQ7Ci19Ci0KIEZs
b2F0U2l6ZSBGcmFtZTo6c2NyZWVuU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX292ZXJyaWRl
U2NyZWVuU2l6ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNTM2NDRlYjE5NWUxN2Nk
MmZkN2ZjNDFiMTQyYWQxYjc2ZTRiNmNjZC4uZTA0Yzk0NDFlMzEwODA3M2FkNTg5YmQ4ZThmYTAw
YmRkMzM5NjIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjkxLDkgKzI5MSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgYm9v
bCBhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAot
ICAgIHZvaWQgZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOwotICAgIGJvb2wgbWF5UHJld2FybUxv
Y2FsU3RvcmFnZSgpIGNvbnN0OwotCiAgICAgZW51bSBjbGFzcyBJbnZhbGlkYXRlQ29udGVudEV2
ZW50UmVnaW9uc1JlYXNvbiB7IExheW91dCwgRXZlbnRIYW5kbGVyQ2hhbmdlIH07CiAgICAgdm9p
ZCBpbnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKEludmFsaWRhdGVDb250ZW50
RXZlbnRSZWdpb25zUmVhc29uKTsKIApAQCAtMzYxLDcgKzM1OCw2IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9uYXZpZ2F0aW9uRGlzYWJsZUNvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1f
c2VsZk9ubHlSZWZDb3VudCB7IDAgfTsKICAgICBib29sIG1faGFzSGFkVXNlckludGVyYWN0aW9u
IHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCB7
IDAgfTsKIAogICAgIEZsb2F0U2l6ZSBtX292ZXJyaWRlU2NyZWVuU2l6ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IDI1MWJkNDI5ZDYyMDYyOTk3ZjcyOGRjMGRjNjYy
NWYxNGYxYjVjNzguLjc3NDYxNDBmNzg0MDgxYjA3ODZhMTVkNjAxZmVmY2EyYzkxYzEwYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZURhdGFiYXNlSWZJZGxlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHByZXdhcm0oKSB7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUu
aAppbmRleCAyMjA1ODdlYzg2YmE1YzUxNzFiNjczYjE3N2E0NjYxYTIyY2YzMTNkLi4wZWQ5YTFi
ZWEyZGQ3NDdhODJkMzUxZjc0MzI4ZmVhNmMxMmQyMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlVHlwZS5oCkBAIC00NCwzICs0NCwxNiBAQCBpbmxpbmUgYm9vbCBpc1BlcnNpc3RlbnRM
b2NhbFN0b3JhZ2UoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6U3RvcmFnZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFn
ZVR5cGU6OlNlc3Npb24sCisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpMb2NhbCwKKyAg
ICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsCisgICAgPjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKaW5kZXggYzg0ZWFkNDMwYWIxNWQ5NGZk
OGVmMjUzM2Q2ZTQ5Mjg3MmI2ZTEyYi4uMGM0MWFiOTJlMzFmNDlkNmE1YTk0OWE0MDM3MjhjMmFh
OWQwNDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBTdG9yYWdl
QXJlYTo6Y2xlYXIoKQogICAgIH0KIAogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6
IG1fZXZlbnRMaXN0ZW5lcnMpCi0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5l
clVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobGlzdGVu
ZXJVbmlxdWVJRCwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKDApLCBtX2lk
ZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIExvY2FsU3RvcmFnZURhdGFiYXNlJiBTdG9yYWdl
QXJlYTo6ZW5zdXJlRGF0YWJhc2UoKSBjb25zdApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgU3Rv
cmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNl
Q29ubmVjdGlvbiwgU3RvCiAgICAgQVNTRVJUKHN0b3JhZ2VBcmVhSW1wbElEKTsKICAgICBmb3Ig
KGF1dG8mIGxpc3RlbmVyVW5pcXVlSUQgOiBtX2V2ZW50TGlzdGVuZXJzKSB7CiAgICAgICAgIGF1
dG8gb3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCA9IGxpc3RlbmVyVW5pcXVlSUQgPT0gc291cmNl
Q29ubmVjdGlvbiA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdG9yYWdlQXJlYUltcGxJRCkgOiBzdGQ6
Om51bGxvcHQ7Ci0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5lclVuaXF1ZUlE
LCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KG9wdGlvbmFs
U3RvcmFnZUFyZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChs
aXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFn
ZUV2ZW50KG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVl
LCB1cmxTdHJpbmcsIDApLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9j
YWxTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggY2JkZGQyZTMwNDhkMjg3MGFlMDdhMGFhZGY0ZWQ5
N2IzMTA0MzZjOS4uM2NlMGVjODU3M2Q5OGM5ZDc0OGQ3MDRiMmRjOWRjOGM5MTlkNmY3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFn
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9M
b2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgTG9jYWxTdG9y
YWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZEZvclRyYW5zaWVudFN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvCiAgICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYSA9IG51bGxwdHI7CiB9CiAKLVN0
b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQor
U3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIGlmICgh
bV9sb2NhbFN0b3JhZ2VBcmVhKSB7CiAgICAgICAgIGlmICghbV9wYXRoLmlzRW1wdHkoKSkKQEAg
LTE3NywxMSArMTc3LDExIEBAIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5h
Z2VyOjpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjCiAgICAgfQogCiAgICAg
QVNTRVJUKG1fcGF0aC5pc0VtcHR5KCkgfHwgbV9sb2NhbFN0b3JhZ2VBcmVhLT50eXBlKCkgPT0g
U3RvcmFnZUFyZWFCYXNlOjpUeXBlOjpTUUxpdGUpOwotICAgIG1fbG9jYWxTdG9yYWdlQXJlYS0+
YWRkTGlzdGVuZXIoY29ubmVjdGlvbik7CisgICAgbV9sb2NhbFN0b3JhZ2VBcmVhLT5hZGRMaXN0
ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsKICAgICByZXR1cm4gbV9sb2NhbFN0
b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7CiB9CiAKLVN0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2Nh
bFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4pCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBpZiAoIW1fdHJh
bnNpZW50U3RvcmFnZUFyZWEpIHsKICAgICAgICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYSA9IG1h
a2VVbmlxdWU8TWVtb3J5U3RvcmFnZUFyZWE+KG9yaWdpbiwgU3RvcmFnZUFyZWFCYXNlOjpTdG9y
YWdlVHlwZTo6TG9jYWwpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
KElQCiAgICAgfQogCiAgICAgQVNTRVJUKG1fdHJhbnNpZW50U3RvcmFnZUFyZWEtPnR5cGUoKSA9
PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6Ok1lbW9yeSk7Ci0gICAgbV90cmFuc2llbnRTdG9yYWdl
QXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbik7CisgICAgbV90cmFuc2llbnRTdG9yYWdlQXJl
YS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbiwgc291cmNlSWRlbnRpZmllcik7CiAgICAgcmV0dXJu
IG1fdHJhbnNpZW50U3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5h
Z2VyLmgKaW5kZXggYTg4ODQyZTI5NWYyZDkwYThmMGU4YmJhOGVkN2IzZWEyN2Q1OGE4Yi4uY2Rj
YjY4MTJmOGZlZDY5YmNkYTQ5ZjY5NDJkNjdjZGEyZDEwZjE1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdl
ci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01Niw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2Uo
KTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7
CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBS
ZWY8V29ya1F1ZXVlPiYmKTsKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvVHJh
bnNpZW50TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVj
dFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFJlZjxXb3JrUXVl
dWU+JiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9UcmFuc2llbnRMb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCBkaXNjb25u
ZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVh
SWRlbnRpZmllcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4
IDkzMDA5ZTI0OWVkMWE0Yzg5N2NhOTE5MGMzZjI0ZDVhM2M0NTQ4NWEuLmQ5NzRlNmRiMzU1Mzg3
MTQyNWJhZTYyYzA3MjI1NzIxMzJjNmQ0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3Bw
CkBAIC02MjUsMjQgKzYyNSwzMyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3luY0xv
Y2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldAogICAgIH0pOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
ciBuYW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
b3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9yaWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVy
KGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCpt
X3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlv
bi51bmlxdWVJRCgpLCBvcmlnaW4sIG1fcXVldWUuY29weVJlZigpKSk7Ci19CisgICAgYXV0byBj
b25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKKyAgICBhdXRvJiBv
cmlnaW5TdG9yYWdlTWFuYWdlciA9IGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKTsK
KyAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgcmVzdWx0SWRlbnRpZmllcjsKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpMb2NhbDoKKyAgICAgICAg
cmVzdWx0SWRlbnRpZmllciA9IG9yaWdpblN0b3JhZ2VNYW5hZ2VyLmxvY2FsU3RvcmFnZU1hbmFn
ZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShjb25u
ZWN0aW9uSWRlbnRpZmllciwgc291cmNlSWRlbnRpZmllciwgb3JpZ2luLCBtX3F1ZXVlLmNvcHlS
ZWYoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OlRy
YW5zaWVudExvY2FsOgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1h
bmFnZXIubG9jYWxTdG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0
VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJ
ZGVudGlmaWVyLCBvcmlnaW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0
b3JhZ2VUeXBlOjpTZXNzaW9uOgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3Rv
cmFnZU1hbmFnZXIuc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkp
LmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShjb25uZWN0aW9uSWRlbnRpZmllciwgc291cmNl
SWRlbnRpZmllciwgb3JpZ2luLCBuYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICB9CiAKLXZvaWQg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFdlYkNvcmU6
OkNsaWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgb3BlbmluZ09yaWdpbiB9OwotICAg
IGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5sb2Nh
bFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb1RyYW5zaWVu
dExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBvcmlnaW4pKTsKKyAgICBp
ZiAoYXV0byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFy
ZWEocmVzdWx0SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihy
ZXN1bHRJZGVudGlmaWVyLCBzdG9yYWdlQXJlYS0+YWxsSXRlbXMoKSwgU3RvcmFnZUFyZWFCYXNl
OjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKSk7CisKKyAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIocmVzdWx0SWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4geyB9LCBTdG9yYWdl
QXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyhJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBu
YW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCB0b3BPcmlnaW4gfTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikuc2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb1Nlc3Np
b25TdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgaWRlbnRpZmllcikp
OworICAgIGNvbm5lY3RUb1N0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHR5cGUsIHNvdXJjZUlkZW50
aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlzY29ubmVjdEZyb21T
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBpZGVudGlmaWVyKQpAQCAtNjY5LDE2ICs2NzgsNiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lYwogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFZhbHVlcyhT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGF1dG8gc3RvcmFnZUFy
ZWEgPSBtX3N0b3JhZ2VBcmVhUmVnaXN0cnktPmdldFN0b3JhZ2VBcmVhKGlkZW50aWZpZXIpKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZUFyZWEtPmFsbEl0ZW1zKCkp
OwotICAgIAotICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotfQotCiB2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nJiYga2V5
LCBTdHJpbmcmJiB2YWx1ZSwgU3RyaW5nJiYgdXJsU3RyaW5nKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IGQyMWQ2NTZkM2E2
NzI3Yzk4ZDEyYTQxMjM3NWVkMDUyYTUzYTllOTEuLmExZjMwNzY0NDY3NmU4ZDUzNTY1YmZlYzgz
Nzk2Nzk2YzM0NmE4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VB
cmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdl
TmFtZXNwYWNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KQEAgLTQ0LDYgKzQ1LDcgQEAgY2xhc3MgU2hhcmVk
RmlsZUhhbmRsZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENsaWVudE9yaWdpbjsK
K2VudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTEwOCwxMiArMTEwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRIYW5kbGUoSVBD
OjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFN0cmlu
ZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNv
cmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VF
cnJvcj4pPiYmKTsKICAgICAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzIGZvciBXZWJTdG9yYWdl
LgotICAgIHZvaWQgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7Ci0gICAg
dm9pZCBjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYs
IFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7Ci0gICAgdm9pZCBjb25uZWN0VG9TZXNzaW9uU3Rv
cmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBcmVhSWRlbnRpZmllcik+JiYpOworICAgIHZvaWQgY29ubmVjdFRvU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRp
ZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1N0
b3JhZ2VBcmVhU3luYyhJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJl
YUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwogICAg
IHZvaWQgZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdl
QXJlYUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJ
UEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZ2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYp
PiYmKTsKICAgICB2b2lkIHNldEl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVu
dGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzZWVkLCBTdHJpbmcm
JiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgcmVt
b3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VB
cmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNlZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYg
dXJsU3RyaW5nKTsKICAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3Ry
aW5nJiYgdXJsU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2Vz
LmluCmluZGV4IGE1MTZhZGE5ODMyZmRlZjViNjgxNDk0NDIxNWY2ODhmZGE4MWM2MTUuLmZmYzg2
ZjlkMDlmZDQ1OTU1MzVmODc1MDUzOTQ1YTE4YTc3MzFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtT
dG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtNDAsMTIgKzQwLDEwIEBACiAgICAgR2V0SGFu
ZGxlTmFtZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikg
LT4gKEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJy
b3I+IHJlc3VsdCkgQXN5bmMKICAgICBHZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIG5hbWUpIC0+IChFeHBlY3RlZDxzdGQ6OnBh
aXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBXZWJLaXQ6OkZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCiAKLSAg
ICBDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVy
IGlkZW50aWZpZXIpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIENvbm5lY3RUb1Ry
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
ciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
dG9wTGV2ZWxTZWN1cml0eU9yaWdpbkRhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ29ubmVjdFRv
U2Vzc2lvblN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3Rv
cmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3Vy
aXR5T3JpZ2luRGF0YSkgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5lY3RUb1N0b3JhZ2VBcmVh
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyIHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIg
bmFtZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4p
IC0+IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIEFzeW5jIFdh
bnRzQ29ubmVjdGlvbgorICAgIENvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyhXZWJDb3JlOjpTdG9y
YWdlVHlwZSB0eXBlLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVu
dGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50
aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKSAtPiAoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
aXRlbXMsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5l
Y3Rpb24KICAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIFdhbnRzQ29ubmVjdGlvbgogICAgIENsb25lU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBmcm9tU3Rv
cmFnZU5hbWVzcGFjZUlELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHRvU3Rv
cmFnZU5hbWVzcGFjZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXMoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IHZhbHVlcykgU3luY2hyb25vdXMKICAgICBTZXRJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBp
bXBsSWRlbnRpZmllciwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmlu
ZyB2YWx1ZSwgU3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9uCiAgICAgUmVtb3ZlSXRl
bShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBT
ZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAgICBD
bGVhcihXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0
b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdl
TWFuYWdlci5jcHAKaW5kZXggZDQwZTQwYjYxNzNjMjhkNDRjNTdiOGUyMGY3MmJjYjUxMTA0MWRi
NS4uYjczNDJlNDBlZjFmNmJiNWNkYjZmYmZiMmVmMTIzZjlkMDZlOGUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25T
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVy
IFNlc3Npb25TdG9yYWdlTWFuYWdlcjo6YWRkU3RvcmFnZUFyZWEoc3RkOjp1bmlxdWVfcHRyPE1l
bW8KICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIFNl
c3Npb25TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIp
CitTdG9yYWdlQXJlYUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9T
ZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBT
dG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFj
ZUlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbV9zdG9yYWdlQXJlYXNCeU5h
bWVzcGFjZS5nZXQobmFtZXNwYWNlSWRlbnRpZmllcik7CiAgICAgaWYgKCFpZGVudGlmaWVyLmlz
VmFsaWQoKSkgewpAQCAtODQsNyArODQsOCBAQCBTdG9yYWdlQXJlYUlkZW50aWZpZXIgU2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDbwogICAg
IGlmICghc3RvcmFnZUFyZWEpCiAgICAgICAgIHJldHVybiBTdG9yYWdlQXJlYUlkZW50aWZpZXIg
eyB9OwogCi0gICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24pOworICAgIHN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsKKwog
ICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXgg
ZmMxNzYxYmU5MDBmOGU0ZGE3NzU0YjAxOGYxZGJlMmUzOGZiN2RmYS4uOGU2OTM3ZWUwNTQ4ZjQ1
MWIwZjA5MTUwODY3NDkzYjI5NmYxODJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaApAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRhdGEoKTsKICAgICB2b2lkIGNv
bm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAKLSAgICBTdG9yYWdl
QXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lv
blN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgU3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2xvbmVT
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmlu
ZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJhMTQ5OThmOGYzYzEuLjU3OTdlOWM1NDAy
MWQyYThkODBmMjgyMWUxZTUyMWEzMDhkMmIzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4
ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordWludDY0X3QgU3RvcmFnZUFyZWFC
YXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1
aW50NjRfdD4gY3VycmVuSWRlbnRpZmllcigwKTsKKyAgICByZXR1cm4gKytjdXJyZW5JZGVudGlm
aWVyOworfQorCiBTdG9yYWdlQXJlYUJhc2U6OlN0b3JhZ2VBcmVhQmFzZSh1bnNpZ25lZCBxdW90
YSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCi0gICAgOiBtX2lkZW50aWZp
ZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgIDogbV9pZGVudGlmaWVy
KFN0b3JhZ2VBcmVhSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCkpCiAgICAgLCBtX3F1
b3RhKHF1b3RhKQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogewpAQCAtMzksMTEgKzQ1LDExIEBA
IFN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFnZUFyZWFCYXNlKHVuc2lnbmVkIHF1b3RhLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yCiAKIFN0b3JhZ2VBcmVhQmFzZTo6flN0b3JhZ2VBcmVh
QmFzZSgpID0gZGVmYXVsdDsKIAotdm9pZCBTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbikKK3ZvaWQgU3RvcmFnZUFyZWFCYXNl
OjphZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9saXN0ZW5l
cnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAgIEFTU0VSVCghbV9saXN0ZW5lcnMuY29udGFp
bnMoY29ubmVjdGlvbikgfHwgbV9saXN0ZW5lcnMuZ2V0KGNvbm5lY3Rpb24pID09IGlkZW50aWZp
ZXIpOwogCi0gICAgbV9saXN0ZW5lcnMuYWRkKGNvbm5lY3Rpb24pOworICAgIG1fbGlzdGVuZXJz
LnNldChjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6
OnJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbikKQEAg
LTU4LDE5ICs2NCwxOSBAQCBib29sIFN0b3JhZ2VBcmVhQmFzZTo6aGFzTGlzdGVuZXJzKCkgY29u
c3QKIAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6Om5vdGlmeUxpc3RlbmVyc0Fib3V0Q2xlYXIoKQog
ewotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fbGlzdGVuZXJzKQotICAgICAgICBJUEM6
OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpD
bGVhckNhY2hlKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBmb3IgKGF1dG8mIFtj
b25uZWN0aW9uLCBpZGVudGlmaWVyXSA6IG1fbGlzdGVuZXJzKQorICAgICAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNh
Y2hlKFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpLCBpZGVudGlmaWVy
LnRvVUludDY0KCkpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6ZGlzcGF0Y2hFdmVudHMo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyIHNvdXJjZUltcGxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNvdXJjZUltcGxJZGVudGlmaWVyKTsK
IAotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fbGlzdGVuZXJzKSB7CisgICAgZm9yIChh
dXRvJiBbY29ubmVjdGlvbiwgaWRlbnRpZmllcl0gOiBtX2xpc3RlbmVycykgewogICAgICAgICBz
dGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IGltcGxJZGVudGlmaWVyOwog
ICAgICAgICBpZiAoY29ubmVjdGlvbiA9PSBzb3VyY2VDb25uZWN0aW9uKQogICAgICAgICAgICAg
aW1wbElkZW50aWZpZXIgPSBzb3VyY2VJbXBsSWRlbnRpZmllcjsKLSAgICAgICAgSVBDOjpDb25u
ZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0
Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1
cmxTdHJpbmcpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNo
U3RvcmFnZUV2ZW50KGltcGxJZGVudGlmaWVyLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJs
U3RyaW5nLCBTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKSwgaWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaAppbmRleCBlZDNlZDE0MjA2
ZTE3NWRjYWNjOGMxZjk5NDkwNzUwNTQ1ZTM0ZTk4Li5lZmM4ZmI5NjQ4OTEwN2M4OGUzM2NkMTIz
ZjYwOWEzNmYyMWFlZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQ3LDYgKzQ4LDcgQEAgY2xhc3MgU3RvcmFnZUFy
ZWFCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFN0b3JhZ2VBcmVhQmFzZT4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFN0b3JhZ2VBcmVhQmFzZSk7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIHVpbnQ2NF90IG5leHRNZXNzYWdlSWRlbnRp
ZmllcigpOwogICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVhQmFzZSgpOwogCiAgICAgZW51bSBjbGFz
cyBUeXBlIDogYm9vbCB7IFNRTGl0ZSwgTWVtb3J5IH07CkBAIC01OSw3ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQogICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHVuc2lnbmVkIHF1b3RhKCkgY29uc3QgeyByZXR1
cm4gbV9xdW90YTsgfQotICAgIHZvaWQgYWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCk7CisgICAgdm9pZCBhZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBT
dG9yYWdlQXJlYU1hcElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBoYXNMaXN0ZW5lcnMoKSBjb25zdDsKICAg
ICB2b2lkIG5vdGlmeUxpc3RlbmVyc0Fib3V0Q2xlYXIoKTsKQEAgLTc3LDcgKzc5LDcgQEAgcHJp
dmF0ZToKICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIHVuc2ln
bmVkIG1fcXVvdGE7CiAgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG1fb3JpZ2luOwotICAgIEhh
c2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9saXN0ZW5lcnM7CisgICAgSGFzaE1h
cDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXI+IG1f
bGlzdGVuZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4YjUyMWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2
Mzc2OWM5MGRmOTgyLi45YmVhNGJiNjUxNzhmYmEwZjlmOWY4NTdmZjlhZDNmMWQzMzVhNjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMwNSw2ICszMDUs
NyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAg
ICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAgICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlN0b3Jh
Z2VUeXBlJywKICAgICAgICAgJ1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OldlYlNvY2tldElkZW50aWZpZXInLApAQCAtMzQ3LDYgKzM0OCw3IEBAIGRlZiB0eXBlc190aGF0
X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVy
JywKKyAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpU
YXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6VGV4dENoZWNrZXJSZXF1ZXN0SUQnLApA
QCAtODQxLDYgKzg0Myw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duJzogWyc8V2ViQ29yZS9Eb2N1bWVu
dFN0b3JhZ2VBY2Nlc3MuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29w
ZSc6IFsnPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCc6IFsnPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdl
QWNjZXNzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZSc6IFsnPFdlYkNvcmUv
U3RvcmFnZVR5cGUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50
aWZpZXInOiBbJzxXZWJDb3JlL1BsdWdpbkRhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlN5
c3RlbVByZXZpZXdJbmZvJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSc6IFsnPFdlYkNvcmUvVGV4dENo
ZWNraW5nLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAxNTI2MzBhMzAzMjEwNzQ4Yjg4YTAxOWExM2M0MGEwZGFmMjAzZDE0Li41
NGE0YjIxMDFhMzU3YWUxNDk4ZThlODY3NDFlODc2MDUyMjVhMTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NTcsNiArMTQ1Nyw3
IEBACiAJCTkzQUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQUI5QjQyMjU3NDkyOEMwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJOTNBQjlCNTUyNTc1QTI3NjAw
OThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNBQjlCNEYyNTc1ODkxMTAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk5M0FCOUI1
NjI1NzVBMjhCMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI1MTI1NzU4OTExMDA5OEIxMEUgLyogU3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIu
aCAqLzsgfTsKIAkJOTNCMEE2NzUyNkQ1QURDRjAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0IwQTY3NDI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuaCAqLzsg
fTsKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0OTIyN0QxNDcy
MDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUyMjdEMTRCMTAw
Qjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxT
dG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKQEAgLTUzMDUsNiArNTMwNiw3IEBACiAJCTkzQUI5QjUy
MjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTMy
NTc1ODkxMjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTQyNTc1ODkxMjAwOThCMTBF
IC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzMyNkQ1QTcyRTAw
QUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1p
c3Npb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBl
cm1pc3Npb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2
MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzA2MSw2ICs3MDYzLDcgQEAKIAkJCQkxQUNFQ0QyMjE3MTYy
REIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwICovLAogCQkJCTFBQ0VDRDIzMTcxNjJE
QjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oICovLAogCQkJCTFBMzM0REVBMTZERThCNjgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLywKKwkJCQk5M0FFQzE2MDI3
OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggKi8sCiAJCQkJNDY1
RjRFMDUyMzBCMkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmggKi8s
CiAJCQkJMUExNzYzNTQxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cCAqLywKIAkJCQkxQTE3NjM1NTE2QjFENUQwMDBEODhGRDYgLyogU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaCAqLywKQEAgLTEzMjYzLDYgKzEzMjY2LDcgQEAKIAkJCQk5M0U3OTlEQzI3NjEyMTA4MDA3
NDAwOEEgLyogU3RvcmFnZUFyZWFCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQzMzA2RjE2
QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9y
YWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlDNzI3NjAyNzQ2
MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNC
MjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAyMjcwYTUzYWY5YmE4YmY4MGQ3YzNiM2Rj
ZGM4Y2ViNTY1MTc2ZTMuLjhkM2I1N2JkMThkYzJlMDUzODRjY2YwOGQ3ZDljODkwN2NkMDRkZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlQXJlYU1hcCA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJZGVudGlmaWVy
PFN0b3JhZ2VBcmVhSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisg
ICAgICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c3RvcmFnZUFyZWFNYXAobWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHN0b3JhZ2VB
cmVhTWFwLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCBmODE2Nzc1YTc5OTRhYjIyY2MyZmJjMjYwMDBlOWQyMmYyZmMyYzZhLi4yNDU1OTgxYjAzNjE2
OTJhNTI2NTQyMGZlZWRjNGI0ZjJkNDBkYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0xMTg5LDggKzExODksOCBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5l
YwogICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik7CiAgICAgQVNTRVJUX1VO
VVNFRChjb25uZWN0aW9uLCBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9PSBjb25uZWN0aW9u
KTsKIAotICAgIGZvciAoYXV0byogc3RvcmFnZUFyZWFNYXAgOiBjb3B5VG9WZWN0b3IobV9zdG9y
YWdlQXJlYU1hcHMudmFsdWVzKCkpKQotICAgICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlzY29ubmVj
dCgpOworICAgIGZvciAoYXV0byBrZXkgOiBjb3B5VG9WZWN0b3IobV9zdG9yYWdlQXJlYU1hcHMu
a2V5cygpKSkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGtleSktPmRpc2Nvbm5lY3Qo
KTsKIAogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgewogICAgICAg
ICBhdXRvIGlkYkNvbm5lY3Rpb24gPSBwYWdlLT5jb3JlUGFnZSgpLT5vcHRpb25hbElEQkNvbm5l
Y3Rpb24oKTsKQEAgLTE2OTcsMjAgKzE2OTcsMjAgQEAgdm9pZCBXZWJQcm9jZXNzOjpub25WaXNp
YmxlUHJvY2Vzc01lbW9yeUNsZWFudXBUaW1lckZpcmVkKCkKIAogdm9pZCBXZWJQcm9jZXNzOjpy
ZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1hcCkKIHsK
LSAgICBBU1NFUlQoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQoIW1f
c3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKTsK
LSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5zZXQoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSwg
JnN0b3JhZ2VBcmVhTWFwKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBzdG9yYWdlQXJlYU1hcC5p
ZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMuYWRkKGlkZW50aWZpZXIsIHN0b3JhZ2VB
cmVhTWFwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAo
U3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogewotICAgIEFTU0VSVChzdG9yYWdlQXJl
YU1hcC5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlu
cygqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFy
ZWFNYXBzLmdldCgqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSA9PSAmc3RvcmFnZUFyZWFN
YXApOwotICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgqc3RvcmFnZUFyZWFNYXAuaWRlbnRp
ZmllcigpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVy
KCk7CisgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KyAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGlkZW50aWZpZXIpLmdldCgpID09ICZz
dG9yYWdlQXJlYU1hcCk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKGlkZW50aWZpZXIp
OwogfQogCi1TdG9yYWdlQXJlYU1hcCogV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CitXZWFrUHRyPFN0b3JhZ2VBcmVhTWFw
PiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgaWRl
bnRpZmllcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGlkZW50
aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNDY5YTBh
NWUxOTFkY2Y0NzAxMzI3MTZiNjcyZWQxYzJlNjFmMzExNy4uZTg3ZDczM2Q3NmFkZWUwY2I4YmFk
Yjg3ZjVjYTc1NWRhNjJkNzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIklk
ZW50aWZpZXJUeXBlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNsdWRl
ICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRj
aGVyLmgiCkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlclN0
b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU3RvcmFn
ZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmKTsKLSAgICBTdG9yYWdlQXJlYU1hcCogc3RvcmFnZUFy
ZWFNYXAoU3RvcmFnZUFyZWFJZGVudGlmaWVyKSBjb25zdDsKKyAgICBXZWFrUHRyPFN0b3JhZ2VB
cmVhTWFwPiBzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIpIGNvbnN0Owog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBw
bGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKQEAgLTc0Miw3ICs3NDIsNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hDb3VudGVkU2V0PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiBtX3N3UmVnaXN0cmF0aW9uQ291bnRzOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFN0
b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsK
KyAgICBIYXNoTWFwPFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgV2Vha1B0cjxTdG9yYWdlQXJl
YU1hcD4+IG1fc3RvcmFnZUFyZWFNYXBzOwogICAgIAogICAgIC8vIFByZXdhcm1lZCBXZWJQcm9j
ZXNzZXMgZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3
aHkgdGhpcyBpcyBhbiBvcHRpb25hbC4KICAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2Vz
cyBnZXRzIGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAKaW5kZXggYjEyYzU4YzBhYWQ2N2U5OTU3NzA2ZTI5ZTZkZTY1NjllZmU2NDg0
Ni4uMWY5YjQyY2IxMjdkNmRjMDI4YTY4MDU5ZTI3MTAxZmM3OTY5NDQ2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
Y3BwCkBAIC0xMTIsMjAgKzExMiwxMCBAQCBzaXplX3QgU3RvcmFnZUFyZWFJbXBsOjptZW1vcnlC
eXRlc1VzZWRCeUNhY2hlKCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYUlt
cGw6OmluY3JlbWVudEFjY2Vzc0NvdW50KCkKK3ZvaWQgU3RvcmFnZUFyZWFJbXBsOjpwcmV3YXJt
KCkKIHsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3JrIHBy
b2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgotfQotCi12b2lkIFN0b3JhZ2VB
cmVhSW1wbDo6ZGVjcmVtZW50QWNjZXNzQ291bnQoKQotewotICAgIC8vIFN0b3JhZ2UgYWNjZXNz
IGlzIGhhbmRsZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRv
IGRvIGhlcmUuCi19Ci0KLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxl
KCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAgICAgIG1fc3RvcmFnZUFyZWFN
YXAtPmNvbm5lY3QoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4
IDc5ZTE0YjkxZjhhYzZkODJmZTc5MmFjMDZkMzk0ZWQ3NjU4NDJhNjIuLmEzNWQ2Njc5MjUwNWYw
YzAzZTU5MDg3MDAxZTBjYTRmZGE3YTZjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw5ICs2MSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIG92ZXJyaWRlOwotICAgIHZvaWQg
aW5jcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3JlbWVudEFjY2Vz
c0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwcmV3YXJtKCkgZmluYWw7CiAKICAgICBJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKICAgICBXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCmluZGV4IDJjZjdhNmQ0YjYwMDVjMWQ3ZWMyNTZiZDYzODg3NjI5NGU5ZTRjZjIuLmRm
NGMyNmYyYWZmMzI5MWQ5MTlkZWQ1M2RkNzYyN2I1OGYyODkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAg
LTUxLDE3ICs1MSwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUlt
cGwmIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1
cml0eU9yaWdpbikKLSAgICA6IG1fbmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCisgICAgOiBt
X2lkZW50aWZpZXIoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwg
bV9uYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZSkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oV1RG
TW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9yYWdlTmFtZXNw
YWNlLnF1b3RhSW5CeXRlcygpKQogICAgICwgbV90eXBlKHN0b3JhZ2VOYW1lc3BhY2Uuc3RvcmFn
ZVR5cGUoKSkKIHsKLSAgICBjb25uZWN0KCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjp+U3Rv
cmFnZUFyZWFNYXAoKQogewogICAgIGRpc2Nvbm5lY3QoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiB1bnNpZ25lZCBT
dG9yYWdlQXJlYU1hcDo6bGVuZ3RoKCkKQEAgLTk1LDggKzk3LDggQEAgdm9pZCBTdG9yYWdlQXJl
YU1hcDo6c2V0SXRlbShGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNl
QXJlYSwgY28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIGlm
IChtX21hcElEKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpTZXRJdGVtKCptX21hcElELCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCks
IG1fY3VycmVudFNlZWQsIGtleSwgdmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKSksIDApOworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpTZXRJ
dGVtKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1f
Y3VycmVudFNlZWQsIGtleSwgdmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElE
IGlzIGludmFsaWQiKTsKIH0KQEAgLTExNCwyMyArMTE2LDIyIEBAIHZvaWQgU3RvcmFnZUFyZWFN
YXA6OnJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUlt
cGwqIHNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBpZiAo
bV9tYXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6UmVtb3ZlSXRlbSgqbV9tYXBJRCwgc291cmNlQXJlYS0+aWRlbnRpZmllcigp
LCBtX2N1cnJlbnRTZWVkLCBrZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJp
bmcoKSksIDApOworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJdGVt
KCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3Vy
cmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwg
MCk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU3RvcmFn
ZUFyZWFNYXA6OnJlbW92ZUl0ZW0gZmFpbGVkIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52
YWxpZCIpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhcihXZWJDb3JlOjpGcmFtZSog
c291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSkKIHsKLSAgICBjb25uZWN0
KCk7Ci0KKyAgICBjb25uZWN0U3luYygpOwogICAgIHJlc2V0VmFsdWVzKCk7CiAKICAgICBtX2hh
c1BlbmRpbmdDbGVhciA9IHRydWU7CiAgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VNYXA+
KG1fcXVvdGFJbkJ5dGVzKTsKIAotICAgIGlmIChtX21hcElEKQotICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhcigqbV9tYXBJRCwg
c291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRp
ZmllcikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Q2xlYXIoKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEtPmlkZW50
aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpKSwgMCk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdl
LCAiU3RvcmFnZUFyZWFNYXA6OmNsZWFyIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlz
IGludmFsaWQiKTsKIH0KQEAgLTE1MSwyMSArMTUyLDExIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OnJlc2V0VmFsdWVzKCkKIAogU3RvcmFnZU1hcCYgU3RvcmFnZUFyZWFNYXA6OmVuc3VyZU1hcCgp
CiB7Ci0gICAgY29ubmVjdCgpOworICAgIGNvbm5lY3RTeW5jKCk7CiAKLSAgICBpZiAoIW1fbWFw
KSB7CisgICAgaWYgKCFtX21hcCkKICAgICAgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VN
YXA+KG1fcXVvdGFJbkJ5dGVzKTsKIAotICAgICAgICBpZiAobV9tYXBJRCkgewotICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byB1c2UgYSBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUg
dG8gcHJldmVudCBVSVByb2Nlc3MgaGFuZ3MgaW4gY2FzZSB3ZSByZWNlaXZlIGEgc3luY2hyb25v
dXMgSVBDIGZyb20gdGhlIFVJUHJvY2VzcyB3aGlsZSB3ZSdyZSB3YWl0aW5nIGZvciBhIHJlc3Bv
bnNlCi0gICAgICAgICAgICAvLyBmcm9tIG91ciBTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVz
KCkgSVBDLiBUaGlzIElQQyBtYXkgYmUgdmVyeSBzbG93IGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8g
ZmV0Y2ggdGhlIHZhbHVlcyBmcm9tIGRpc2sgYW5kIHRoZXJlIG1heSBiZSBhIGxvdCBvZiBkYXRh
LgotICAgICAgICAgICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRl
ZFN5bmNocm9ub3VzSVBDU2NvcGU7Ci0gICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiB2YWx1ZXM7Ci0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0VmFsdWVzKCptX21hcElEKSwgTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXM6OlJlcGx5KHZhbHVlcyksIDApOwotICAgICAgICAgICAg
bV9tYXAtPmltcG9ydEl0ZW1zKFdURk1vdmUodmFsdWVzKSk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVhTWFwOjplbnN1
cmVNYXAgZmFpbGVkIHRvIGxvYWQgZnJvbSBuZXR3b3JrIHByb2Nlc3MgYmVjYXVzZSBzdG9yYWdl
IG1hcCBJRCBpcyBpbnZhbGlkIik7Ci0gICAgfQogICAgIHJldHVybiAqbV9tYXA7CiB9CiAKQEAg
LTI1OSw4ICsyNTAsMTIgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAgICAgbV9tYXAtPnNldEl0ZW1J
Z25vcmluZ1F1b3RhKGtleSwgbmV3VmFsdWUpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpk
aXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElk
ZW50aWZpZXI+JiBzdG9yYWdlQXJlYUltcGxJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQordm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBs
SUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgdWludDY0X3QgbWVzc2FnZUlk
ZW50aWZpZXIpCiB7CisgICAgaWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxlZE1l
c3NhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVkTWVz
c2FnZUlkZW50aWZpZXIgPSBtZXNzYWdlSWRlbnRpZmllcjsKICAgICBpZiAoIXN0b3JhZ2VBcmVh
SW1wbElEKSB7CiAgICAgICAgIC8vIFRoaXMgc3RvcmFnZSBldmVudCBvcmlnaW5hdGVzIGZyb20g
YW5vdGhlciBwcm9jZXNzIHNvIHdlIG5lZWQgdG8gYXBwbHkgdGhlIGNoYW5nZSB0byBvdXIgc3Rv
cmFnZSBhcmVhIG1hcC4KICAgICAgICAgYXBwbHlDaGFuZ2Uoa2V5LCBuZXdWYWx1ZSk7CkBAIC0y
NzIsOCArMjY3LDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlCiAgICAgICAgIGRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnQoc3RvcmFnZUFyZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1Zh
bHVlLCB1cmxTdHJpbmcpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKCkK
K3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlkZW50aWZp
ZXIpCiB7CisgICAgaWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJ
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlk
ZW50aWZpZXIgPSBtZXNzYWdlSWRlbnRpZmllcjsKICAgICByZXNldFZhbHVlcygpOwogfQogCkBA
IC0zNDQsNDIgKzM0Myw3OSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbQogICAgIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZUdy
b3VwLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJp
dHlPcmlnaW4tPmRhdGEoKSk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OnNlbmRDb25uZWN0
TWVzc2FnZShTZW5kTW9kZSBtb2RlKQoreworICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCk7CisgICAgYXV0byBuYW1lc3BhY2VJZGVudGlmaWVyID0gbV9uYW1lc3BhY2Uuc3Rv
cmFnZU5hbWVzcGFjZUlEKCk7CisgICAgYXV0byBvcmlnaW5EYXRhID0gbV9zZWN1cml0eU9yaWdp
bi0+ZGF0YSgpOworICAgIGF1dG8gdG9wT3JpZ2luRGF0YSA9IG1fbmFtZXNwYWNlLnRvcExldmVs
T3JpZ2luKCkgPyBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpLT5kYXRhKCkgOiBvcmlnaW5E
YXRhOworICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgdG9wT3JpZ2lu
RGF0YSwgb3JpZ2luRGF0YSB9OworICAgIGF1dG8gdHlwZSA9IG1fdHlwZTsKKyAgICBpZiAoKHR5
cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsIHx8IHR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVu
dExvY2FsKSAmJiBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpKQorICAgICAgICB0eXBlID0g
U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOworCisgICAgaWYgKG1vZGUgPT0gU2VuZE1vZGU6
OlN5bmMpIHsKKyAgICAgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIHJlbW90ZUFyZWFJZGVudGlm
aWVyOworICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtczsKKyAgICAgICAgdWlu
dDY0X3QgbWVzc2FnZUlkZW50aWZpZXI7CisgICAgICAgIGlwY0Nvbm5lY3Rpb24uc2VuZFN5bmMo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU3RvcmFnZUFyZWFTeW5j
KHR5cGUsIG1faWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jOjpSZXBs
eShyZW1vdGVBcmVhSWRlbnRpZmllciwgaXRlbXMsIG1lc3NhZ2VJZGVudGlmaWVyKSwgMCk7Cisg
ICAgICAgIGRpZENvbm5lY3QocmVtb3RlQXJlYUlkZW50aWZpZXIsIFdURk1vdmUoaXRlbXMpLCBt
ZXNzYWdlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdl
YWtDb25uZWN0aW9uID0gV2Vha1B0ciB7IGlwY0Nvbm5lY3Rpb24gfV0oYXV0byByZW1vdGVBcmVh
SWRlbnRpZmllciwgYXV0byBpdGVtcywgYXV0byBtZXNzYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7
CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBkaWRDb25uZWN0KHJl
bW90ZUFyZWFJZGVudGlmaWVyLCBXVEZNb3ZlKGl0ZW1zKSwgbWVzc2FnZUlkZW50aWZpZXIpOwor
CisgICAgICAgIGlmICh3ZWFrQ29ubmVjdGlvbiAmJiByZW1vdGVBcmVhSWRlbnRpZmllci5pc1Zh
bGlkKCkpCisgICAgICAgICAgICB3ZWFrQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKHJlbW90ZUFyZWFJZGVu
dGlmaWVyKSwgMCk7CisgICAgfTsKKworICAgIGlwY0Nvbm5lY3Rpb24uc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVh
KHR5cGUsIG1faWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0
U3luYygpCit7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNlbmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZTo6U3luYyk7Cit9CisKIHZvaWQg
U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QoKQogewotICAgIGlmIChtX21hcElEKQorICAgIGlmICht
X3JlbW90ZUFyZWFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgbWFwSUQ7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFN0b3Jh
Z2VUeXBlOjpMb2NhbDoKLSAgICBjYXNlIFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDoKLSAg
ICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiA9IG1fbmFtZXNwYWNlLnRv
cExldmVsT3JpZ2luKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYShtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgdG9wTGV2ZWxPcmlnaW4tPmRh
dGEoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYTo6UmVwbHkobWFwSUQp
LCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEo
bV9uYW1lc3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEo
KSksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb0xvY2FsU3RvcmFn
ZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RvcmFn
ZVR5cGU6OlNlc3Npb246Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEobV9uYW1l
c3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJl
YTo6UmVwbHkobWFwSUQpLCAwKTsKLSAgICB9CisgICAgc2VuZENvbm5lY3RNZXNzYWdlKFNlbmRN
b2RlOjpBc3luYyk7Cit9CiAKLSAgICBpZiAobWFwSUQuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1f
bWFwSUQgPSBtYXBJRDsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcCgqdGhpcyk7Ci0gICAgfQordm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlkQ29u
bmVjdChTdG9yYWdlQXJlYUlkZW50aWZpZXIgcmVtb3RlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiYgaXRlbXMsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQorewor
ICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVy
ID0gbWVzc2FnZUlkZW50aWZpZXI7CisgICAgaWYgKCFyZW1vdGVBcmVhSWRlbnRpZmllci5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVtb3RlQXJlYUlkZW50aWZpZXIgPSBy
ZW1vdGVBcmVhSWRlbnRpZmllcjsKKyAgICBtX21hcCA9IG1ha2VVbmlxdWU8U3RvcmFnZU1hcD4o
bV9xdW90YUluQnl0ZXMpOworICAgIG1fbWFwLT5pbXBvcnRJdGVtcyhXVEZNb3ZlKGl0ZW1zKSk7
CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc2Nvbm5lY3QoKQogewotICAgIGlmICghbV9t
YXBJRCkKKyAgICBpZiAoIW1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHJlc2V0VmFsdWVzKCk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudW5yZWdp
c3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIAogICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpKQotICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RG
cm9tU3RvcmFnZUFyZWEoKm1fbWFwSUQpLCAwKTsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyKSwgMCk7
CiAKLSAgICBtX21hcElEID0geyB9OworICAgIG1fcmVtb3RlQXJlYUlkZW50aWZpZXIgPSB7IH07
CisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0gMDsKIH0KIAogdm9pZCBTdG9y
YWdlQXJlYU1hcDo6aW5jcmVtZW50VXNlQ291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKaW5kZXggMDZlNjM1NmNiMTMz
OTI2NmJhMzQ1NDU5NjI1MzgwNDY3YjU4MGIxNy4uYzYyNzFkOWY3OWVjYmFjM2U0ZjhmOGI4N2Y4
N2NjMDRlZDNiZjgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTY2LDggKzY3LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3Vy
aXR5T3JpZ2luLmdldCgpOyB9Ci0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUlk
ZW50aWZpZXI+JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJRDsgfQorICAgIFN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAKKyAgICB2b2lkIGNvbm5lY3QoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsK
IAogICAgIHZvaWQgaW5jcmVtZW50VXNlQ291bnQoKTsKQEAgLTc4LDggKzgwLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlbW92ZUl0ZW0odWludDY0X3QgbWFwU2VlZCwgY29uc3QgU3RyaW5n
JiBrZXkpOwogICAgIHZvaWQgZGlkQ2xlYXIodWludDY0X3QgbWFwU2VlZCk7CiAKLSAgICB2b2lk
IGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBs
SWRlbnRpZmllcj4mIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZyk7Ci0gICAgdm9pZCBjbGVhckNhY2hlKCk7CisgICAgdm9pZCBkaXNwYXRjaFN0
b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+
JiBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFyQ2FjaGUodWludDY0
X3QgbWVzc2FnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZXNldFZhbHVlcygpOwogICAgIFdl
YkNvcmU6OlN0b3JhZ2VNYXAmIGVuc3VyZU1hcCgpOwpAQCAtOTAsMTIgKzkyLDE3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZyk7CiAgICAgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpOwogCi0gICAgdm9pZCBjb25uZWN0KCk7CisgICAgZW51bSBjbGFz
cyBTZW5kTW9kZSA6IGJvb2wgeyBBc3luYywgU3luYyB9OworICAgIHZvaWQgc2VuZENvbm5lY3RN
ZXNzYWdlKFNlbmRNb2RlKTsKKyAgICB2b2lkIGNvbm5lY3RTeW5jKCk7CisgICAgdm9pZCBkaWRD
b25uZWN0KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiwg
dWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpOwogCisgICAgU3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50
aWZpZXIgeyAwIH07CiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwmIG1fbmFtZXNwYWNlOwogICAg
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3RvcmFnZU1hcD4gbV9tYXA7Ci0gICAgc3RkOjpvcHRpb25h
bDxTdG9yYWdlQXJlYUlkZW50aWZpZXI+IG1fbWFwSUQ7CisgICAgc3RkOjpvcHRpb25hbDxTdG9y
YWdlQXJlYUlkZW50aWZpZXI+IG1fcmVtb3RlQXJlYUlkZW50aWZpZXI7CiAgICAgSGFzaENvdW50
ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdWYWx1ZUNoYW5nZXM7CiAgICAgdWludDY0X3QgbV9jdXJy
ZW50U2VlZCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAubWVzc2FnZXMuaW4KaW5kZXggMmQxYTgxM2ZjYjg3NTdiMTg0Mjc2MjkzODA2OTdmYzdiZTli
YTliNS4uNmRlZThlOGUzNWFiNWI2ODg2NmYyMjAwYTcwNmE4MjkzN2ZkYmNhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDYgQEAgbWVzc2FnZXMgLT4gU3RvcmFn
ZUFyZWFNYXAgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgU3RyaW5nIGtleSkKICAgICBEaWRDbGVhcih1aW50NjRfdCBzdG9yYWdlTWFw
U2VlZCkKIAotICAgIERpc3BhdGNoU3RvcmFnZUV2ZW50KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUltcGxJRCwgU3RyaW5nIGtleSwg
U3RyaW5nIG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpCi0gICAg
Q2xlYXJDYWNoZSgpCisgICAgRGlzcGF0Y2hTdG9yYWdlRXZlbnQoc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1wbElELCBTdHJpbmcg
a2V5LCBTdHJpbmcgb2xkVmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5nIHVybFN0cmluZywg
dWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCisgICAgQ2xlYXJDYWNoZSh1aW50NjRfdCBtZXNz
YWdlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjkyMjEwODk2OGYzNTk4ZmQyMDFhYWFjYWYwZWMwMzc1YzQ2ZWY5OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRl
bnRpZmllci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
</data>
<flag name="commit-queue"
          id="475202"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449194</attachid>
            <date>2022-01-14 11:46:03 -0800</date>
            <delta_ts>2022-01-16 18:49:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220114114602.patch</filename>
            <type>text/plain</type>
            <size>61644</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWNmYmI0YzJhYWIxNWM1
MDNjM2YyYWZkYmVlY2JlNjBiZjVmZGRhYy4uYmU1YThiYjgxNzUwZTVkNmJhN2ZmMWNhYzJkNDcy
NjJjYmI5YzcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTEzICBB
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ2xlYW51cF0gTGluZTo6
c2VsZWN0aW9uU3RhdGUgbG9naWMgaXMgc2xpZ2h0bHkgY29uZnVzaW5nIGFuZCByZWR1bmRhbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTg3N2VmYjQ3ZjI0NTJkNWE1MTQ2ZjM4ODkzMTRkOWZmNzAwYzViMC4uNjQ1
Njc5YzgwZTY0NzdiYmVlNjFhNTEwN2UzZDg2MmEwMzEyMDcxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw5MSBAQAorMjAyMi0wMS0xNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIExvY2FsU3RvcmFnZSBwcmV3YXJtaW5nIGFzeW5jCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yYWdlQXJlYU1hcCBpbiB3ZWIg
cHJvY2VzcyBuZWVkcyB0byBzeW5jIHdpdGggYSByZW1vdGUgU3RvcmFnZUFyZWEgaW4gbmV0d29y
ayBwcm9jZXNzIGJlZm9yZSBpdCBwZXJmb3JtcyBhbnkKKyAgICAgICAgV2ViIFN0b3JhZ2Ugb3Bl
cmF0aW9uLiBUbyBjb25uZWN0IHRvIHJlbW90ZSBTdG9yYWdlQXJlYSwgU3RvcmFnZUFyZWFNYXAg
Y3VycmVudGx5IHNlbmRzIG91dCB0d28gc3luYyBtZXNzYWdlczoKKyAgICAgICAgMS4gQ29ubmVj
dFRvKlN0b3JhZ2VBcmVhOiBmb3IgZ2V0dGluZyB0aGUgcmVtb3RlIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllcgorICAgICAgICAyLiBnZXRWYWx1ZXM6IGZvciBnZXR0aW5nIHRoZSBjb250ZW50IG9mIFN0
b3JhZ2VBcmVhCisgICAgICAgIFdlIGNhbiBtZXJnZSB0aGVzZSB0d28gbWVzc2FnZXMgaW50byBv
bmUgbWVzc2FnZTogQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jLCBhbmQgcmV0dXJuIGJvdGggcmVt
b3RlIAorICAgICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgYW5kIGNvbnRlbnQgaW4gaXRzIHJl
cGx5LiBUaGlzIHdheSwgd2ViIHByb2Nlc3Mgd2lsbCBub3QgYmUgYmxvY2tlZCB0d2ljZS4KKwor
ICAgICAgICBUbyByZWR1Y2UgdGhlIHdhaXQgdGltZSBmb3IgY29ubmVjdGluZyB0byBhIGxvY2Fs
IFN0b3JhZ2VBcmVhLCB3ZSB3b3VsZCBwcmV3YXJtIExvY2FsU3RvcmFnZSBieSBjcmVhdGluZyBp
dHMgCisgICAgICAgIFN0b3JhZ2VBcmVhTWFwIGFoZWFkIGFuZCBtYWtpbmcgaXQgY29ubmVjdGVk
IChyMjQ3NTU1KSwgYnV0IHdlIGRvbid0IGFjdHVhbGx5IG5lZWQgU3RvcmFnZUFyZWFNYXAgdG8g
YmUgcmVhZHkgCisgICAgICAgIGZvciBvcGVyYXRpb24gYXQgdGhpcyB0aW1lLiBUaGVyZWZvcmUs
IGEgbmV3IGFzeW5jIG1lc3NhZ2UgQ29ubmVjdFRvU3RvcmFnZUFyZWEgaXMgYWRkZWQgdG8gYmUg
dXNlZCBmb3IgCisgICAgICAgIHByZXdhcm1pbmcuCisKKyAgICAgICAgSWYgTG9jYWxTdG9yYWdl
IGlzIHVzZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgcHJld2FybWluZywgYSBTdG9yYWdlQXJlYU1hcCBt
YXkgc2VuZCBDb25uZWN0VG9TdG9yYWdlQXJlYVN5bmMgYmVmb3JlIAorICAgICAgICByZWNlaXZp
bmcgdGhlIHJlcGx5IG9mIENvbm5lY3RUb1N0b3JhZ2VBcmVhLiBJbiB0aGlzIGNhc2UsIFN0b3Jh
Z2VBcmVhTWFwIHdvdWxkIGhhbmRsZSBDb25uZWN0VG9TdG9yYWdlQXJlYVN5bmMgCisgICAgICAg
IHJlcGx5IGJlZm9yZSBDb25uZWN0VG9TdG9yYWdlQXJlYSByZXBseSAoZHVlIHRvIHRoZSBwcmlv
cml0eSBvZiBzeW5jIG1lc3NhZ2UpLCBhbmQgYWxzbyBiZWZvcmUgb3RoZXIgYXN5bmMgCisgICAg
ICAgIG1lc3NhZ2VzIChEaXNwYXRjaFN0b3JhZ2VFdmVudCAvIENsZWFyQ2FjaGUpIHRoYXQgYXJl
IHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MgZWFybGllciBiZWZvcmUgdGhlIHN5bmMgcmVwbHku
CisgICAgICAgIFRvIHNvbHZlIHRoaXMsIHdlIHVzZSBhIG1lc3NhZ2UgaWRlbnRpZmllciB0byBp
bmRpY2F0ZSB0aGUgb3JkZXIgb2YgbWVzc2FnZXMgc2VudCBmcm9tIG5ldHdvcmsgcHJvY2Vzcywg
c28KKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgY2FuIGlnbm9yZSBwcmV2aW91cyBtZXNzYWdlcyB3
aGVuIGl0IGlzIGFscmVhZHkgc3luY2VkIHdpdGggYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIFN0
b3JhZ2VBcmVhLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpjbGVhcik6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50cyBjb25zdCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVu
dExvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9j
YWxTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9U
cmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFZhbHVlcyk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nl
c3Npb25TdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25TdG9yYWdl
TWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYUJhc2U6OlN0b3JhZ2VBcmVhQmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VBcmVhQmFzZTo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YUJhc2U6Om5vdGlmeUxpc3RlbmVyc0Fib3V0Q2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlQXJlYUJhc2U6OmRpc3BhdGNoRXZlbnRzIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5OgorICAgICAgICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVnaXN0
ZXJTdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVucmVnaXN0
ZXJTdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0b3JhZ2VB
cmVhTWFwIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpwcmV3YXJtKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6ZGVjcmVtZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXApOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYU1hcDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpj
bGVhcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjplbnN1cmVNYXApOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSk6CisgICAgICAgIChXZWJL
aXQ6OlN0b3JhZ2VBcmVhTWFwOjpzZW5kQ29ubmVjdE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdFN5bmMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYU1hcDo6Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaWRD
b25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc2Nvbm5lY3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmg6
IEFkZGVkLgorCiAyMDIyLTAxLTEzICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4K
IAogICAgICAgICBbWENCdWlsZF0gQWRkICJwcm9kdWN0IGRlcGVuZGVuY2llcyIgd2hpY2ggaW5m
bHVlbmNlIHdvcmtzcGFjZSBidWlsZCBvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IDYxZWI4YTQxYzE4OTJmMjAwYzU4NTgzYTY5N2VkMjU4OGY2OWNmNjkuLjM1NTNhOWY2NzBh
ZGM1MjZhM2ViNDkyOTA2MWM1Y2NhZDgxNTM1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTQxMyw5ICs0MTMsNiBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFn
ZUlmTmVjZXNzYXJ5KCkKICAgICBpZiAoIXBhZ2UgfHwgcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFwYWdlLT5tYWluRnJhbWUoKS5tYXlQ
cmV3YXJtTG9jYWxTdG9yYWdlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIFRoaXMgZWFn
ZXJseSBjb25zdHJ1Y3RzIHRoZSBTdG9yYWdlQXJlYSwgd2hpY2ggd2lsbCBsb2FkIGl0ZW1zIGZy
b20gZGlzay4KICAgICBhdXRvIGxvY2FsU3RvcmFnZVJlc3VsdCA9IHRoaXMtPmxvY2FsU3RvcmFn
ZSgpOwogICAgIGlmIChsb2NhbFN0b3JhZ2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC00MjUs
NyArNDIyLDcgQEAgdm9pZCBET01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2Fy
eSgpCiAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2Ut
Pm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKKyAgICBsb2NhbFN0b3JhZ2Ut
PmFyZWEoKS5wcmV3YXJtKCk7CiB9CiAKIERPTVdpbmRvdzo6fkRPTVdpbmRvdygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCmluZGV4IDg2ZjlhN2JlM2ViYTBkYmYyYjI3NWM3NTFjYzg0M2RkYWE3NGE1YzEu
LmE0N2VhMGQ4NDQwMDU4MGNlYmUxMjFjODllYmMwZjg3NzI0N2ZjODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCkBAIC0xMDU3LDE5ICsxMDU3LDYgQEAgdm9pZCBGcmFtZTo6ZHJvcENoaWxkcmVuKCkK
ICAgICAgICAgdHJlZSgpLnJlbW92ZUNoaWxkKCpjaGlsZCk7CiB9CiAKLXZvaWQgRnJhbWU6OmRp
ZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKQotewotICAgIEFTU0VSVChpc01haW5GcmFtZSgpKTsKLSAg
ICBBU1NFUlQobV9sb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQgPCBtYXhsb2NhbFN0b3JhZ2VQ
cmV3YXJtaW5nQ291bnQpOwotICAgICsrbV9sb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQ7Ci19
Ci0KLWJvb2wgRnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSBjb25zdAotewotICAgIEFT
U0VSVChpc01haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VQcmV3YXJtaW5n
Q291bnQgPCBtYXhsb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQ7Ci19Ci0KIEZsb2F0U2l6ZSBG
cmFtZTo6c2NyZWVuU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX292ZXJyaWRlU2NyZWVuU2l6
ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNTM2NDRlYjE5NWUxN2NkMmZkN2ZjNDFi
MTQyYWQxYjc2ZTRiNmNjZC4uZTA0Yzk0NDFlMzEwODA3M2FkNTg5YmQ4ZThmYTAwYmRkMzM5NjIz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjkxLDkgKzI5MSw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgYm9vbCBhY3RpdmVE
T01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAotICAgIHZvaWQg
ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOwotICAgIGJvb2wgbWF5UHJld2FybUxvY2FsU3RvcmFn
ZSgpIGNvbnN0OwotCiAgICAgZW51bSBjbGFzcyBJbnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9u
c1JlYXNvbiB7IExheW91dCwgRXZlbnRIYW5kbGVyQ2hhbmdlIH07CiAgICAgdm9pZCBpbnZhbGlk
YXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVkKEludmFsaWRhdGVDb250ZW50RXZlbnRSZWdp
b25zUmVhc29uKTsKIApAQCAtMzYxLDcgKzM1OCw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9uYXZpZ2F0aW9uRGlzYWJsZUNvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fc2VsZk9ubHlS
ZWZDb3VudCB7IDAgfTsKICAgICBib29sIG1faGFzSGFkVXNlckludGVyYWN0aW9uIHsgZmFsc2Ug
fTsKLSAgICB1bnNpZ25lZCBtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCB7IDAgfTsKIAog
ICAgIEZsb2F0U2l6ZSBtX292ZXJyaWRlU2NyZWVuU2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYS5oCmluZGV4IDI1MWJkNDI5ZDYyMDYyOTk3ZjcyOGRjMGRjNjYyNWYxNGYxYjVj
NzguLjc3NDYxNDBmNzg0MDgxYjA3ODZhMTVkNjAxZmVmY2EyYzkxYzEwYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
ZWNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNl
SWZJZGxlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHByZXdhcm0oKSB7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAppbmRleCAy
MjA1ODdlYzg2YmE1YzUxNzFiNjczYjE3N2E0NjYxYTIyY2YzMTNkLi4wZWQ5YTFiZWEyZGQ3NDdh
ODJkMzUxZjc0MzI4ZmVhNmMxMmQyMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlw
ZS5oCkBAIC00NCwzICs0NCwxNiBAQCBpbmxpbmUgYm9vbCBpc1BlcnNpc3RlbnRMb2NhbFN0b3Jh
Z2UoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6U3RvcmFnZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAg
ICBXZWJDb3JlOjpTdG9yYWdlVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNl
c3Npb24sCisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpMb2NhbCwKKyAgICAgICAgV2Vi
Q29yZTo6U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsCisgICAgPjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKaW5kZXggYzg0ZWFkNDMwYWIxNWQ5NGZkOGVmMjUzM2Q2
ZTQ5Mjg3MmI2ZTEyYi4uMGM0MWFiOTJlMzFmNDlkNmE1YTk0OWE0MDM3MjhjMmFhOWQwNDBiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWEuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBTdG9yYWdlQXJlYTo6Y2xl
YXIoKQogICAgIH0KIAogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRM
aXN0ZW5lcnMpCi0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5lclVuaXF1ZUlE
LCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobGlzdGVuZXJVbmlxdWVJ
RCwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKDApLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiB9CiAKIExvY2FsU3RvcmFnZURhdGFiYXNlJiBTdG9yYWdlQXJlYTo6ZW5z
dXJlRGF0YWJhc2UoKSBjb25zdApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgU3RvcmFnZUFyZWE6
OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlv
biwgU3RvCiAgICAgQVNTRVJUKHN0b3JhZ2VBcmVhSW1wbElEKTsKICAgICBmb3IgKGF1dG8mIGxp
c3RlbmVyVW5pcXVlSUQgOiBtX2V2ZW50TGlzdGVuZXJzKSB7CiAgICAgICAgIGF1dG8gb3B0aW9u
YWxTdG9yYWdlQXJlYUltcGxJRCA9IGxpc3RlbmVyVW5pcXVlSUQgPT0gc291cmNlQ29ubmVjdGlv
biA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdG9yYWdlQXJlYUltcGxJRCkgOiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdl
czo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KG9wdGlvbmFsU3RvcmFnZUFy
ZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5lclVu
aXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KG9w
dGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJp
bmcsIDApLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
TWFuYWdlci5jcHAKaW5kZXggY2JkZGQyZTMwNDhkMjg3MGFlMDdhMGFhZGY0ZWQ5N2IzMTA0MzZj
OS4uM2NlMGVjODU3M2Q5OGM5ZDc0OGQ3MDRiMmRjOWRjOGM5MTlkNmY3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VNYW5hZ2VyLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlTWFuYWdl
cjo6Y29ubmVjdGlvbkNsb3NlZEZvclRyYW5zaWVudFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
CiAgICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYSA9IG51bGxwdHI7CiB9CiAKLVN0b3JhZ2VBcmVh
SWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIGlmICghbV9sb2NhbFN0
b3JhZ2VBcmVhKSB7CiAgICAgICAgIGlmICghbV9wYXRoLmlzRW1wdHkoKSkKQEAgLTE3NywxMSAr
MTc3LDExIEBAIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25u
ZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjCiAgICAgfQogCiAgICAgQVNTRVJUKG1f
cGF0aC5pc0VtcHR5KCkgfHwgbV9sb2NhbFN0b3JhZ2VBcmVhLT50eXBlKCkgPT0gU3RvcmFnZUFy
ZWFCYXNlOjpUeXBlOjpTUUxpdGUpOwotICAgIG1fbG9jYWxTdG9yYWdlQXJlYS0+YWRkTGlzdGVu
ZXIoY29ubmVjdGlvbik7CisgICAgbV9sb2NhbFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25u
ZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsKICAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VBcmVh
LT5pZGVudGlmaWVyKCk7CiB9CiAKLVN0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VN
YW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4pCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRv
VHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5l
Y3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBpZiAoIW1fdHJhbnNpZW50U3Rv
cmFnZUFyZWEpIHsKICAgICAgICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYSA9IG1ha2VVbmlxdWU8
TWVtb3J5U3RvcmFnZUFyZWE+KG9yaWdpbiwgU3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlVHlwZTo6
TG9jYWwpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0
b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQCiAgICAg
fQogCiAgICAgQVNTRVJUKG1fdHJhbnNpZW50U3RvcmFnZUFyZWEtPnR5cGUoKSA9PSBTdG9yYWdl
QXJlYUJhc2U6OlR5cGU6Ok1lbW9yeSk7Ci0gICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+YWRk
TGlzdGVuZXIoY29ubmVjdGlvbik7CisgICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+YWRkTGlz
dGVuZXIoY29ubmVjdGlvbiwgc291cmNlSWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1fdHJhbnNp
ZW50U3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmgKaW5k
ZXggYTg4ODQyZTI5NWYyZDkwYThmMGU4YmJhOGVkN2IzZWEyN2Q1OGE4Yi4uY2RjYjY4MTJmOGZl
ZDY5YmNkYTQ5ZjY5NDJkNjdjZGEyZDEwZjE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
Niw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoKTsKICAgICB2
b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAKLSAgICBT
dG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBSZWY8V29ya1F1
ZXVlPiYmKTsKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvVHJhbnNpZW50TG9j
YWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mKTsKKyAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvTG9jYWxT
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOwor
ICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VB
cmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
cik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDkzMDA5ZTI0
OWVkMWE0Yzg5N2NhOTE5MGMzZjI0ZDVhM2M0NTQ4NWEuLmQ5NzRlNmRiMzU1Mzg3MTQyNWJhZTYy
YzA3MjI1NzIxMzJjNmQ0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02MjUs
MjQgKzYyNSwzMyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3luY0xvY2FsU3RvcmFn
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldAogICAgIH0pOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBuYW1lc3Bh
Y2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0g
eyB0b3BPcmlnaW4sIHRvcE9yaWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3Jp
Z2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VB
cmVhUmVnaXN0cnkpLmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbi51bmlxdWVJ
RCgpLCBvcmlnaW4sIG1fcXVldWUuY29weVJlZigpKSk7Ci19CisgICAgYXV0byBjb25uZWN0aW9u
SWRlbnRpZmllciA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKKyAgICBhdXRvJiBvcmlnaW5TdG9y
YWdlTWFuYWdlciA9IGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKTsKKyAgICBTdG9y
YWdlQXJlYUlkZW50aWZpZXIgcmVzdWx0SWRlbnRpZmllcjsKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpMb2NhbDoKKyAgICAgICAgcmVzdWx0SWRl
bnRpZmllciA9IG9yaWdpblN0b3JhZ2VNYW5hZ2VyLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3Rv
cmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uSWRl
bnRpZmllciwgc291cmNlSWRlbnRpZmllciwgb3JpZ2luLCBtX3F1ZXVlLmNvcHlSZWYoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OlRyYW5zaWVudExv
Y2FsOgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9j
YWxTdG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9UcmFuc2ll
bnRMb2NhbFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVy
LCBvcmlnaW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VUeXBl
OjpTZXNzaW9uOgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFn
ZXIuc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShjb25uZWN0aW9uSWRlbnRpZmllciwgc291cmNlSWRlbnRpZmll
ciwgb3JpZ2luLCBuYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgb3BlbmluZ09yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlk
ZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgb3BlbmluZ09yaWdpbiB9OwotICAgIGNvbXBsZXRp
b25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5sb2NhbFN0b3JhZ2VN
YW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3Rv
cmFnZUFyZWEoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBvcmlnaW4pKTsKKyAgICBpZiAoYXV0byBz
dG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEocmVzdWx0
SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHRJZGVu
dGlmaWVyLCBzdG9yYWdlQXJlYS0+YWxsSXRlbXMoKSwgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVz
c2FnZUlkZW50aWZpZXIoKSk7CisKKyAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIocmVzdWx0
SWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4geyB9LCBTdG9yYWdlQXJlYUJhc2U6
Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmll
ciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBuYW1lc3BhY2VJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCB0b3BPcmlnaW4gfTsKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikuc2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdl
QXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgaWRlbnRpZmllcikpOworICAgIGNv
bm5lY3RUb1N0b3JhZ2VBcmVhKGNvbm5lY3Rpb24sIHR5cGUsIHNvdXJjZUlkZW50aWZpZXIsIG5h
bWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlzY29ubmVjdEZyb21TdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVu
dGlmaWVyKQpAQCAtNjY5LDE2ICs2NzgsNiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lYwogICAg
IH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFZhbHVlcyhTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGF1dG8gc3RvcmFnZUFyZWEgPSBtX3N0
b3JhZ2VBcmVhUmVnaXN0cnktPmdldFN0b3JhZ2VBcmVhKGlkZW50aWZpZXIpKQotICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZUFyZWEtPmFsbEl0ZW1zKCkpOwotICAgIAot
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotfQotCiB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJ
ZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nJiYga2V5LCBTdHJpbmcm
JiB2YWx1ZSwgU3RyaW5nJiYgdXJsU3RyaW5nKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IGQyMWQ2NTZkM2E2NzI3Yzk4ZDEy
YTQxMjM3NWVkMDUyYTUzYTllOTEuLmExZjMwNzY0NDY3NmU4ZDUzNTY1YmZlYzgzNzk2Nzk2YzM0
NmE4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRl
ICJTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DbGllbnRPcmlnaW4uaD4KQEAgLTQ0LDYgKzQ1LDcgQEAgY2xhc3MgU2hhcmVkRmlsZUhhbmRs
ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENsaWVudE9yaWdpbjsKK2VudW0gY2xh
c3MgU3RvcmFnZVR5cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEw
OCwxMiArMTEwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRIYW5kbGUoSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVT
eXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYm
KTsKICAgICAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzIGZvciBXZWJTdG9yYWdlLgotICAgIHZv
aWQgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7Ci0gICAgdm9pZCBjb25u
ZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyKT4mJik7Ci0gICAgdm9pZCBjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEo
SVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRl
bnRpZmllcik+JiYpOworICAgIHZvaWQgY29ubmVjdFRvU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0
aW9uJiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgU3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1N0b3JhZ2VBcmVh
U3luYyhJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZp
ZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwogICAgIHZvaWQgZGlz
Y29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5l
Y3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIpOwotICAgIHZvaWQgZ2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpPiYmKTsKICAg
ICB2b2lkIHNldEl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzZWVkLCBTdHJpbmcmJiBrZXksIFN0
cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgcmVtb3ZlSXRlbShJ
UEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdXJsU3RyaW5n
KTsKICAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYgdXJs
U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4
IGE1MTZhZGE5ODMyZmRlZjViNjgxNDk0NDIxNWY2ODhmZGE4MWM2MTUuLmZmYzg2ZjlkMDlmZDQ1
OTU1MzVmODc1MDUzOTQ1YTE4YTc3MzFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbgpAQCAtNDAsMTIgKzQwLDEwIEBACiAgICAgR2V0SGFuZGxlTmFtZXMo
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVj
dGVkPFZlY3RvcjxTdHJpbmc+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3Vs
dCkgQXN5bmMKICAgICBHZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgU3RyaW5nIG5hbWUpIC0+IChFeHBlY3RlZDxzdGQ6OnBhaXI8V2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1T
dG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCiAKLSAgICBDb25uZWN0
VG9Mb2NhbFN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3Rv
cmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3Vy
aXR5T3JpZ2luRGF0YSkgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIENvbm5lY3RUb1RyYW5zaWVudExv
Y2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdl
TmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxT
ZWN1cml0eU9yaWdpbkRhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2Vj
dXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRp
ZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVz
cGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2lu
RGF0YSkgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNo
cm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5lY3RUb1N0b3JhZ2VBcmVhKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+IChXZWJL
aXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIEFzeW5jIFdhbnRzQ29ubmVj
dGlvbgorICAgIENvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyhXZWJDb3JlOjpTdG9yYWdlVHlwZSB0
eXBlLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIHN0
cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMsIHVp
bnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KICAg
ICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVy
IGlkZW50aWZpZXIpIFdhbnRzQ29ubmVjdGlvbgogICAgIENsb25lU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBmcm9tU3RvcmFnZU5hbWVz
cGFjZUlELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHRvU3RvcmFnZU5hbWVz
cGFjZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXMoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVl
cykgU3luY2hyb25vdXMKICAgICBTZXRJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRp
ZmllciwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSwg
U3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9uCiAgICAgUmVtb3ZlSXRlbShXZWJLaXQ6
OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1w
bElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJp
bmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAgICBDbGVhcihXZWJL
aXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5j
cHAKaW5kZXggZDQwZTQwYjYxNzNjMjhkNDRjNTdiOGUyMGY3MmJjYjUxMTA0MWRiNS4uYjczNDJl
NDBlZjFmNmJiNWNkYjZmYmZiMmVmMTIzZjlkMDZlOGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIFNlc3Npb25T
dG9yYWdlTWFuYWdlcjo6YWRkU3RvcmFnZUFyZWEoc3RkOjp1bmlxdWVfcHRyPE1lbW8KICAgICBy
ZXR1cm4gaWRlbnRpZmllcjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIFNlc3Npb25TdG9y
YWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4s
IFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIpCitTdG9yYWdl
QXJlYUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3Rv
cmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZp
ZXIpCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbV9zdG9yYWdlQXJlYXNCeU5hbWVzcGFjZS5n
ZXQobmFtZXNwYWNlSWRlbnRpZmllcik7CiAgICAgaWYgKCFpZGVudGlmaWVyLmlzVmFsaWQoKSkg
ewpAQCAtODQsNyArODQsOCBAQCBTdG9yYWdlQXJlYUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VN
YW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDbwogICAgIGlmICghc3Rv
cmFnZUFyZWEpCiAgICAgICAgIHJldHVybiBTdG9yYWdlQXJlYUlkZW50aWZpZXIgeyB9OwogCi0g
ICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24pOworICAgIHN0b3JhZ2VBcmVh
LT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIHJldHVy
biBpZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggZmMxNzYxYmU5
MDBmOGU0ZGE3NzU0YjAxOGYxZGJlMmUzOGZiN2RmYS4uOGU2OTM3ZWUwNTQ4ZjQ1MWIwZjA5MTUw
ODY3NDkzYjI5NmYxODJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRhdGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25D
bG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50
aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyKTsKKyAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VB
cmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwg
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJh
MDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJhMTQ5OThmOGYzYzEuLjU3OTdlOWM1NDAyMWQyYThkODBm
MjgyMWUxZTUyMWEzMDhkMmIzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordWludDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0
TWVzc2FnZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4g
Y3VycmVuSWRlbnRpZmllcigwKTsKKyAgICByZXR1cm4gKytjdXJyZW5JZGVudGlmaWVyOworfQor
CiBTdG9yYWdlQXJlYUJhc2U6OlN0b3JhZ2VBcmVhQmFzZSh1bnNpZ25lZCBxdW90YSwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCi0gICAgOiBtX2lkZW50aWZpZXIoU3RvcmFn
ZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VB
cmVhSWRlbnRpZmllcjo6Z2VuZXJhdGVUaHJlYWRTYWZlKCkpCiAgICAgLCBtX3F1b3RhKHF1b3Rh
KQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogewpAQCAtMzksMTEgKzQ1LDExIEBAIFN0b3JhZ2VB
cmVhQmFzZTo6U3RvcmFnZUFyZWFCYXNlKHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yCiAKIFN0b3JhZ2VBcmVhQmFzZTo6flN0b3JhZ2VBcmVhQmFzZSgpID0g
ZGVmYXVsdDsKIAotdm9pZCBTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbikKK3ZvaWQgU3RvcmFnZUFyZWFCYXNlOjphZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghbV9saXN0ZW5lcnMuY29udGFp
bnMoY29ubmVjdGlvbikpOworICAgIEFTU0VSVCghbV9saXN0ZW5lcnMuY29udGFpbnMoY29ubmVj
dGlvbikgfHwgbV9saXN0ZW5lcnMuZ2V0KGNvbm5lY3Rpb24pID09IGlkZW50aWZpZXIpOwogCi0g
ICAgbV9saXN0ZW5lcnMuYWRkKGNvbm5lY3Rpb24pOworICAgIG1fbGlzdGVuZXJzLnNldChjb25u
ZWN0aW9uLCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6OnJlbW92ZUxp
c3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbikKQEAgLTU4LDE5ICs2
NCwxOSBAQCBib29sIFN0b3JhZ2VBcmVhQmFzZTo6aGFzTGlzdGVuZXJzKCkgY29uc3QKIAogdm9p
ZCBTdG9yYWdlQXJlYUJhc2U6Om5vdGlmeUxpc3RlbmVyc0Fib3V0Q2xlYXIoKQogewotICAgIGZv
ciAoYXV0byYgY29ubmVjdGlvbiA6IG1fbGlzdGVuZXJzKQotICAgICAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hl
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9u
LCBpZGVudGlmaWVyXSA6IG1fbGlzdGVuZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKFN0b3Jh
Z2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0
KCkpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyIHNvdXJjZUltcGxJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNvdXJjZUltcGxJZGVudGlmaWVyKTsKIAotICAgIGZv
ciAoYXV0byYgY29ubmVjdGlvbiA6IG1fbGlzdGVuZXJzKSB7CisgICAgZm9yIChhdXRvJiBbY29u
bmVjdGlvbiwgaWRlbnRpZmllcl0gOiBtX2xpc3RlbmVycykgewogICAgICAgICBzdGQ6Om9wdGlv
bmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IGltcGxJZGVudGlmaWVyOwogICAgICAgICBp
ZiAoY29ubmVjdGlvbiA9PSBzb3VyY2VDb25uZWN0aW9uKQogICAgICAgICAgICAgaW1wbElkZW50
aWZpZXIgPSBzb3VyY2VJbXBsSWRlbnRpZmllcjsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdl
RXZlbnQoaW1wbElkZW50aWZpZXIsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcp
LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZChjb25uZWN0aW9uLCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2
ZW50KGltcGxJZGVudGlmaWVyLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBT
dG9yYWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKSwgaWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaAppbmRleCBlZDNlZDE0MjA2ZTE3NWRjYWNj
OGMxZjk5NDkwNzUwNTQ1ZTM0ZTk4Li5lZmM4ZmI5NjQ4OTEwN2M4OGUzM2NkMTIzZjYwOWEzNmYy
MWFlZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL1N0b3JhZ2VBcmVhQmFzZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKQEAgLTQ3LDYgKzQ4LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWFCYXNlIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFN0b3JhZ2VBcmVhQmFzZT4gewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFN0b3JhZ2VBcmVhQmFzZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CisgICAgc3RhdGljIHVpbnQ2NF90IG5leHRNZXNzYWdlSWRlbnRpZmllcigpOwog
ICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVhQmFzZSgpOwogCiAgICAgZW51bSBjbGFzcyBUeXBlIDog
Ym9vbCB7IFNRTGl0ZSwgTWVtb3J5IH07CkBAIC01OSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQogICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbjsgfQogICAgIHVuc2lnbmVkIHF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9xdW90
YTsgfQotICAgIHZvaWQgYWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7Cisg
ICAgdm9pZCBhZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCk7CiAgICAgYm9vbCBoYXNMaXN0ZW5lcnMoKSBjb25zdDsKICAgICB2b2lkIG5v
dGlmeUxpc3RlbmVyc0Fib3V0Q2xlYXIoKTsKQEAgLTc3LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIHVuc2lnbmVkIG1fcXVv
dGE7CiAgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG1fb3JpZ2luOwotICAgIEhhc2hTZXQ8SVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRD4gbV9saXN0ZW5lcnM7CisgICAgSGFzaE1hcDxJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXI+IG1fbGlzdGVuZXJz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCA4YjUyMWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRm
OTgyLi45YmVhNGJiNjUxNzhmYmEwZjlmOWY4NTdmZjlhZDNmMWQzMzVhNjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMwNSw2ICszMDUsNyBAQCBkZWYg
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29y
ZTo6U2xlZXBEaXNhYmxlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U291cmNlQnVm
ZmVyQXBwZW5kTW9kZScsCiAgICAgICAgICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VUeXBlJywK
ICAgICAgICAgJ1dlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tl
dElkZW50aWZpZXInLApAQCAtMzQ3LDYgKzM0OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9i
ZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKKyAgICAg
ICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYktpdDo6VGV4dENoZWNrZXJSZXF1ZXN0SUQnLApAQCAtODQxLDYg
Kzg0Myw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duJzogWyc8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSc6IFsnPFdl
YkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCc6IFsnPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+
J10sCisgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZSc6IFsnPFdlYkNvcmUvU3RvcmFnZVR5
cGUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXInOiBb
JzxXZWJDb3JlL1BsdWdpbkRhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlN5c3RlbVByZXZp
ZXdJbmZvJzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSc6IFsnPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+
J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAxNTI2MzBhMzAzMjEwNzQ4Yjg4YTAxOWExM2M0MGEwZGFmMjAzZDE0Li41NGE0YjIxMDFh
MzU3YWUxNDk4ZThlODY3NDFlODc2MDUyMjVhMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NTcsNiArMTQ1Nyw3IEBACiAJCTkz
QUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQUI5QjQyMjU3NDkyOEMwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJOTNBQjlCNTUyNTc1QTI3NjAwOThCMTBFIC8q
IFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNB
QjlCNEYyNTc1ODkxMTAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNv
dXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk5M0FCOUI1NjI1NzVBMjhC
MDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0FCOUI1MTI1NzU4OTExMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CisJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUVD
MTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCAqLzsgfTsK
IAkJOTNCMEE2NzUyNkQ1QURDRjAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IwQTY3NDI2
RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTNC
MjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0OTIyN0QxNDcyMDBCOTdBNzYg
LyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUyMjdEMTRCMTAwQjk3QTc2IC8q
IExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0
YWJhc2UuaCAqLzsgfTsKQEAgLTUzMDUsNiArNTMwNiw3IEBACiAJCTkzQUI5QjUyMjU3NTg5MTIw
MDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlc1Jl
cGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTMyNTc1ODkxMjAw
OThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTQyNTc1ODkxMjAwOThCMTBFIC8qIFNwZWVj
aFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFT
b3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNB
RUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzMyNkQ1QTcyRTAwQUEyMUU0IC8q
IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBlcm1pc3Npb25D
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjI2MTQ1MjI3RDE0
NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzA2MSw2ICs3MDYzLDcgQEAKIAkJCQkxQUNFQ0QyMjE3MTYyREIxMDAxRkM5
RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwICovLAogCQkJCTFBQ0VDRDIzMTcxNjJEQjEwMDFGQzlF
RiAvKiBTdG9yYWdlQXJlYU1hcC5oICovLAogCQkJCTFBMzM0REVBMTZERThCNjgwMDZBOEUzOCAv
KiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLywKKwkJCQk5M0FFQzE2MDI3OEY4Q0QyMDA2
NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggKi8sCiAJCQkJNDY1RjRFMDUyMzBC
MkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmggKi8sCiAJCQkJMUEx
NzYzNTQxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCAqLywKIAkJ
CQkxQTE3NjM1NTE2QjFENUQwMDBEODhGRDYgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCAqLywK
QEAgLTEzMjYzLDYgKzEzMjY2LDcgQEAKIAkJCQk5M0U3OTlEQzI3NjEyMTA4MDA3NDAwOEEgLyog
U3RvcmFnZUFyZWFCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQzMzA2RjE2QjFEOTkxMDA0
RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNFQ0QyNTE3
MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
QUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlDNzI3NjAyNzQ2MDA3NDAwOEEg
LyogU3RvcmFnZUFyZWFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCMjYxNEQyMjdE
MTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAyMjcwYTUzYWY5YmE4YmY4MGQ3YzNiM2RjZGM4Y2ViNTY1
MTc2ZTMuLjhkM2I1N2JkMThkYzJlMDUzODRjY2YwOGQ3ZDljODkwN2NkMDRkZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlQXJlYU1hcCA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJZGVudGlmaWVyPFN0b3JhZ2VB
cmVhSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIGlm
IChhdXRvIHN0b3JhZ2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3RvcmFnZUFy
ZWFNYXAobWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyVHlwZT4o
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBmODE2Nzc1
YTc5OTRhYjIyY2MyZmJjMjYwMDBlOWQyMmYyZmMyYzZhLi4yNDU1OTgxYjAzNjE2OTJhNTI2NTQy
MGZlZWRjNGI0ZjJkNDBkYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xMTg5LDggKzExODksOCBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lYwogICAgIEFT
U0VSVChtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik7CiAgICAgQVNTRVJUX1VOVVNFRChjb25u
ZWN0aW9uLCBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9PSBjb25uZWN0aW9uKTsKIAotICAg
IGZvciAoYXV0byogc3RvcmFnZUFyZWFNYXAgOiBjb3B5VG9WZWN0b3IobV9zdG9yYWdlQXJlYU1h
cHMudmFsdWVzKCkpKQotICAgICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlzY29ubmVjdCgpOworICAg
IGZvciAoYXV0byBrZXkgOiBjb3B5VG9WZWN0b3IobV9zdG9yYWdlQXJlYU1hcHMua2V5cygpKSkK
KyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGtleSktPmRpc2Nvbm5lY3QoKTsKIAogICAg
IGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgewogICAgICAgICBhdXRvIGlk
YkNvbm5lY3Rpb24gPSBwYWdlLT5jb3JlUGFnZSgpLT5vcHRpb25hbElEQkNvbm5lY3Rpb24oKTsK
QEAgLTE2OTcsMjAgKzE2OTcsMjAgQEAgdm9pZCBXZWJQcm9jZXNzOjpub25WaXNpYmxlUHJvY2Vz
c01lbW9yeUNsZWFudXBUaW1lckZpcmVkKCkKIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclN0
b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1hcCkKIHsKLSAgICBBU1NF
UlQoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQoIW1fc3RvcmFnZUFy
ZWFNYXBzLmNvbnRhaW5zKCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKTsKLSAgICBtX3N0
b3JhZ2VBcmVhTWFwcy5zZXQoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSwgJnN0b3JhZ2VB
cmVhTWFwKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVy
KCk7CisgICAgQVNTRVJUKCFtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVudGlmaWVyKSk7
CisgICAgbV9zdG9yYWdlQXJlYU1hcHMuYWRkKGlkZW50aWZpZXIsIHN0b3JhZ2VBcmVhTWFwKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFy
ZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogewotICAgIEFTU0VSVChzdG9yYWdlQXJlYU1hcC5pZGVu
dGlmaWVyKCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucygqc3RvcmFn
ZUFyZWFNYXAuaWRlbnRpZmllcigpKSk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmdl
dCgqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSA9PSAmc3RvcmFnZUFyZWFNYXApOwotICAg
IG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKTsK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCk7CisgICAg
QVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBBU1NF
UlQobV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGlkZW50aWZpZXIpLmdldCgpID09ICZzdG9yYWdlQXJl
YU1hcCk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCi1T
dG9yYWdlQXJlYU1hcCogV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CitXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiBXZWJQcm9j
ZXNzOjpzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgaWRlbnRpZmllcikg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGlkZW50aWZpZXIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNDY5YTBhNWUxOTFkY2Y0
NzAxMzI3MTZiNjcyZWQxYzJlNjFmMzExNy4uZTg3ZDczM2Q3NmFkZWUwY2I4YmFkYjg3ZjVjYTc1
NWRhNjJkNzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJU
eXBlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNsdWRlICJTdG9yYWdl
QXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyLmgiCkBA
IC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlclN0b3JhZ2VBcmVh
TWFwKFN0b3JhZ2VBcmVhTWFwJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAo
U3RvcmFnZUFyZWFNYXAmKTsKLSAgICBTdG9yYWdlQXJlYU1hcCogc3RvcmFnZUFyZWFNYXAoU3Rv
cmFnZUFyZWFJZGVudGlmaWVyKSBjb25zdDsKKyAgICBXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiBz
dG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIpIGNvbnN0OwogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25B
dWRpdERhdGEoKSBjb25zdDsKQEAgLTc0Miw3ICs3NDIsNyBAQCBwcml2YXRlOgogICAgIEhhc2hD
b3VudGVkU2V0PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBt
X3N3UmVnaXN0cmF0aW9uQ291bnRzOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFN0b3JhZ2VBcmVh
SWRlbnRpZmllciwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsKKyAgICBIYXNo
TWFwPFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4+IG1f
c3RvcmFnZUFyZWFNYXBzOwogICAgIAogICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMgZG8g
bm90IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhpcyBp
cyBhbiBvcHRpb25hbC4KICAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRzIGEg
V2ViUGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5j
cHAKaW5kZXggYjEyYzU4YzBhYWQ2N2U5OTU3NzA2ZTI5ZTZkZTY1NjllZmU2NDg0Ni4uMWY5YjQy
Y2IxMjdkNmRjMDI4YTY4MDU5ZTI3MTAxZmM3OTY5NDQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCkBAIC0x
MTIsMjAgKzExMiwxMCBAQCBzaXplX3QgU3RvcmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1VzZWRC
eUNhY2hlKCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYUltcGw6OmluY3Jl
bWVudEFjY2Vzc0NvdW50KCkKK3ZvaWQgU3RvcmFnZUFyZWFJbXBsOjpwcmV3YXJtKCkKIHsKLSAg
ICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNv
IHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgotfQotCi12b2lkIFN0b3JhZ2VBcmVhSW1wbDo6
ZGVjcmVtZW50QWNjZXNzQ291bnQoKQotewotICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRs
ZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUu
Ci19Ci0KLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKCkKLXsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXAtPmNvbm5l
Y3QoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4IDc5ZTE0Yjkx
ZjhhYzZkODJmZTc5MmFjMDZkMzk0ZWQ3NjU4NDJhNjIuLmEzNWQ2Njc5MjUwNWYwYzAzZTU5MDg3
MDAxZTBjYTRmZGE3YTZjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw5ICs2MSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CiAgICAgV2Vi
Q29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBzaXpl
X3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5jcmVtZW50
QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwcmV3YXJtKCkgZmluYWw7CiAKICAgICBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICBXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmlu
ZGV4IDJjZjdhNmQ0YjYwMDVjMWQ3ZWMyNTZiZDYzODg3NjI5NGU5ZTRjZjIuLmRmNGMyNmYyYWZm
MzI5MWQ5MTlkZWQ1M2RkNzYyN2I1OGYyODkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTUxLDE3ICs1
MSwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBT
dG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwmIHN0b3Jh
Z2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdp
bikKLSAgICA6IG1fbmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCisgICAgOiBtX2lkZW50aWZp
ZXIoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgbV9uYW1lc3Bh
Y2Uoc3RvcmFnZU5hbWVzcGFjZSkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oV1RGTW92ZShzZWN1
cml0eU9yaWdpbikpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9yYWdlTmFtZXNwYWNlLnF1b3Rh
SW5CeXRlcygpKQogICAgICwgbV90eXBlKHN0b3JhZ2VOYW1lc3BhY2Uuc3RvcmFnZVR5cGUoKSkK
IHsKLSAgICBjb25uZWN0KCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFN
YXAoKQogewogICAgIGRpc2Nvbm5lY3QoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51
bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiB1bnNpZ25lZCBTdG9yYWdlQXJl
YU1hcDo6bGVuZ3RoKCkKQEAgLTk1LDggKzk3LDggQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6c2V0
SXRlbShGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY28K
IAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIGlmIChtX21hcElE
KQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpTZXRJdGVtKCptX21hcElELCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVu
dFNlZWQsIGtleSwgdmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KSksIDApOworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpTZXRJdGVtKCptX3Jl
bW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNl
ZWQsIGtleSwgdmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSks
IDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3Jh
Z2VBcmVhTWFwOjpzZXRJdGVtIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFs
aWQiKTsKIH0KQEAgLTExNCwyMyArMTE2LDIyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnJlbW92
ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvCiAK
ICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBpZiAobV9tYXBJRCkK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6UmVtb3ZlSXRlbSgqbV9tYXBJRCwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJl
bnRTZWVkLCBrZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDAp
OworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJdGVtKCptX3JlbW90
ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQs
IGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CiAgICAg
ZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU3RvcmFnZUFyZWFNYXA6
OnJlbW92ZUl0ZW0gZmFpbGVkIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwog
fQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhcihXZWJDb3JlOjpGcmFtZSogc291cmNlRnJh
bWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSkKIHsKLSAgICBjb25uZWN0KCk7Ci0KKyAg
ICBjb25uZWN0U3luYygpOwogICAgIHJlc2V0VmFsdWVzKCk7CiAKICAgICBtX2hhc1BlbmRpbmdD
bGVhciA9IHRydWU7CiAgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VNYXA+KG1fcXVvdGFJ
bkJ5dGVzKTsKIAotICAgIGlmIChtX21hcElEKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhcigqbV9tYXBJRCwgc291cmNlQXJl
YS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Q2xlYXIoKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwg
bV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwg
MCk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU3RvcmFn
ZUFyZWFNYXA6OmNsZWFyIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFsaWQi
KTsKIH0KQEAgLTE1MSwyMSArMTUyLDExIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnJlc2V0VmFs
dWVzKCkKIAogU3RvcmFnZU1hcCYgU3RvcmFnZUFyZWFNYXA6OmVuc3VyZU1hcCgpCiB7Ci0gICAg
Y29ubmVjdCgpOworICAgIGNvbm5lY3RTeW5jKCk7CiAKLSAgICBpZiAoIW1fbWFwKSB7CisgICAg
aWYgKCFtX21hcCkKICAgICAgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VNYXA+KG1fcXVv
dGFJbkJ5dGVzKTsKIAotICAgICAgICBpZiAobV9tYXBJRCkgewotICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byB1c2UgYSBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdG8gcHJldmVu
dCBVSVByb2Nlc3MgaGFuZ3MgaW4gY2FzZSB3ZSByZWNlaXZlIGEgc3luY2hyb25vdXMgSVBDIGZy
b20gdGhlIFVJUHJvY2VzcyB3aGlsZSB3ZSdyZSB3YWl0aW5nIGZvciBhIHJlc3BvbnNlCi0gICAg
ICAgICAgICAvLyBmcm9tIG91ciBTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVzKCkgSVBDLiBU
aGlzIElQQyBtYXkgYmUgdmVyeSBzbG93IGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8gZmV0Y2ggdGhl
IHZhbHVlcyBmcm9tIGRpc2sgYW5kIHRoZXJlIG1heSBiZSBhIGxvdCBvZiBkYXRhLgotICAgICAg
ICAgICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRlZFN5bmNocm9u
b3VzSVBDU2NvcGU7Ci0gICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB2YWx1ZXM7
Ci0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6R2V0VmFsdWVzKCptX21hcElEKSwgTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjpHZXRWYWx1ZXM6OlJlcGx5KHZhbHVlcyksIDApOwotICAgICAgICAgICAgbV9tYXAtPmlt
cG9ydEl0ZW1zKFdURk1vdmUodmFsdWVzKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVhTWFwOjplbnN1cmVNYXAgZmFp
bGVkIHRvIGxvYWQgZnJvbSBuZXR3b3JrIHByb2Nlc3MgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBp
cyBpbnZhbGlkIik7Ci0gICAgfQogICAgIHJldHVybiAqbV9tYXA7CiB9CiAKQEAgLTI1OSw4ICsy
NTAsMTIgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAgICAgbV9tYXAtPnNldEl0ZW1JZ25vcmluZ1F1
b3RhKGtleSwgbmV3VmFsdWUpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0
b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+
JiBzdG9yYWdlQXJlYUltcGxJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQor
dm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIp
CiB7CisgICAgaWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50
aWZpZXIgPSBtZXNzYWdlSWRlbnRpZmllcjsKICAgICBpZiAoIXN0b3JhZ2VBcmVhSW1wbElEKSB7
CiAgICAgICAgIC8vIFRoaXMgc3RvcmFnZSBldmVudCBvcmlnaW5hdGVzIGZyb20gYW5vdGhlciBw
cm9jZXNzIHNvIHdlIG5lZWQgdG8gYXBwbHkgdGhlIGNoYW5nZSB0byBvdXIgc3RvcmFnZSBhcmVh
IG1hcC4KICAgICAgICAgYXBwbHlDaGFuZ2Uoa2V5LCBuZXdWYWx1ZSk7CkBAIC0yNzIsOCArMjY3
LDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlCiAgICAgICAgIGRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnQoc3RvcmFnZUFyZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxT
dHJpbmcpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKCkKK3ZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCiB7Cisg
ICAgaWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIg
PSBtZXNzYWdlSWRlbnRpZmllcjsKICAgICByZXNldFZhbHVlcygpOwogfQogCkBAIC0zNDQsNDIg
KzM0Myw3OSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbQogICAgIFN0b3JhZ2VFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZUdyb3VwLCBmcmFt
ZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJpdHlPcmlnaW4t
PmRhdGEoKSk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OnNlbmRDb25uZWN0TWVzc2FnZShT
ZW5kTW9kZSBtb2RlKQoreworICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7
CisgICAgYXV0byBuYW1lc3BhY2VJZGVudGlmaWVyID0gbV9uYW1lc3BhY2Uuc3RvcmFnZU5hbWVz
cGFjZUlEKCk7CisgICAgYXV0byBvcmlnaW5EYXRhID0gbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgp
OworICAgIGF1dG8gdG9wT3JpZ2luRGF0YSA9IG1fbmFtZXNwYWNlLnRvcExldmVsT3JpZ2luKCkg
PyBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpLT5kYXRhKCkgOiBvcmlnaW5EYXRhOworICAg
IGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgdG9wT3JpZ2luRGF0YSwgb3Jp
Z2luRGF0YSB9OworICAgIGF1dG8gdHlwZSA9IG1fdHlwZTsKKyAgICBpZiAoKHR5cGUgPT0gU3Rv
cmFnZVR5cGU6OkxvY2FsIHx8IHR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsKSAm
JiBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpKQorICAgICAgICB0eXBlID0gU3RvcmFnZVR5
cGU6OlRyYW5zaWVudExvY2FsOworCisgICAgaWYgKG1vZGUgPT0gU2VuZE1vZGU6OlN5bmMpIHsK
KyAgICAgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIHJlbW90ZUFyZWFJZGVudGlmaWVyOworICAg
ICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtczsKKyAgICAgICAgdWludDY0X3QgbWVz
c2FnZUlkZW50aWZpZXI7CisgICAgICAgIGlwY0Nvbm5lY3Rpb24uc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKHR5cGUsIG1f
aWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luKSwgTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jOjpSZXBseShyZW1vdGVB
cmVhSWRlbnRpZmllciwgaXRlbXMsIG1lc3NhZ2VJZGVudGlmaWVyKSwgMCk7CisgICAgICAgIGRp
ZENvbm5lY3QocmVtb3RlQXJlYUlkZW50aWZpZXIsIFdURk1vdmUoaXRlbXMpLCBtZXNzYWdlSWRl
bnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdlYWtDb25uZWN0
aW9uID0gV2Vha1B0ciB7IGlwY0Nvbm5lY3Rpb24gfV0oYXV0byByZW1vdGVBcmVhSWRlbnRpZmll
ciwgYXV0byBpdGVtcywgYXV0byBtZXNzYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAg
IGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBkaWRDb25uZWN0KHJlbW90ZUFyZWFJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGl0ZW1zKSwgbWVzc2FnZUlkZW50aWZpZXIpOworCisgICAgICAg
IGlmICh3ZWFrQ29ubmVjdGlvbiAmJiByZW1vdGVBcmVhSWRlbnRpZmllci5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICB3ZWFrQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKHJlbW90ZUFyZWFJZGVudGlmaWVyKSwg
MCk7CisgICAgfTsKKworICAgIGlwY0Nvbm5lY3Rpb24uc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVhKHR5cGUsIG1f
aWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0U3luYygpCit7
CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IHNlbmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZTo6U3luYyk7Cit9CisKIHZvaWQgU3RvcmFnZUFy
ZWFNYXA6OmNvbm5lY3QoKQogewotICAgIGlmIChtX21hcElEKQorICAgIGlmIChtX3JlbW90ZUFy
ZWFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgbWFwSUQ7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFN0b3JhZ2VUeXBlOjpM
b2NhbDoKLSAgICBjYXNlIFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDoKLSAgICAgICAgaWYg
KFNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiA9IG1fbmFtZXNwYWNlLnRvcExldmVsT3Jp
Z2luKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShtX25h
bWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgdG9wTGV2ZWxPcmlnaW4tPmRhdGEoKSwgbV9z
ZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYTo6UmVwbHkobWFwSUQpLCAwKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEobV9uYW1lc3Bh
Y2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWE6OlJl
cGx5KG1hcElEKSwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RvcmFnZVR5cGU6OlNl
c3Npb246Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEobV9uYW1lc3BhY2Uuc3Rv
cmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYTo6UmVwbHko
bWFwSUQpLCAwKTsKLSAgICB9CisgICAgc2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlOjpBc3lu
Yyk7Cit9CiAKLSAgICBpZiAobWFwSUQuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1fbWFwSUQgPSBt
YXBJRDsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJTdG9yYWdlQXJl
YU1hcCgqdGhpcyk7Ci0gICAgfQordm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdChTdG9y
YWdlQXJlYUlkZW50aWZpZXIgcmVtb3RlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiYgaXRlbXMsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQoreworICAgIGlmICht
ZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0gbWVzc2Fn
ZUlkZW50aWZpZXI7CisgICAgaWYgKCFyZW1vdGVBcmVhSWRlbnRpZmllci5pc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcmVtb3RlQXJlYUlkZW50aWZpZXIgPSByZW1vdGVBcmVh
SWRlbnRpZmllcjsKKyAgICBtX21hcCA9IG1ha2VVbmlxdWU8U3RvcmFnZU1hcD4obV9xdW90YUlu
Qnl0ZXMpOworICAgIG1fbWFwLT5pbXBvcnRJdGVtcyhXVEZNb3ZlKGl0ZW1zKSk7CiB9CiAKIHZv
aWQgU3RvcmFnZUFyZWFNYXA6OmRpc2Nvbm5lY3QoKQogewotICAgIGlmICghbV9tYXBJRCkKKyAg
ICBpZiAoIW1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIHJl
c2V0VmFsdWVzKCk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudW5yZWdpc3RlclN0b3Jh
Z2VBcmVhTWFwKCp0aGlzKTsKIAogICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpKQotICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RGcm9tU3RvcmFn
ZUFyZWEoKm1fbWFwSUQpLCAwKTsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaXNjb25u
ZWN0RnJvbVN0b3JhZ2VBcmVhKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyKSwgMCk7CiAKLSAgICBt
X21hcElEID0geyB9OworICAgIG1fcmVtb3RlQXJlYUlkZW50aWZpZXIgPSB7IH07CisgICAgbV9s
YXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0gMDsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1h
cDo6aW5jcmVtZW50VXNlQ291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKaW5kZXggMDZlNjM1NmNiMTMzOTI2NmJhMzQ1
NDU5NjI1MzgwNDY3YjU4MGIxNy4uYzYyNzFkOWY3OWVjYmFjM2U0ZjhmOGI4N2Y4N2NjMDRlZDNi
ZjgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1N0b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTY2LDgg
KzY3LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2lu
LmdldCgpOyB9Ci0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUlkZW50aWZpZXI+
JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJRDsgfQorICAgIFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CiAKKyAgICB2b2lkIGNvbm5lY3QoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAogICAgIHZv
aWQgaW5jcmVtZW50VXNlQ291bnQoKTsKQEAgLTc4LDggKzgwLDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFJlbW92ZUl0ZW0odWludDY0X3QgbWFwU2VlZCwgY29uc3QgU3RyaW5nJiBrZXkpOwog
ICAgIHZvaWQgZGlkQ2xlYXIodWludDY0X3QgbWFwU2VlZCk7CiAKLSAgICB2b2lkIGRpc3BhdGNo
U3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmll
cj4mIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
Zyk7Ci0gICAgdm9pZCBjbGVhckNhY2hlKCk7CisgICAgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVu
dChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiBzb3VyY2VT
dG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIHVpbnQ2NF90
IG1lc3NhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFyQ2FjaGUodWludDY0X3QgbWVzc2Fn
ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZXNldFZhbHVlcygpOwogICAgIFdlYkNvcmU6OlN0
b3JhZ2VNYXAmIGVuc3VyZU1hcCgpOwpAQCAtOTAsMTIgKzkyLDE3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9y
YWdlQXJlYUltcGxJZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
Zyk7CiAgICAgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpOwogCi0gICAgdm9pZCBjb25uZWN0KCk7CisgICAgZW51bSBjbGFzcyBTZW5kTW9k
ZSA6IGJvb2wgeyBBc3luYywgU3luYyB9OworICAgIHZvaWQgc2VuZENvbm5lY3RNZXNzYWdlKFNl
bmRNb2RlKTsKKyAgICB2b2lkIGNvbm5lY3RTeW5jKCk7CisgICAgdm9pZCBkaWRDb25uZWN0KFN0
b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiwgdWludDY0X3Qg
bWVzc2FnZUlkZW50aWZpZXIpOwogCisgICAgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKKyAgICB1aW50NjRfdCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIgeyAw
IH07CiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwmIG1fbmFtZXNwYWNlOwogICAgIFJlZjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U3RvcmFnZU1hcD4gbV9tYXA7Ci0gICAgc3RkOjpvcHRpb25hbDxTdG9yYWdl
QXJlYUlkZW50aWZpZXI+IG1fbWFwSUQ7CisgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUlk
ZW50aWZpZXI+IG1fcmVtb3RlQXJlYUlkZW50aWZpZXI7CiAgICAgSGFzaENvdW50ZWRTZXQ8U3Ry
aW5nPiBtX3BlbmRpbmdWYWx1ZUNoYW5nZXM7CiAgICAgdWludDY0X3QgbV9jdXJyZW50U2VlZCB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2Fn
ZXMuaW4KaW5kZXggMmQxYTgxM2ZjYjg3NTdiMTg0Mjc2MjkzODA2OTdmYzdiZTliYTliNS4uNmRl
ZThlOGUzNWFiNWI2ODg2NmYyMjAwYTcwNmE4MjkzN2ZkYmNhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAu
bWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDYgQEAgbWVzc2FnZXMgLT4gU3RvcmFnZUFyZWFNYXAg
Tm90UmVmQ291bnRlZCB7CiAgICAgRGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9yYWdlTWFwU2Vl
ZCwgU3RyaW5nIGtleSkKICAgICBEaWRDbGVhcih1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCkKIAot
ICAgIERpc3BhdGNoU3RvcmFnZUV2ZW50KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJl
YUltcGxJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUltcGxJRCwgU3RyaW5nIGtleSwgU3RyaW5nIG9s
ZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpCi0gICAgQ2xlYXJDYWNo
ZSgpCisgICAgRGlzcGF0Y2hTdG9yYWdlRXZlbnQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1wbElELCBTdHJpbmcga2V5LCBTdHJp
bmcgb2xkVmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5nIHVybFN0cmluZywgdWludDY0X3Qg
bWVzc2FnZUlkZW50aWZpZXIpCisgICAgQ2xlYXJDYWNoZSh1aW50NjRfdCBtZXNzYWdlSWRlbnRp
ZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkyMjEwODk2
OGYzNTk4ZmQyMDFhYWFjYWYwZWMwMzc1YzQ2ZWY5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5o
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU3RvcmFnZUFyZWFNYXBJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTdG9yYWdlQXJlYU1hcElkZW50aWZpZXJUeXBlPjsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449300</attachid>
            <date>2022-01-16 18:49:57 -0800</date>
            <delta_ts>2022-01-17 12:05:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220116184956.patch</filename>
            <type>text/plain</type>
            <size>61855</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1ZDExZTk3NzNjNzRm
NDQ3ZjAxMWFkZDBmMDA0NzBkNzc3MWExNS4uZjlkOWM1YWVlZGZlMjU5NmZjZDY0Y2FiYzgzMjQx
MjJjYmQwOWZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE2ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE2ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0g
VXNlIGNoYXJhY3RlciBuYW1lcyBpbnN0ZWFkIG9mIGNvZGVwb2ludCB2YWx1ZXMgaW4gb3ZlcnJp
ZGVDb250cm9sQ2hhcmFjdGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxYTE3NmY3YTNjNGI0ZWE5Mzk3ZmVl
MDcyOGQ5ZWM2ODhhNzI1YjguLjEzMTNlYTQyYzI2MjI5NjZmMzYzMDg5Y2ViZmUyMzk5Y2MzYmIw
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTYgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0b3JhZ2UgcHJld2FybWlu
ZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3luYyB3aXRoIGEgcmVtb3Rl
IFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQgcGVyZm9ybXMgYW55Cisg
ICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0byByZW1vdGUgU3RvcmFn
ZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQgdHdvIHN5bmMgbWVzc2Fn
ZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9yIGdldHRpbmcgdGhlIHJl
bW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0VmFsdWVzOiBmb3IgZ2V0
dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBXZSBjYW4gbWVyZ2UgdGhl
c2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RUb1N0b3JhZ2VBcmVhU3lu
YywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVy
IGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBwcm9jZXNzIHdpbGwgbm90
IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRoZSB3YWl0IHRpbWUgZm9y
IGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291bGQgcHJld2FybSBMb2Nh
bFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdlQXJlYU1hcCBhaGVhZCBh
bmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBkb24ndCBhY3R1YWxseSBu
ZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBmb3Igb3BlcmF0aW9uIGF0
IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdlIENvbm5lY3RUb1N0b3Jh
Z2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBwcmV3YXJtaW5nLgorCisg
ICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5IGFmdGVyIHByZXdhcm1p
bmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIGJl
Zm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25uZWN0VG9TdG9yYWdlQXJl
YS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5kbGUgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVjdFRvU3RvcmFnZUFyZWEg
cmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdlKSwgYW5kIGFsc28gYmVm
b3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0Y2hTdG9yYWdlRXZlbnQg
LyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBwcm9jZXNzIGVhcmxpZXIg
YmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0aGlzLCB3ZSB1c2UgYSBt
ZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9mIG1lc3NhZ2VzIHNlbnQg
ZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VBcmVhTWFwIGNhbiBpZ25v
cmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5bmNlZCB3aXRoIGEgbW9y
ZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVu
dHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VNYW5h
Z2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWEpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
U3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lv
blN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJl
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlQXJlYUJhc2Up
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5lcnNBYm91dENsZWFyKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRjaEV2ZW50cyBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaDoKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKHR5cGVzX3RoYXRf
Y2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6cHJld2FybSk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFj
Y2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpj
bG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OlN0
b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6On5TdG9yYWdl
QXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNsZWFy
Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6c2VuZENvbm5lY3RNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3RTeW5jKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VB
cmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0xNiAgQ2FtZXJvbiBNY0Nv
cm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSBpbiBmbGlnaHQgbGF5
ZXIgdHJhbnNhY3Rpb25zIGRvbid0IGFjY3VtdWxhdGUgZnVydGhlciBjYW52YXMgZHJhd2luZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDYxZWI4YTQxYzE4OTJmMjAwYzU4NTgzYTY5
N2VkMjU4OGY2OWNmNjkuLjM1NTNhOWY2NzBhZGM1MjZhM2ViNDkyOTA2MWM1Y2NhZDgxNTM1MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTQxMyw5ICs0MTMsNiBAQCB2b2lkIERP
TVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlmTmVjZXNzYXJ5KCkKICAgICBpZiAoIXBhZ2Ug
fHwgcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFwYWdlLT5tYWluRnJhbWUoKS5tYXlQcmV3YXJtTG9jYWxTdG9yYWdlKCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIC8vIFRoaXMgZWFnZXJseSBjb25zdHJ1Y3RzIHRoZSBTdG9yYWdlQXJl
YSwgd2hpY2ggd2lsbCBsb2FkIGl0ZW1zIGZyb20gZGlzay4KICAgICBhdXRvIGxvY2FsU3RvcmFn
ZVJlc3VsdCA9IHRoaXMtPmxvY2FsU3RvcmFnZSgpOwogICAgIGlmIChsb2NhbFN0b3JhZ2VSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC00MjUsNyArNDIyLDcgQEAgdm9pZCBET01XaW5kb3c6OnBy
ZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPm1haW5GcmFtZSgpLmRpZFByZXdhcm1Mb2NhbFN0
b3JhZ2UoKTsKKyAgICBsb2NhbFN0b3JhZ2UtPmFyZWEoKS5wcmV3YXJtKCk7CiB9CiAKIERPTVdp
bmRvdzo6fkRPTVdpbmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDg2ZjlhN2JlM2ViYTBk
YmYyYjI3NWM3NTFjYzg0M2RkYWE3NGE1YzEuLmE0N2VhMGQ4NDQwMDU4MGNlYmUxMjFjODllYmMw
Zjg3NzI0N2ZjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDU3LDE5ICsxMDU3LDYgQEAg
dm9pZCBGcmFtZTo6ZHJvcENoaWxkcmVuKCkKICAgICAgICAgdHJlZSgpLnJlbW92ZUNoaWxkKCpj
aGlsZCk7CiB9CiAKLXZvaWQgRnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKQotewotICAg
IEFTU0VSVChpc01haW5GcmFtZSgpKTsKLSAgICBBU1NFUlQobV9sb2NhbFN0b3JhZ2VQcmV3YXJt
aW5nQ291bnQgPCBtYXhsb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQpOwotICAgICsrbV9sb2Nh
bFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQ7Ci19Ci0KLWJvb2wgRnJhbWU6Om1heVByZXdhcm1Mb2Nh
bFN0b3JhZ2UoKSBjb25zdAotewotICAgIEFTU0VSVChpc01haW5GcmFtZSgpKTsKLSAgICByZXR1
cm4gbV9sb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQgPCBtYXhsb2NhbFN0b3JhZ2VQcmV3YXJt
aW5nQ291bnQ7Ci19Ci0KIEZsb2F0U2l6ZSBGcmFtZTo6c2NyZWVuU2l6ZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX292ZXJyaWRlU2NyZWVuU2l6ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5k
ZXggNTM2NDRlYjE5NWUxN2NkMmZkN2ZjNDFiMTQyYWQxYjc2ZTRiNmNjZC4uZTA0Yzk0NDFlMzEw
ODA3M2FkNTg5YmQ4ZThmYTAwYmRkMzM5NjIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjkxLDkg
KzI5MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zKCk7CiAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5k
ZWRDb3VudCA+IDA7IH0KIAotICAgIHZvaWQgZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOwotICAg
IGJvb2wgbWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0OwotCiAgICAgZW51bSBjbGFzcyBJ
bnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc1JlYXNvbiB7IExheW91dCwgRXZlbnRIYW5kbGVy
Q2hhbmdlIH07CiAgICAgdm9pZCBpbnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc0lmTmVlZGVk
KEludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zUmVhc29uKTsKIApAQCAtMzYxLDcgKzM1OCw2
IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uYXZpZ2F0aW9uRGlzYWJsZUNvdW50IHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fc2VsZk9ubHlSZWZDb3VudCB7IDAgfTsKICAgICBib29sIG1faGFz
SGFkVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBtX2xvY2FsU3RvcmFn
ZVByZXdhcm1pbmdDb3VudCB7IDAgfTsKIAogICAgIEZsb2F0U2l6ZSBtX292ZXJyaWRlU2NyZWVu
U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IDI1MWJkNDI5ZDYy
MDYyOTk3ZjcyOGRjMGRjNjYyNWYxNGYxYjVjNzguLjc3NDYxNDBmNzg0MDgxYjA3ODZhMTVkNjAx
ZmVmY2EyYzkxYzEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTU4
LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3Vu
dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IHByZXdhcm0oKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZVR5cGUuaAppbmRleCAyMjA1ODdlYzg2YmE1YzUxNzFiNjczYjE3N2E0NjYx
YTIyY2YzMTNkLi4wZWQ5YTFiZWEyZGQ3NDdhODJkMzUxZjc0MzI4ZmVhNmMxMmQyMDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oCkBAIC00NCwzICs0NCwxNiBAQCBpbmxpbmUg
Ym9vbCBpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UoU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3RvcmFnZVR5cGU+IHsKKyAgICB1c2luZyB2
YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZSwKKyAgICAg
ICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb24sCisgICAgICAgIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlOjpMb2NhbCwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OlRyYW5zaWVudExv
Y2FsCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKaW5kZXgg
Yzg0ZWFkNDMwYWIxNWQ5NGZkOGVmMjUzM2Q2ZTQ5Mjg3MmI2ZTEyYi4uMGM0MWFiOTJlMzFmNDlk
NmE1YTk0OWE0MDM3MjhjMmFhOWQwNDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCkBAIC0xNjUsNyArMTY1
LDcgQEAgdm9pZCBTdG9yYWdlQXJlYTo6Y2xlYXIoKQogICAgIH0KIAogICAgIGZvciAoYXV0byYg
bGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpCi0gICAgICAgIElQQzo6Q29ubmVj
dGlvbjo6c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNs
ZWFyQ2FjaGUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBJUEM6OkNvbm5l
Y3Rpb246OnNlbmQobGlzdGVuZXJVbmlxdWVJRCwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpD
bGVhckNhY2hlKDApLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIExvY2FsU3RvcmFn
ZURhdGFiYXNlJiBTdG9yYWdlQXJlYTo6ZW5zdXJlRGF0YWJhc2UoKSBjb25zdApAQCAtMTg4LDcg
KzE4OCw3IEBAIHZvaWQgU3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgU3RvCiAgICAgQVNTRVJUKHN0b3JhZ2VBcmVh
SW1wbElEKTsKICAgICBmb3IgKGF1dG8mIGxpc3RlbmVyVW5pcXVlSUQgOiBtX2V2ZW50TGlzdGVu
ZXJzKSB7CiAgICAgICAgIGF1dG8gb3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCA9IGxpc3RlbmVy
VW5pcXVlSUQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdG9yYWdl
QXJlYUltcGxJRCkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3Rv
cmFnZUV2ZW50KG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1Zh
bHVlLCB1cmxTdHJpbmcpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6
Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFN
YXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQsIGtleSwg
b2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIDApLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggY2JkZGQyZTMwNDhk
Mjg3MGFlMDdhMGFhZGY0ZWQ5N2IzMTA0MzZjOS4uM2NlMGVjODU3M2Q5OGM5ZDc0OGQ3MDRiMmRj
OWRjOGM5MTlkNmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTY1LDcgKzE2NSw3
IEBAIHZvaWQgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdGlvbkNsb3NlZEZvclRyYW5zaWVu
dFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvCiAgICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYSA9
IG51bGxwdHI7CiB9CiAKLVN0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2Vy
Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFJlZjxXb3JrUXVl
dWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFn
ZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBj
b25uZWN0aW9uLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1
ZXVlKQogewogICAgIGlmICghbV9sb2NhbFN0b3JhZ2VBcmVhKSB7CiAgICAgICAgIGlmICghbV9w
YXRoLmlzRW1wdHkoKSkKQEAgLTE3NywxMSArMTc3LDExIEBAIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjCiAgICAgfQogCiAgICAgQVNTRVJUKG1fcGF0aC5pc0VtcHR5KCkgfHwgbV9sb2NhbFN0b3Jh
Z2VBcmVhLT50eXBlKCkgPT0gU3RvcmFnZUFyZWFCYXNlOjpUeXBlOjpTUUxpdGUpOwotICAgIG1f
bG9jYWxTdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbik7CisgICAgbV9sb2NhbFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7CiB9CiAKLVN0b3JhZ2VB
cmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9j
YWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmll
ciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikK
IHsKICAgICBpZiAoIW1fdHJhbnNpZW50U3RvcmFnZUFyZWEpIHsKICAgICAgICAgbV90cmFuc2ll
bnRTdG9yYWdlQXJlYSA9IG1ha2VVbmlxdWU8TWVtb3J5U3RvcmFnZUFyZWE+KG9yaWdpbiwgU3Rv
cmFnZUFyZWFCYXNlOjpTdG9yYWdlVHlwZTo6TG9jYWwpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIFN0
b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2ll
bnRMb2NhbFN0b3JhZ2VBcmVhKElQCiAgICAgfQogCiAgICAgQVNTRVJUKG1fdHJhbnNpZW50U3Rv
cmFnZUFyZWEtPnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6Ok1lbW9yeSk7Ci0gICAg
bV90cmFuc2llbnRTdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbik7CisgICAgbV90
cmFuc2llbnRTdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbiwgc291cmNlSWRlbnRp
Zmllcik7CiAgICAgcmV0dXJuIG1fdHJhbnNpZW50U3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xv
Y2FsU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYTg4ODQyZTI5NWYyZDkwYThmMGU4YmJhOGVk
N2IzZWEyN2Q1OGE4Yi4uY2RjYjY4MTJmOGZlZDY5YmNkYTQ5ZjY5NDJkNjdjZGEyZDEwZjE1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3Rv
cmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Niw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN5bmNMb2NhbFN0b3JhZ2UoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBSZWY8V29ya1F1ZXVlPiYmKTsKLSAgICBTdG9yYWdlQXJlYUlkZW50
aWZpZXIgY29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKKyAgICBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25u
ZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7
CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuY3BwCmluZGV4IDkzMDA5ZTI0OWVkMWE0Yzg5N2NhOTE5MGMzZjI0ZDVhM2M0NTQ4
NWEuLmQ5NzRlNmRiMzU1Mzg3MTQyNWJhZTYyYzA3MjI1NzIxMzJjNmQ0MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3Jr
U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02MjUsMjQgKzYyNSwzMyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVj
dFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmln
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBl
IHR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdl
TmFtZXNwYWNlSWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlk
ZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJD
b3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9yaWdpbiB9OwotICAg
IGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5sb2Nh
bFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb0xvY2FsU3Rv
cmFnZUFyZWEoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBvcmlnaW4sIG1fcXVldWUuY29weVJlZigp
KSk7Ci19CisgICAgYXV0byBjb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKTsKKyAgICBhdXRvJiBvcmlnaW5TdG9yYWdlTWFuYWdlciA9IGxvY2FsT3JpZ2luU3RvcmFn
ZU1hbmFnZXIob3JpZ2luKTsKKyAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgcmVzdWx0SWRlbnRp
ZmllcjsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VUeXBl
OjpMb2NhbDoKKyAgICAgICAgcmVzdWx0SWRlbnRpZmllciA9IG9yaWdpblN0b3JhZ2VNYW5hZ2Vy
LmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9j
YWxTdG9yYWdlQXJlYShjb25uZWN0aW9uSWRlbnRpZmllciwgc291cmNlSWRlbnRpZmllciwgb3Jp
Z2luLCBtX3F1ZXVlLmNvcHlSZWYoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29y
ZTo6U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgorICAgICAgICByZXN1bHRJZGVudGlmaWVy
ID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxTdG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJl
YVJlZ2lzdHJ5KS5jb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4pOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpTZXNzaW9uOgorICAgICAgICByZXN1bHRJZGVu
dGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIuc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCptX3N0
b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShjb25uZWN0aW9u
SWRlbnRpZmllciwgc291cmNlSWRlbnRpZmllciwgb3JpZ2luLCBuYW1lc3BhY2VJZGVudGlmaWVy
KTsKKyAgICB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2ll
bnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5h
bWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdp
biwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3BlbmluZ09yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgb3Bl
bmluZ09yaWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIob3JpZ2luKS5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkp
LmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbi51bmlxdWVJRCgp
LCBvcmlnaW4pKTsKKyAgICBpZiAoYXV0byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdp
c3RyeS0+Z2V0U3RvcmFnZUFyZWEocmVzdWx0SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBzdG9yYWdlQXJlYS0+YWxsSXRlbXMo
KSwgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKSk7CisKKyAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIocmVzdWx0SWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4geyB9LCBTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKIH0K
IAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
U3luYyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5
cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2lu
LCB0b3BPcmlnaW4gfTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKG9yaWdpbikuc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0
cnkpLmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9y
aWdpbiwgaWRlbnRpZmllcikpOworICAgIGNvbm5lY3RUb1N0b3JhZ2VBcmVhKGNvbm5lY3Rpb24s
IHR5cGUsIHNvdXJjZUlkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6ZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtNjY5LDE2ICs2NzgsNiBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lYwogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OmdldFZhbHVlcyhTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAg
aWYgKGF1dG8gc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhUmVnaXN0cnktPmdldFN0b3JhZ2VB
cmVhKGlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RvcmFn
ZUFyZWEtPmFsbEl0ZW1zKCkpOwotICAgIAotICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOwotfQotCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c2V0SXRlbShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdG9y
YWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFw
U2VlZCwgU3RyaW5nJiYga2V5LCBTdHJpbmcmJiB2YWx1ZSwgU3RyaW5nJiYgdXJsU3RyaW5nKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5o
CmluZGV4IGQyMWQ2NTZkM2E2NzI3Yzk4ZDEyYTQxMjM3NWVkMDUyYTUzYTllOTEuLmExZjMwNzY0
NDY3NmU4ZDUzNTY1YmZlYzgzNzk2Nzk2YzM0NmE4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJPcmlnaW5TdG9yYWdlTWFuYWdlci5oIgog
I2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KQEAgLTQ0LDYgKzQ1
LDcgQEAgY2xhc3MgU2hhcmVkRmlsZUhhbmRsZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3Ry
dWN0IENsaWVudE9yaWdpbjsKK2VudW0gY2xhc3MgU3RvcmFnZVR5cGUgOiB1aW50OF90OwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwOCwxMiArMTEwLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBnZXRIYW5kbGUoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRs
ZUlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBib29sPiwg
RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKICAgICAKICAgICAvLyBNZXNzYWdlIGhhbmRs
ZXJzIGZvciBXZWJTdG9yYWdlLgotICAgIHZvaWQgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJ
UEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVu
dGlmaWVyKT4mJik7Ci0gICAgdm9pZCBjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7Ci0gICAgdm9pZCBj
b25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYpOworICAgIHZvaWQgY29ubmVj
dFRvU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUsIFN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAg
ICB2b2lkIGNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyhJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3Jl
OjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1
aW50NjRfdCk+JiYpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNv
bm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZ2V0VmFsdWVzKFN0
b3JhZ2VBcmVhSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiYpPiYmKTsKICAgICB2b2lkIHNldEl0ZW0oSVBDOjpDb25uZWN0aW9u
JiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50
NjRfdCBzZWVkLCBTdHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJp
bmcpOwogICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNlZWQsIFN0cmlu
ZyYmIGtleSwgU3RyaW5nJiYgdXJsU3RyaW5nKTsKICAgICB2b2lkIGNsZWFyKElQQzo6Q29ubmVj
dGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwg
dWludDY0X3Qgc2VlZCwgU3RyaW5nJiYgdXJsU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGE1MTZhZGE5ODMyZmRlZjViNjgxNDk0NDIxNWY2
ODhmZGE4MWM2MTUuLmZmYzg2ZjlkMDlmZDQ1OTU1MzVmODc1MDUzOTQ1YTE4YTc3MzFmMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtNDAsMTIgKzQw
LDEwIEBACiAgICAgR2V0SGFuZGxlTmFtZXMoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50
aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBXZWJLaXQ6OkZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAgICBHZXRIYW5kbGUoV2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIG5hbWUpIC0+
IChFeHBlY3RlZDxzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIs
IGJvb2w+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMgV2Fu
dHNDb25uZWN0aW9uCiAKLSAgICBDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKFdlYktpdDo6U3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKFdlYktpdDo6U3Rv
cmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgotICAgIENvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdl
TmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxTZWN1cml0eU9yaWdpbkRhdGEsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0
aW9uCi0gICAgQ29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENv
bm5lY3RUb1N0b3JhZ2VBcmVhKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4pIC0+IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlk
ZW50aWZpZXIpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5lY3RUb1N0b3JhZ2VBcmVh
U3luYyhXZWJDb3JlOjpTdG9yYWdlVHlwZSB0eXBlLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwSWRl
bnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3Jp
Z2luKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gaXRlbXMsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKSBTeW5j
aHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KICAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKFdl
YktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIFdhbnRzQ29ubmVjdGlvbgog
ICAgIENsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHRvU3RvcmFnZU5hbWVzcGFjZUlEKSBXYW50c0Nvbm5lY3Rpb24KLSAgICBH
ZXRWYWx1ZXMoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlcykgU3luY2hyb25vdXMKICAgICBTZXRJdGVtKFdl
YktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZUFy
ZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQs
IFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSwgU3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0
aW9uCiAgICAgUmVtb3ZlSXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVp
bnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50
c0Nvbm5lY3Rpb24KICAgICBDbGVhcihXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIs
IHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZDQwZTQwYjYxNzNjMjhkNDRjNTdi
OGUyMGY3MmJjYjUxMTA0MWRiNS4uYjczNDJlNDBlZjFmNmJiNWNkYjZmYmZiMmVmMTIzZjlkMDZl
OGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nl
c3Npb25TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3Rv
cmFnZUFyZWFJZGVudGlmaWVyIFNlc3Npb25TdG9yYWdlTWFuYWdlcjo6YWRkU3RvcmFnZUFyZWEo
c3RkOjp1bmlxdWVfcHRyPE1lbW8KICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAotU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIFNlc3Npb25TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5h
bWVzcGFjZUlkZW50aWZpZXIpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VN
YW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0g
bV9zdG9yYWdlQXJlYXNCeU5hbWVzcGFjZS5nZXQobmFtZXNwYWNlSWRlbnRpZmllcik7CiAgICAg
aWYgKCFpZGVudGlmaWVyLmlzVmFsaWQoKSkgewpAQCAtODQsNyArODQsOCBAQCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFn
ZUFyZWEoSVBDOjpDbwogICAgIGlmICghc3RvcmFnZUFyZWEpCiAgICAgICAgIHJldHVybiBTdG9y
YWdlQXJlYUlkZW50aWZpZXIgeyB9OwogCi0gICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNv
bm5lY3Rpb24pOworICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3Vy
Y2VJZGVudGlmaWVyKTsKKwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyLmgKaW5kZXggZmMxNzYxYmU5MDBmOGU0ZGE3NzU0YjAxOGYxZGJlMmUzOGZiN2Rm
YS4uMGY3YmU0YzVlNWNjODhhYzM4MjljMTkyNTAxZmNjNjgyNjI1ZTUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3Rv
cmFnZU1hbmFnZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VB
cmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXJEYXRhKCk7CiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQpOwogCi0gICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7CisgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpc2Nv
bm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyKTsKICAgICB2b2lkIGNsb25lU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcAppbmRleCBlNDRiYTAxMzVhNjQzYzAxYTViOTAw
Yzc2MzFiYTE0OTk4ZjhmM2MxLi41Nzk3ZTljNTQwMjFkMmE4ZDgwZjI4MjFlMWU1MjFhMzA4ZDJi
M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3Rv
cmFnZUFyZWFCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU3RvcmFnZUFyZWFCYXNlLmNwcApAQCAtMzAsOCArMzAsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK3VpbnQ2NF90IFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVy
KCkKK3sKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbklkZW50aWZpZXIo
MCk7CisgICAgcmV0dXJuICsrY3VycmVuSWRlbnRpZmllcjsKK30KKwogU3RvcmFnZUFyZWFCYXNl
OjpTdG9yYWdlQXJlYUJhc2UodW5zaWduZWQgcXVvdGEsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luKQotICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSkKKyAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYUlkZW50aWZpZXI6Omdl
bmVyYXRlVGhyZWFkU2FmZSgpKQogICAgICwgbV9xdW90YShxdW90YSkKICAgICAsIG1fb3JpZ2lu
KG9yaWdpbikKIHsKQEAgLTM5LDExICs0NSwxMSBAQCBTdG9yYWdlQXJlYUJhc2U6OlN0b3JhZ2VB
cmVhQmFzZSh1bnNpZ25lZCBxdW90YSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcgog
CiBTdG9yYWdlQXJlYUJhc2U6On5TdG9yYWdlQXJlYUJhc2UoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
U3RvcmFnZUFyZWFCYXNlOjphZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKLSAgICBBU1NFUlQoIW1fbGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb24pKTsK
KyAgICBBU1NFUlQoIW1fbGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb24pIHx8IG1fbGlzdGVu
ZXJzLmdldChjb25uZWN0aW9uKSA9PSBpZGVudGlmaWVyKTsKIAotICAgIG1fbGlzdGVuZXJzLmFk
ZChjb25uZWN0aW9uKTsKKyAgICBtX2xpc3RlbmVycy5zZXQoY29ubmVjdGlvbiwgaWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFCYXNlOjpyZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24pCkBAIC01OCwxOSArNjQsMTkgQEAgYm9vbCBTdG9y
YWdlQXJlYUJhc2U6Omhhc0xpc3RlbmVycygpIGNvbnN0CiAKIHZvaWQgU3RvcmFnZUFyZWFCYXNl
Ojpub3RpZnlMaXN0ZW5lcnNBYm91dENsZWFyKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbm5lY3Rp
b24gOiBtX2xpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgZm9yIChhdXRvJiBbY29ubmVjdGlvbiwgaWRlbnRpZmllcl0gOiBt
X2xpc3RlbmVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1l
c3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZShTdG9yYWdlQXJlYUJhc2U6Om5leHRN
ZXNzYWdlSWRlbnRpZmllcigpKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBT
dG9yYWdlQXJlYUJhc2U6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQg
c291cmNlQ29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBzb3VyY2VJbXBsSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0
IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewogICAg
IEFTU0VSVChzb3VyY2VJbXBsSWRlbnRpZmllcik7CiAKLSAgICBmb3IgKGF1dG8mIGNvbm5lY3Rp
b24gOiBtX2xpc3RlbmVycykgeworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rpb24sIGlkZW50aWZp
ZXJdIDogbV9saXN0ZW5lcnMpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyPiBpbXBsSWRlbnRpZmllcjsKICAgICAgICAgaWYgKGNvbm5lY3Rpb24gPT0g
c291cmNlQ29ubmVjdGlvbikKICAgICAgICAgICAgIGltcGxJZGVudGlmaWVyID0gc291cmNlSW1w
bElkZW50aWZpZXI7Ci0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBN
ZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KGltcGxJZGVudGlm
aWVyLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVz
c2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChpbXBsSWRlbnRpZmll
ciwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgU3RvcmFnZUFyZWFCYXNlOjpu
ZXh0TWVzc2FnZUlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3Rv
cmFnZUFyZWFCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3Rv
cmFnZUFyZWFCYXNlLmgKaW5kZXggZWQzZWQxNDIwNmUxNzVkY2FjYzhjMWY5OTQ5MDc1MDU0NWUz
NGU5OC4uZWZjOGZiOTY0ODkxMDdjODhlMzNjZDEyM2Y2MDlhMzZmMjFhZWQ3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJh
c2UuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGxJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC00Nyw2ICs0OCw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhQmFzZSA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxTdG9yYWdlQXJlYUJhc2U+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdG9yYWdl
QXJlYUJhc2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0
YXRpYyB1aW50NjRfdCBuZXh0TWVzc2FnZUlkZW50aWZpZXIoKTsKICAgICB2aXJ0dWFsIH5TdG9y
YWdlQXJlYUJhc2UoKTsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBTUUxpdGUsIE1l
bW9yeSB9OwpAQCAtNTksNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgU3RvcmFnZUFyZWFJZGVudGlm
aWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBXZWJD
b3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAg
ICB1bnNpZ25lZCBxdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVvdGE7IH0KLSAgICB2b2lkIGFk
ZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgIHZvaWQgYWRkTGlzdGVu
ZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwogICAg
IGJvb2wgaGFzTGlzdGVuZXJzKCkgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlMaXN0ZW5lcnNBYm91
dENsZWFyKCk7CkBAIC03Nyw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKICAgICB1bnNpZ25lZCBtX3F1b3RhOwogICAgIFdlYkNvcmU6
OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKLSAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQ+IG1fbGlzdGVuZXJzOworICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyPiBtX2xpc3RlbmVyczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggOGI1MjFmNzcwMTU0OGIxYWY4YjQ0YjM1Mzc0NjM3NjljOTBkZjk4Mi4uOWJlYTRiYjY1MTc4
ZmJhMGY5ZjlmODU3ZmY5YWQzZjFkMzM1YTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CkBAIC0zMDUsNiArMzA1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90
X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNsZWVwRGlzYWJsZXJJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUnLAog
ICAgICAgICAnV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllcicsCisgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZScsCiAgICAgICAgICdXZWJDb3Jl
OjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2Nr
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKQEAg
LTM0Nyw2ICszNDgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6VGFwSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlRleHRDaGVja2VyUmVxdWVzdElEJywKQEAgLTg0MSw2ICs4NDMsNyBAQCBkZWYgaGVh
ZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bic6IFsnPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUnOiBbJzxXZWJDb3JlL0RvY3VtZW50U3Rv
cmFnZUFjY2Vzcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQnOiBbJzxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPiddLAorICAgICAgICAnV2Vi
Q29yZTo6U3RvcmFnZVR5cGUnOiBbJzxXZWJDb3JlL1N0b3JhZ2VUeXBlLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyJzogWyc8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTeXN0ZW1QcmV2aWV3SW5mbyc6IFsnPFdlYkNv
cmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5n
UmVxdWVzdERhdGEnOiBbJzxXZWJDb3JlL1RleHRDaGVja2luZy5oPiddLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTUyNjMwYTMwMzIx
MDc0OGI4OGEwMTlhMTNjNDBhMGRhZjIwM2QxNC4uNTRhNGIyMTAxYTM1N2FlMTQ5OGU4ZTg2NzQx
ZTg3NjA1MjI1YTEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDU3LDYgKzE0NTcsNyBAQAogCQk5M0FCOUI0RTI1NzU2N0UyMDA5
OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI0MjI1NzQ5
MjhDMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
LmggKi87IH07CiAJCTkzQUI5QjU1MjU3NUEyNzYwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlv
blJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUI5QjRGMjU3NTg5MTEwMDk4
QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJOTNBQjlCNTYyNTc1QTI4QjAwOThCMTBFIC8qIFNwZWVj
aFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNB
QjlCNTEyNTc1ODkxMTAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5M0FFQzE2MTI3
OEY4Q0QzMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FFQzE2MDI3OEY4Q0QyMDA2NjY2
NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggKi87IH07CiAJCTkzQjBBNjc1MjZENUFE
Q0YwMEFBMjFFNCAvKiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8q
IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmggKi87IH07CiAJCTkzQjI2MTREMjI3RDE0OUUwMEI5
N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCMjYxNDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2Vy
LmggKi87IH07CiAJCTkzQjI2MTRFMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRh
YmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
MjYxNDUyMjdEMTQ3MDAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggKi87IH07CkBA
IC01MzA1LDYgKzUzMDYsNyBAQAogCQk5M0FCOUI1MjI1NzU4OTEyMDA5OEIxMEUgLyogU3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUI5QjUzMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzQUI5QjU0MjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3Nh
Z2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQUVDMTYwMjc4RjhDRDIwMDY2
NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQjBBNjczMjZENUE3MkUwMEFBMjFFNCAvKiBXZWJQZXJtaXNzaW9uQ29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQZXJt
aXNzaW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjBB
Njc0MjZENUE3MkUwMEFBMjFFNCAvKiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9j
YWxTdG9yYWdlRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9j
YWxTdG9yYWdlRGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjEs
NiArNzA2Myw3IEBACiAJCQkJMUFDRUNEMjIxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVh
TWFwLmNwcCAqLywKIAkJCQkxQUNFQ0QyMzE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFN
YXAuaCAqLywKIAkJCQkxQTMzNERFQTE2REU4QjY4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXAu
bWVzc2FnZXMuaW4gKi8sCisJCQkJOTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VB
cmVhTWFwSWRlbnRpZmllci5oICovLAogCQkJCTQ2NUY0RTA1MjMwQjJFN0MwMDNDRURCNyAvKiBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oICovLAogCQkJCTFBMTc2MzU0MTZCMUQ1RDAwMEQ4
OEZENiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgKi8sCiAJCQkJMUExNzYzNTUxNkIxRDVE
MDAwRDg4RkQ2IC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmggKi8sCkBAIC0xMzI2Myw2ICsxMzI2
Niw3IEBACiAJCQkJOTNFNzk5REMyNzYxMjEwODAwNzQwMDhBIC8qIFN0b3JhZ2VBcmVhQmFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMzMwNkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VB
cmVhSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8q
IFN0b3JhZ2VBcmVhTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0FFQzE2MTI3OEY4Q0QzMDA2
NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTMzNERFRTE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNFNzk5QzcyNzYwMjc0NjAwNzQwMDhBIC8qIFN0b3JhZ2VBcmVhUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBT
dG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCAwMjI3MGE1M2FmOWJhOGJmODBkN2MzYjNkY2RjOGNlYjU2NTE3NmUzLi44ZDNiNTdiZDE4
ZGMyZTA1Mzg0Y2NmMDhkN2Q5Yzg5MDdjZDA0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAg
ICBpZiAoYXV0byogc3RvcmFnZUFyZWFNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdG9y
YWdlQXJlYU1hcChtYWtlT2JqZWN0SWRlbnRpZmllcjxTdG9yYWdlQXJlYUlkZW50aWZpZXJUeXBl
PihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBpZiAoYXV0byBzdG9yYWdlQXJl
YU1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCiAgICAgICAgICAgICBzdG9yYWdlQXJlYU1hcC0+ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjgxNjc3NWE3OTk0YWIyMmNjMmZiYzI2
MDAwZTlkMjJmMmZjMmM2YS4uMjQ1NTk4MWIwMzYxNjkyYTUyNjU0MjBmZWVkYzRiNGYyZDQwZGEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTE4OSw4ICsx
MTg5LDggQEAgdm9pZCBXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQo
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKiBjb25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24pOwogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24gPT0gY29ubmVjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3Jh
Z2VBcmVhTWFwIDogY29weVRvVmVjdG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKLSAg
ICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpc2Nvbm5lY3QoKTsKKyAgICBmb3IgKGF1dG8ga2V5IDog
Y29weVRvVmVjdG9yKG1fc3RvcmFnZUFyZWFNYXBzLmtleXMoKSkpCisgICAgICAgIG1fc3RvcmFn
ZUFyZWFNYXBzLmdldChrZXkpLT5kaXNjb25uZWN0KCk7CiAKICAgICBmb3IgKGF1dG8mIHBhZ2Ug
OiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsKICAgICAgICAgYXV0byBpZGJDb25uZWN0aW9uID0gcGFn
ZS0+Y29yZVBhZ2UoKS0+b3B0aW9uYWxJREJDb25uZWN0aW9uKCk7CkBAIC0xNjk3LDIwICsxNjk3
LDIwIEBAIHZvaWQgV2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3NNZW1vcnlDbGVhbnVwVGlt
ZXJGaXJlZCgpCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9y
YWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAgQVNTRVJUKHN0b3JhZ2VBcmVhTWFw
LmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKCFtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucygq
c3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcHMuc2V0
KCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCksICZzdG9yYWdlQXJlYU1hcCk7CisgICAgYXV0
byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpOworICAgIEFTU0VSVCgh
bV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fc3RvcmFnZUFy
ZWFNYXBzLmFkZChpZGVudGlmaWVyLCBzdG9yYWdlQXJlYU1hcCk7CiB9CiAKIHZvaWQgV2ViUHJv
Y2Vzczo6dW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJl
YU1hcCkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKTsKLSAgICBB
U1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZp
ZXIoKSkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoKnN0b3JhZ2VBcmVhTWFw
LmlkZW50aWZpZXIoKSkgPT0gJnN0b3JhZ2VBcmVhTWFwKTsKLSAgICBtX3N0b3JhZ2VBcmVhTWFw
cy5yZW1vdmUoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7CisgICAgYXV0byBpZGVudGlm
aWVyID0gc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpOworICAgIEFTU0VSVChtX3N0b3JhZ2VB
cmVhTWFwcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFN
YXBzLmdldChpZGVudGlmaWVyKS5nZXQoKSA9PSAmc3RvcmFnZUFyZWFNYXApOworICAgIG1fc3Rv
cmFnZUFyZWFNYXBzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAotU3RvcmFnZUFyZWFNYXAqIFdl
YlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVy
KSBjb25zdAorV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFN
YXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDQ2OWEwYTVlMTkxZGNmNDcwMTMyNzE2YjY3MmVkMWMy
ZTYxZjMxMTcuLmU4N2Q3MzNkNzZhZGVlMGNiOGJhZGI4N2Y1Y2E3NTVkYTYyZDcwMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVGV4dENo
ZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hlci5oIgpAQCAtMjg0LDcgKzI4NCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1h
cCYpOwogICAgIHZvaWQgdW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7
Ci0gICAgU3RvcmFnZUFyZWFNYXAqIHN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhSWRlbnRpZmll
cikgY29uc3Q7CisgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gc3RvcmFnZUFyZWFNYXAoU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7
CkBAIC03NDIsNyArNzQyLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoQ291bnRlZFNldDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gbV9zd1JlZ2lzdHJhdGlvbkNv
dW50czsKICNlbmRpZgogCi0gICAgSGFzaE1hcDxTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3Jh
Z2VBcmVhTWFwKj4gbV9zdG9yYWdlQXJlYU1hcHM7CisgICAgSGFzaE1hcDxTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIsIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+PiBtX3N0b3JhZ2VBcmVhTWFwczsK
ICAgICAKICAgICAvLyBQcmV3YXJtZWQgV2ViUHJvY2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29j
aWF0ZWQgc2Vzc2lvbklEIHlldCwgd2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCiAg
ICAgLy8gQnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nlc3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1
YXJhbnRlZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IGIxMmM1OGMw
YWFkNjdlOTk1NzcwNmUyOWU2ZGU2NTY5ZWZlNjQ4NDYuLjFmOWI0MmNiMTI3ZDZkYzAyOGE2ODA1
OWUyNzEwMWZjNzk2OTQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMTEyLDIwICsxMTIsMTAgQEAg
c2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCgp
Cit2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6cHJld2FybSgpCiB7Ci0gICAgLy8gU3RvcmFnZSBhY2Nl
c3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcg
dG8gZG8gaGVyZS4KLX0KLQotdm9pZCBTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0Nv
dW50KCkKLXsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3Jr
IHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgotfQotCi12b2lkIFN0b3Jh
Z2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChtX3N0b3JhZ2VB
cmVhTWFwKQorICAgICAgICBtX3N0b3JhZ2VBcmVhTWFwLT5jb25uZWN0KCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA3OWUxNGI5MWY4YWM2ZDgyZmU3OTJhYzA2
ZDM5NGVkNzY1ODQyYTYyLi5hMzVkNjY3OTI1MDVmMGMwM2U1OTA4NzAwMWUwY2E0ZmRhN2E2Y2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuaApAQCAtNjEsOSArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY29udGFp
bnMoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBl
IHN0b3JhZ2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNl
ZEJ5Q2FjaGUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwotICAgIHZv
aWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJld2FybSgpIGZp
bmFsOwogCiAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdG9yYWdl
QXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAyY2Y3YTZkNGI2MDA1
YzFkN2VjMjU2YmQ2Mzg4NzYyOTRlOWU0Y2YyLi5kZjRjMjZmMmFmZjMyOTFkOTE5ZGVkNTNkZDc2
MjdiNThmMjg5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC01MSwxNyArNTEsMTkgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU3RvcmFnZUFyZWFNYXA6OlN0
b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCi0gICAgOiBtX25hbWVz
cGFjZShzdG9yYWdlTmFtZXNwYWNlKQorICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fbmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3Bh
Y2UpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKQogICAg
ICwgbV9xdW90YUluQnl0ZXMoc3RvcmFnZU5hbWVzcGFjZS5xdW90YUluQnl0ZXMoKSkKICAgICAs
IG1fdHlwZShzdG9yYWdlTmFtZXNwYWNlLnN0b3JhZ2VUeXBlKCkpCiB7Ci0gICAgY29ubmVjdCgp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRo
aXMpOwogfQogCiBTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFwKCkKIHsKICAgICBkaXNj
b25uZWN0KCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudW5yZWdpc3RlclN0b3JhZ2VB
cmVhTWFwKCp0aGlzKTsKIH0KIAogdW5zaWduZWQgU3RvcmFnZUFyZWFNYXA6Omxlbmd0aCgpCkBA
IC05NSw4ICs5Nyw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJhbWUqIHNvdXJj
ZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvCiAKICAgICBtX3BlbmRpbmdW
YWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBpZiAobV9tYXBJRCkKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbSgqbV9t
YXBJRCwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVl
LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAo
bV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbSgqbV9yZW1vdGVBcmVhSWRlbnRpZmll
ciwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBz
b3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNlCiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6c2V0SXRl
bSBmYWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CkBAIC0xMTQs
MjMgKzExNiwyMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6OkZy
YW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzbwogCiAgICAgbV9wZW5kaW5nVmFs
dWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgaWYgKG1fbWFwSUQpCi0gICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbW92ZUl0ZW0oKm1f
bWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3Vy
Y2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1v
dGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlSXRlbSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciwg
c291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHNvdXJjZUZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtIGZhaWxl
ZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFsaWQiKTsKIH0KIAogdm9pZCBTdG9yYWdl
QXJlYU1hcDo6Y2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUlt
cGwqIHNvdXJjZUFyZWEpCiB7Ci0gICAgY29ubmVjdCgpOwotCisgICAgY29ubmVjdFN5bmMoKTsK
ICAgICByZXNldFZhbHVlcygpOwogCiAgICAgbV9oYXNQZW5kaW5nQ2xlYXIgPSB0cnVlOwogICAg
IG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CiAKLSAgICBp
ZiAobV9tYXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Q2xlYXIoKm1fbWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwg
bV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwg
MCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyKCptX3JlbW90ZUFy
ZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQsIHNv
dXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDApOwogICAgIGVsc2UKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVhTWFwOjpjbGVhciBm
YWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CkBAIC0xNTEsMjEg
KzE1MiwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZXNldFZhbHVlcygpCiAKIFN0b3JhZ2VN
YXAmIFN0b3JhZ2VBcmVhTWFwOjplbnN1cmVNYXAoKQogewotICAgIGNvbm5lY3QoKTsKKyAgICBj
b25uZWN0U3luYygpOwogCi0gICAgaWYgKCFtX21hcCkgeworICAgIGlmICghbV9tYXApCiAgICAg
ICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CiAKLSAg
ICAgICAgaWYgKG1fbWFwSUQpIHsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIGEgSVBD
OjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHRvIHByZXZlbnQgVUlQcm9jZXNzIGhhbmdz
IGluIGNhc2Ugd2UgcmVjZWl2ZSBhIHN5bmNocm9ub3VzIElQQyBmcm9tIHRoZSBVSVByb2Nlc3Mg
d2hpbGUgd2UncmUgd2FpdGluZyBmb3IgYSByZXNwb25zZQotICAgICAgICAgICAgLy8gZnJvbSBv
dXIgU3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlcygpIElQQy4gVGhpcyBJUEMgbWF5IGJlIHZl
cnkgc2xvdyBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGZldGNoIHRoZSB2YWx1ZXMgZnJvbSBkaXNr
IGFuZCB0aGVyZSBtYXkgYmUgYSBsb3Qgb2YgZGF0YS4KLSAgICAgICAgICAgIElQQzo6VW5ib3Vu
ZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwotICAg
ICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzOwotICAgICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldFZh
bHVlcygqbV9tYXBJRCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVzOjpS
ZXBseSh2YWx1ZXMpLCAwKTsKLSAgICAgICAgICAgIG1fbWFwLT5pbXBvcnRJdGVtcyhXVEZNb3Zl
KHZhbHVlcykpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwIGZhaWxlZCB0byBsb2FkIGZyb20g
bmV0d29yayBwcm9jZXNzIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwotICAg
IH0KICAgICByZXR1cm4gKm1fbWFwOwogfQogCkBAIC0yNTksOCArMjUwLDEyIEBAIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlKQogICAgIG1fbWFwLT5zZXRJdGVtSWdub3JpbmdRdW90YShrZXksIG5ld1ZhbHVl
KTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBs
SUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgU3RvcmFnZUFyZWFN
YXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQogeworICAgIGlmIChtZXNz
YWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0gbWVzc2FnZUlk
ZW50aWZpZXI7CiAgICAgaWYgKCFzdG9yYWdlQXJlYUltcGxJRCkgewogICAgICAgICAvLyBUaGlz
IHN0b3JhZ2UgZXZlbnQgb3JpZ2luYXRlcyBmcm9tIGFub3RoZXIgcHJvY2VzcyBzbyB3ZSBuZWVk
IHRvIGFwcGx5IHRoZSBjaGFuZ2UgdG8gb3VyIHN0b3JhZ2UgYXJlYSBtYXAuCiAgICAgICAgIGFw
cGx5Q2hhbmdlKGtleSwgbmV3VmFsdWUpOwpAQCAtMjcyLDggKzI2NywxMiBAQCB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3Jh
Z2VBcmVhSW1wbElkZQogICAgICAgICBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHN0b3JhZ2VB
cmVhSW1wbElELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKTsKIH0KIAotdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSgpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVh
ckNhY2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQogeworICAgIGlmIChtZXNzYWdlSWRl
bnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0gbWVzc2FnZUlkZW50aWZp
ZXI7CiAgICAgcmVzZXRWYWx1ZXMoKTsKIH0KIApAQCAtMzQ0LDQyICszNDMsNzkgQEAgdm9pZCBT
dG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlv
bmFsPFN0b3JhZ2VBcmVhSW0KICAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExv
Y2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVl
LCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogfQogCit2
b2lkIFN0b3JhZ2VBcmVhTWFwOjpzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGUgbW9kZSkKK3sK
KyAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGF1dG8gbmFtZXNw
YWNlSWRlbnRpZmllciA9IG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpOworICAgIGF1
dG8gb3JpZ2luRGF0YSA9IG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsKKyAgICBhdXRvIHRvcE9y
aWdpbkRhdGEgPSBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpID8gbV9uYW1lc3BhY2UudG9w
TGV2ZWxPcmlnaW4oKS0+ZGF0YSgpIDogb3JpZ2luRGF0YTsKKyAgICBhdXRvIG9yaWdpbiA9IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiB7IHRvcE9yaWdpbkRhdGEsIG9yaWdpbkRhdGEgfTsKKyAgICBh
dXRvIHR5cGUgPSBtX3R5cGU7CisgICAgaWYgKCh0eXBlID09IFN0b3JhZ2VUeXBlOjpMb2NhbCB8
fCB0eXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCkgJiYgbV9uYW1lc3BhY2UudG9w
TGV2ZWxPcmlnaW4oKSkKKyAgICAgICAgdHlwZSA9IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2Nh
bDsKKworICAgIGlmIChtb2RlID09IFNlbmRNb2RlOjpTeW5jKSB7CisgICAgICAgIFN0b3JhZ2VB
cmVhSWRlbnRpZmllciByZW1vdGVBcmVhSWRlbnRpZmllcjsKKyAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gaXRlbXM7CisgICAgICAgIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyOwor
ICAgICAgICBpcGNDb25uZWN0aW9uLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyh0eXBlLCBtX2lkZW50aWZpZXIsIG5hbWVz
cGFjZUlkZW50aWZpZXIsIG9yaWdpbiksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYzo6UmVwbHkocmVtb3RlQXJlYUlkZW50aWZpZXIsIGl0
ZW1zLCBtZXNzYWdlSWRlbnRpZmllciksIDApOworICAgICAgICBkaWRDb25uZWN0KHJlbW90ZUFy
ZWFJZGVudGlmaWVyLCBXVEZNb3ZlKGl0ZW1zKSwgbWVzc2FnZUlkZW50aWZpZXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrQ29ubmVjdGlvbiA9IFdlYWtQdHIgeyBp
cGNDb25uZWN0aW9uIH1dKGF1dG8gcmVtb3RlQXJlYUlkZW50aWZpZXIsIGF1dG8gaXRlbXMsIGF1
dG8gbWVzc2FnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm4gZGlkQ29ubmVjdChyZW1vdGVBcmVhSWRlbnRpZmllciwgV1RGTW92
ZShpdGVtcyksIG1lc3NhZ2VJZGVudGlmaWVyKTsKKworICAgICAgICBpZiAod2Vha0Nvbm5lY3Rp
b24gJiYgcmVtb3RlQXJlYUlkZW50aWZpZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgd2Vha0Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlzY29ubmVj
dEZyb21TdG9yYWdlQXJlYShyZW1vdGVBcmVhSWRlbnRpZmllciksIDApOworICAgIH07CisKKyAg
ICBpcGNDb25uZWN0aW9uLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9yYWdlQXJlYSh0eXBlLCBtX2lkZW50aWZpZXIsIG5hbWVz
cGFjZUlkZW50aWZpZXIsIG9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdFN5bmMoKQoreworICAgIGlmIChtX3JlbW90
ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kQ29ubmVjdE1lc3Nh
Z2UoU2VuZE1vZGU6OlN5bmMpOworfQorCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0KCkK
IHsKLSAgICBpZiAobV9tYXBJRCkKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIG1hcElEOwotICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6TG9jYWw6Ci0gICAgY2FzZSBT
dG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6Ci0gICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiog
dG9wTGV2ZWxPcmlnaW4gPSBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEobV9uYW1lc3BhY2Uuc3RvcmFnZU5h
bWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRh
dGEoKSksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1RyYW5zaWVu
dExvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhOjpSZXBseShtYXBJRCksIDApOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uOgotICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgp
LCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7Ci0gICAg
fQorICAgIHNlbmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZTo6QXN5bmMpOworfQogCi0gICAgaWYg
KG1hcElELmlzVmFsaWQoKSkgewotICAgICAgICBtX21hcElEID0gbWFwSUQ7Ci0gICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwotICAg
IH0KK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpZENvbm5lY3QoU3RvcmFnZUFyZWFJZGVudGlmaWVy
IHJlbW90ZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmIGl0ZW1zLCB1
aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKK3sKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIg
PCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOworICAg
IGlmICghcmVtb3RlQXJlYUlkZW50aWZpZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3JlbW90ZUFyZWFJZGVudGlmaWVyID0gcmVtb3RlQXJlYUlkZW50aWZpZXI7CisgICAg
bV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VNYXA+KG1fcXVvdGFJbkJ5dGVzKTsKKyAgICBtX21h
cC0+aW1wb3J0SXRlbXMoV1RGTW92ZShpdGVtcykpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFw
OjpkaXNjb25uZWN0KCkKIHsKLSAgICBpZiAoIW1fbWFwSUQpCisgICAgaWYgKCFtX3JlbW90ZUFy
ZWFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKICAgICByZXNldFZhbHVlcygpOwotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7
CiAKICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKLSAgICAgICAg
bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKCptX21hcElEKSwg
MCk7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJl
YSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciksIDApOwogCi0gICAgbV9tYXBJRCA9IHsgfTsKKyAg
ICBtX3JlbW90ZUFyZWFJZGVudGlmaWVyID0geyB9OworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdl
SWRlbnRpZmllciA9IDA7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmluY3JlbWVudFVzZUNv
dW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYU1hcC5oCmluZGV4IDA2ZTYzNTZjYjEzMzkyNjZiYTM0NTQ1OTYyNTM4MDQ2N2I1ODBi
MTcuLmM2MjcxZDlmNzllY2JhYzNlNGY4ZjhiODdmODdjYzA0ZWQzYmY4MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJl
YS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC02Niw4ICs2Nyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQotICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fbWFwSUQ7IH0KKyAgICBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjb25u
ZWN0KCk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKICAgICB2b2lkIGluY3JlbWVudFVzZUNv
dW50KCk7CkBAIC03OCw4ICs4MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVJdGVt
KHVpbnQ2NF90IG1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGRpZENsZWFy
KHVpbnQ2NF90IG1hcFNlZWQpOwogCi0gICAgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25z
dCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiBzb3VyY2VTdG9yYWdl
QXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgY2xl
YXJDYWNoZSgpOworICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291cmNlU3RvcmFnZUFyZWFJRCwgY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3
VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cik7CisgICAgdm9pZCBjbGVhckNhY2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKIAog
ICAgIHZvaWQgcmVzZXRWYWx1ZXMoKTsKICAgICBXZWJDb3JlOjpTdG9yYWdlTWFwJiBlbnN1cmVN
YXAoKTsKQEAgLTkwLDEyICs5MiwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hTZXNz
aW9uU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRp
Zmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgZGlz
cGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1w
bElkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAotICAg
IHZvaWQgY29ubmVjdCgpOworICAgIGVudW0gY2xhc3MgU2VuZE1vZGUgOiBib29sIHsgQXN5bmMs
IFN5bmMgfTsKKyAgICB2b2lkIHNlbmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZSk7CisgICAgdm9p
ZCBjb25uZWN0U3luYygpOworICAgIHZvaWQgZGlkQ29ubmVjdChTdG9yYWdlQXJlYUlkZW50aWZp
ZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVy
KTsKIAorICAgIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgdWlu
dDY0X3QgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyIHsgMCB9OwogICAgIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsJiBtX25hbWVzcGFjZTsKICAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlN0b3Jh
Z2VNYXA+IG1fbWFwOwotICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBt
X21hcElEOworICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX3JlbW90
ZUFyZWFJZGVudGlmaWVyOwogICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nVmFs
dWVDaGFuZ2VzOwogICAgIHVpbnQ2NF90IG1fY3VycmVudFNlZWQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9xdW90YUluQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCmluZGV4IDJkMWE4
MTNmY2I4NzU3YjE4NDI3NjI5MzgwNjk3ZmM3YmU5YmE5YjUuLjZkZWU4ZThlMzVhYjViNjg4NjZm
MjIwMGE3MDZhODI5MzdmZGJjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCkBAIC0y
NSw2ICsyNSw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VBcmVhTWFwIE5vdFJlZkNvdW50ZWQgewog
ICAgIERpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXkpCiAg
ICAgRGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpCiAKLSAgICBEaXNwYXRjaFN0b3Jh
Z2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4g
c3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXksIFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5nIG5l
d1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKQotICAgIENsZWFyQ2FjaGUoKQorICAgIERpc3BhdGNo
U3RvcmFnZUV2ZW50KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyPiBzdG9yYWdlQXJlYUltcGxJRCwgU3RyaW5nIGtleSwgU3RyaW5nIG9sZFZhbHVlLCBTdHJp
bmcgbmV3VmFsdWUsIFN0cmluZyB1cmxTdHJpbmcsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVy
KQorICAgIENsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MjIxMDg5NjhmMzU5OGZkMjAxYWFhY2Fm
MGVjMDM3NWM0NmVmOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRp
Zmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449344</attachid>
            <date>2022-01-17 12:05:23 -0800</date>
            <delta_ts>2022-01-17 13:06:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220117120522.patch</filename>
            <type>text/plain</type>
            <size>61289</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzZhMDU0MjYxZjMwMGM2
ZTg4MTZkY2M2ZTA5NzQyZTFmZTFjZjMwNC4uNWU3YjhlN2E1MmRiZGM2Yzk1YTEyMzhjMDIxZTY5
OTNiYmUwYTk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVthMTF5XSBTdG9wIHVzaW5nIGlzb2xhdGVkIHRyZWUgZm9yIHRoZSBBVFNQSSBpbXBsZW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBiZGRlMWI2NGFkZGY0MWI4YTQzOTU0Mjk0MTJmNjU3ZmNjZDdlOTI2
Li5jNmNjOTY1ODMzYjY5NTExY2FiOWQwNGNlODAxYzQ2YzQ2OWIyMzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDkxIEBACisyMDIyLTAxLTE3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdlIHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0b3JhZ2VBcmVhTWFwIGlu
IHdlYiBwcm9jZXNzIG5lZWRzIHRvIHN5bmMgd2l0aCBhIHJlbW90ZSBTdG9yYWdlQXJlYSBpbiBu
ZXR3b3JrIHByb2Nlc3MgYmVmb3JlIGl0IHBlcmZvcm1zIGFueQorICAgICAgICBXZWIgU3RvcmFn
ZSBvcGVyYXRpb24uIFRvIGNvbm5lY3QgdG8gcmVtb3RlIFN0b3JhZ2VBcmVhLCBTdG9yYWdlQXJl
YU1hcCBjdXJyZW50bHkgc2VuZHMgb3V0IHR3byBzeW5jIG1lc3NhZ2VzOgorICAgICAgICAxLiBD
b25uZWN0VG8qU3RvcmFnZUFyZWE6IGZvciBnZXR0aW5nIHRoZSByZW1vdGUgU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyCisgICAgICAgIDIuIGdldFZhbHVlczogZm9yIGdldHRpbmcgdGhlIGNvbnRlbnQg
b2YgU3RvcmFnZUFyZWEKKyAgICAgICAgV2UgY2FuIG1lcmdlIHRoZXNlIHR3byBtZXNzYWdlcyBp
bnRvIG9uZSBtZXNzYWdlOiBDb25uZWN0VG9TdG9yYWdlQXJlYVN5bmMsIGFuZCByZXR1cm4gYm90
aCByZW1vdGUgCisgICAgICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBhbmQgY29udGVudCBpbiBp
dHMgcmVwbHkuIFRoaXMgd2F5LCB3ZWIgcHJvY2VzcyB3aWxsIG5vdCBiZSBibG9ja2VkIHR3aWNl
LgorCisgICAgICAgIFRvIHJlZHVjZSB0aGUgd2FpdCB0aW1lIGZvciBjb25uZWN0aW5nIHRvIGEg
bG9jYWwgU3RvcmFnZUFyZWEsIHdlIHdvdWxkIHByZXdhcm0gTG9jYWxTdG9yYWdlIGJ5IGNyZWF0
aW5nIGl0cyAKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgYWhlYWQgYW5kIG1ha2luZyBpdCBjb25u
ZWN0ZWQgKHIyNDc1NTUpLCBidXQgd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCBTdG9yYWdlQXJlYU1h
cCB0byBiZSByZWFkeSAKKyAgICAgICAgZm9yIG9wZXJhdGlvbiBhdCB0aGlzIHRpbWUuIFRoZXJl
Zm9yZSwgYSBuZXcgYXN5bmMgbWVzc2FnZSBDb25uZWN0VG9TdG9yYWdlQXJlYSBpcyBhZGRlZCB0
byBiZSB1c2VkIGZvciAKKyAgICAgICAgcHJld2FybWluZy4KKworICAgICAgICBJZiBMb2NhbFN0
b3JhZ2UgaXMgdXNlZCBpbW1lZGlhdGVseSBhZnRlciBwcmV3YXJtaW5nLCBhIFN0b3JhZ2VBcmVh
TWFwIG1heSBzZW5kIENvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyBiZWZvcmUgCisgICAgICAgIHJl
Y2VpdmluZyB0aGUgcmVwbHkgb2YgQ29ubmVjdFRvU3RvcmFnZUFyZWEuIEluIHRoaXMgY2FzZSwg
U3RvcmFnZUFyZWFNYXAgd291bGQgaGFuZGxlIENvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyAKKyAg
ICAgICAgcmVwbHkgYmVmb3JlIENvbm5lY3RUb1N0b3JhZ2VBcmVhIHJlcGx5IChkdWUgdG8gdGhl
IHByaW9yaXR5IG9mIHN5bmMgbWVzc2FnZSksIGFuZCBhbHNvIGJlZm9yZSBvdGhlciBhc3luYyAK
KyAgICAgICAgbWVzc2FnZXMgKERpc3BhdGNoU3RvcmFnZUV2ZW50IC8gQ2xlYXJDYWNoZSkgdGhh
dCBhcmUgc2VudCBmcm9tIG5ldHdvcmsgcHJvY2VzcyBlYXJsaWVyIGJlZm9yZSB0aGUgc3luYyBy
ZXBseS4KKyAgICAgICAgVG8gc29sdmUgdGhpcywgd2UgdXNlIGEgbWVzc2FnZSBpZGVudGlmaWVy
IHRvIGluZGljYXRlIHRoZSBvcmRlciBvZiBtZXNzYWdlcyBzZW50IGZyb20gbmV0d29yayBwcm9j
ZXNzLCBzbworICAgICAgICBTdG9yYWdlQXJlYU1hcCBjYW4gaWdub3JlIHByZXZpb3VzIG1lc3Nh
Z2VzIHdoZW4gaXQgaXMgYWxyZWFkeSBzeW5jZWQgd2l0aCBhIG1vcmUgcmVjZW50IHZlcnNpb24g
b2YgU3RvcmFnZUFyZWEuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OmNsZWFyKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzIGNvbnN0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VB
cmVhKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJh
bnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYVN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0VmFsdWVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFnZUFyZWFCYXNlKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZUFyZWFCYXNlOjphZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhQmFzZTo6bm90aWZ5TGlzdGVuZXJzQWJvdXRDbGVhcik6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VBcmVhQmFzZTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmg6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJk
X2RlY2xhcmVkKToKKyAgICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpy
ZWdpc3RlclN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dW5y
ZWdpc3RlclN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c3Rv
cmFnZUFyZWFNYXAgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0pOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYUltcGw6OmluY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpkZWNyZW1lbnRBY2Nlc3NDb3VudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRs
ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcCk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjp+U3RvcmFnZUFyZWFNYXApOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFN
YXA6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmVuc3VyZU1hcCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnNlbmRDb25uZWN0TWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0U3luYyk6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VBcmVhTWFwOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6
OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzY29ubmVj
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIuaDogQWRkZWQuCisKIDIwMjItMDEtMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBGcmVxdWVudCBHUFUgcHJvY2VzcyBqZXRzYW1zIGR1ZSB0byBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgbm90IGNsYWltaW5nIG93bmVyc2hpcCBvZiBTaGFy
ZWRNZW1vcnkgYnVmZmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDYxZWI4YTQx
YzE4OTJmMjAwYzU4NTgzYTY5N2VkMjU4OGY2OWNmNjkuLjM1NTNhOWY2NzBhZGM1MjZhM2ViNDky
OTA2MWM1Y2NhZDgxNTM1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTQxMyw5
ICs0MTMsNiBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlmTmVjZXNzYXJ5
KCkKICAgICBpZiAoIXBhZ2UgfHwgcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFwYWdlLT5tYWluRnJhbWUoKS5tYXlQcmV3YXJtTG9jYWxT
dG9yYWdlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIFRoaXMgZWFnZXJseSBjb25zdHJ1
Y3RzIHRoZSBTdG9yYWdlQXJlYSwgd2hpY2ggd2lsbCBsb2FkIGl0ZW1zIGZyb20gZGlzay4KICAg
ICBhdXRvIGxvY2FsU3RvcmFnZVJlc3VsdCA9IHRoaXMtPmxvY2FsU3RvcmFnZSgpOwogICAgIGlm
IChsb2NhbFN0b3JhZ2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC00MjUsNyArNDIyLDcgQEAg
dm9pZCBET01XaW5kb3c6OnByZXdhcm1Mb2NhbFN0b3JhZ2VJZk5lY2Vzc2FyeSgpCiAgICAgaWYg
KCFsb2NhbFN0b3JhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPm1haW5GcmFtZSgp
LmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UoKTsKKyAgICBsb2NhbFN0b3JhZ2UtPmFyZWEoKS5wcmV3
YXJtKCk7CiB9CiAKIERPTVdpbmRvdzo6fkRPTVdpbmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmlu
ZGV4IDg2ZjlhN2JlM2ViYTBkYmYyYjI3NWM3NTFjYzg0M2RkYWE3NGE1YzEuLmE0N2VhMGQ4NDQw
MDU4MGNlYmUxMjFjODllYmMwZjg3NzI0N2ZjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0x
MDU3LDE5ICsxMDU3LDYgQEAgdm9pZCBGcmFtZTo6ZHJvcENoaWxkcmVuKCkKICAgICAgICAgdHJl
ZSgpLnJlbW92ZUNoaWxkKCpjaGlsZCk7CiB9CiAKLXZvaWQgRnJhbWU6OmRpZFByZXdhcm1Mb2Nh
bFN0b3JhZ2UoKQotewotICAgIEFTU0VSVChpc01haW5GcmFtZSgpKTsKLSAgICBBU1NFUlQobV9s
b2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQgPCBtYXhsb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291
bnQpOwotICAgICsrbV9sb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQ7Ci19Ci0KLWJvb2wgRnJh
bWU6Om1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSBjb25zdAotewotICAgIEFTU0VSVChpc01haW5G
cmFtZSgpKTsKLSAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQgPCBtYXhs
b2NhbFN0b3JhZ2VQcmV3YXJtaW5nQ291bnQ7Ci19Ci0KIEZsb2F0U2l6ZSBGcmFtZTo6c2NyZWVu
U2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX292ZXJyaWRlU2NyZWVuU2l6ZS5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKaW5kZXggNTM2NDRlYjE5NWUxN2NkMmZkN2ZjNDFiMTQyYWQxYjc2ZTRi
NmNjZC4uZTA0Yzk0NDFlMzEwODA3M2FkNTg5YmQ4ZThmYTAwYmRkMzM5NjIzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaApAQCAtMjkxLDkgKzI5MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZUFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAotICAgIHZvaWQgZGlkUHJld2FybUxv
Y2FsU3RvcmFnZSgpOwotICAgIGJvb2wgbWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Owot
CiAgICAgZW51bSBjbGFzcyBJbnZhbGlkYXRlQ29udGVudEV2ZW50UmVnaW9uc1JlYXNvbiB7IExh
eW91dCwgRXZlbnRIYW5kbGVyQ2hhbmdlIH07CiAgICAgdm9pZCBpbnZhbGlkYXRlQ29udGVudEV2
ZW50UmVnaW9uc0lmTmVlZGVkKEludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zUmVhc29uKTsK
IApAQCAtMzYxLDcgKzM1OCw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uYXZpZ2F0aW9u
RGlzYWJsZUNvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fc2VsZk9ubHlSZWZDb3VudCB7IDAg
fTsKICAgICBib29sIG1faGFzSGFkVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKLSAgICB1bnNp
Z25lZCBtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCB7IDAgfTsKIAogICAgIEZsb2F0U2l6
ZSBtX292ZXJyaWRlU2NyZWVuU2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5o
CmluZGV4IDI1MWJkNDI5ZDYyMDYyOTk3ZjcyOGRjMGRjNjYyNWYxNGYxYjVjNzguLjc3NDYxNDBm
Nzg0MDgxYjA3ODZhMTVkNjAxZmVmY2EyYzkxYzEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBp
bmNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nl
c3NDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHByZXdhcm0oKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAppbmRleCAyMjA1ODdlYzg2YmE1
YzUxNzFiNjczYjE3N2E0NjYxYTIyY2YzMTNkLi4wZWQ5YTFiZWEyZGQ3NDdhODJkMzUxZjc0MzI4
ZmVhNmMxMmQyMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oCkBAIC00NCwz
ICs0NCwxNiBAQCBpbmxpbmUgYm9vbCBpc1BlcnNpc3RlbnRMb2NhbFN0b3JhZ2UoU3RvcmFnZVR5
cGUgc3RvcmFnZVR5cGUpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3RvcmFnZVR5
cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpT
dG9yYWdlVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb24sCisgICAg
ICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpMb2NhbCwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFn
ZVR5cGU6OlRyYW5zaWVudExvY2FsCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYS5jcHAKaW5kZXggYzg0ZWFkNDMwYWIxNWQ5NGZkOGVmMjUzM2Q2ZTQ5Mjg3MmI2ZTEy
Yi4uMGM0MWFiOTJlMzFmNDlkNmE1YTk0OWE0MDM3MjhjMmFhOWQwNDBiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEu
Y3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBTdG9yYWdlQXJlYTo6Y2xlYXIoKQogICAgIH0K
IAogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpCi0g
ICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQobGlzdGVuZXJVbmlxdWVJRCwgTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKDApLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKIExvY2FsU3RvcmFnZURhdGFiYXNlJiBTdG9yYWdlQXJlYTo6ZW5zdXJlRGF0YWJhc2Uo
KSBjb25zdApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgU3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZl
bnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgU3RvCiAgICAg
QVNTRVJUKHN0b3JhZ2VBcmVhSW1wbElEKTsKICAgICBmb3IgKGF1dG8mIGxpc3RlbmVyVW5pcXVl
SUQgOiBtX2V2ZW50TGlzdGVuZXJzKSB7CiAgICAgICAgIGF1dG8gb3B0aW9uYWxTdG9yYWdlQXJl
YUltcGxJRCA9IGxpc3RlbmVyVW5pcXVlSUQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHN0ZDo6bWFr
ZV9vcHRpb25hbChzdG9yYWdlQXJlYUltcGxJRCkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFy
ZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQsIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNz
YWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KG9wdGlvbmFsU3RvcmFn
ZUFyZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIDApLCBtX2lk
ZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAK
aW5kZXggY2JkZGQyZTMwNDhkMjg3MGFlMDdhMGFhZGY0ZWQ5N2IzMTA0MzZjOS4uM2NlMGVjODU3
M2Q5OGM5ZDc0OGQ3MDRiMmRjOWRjOGM5MTlkNmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNw
cApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdGlv
bkNsb3NlZEZvclRyYW5zaWVudFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvCiAgICAgbV90cmFu
c2llbnRTdG9yYWdlQXJlYSA9IG51bGxwdHI7CiB9CiAKLVN0b3JhZ2VBcmVhSWRlbnRpZmllciBM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFyZWFJZGVudGlmaWVy
IExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291
cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFJlZjxX
b3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewogICAgIGlmICghbV9sb2NhbFN0b3JhZ2VBcmVhKSB7
CiAgICAgICAgIGlmICghbV9wYXRoLmlzRW1wdHkoKSkKQEAgLTE3NywxMSArMTc3LDExIEBAIFN0
b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjCiAgICAgfQogCiAgICAgQVNTRVJUKG1fcGF0aC5pc0VtcHR5
KCkgfHwgbV9sb2NhbFN0b3JhZ2VBcmVhLT50eXBlKCkgPT0gU3RvcmFnZUFyZWFCYXNlOjpUeXBl
OjpTUUxpdGUpOwotICAgIG1fbG9jYWxTdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlv
bik7CisgICAgbV9sb2NhbFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2VBcmVhLT5pZGVudGlmaWVy
KCk7CiB9CiAKLVN0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25u
ZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQg
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCitTdG9yYWdl
QXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9j
YWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBpZiAoIW1fdHJhbnNpZW50U3RvcmFnZUFyZWEpIHsK
ICAgICAgICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYSA9IG1ha2VVbmlxdWU8TWVtb3J5U3RvcmFn
ZUFyZWE+KG9yaWdpbiwgU3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlVHlwZTo6TG9jYWwpOwpAQCAt
MTg5LDcgKzE4OSw3IEBAIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2Vy
Ojpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQCiAgICAgfQogCiAgICAgQVNT
RVJUKG1fdHJhbnNpZW50U3RvcmFnZUFyZWEtPnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5
cGU6Ok1lbW9yeSk7Ci0gICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29u
bmVjdGlvbik7CisgICAgbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVj
dGlvbiwgc291cmNlSWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1fdHJhbnNpZW50U3RvcmFnZUFy
ZWEtPmlkZW50aWZpZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYTg4ODQyZTI5
NWYyZDkwYThmMGU4YmJhOGVkN2IzZWEyN2Q1OGE4Yi4uY2RjYjY4MTJmOGZlZDY5YmNkYTQ5ZjY5
NDJkNjdjZGEyZDEwZjE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Niw4ICs1Nyw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN5bmNMb2NhbFN0b3JhZ2UoKTsKICAgICB2b2lkIGNvbm5lY3Rp
b25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBSZWY8V29ya1F1ZXVlPiYmKTsKLSAg
ICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
KTsKKyAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOworICAgIFN0b3JhZ2VB
cmVhSWRlbnRpZmllciBjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDkzMDA5ZTI0OWVkMWE0Yzg5N2Nh
OTE5MGMzZjI0ZDVhM2M0NTQ4NWEuLmQ5NzRlNmRiMzU1Mzg3MTQyNWJhZTYyYzA3MjI1NzIxMzJj
NmQ0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9O
ZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02MjUsMjQgKzYyNSwzMyBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJ
ZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50
NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4s
IHRvcE9yaWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1h
bmFnZXIob3JpZ2luKS5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkp
LmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBvcmlnaW4s
IG1fcXVldWUuY29weVJlZigpKSk7Ci19CisgICAgYXV0byBjb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKKyAgICBhdXRvJiBvcmlnaW5TdG9yYWdlTWFuYWdlciA9
IGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKTsKKyAgICBTdG9yYWdlQXJlYUlkZW50
aWZpZXIgcmVzdWx0SWRlbnRpZmllcjsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFdl
YkNvcmU6OlN0b3JhZ2VUeXBlOjpMb2NhbDoKKyAgICAgICAgcmVzdWx0SWRlbnRpZmllciA9IG9y
aWdpblN0b3JhZ2VNYW5hZ2VyLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdp
c3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uSWRlbnRpZmllciwgc291
cmNlSWRlbnRpZmllciwgb3JpZ2luLCBtX3F1ZXVlLmNvcHlSZWYoKSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgorICAgICAg
ICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxTdG9yYWdlTWFu
YWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4pOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpTZXNzaW9uOgor
ICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIuc2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb1Nlc3Npb25TdG9y
YWdlQXJlYShjb25uZWN0aW9uSWRlbnRpZmllciwgc291cmNlSWRlbnRpZmllciwgb3JpZ2luLCBu
YW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
Ojpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHRvcE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3Blbmlu
Z09yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4g
PSB7IHRvcE9yaWdpbiwgb3BlbmluZ09yaWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxv
Y2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2luKS5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0
b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29u
bmVjdGlvbi51bmlxdWVJRCgpLCBvcmlnaW4pKTsKKyAgICBpZiAoYXV0byBzdG9yYWdlQXJlYSA9
IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEocmVzdWx0SWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBzdG9y
YWdlQXJlYS0+YWxsSXRlbXMoKSwgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZp
ZXIoKSk7CisKKyAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIocmVzdWx0SWRlbnRpZmllciwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4geyB9LCBTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNzYWdl
SWRlbnRpZmllcigpKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZp
ZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNv
bm5lY3RUb1N0b3JhZ2VBcmVhU3luYyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYkNv
cmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVu
dGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9y
aWdpbiA9IHsgdG9wT3JpZ2luLCB0b3BPcmlnaW4gfTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihs
b2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikuc2Vzc2lvblN0b3JhZ2VNYW5hZ2VyKCpt
X3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShjb25uZWN0
aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgaWRlbnRpZmllcikpOworICAgIGNvbm5lY3RUb1N0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb24sIHR5cGUsIHNvdXJjZUlkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50
aWZpZXIsIG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6ZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAt
NjY5LDE2ICs2NzgsNiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lYwogICAgIH0KIH0KIAotdm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmdldFZhbHVlcyhTdG9yYWdlQXJlYUlkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotCi0gICAgaWYgKGF1dG8gc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhUmVn
aXN0cnktPmdldFN0b3JhZ2VBcmVhKGlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoc3RvcmFnZUFyZWEtPmFsbEl0ZW1zKCkpOwotICAgIAotICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwotfQotCiB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
c2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1
aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nJiYga2V5LCBTdHJpbmcmJiB2YWx1ZSwgU3Ry
aW5nJiYgdXJsU3RyaW5nKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5oCmluZGV4IGQyMWQ2NTZkM2E2NzI3Yzk4ZDEyYTQxMjM3NWVkMDUy
YTUzYTllOTEuLmExZjMwNzY0NDY3NmU4ZDUzNTY1YmZlYzgzNzk2Nzk2YzM0NmE4NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFn
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJPcmlnaW5T
dG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmln
aW4uaD4KQEAgLTQ0LDYgKzQ1LDcgQEAgY2xhc3MgU2hhcmVkRmlsZUhhbmRsZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IENsaWVudE9yaWdpbjsKK2VudW0gY2xhc3MgU3RvcmFnZVR5
cGUgOiB1aW50OF90OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEwOCwxMiArMTEwLDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRIYW5kbGUoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29y
ZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBib29sPiwgRmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4pPiYmKTsKICAgICAKICAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzIGZvciBXZWJTdG9yYWdlLgotICAgIHZvaWQgY29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7Ci0gICAgdm9pZCBjb25uZWN0VG9UcmFuc2ll
bnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVy
KT4mJik7Ci0gICAgdm9pZCBjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0
aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYp
OworICAgIHZvaWQgY29ubmVjdFRvU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29y
ZTo6U3RvcmFnZVR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiwg
dWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyhJUEM6OkNv
bm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
LCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb21T
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIpOwogICAg
IHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwotICAg
IHZvaWQgZ2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpPiYmKTsKICAgICB2b2lkIHNldEl0
ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyLCB1aW50NjRfdCBzZWVkLCBTdHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVl
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rp
b24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVp
bnQ2NF90IHNlZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdXJsU3RyaW5nKTsKICAgICB2b2lk
IGNsZWFyKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFy
ZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYgdXJsU3RyaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IGE1MTZhZGE5ODMy
ZmRlZjViNjgxNDk0NDIxNWY2ODhmZGE4MWM2MTUuLmZmYzg2ZjlkMDlmZDQ1OTU1MzVmODc1MDUz
OTQ1YTE4YTc3MzFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdl
cy5pbgpAQCAtNDAsMTIgKzQwLDEwIEBACiAgICAgR2V0SGFuZGxlTmFtZXMoV2ViQ29yZTo6Rmls
ZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPFZlY3RvcjxT
dHJpbmc+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAg
ICBHZXRIYW5kbGUoV2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3RyaW5nIG5hbWUpIC0+IChFeHBlY3RlZDxzdGQ6OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3Rl
bUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBXZWJLaXQ6OkZpbGVTeXN0ZW1TdG9yYWdlRXJyb3I+
IHJlc3VsdCkgQXN5bmMgV2FudHNDb25uZWN0aW9uCiAKLSAgICBDb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFj
ZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0
YSkgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9u
b3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIENvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFy
ZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxTZWN1cml0eU9yaWdp
bkRhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5E
YXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKFdl
YktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKFdl
YktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzIFdhbnRz
Q29ubmVjdGlvbgorICAgIENvbm5lY3RUb1N0b3JhZ2VBcmVhKFdlYkNvcmU6OlN0b3JhZ2VUeXBl
IHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRpZmllciwg
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+IChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtcywg
dWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIEFzeW5jIFdhbnRzQ29ubmVjdGlvbgorICAgIENv
bm5lY3RUb1N0b3JhZ2VBcmVhU3luYyhXZWJDb3JlOjpTdG9yYWdlVHlwZSB0eXBlLCBXZWJLaXQ6
OlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3Jh
Z2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIg
aWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMsIHVpbnQ2NF90IG1lc3Nh
Z2VJZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KICAgICBEaXNjb25uZWN0
RnJvbVN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIp
IFdhbnRzQ29ubmVjdGlvbgogICAgIENsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCBXZWJL
aXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHRvU3RvcmFnZU5hbWVzcGFjZUlEKSBXYW50
c0Nvbm5lY3Rpb24KLSAgICBHZXRWYWx1ZXMoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIg
aWRlbnRpZmllcikgLT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlcykgU3luY2hyb25v
dXMKICAgICBTZXRJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB2YWx1ZSwgU3RyaW5nIHVybFN0
cmluZykgV2FudHNDb25uZWN0aW9uCiAgICAgUmVtb3ZlSXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVh
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIg
aW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJp
bmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAgICBDbGVhcihXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZp
ZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcgdXJsU3Ry
aW5nKSBXYW50c0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZDQw
ZTQwYjYxNzNjMjhkNDRjNTdiOGUyMGY3MmJjYjUxMTA0MWRiNS4uYjczNDJlNDBlZjFmNmJiNWNk
YjZmYmZiMmVmMTIzZjlkMDZlOGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIFNlc3Npb25TdG9yYWdlTWFuYWdl
cjo6YWRkU3RvcmFnZUFyZWEoc3RkOjp1bmlxdWVfcHRyPE1lbW8KICAgICByZXR1cm4gaWRlbnRp
ZmllcjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIFNlc3Npb25TdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29u
bmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIpCitTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4s
IFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIpCiB7CiAgICAg
YXV0byBpZGVudGlmaWVyID0gbV9zdG9yYWdlQXJlYXNCeU5hbWVzcGFjZS5nZXQobmFtZXNwYWNl
SWRlbnRpZmllcik7CiAgICAgaWYgKCFpZGVudGlmaWVyLmlzVmFsaWQoKSkgewpAQCAtODQsNyAr
ODQsOCBAQCBTdG9yYWdlQXJlYUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25u
ZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDbwogICAgIGlmICghc3RvcmFnZUFyZWEpCiAg
ICAgICAgIHJldHVybiBTdG9yYWdlQXJlYUlkZW50aWZpZXIgeyB9OwogCi0gICAgc3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24pOworICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5l
cihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIHJldHVybiBpZGVudGlmaWVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggZmMxNzYxYmU5MDBmOGU0ZGE3NzU0
YjAxOGYxZGJlMmUzOGZiN2RmYS4uMGY3YmU0YzVlNWNjODhhYzM4MjljMTkyNTAxZmNjNjgyNjI1
ZTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nl
c3Npb25TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJEYXRhKCk7CiAgICAgdm9pZCBjb25uZWN0aW9u
Q2xvc2VkKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwogCi0gICAgU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIGNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
Zmllcik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Nlc3Npb25TdG9yYWdl
QXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCwgU3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKICAgICB2b2lkIGNsb25lU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIs
IFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcAppbmRleCBlNDRi
YTAxMzVhNjQzYzAxYTViOTAwYzc2MzFiYTE0OTk4ZjhmM2MxLi41Nzk3ZTljNTQwMjFkMmE4ZDgw
ZjI4MjFlMWU1MjFhMzA4ZDJiM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmNwcApAQCAtMzAsOCArMzAsMTQg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VpbnQ2NF90IFN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+
IGN1cnJlbklkZW50aWZpZXIoMCk7CisgICAgcmV0dXJuICsrY3VycmVuSWRlbnRpZmllcjsKK30K
KwogU3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlQXJlYUJhc2UodW5zaWduZWQgcXVvdGEsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQotICAgIDogbV9pZGVudGlmaWVyKFN0b3Jh
Z2VBcmVhSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICA6IG1faWRlbnRpZmllcihTdG9yYWdl
QXJlYUlkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpKQogICAgICwgbV9xdW90YShxdW90
YSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKIHsKQEAgLTM5LDExICs0NSwxMSBAQCBTdG9yYWdl
QXJlYUJhc2U6OlN0b3JhZ2VBcmVhQmFzZSh1bnNpZ25lZCBxdW90YSwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcgogCiBTdG9yYWdlQXJlYUJhc2U6On5TdG9yYWdlQXJlYUJhc2UoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgU3RvcmFnZUFyZWFCYXNlOjphZGRMaXN0ZW5lcihJUEM6OkNvbm5l
Y3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6YWRkTGlz
dGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoIW1fbGlzdGVuZXJzLmNvbnRh
aW5zKGNvbm5lY3Rpb24pKTsKKyAgICBBU1NFUlQoIW1fbGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5l
Y3Rpb24pIHx8IG1fbGlzdGVuZXJzLmdldChjb25uZWN0aW9uKSA9PSBpZGVudGlmaWVyKTsKIAot
ICAgIG1fbGlzdGVuZXJzLmFkZChjb25uZWN0aW9uKTsKKyAgICBtX2xpc3RlbmVycy5zZXQoY29u
bmVjdGlvbiwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFCYXNlOjpyZW1vdmVM
aXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24pCkBAIC01OCwxOSAr
NjQsMTkgQEAgYm9vbCBTdG9yYWdlQXJlYUJhc2U6Omhhc0xpc3RlbmVycygpIGNvbnN0CiAKIHZv
aWQgU3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5lcnNBYm91dENsZWFyKCkKIHsKLSAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX2xpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNo
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgZm9yIChhdXRvJiBbY29ubmVjdGlv
biwgaWRlbnRpZmllcl0gOiBtX2xpc3RlbmVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZShTdG9y
YWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKSwgaWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29u
bmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJbXBsSWRlbnRp
ZmllciBzb3VyY2VJbXBsSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKSBjb25zdAogewogICAgIEFTU0VSVChzb3VyY2VJbXBsSWRlbnRpZmllcik7CiAKLSAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX2xpc3RlbmVycykgeworICAgIGZvciAoYXV0byYgW2Nv
bm5lY3Rpb24sIGlkZW50aWZpZXJdIDogbV9saXN0ZW5lcnMpIHsKICAgICAgICAgc3RkOjpvcHRp
b25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBpbXBsSWRlbnRpZmllcjsKICAgICAgICAg
aWYgKGNvbm5lY3Rpb24gPT0gc291cmNlQ29ubmVjdGlvbikKICAgICAgICAgICAgIGltcGxJZGVu
dGlmaWVyID0gc291cmNlSW1wbElkZW50aWZpZXI7Ci0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFn
ZUV2ZW50KGltcGxJZGVudGlmaWVyLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5n
KSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNl
bmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VF
dmVudChpbXBsSWRlbnRpZmllciwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywg
U3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIudG9V
SW50NjQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKaW5kZXggZWQzZWQxNDIwNmUxNzVkY2Fj
YzhjMWY5OTQ5MDc1MDU0NWUzNGU5OC4uZWZjOGZiOTY0ODkxMDdjODhlMzNjZDEyM2Y2MDlhMzZm
MjFhZWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L1N0b3JhZ2VBcmVhQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9TdG9yYWdlQXJlYUJhc2UuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCkBAIC00Nyw2ICs0OCw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhQmFzZSA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdG9yYWdlQXJlYUJhc2U+IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTdG9yYWdlQXJlYUJhc2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgorICAgIHN0YXRpYyB1aW50NjRfdCBuZXh0TWVzc2FnZUlkZW50aWZpZXIoKTsK
ICAgICB2aXJ0dWFsIH5TdG9yYWdlQXJlYUJhc2UoKTsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6
IGJvb2wgeyBTUUxpdGUsIE1lbW9yeSB9OwpAQCAtNTksNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW47IH0KICAgICB1bnNpZ25lZCBxdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVv
dGE7IH0KLSAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwor
ICAgIHZvaWQgYWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQpOwogICAgIGJvb2wgaGFzTGlzdGVuZXJzKCkgY29uc3Q7CiAgICAgdm9pZCBu
b3RpZnlMaXN0ZW5lcnNBYm91dENsZWFyKCk7CkBAIC03Nyw3ICs3OSw3IEBAIHByaXZhdGU6CiAg
ICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICB1bnNpZ25lZCBtX3F1
b3RhOwogICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKLSAgICBIYXNoU2V0PElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+IG1fbGlzdGVuZXJzOworICAgIEhhc2hNYXA8SVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyPiBtX2xpc3RlbmVy
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggOGI1MjFmNzcwMTU0OGIxYWY4YjQ0YjM1Mzc0NjM3NjljOTBk
Zjk4Mi4uYzFmNDNhMThjNzJiZmIyNWZmOGNjNjMxNGYxYzc4MzcxYTZiOTIwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMDUsNiArMzA1LDcgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNv
cmU6OlNsZWVwRGlzYWJsZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNvdXJjZUJ1
ZmZlckFwcGVuZE1vZGUnLAogICAgICAgICAnV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZScs
CiAgICAgICAgICdXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2Nr
ZXRJZGVudGlmaWVyJywKQEAgLTM0Nyw2ICszNDgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3Rf
YmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcicsCisgICAg
ICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6VGFwSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlRleHRDaGVja2VyUmVxdWVzdElEJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1MjYzMGEz
MDMyMTA3NDhiODhhMDE5YTEzYzQwYTBkYWYyMDNkMTQuLjU0YTRiMjEwMWEzNTdhZTE0OThlOGU4
Njc0MWU4NzYwNTIyNWExMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTQ1Nyw2ICsxNDU3LDcgQEAKIAkJOTNBQjlCNEUyNTc1NjdF
MjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQjlCNDIy
NTc0OTI4QzAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZS5oICovOyB9OwogCQk5M0FCOUI1NTI1NzVBMjc2MDA5OEIxMEUgLyogU3BlZWNoUmVjb2du
aXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI0RjI1NzU4OTEx
MDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTkzQUI5QjU2MjU3NUEyOEIwMDk4QjEwRSAvKiBT
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQUI5QjUxMjU3NTg5MTEwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNBRUMx
NjEyNzhGOENEMzAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRUMxNjAyNzhGOENEMjAw
NjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oICovOyB9OwogCQk5M0IwQTY3NTI2
RDVBRENGMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjBBNjc0MjZENUE3MkUwMEFBMjFF
NCAvKiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oICovOyB9OwogCQk5M0IyNjE0RDIyN0QxNDlF
MDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFu
YWdlci5oICovOyB9OwogCQk5M0IyNjE0RTIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdl
RGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovOyB9
OwpAQCAtNTMwNSw2ICs1MzA2LDcgQEAKIAkJOTNBQjlCNTIyNTc1ODkxMjAwOThCMTBFIC8qIFNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlc1Jl
cGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FCOUI1MzI1NzU4OTEyMDA5OEIxMEUgLyogU3Bl
ZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0FCOUI1NDI1NzU4OTEyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25S
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0FFQzE2MDI3OEY4Q0Qy
MDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0IwQTY3MzI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lv
bkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UGVybWlzc2lvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0IwQTY3NDI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2IC8q
IExvY2FsU3RvcmFnZURhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExvY2FsU3RvcmFnZURhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MDYxLDYgKzcwNjMsNyBAQAogCQkJCTFBQ0VDRDIyMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdl
QXJlYU1hcC5jcHAgKi8sCiAJCQkJMUFDRUNEMjMxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VB
cmVhTWFwLmggKi8sCiAJCQkJMUEzMzRERUExNkRFOEI2ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVh
TWFwLm1lc3NhZ2VzLmluICovLAorCQkJCTkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXIuaCAqLywKIAkJCQk0NjVGNEUwNTIzMEIyRTdDMDAzQ0VEQjcg
LyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCAqLywKIAkJCQkxQTE3NjM1NDE2QjFENUQw
MDBEODhGRDYgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwICovLAogCQkJCTFBMTc2MzU1MTZC
MUQ1RDAwMEQ4OEZENiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5oICovLApAQCAtMTMyNjMsNiAr
MTMyNjYsNyBAQAogCQkJCTkzRTc5OURDMjc2MTIxMDgwMDc0MDA4QSAvKiBTdG9yYWdlQXJlYUJh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDMzMDZGMTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9y
YWdlQXJlYUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0VDRDI1MTcxNjJEQjEwMDFGQzlF
RiAvKiBTdG9yYWdlQXJlYU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNBRUMxNjEyNzhGOENE
MzAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEzMzRERUUxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRTc5OUM3Mjc2MDI3NDYwMDc0MDA4QSAvKiBTdG9yYWdlQXJl
YVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYg
LyogU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggMDIyNzBhNTNhZjliYThiZjgwZDdjM2IzZGNkYzhjZWI1NjUxNzZlMy4uOGQzYjU3
YmQxOGRjMmUwNTM4NGNjZjA4ZDdkOWM4OTA3Y2QwNGRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c3RvcmFnZUFyZWFNYXAobWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFJZGVudGlmaWVy
VHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgaWYgKGF1dG8gc3RvcmFn
ZUFyZWFNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdG9yYWdlQXJlYU1hcChtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxTdG9yYWdlQXJlYU1hcElkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKQogICAgICAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGY4MTY3NzVhNzk5NGFiMjJjYzJm
YmMyNjAwMGU5ZDIyZjJmYzJjNmEuLjI0NTU5ODFiMDM2MTY5MmE1MjY1NDIwZmVlZGM0YjRmMmQ0
MGRhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExODks
OCArMTE4OSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xv
c2VkKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjCiAgICAgQVNTRVJUKG1fbmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uID09IGNvbm5lY3Rpb24pOwogCi0gICAgZm9yIChhdXRvKiBz
dG9yYWdlQXJlYU1hcCA6IGNvcHlUb1ZlY3RvcihtX3N0b3JhZ2VBcmVhTWFwcy52YWx1ZXMoKSkp
Ci0gICAgICAgIHN0b3JhZ2VBcmVhTWFwLT5kaXNjb25uZWN0KCk7CisgICAgZm9yIChhdXRvIGtl
eSA6IGNvcHlUb1ZlY3RvcihtX3N0b3JhZ2VBcmVhTWFwcy5rZXlzKCkpKQorICAgICAgICBtX3N0
b3JhZ2VBcmVhTWFwcy5nZXQoa2V5KS0+ZGlzY29ubmVjdCgpOwogCiAgICAgZm9yIChhdXRvJiBw
YWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8gaWRiQ29ubmVjdGlvbiA9
IHBhZ2UtPmNvcmVQYWdlKCktPm9wdGlvbmFsSURCQ29ubmVjdGlvbigpOwpAQCAtMTY5NywyMCAr
MTY5NywyMCBAQCB2b2lkIFdlYlByb2Nlc3M6Om5vblZpc2libGVQcm9jZXNzTWVtb3J5Q2xlYW51
cFRpbWVyRmlyZWQoKQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAo
U3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogewotICAgIEFTU0VSVChzdG9yYWdlQXJl
YU1hcC5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVCghbV9zdG9yYWdlQXJlYU1hcHMuY29udGFp
bnMoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkpOwotICAgIG1fc3RvcmFnZUFyZWFNYXBz
LnNldCgqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpLCAmc3RvcmFnZUFyZWFNYXApOworICAg
IGF1dG8gaWRlbnRpZmllciA9IHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKTsKKyAgICBBU1NF
UlQoIW1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3N0b3Jh
Z2VBcmVhTWFwcy5hZGQoaWRlbnRpZmllciwgc3RvcmFnZUFyZWFNYXApOwogfQogCiB2b2lkIFdl
YlByb2Nlc3M6OnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFn
ZUFyZWFNYXApCiB7Ci0gICAgQVNTRVJUKHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Ci0g
ICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKCpzdG9yYWdlQXJlYU1hcC5pZGVu
dGlmaWVyKCkpKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuZ2V0KCpzdG9yYWdlQXJl
YU1hcC5pZGVudGlmaWVyKCkpID09ICZzdG9yYWdlQXJlYU1hcCk7Ci0gICAgbV9zdG9yYWdlQXJl
YU1hcHMucmVtb3ZlKCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpOworICAgIGF1dG8gaWRl
bnRpZmllciA9IHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV9zdG9y
YWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX3N0b3JhZ2VB
cmVhTWFwcy5nZXQoaWRlbnRpZmllcikuZ2V0KCkgPT0gJnN0b3JhZ2VBcmVhTWFwKTsKKyAgICBt
X3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKLVN0b3JhZ2VBcmVhTWFw
KiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRp
ZmllcikgY29uc3QKK1dlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IFdlYlByb2Nlc3M6OnN0b3JhZ2VB
cmVhTWFwKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAogewogICAg
IHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA0NjlhMGE1ZTE5MWRjZjQ3MDEzMjcxNmI2NzJl
ZDFjMmU2MWYzMTE3Li5lODdkNzMzZDc2YWRlZTBjYjhiYWRiODdmNWNhNzU1ZGE2MmQ3MDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRl
eHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIuaCIKQEAgLTI4NCw3ICsyODQs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFy
ZWFNYXAmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1h
cCYpOwotICAgIFN0b3JhZ2VBcmVhTWFwKiBzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYUlkZW50
aWZpZXIpIGNvbnN0OworICAgIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IHN0b3JhZ2VBcmVhTWFw
KFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcikgY29uc3Q7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNv
bnN0OwpAQCAtNzQyLDcgKzc0Miw3IEBAIHByaXZhdGU6CiAgICAgSGFzaENvdW50ZWRTZXQ8V2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IG1fc3dSZWdpc3RyYXRp
b25Db3VudHM7CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBT
dG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBzOworICAgIEhhc2hNYXA8U3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLCBXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPj4gbV9zdG9yYWdlQXJlYU1h
cHM7CiAgICAgCiAgICAgLy8gUHJld2FybWVkIFdlYlByb2Nlc3NlcyBkbyBub3QgaGF2ZSBhbiBh
c3NvY2lhdGVkIHNlc3Npb25JRCB5ZXQsIHdoaWNoIGlzIHdoeSB0aGlzIGlzIGFuIG9wdGlvbmFs
LgogICAgIC8vIEJ5IHRoZSB0aW1lIHRoZSBXZWJQcm9jZXNzIGdldHMgYSBXZWJQYWdlLCBpdCBp
cyBndWFyYW50ZWVkIHRvIGhhdmUgYSBzZXNzaW9uSUQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCBiMTJj
NThjMGFhZDY3ZTk5NTc3MDZlMjllNmRlNjU2OWVmZTY0ODQ2Li4xZjliNDJjYjEyN2Q2ZGMwMjhh
NjgwNTllMjcxMDFmYzc5Njk0NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTExMiwyMCArMTEyLDEw
IEBAIHNpemVfdCBTdG9yYWdlQXJlYUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKQogICAg
IHJldHVybiAwOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291
bnQoKQordm9pZCBTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0oKQogewotICAgIC8vIFN0b3JhZ2Ug
YWNjZXNzIGlzIGhhbmRsZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3Ro
aW5nIHRvIGRvIGhlcmUuCi19Ci0KLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjpkZWNyZW1lbnRBY2Nl
c3NDb3VudCgpCi17Ci0gICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0
d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBT
dG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUoKQotewotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAobV9zdG9y
YWdlQXJlYU1hcCkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcC0+Y29ubmVjdCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggNzllMTRiOTFmOGFjNmQ4MmZlNzky
YWMwNmQzOTRlZDc2NTg0MmE2Mi4uYTM1ZDY2NzkyNTA1ZjBjMDNlNTkwODcwMDFlMGNhNGZkYTdh
NmNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmgKQEAgLTYxLDkgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNv
bnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpTdG9yYWdl
VHlwZSBzdG9yYWdlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBtZW1vcnlCeXRl
c1VzZWRCeUNhY2hlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByZXdhcm0o
KSBmaW5hbDsKIAogICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3Rv
cmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMmNmN2E2ZDRi
NjAwNWMxZDdlYzI1NmJkNjM4ODc2Mjk0ZTllNGNmMi4uZGY0YzI2ZjJhZmYzMjkxZDkxOWRlZDUz
ZGQ3NjI3YjU4ZjI4OTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNTEsMTcgKzUxLDE5IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFN0b3JhZ2VBcmVhTWFw
OjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCYgc3RvcmFnZU5hbWVzcGFjZSwg
UmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQotICAgIDogbV9u
YW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZSkKKyAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX25hbWVzcGFjZShzdG9yYWdlTmFt
ZXNwYWNlKQogICAgICwgbV9zZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkK
ICAgICAsIG1fcXVvdGFJbkJ5dGVzKHN0b3JhZ2VOYW1lc3BhY2UucXVvdGFJbkJ5dGVzKCkpCiAg
ICAgLCBtX3R5cGUoc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdlVHlwZSgpKQogewotICAgIGNvbm5l
Y3QoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFw
KCp0aGlzKTsKIH0KIAogU3RvcmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1hcCgpCiB7CiAgICAg
ZGlzY29ubmVjdCgpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9y
YWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5ndGgo
KQpAQCAtOTUsOCArOTcsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtKEZyYW1lKiBz
b3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhLCBjbwogCiAgICAgbV9wZW5k
aW5nVmFsdWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgaWYgKG1fbWFwSUQpCi0gICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0o
Km1fbWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2
YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAg
aWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0oKm1fcmVtb3RlQXJlYUlkZW50
aWZpZXIsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1
ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CiAgICAgZWxz
ZQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU3RvcmFnZUFyZWFNYXA6OnNl
dEl0ZW0gZmFpbGVkIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwogfQpAQCAt
MTE0LDIzICsxMTYsMjIgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3Jl
OjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVuZGlu
Z1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIGlmIChtX21hcElEKQotICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJdGVt
KCptX21hcElELCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQsIGtleSwg
c291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1f
cmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbW92ZUl0ZW0oKm1fcmVtb3RlQXJlYUlkZW50aWZp
ZXIsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3VyY2VG
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbSBm
YWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CiAKIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFy
ZWFJbXBsKiBzb3VyY2VBcmVhKQogewotICAgIGNvbm5lY3QoKTsKLQorICAgIGNvbm5lY3RTeW5j
KCk7CiAgICAgcmVzZXRWYWx1ZXMoKTsKIAogICAgIG1faGFzUGVuZGluZ0NsZWFyID0gdHJ1ZTsK
ICAgICBtX21hcCA9IG1ha2VVbmlxdWU8U3RvcmFnZU1hcD4obV9xdW90YUluQnl0ZXMpOwogCi0g
ICAgaWYgKG1fbWFwSUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyKCptX21hcElELCBzb3VyY2VBcmVhLT5pZGVudGlmaWVy
KCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KSksIDApOworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhcigqbV9yZW1v
dGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVk
LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNl
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6Y2xl
YXIgZmFpbGVkIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwogfQpAQCAtMTUx
LDIxICsxNTIsMTEgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVzZXRWYWx1ZXMoKQogCiBTdG9y
YWdlTWFwJiBTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKCkKIHsKLSAgICBjb25uZWN0KCk7Cisg
ICAgY29ubmVjdFN5bmMoKTsKIAotICAgIGlmICghbV9tYXApIHsKKyAgICBpZiAoIW1fbWFwKQog
ICAgICAgICBtX21hcCA9IG1ha2VVbmlxdWU8U3RvcmFnZU1hcD4obV9xdW90YUluQnl0ZXMpOwog
Ci0gICAgICAgIGlmIChtX21hcElEKSB7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSBh
IElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB0byBwcmV2ZW50IFVJUHJvY2VzcyBo
YW5ncyBpbiBjYXNlIHdlIHJlY2VpdmUgYSBzeW5jaHJvbm91cyBJUEMgZnJvbSB0aGUgVUlQcm9j
ZXNzIHdoaWxlIHdlJ3JlIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UKLSAgICAgICAgICAgIC8vIGZy
b20gb3VyIFN0b3JhZ2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXMoKSBJUEMuIFRoaXMgSVBDIG1heSBi
ZSB2ZXJ5IHNsb3cgYmVjYXVzZSBpdCBtYXkgbmVlZCB0byBmZXRjaCB0aGUgdmFsdWVzIGZyb20g
ZGlzayBhbmQgdGhlcmUgbWF5IGJlIGEgbG90IG9mIGRhdGEuCi0gICAgICAgICAgICBJUEM6OlVu
Ym91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTsK
LSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlczsKLSAgICAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpH
ZXRWYWx1ZXMoKm1fbWFwSUQpLCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVl
czo6UmVwbHkodmFsdWVzKSwgMCk7Ci0gICAgICAgICAgICBtX21hcC0+aW1wb3J0SXRlbXMoV1RG
TW92ZSh2YWx1ZXMpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihTdG9yYWdlLCAiU3RvcmFnZUFyZWFNYXA6OmVuc3VyZU1hcCBmYWlsZWQgdG8gbG9hZCBm
cm9tIG5ldHdvcmsgcHJvY2VzcyBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFsaWQiKTsK
LSAgICB9CiAgICAgcmV0dXJuICptX21hcDsKIH0KIApAQCAtMjU5LDggKzI1MCwxMiBAQCB2b2lk
IFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSkKICAgICBtX21hcC0+c2V0SXRlbUlnbm9yaW5nUXVvdGEoa2V5LCBuZXdW
YWx1ZSk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVh
SW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit2b2lkIFN0b3JhZ2VB
cmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VB
cmVhSW1wbElkZW50aWZpZXI+JiBzdG9yYWdlQXJlYUltcGxJRCwgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKIHsKKyAgICBpZiAo
bWVzc2FnZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1lc3Nh
Z2VJZGVudGlmaWVyOwogICAgIGlmICghc3RvcmFnZUFyZWFJbXBsSUQpIHsKICAgICAgICAgLy8g
VGhpcyBzdG9yYWdlIGV2ZW50IG9yaWdpbmF0ZXMgZnJvbSBhbm90aGVyIHByb2Nlc3Mgc28gd2Ug
bmVlZCB0byBhcHBseSB0aGUgY2hhbmdlIHRvIG91ciBzdG9yYWdlIGFyZWEgbWFwLgogICAgICAg
ICBhcHBseUNoYW5nZShrZXksIG5ld1ZhbHVlKTsKQEAgLTI3Miw4ICsyNjcsMTIgQEAgdm9pZCBT
dG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxT
dG9yYWdlQXJlYUltcGxJZGUKICAgICAgICAgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChzdG9y
YWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7CiB9CiAK
LXZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUoKQordm9pZCBTdG9yYWdlQXJlYU1hcDo6
Y2xlYXJDYWNoZSh1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKIHsKKyAgICBpZiAobWVzc2Fn
ZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1lc3NhZ2VJZGVu
dGlmaWVyOwogICAgIHJlc2V0VmFsdWVzKCk7CiB9CiAKQEAgLTM0NCw0MiArMzQzLDc5IEBAIHZv
aWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpv
cHRpb25hbDxTdG9yYWdlQXJlYUltCiAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3JvdXAsIGZyYW1lcywga2V5LCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0K
IAordm9pZCBTdG9yYWdlQXJlYU1hcDo6c2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlIG1vZGUp
Cit7CisgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBhdXRvIG5h
bWVzcGFjZUlkZW50aWZpZXIgPSBtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKTsKKyAg
ICBhdXRvIG9yaWdpbkRhdGEgPSBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CisgICAgYXV0byB0
b3BPcmlnaW5EYXRhID0gbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSA/IG1fbmFtZXNwYWNl
LnRvcExldmVsT3JpZ2luKCktPmRhdGEoKSA6IG9yaWdpbkRhdGE7CisgICAgYXV0byBvcmlnaW4g
PSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB0b3BPcmlnaW5EYXRhLCBvcmlnaW5EYXRhIH07Cisg
ICAgYXV0byB0eXBlID0gbV90eXBlOworICAgIGlmICgodHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9j
YWwgfHwgdHlwZSA9PSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwpICYmIG1fbmFtZXNwYWNl
LnRvcExldmVsT3JpZ2luKCkpCisgICAgICAgIHR5cGUgPSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50
TG9jYWw7CisKKyAgICBpZiAobW9kZSA9PSBTZW5kTW9kZTo6U3luYykgeworICAgICAgICBTdG9y
YWdlQXJlYUlkZW50aWZpZXIgcmVtb3RlQXJlYUlkZW50aWZpZXI7CisgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IGl0ZW1zOworICAgICAgICB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cjsKKyAgICAgICAgaXBjQ29ubmVjdGlvbi5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9yYWdlQXJlYVN5bmModHlwZSwgbV9pZGVudGlmaWVyLCBu
YW1lc3BhY2VJZGVudGlmaWVyLCBvcmlnaW4pLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpDb25uZWN0VG9TdG9yYWdlQXJlYVN5bmM6OlJlcGx5KHJlbW90ZUFyZWFJZGVudGlmaWVy
LCBpdGVtcywgbWVzc2FnZUlkZW50aWZpZXIpLCAwKTsKKyAgICAgICAgZGlkQ29ubmVjdChyZW1v
dGVBcmVhSWRlbnRpZmllciwgV1RGTW92ZShpdGVtcyksIG1lc3NhZ2VJZGVudGlmaWVyKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha0Nvbm5lY3Rpb24gPSBXZWFrUHRy
IHsgaXBjQ29ubmVjdGlvbiB9XShhdXRvIHJlbW90ZUFyZWFJZGVudGlmaWVyLCBhdXRvIGl0ZW1z
LCBhdXRvIG1lc3NhZ2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuIGRpZENvbm5lY3QocmVtb3RlQXJlYUlkZW50aWZpZXIsIFdU
Rk1vdmUoaXRlbXMpLCBtZXNzYWdlSWRlbnRpZmllcik7CisKKyAgICAgICAgaWYgKHdlYWtDb25u
ZWN0aW9uICYmIHJlbW90ZUFyZWFJZGVudGlmaWVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHdl
YWtDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpc2Nv
bm5lY3RGcm9tU3RvcmFnZUFyZWEocmVtb3RlQXJlYUlkZW50aWZpZXIpLCAwKTsKKyAgICB9Owor
CisgICAgaXBjQ29ubmVjdGlvbi5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU3RvcmFnZUFyZWEodHlwZSwgbV9pZGVudGlmaWVyLCBu
YW1lc3BhY2VJZGVudGlmaWVyLCBvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmNvbm5lY3RTeW5jKCkKK3sKKyAgICBpZiAobV9y
ZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZENvbm5lY3RN
ZXNzYWdlKFNlbmRNb2RlOjpTeW5jKTsKK30KKwogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29ubmVj
dCgpCiB7Ci0gICAgaWYgKG1fbWFwSUQpCisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBtYXBJRDsKLSAg
ICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgotICAgIGNh
c2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgotICAgICAgICBpZiAoU2VjdXJpdHlPcmln
aW4qIHRvcExldmVsT3JpZ2luID0gbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSkKLSAgICAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNlLnN0b3Jh
Z2VOYW1lc3BhY2VJRCgpLCB0b3BMZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2lu
LT5kYXRhKCkpLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9UcmFu
c2llbnRMb2NhbFN0b3JhZ2VBcmVhOjpSZXBseShtYXBJRCksIDApOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Q29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShtX25hbWVzcGFjZS5zdG9yYWdlTmFt
ZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtT
dG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYTo6UmVwbHkobWFwSUQpLCAw
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6U2Vzc2lvbjoKLSAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNl
SUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhOjpSZXBseShtYXBJRCksIDApOwot
ICAgIH0KKyAgICBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGU6OkFzeW5jKTsKK30KIAotICAg
IGlmIChtYXBJRC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgbV9tYXBJRCA9IG1hcElEOwotICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsK
LSAgICB9Cit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRDb25uZWN0KFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciByZW1vdGVBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBpdGVt
cywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCit7CisgICAgaWYgKG1lc3NhZ2VJZGVudGlm
aWVyIDwgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIgPSBtZXNzYWdlSWRlbnRpZmllcjsK
KyAgICBpZiAoIXJlbW90ZUFyZWFJZGVudGlmaWVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9yZW1vdGVBcmVhSWRlbnRpZmllciA9IHJlbW90ZUFyZWFJZGVudGlmaWVyOwor
ICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CisgICAg
bV9tYXAtPmltcG9ydEl0ZW1zKFdURk1vdmUoaXRlbXMpKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJl
YU1hcDo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgaWYgKCFtX21hcElEKQorICAgIGlmICghbV9yZW1v
dGVBcmVhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVzZXRWYWx1ZXMoKTsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRo
aXMpOwogCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAg
ICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYSgqbV9tYXBJ
RCksIDApOworICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RGcm9tU3RvcmFn
ZUFyZWEoKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIpLCAwKTsKIAotICAgIG1fbWFwSUQgPSB7IH07
CisgICAgbV9yZW1vdGVBcmVhSWRlbnRpZmllciA9IHsgfTsKKyAgICBtX2xhc3RIYW5kbGVkTWVz
c2FnZUlkZW50aWZpZXIgPSAwOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjppbmNyZW1lbnRV
c2VDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuaAppbmRleCAwNmU2MzU2Y2IxMzM5MjY2YmEzNDU0NTk2MjUzODA0Njdi
NTgwYjE3Li5jNjI3MWQ5Zjc5ZWNiYWMzZTRmOGY4Yjg3Zjg3Y2MwNGVkM2JmODJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFn
ZUFyZWEuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjYsOCArNjcsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBmaW5hbDsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1
cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KLSAg
ICBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4mIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX21hcElEOyB9CisgICAgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAorICAgIHZvaWQg
Y29ubmVjdCgpOwogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCiAgICAgdm9pZCBpbmNyZW1lbnRV
c2VDb3VudCgpOwpAQCAtNzgsOCArODAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVtb3Zl
SXRlbSh1aW50NjRfdCBtYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAgICAgdm9pZCBkaWRD
bGVhcih1aW50NjRfdCBtYXBTZWVkKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291cmNlU3Rv
cmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lk
IGNsZWFyQ2FjaGUoKTsKKyAgICB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHNvdXJjZVN0b3JhZ2VBcmVhSUQs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgdWludDY0X3QgbWVzc2FnZUlkZW50
aWZpZXIpOworICAgIHZvaWQgY2xlYXJDYWNoZSh1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7
CiAKICAgICB2b2lkIHJlc2V0VmFsdWVzKCk7CiAgICAgV2ViQ29yZTo6U3RvcmFnZU1hcCYgZW5z
dXJlTWFwKCk7CkBAIC05MCwxMiArOTIsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElk
ZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKICAgICB2b2lk
IGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJl
YUltcGxJZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAK
LSAgICB2b2lkIGNvbm5lY3QoKTsKKyAgICBlbnVtIGNsYXNzIFNlbmRNb2RlIDogYm9vbCB7IEFz
eW5jLCBTeW5jIH07CisgICAgdm9pZCBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGUpOworICAg
IHZvaWQgY29ubmVjdFN5bmMoKTsKKyAgICB2b2lkIGRpZENvbm5lY3QoU3RvcmFnZUFyZWFJZGVu
dGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRp
Zmllcik7CiAKKyAgICBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAg
IHVpbnQ2NF90IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciB7IDAgfTsKICAgICBTdG9y
YWdlTmFtZXNwYWNlSW1wbCYgbV9uYW1lc3BhY2U7CiAgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
dG9yYWdlTWFwPiBtX21hcDsKLSAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmll
cj4gbV9tYXBJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gbV9y
ZW1vdGVBcmVhSWRlbnRpZmllcjsKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGlu
Z1ZhbHVlQ2hhbmdlczsKICAgICB1aW50NjRfdCBtX2N1cnJlbnRTZWVkIHsgMCB9OwogICAgIHVu
c2lnbmVkIG1fcXVvdGFJbkJ5dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgppbmRleCAy
ZDFhODEzZmNiODc1N2IxODQyNzYyOTM4MDY5N2ZjN2JlOWJhOWI1Li42ZGVlOGU4ZTM1YWI1YjY4
ODY2ZjIyMDBhNzA2YTgyOTM3ZmRiY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgpA
QCAtMjUsNiArMjUsNiBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlQXJlYU1hcCBOb3RSZWZDb3VudGVk
IHsKICAgICBEaWRSZW1vdmVJdGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5
KQogICAgIERpZENsZWFyKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkKQogCi0gICAgRGlzcGF0Y2hT
dG9yYWdlRXZlbnQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZp
ZXI+IHN0b3JhZ2VBcmVhSW1wbElELCBTdHJpbmcga2V5LCBTdHJpbmcgb2xkVmFsdWUsIFN0cmlu
ZyBuZXdWYWx1ZSwgU3RyaW5nIHVybFN0cmluZykKLSAgICBDbGVhckNhY2hlKCkKKyAgICBEaXNw
YXRjaFN0b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllcj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXksIFN0cmluZyBvbGRWYWx1ZSwg
U3RyaW5nIG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRp
ZmllcikKKyAgICBDbGVhckNhY2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYU1hcElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTIyMTA4OTY4ZjM1OThmZDIwMWFh
YWNhZjBlYzAzNzVjNDZlZjk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElk
ZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgPSBPYmpl
Y3RJZGVudGlmaWVyPFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449346</attachid>
            <date>2022-01-17 13:06:06 -0800</date>
            <delta_ts>2022-01-17 15:22:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220117130605.patch</filename>
            <type>text/plain</type>
            <size>62280</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uMWU0Y2ZiODkwMjg1ODcwMjExOWFjODA3Yzk2OTgz
YzAyNWE3N2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5h
bHlzaXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQg
YWZ0ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQw
ZTc5YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLjM2OTAxNmVlMTVkN2NkOGVlOGQ4MjMz
NzJmOTdiZDYwZmE4NjBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0
b3JhZ2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3lu
YyB3aXRoIGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQg
cGVyZm9ybXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0
byByZW1vdGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQg
dHdvIHN5bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9y
IGdldHRpbmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0
VmFsdWVzOiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBX
ZSBjYW4gbWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RU
b1N0b3JhZ2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBw
cm9jZXNzIHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRo
ZSB3YWl0IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291
bGQgcHJld2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdl
QXJlYU1hcCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBk
b24ndCBhY3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBm
b3Igb3BlcmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdl
IENvbm5lY3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBw
cmV3YXJtaW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5
IGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25u
ZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5k
bGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVj
dFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdl
KSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0
Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBw
cm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0
aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9m
IG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VB
cmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5
bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0
b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5l
cnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRj
aEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdl
QXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1
M2E5ZjY3MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFt
ZSgpLm1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
VGhpcyBlYWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQg
aXRlbXMgZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9j
YWxTdG9yYWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlm
TmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2Fs
U3RvcmFnZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRh
YTc0YTVjMS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBG
cmFtZTo6ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1l
KCkpOwotICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2Fs
U3RvcmFnZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdD
b3VudDsKLX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVBy
ZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxv
YXRTaXplIEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVT
Y3JlZW5TaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2Qy
ZmQ3ZmM0MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBi
ZGQzMzk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29s
IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0g
ICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9j
YWxTdG9yYWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lk
IGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRF
dmVudFJlZ2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9z
ZWxmT25seVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsg
MCB9OwogCiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggMjUxYmQ0MjlkNjIwNjI5OTdmNzI4ZGMwZGM2NjI1
ZjE0ZjFiNWM3OC4uNzc0NjE0MGY3ODQwODFiMDc4NmExNWQ2MDFmZWZjYTJjOTFjMTBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJld2FybSgpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5o
CmluZGV4IDIyMDU4N2VjODZiYTVjNTE3MWI2NzNiMTc3YTQ2NjFhMjJjZjMxM2QuLmYzY2ZlNGNk
OTVmZDY0NjBiMDk0YzljYjBhNzE0ZmRjM2Q4Y2Y3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VUeXBlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
U3RvcmFnZVR5cGUgOiB1aW50OF90IHsKQEAgLTQ0LDMgKzQ2LDE2IEBAIGlubGluZSBib29sIGlz
UGVyc2lzdGVudExvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdG9yYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLAorICAgICAgICBXZWJD
b3JlOjpTdG9yYWdlVHlwZTo6U2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6
OkxvY2FsLAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCBjODRlYWQ0
MzBhYjE1ZDk0ZmQ4ZWYyNTMzZDZlNDkyODcyYjZlMTJiLi4wYzQxYWI5MmUzMWY0OWQ2YTVhOTQ5
YTQwMzcyOGMyYWE5ZDA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBsaXN0ZW5l
clVuaXF1ZUlEIDogbV9ldmVudExpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNo
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2Fj
aGUoMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJh
c2UmIFN0b3JhZ2VBcmVhOjplbnN1cmVEYXRhYmFzZSgpIGNvbnN0CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQp
OwogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpIHsK
ICAgICAgICAgYXV0byBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gbGlzdGVuZXJVbmlxdWVJ
RCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1w
bElEKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxpc3Rl
bmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZl
bnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlz
cGF0Y2hTdG9yYWdlRXZlbnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjYmRkZDJlMzA0OGQyODcwYWUw
N2EwYWFkZjRlZDk3YjMxMDQzNmM5Li4zY2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4Yzkx
OWQ2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkRm9yVHJhbnNpZW50U3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW8KICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhID0gbnVsbHB0
cjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3
b3JrUXVldWUpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7
CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZUFyZWEpIHsKICAgICAgICAgaWYgKCFtX3BhdGguaXNF
bXB0eSgpKQpAQCAtMTc3LDExICsxNzcsMTEgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWMKICAg
ICB9CiAKICAgICBBU1NFUlQobV9wYXRoLmlzRW1wdHkoKSB8fCBtX2xvY2FsU3RvcmFnZUFyZWEt
PnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6OlNRTGl0ZSk7Ci0gICAgbV9sb2NhbFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX2xvY2FsU3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVy
biBtX2xvY2FsU3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIAotU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAg
IGlmICghbV90cmFuc2llbnRTdG9yYWdlQXJlYSkgewogICAgICAgICBtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhID0gbWFrZVVuaXF1ZTxNZW1vcnlTdG9yYWdlQXJlYT4ob3JpZ2luLCBTdG9yYWdlQXJl
YUJhc2U6OlN0b3JhZ2VUeXBlOjpMb2NhbCk7CkBAIC0xODksNyArMTg5LDcgQEAgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVAKICAgICB9CiAKICAgICBBU1NFUlQobV90cmFuc2llbnRTdG9yYWdlQXJl
YS0+dHlwZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6TWVtb3J5KTsKLSAgICBtX3RyYW5z
aWVudFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX3RyYW5zaWVu
dFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuaAppbmRleCBhODg4NDJlMjk1ZjJkOTBhOGYwZThiYmE4ZWQ3YjNlYTI3
ZDU4YThiLi5jZGNiNjgxMmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU2LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0xv
Y2FsU3RvcmFnZSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Ry
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YS4uZDk3
NGU2ZGIzNTUzODcxNDI1YmFlNjJjMDcyMjU3MjEzMmM2ZDQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTYyNSwyNCArNjI1LDMzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwg
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgdG9wT3JpZ2luIH07Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmxvY2FsU3RvcmFn
ZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgbV9xdWV1ZS5jb3B5UmVmKCkpKTsKLX0K
KyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwor
ICAgIGF1dG8mIG9yaWdpblN0b3JhZ2VNYW5hZ2VyID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihvcmlnaW4pOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZXN1bHRJZGVudGlmaWVyOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2Fs
OgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxT
dG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG1f
cXVldWUuY29weVJlZigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmln
aW5TdG9yYWdlTWFuYWdlci5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0
cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb246CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIg
PSBvcmlnaW5TdG9yYWdlTWFuYWdlci5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFy
ZWFSZWdpc3RyeSkuY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG5hbWVzcGFjZUlkZW50aWZpZXIpOworICAg
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luIH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdp
bikpOworICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5n
ZXRTdG9yYWdlQXJlYShyZXN1bHRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdElkZW50aWZpZXIsIHN0b3JhZ2VBcmVhLT5hbGxJdGVtcygpLCBTdG9y
YWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKKworICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7
IH0sIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9y
aWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBp
ZGVudGlmaWVyKSk7CisgICAgY29ubmVjdFRvU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgdHlwZSwg
c291cmNlSWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaXNj
b25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02NjksMTYgKzY3OCw2IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0
byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEoaWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+
YWxsSXRlbXMoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci19
Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXgg
ZDIxZDY1NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJhNTNhOWU5MS4uYTFmMzA3NjQ0Njc2ZThk
NTM1NjViZmVjODM3OTY3OTZjMzQ2YTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgpAQCAtNDQsNiArNDUsNyBAQCBj
bGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTA4LDEyICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9y
IFdlYlN0b3JhZ2UuCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIp
PiYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKLSAgICB2b2lkIGNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQg
Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRWYWx1ZXMoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Jik+JiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNl
ZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYga2V5
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRf
dCBzZWVkLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTUxNmFkYTk4MzJmZGVmNWI2ODE0OTQ0MjE1ZjY4OGZkYTgx
YzYxNS4uZmZjODZmOWQwOWZkNDU5NTUzNWY4NzUwNTM5NDVhMThhNzczMWYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00MCwxMiArNDAsMTAgQEAK
ICAgICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVj
dGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4s
IFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KIAotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRv
U3RvcmFnZUFyZWEoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cikgQXN5bmMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
IHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFt
ZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgogICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xv
bmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFZhbHVl
cyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cwogICAgIFNldEl0ZW0oV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5n
IGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAg
ICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVj
dGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkNDBlNDBiNjE3M2MyOGQ0NGM1N2I4ZTIwZjcy
YmNiNTExMDQxZGI1Li5iNzM0MmU0MGVmMWY2YmI1Y2RiNmZiZmIyZWYxMjNmOWQwNmU4ZTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjphZGRTdG9yYWdlQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8TWVtbwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1TdG9yYWdlQXJlYUlk
ZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllcikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6
OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIgbmFtZXNwYWNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3N0b3Jh
Z2VBcmVhc0J5TmFtZXNwYWNlLmdldChuYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlk
ZW50aWZpZXIuaXNWYWxpZCgpKSB7CkBAIC04NCw3ICs4NCw4IEBAIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJ
UEM6OkNvCiAgICAgaWYgKCFzdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciB7IH07CiAKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlv
bik7CisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50
aWZpZXIpOworCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaAppbmRleCBmYzE3NjFiZTkwMGY4ZTRkYTc3NTRiMDE4ZjFkYmUyZTM4ZmI3ZGZhLi4wZjdi
ZTRjNWU1Y2M4OGFjMzgyOWMxOTI1MDFmY2M2ODI2MjVlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
b21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJh
MTQ5OThmOGYzYzEuLjU3OTdlOWM1NDAyMWQyYThkODBmMjgyMWUxZTUyMWEzMDhkMmIzZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9y
YWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAordWludDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVuSWRlbnRpZmllcigwKTsKKyAg
ICByZXR1cm4gKytjdXJyZW5JZGVudGlmaWVyOworfQorCiBTdG9yYWdlQXJlYUJhc2U6OlN0b3Jh
Z2VBcmVhQmFzZSh1bnNpZ25lZCBxdW90YSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCi0gICAgOiBtX2lkZW50aWZpZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKQorICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhSWRlbnRpZmllcjo6Z2VuZXJhdGVU
aHJlYWRTYWZlKCkpCiAgICAgLCBtX3F1b3RhKHF1b3RhKQogICAgICwgbV9vcmlnaW4ob3JpZ2lu
KQogewpAQCAtMzksMTEgKzQ1LDExIEBAIFN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFnZUFyZWFCYXNl
KHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yCiAKIFN0b3Jh
Z2VBcmVhQmFzZTo6flN0b3JhZ2VBcmVhQmFzZSgpID0gZGVmYXVsdDsKIAotdm9pZCBTdG9yYWdl
QXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlv
bikKK3ZvaWQgU3RvcmFnZUFyZWFCYXNlOjphZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIEFTU0VSVCghbV9saXN0ZW5lcnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAgIEFT
U0VSVCghbV9saXN0ZW5lcnMuY29udGFpbnMoY29ubmVjdGlvbikgfHwgbV9saXN0ZW5lcnMuZ2V0
KGNvbm5lY3Rpb24pID09IGlkZW50aWZpZXIpOwogCi0gICAgbV9saXN0ZW5lcnMuYWRkKGNvbm5l
Y3Rpb24pOworICAgIG1fbGlzdGVuZXJzLnNldChjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6OnJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgY29ubmVjdGlvbikKQEAgLTU4LDE5ICs2NCwxOSBAQCBib29sIFN0b3JhZ2VBcmVh
QmFzZTo6aGFzTGlzdGVuZXJzKCkgY29uc3QKIAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6Om5vdGlm
eUxpc3RlbmVyc0Fib3V0Q2xlYXIoKQogewotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
bGlzdGVuZXJzKQotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVz
c2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uLCBpZGVudGlmaWVyXSA6IG1fbGlzdGVu
ZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJ
ZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFN0b3JhZ2VB
cmVhQmFzZTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VD
b25uZWN0aW9uLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIHNvdXJjZUltcGxJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KHNvdXJjZUltcGxJZGVudGlmaWVyKTsKIAotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
bGlzdGVuZXJzKSB7CisgICAgZm9yIChhdXRvJiBbY29ubmVjdGlvbiwgaWRlbnRpZmllcl0gOiBt
X2xpc3RlbmVycykgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXI+IGltcGxJZGVudGlmaWVyOwogICAgICAgICBpZiAoY29ubmVjdGlvbiA9PSBzb3VyY2VD
b25uZWN0aW9uKQogICAgICAgICAgICAgaW1wbElkZW50aWZpZXIgPSBzb3VyY2VJbXBsSWRlbnRp
ZmllcjsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KGltcGxJZGVudGlmaWVyLCBrZXks
IG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNz
YWdlSWRlbnRpZmllcigpKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuaAppbmRleCBlZDNlZDE0MjA2ZTE3NWRjYWNjOGMxZjk5NDkwNzUwNTQ1ZTM0ZTk4Li5l
ZmM4ZmI5NjQ4OTEwN2M4OGUzM2NkMTIzZjYwOWEzNmYyMWFlZDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQ3LDYg
KzQ4LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWFCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFN0
b3JhZ2VBcmVhQmFzZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0b3JhZ2VBcmVhQmFz
ZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIHVp
bnQ2NF90IG5leHRNZXNzYWdlSWRlbnRpZmllcigpOwogICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVh
QmFzZSgpOwogCiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IFNRTGl0ZSwgTWVtb3J5IH07
CkBAIC01OSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHVuc2ln
bmVkIHF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9xdW90YTsgfQotICAgIHZvaWQgYWRkTGlzdGVu
ZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CisgICAgdm9pZCBhZGRMaXN0ZW5lcihJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIpOwogICAgIHZv
aWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBo
YXNMaXN0ZW5lcnMoKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUxpc3RlbmVyc0Fib3V0Q2xlYXIo
KTsKQEAgLTc3LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIHVuc2lnbmVkIG1fcXVvdGE7CiAgICAgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG1fb3JpZ2luOwotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4g
bV9saXN0ZW5lcnM7CisgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXI+IG1fbGlzdGVuZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4YjUy
MWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyLi5jMWY0M2ExOGM3MmJmYjI1ZmY4
Y2M2MzE0ZjFjNzgzNzFhNmI5MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTMwNSw2ICszMDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAg
ICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywK
KyAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VUeXBlJywKICAgICAgICAgJ1dlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYkxvY2tJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLApAQCAtMzQ3LDYg
KzM0OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
VGV4dENoZWNrZXJSZXF1ZXN0SUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTUyNjMwYTMwMzIxMDc0OGI4OGEwMTlhMTNjNDBhMGRh
ZjIwM2QxNC4uNTRhNGIyMTAxYTM1N2FlMTQ5OGU4ZTg2NzQxZTg3NjA1MjI1YTEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDU3
LDYgKzE0NTcsNyBAQAogCQk5M0FCOUI0RTI1NzU2N0UyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI0MjI1NzQ5MjhDMDA5OEIxMEUgLyogU3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggKi87IH07CiAJCTkzQUI5QjU1
MjU3NUEyNzYwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQUI5QjRGMjU3NTg5MTEwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJOTNBQjlCNTYyNTc1QTI4QjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQjlCNTEyNTc1ODkxMTAwOThCMTBF
IC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5M0FFQzE2MTI3OEY4Q0QzMDA2NjY2NkYgLyogU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0FFQzE2MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmggKi87IH07CiAJCTkzQjBBNjc1MjZENUFEQ0YwMEFBMjFFNCAvKiBXZWJQZXJt
aXNzaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9s
bGVyLmggKi87IH07CiAJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYx
NDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCTkzQjI2MTRF
MjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2
IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggKi87IH07CkBAIC01MzA1LDYgKzUzMDYsNyBAQAog
CQk5M0FCOUI1MjI1NzU4OTEyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQUI5QjUzMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdl
ck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUI5QjU0MjU3NTg5
MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2du
aXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjBBNjcz
MjZENUE3MkUwMEFBMjFFNCAvKiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjBBNjc0MjZENUE3MkUwMEFBMjFFNCAv
KiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9yYWdlRGF0YWJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjEsNiArNzA2Myw3IEBACiAJCQkJMUFD
RUNEMjIxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmNwcCAqLywKIAkJCQkxQUNF
Q0QyMzE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCAqLywKIAkJCQkxQTMzNERF
QTE2REU4QjY4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gKi8sCisJCQkJ
OTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oICov
LAogCQkJCTQ2NUY0RTA1MjMwQjJFN0MwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
Zmllci5oICovLAogCQkJCTFBMTc2MzU0MTZCMUQ1RDAwMEQ4OEZENiAvKiBTdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAgKi8sCiAJCQkJMUExNzYzNTUxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsLmggKi8sCkBAIC0xMzI2Myw2ICsxMzI2Niw3IEBACiAJCQkJOTNFNzk5REMy
NzYxMjEwODAwNzQwMDhBIC8qIFN0b3JhZ2VBcmVhQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFEMzMwNkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0FFQzE2MTI3OEY4Q0QzMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTMzNERFRTE2REU4Rjg4MDA2QThF
MzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFNzk5
QzcyNzYwMjc0NjAwNzQwMDhBIC8qIFN0b3JhZ2VBcmVhUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAwMjI3MGE1M2FmOWJhOGJm
ODBkN2MzYjNkY2RjOGNlYjU2NTE3NmUzLi44ZDNiNTdiZDE4ZGMyZTA1Mzg0Y2NmMDhkN2Q5Yzg5
MDdjZDA0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U3RvcmFnZUFyZWFN
YXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogc3RvcmFnZUFy
ZWFNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdG9yYWdlQXJlYU1hcChtYWtlT2JqZWN0
SWRlbnRpZmllcjxTdG9yYWdlQXJlYUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBpZiAoYXV0byBzdG9yYWdlQXJlYU1hcCA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJZGVudGlmaWVyPFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgICAg
ICBzdG9yYWdlQXJlYU1hcC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggZjgxNjc3NWE3OTk0YWIyMmNjMmZiYzI2MDAwZTlkMjJmMmZjMmM2YS4uMjQ1
NTk4MWIwMzYxNjkyYTUyNjU0MjBmZWVkYzRiNGYyZDQwZGEyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTE4OSw4ICsxMTg5LDggQEAgdm9pZCBXZWJQcm9j
ZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKiBjb25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOwogICAg
IEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPT0g
Y29ubmVjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRvVmVj
dG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKLSAgICAgICAgc3RvcmFnZUFyZWFNYXAt
PmRpc2Nvbm5lY3QoKTsKKyAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fc3RvcmFn
ZUFyZWFNYXBzLmtleXMoKSkpCisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXBzLmdldChrZXkpLT5k
aXNjb25uZWN0KCk7CiAKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkp
IHsKICAgICAgICAgYXV0byBpZGJDb25uZWN0aW9uID0gcGFnZS0+Y29yZVBhZ2UoKS0+b3B0aW9u
YWxJREJDb25uZWN0aW9uKCk7CkBAIC0xNjk3LDIwICsxNjk3LDIwIEBAIHZvaWQgV2ViUHJvY2Vz
czo6bm9uVmlzaWJsZVByb2Nlc3NNZW1vcnlDbGVhbnVwVGltZXJGaXJlZCgpCiAKIHZvaWQgV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFy
ZWFNYXApCiB7Ci0gICAgQVNTRVJUKHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Ci0gICAg
QVNTRVJUKCFtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucygqc3RvcmFnZUFyZWFNYXAuaWRlbnRp
ZmllcigpKSk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcHMuc2V0KCpzdG9yYWdlQXJlYU1hcC5pZGVu
dGlmaWVyKCksICZzdG9yYWdlQXJlYU1hcCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFn
ZUFyZWFNYXAuaWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV9zdG9yYWdlQXJlYU1hcHMuY29u
dGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLmFkZChpZGVudGlmaWVy
LCBzdG9yYWdlQXJlYU1hcCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6dW5yZWdpc3RlclN0b3Jh
Z2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1hcCkKIHsKLSAgICBBU1NFUlQo
c3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1h
cHMuY29udGFpbnMoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkpOwotICAgIEFTU0VSVCht
X3N0b3JhZ2VBcmVhTWFwcy5nZXQoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkgPT0gJnN0
b3JhZ2VBcmVhTWFwKTsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoKnN0b3JhZ2VBcmVh
TWFwLmlkZW50aWZpZXIoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAu
aWRlbnRpZmllcigpOworICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVyKS5n
ZXQoKSA9PSAmc3RvcmFnZUFyZWFNYXApOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShp
ZGVudGlmaWVyKTsKIH0KIAotU3RvcmFnZUFyZWFNYXAqIFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVh
TWFwKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAorV2Vha1B0cjxTdG9y
YWdlQXJlYU1hcD4gV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXBz
LmdldChpZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDQ2OWEwYTVlMTkxZGNmNDcwMTMyNzE2YjY3MmVkMWMyZTYxZjMxMTcuLmU4N2Q3MzNkNzZh
ZGVlMGNiOGJhZGI4N2Y1Y2E3NTVkYTYyZDcwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNp
bmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
Ci0jaW5jbHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1
ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJWaWV3VXBk
YXRlRGlzcGF0Y2hlci5oIgpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwogICAgIHZvaWQgdW5yZWdp
c3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7Ci0gICAgU3RvcmFnZUFyZWFNYXAq
IHN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhSWRlbnRpZmllcikgY29uc3Q7CisgICAgV2Vha1B0
cjxTdG9yYWdlQXJlYU1hcD4gc3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
KSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7CkBAIC03NDIsNyArNzQyLDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoQ291bnRlZFNldDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcj4gbV9zd1JlZ2lzdHJhdGlvbkNvdW50czsKICNlbmRpZgogCi0gICAg
SGFzaE1hcDxTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhTWFwKj4gbV9zdG9yYWdl
QXJlYU1hcHM7CisgICAgSGFzaE1hcDxTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFdlYWtQdHI8
U3RvcmFnZUFyZWFNYXA+PiBtX3N0b3JhZ2VBcmVhTWFwczsKICAgICAKICAgICAvLyBQcmV3YXJt
ZWQgV2ViUHJvY2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklEIHlldCwg
d2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCiAgICAgLy8gQnkgdGhlIHRpbWUgdGhl
IFdlYlByb2Nlc3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHNl
c3Npb25JRC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IGIxMmM1OGMwYWFkNjdlOTk1NzcwNmUyOWU2ZGU2
NTY5ZWZlNjQ4NDYuLjFmOWI0MmNiMTI3ZDZkYzAyOGE2ODA1OWUyNzEwMWZjNzk2OTQ0NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcApAQCAtMTEyLDIwICsxMTIsMTAgQEAgc2l6ZV90IFN0b3JhZ2VBcmVhSW1w
bDo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU3Rv
cmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCgpCit2b2lkIFN0b3JhZ2VBcmVhSW1w
bDo6cHJld2FybSgpCiB7Ci0gICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUg
bmV0d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9p
ZCBTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KCkKLXsKLSAgICAvLyBTdG9y
YWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNvIHRoZXJlJ3Mg
bm90aGluZyB0byBkbyBoZXJlLgotfQotCi12b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRh
YmFzZUlmSWRsZSgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0
b3JhZ2VBcmVhTWFwLT5jb25uZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaAppbmRleCA3OWUxNGI5MWY4YWM2ZDgyZmU3OTJhYzA2ZDM5NGVkNzY1ODQyYTYyLi5hMzVk
NjY3OTI1MDVmMGMwM2U1OTA4NzAwMWUwY2E0ZmRhN2E2Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjEs
OSArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkp
IG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNy
ZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRs
ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJld2FybSgpIGZpbmFsOwogCiAgICAgSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJl
YU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAyY2Y3YTZkNGI2MDA1YzFkN2VjMjU2YmQ2Mzg4NzYyOTRl
OWU0Y2YyLi5kZjRjMjZmMmFmZjMyOTFkOTE5ZGVkNTNkZDc2MjdiNThmMjg5MjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCkBAIC01MSwxNyArNTEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VO
YW1lc3BhY2VJbXBsJiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgc2VjdXJpdHlPcmlnaW4pCi0gICAgOiBtX25hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNl
KQorICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSkKKyAgICAsIG1fbmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX3NlY3VyaXR5
T3JpZ2luKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKQogICAgICwgbV9xdW90YUluQnl0ZXMoc3Rv
cmFnZU5hbWVzcGFjZS5xdW90YUluQnl0ZXMoKSkKICAgICAsIG1fdHlwZShzdG9yYWdlTmFtZXNw
YWNlLnN0b3JhZ2VUeXBlKCkpCiB7Ci0gICAgY29ubmVjdCgpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiBTdG9yYWdlQXJl
YU1hcDo6flN0b3JhZ2VBcmVhTWFwKCkKIHsKICAgICBkaXNjb25uZWN0KCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAog
dW5zaWduZWQgU3RvcmFnZUFyZWFNYXA6Omxlbmd0aCgpCkBAIC05NSw4ICs5Nyw4IEBAIHZvaWQg
U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUlt
cGwqIHNvdXJjZUFyZWEsIGNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7
CiAKLSAgICBpZiAobV9tYXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbSgqbV9tYXBJRCwgc291cmNlQXJlYS0+aWRl
bnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmll
cikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6U2V0SXRlbSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRp
ZmllcigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6c2V0SXRlbSBmYWlsZWQgYmVjYXVzZSBzdG9y
YWdlIG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CkBAIC0xMTQsMjMgKzExNiwyMiBAQCB2b2lkIFN0
b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3Rv
cmFnZUFyZWFJbXBsKiBzbwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChrZXkpOwog
Ci0gICAgaWYgKG1fbWFwSUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbW92ZUl0ZW0oKm1fbWFwSUQsIHNvdXJjZUFyZWEtPmlk
ZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
UmVtb3ZlSXRlbSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmll
cigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFw
IElEIGlzIGludmFsaWQiKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXIoV2ViQ29y
ZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEpCiB7Ci0g
ICAgY29ubmVjdCgpOwotCisgICAgY29ubmVjdFN5bmMoKTsKICAgICByZXNldFZhbHVlcygpOwog
CiAgICAgbV9oYXNQZW5kaW5nQ2xlYXIgPSB0cnVlOwogICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxT
dG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CiAKLSAgICBpZiAobV9tYXBJRCkKLSAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xlYXIo
Km1fbWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwgc291cmNl
RnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3Rl
QXJlYUlkZW50aWZpZXIpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VB
cmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVhTWFwOjpjbGVhciBmYWlsZWQgYmVjYXVzZSBzdG9yYWdl
IG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CkBAIC0xNTEsMjEgKzE1MiwxMSBAQCB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpyZXNldFZhbHVlcygpCiAKIFN0b3JhZ2VNYXAmIFN0b3JhZ2VBcmVhTWFwOjpl
bnN1cmVNYXAoKQogewotICAgIGNvbm5lY3QoKTsKKyAgICBjb25uZWN0U3luYygpOwogCi0gICAg
aWYgKCFtX21hcCkgeworICAgIGlmICghbV9tYXApCiAgICAgICAgIG1fbWFwID0gbWFrZVVuaXF1
ZTxTdG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CiAKLSAgICAgICAgaWYgKG1fbWFwSUQpIHsK
LSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIGEgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91
c0lQQ1Njb3BlIHRvIHByZXZlbnQgVUlQcm9jZXNzIGhhbmdzIGluIGNhc2Ugd2UgcmVjZWl2ZSBh
IHN5bmNocm9ub3VzIElQQyBmcm9tIHRoZSBVSVByb2Nlc3Mgd2hpbGUgd2UncmUgd2FpdGluZyBm
b3IgYSByZXNwb25zZQotICAgICAgICAgICAgLy8gZnJvbSBvdXIgU3RvcmFnZU1hbmFnZXJTZXQ6
OkdldFZhbHVlcygpIElQQy4gVGhpcyBJUEMgbWF5IGJlIHZlcnkgc2xvdyBiZWNhdXNlIGl0IG1h
eSBuZWVkIHRvIGZldGNoIHRoZSB2YWx1ZXMgZnJvbSBkaXNrIGFuZCB0aGVyZSBtYXkgYmUgYSBs
b3Qgb2YgZGF0YS4KLSAgICAgICAgICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29w
ZSB1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwotICAgICAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gdmFsdWVzOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldFZhbHVlcygqbV9tYXBJRCksIE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKLSAg
ICAgICAgICAgIG1fbWFwLT5pbXBvcnRJdGVtcyhXVEZNb3ZlKHZhbHVlcykpOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJl
YU1hcDo6ZW5zdXJlTWFwIGZhaWxlZCB0byBsb2FkIGZyb20gbmV0d29yayBwcm9jZXNzIGJlY2F1
c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwotICAgIH0KICAgICByZXR1cm4gKm1fbWFw
OwogfQogCkBAIC0yNTksOCArMjUwLDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hh
bmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgIG1fbWFw
LT5zZXRJdGVtSWdub3JpbmdRdW90YShrZXksIG5ld1ZhbHVlKTsKIH0KIAotdm9pZCBTdG9yYWdl
QXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdl
QXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2
ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3Jh
Z2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIHVpbnQ2NF90
IG1lc3NhZ2VJZGVudGlmaWVyKQogeworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFz
dEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0
SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgaWYgKCFz
dG9yYWdlQXJlYUltcGxJRCkgewogICAgICAgICAvLyBUaGlzIHN0b3JhZ2UgZXZlbnQgb3JpZ2lu
YXRlcyBmcm9tIGFub3RoZXIgcHJvY2VzcyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBjaGFuZ2Ug
dG8gb3VyIHN0b3JhZ2UgYXJlYSBtYXAuCiAgICAgICAgIGFwcGx5Q2hhbmdlKGtleSwgbmV3VmFs
dWUpOwpAQCAtMjcyLDggKzI2NywxMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0
b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZQogICAgICAg
ICBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHN0b3JhZ2VBcmVhSW1wbElELCBrZXksIG9sZFZh
bHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xl
YXJDYWNoZSgpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKHVpbnQ2NF90IG1lc3Nh
Z2VJZGVudGlmaWVyKQogeworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRs
ZWRNZXNzYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxl
ZE1lc3NhZ2VJZGVudGlmaWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgcmVzZXRWYWx1ZXMo
KTsKIH0KIApAQCAtMzQ0LDQyICszNDMsNzkgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0
Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW0KICAg
ICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJh
bWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5n
LCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpz
ZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGUgbW9kZSkKK3sKKyAgICBhdXRvJiBpcGNDb25uZWN0
aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOworICAgIGF1dG8gbmFtZXNwYWNlSWRlbnRpZmllciA9IG1fbmFt
ZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpOworICAgIGF1dG8gb3JpZ2luRGF0YSA9IG1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKTsKKyAgICBhdXRvIHRvcE9yaWdpbkRhdGEgPSBtX25hbWVzcGFj
ZS50b3BMZXZlbE9yaWdpbigpID8gbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKS0+ZGF0YSgp
IDogb3JpZ2luRGF0YTsKKyAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7
IHRvcE9yaWdpbkRhdGEsIG9yaWdpbkRhdGEgfTsKKyAgICBhdXRvIHR5cGUgPSBtX3R5cGU7Cisg
ICAgaWYgKCh0eXBlID09IFN0b3JhZ2VUeXBlOjpMb2NhbCB8fCB0eXBlID09IFN0b3JhZ2VUeXBl
OjpUcmFuc2llbnRMb2NhbCkgJiYgbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSkKKyAgICAg
ICAgdHlwZSA9IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDsKKworICAgIGlmIChtb2RlID09
IFNlbmRNb2RlOjpTeW5jKSB7CisgICAgICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZW1vdGVB
cmVhSWRlbnRpZmllcjsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXM7Cisg
ICAgICAgIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyOworICAgICAgICBpcGNDb25uZWN0aW9u
LnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3Jh
Z2VBcmVhU3luYyh0eXBlLCBtX2lkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdp
biksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVh
U3luYzo6UmVwbHkocmVtb3RlQXJlYUlkZW50aWZpZXIsIGl0ZW1zLCBtZXNzYWdlSWRlbnRpZmll
ciksIDApOworICAgICAgICBkaWRDb25uZWN0KHJlbW90ZUFyZWFJZGVudGlmaWVyLCBXVEZNb3Zl
KGl0ZW1zKSwgbWVzc2FnZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCB3ZWFrQ29ubmVjdGlvbiA9IFdlYWtQdHIgeyBpcGNDb25uZWN0aW9uIH1dKGF1dG8g
cmVtb3RlQXJlYUlkZW50aWZpZXIsIGF1dG8gaXRlbXMsIGF1dG8gbWVzc2FnZUlkZW50aWZpZXIp
IG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gZGlk
Q29ubmVjdChyZW1vdGVBcmVhSWRlbnRpZmllciwgV1RGTW92ZShpdGVtcyksIG1lc3NhZ2VJZGVu
dGlmaWVyKTsKKworICAgICAgICBpZiAod2Vha0Nvbm5lY3Rpb24gJiYgcmVtb3RlQXJlYUlkZW50
aWZpZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgd2Vha0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShyZW1v
dGVBcmVhSWRlbnRpZmllciksIDApOworICAgIH07CisKKyAgICBpcGNDb25uZWN0aW9uLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9T
dG9yYWdlQXJlYSh0eXBlLCBtX2lkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdp
biksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBTdG9yYWdlQXJlYU1h
cDo6Y29ubmVjdFN5bmMoKQoreworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGU6OlN5bmMpOwor
fQorCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0KCkKIHsKLSAgICBpZiAobV9tYXBJRCkK
KyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3RvcmFnZUFyZWFJZGVudGlmaWVyIG1hcElEOwotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAg
Y2FzZSBTdG9yYWdlVHlwZTo6TG9jYWw6Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50
TG9jYWw6Ci0gICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBtX25h
bWVzcGFjZS50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1RyYW5zaWVudExv
Y2FsU3RvcmFnZUFyZWEobV9uYW1lc3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVs
T3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWE6OlJl
cGx5KG1hcElEKSwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3Jp
Z2luLT5kYXRhKCkpLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9M
b2NhbFN0b3JhZ2VBcmVhOjpSZXBseShtYXBJRCksIDApOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VB
cmVhKG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5k
YXRhKCkpLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TZXNzaW9u
U3RvcmFnZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7Ci0gICAgfQorICAgIHNlbmRDb25uZWN0TWVz
c2FnZShTZW5kTW9kZTo6QXN5bmMpOworfQogCi0gICAgaWYgKG1hcElELmlzVmFsaWQoKSkgewot
ICAgICAgICBtX21hcElEID0gbWFwSUQ7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwotICAgIH0KK3ZvaWQgU3RvcmFnZUFyZWFN
YXA6OmRpZENvbm5lY3QoU3RvcmFnZUFyZWFJZGVudGlmaWVyIHJlbW90ZUFyZWFJZGVudGlmaWVy
LCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmIGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2Fn
ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdl
SWRlbnRpZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlQXJlYUlkZW50
aWZpZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbW90ZUFyZWFJZGVu
dGlmaWVyID0gcmVtb3RlQXJlYUlkZW50aWZpZXI7CisgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0
b3JhZ2VNYXA+KG1fcXVvdGFJbkJ5dGVzKTsKKyAgICBtX21hcC0+aW1wb3J0SXRlbXMoV1RGTW92
ZShpdGVtcykpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KCkKIHsKLSAg
ICBpZiAoIW1fbWFwSUQpCisgICAgaWYgKCFtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm47CiAKICAgICByZXNldFZhbHVlcygpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiAKICAgICBpZiAoYXV0byogbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpE
aXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKCptX21hcElEKSwgMCk7CisgICAgICAgIG5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYSgqbV9yZW1vdGVBcmVhSWRlbnRp
ZmllciksIDApOwogCi0gICAgbV9tYXBJRCA9IHsgfTsKKyAgICBtX3JlbW90ZUFyZWFJZGVudGlm
aWVyID0geyB9OworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IDA7CiB9CiAK
IHZvaWQgU3RvcmFnZUFyZWFNYXA6OmluY3JlbWVudFVzZUNvdW50KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDA2
ZTYzNTZjYjEzMzkyNjZiYTM0NTQ1OTYyNTM4MDQ2N2I1ODBiMTcuLmM2MjcxZDlmNzllY2JhYzNl
NGY4ZjhiODdmODdjYzA0ZWQzYmY4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJT
dG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CkBAIC02Niw4ICs2Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Rv
cmFnZUFyZWFJZGVudGlmaWVyPiYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSUQ7
IH0KKyAgICBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjb25uZWN0KCk7CiAgICAgdm9pZCBkaXNj
b25uZWN0KCk7CiAKICAgICB2b2lkIGluY3JlbWVudFVzZUNvdW50KCk7CkBAIC03OCw4ICs4MCw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVJdGVtKHVpbnQ2NF90IG1hcFNlZWQsIGNv
bnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGRpZENsZWFyKHVpbnQ2NF90IG1hcFNlZWQpOwog
Ci0gICAgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXI+JiBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgY2xlYXJDYWNoZSgpOworICAgIHZvaWQg
ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyPiYgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBjbGVhckNh
Y2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVzZXRWYWx1ZXMo
KTsKICAgICBXZWJDb3JlOjpTdG9yYWdlTWFwJiBlbnN1cmVNYXAoKTsKQEAgLTkwLDEyICs5Miwx
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVu
dChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAotICAgIHZvaWQgY29ubmVjdCgpOworICAg
IGVudW0gY2xhc3MgU2VuZE1vZGUgOiBib29sIHsgQXN5bmMsIFN5bmMgfTsKKyAgICB2b2lkIHNl
bmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZSk7CisgICAgdm9pZCBjb25uZWN0U3luYygpOworICAg
IHZvaWQgZGlkQ29ubmVjdChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiYsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKIAorICAgIFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV9sYXN0SGFuZGxlZE1l
c3NhZ2VJZGVudGlmaWVyIHsgMCB9OwogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBtX25hbWVz
cGFjZTsKICAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlN0b3JhZ2VNYXA+IG1fbWFwOwotICAgIHN0
ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX21hcElEOworICAgIHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX3JlbW90ZUFyZWFJZGVudGlmaWVyOwogICAg
IEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwogICAgIHVpbnQ2
NF90IG1fY3VycmVudFNlZWQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCmluZGV4IDJkMWE4MTNmY2I4NzU3YjE4NDI3NjI5Mzgw
Njk3ZmM3YmU5YmE5YjUuLjZkZWU4ZThlMzVhYjViNjg4NjZmMjIwMGE3MDZhODI5MzdmZGJjYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw2IEBAIG1lc3NhZ2Vz
IC0+IFN0b3JhZ2VBcmVhTWFwIE5vdFJlZkNvdW50ZWQgewogICAgIERpZFJlbW92ZUl0ZW0odWlu
dDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQpCiAKLSAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0
cmluZyBrZXksIFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3Ry
aW5nKQotICAgIENsZWFyQ2FjaGUoKQorICAgIERpc3BhdGNoU3RvcmFnZUV2ZW50KHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUltcGxJ
RCwgU3RyaW5nIGtleSwgU3RyaW5nIG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUsIFN0cmluZyB1
cmxTdHJpbmcsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQorICAgIENsZWFyQ2FjaGUodWlu
dDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY5MjIxMDg5NjhmMzU5OGZkMjAxYWFhY2FmMGVjMDM3NWM0NmVmOTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZW51bSBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRidWdzcHkvd2Via2l0YnVnc3B5L3Rlc3Rz
L3JhZGFyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0YnVnc3B5
L3dlYmtpdGJ1Z3NweS90ZXN0cy9yYWRhcl91bml0dGVzdC5weQppbmRleCAzMDA0OGEyZmQwZjUy
YWFhZjg2YTA0ODQ0Y2Y1MjE0Mjc4MTg2MmQ2Li4xYzUyMTM0ZTM4YWQ2YmM0ZTJjOGEzY2E4MGRl
NGFiZmY1ZDZlZDA4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRi
dWdzcHkvd2Via2l0YnVnc3B5L3Rlc3RzL3JhZGFyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGJ1Z3NweS93ZWJraXRidWdzcHkvdGVzdHMvcmFkYXJfdW5p
dHRlc3QucHkKQEAgLTk5LDYgKzk5LDcgQEAgY2xhc3MgVGVzdEdpdEh1Yih1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgZGVmIHRlc3RfY29tbWVudHMoc2VsZik6CiAgICAgICAgIHdpdGggbW9ja3Mu
UmFkYXIoaXNzdWVzPW1vY2tzLklTU1VFUyk6CiAgICAgICAgICAgICBjb21tZW50cyA9IHJhZGFy
LlRyYWNrZXIoKS5pc3N1ZSgxKS5jb21tZW50cworICAgICAgICAgICAgcHJpbnQoY29tbWVudHMp
CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb21tZW50cyksIDIpCiAgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRzWzBdLnRpbWVzdGFtcCwgMTYzOTUxMTAyMCkK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudHNbMF0uY29udGVudCwgJ1dhcyBh
YmxlIHRvIHJlcHJvZHVjZSBvbiB2ZXJzaW9uIDEuMi4zJykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449351</attachid>
            <date>2022-01-17 15:22:41 -0800</date>
            <delta_ts>2022-01-18 16:01:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220117152240.patch</filename>
            <type>text/plain</type>
            <size>61435</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uMWU0Y2ZiODkwMjg1ODcwMjExOWFjODA3Yzk2OTgz
YzAyNWE3N2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5h
bHlzaXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQg
YWZ0ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQw
ZTc5YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLjM2OTAxNmVlMTVkN2NkOGVlOGQ4MjMz
NzJmOTdiZDYwZmE4NjBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0
b3JhZ2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3lu
YyB3aXRoIGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQg
cGVyZm9ybXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0
byByZW1vdGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQg
dHdvIHN5bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9y
IGdldHRpbmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0
VmFsdWVzOiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBX
ZSBjYW4gbWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RU
b1N0b3JhZ2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBw
cm9jZXNzIHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRo
ZSB3YWl0IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291
bGQgcHJld2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdl
QXJlYU1hcCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBk
b24ndCBhY3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBm
b3Igb3BlcmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdl
IENvbm5lY3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBw
cmV3YXJtaW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5
IGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25u
ZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5k
bGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVj
dFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdl
KSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0
Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBw
cm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0
aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9m
IG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VB
cmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5
bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0
b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5l
cnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRj
aEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdl
QXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1
M2E5ZjY3MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFt
ZSgpLm1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
VGhpcyBlYWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQg
aXRlbXMgZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9j
YWxTdG9yYWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlm
TmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2Fs
U3RvcmFnZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRh
YTc0YTVjMS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBG
cmFtZTo6ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1l
KCkpOwotICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2Fs
U3RvcmFnZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdD
b3VudDsKLX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVBy
ZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxv
YXRTaXplIEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVT
Y3JlZW5TaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2Qy
ZmQ3ZmM0MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBi
ZGQzMzk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29s
IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0g
ICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9j
YWxTdG9yYWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lk
IGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRF
dmVudFJlZ2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9z
ZWxmT25seVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsg
MCB9OwogCiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggMjUxYmQ0MjlkNjIwNjI5OTdmNzI4ZGMwZGM2NjI1
ZjE0ZjFiNWM3OC4uNzc0NjE0MGY3ODQwODFiMDc4NmExNWQ2MDFmZWZjYTJjOTFjMTBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJld2FybSgpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5o
CmluZGV4IDIyMDU4N2VjODZiYTVjNTE3MWI2NzNiMTc3YTQ2NjFhMjJjZjMxM2QuLmYzY2ZlNGNk
OTVmZDY0NjBiMDk0YzljYjBhNzE0ZmRjM2Q4Y2Y3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VUeXBlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
U3RvcmFnZVR5cGUgOiB1aW50OF90IHsKQEAgLTQ0LDMgKzQ2LDE2IEBAIGlubGluZSBib29sIGlz
UGVyc2lzdGVudExvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdG9yYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLAorICAgICAgICBXZWJD
b3JlOjpTdG9yYWdlVHlwZTo6U2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6
OkxvY2FsLAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCBjODRlYWQ0
MzBhYjE1ZDk0ZmQ4ZWYyNTMzZDZlNDkyODcyYjZlMTJiLi4wYzQxYWI5MmUzMWY0OWQ2YTVhOTQ5
YTQwMzcyOGMyYWE5ZDA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBsaXN0ZW5l
clVuaXF1ZUlEIDogbV9ldmVudExpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNo
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2Fj
aGUoMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJh
c2UmIFN0b3JhZ2VBcmVhOjplbnN1cmVEYXRhYmFzZSgpIGNvbnN0CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQp
OwogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpIHsK
ICAgICAgICAgYXV0byBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gbGlzdGVuZXJVbmlxdWVJ
RCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1w
bElEKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxpc3Rl
bmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZl
bnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlz
cGF0Y2hTdG9yYWdlRXZlbnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjYmRkZDJlMzA0OGQyODcwYWUw
N2EwYWFkZjRlZDk3YjMxMDQzNmM5Li4zY2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4Yzkx
OWQ2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkRm9yVHJhbnNpZW50U3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW8KICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhID0gbnVsbHB0
cjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3
b3JrUXVldWUpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7
CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZUFyZWEpIHsKICAgICAgICAgaWYgKCFtX3BhdGguaXNF
bXB0eSgpKQpAQCAtMTc3LDExICsxNzcsMTEgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWMKICAg
ICB9CiAKICAgICBBU1NFUlQobV9wYXRoLmlzRW1wdHkoKSB8fCBtX2xvY2FsU3RvcmFnZUFyZWEt
PnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6OlNRTGl0ZSk7Ci0gICAgbV9sb2NhbFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX2xvY2FsU3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVy
biBtX2xvY2FsU3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIAotU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAg
IGlmICghbV90cmFuc2llbnRTdG9yYWdlQXJlYSkgewogICAgICAgICBtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhID0gbWFrZVVuaXF1ZTxNZW1vcnlTdG9yYWdlQXJlYT4ob3JpZ2luLCBTdG9yYWdlQXJl
YUJhc2U6OlN0b3JhZ2VUeXBlOjpMb2NhbCk7CkBAIC0xODksNyArMTg5LDcgQEAgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVAKICAgICB9CiAKICAgICBBU1NFUlQobV90cmFuc2llbnRTdG9yYWdlQXJl
YS0+dHlwZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6TWVtb3J5KTsKLSAgICBtX3RyYW5z
aWVudFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX3RyYW5zaWVu
dFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuaAppbmRleCBhODg4NDJlMjk1ZjJkOTBhOGYwZThiYmE4ZWQ3YjNlYTI3
ZDU4YThiLi5jZGNiNjgxMmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU2LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0xv
Y2FsU3RvcmFnZSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Ry
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YS4uZDk3
NGU2ZGIzNTUzODcxNDI1YmFlNjJjMDcyMjU3MjEzMmM2ZDQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTYyNSwyNCArNjI1LDMzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwg
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgdG9wT3JpZ2luIH07Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmxvY2FsU3RvcmFn
ZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgbV9xdWV1ZS5jb3B5UmVmKCkpKTsKLX0K
KyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwor
ICAgIGF1dG8mIG9yaWdpblN0b3JhZ2VNYW5hZ2VyID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihvcmlnaW4pOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZXN1bHRJZGVudGlmaWVyOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2Fs
OgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxT
dG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG1f
cXVldWUuY29weVJlZigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmln
aW5TdG9yYWdlTWFuYWdlci5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0
cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb246CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIg
PSBvcmlnaW5TdG9yYWdlTWFuYWdlci5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFy
ZWFSZWdpc3RyeSkuY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG5hbWVzcGFjZUlkZW50aWZpZXIpOworICAg
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luIH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdp
bikpOworICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5n
ZXRTdG9yYWdlQXJlYShyZXN1bHRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdElkZW50aWZpZXIsIHN0b3JhZ2VBcmVhLT5hbGxJdGVtcygpLCBTdG9y
YWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKKworICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7
IH0sIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9y
aWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBp
ZGVudGlmaWVyKSk7CisgICAgY29ubmVjdFRvU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgdHlwZSwg
c291cmNlSWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaXNj
b25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02NjksMTYgKzY3OCw2IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0
byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEoaWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+
YWxsSXRlbXMoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci19
Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXgg
ZDIxZDY1NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJhNTNhOWU5MS4uYTFmMzA3NjQ0Njc2ZThk
NTM1NjViZmVjODM3OTY3OTZjMzQ2YTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgpAQCAtNDQsNiArNDUsNyBAQCBj
bGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTA4LDEyICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9y
IFdlYlN0b3JhZ2UuCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIp
PiYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKLSAgICB2b2lkIGNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQg
Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRWYWx1ZXMoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Jik+JiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNl
ZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYga2V5
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRf
dCBzZWVkLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTUxNmFkYTk4MzJmZGVmNWI2ODE0OTQ0MjE1ZjY4OGZkYTgx
YzYxNS4uZmZjODZmOWQwOWZkNDU5NTUzNWY4NzUwNTM5NDVhMThhNzczMWYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00MCwxMiArNDAsMTAgQEAK
ICAgICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVj
dGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4s
IFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KIAotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRv
U3RvcmFnZUFyZWEoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cikgQXN5bmMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
IHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFt
ZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgogICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xv
bmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFZhbHVl
cyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cwogICAgIFNldEl0ZW0oV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5n
IGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAg
ICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVj
dGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkNDBlNDBiNjE3M2MyOGQ0NGM1N2I4ZTIwZjcy
YmNiNTExMDQxZGI1Li5iNzM0MmU0MGVmMWY2YmI1Y2RiNmZiZmIyZWYxMjNmOWQwNmU4ZTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjphZGRTdG9yYWdlQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8TWVtbwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1TdG9yYWdlQXJlYUlk
ZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllcikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6
OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIgbmFtZXNwYWNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3N0b3Jh
Z2VBcmVhc0J5TmFtZXNwYWNlLmdldChuYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlk
ZW50aWZpZXIuaXNWYWxpZCgpKSB7CkBAIC04NCw3ICs4NCw4IEBAIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJ
UEM6OkNvCiAgICAgaWYgKCFzdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciB7IH07CiAKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlv
bik7CisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50
aWZpZXIpOworCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaAppbmRleCBmYzE3NjFiZTkwMGY4ZTRkYTc3NTRiMDE4ZjFkYmUyZTM4ZmI3ZGZhLi4wZjdi
ZTRjNWU1Y2M4OGFjMzgyOWMxOTI1MDFmY2M2ODI2MjVlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
b21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJh
MTQ5OThmOGYzYzEuLjU3OTdlOWM1NDAyMWQyYThkODBmMjgyMWUxZTUyMWEzMDhkMmIzZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9y
YWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAordWludDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVuSWRlbnRpZmllcigwKTsKKyAg
ICByZXR1cm4gKytjdXJyZW5JZGVudGlmaWVyOworfQorCiBTdG9yYWdlQXJlYUJhc2U6OlN0b3Jh
Z2VBcmVhQmFzZSh1bnNpZ25lZCBxdW90YSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCi0gICAgOiBtX2lkZW50aWZpZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKQorICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhSWRlbnRpZmllcjo6Z2VuZXJhdGVU
aHJlYWRTYWZlKCkpCiAgICAgLCBtX3F1b3RhKHF1b3RhKQogICAgICwgbV9vcmlnaW4ob3JpZ2lu
KQogewpAQCAtMzksMTEgKzQ1LDExIEBAIFN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFnZUFyZWFCYXNl
KHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yCiAKIFN0b3Jh
Z2VBcmVhQmFzZTo6flN0b3JhZ2VBcmVhQmFzZSgpID0gZGVmYXVsdDsKIAotdm9pZCBTdG9yYWdl
QXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlv
bikKK3ZvaWQgU3RvcmFnZUFyZWFCYXNlOjphZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIEFTU0VSVCghbV9saXN0ZW5lcnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAgIEFT
U0VSVCghbV9saXN0ZW5lcnMuY29udGFpbnMoY29ubmVjdGlvbikgfHwgbV9saXN0ZW5lcnMuZ2V0
KGNvbm5lY3Rpb24pID09IGlkZW50aWZpZXIpOwogCi0gICAgbV9saXN0ZW5lcnMuYWRkKGNvbm5l
Y3Rpb24pOworICAgIG1fbGlzdGVuZXJzLnNldChjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6OnJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgY29ubmVjdGlvbikKQEAgLTU4LDE5ICs2NCwxOSBAQCBib29sIFN0b3JhZ2VBcmVh
QmFzZTo6aGFzTGlzdGVuZXJzKCkgY29uc3QKIAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6Om5vdGlm
eUxpc3RlbmVyc0Fib3V0Q2xlYXIoKQogewotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
bGlzdGVuZXJzKQotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVz
c2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uLCBpZGVudGlmaWVyXSA6IG1fbGlzdGVu
ZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJ
ZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFN0b3JhZ2VB
cmVhQmFzZTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VD
b25uZWN0aW9uLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIHNvdXJjZUltcGxJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KHNvdXJjZUltcGxJZGVudGlmaWVyKTsKIAotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
bGlzdGVuZXJzKSB7CisgICAgZm9yIChhdXRvJiBbY29ubmVjdGlvbiwgaWRlbnRpZmllcl0gOiBt
X2xpc3RlbmVycykgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXI+IGltcGxJZGVudGlmaWVyOwogICAgICAgICBpZiAoY29ubmVjdGlvbiA9PSBzb3VyY2VD
b25uZWN0aW9uKQogICAgICAgICAgICAgaW1wbElkZW50aWZpZXIgPSBzb3VyY2VJbXBsSWRlbnRp
ZmllcjsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KGltcGxJZGVudGlmaWVyLCBrZXks
IG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNz
YWdlSWRlbnRpZmllcigpKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuaAppbmRleCBlZDNlZDE0MjA2ZTE3NWRjYWNjOGMxZjk5NDkwNzUwNTQ1ZTM0ZTk4Li5l
ZmM4ZmI5NjQ4OTEwN2M4OGUzM2NkMTIzZjYwOWEzNmYyMWFlZDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQ3LDYg
KzQ4LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWFCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFN0
b3JhZ2VBcmVhQmFzZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0b3JhZ2VBcmVhQmFz
ZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIHVp
bnQ2NF90IG5leHRNZXNzYWdlSWRlbnRpZmllcigpOwogICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVh
QmFzZSgpOwogCiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IFNRTGl0ZSwgTWVtb3J5IH07
CkBAIC01OSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHVuc2ln
bmVkIHF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9xdW90YTsgfQotICAgIHZvaWQgYWRkTGlzdGVu
ZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CisgICAgdm9pZCBhZGRMaXN0ZW5lcihJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIpOwogICAgIHZv
aWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBo
YXNMaXN0ZW5lcnMoKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUxpc3RlbmVyc0Fib3V0Q2xlYXIo
KTsKQEAgLTc3LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIHVuc2lnbmVkIG1fcXVvdGE7CiAgICAgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG1fb3JpZ2luOwotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4g
bV9saXN0ZW5lcnM7CisgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXI+IG1fbGlzdGVuZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4YjUy
MWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyLi5jMWY0M2ExOGM3MmJmYjI1ZmY4
Y2M2MzE0ZjFjNzgzNzFhNmI5MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTMwNSw2ICszMDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAg
ICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywK
KyAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VUeXBlJywKICAgICAgICAgJ1dlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYkxvY2tJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLApAQCAtMzQ3LDYg
KzM0OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
VGV4dENoZWNrZXJSZXF1ZXN0SUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTUyNjMwYTMwMzIxMDc0OGI4OGEwMTlhMTNjNDBhMGRh
ZjIwM2QxNC4uNTRhNGIyMTAxYTM1N2FlMTQ5OGU4ZTg2NzQxZTg3NjA1MjI1YTEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDU3
LDYgKzE0NTcsNyBAQAogCQk5M0FCOUI0RTI1NzU2N0UyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI0MjI1NzQ5MjhDMDA5OEIxMEUgLyogU3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggKi87IH07CiAJCTkzQUI5QjU1
MjU3NUEyNzYwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQUI5QjRGMjU3NTg5MTEwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJOTNBQjlCNTYyNTc1QTI4QjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQjlCNTEyNTc1ODkxMTAwOThCMTBF
IC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5M0FFQzE2MTI3OEY4Q0QzMDA2NjY2NkYgLyogU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0FFQzE2MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmggKi87IH07CiAJCTkzQjBBNjc1MjZENUFEQ0YwMEFBMjFFNCAvKiBXZWJQZXJt
aXNzaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9s
bGVyLmggKi87IH07CiAJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYx
NDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCTkzQjI2MTRF
MjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2
IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggKi87IH07CkBAIC01MzA1LDYgKzUzMDYsNyBAQAog
CQk5M0FCOUI1MjI1NzU4OTEyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQUI5QjUzMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdl
ck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUI5QjU0MjU3NTg5
MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2du
aXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjBBNjcz
MjZENUE3MkUwMEFBMjFFNCAvKiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjBBNjc0MjZENUE3MkUwMEFBMjFFNCAv
KiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9yYWdlRGF0YWJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjEsNiArNzA2Myw3IEBACiAJCQkJMUFD
RUNEMjIxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmNwcCAqLywKIAkJCQkxQUNF
Q0QyMzE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCAqLywKIAkJCQkxQTMzNERF
QTE2REU4QjY4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gKi8sCisJCQkJ
OTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oICov
LAogCQkJCTQ2NUY0RTA1MjMwQjJFN0MwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
Zmllci5oICovLAogCQkJCTFBMTc2MzU0MTZCMUQ1RDAwMEQ4OEZENiAvKiBTdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAgKi8sCiAJCQkJMUExNzYzNTUxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsLmggKi8sCkBAIC0xMzI2Myw2ICsxMzI2Niw3IEBACiAJCQkJOTNFNzk5REMy
NzYxMjEwODAwNzQwMDhBIC8qIFN0b3JhZ2VBcmVhQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFEMzMwNkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0FFQzE2MTI3OEY4Q0QzMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTMzNERFRTE2REU4Rjg4MDA2QThF
MzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFNzk5
QzcyNzYwMjc0NjAwNzQwMDhBIC8qIFN0b3JhZ2VBcmVhUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAwMjI3MGE1M2FmOWJhOGJm
ODBkN2MzYjNkY2RjOGNlYjU2NTE3NmUzLi44ZDNiNTdiZDE4ZGMyZTA1Mzg0Y2NmMDhkN2Q5Yzg5
MDdjZDA0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U3RvcmFnZUFyZWFN
YXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogc3RvcmFnZUFy
ZWFNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdG9yYWdlQXJlYU1hcChtYWtlT2JqZWN0
SWRlbnRpZmllcjxTdG9yYWdlQXJlYUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBpZiAoYXV0byBzdG9yYWdlQXJlYU1hcCA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJZGVudGlmaWVyPFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgICAg
ICBzdG9yYWdlQXJlYU1hcC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggZjgxNjc3NWE3OTk0YWIyMmNjMmZiYzI2MDAwZTlkMjJmMmZjMmM2YS4uMjQ1
NTk4MWIwMzYxNjkyYTUyNjU0MjBmZWVkYzRiNGYyZDQwZGEyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTE4OSw4ICsxMTg5LDggQEAgdm9pZCBXZWJQcm9j
ZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKiBjb25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOwogICAg
IEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPT0g
Y29ubmVjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRvVmVj
dG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKLSAgICAgICAgc3RvcmFnZUFyZWFNYXAt
PmRpc2Nvbm5lY3QoKTsKKyAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fc3RvcmFn
ZUFyZWFNYXBzLmtleXMoKSkpCisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXBzLmdldChrZXkpLT5k
aXNjb25uZWN0KCk7CiAKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkp
IHsKICAgICAgICAgYXV0byBpZGJDb25uZWN0aW9uID0gcGFnZS0+Y29yZVBhZ2UoKS0+b3B0aW9u
YWxJREJDb25uZWN0aW9uKCk7CkBAIC0xNjk3LDIwICsxNjk3LDIwIEBAIHZvaWQgV2ViUHJvY2Vz
czo6bm9uVmlzaWJsZVByb2Nlc3NNZW1vcnlDbGVhbnVwVGltZXJGaXJlZCgpCiAKIHZvaWQgV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFy
ZWFNYXApCiB7Ci0gICAgQVNTRVJUKHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Ci0gICAg
QVNTRVJUKCFtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucygqc3RvcmFnZUFyZWFNYXAuaWRlbnRp
ZmllcigpKSk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcHMuc2V0KCpzdG9yYWdlQXJlYU1hcC5pZGVu
dGlmaWVyKCksICZzdG9yYWdlQXJlYU1hcCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFn
ZUFyZWFNYXAuaWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV9zdG9yYWdlQXJlYU1hcHMuY29u
dGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLmFkZChpZGVudGlmaWVy
LCBzdG9yYWdlQXJlYU1hcCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6dW5yZWdpc3RlclN0b3Jh
Z2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1hcCkKIHsKLSAgICBBU1NFUlQo
c3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1h
cHMuY29udGFpbnMoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkpOwotICAgIEFTU0VSVCht
X3N0b3JhZ2VBcmVhTWFwcy5nZXQoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkgPT0gJnN0
b3JhZ2VBcmVhTWFwKTsKLSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoKnN0b3JhZ2VBcmVh
TWFwLmlkZW50aWZpZXIoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAu
aWRlbnRpZmllcigpOworICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVyKS5n
ZXQoKSA9PSAmc3RvcmFnZUFyZWFNYXApOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShp
ZGVudGlmaWVyKTsKIH0KIAotU3RvcmFnZUFyZWFNYXAqIFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVh
TWFwKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAorV2Vha1B0cjxTdG9y
YWdlQXJlYU1hcD4gV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXBz
LmdldChpZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDQ2OWEwYTVlMTkxZGNmNDcwMTMyNzE2YjY3MmVkMWMyZTYxZjMxMTcuLmU4N2Q3MzNkNzZh
ZGVlMGNiOGJhZGI4N2Y1Y2E3NTVkYTYyZDcwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNp
bmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
Ci0jaW5jbHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1
ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJWaWV3VXBk
YXRlRGlzcGF0Y2hlci5oIgpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwogICAgIHZvaWQgdW5yZWdp
c3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7Ci0gICAgU3RvcmFnZUFyZWFNYXAq
IHN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhSWRlbnRpZmllcikgY29uc3Q7CisgICAgV2Vha1B0
cjxTdG9yYWdlQXJlYU1hcD4gc3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
KSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7CkBAIC03NDIsNyArNzQyLDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoQ291bnRlZFNldDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcj4gbV9zd1JlZ2lzdHJhdGlvbkNvdW50czsKICNlbmRpZgogCi0gICAg
SGFzaE1hcDxTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhTWFwKj4gbV9zdG9yYWdl
QXJlYU1hcHM7CisgICAgSGFzaE1hcDxTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFdlYWtQdHI8
U3RvcmFnZUFyZWFNYXA+PiBtX3N0b3JhZ2VBcmVhTWFwczsKICAgICAKICAgICAvLyBQcmV3YXJt
ZWQgV2ViUHJvY2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklEIHlldCwg
d2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCiAgICAgLy8gQnkgdGhlIHRpbWUgdGhl
IFdlYlByb2Nlc3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHNl
c3Npb25JRC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IGIxMmM1OGMwYWFkNjdlOTk1NzcwNmUyOWU2ZGU2
NTY5ZWZlNjQ4NDYuLjFmOWI0MmNiMTI3ZDZkYzAyOGE2ODA1OWUyNzEwMWZjNzk2OTQ0NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcApAQCAtMTEyLDIwICsxMTIsMTAgQEAgc2l6ZV90IFN0b3JhZ2VBcmVhSW1w
bDo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU3Rv
cmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCgpCit2b2lkIFN0b3JhZ2VBcmVhSW1w
bDo6cHJld2FybSgpCiB7Ci0gICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUg
bmV0d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9p
ZCBTdG9yYWdlQXJlYUltcGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KCkKLXsKLSAgICAvLyBTdG9y
YWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNvIHRoZXJlJ3Mg
bm90aGluZyB0byBkbyBoZXJlLgotfQotCi12b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRh
YmFzZUlmSWRsZSgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0
b3JhZ2VBcmVhTWFwLT5jb25uZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuaAppbmRleCA3OWUxNGI5MWY4YWM2ZDgyZmU3OTJhYzA2ZDM5NGVkNzY1ODQyYTYyLi5hMzVk
NjY3OTI1MDVmMGMwM2U1OTA4NzAwMWUwY2E0ZmRhN2E2Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjEs
OSArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkp
IG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNy
ZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRs
ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJld2FybSgpIGZpbmFsOwogCiAgICAgSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJl
YU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAyY2Y3YTZkNGI2MDA1YzFkN2VjMjU2YmQ2Mzg4NzYyOTRl
OWU0Y2YyLi5kZjRjMjZmMmFmZjMyOTFkOTE5ZGVkNTNkZDc2MjdiNThmMjg5MjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCkBAIC01MSwxNyArNTEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VO
YW1lc3BhY2VJbXBsJiBzdG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+JiYgc2VjdXJpdHlPcmlnaW4pCi0gICAgOiBtX25hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNl
KQorICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSkKKyAgICAsIG1fbmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX3NlY3VyaXR5
T3JpZ2luKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKQogICAgICwgbV9xdW90YUluQnl0ZXMoc3Rv
cmFnZU5hbWVzcGFjZS5xdW90YUluQnl0ZXMoKSkKICAgICAsIG1fdHlwZShzdG9yYWdlTmFtZXNw
YWNlLnN0b3JhZ2VUeXBlKCkpCiB7Ci0gICAgY29ubmVjdCgpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiBTdG9yYWdlQXJl
YU1hcDo6flN0b3JhZ2VBcmVhTWFwKCkKIHsKICAgICBkaXNjb25uZWN0KCk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAog
dW5zaWduZWQgU3RvcmFnZUFyZWFNYXA6Omxlbmd0aCgpCkBAIC05NSw4ICs5Nyw4IEBAIHZvaWQg
U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUlt
cGwqIHNvdXJjZUFyZWEsIGNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7
CiAKLSAgICBpZiAobV9tYXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbSgqbV9tYXBJRCwgc291cmNlQXJlYS0+aWRl
bnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmll
cikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6U2V0SXRlbSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRp
ZmllcigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6c2V0SXRlbSBmYWlsZWQgYmVjYXVzZSBzdG9y
YWdlIG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CkBAIC0xMTQsMjMgKzExNiwyMiBAQCB2b2lkIFN0
b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3Rv
cmFnZUFyZWFJbXBsKiBzbwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChrZXkpOwog
Ci0gICAgaWYgKG1fbWFwSUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbW92ZUl0ZW0oKm1fbWFwSUQsIHNvdXJjZUFyZWEtPmlk
ZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
UmVtb3ZlSXRlbSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmll
cigpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFw
IElEIGlzIGludmFsaWQiKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXIoV2ViQ29y
ZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEpCiB7Ci0g
ICAgY29ubmVjdCgpOwotCisgICAgY29ubmVjdFN5bmMoKTsKICAgICByZXNldFZhbHVlcygpOwog
CiAgICAgbV9oYXNQZW5kaW5nQ2xlYXIgPSB0cnVlOwogICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxT
dG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CiAKLSAgICBpZiAobV9tYXBJRCkKLSAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xlYXIo
Km1fbWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwgc291cmNl
RnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3Rl
QXJlYUlkZW50aWZpZXIpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VB
cmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVhTWFwOjpjbGVhciBmYWlsZWQgYmVjYXVzZSBzdG9yYWdl
IG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CkBAIC0xNTEsMjEgKzE1MiwxMSBAQCB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpyZXNldFZhbHVlcygpCiAKIFN0b3JhZ2VNYXAmIFN0b3JhZ2VBcmVhTWFwOjpl
bnN1cmVNYXAoKQogewotICAgIGNvbm5lY3QoKTsKKyAgICBjb25uZWN0U3luYygpOwogCi0gICAg
aWYgKCFtX21hcCkgeworICAgIGlmICghbV9tYXApCiAgICAgICAgIG1fbWFwID0gbWFrZVVuaXF1
ZTxTdG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CiAKLSAgICAgICAgaWYgKG1fbWFwSUQpIHsK
LSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIGEgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91
c0lQQ1Njb3BlIHRvIHByZXZlbnQgVUlQcm9jZXNzIGhhbmdzIGluIGNhc2Ugd2UgcmVjZWl2ZSBh
IHN5bmNocm9ub3VzIElQQyBmcm9tIHRoZSBVSVByb2Nlc3Mgd2hpbGUgd2UncmUgd2FpdGluZyBm
b3IgYSByZXNwb25zZQotICAgICAgICAgICAgLy8gZnJvbSBvdXIgU3RvcmFnZU1hbmFnZXJTZXQ6
OkdldFZhbHVlcygpIElQQy4gVGhpcyBJUEMgbWF5IGJlIHZlcnkgc2xvdyBiZWNhdXNlIGl0IG1h
eSBuZWVkIHRvIGZldGNoIHRoZSB2YWx1ZXMgZnJvbSBkaXNrIGFuZCB0aGVyZSBtYXkgYmUgYSBs
b3Qgb2YgZGF0YS4KLSAgICAgICAgICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29w
ZSB1bmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOwotICAgICAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4gdmFsdWVzOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkdldFZhbHVlcygqbV9tYXBJRCksIE1lc3Nh
Z2VzOjpTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKLSAg
ICAgICAgICAgIG1fbWFwLT5pbXBvcnRJdGVtcyhXVEZNb3ZlKHZhbHVlcykpOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJl
YU1hcDo6ZW5zdXJlTWFwIGZhaWxlZCB0byBsb2FkIGZyb20gbmV0d29yayBwcm9jZXNzIGJlY2F1
c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwotICAgIH0KICAgICByZXR1cm4gKm1fbWFw
OwogfQogCkBAIC0yNTksOCArMjUwLDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hh
bmdlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgIG1fbWFw
LT5zZXRJdGVtSWdub3JpbmdRdW90YShrZXksIG5ld1ZhbHVlKTsKIH0KIAotdm9pZCBTdG9yYWdl
QXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdl
QXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2
ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3Jh
Z2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIHVpbnQ2NF90
IG1lc3NhZ2VJZGVudGlmaWVyKQogeworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFz
dEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0
SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgaWYgKCFz
dG9yYWdlQXJlYUltcGxJRCkgewogICAgICAgICAvLyBUaGlzIHN0b3JhZ2UgZXZlbnQgb3JpZ2lu
YXRlcyBmcm9tIGFub3RoZXIgcHJvY2VzcyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBjaGFuZ2Ug
dG8gb3VyIHN0b3JhZ2UgYXJlYSBtYXAuCiAgICAgICAgIGFwcGx5Q2hhbmdlKGtleSwgbmV3VmFs
dWUpOwpAQCAtMjcyLDggKzI2NywxMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0
b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZQogICAgICAg
ICBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHN0b3JhZ2VBcmVhSW1wbElELCBrZXksIG9sZFZh
bHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xl
YXJDYWNoZSgpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKHVpbnQ2NF90IG1lc3Nh
Z2VJZGVudGlmaWVyKQogeworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRs
ZWRNZXNzYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxl
ZE1lc3NhZ2VJZGVudGlmaWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgcmVzZXRWYWx1ZXMo
KTsKIH0KIApAQCAtMzQ0LDQyICszNDMsNzkgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0
Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW0KICAg
ICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJh
bWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5n
LCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpz
ZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGUgbW9kZSkKK3sKKyAgICBhdXRvJiBpcGNDb25uZWN0
aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOworICAgIGF1dG8gbmFtZXNwYWNlSWRlbnRpZmllciA9IG1fbmFt
ZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpOworICAgIGF1dG8gb3JpZ2luRGF0YSA9IG1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKTsKKyAgICBhdXRvIHRvcE9yaWdpbkRhdGEgPSBtX25hbWVzcGFj
ZS50b3BMZXZlbE9yaWdpbigpID8gbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKS0+ZGF0YSgp
IDogb3JpZ2luRGF0YTsKKyAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7
IHRvcE9yaWdpbkRhdGEsIG9yaWdpbkRhdGEgfTsKKyAgICBhdXRvIHR5cGUgPSBtX3R5cGU7Cisg
ICAgaWYgKCh0eXBlID09IFN0b3JhZ2VUeXBlOjpMb2NhbCB8fCB0eXBlID09IFN0b3JhZ2VUeXBl
OjpUcmFuc2llbnRMb2NhbCkgJiYgbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSkKKyAgICAg
ICAgdHlwZSA9IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDsKKworICAgIGlmIChtb2RlID09
IFNlbmRNb2RlOjpTeW5jKSB7CisgICAgICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZW1vdGVB
cmVhSWRlbnRpZmllcjsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXM7Cisg
ICAgICAgIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyOworICAgICAgICBpcGNDb25uZWN0aW9u
LnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3Jh
Z2VBcmVhU3luYyh0eXBlLCBtX2lkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdp
biksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVh
U3luYzo6UmVwbHkocmVtb3RlQXJlYUlkZW50aWZpZXIsIGl0ZW1zLCBtZXNzYWdlSWRlbnRpZmll
ciksIDApOworICAgICAgICBkaWRDb25uZWN0KHJlbW90ZUFyZWFJZGVudGlmaWVyLCBXVEZNb3Zl
KGl0ZW1zKSwgbWVzc2FnZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCB3ZWFrQ29ubmVjdGlvbiA9IFdlYWtQdHIgeyBpcGNDb25uZWN0aW9uIH1dKGF1dG8g
cmVtb3RlQXJlYUlkZW50aWZpZXIsIGF1dG8gaXRlbXMsIGF1dG8gbWVzc2FnZUlkZW50aWZpZXIp
IG11dGFibGUgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gZGlk
Q29ubmVjdChyZW1vdGVBcmVhSWRlbnRpZmllciwgV1RGTW92ZShpdGVtcyksIG1lc3NhZ2VJZGVu
dGlmaWVyKTsKKworICAgICAgICBpZiAod2Vha0Nvbm5lY3Rpb24gJiYgcmVtb3RlQXJlYUlkZW50
aWZpZXIuaXNWYWxpZCgpKQorICAgICAgICAgICAgd2Vha0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShyZW1v
dGVBcmVhSWRlbnRpZmllciksIDApOworICAgIH07CisKKyAgICBpcGNDb25uZWN0aW9uLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9T
dG9yYWdlQXJlYSh0eXBlLCBtX2lkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdp
biksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBTdG9yYWdlQXJlYU1h
cDo6Y29ubmVjdFN5bmMoKQoreworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGU6OlN5bmMpOwor
fQorCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0KCkKIHsKLSAgICBpZiAobV9tYXBJRCkK
KyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3RvcmFnZUFyZWFJZGVudGlmaWVyIG1hcElEOwotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAg
Y2FzZSBTdG9yYWdlVHlwZTo6TG9jYWw6Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50
TG9jYWw6Ci0gICAgICAgIGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBtX25h
bWVzcGFjZS50b3BMZXZlbE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1RyYW5zaWVudExv
Y2FsU3RvcmFnZUFyZWEobV9uYW1lc3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVs
T3JpZ2luLT5kYXRhKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWE6OlJl
cGx5KG1hcElEKSwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3Jp
Z2luLT5kYXRhKCkpLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9M
b2NhbFN0b3JhZ2VBcmVhOjpSZXBseShtYXBJRCksIDApOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFN0b3JhZ2VUeXBlOjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VB
cmVhKG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5k
YXRhKCkpLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TZXNzaW9u
U3RvcmFnZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7Ci0gICAgfQorICAgIHNlbmRDb25uZWN0TWVz
c2FnZShTZW5kTW9kZTo6QXN5bmMpOworfQogCi0gICAgaWYgKG1hcElELmlzVmFsaWQoKSkgewot
ICAgICAgICBtX21hcElEID0gbWFwSUQ7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwotICAgIH0KK3ZvaWQgU3RvcmFnZUFyZWFN
YXA6OmRpZENvbm5lY3QoU3RvcmFnZUFyZWFJZGVudGlmaWVyIHJlbW90ZUFyZWFJZGVudGlmaWVy
LCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmIGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRp
ZmllcikKK3sKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2Fn
ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdl
SWRlbnRpZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlQXJlYUlkZW50
aWZpZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbW90ZUFyZWFJZGVu
dGlmaWVyID0gcmVtb3RlQXJlYUlkZW50aWZpZXI7CisgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0
b3JhZ2VNYXA+KG1fcXVvdGFJbkJ5dGVzKTsKKyAgICBtX21hcC0+aW1wb3J0SXRlbXMoV1RGTW92
ZShpdGVtcykpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KCkKIHsKLSAg
ICBpZiAoIW1fbWFwSUQpCisgICAgaWYgKCFtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm47CiAKICAgICByZXNldFZhbHVlcygpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiAKICAgICBpZiAoYXV0byogbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpE
aXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKCptX21hcElEKSwgMCk7CisgICAgICAgIG5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYSgqbV9yZW1vdGVBcmVhSWRlbnRp
ZmllciksIDApOwogCi0gICAgbV9tYXBJRCA9IHsgfTsKKyAgICBtX3JlbW90ZUFyZWFJZGVudGlm
aWVyID0geyB9OworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IDA7CiB9CiAK
IHZvaWQgU3RvcmFnZUFyZWFNYXA6OmluY3JlbWVudFVzZUNvdW50KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDA2
ZTYzNTZjYjEzMzkyNjZiYTM0NTQ1OTYyNTM4MDQ2N2I1ODBiMTcuLmM2MjcxZDlmNzllY2JhYzNl
NGY4ZjhiODdmODdjYzA0ZWQzYmY4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJT
dG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CkBAIC02Niw4ICs2Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Rv
cmFnZUFyZWFJZGVudGlmaWVyPiYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSUQ7
IH0KKyAgICBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgdm9pZCBjb25uZWN0KCk7CiAgICAgdm9pZCBkaXNj
b25uZWN0KCk7CiAKICAgICB2b2lkIGluY3JlbWVudFVzZUNvdW50KCk7CkBAIC03OCw4ICs4MCw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVJdGVtKHVpbnQ2NF90IG1hcFNlZWQsIGNv
bnN0IFN0cmluZyYga2V5KTsKICAgICB2b2lkIGRpZENsZWFyKHVpbnQ2NF90IG1hcFNlZWQpOwog
Ci0gICAgdm9pZCBkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXI+JiBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgY2xlYXJDYWNoZSgpOworICAgIHZvaWQg
ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyPiYgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBjbGVhckNh
Y2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVzZXRWYWx1ZXMo
KTsKICAgICBXZWJDb3JlOjpTdG9yYWdlTWFwJiBlbnN1cmVNYXAoKTsKQEAgLTkwLDEyICs5Miwx
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVu
dChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKIAotICAgIHZvaWQgY29ubmVjdCgpOworICAg
IGVudW0gY2xhc3MgU2VuZE1vZGUgOiBib29sIHsgQXN5bmMsIFN5bmMgfTsKKyAgICB2b2lkIHNl
bmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZSk7CisgICAgdm9pZCBjb25uZWN0U3luYygpOworICAg
IHZvaWQgZGlkQ29ubmVjdChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiYsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKIAorICAgIFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV9sYXN0SGFuZGxlZE1l
c3NhZ2VJZGVudGlmaWVyIHsgMCB9OwogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBtX25hbWVz
cGFjZTsKICAgICBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlN0b3JhZ2VNYXA+IG1fbWFwOwotICAgIHN0
ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX21hcElEOworICAgIHN0ZDo6b3B0
aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBtX3JlbW90ZUFyZWFJZGVudGlmaWVyOwogICAg
IEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwogICAgIHVpbnQ2
NF90IG1fY3VycmVudFNlZWQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCmluZGV4IDJkMWE4MTNmY2I4NzU3YjE4NDI3NjI5Mzgw
Njk3ZmM3YmU5YmE5YjUuLjZkZWU4ZThlMzVhYjViNjg4NjZmMjIwMGE3MDZhODI5MzdmZGJjYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw2IEBAIG1lc3NhZ2Vz
IC0+IFN0b3JhZ2VBcmVhTWFwIE5vdFJlZkNvdW50ZWQgewogICAgIERpZFJlbW92ZUl0ZW0odWlu
dDY0X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQpCiAKLSAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFs
PFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0
cmluZyBrZXksIFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3Ry
aW5nKQotICAgIENsZWFyQ2FjaGUoKQorICAgIERpc3BhdGNoU3RvcmFnZUV2ZW50KHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUltcGxJ
RCwgU3RyaW5nIGtleSwgU3RyaW5nIG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUsIFN0cmluZyB1
cmxTdHJpbmcsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQorICAgIENsZWFyQ2FjaGUodWlu
dDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY5MjIxMDg5NjhmMzU5OGZkMjAxYWFhY2FmMGVjMDM3NWM0NmVmOTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZW51bSBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5n
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449441</attachid>
            <date>2022-01-18 16:01:49 -0800</date>
            <delta_ts>2022-01-18 16:02:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220118160148.patch</filename>
            <type>text/plain</type>
            <size>61499</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uMWU0Y2ZiODkwMjg1ODcwMjExOWFjODA3Yzk2OTgz
YzAyNWE3N2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5h
bHlzaXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQg
YWZ0ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQw
ZTc5YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLjM2OTAxNmVlMTVkN2NkOGVlOGQ4MjMz
NzJmOTdiZDYwZmE4NjBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0
b3JhZ2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3lu
YyB3aXRoIGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQg
cGVyZm9ybXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0
byByZW1vdGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQg
dHdvIHN5bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9y
IGdldHRpbmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0
VmFsdWVzOiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBX
ZSBjYW4gbWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RU
b1N0b3JhZ2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBw
cm9jZXNzIHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRo
ZSB3YWl0IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291
bGQgcHJld2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdl
QXJlYU1hcCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBk
b24ndCBhY3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBm
b3Igb3BlcmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdl
IENvbm5lY3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBw
cmV3YXJtaW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5
IGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25u
ZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5k
bGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVj
dFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdl
KSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0
Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBw
cm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0
aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9m
IG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VB
cmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5
bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0
b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5l
cnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRj
aEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdl
QXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1
M2E5ZjY3MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFt
ZSgpLm1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
VGhpcyBlYWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQg
aXRlbXMgZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9j
YWxTdG9yYWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlm
TmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2Fs
U3RvcmFnZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRh
YTc0YTVjMS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBG
cmFtZTo6ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1l
KCkpOwotICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2Fs
U3RvcmFnZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdD
b3VudDsKLX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVBy
ZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxv
YXRTaXplIEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVT
Y3JlZW5TaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2Qy
ZmQ3ZmM0MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBi
ZGQzMzk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29s
IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0g
ICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9j
YWxTdG9yYWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lk
IGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRF
dmVudFJlZ2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9z
ZWxmT25seVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsg
MCB9OwogCiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggMjUxYmQ0MjlkNjIwNjI5OTdmNzI4ZGMwZGM2NjI1
ZjE0ZjFiNWM3OC4uNzc0NjE0MGY3ODQwODFiMDc4NmExNWQ2MDFmZWZjYTJjOTFjMTBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJld2FybSgpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5o
CmluZGV4IDIyMDU4N2VjODZiYTVjNTE3MWI2NzNiMTc3YTQ2NjFhMjJjZjMxM2QuLmYzY2ZlNGNk
OTVmZDY0NjBiMDk0YzljYjBhNzE0ZmRjM2Q4Y2Y3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VUeXBlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
U3RvcmFnZVR5cGUgOiB1aW50OF90IHsKQEAgLTQ0LDMgKzQ2LDE2IEBAIGlubGluZSBib29sIGlz
UGVyc2lzdGVudExvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdG9yYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLAorICAgICAgICBXZWJD
b3JlOjpTdG9yYWdlVHlwZTo6U2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6
OkxvY2FsLAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCBjODRlYWQ0
MzBhYjE1ZDk0ZmQ4ZWYyNTMzZDZlNDkyODcyYjZlMTJiLi4wYzQxYWI5MmUzMWY0OWQ2YTVhOTQ5
YTQwMzcyOGMyYWE5ZDA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBsaXN0ZW5l
clVuaXF1ZUlEIDogbV9ldmVudExpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNo
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2Fj
aGUoMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJh
c2UmIFN0b3JhZ2VBcmVhOjplbnN1cmVEYXRhYmFzZSgpIGNvbnN0CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQp
OwogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpIHsK
ICAgICAgICAgYXV0byBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gbGlzdGVuZXJVbmlxdWVJ
RCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1w
bElEKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxpc3Rl
bmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZl
bnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlz
cGF0Y2hTdG9yYWdlRXZlbnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjYmRkZDJlMzA0OGQyODcwYWUw
N2EwYWFkZjRlZDk3YjMxMDQzNmM5Li4zY2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4Yzkx
OWQ2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkRm9yVHJhbnNpZW50U3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW8KICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhID0gbnVsbHB0
cjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3
b3JrUXVldWUpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7
CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZUFyZWEpIHsKICAgICAgICAgaWYgKCFtX3BhdGguaXNF
bXB0eSgpKQpAQCAtMTc3LDExICsxNzcsMTEgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWMKICAg
ICB9CiAKICAgICBBU1NFUlQobV9wYXRoLmlzRW1wdHkoKSB8fCBtX2xvY2FsU3RvcmFnZUFyZWEt
PnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6OlNRTGl0ZSk7Ci0gICAgbV9sb2NhbFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX2xvY2FsU3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVy
biBtX2xvY2FsU3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIAotU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAg
IGlmICghbV90cmFuc2llbnRTdG9yYWdlQXJlYSkgewogICAgICAgICBtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhID0gbWFrZVVuaXF1ZTxNZW1vcnlTdG9yYWdlQXJlYT4ob3JpZ2luLCBTdG9yYWdlQXJl
YUJhc2U6OlN0b3JhZ2VUeXBlOjpMb2NhbCk7CkBAIC0xODksNyArMTg5LDcgQEAgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVAKICAgICB9CiAKICAgICBBU1NFUlQobV90cmFuc2llbnRTdG9yYWdlQXJl
YS0+dHlwZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6TWVtb3J5KTsKLSAgICBtX3RyYW5z
aWVudFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX3RyYW5zaWVu
dFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuaAppbmRleCBhODg4NDJlMjk1ZjJkOTBhOGYwZThiYmE4ZWQ3YjNlYTI3
ZDU4YThiLi5jZGNiNjgxMmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU2LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0xv
Y2FsU3RvcmFnZSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Ry
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YS4uZDk3
NGU2ZGIzNTUzODcxNDI1YmFlNjJjMDcyMjU3MjEzMmM2ZDQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTYyNSwyNCArNjI1LDMzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwg
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgdG9wT3JpZ2luIH07Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmxvY2FsU3RvcmFn
ZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgbV9xdWV1ZS5jb3B5UmVmKCkpKTsKLX0K
KyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwor
ICAgIGF1dG8mIG9yaWdpblN0b3JhZ2VNYW5hZ2VyID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihvcmlnaW4pOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZXN1bHRJZGVudGlmaWVyOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2Fs
OgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxT
dG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG1f
cXVldWUuY29weVJlZigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmln
aW5TdG9yYWdlTWFuYWdlci5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0
cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb246CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIg
PSBvcmlnaW5TdG9yYWdlTWFuYWdlci5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFy
ZWFSZWdpc3RyeSkuY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG5hbWVzcGFjZUlkZW50aWZpZXIpOworICAg
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luIH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdp
bikpOworICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5n
ZXRTdG9yYWdlQXJlYShyZXN1bHRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdElkZW50aWZpZXIsIHN0b3JhZ2VBcmVhLT5hbGxJdGVtcygpLCBTdG9y
YWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKKworICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7
IH0sIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9y
aWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBp
ZGVudGlmaWVyKSk7CisgICAgY29ubmVjdFRvU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgdHlwZSwg
c291cmNlSWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaXNj
b25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02NjksMTYgKzY3OCw2IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0
byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEoaWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+
YWxsSXRlbXMoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci19
Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXgg
ZDIxZDY1NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJhNTNhOWU5MS4uYTFmMzA3NjQ0Njc2ZThk
NTM1NjViZmVjODM3OTY3OTZjMzQ2YTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgpAQCAtNDQsNiArNDUsNyBAQCBj
bGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTA4LDEyICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9y
IFdlYlN0b3JhZ2UuCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIp
PiYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKLSAgICB2b2lkIGNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQg
Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRWYWx1ZXMoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Jik+JiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNl
ZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYga2V5
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRf
dCBzZWVkLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTUxNmFkYTk4MzJmZGVmNWI2ODE0OTQ0MjE1ZjY4OGZkYTgx
YzYxNS4uZmZjODZmOWQwOWZkNDU5NTUzNWY4NzUwNTM5NDVhMThhNzczMWYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00MCwxMiArNDAsMTAgQEAK
ICAgICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVj
dGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4s
IFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KIAotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRv
U3RvcmFnZUFyZWEoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cikgQXN5bmMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
IHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFt
ZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgogICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xv
bmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFZhbHVl
cyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cwogICAgIFNldEl0ZW0oV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5n
IGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAg
ICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVj
dGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkNDBlNDBiNjE3M2MyOGQ0NGM1N2I4ZTIwZjcy
YmNiNTExMDQxZGI1Li5iNzM0MmU0MGVmMWY2YmI1Y2RiNmZiZmIyZWYxMjNmOWQwNmU4ZTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjphZGRTdG9yYWdlQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8TWVtbwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1TdG9yYWdlQXJlYUlk
ZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllcikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6
OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIgbmFtZXNwYWNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3N0b3Jh
Z2VBcmVhc0J5TmFtZXNwYWNlLmdldChuYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlk
ZW50aWZpZXIuaXNWYWxpZCgpKSB7CkBAIC04NCw3ICs4NCw4IEBAIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJ
UEM6OkNvCiAgICAgaWYgKCFzdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciB7IH07CiAKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlv
bik7CisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50
aWZpZXIpOworCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaAppbmRleCBmYzE3NjFiZTkwMGY4ZTRkYTc3NTRiMDE4ZjFkYmUyZTM4ZmI3ZGZhLi4wZjdi
ZTRjNWU1Y2M4OGFjMzgyOWMxOTI1MDFmY2M2ODI2MjVlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
b21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJh
MTQ5OThmOGYzYzEuLmM1NTlmYTE3NzdkY2M3NmIxNDc4NmM0ZjBhMTc5OTlkZWRjZWJjNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9y
YWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAordWludDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVuSWRlbnRpZmllcnQoMCk7Cisg
ICAgcmV0dXJuICsrY3VycmVudElkZW50aWZpZXI7Cit9CisKIFN0b3JhZ2VBcmVhQmFzZTo6U3Rv
cmFnZUFyZWFCYXNlKHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbikKLSAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYUlkZW50aWZpZXI6OmdlbmVy
YXRlKCkpCisgICAgOiBtX2lkZW50aWZpZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0
ZVRocmVhZFNhZmUoKSkKICAgICAsIG1fcXVvdGEocXVvdGEpCiAgICAgLCBtX29yaWdpbihvcmln
aW4pCiB7CkBAIC0zOSwxMSArNDUsMTEgQEAgU3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlQXJlYUJh
c2UodW5zaWduZWQgcXVvdGEsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3IKIAogU3Rv
cmFnZUFyZWFCYXNlOjp+U3RvcmFnZUFyZWFCYXNlKCkgPSBkZWZhdWx0OwogCi12b2lkIFN0b3Jh
Z2VBcmVhQmFzZTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0
aW9uKQordm9pZCBTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiB7Ci0gICAgQVNTRVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSk7CisgICAg
QVNTRVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSB8fCBtX2xpc3RlbmVycy5n
ZXQoY29ubmVjdGlvbikgPT0gaWRlbnRpZmllcik7CiAKLSAgICBtX2xpc3RlbmVycy5hZGQoY29u
bmVjdGlvbik7CisgICAgbV9saXN0ZW5lcnMuc2V0KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOwog
fQogCiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCBjb25uZWN0aW9uKQpAQCAtNTgsMTkgKzY0LDE5IEBAIGJvb2wgU3RvcmFnZUFy
ZWFCYXNlOjpoYXNMaXN0ZW5lcnMoKSBjb25zdAogCiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6bm90
aWZ5TGlzdGVuZXJzQWJvdXRDbGVhcigpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDog
bV9saXN0ZW5lcnMpCi0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBN
ZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rpb24sIGlkZW50aWZpZXJdIDogbV9saXN0
ZW5lcnMpCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdl
czo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2Fn
ZUlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgU3RvcmFn
ZUFyZWFCYXNlOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJj
ZUNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgc291cmNlSW1wbElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3QKIHsKICAgICBBU1NF
UlQoc291cmNlSW1wbElkZW50aWZpZXIpOwogCi0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDog
bV9saXN0ZW5lcnMpIHsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uLCBpZGVudGlmaWVyXSA6
IG1fbGlzdGVuZXJzKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllcj4gaW1wbElkZW50aWZpZXI7CiAgICAgICAgIGlmIChjb25uZWN0aW9uID09IHNvdXJj
ZUNvbm5lY3Rpb24pCiAgICAgICAgICAgICBpbXBsSWRlbnRpZmllciA9IHNvdXJjZUltcGxJZGVu
dGlmaWVyOwotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChpbXBsSWRlbnRpZmllciwg
a2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1l
c3NhZ2VJZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VB
cmVhQmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VB
cmVhQmFzZS5oCmluZGV4IGVkM2VkMTQyMDZlMTc1ZGNhY2M4YzFmOTk0OTA3NTA1NDVlMzRlOTgu
LmVmYzhmYjk2NDg5MTA3Yzg4ZTMzY2QxMjNmNjA5YTM2ZjIxYWVkN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNDcs
NiArNDgsNyBAQCBjbGFzcyBTdG9yYWdlQXJlYUJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U3RvcmFnZUFyZWFCYXNlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RvcmFnZUFyZWFC
YXNlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBzdGF0aWMg
dWludDY0X3QgbmV4dE1lc3NhZ2VJZGVudGlmaWVyKCk7CiAgICAgdmlydHVhbCB+U3RvcmFnZUFy
ZWFCYXNlKCk7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgU1FMaXRlLCBNZW1vcnkg
fTsKQEAgLTU5LDcgKzYxLDcgQEAgcHVibGljOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdW5z
aWduZWQgcXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhOyB9Ci0gICAgdm9pZCBhZGRMaXN0
ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIGFkZExpc3RlbmVyKElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcik7CiAgICAg
dm9pZCByZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29s
IGhhc0xpc3RlbmVycygpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5TGlzdGVuZXJzQWJvdXRDbGVh
cigpOwpAQCAtNzcsNyArNzksNyBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgdW5zaWduZWQgbV9xdW90YTsKICAgICBXZWJDb3JlOjpDbGll
bnRPcmlnaW4gbV9vcmlnaW47Ci0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
PiBtX2xpc3RlbmVyczsKKyAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllcj4gbV9saXN0ZW5lcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDhi
NTIxZjc3MDE1NDhiMWFmOGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIuLmMxZjQzYTE4YzcyYmZiMjVm
ZjhjYzYzMTRmMWM3ODM3MWE2YjkyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMzA1LDYgKzMwNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9m
b3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIn
LAorICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAogICAgICAgICAnV2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCkBAIC0zNDcs
NiArMzQ4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToK
ICAgICAgICAgJ1dlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlRhcElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpUZXh0Q2hlY2tlclJlcXVlc3RJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNTI2MzBhMzAzMjEwNzQ4Yjg4YTAxOWExM2M0MGEw
ZGFmMjAzZDE0Li41NGE0YjIxMDFhMzU3YWUxNDk4ZThlODY3NDFlODc2MDUyMjVhMTM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0
NTcsNiArMTQ1Nyw3IEBACiAJCTkzQUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNv
Z25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUI5QjQyMjU3NDkyOEMwMDk4QjEwRSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJOTNBQjlC
NTUyNTc1QTI3NjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNBQjlCNEYyNTc1ODkxMTAwOThCMTBFIC8qIFNwZWVjaFJlY29n
bml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQk5M0FCOUI1NjI1NzVBMjhCMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI1MTI1NzU4OTExMDA5OEIx
MEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBT
dG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCMEE2NzUyNkQ1QURDRjAwQUEyMUU0IC8qIFdlYlBl
cm1pc3Npb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0IwQTY3NDI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRy
b2xsZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Iy
NjE0OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYx
NEUyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdB
NzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKQEAgLTUzMDUsNiArNTMwNiw3IEBA
CiAJCTkzQUI5QjUyMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNBQjlCNTMyNTc1ODkxMjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTQyNTc1
ODkxMjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNv
Z25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2
NzMyNkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0
IC8qIFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzQjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA2MSw2ICs3MDYzLDcgQEAKIAkJCQkx
QUNFQ0QyMjE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwICovLAogCQkJCTFB
Q0VDRDIzMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oICovLAogCQkJCTFBMzM0
REVBMTZERThCNjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk5M0FFQzE2MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJNDY1RjRFMDUyMzBCMkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyLmggKi8sCiAJCQkJMUExNzYzNTQxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsLmNwcCAqLywKIAkJCQkxQTE3NjM1NTE2QjFENUQwMDBEODhGRDYgLyogU3RvcmFn
ZU5hbWVzcGFjZUltcGwuaCAqLywKQEAgLTEzMjYzLDYgKzEzMjY2LDcgQEAKIAkJCQk5M0U3OTlE
QzI3NjEyMTA4MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUQzMzA2RjE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZB
OEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3
OTlDNzI3NjAyNzQ2MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAyMjcwYTUzYWY5YmE4
YmY4MGQ3YzNiM2RjZGM4Y2ViNTY1MTc2ZTMuLjhkM2I1N2JkMThkYzJlMDUzODRjY2YwOGQ3ZDlj
ODkwN2NkMDRkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTdG9yYWdlQXJl
YU1hcDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdl
QXJlYU1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFN0b3JhZ2VBcmVhSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc3RvcmFnZUFyZWFNYXAobWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAg
ICAgIHN0b3JhZ2VBcmVhTWFwLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBmODE2Nzc1YTc5OTRhYjIyY2MyZmJjMjYwMDBlOWQyMmYyZmMyYzZhLi5k
MjhmY2Y5OTEyMDU3ZTI2NjAyNjZjNzc1MDcwNWQ4MjZiMDc3ODQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMTg5LDggKzExODksMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKiBjb25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOwog
ICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24g
PT0gY29ubmVjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRv
VmVjdG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKLSAgICAgICAgc3RvcmFnZUFyZWFN
YXAtPmRpc2Nvbm5lY3QoKTsKKyAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fc3Rv
cmFnZUFyZWFNYXBzLmtleXMoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gbWFwIDogbV9zdG9yYWdl
QXJlYU1hcHMuZ2V0KGtleSkpCisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXBzLmdldChrZXkpLT5k
aXNjb25uZWN0KCk7CisgICAgfQogCiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZh
bHVlcygpKSB7CiAgICAgICAgIGF1dG8gaWRiQ29ubmVjdGlvbiA9IHBhZ2UtPmNvcmVQYWdlKCkt
Pm9wdGlvbmFsSURCQ29ubmVjdGlvbigpOwpAQCAtMTY5NywyMCArMTY5OSwyMCBAQCB2b2lkIFdl
YlByb2Nlc3M6Om5vblZpc2libGVQcm9jZXNzTWVtb3J5Q2xlYW51cFRpbWVyRmlyZWQoKQogCiB2
b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIHN0
b3JhZ2VBcmVhTWFwKQogewotICAgIEFTU0VSVChzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkp
OwotICAgIEFTU0VSVCghbV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoKnN0b3JhZ2VBcmVhTWFw
LmlkZW50aWZpZXIoKSkpOwotICAgIG1fc3RvcmFnZUFyZWFNYXBzLnNldCgqc3RvcmFnZUFyZWFN
YXAuaWRlbnRpZmllcigpLCAmc3RvcmFnZUFyZWFNYXApOworICAgIGF1dG8gaWRlbnRpZmllciA9
IHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fc3RvcmFnZUFyZWFN
YXBzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwcy5hZGQoaWRl
bnRpZmllciwgc3RvcmFnZUFyZWFNYXApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0
ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAg
QVNTRVJUKHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKG1fc3RvcmFn
ZUFyZWFNYXBzLmNvbnRhaW5zKCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKTsKLSAgICBB
U1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuZ2V0KCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkp
ID09ICZzdG9yYWdlQXJlYU1hcCk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKCpzdG9y
YWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IHN0b3JhZ2VB
cmVhTWFwLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFp
bnMoaWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRp
ZmllcikuZ2V0KCkgPT0gJnN0b3JhZ2VBcmVhTWFwKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwcy5y
ZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKLVN0b3JhZ2VBcmVhTWFwKiBXZWJQcm9jZXNzOjpzdG9y
YWdlQXJlYU1hcChTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK1dlYWtQ
dHI8U3RvcmFnZUFyZWFNYXA+IFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAogewogICAgIHJldHVybiBtX3N0b3JhZ2VB
cmVhTWFwcy5nZXQoaWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCA0NjlhMGE1ZTE5MWRjZjQ3MDEzMjcxNmI2NzJlZDFjMmU2MWYzMTE3Li5lODdk
NzMzZDc2YWRlZTBjYjhiYWRiODdmNWNhNzU1ZGE2MmQ3MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZU1vZGVs
LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVu
c2lvbi5oIgotI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIK
ICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
Vmlld1VwZGF0ZURpc3BhdGNoZXIuaCIKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmKTsKICAgICB2b2lk
IHVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwotICAgIFN0b3JhZ2VB
cmVhTWFwKiBzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYUlkZW50aWZpZXIpIGNvbnN0OworICAg
IFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IHN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwSWRl
bnRpZmllcikgY29uc3Q7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtNzQyLDcgKzc0
Miw3IEBAIHByaXZhdGU6CiAgICAgSGFzaENvdW50ZWRTZXQ8V2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IG1fc3dSZWdpc3RyYXRpb25Db3VudHM7CiAjZW5kaWYK
IAotICAgIEhhc2hNYXA8U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYU1hcCo+IG1f
c3RvcmFnZUFyZWFNYXBzOworICAgIEhhc2hNYXA8U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLCBX
ZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPj4gbV9zdG9yYWdlQXJlYU1hcHM7CiAgICAgCiAgICAgLy8g
UHJld2FybWVkIFdlYlByb2Nlc3NlcyBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHNlc3Npb25J
RCB5ZXQsIHdoaWNoIGlzIHdoeSB0aGlzIGlzIGFuIG9wdGlvbmFsLgogICAgIC8vIEJ5IHRoZSB0
aW1lIHRoZSBXZWJQcm9jZXNzIGdldHMgYSBXZWJQYWdlLCBpdCBpcyBndWFyYW50ZWVkIHRvIGhh
dmUgYSBzZXNzaW9uSUQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCBiMTJjNThjMGFhZDY3ZTk5NTc3MDZl
MjllNmRlNjU2OWVmZTY0ODQ2Li4xZjliNDJjYjEyN2Q2ZGMwMjhhNjgwNTllMjcxMDFmYzc5Njk0
NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTExMiwyMCArMTEyLDEwIEBAIHNpemVfdCBTdG9yYWdl
QXJlYUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKQogICAgIHJldHVybiAwOwogfQogCi12
b2lkIFN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQoKQordm9pZCBTdG9yYWdl
QXJlYUltcGw6OnByZXdhcm0oKQogewotICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQg
aW4gdGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCi19
Ci0KLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjpkZWNyZW1lbnRBY2Nlc3NDb3VudCgpCi17Ci0gICAg
Ly8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0
aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNs
b3NlRGF0YWJhc2VJZklkbGUoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAobV9zdG9yYWdlQXJlYU1hcCkKKyAgICAg
ICAgbV9zdG9yYWdlQXJlYU1hcC0+Y29ubmVjdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmgKaW5kZXggNzllMTRiOTFmOGFjNmQ4MmZlNzkyYWMwNmQzOTRlZDc2NTg0MmE2
Mi4uYTM1ZDY2NzkyNTA1ZjBjMDNlNTkwODcwMDFlMGNhNGZkYTdhNmNkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgK
QEAgLTYxLDkgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmlu
ZyYga2V5KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsb3NlRGF0YWJh
c2VJZklkbGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByZXdhcm0oKSBmaW5hbDsKIAogICAgIElk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IG1fc3Rv
cmFnZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMmNmN2E2ZDRiNjAwNWMxZDdlYzI1NmJkNjM4
ODc2Mjk0ZTllNGNmMi4uZGY0YzI2ZjJhZmYzMjkxZDkxOWRlZDUzZGQ3NjI3YjU4ZjI4OTI5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmNwcApAQCAtNTEsMTcgKzUxLDE5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcChT
dG9yYWdlTmFtZXNwYWNlSW1wbCYgc3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQotICAgIDogbV9uYW1lc3BhY2Uoc3RvcmFnZU5h
bWVzcGFjZSkKKyAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYU1hcElkZW50aWZpZXI6Omdl
bmVyYXRlKCkpCisgICAgLCBtX25hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlKQogICAgICwgbV9z
ZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIG1fcXVvdGFJbkJ5
dGVzKHN0b3JhZ2VOYW1lc3BhY2UucXVvdGFJbkJ5dGVzKCkpCiAgICAgLCBtX3R5cGUoc3RvcmFn
ZU5hbWVzcGFjZS5zdG9yYWdlVHlwZSgpKQogewotICAgIGNvbm5lY3QoKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAogU3Rv
cmFnZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1hcCgpCiB7CiAgICAgZGlzY29ubmVjdCgpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7
CiB9CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5ndGgoKQpAQCAtOTUsOCArOTcsOCBA
QCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFn
ZUFyZWFJbXBsKiBzb3VyY2VBcmVhLCBjbwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFk
ZChrZXkpOwogCi0gICAgaWYgKG1fbWFwSUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0oKm1fbWFwSUQsIHNvdXJjZUFy
ZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlk
ZW50aWZpZXIpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OlNldEl0ZW0oKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEt
PmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTdG9yYWdlLCAiU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0gZmFpbGVkIGJlY2F1
c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwogfQpAQCAtMTE0LDIzICsxMTYsMjIgQEAg
dm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJh
bWUsIFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQo
a2V5KTsKIAotICAgIGlmIChtX21hcElEKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJdGVtKCptX21hcElELCBzb3VyY2VB
cmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZp
ZXIpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OlJlbW92ZUl0ZW0oKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEtPmlk
ZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbSBmYWlsZWQgYmVjYXVzZSBzdG9y
YWdlIG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFy
KFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVh
KQogewotICAgIGNvbm5lY3QoKTsKLQorICAgIGNvbm5lY3RTeW5jKCk7CiAgICAgcmVzZXRWYWx1
ZXMoKTsKIAogICAgIG1faGFzUGVuZGluZ0NsZWFyID0gdHJ1ZTsKICAgICBtX21hcCA9IG1ha2VV
bmlxdWU8U3RvcmFnZU1hcD4obV9xdW90YUluQnl0ZXMpOwogCi0gICAgaWYgKG1fbWFwSUQpCi0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OkNsZWFyKCptX21hcElELCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQs
IHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDApOworICAgIGlmICht
X3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhcigqbV9yZW1vdGVBcmVhSWRlbnRpZmllciwg
c291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6Y2xlYXIgZmFpbGVkIGJlY2F1c2Ug
c3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwogfQpAQCAtMTUxLDIxICsxNTIsMTEgQEAgdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6cmVzZXRWYWx1ZXMoKQogCiBTdG9yYWdlTWFwJiBTdG9yYWdlQXJl
YU1hcDo6ZW5zdXJlTWFwKCkKIHsKLSAgICBjb25uZWN0KCk7CisgICAgY29ubmVjdFN5bmMoKTsK
IAotICAgIGlmICghbV9tYXApIHsKKyAgICBpZiAoIW1fbWFwKQogICAgICAgICBtX21hcCA9IG1h
a2VVbmlxdWU8U3RvcmFnZU1hcD4obV9xdW90YUluQnl0ZXMpOwogCi0gICAgICAgIGlmIChtX21h
cElEKSB7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSBhIElQQzo6VW5ib3VuZGVkU3lu
Y2hyb25vdXNJUENTY29wZSB0byBwcmV2ZW50IFVJUHJvY2VzcyBoYW5ncyBpbiBjYXNlIHdlIHJl
Y2VpdmUgYSBzeW5jaHJvbm91cyBJUEMgZnJvbSB0aGUgVUlQcm9jZXNzIHdoaWxlIHdlJ3JlIHdh
aXRpbmcgZm9yIGEgcmVzcG9uc2UKLSAgICAgICAgICAgIC8vIGZyb20gb3VyIFN0b3JhZ2VNYW5h
Z2VyU2V0OjpHZXRWYWx1ZXMoKSBJUEMuIFRoaXMgSVBDIG1heSBiZSB2ZXJ5IHNsb3cgYmVjYXVz
ZSBpdCBtYXkgbmVlZCB0byBmZXRjaCB0aGUgdmFsdWVzIGZyb20gZGlzayBhbmQgdGhlcmUgbWF5
IGJlIGEgbG90IG9mIGRhdGEuCi0gICAgICAgICAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3Vz
SVBDU2NvcGUgdW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTsKLSAgICAgICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlczsKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRWYWx1ZXMoKm1fbWFwSUQp
LCBNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlczo6UmVwbHkodmFsdWVzKSwg
MCk7Ci0gICAgICAgICAgICBtX21hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZSh2YWx1ZXMpKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU3Rv
cmFnZUFyZWFNYXA6OmVuc3VyZU1hcCBmYWlsZWQgdG8gbG9hZCBmcm9tIG5ldHdvcmsgcHJvY2Vz
cyBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFsaWQiKTsKLSAgICB9CiAgICAgcmV0dXJu
ICptX21hcDsKIH0KIApAQCAtMjU5LDggKzI1MCwxMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjph
cHBseUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkKICAg
ICBtX21hcC0+c2V0SXRlbUlnbm9yaW5nUXVvdGEoa2V5LCBuZXdWYWx1ZSk7CiB9CiAKLXZvaWQg
U3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0
b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+
JiBzdG9yYWdlQXJlYUltcGxJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1
aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKIHsKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIg
PCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOwogICAg
IGlmICghc3RvcmFnZUFyZWFJbXBsSUQpIHsKICAgICAgICAgLy8gVGhpcyBzdG9yYWdlIGV2ZW50
IG9yaWdpbmF0ZXMgZnJvbSBhbm90aGVyIHByb2Nlc3Mgc28gd2UgbmVlZCB0byBhcHBseSB0aGUg
Y2hhbmdlIHRvIG91ciBzdG9yYWdlIGFyZWEgbWFwLgogICAgICAgICBhcHBseUNoYW5nZShrZXks
IG5ld1ZhbHVlKTsKQEAgLTI3Miw4ICsyNjcsMTIgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlz
cGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGUK
ICAgICAgICAgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChzdG9yYWdlQXJlYUltcGxJRCwga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFN
YXA6OmNsZWFyQ2FjaGUoKQordm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSh1aW50NjRf
dCBtZXNzYWdlSWRlbnRpZmllcikKIHsKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIgPCBtX2xh
c3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFz
dEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOwogICAgIHJlc2V0
VmFsdWVzKCk7CiB9CiAKQEAgLTM0NCw0MiArMzQzLDc5IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJl
YUltCiAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVu
dHNUb0ZyYW1lcyhwYWdlR3JvdXAsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAordm9pZCBTdG9yYWdlQXJl
YU1hcDo6c2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlIG1vZGUpCit7CisgICAgYXV0byYgaXBj
Q29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBhdXRvIG5hbWVzcGFjZUlkZW50aWZpZXIg
PSBtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKTsKKyAgICBhdXRvIG9yaWdpbkRhdGEg
PSBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CisgICAgYXV0byB0b3BPcmlnaW5EYXRhID0gbV9u
YW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSA/IG1fbmFtZXNwYWNlLnRvcExldmVsT3JpZ2luKCkt
PmRhdGEoKSA6IG9yaWdpbkRhdGE7CisgICAgYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRP
cmlnaW4geyB0b3BPcmlnaW5EYXRhLCBvcmlnaW5EYXRhIH07CisgICAgYXV0byB0eXBlID0gbV90
eXBlOworICAgIGlmICgodHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9jYWwgfHwgdHlwZSA9PSBTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWwpICYmIG1fbmFtZXNwYWNlLnRvcExldmVsT3JpZ2luKCkp
CisgICAgICAgIHR5cGUgPSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw7CisKKyAgICBpZiAo
bW9kZSA9PSBTZW5kTW9kZTo6U3luYykgeworICAgICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIg
cmVtb3RlQXJlYUlkZW50aWZpZXI7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0
ZW1zOworICAgICAgICB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcjsKKyAgICAgICAgaXBjQ29u
bmVjdGlvbi5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0
VG9TdG9yYWdlQXJlYVN5bmModHlwZSwgbV9pZGVudGlmaWVyLCBuYW1lc3BhY2VJZGVudGlmaWVy
LCBvcmlnaW4pLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9y
YWdlQXJlYVN5bmM6OlJlcGx5KHJlbW90ZUFyZWFJZGVudGlmaWVyLCBpdGVtcywgbWVzc2FnZUlk
ZW50aWZpZXIpLCAwKTsKKyAgICAgICAgZGlkQ29ubmVjdChyZW1vdGVBcmVhSWRlbnRpZmllciwg
V1RGTW92ZShpdGVtcyksIG1lc3NhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgd2Vha0Nvbm5lY3Rpb24gPSBXZWFrUHRyIHsgaXBjQ29ubmVjdGlvbiB9
XShhdXRvIHJlbW90ZUFyZWFJZGVudGlmaWVyLCBhdXRvIGl0ZW1zLCBhdXRvIG1lc3NhZ2VJZGVu
dGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuIGRpZENvbm5lY3QocmVtb3RlQXJlYUlkZW50aWZpZXIsIFdURk1vdmUoaXRlbXMpLCBtZXNz
YWdlSWRlbnRpZmllcik7CisKKyAgICAgICAgaWYgKHdlYWtDb25uZWN0aW9uICYmIHJlbW90ZUFy
ZWFJZGVudGlmaWVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHdlYWtDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFy
ZWEocmVtb3RlQXJlYUlkZW50aWZpZXIpLCAwKTsKKyAgICB9OworCisgICAgaXBjQ29ubmVjdGlv
bi5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29u
bmVjdFRvU3RvcmFnZUFyZWEodHlwZSwgbV9pZGVudGlmaWVyLCBuYW1lc3BhY2VJZGVudGlmaWVy
LCBvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgU3RvcmFn
ZUFyZWFNYXA6OmNvbm5lY3RTeW5jKCkKK3sKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlOjpT
eW5jKTsKK30KKwogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKG1f
bWFwSUQpCisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBtYXBJRDsKLSAgICBzd2l0Y2ggKG1fdHlwZSkg
ewotICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgotICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRy
YW5zaWVudExvY2FsOgotICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2lu
ID0gbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9UcmFu
c2llbnRMb2NhbFN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCB0
b3BMZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VB
cmVhOjpSZXBseShtYXBJRCksIDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYShtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1
cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYTo6UmVwbHkobWFwSUQpLCAwKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6U2Vzc2lvbjoKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1Nlc3Npb25T
dG9yYWdlQXJlYShtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9y
aWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRv
U2Vzc2lvblN0b3JhZ2VBcmVhOjpSZXBseShtYXBJRCksIDApOwotICAgIH0KKyAgICBzZW5kQ29u
bmVjdE1lc3NhZ2UoU2VuZE1vZGU6OkFzeW5jKTsKK30KIAotICAgIGlmIChtYXBJRC5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgbV9tYXBJRCA9IG1hcElEOwotICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKLSAgICB9Cit2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpkaWRDb25uZWN0KFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZW1vdGVBcmVhSWRl
bnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBpdGVtcywgdWludDY0X3QgbWVzc2Fn
ZUlkZW50aWZpZXIpCit7CisgICAgaWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxl
ZE1lc3NhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVk
TWVzc2FnZUlkZW50aWZpZXIgPSBtZXNzYWdlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbW90ZUFy
ZWFJZGVudGlmaWVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW1vdGVB
cmVhSWRlbnRpZmllciA9IHJlbW90ZUFyZWFJZGVudGlmaWVyOworICAgIG1fbWFwID0gbWFrZVVu
aXF1ZTxTdG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CisgICAgbV9tYXAtPmltcG9ydEl0ZW1z
KFdURk1vdmUoaXRlbXMpKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzY29ubmVjdCgp
CiB7Ci0gICAgaWYgKCFtX21hcElEKQorICAgIGlmICghbV9yZW1vdGVBcmVhSWRlbnRpZmllcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVzZXRWYWx1ZXMoKTsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogCiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4
aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYSgqbV9tYXBJRCksIDApOworICAgICAgICBu
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoKm1fcmVtb3RlQXJl
YUlkZW50aWZpZXIpLCAwKTsKIAotICAgIG1fbWFwSUQgPSB7IH07CisgICAgbV9yZW1vdGVBcmVh
SWRlbnRpZmllciA9IHsgfTsKKyAgICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIgPSAw
OwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjppbmNyZW1lbnRVc2VDb3VudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApp
bmRleCAwNmU2MzU2Y2IxMzM5MjY2YmEzNDU0NTk2MjUzODA0NjdiNTgwYjE3Li5jNjI3MWQ5Zjc5
ZWNiYWMzZTRmOGY4Yjg3Zjg3Y2MwNGVkM2JmODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgpAQCAtNjYsOCArNjcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAog
ICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KLSAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4mIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X21hcElEOyB9CisgICAgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAorICAgIHZvaWQgY29ubmVjdCgpOwogICAgIHZv
aWQgZGlzY29ubmVjdCgpOwogCiAgICAgdm9pZCBpbmNyZW1lbnRVc2VDb3VudCgpOwpAQCAtNzgs
OCArODAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBtYXBT
ZWVkLCBjb25zdCBTdHJpbmcmIGtleSk7CiAgICAgdm9pZCBkaWRDbGVhcih1aW50NjRfdCBtYXBT
ZWVkKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25h
bDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyQ2FjaGUoKTsKKyAg
ICB2b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFy
ZWFJbXBsSWRlbnRpZmllcj4mIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpOworICAgIHZvaWQg
Y2xlYXJDYWNoZSh1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJlc2V0
VmFsdWVzKCk7CiAgICAgV2ViQ29yZTo6U3RvcmFnZU1hcCYgZW5zdXJlTWFwKCk7CkBAIC05MCwx
MiArOTIsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVu
dChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKICAgICB2b2lkIGRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAKLSAgICB2b2lkIGNvbm5lY3Qo
KTsKKyAgICBlbnVtIGNsYXNzIFNlbmRNb2RlIDogYm9vbCB7IEFzeW5jLCBTeW5jIH07CisgICAg
dm9pZCBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGUpOworICAgIHZvaWQgY29ubmVjdFN5bmMo
KTsKKyAgICB2b2lkIGRpZENvbm5lY3QoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiYmLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CiAKKyAgICBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fbGFzdEhh
bmRsZWRNZXNzYWdlSWRlbnRpZmllciB7IDAgfTsKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbCYg
bV9uYW1lc3BhY2U7CiAgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5
T3JpZ2luOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTdG9yYWdlTWFwPiBtX21hcDsK
LSAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gbV9tYXBJRDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gbV9yZW1vdGVBcmVhSWRlbnRpZmll
cjsKICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlczsKICAg
ICB1aW50NjRfdCBtX2N1cnJlbnRTZWVkIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5
dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgppbmRleCAyZDFhODEzZmNiODc1N2IxODQy
NzYyOTM4MDY5N2ZjN2JlOWJhOWI1Li42ZGVlOGU4ZTM1YWI1YjY4ODY2ZjIyMDBhNzA2YTgyOTM3
ZmRiY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsNiBAQCBt
ZXNzYWdlcyAtPiBTdG9yYWdlQXJlYU1hcCBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRSZW1vdmVJ
dGVtKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5KQogICAgIERpZENsZWFyKHVp
bnQ2NF90IHN0b3JhZ2VNYXBTZWVkKQogCi0gICAgRGlzcGF0Y2hTdG9yYWdlRXZlbnQoc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1w
bElELCBTdHJpbmcga2V5LCBTdHJpbmcgb2xkVmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5n
IHVybFN0cmluZykKLSAgICBDbGVhckNhY2hlKCkKKyAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4gc3RvcmFnZUFy
ZWFJbXBsSUQsIFN0cmluZyBrZXksIFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBT
dHJpbmcgdXJsU3RyaW5nLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKKyAgICBDbGVhckNh
Y2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mOTIyMTA4OTY4ZjM1OThmZDIwMWFhYWNhZjBlYzAzNzVjNDZlZjk5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyVHlwZSB7IH07
Cit1c2luZyBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449442</attachid>
            <date>2022-01-18 16:02:46 -0800</date>
            <delta_ts>2022-01-18 16:27:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220118160245.patch</filename>
            <type>text/plain</type>
            <size>61496</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uMWU0Y2ZiODkwMjg1ODcwMjExOWFjODA3Yzk2OTgz
YzAyNWE3N2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5h
bHlzaXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQg
YWZ0ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQw
ZTc5YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLjM2OTAxNmVlMTVkN2NkOGVlOGQ4MjMz
NzJmOTdiZDYwZmE4NjBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0
b3JhZ2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3lu
YyB3aXRoIGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQg
cGVyZm9ybXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0
byByZW1vdGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQg
dHdvIHN5bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9y
IGdldHRpbmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0
VmFsdWVzOiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBX
ZSBjYW4gbWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RU
b1N0b3JhZ2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBw
cm9jZXNzIHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRo
ZSB3YWl0IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291
bGQgcHJld2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdl
QXJlYU1hcCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBk
b24ndCBhY3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBm
b3Igb3BlcmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdl
IENvbm5lY3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBw
cmV3YXJtaW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5
IGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25u
ZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5k
bGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVj
dFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdl
KSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0
Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBw
cm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0
aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9m
IG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VB
cmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5
bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0
b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5l
cnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRj
aEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdl
QXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1
M2E5ZjY3MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFt
ZSgpLm1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
VGhpcyBlYWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQg
aXRlbXMgZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9j
YWxTdG9yYWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlm
TmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2Fs
U3RvcmFnZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRh
YTc0YTVjMS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBG
cmFtZTo6ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1l
KCkpOwotICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2Fs
U3RvcmFnZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdD
b3VudDsKLX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVBy
ZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxv
YXRTaXplIEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVT
Y3JlZW5TaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2Qy
ZmQ3ZmM0MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBi
ZGQzMzk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29s
IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0g
ICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9j
YWxTdG9yYWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lk
IGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRF
dmVudFJlZ2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9z
ZWxmT25seVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsg
MCB9OwogCiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggMjUxYmQ0MjlkNjIwNjI5OTdmNzI4ZGMwZGM2NjI1
ZjE0ZjFiNWM3OC4uNzc0NjE0MGY3ODQwODFiMDc4NmExNWQ2MDFmZWZjYTJjOTFjMTBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJld2FybSgpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5o
CmluZGV4IDIyMDU4N2VjODZiYTVjNTE3MWI2NzNiMTc3YTQ2NjFhMjJjZjMxM2QuLmYzY2ZlNGNk
OTVmZDY0NjBiMDk0YzljYjBhNzE0ZmRjM2Q4Y2Y3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VUeXBlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
U3RvcmFnZVR5cGUgOiB1aW50OF90IHsKQEAgLTQ0LDMgKzQ2LDE2IEBAIGlubGluZSBib29sIGlz
UGVyc2lzdGVudExvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdG9yYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLAorICAgICAgICBXZWJD
b3JlOjpTdG9yYWdlVHlwZTo6U2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6
OkxvY2FsLAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCBjODRlYWQ0
MzBhYjE1ZDk0ZmQ4ZWYyNTMzZDZlNDkyODcyYjZlMTJiLi4wYzQxYWI5MmUzMWY0OWQ2YTVhOTQ5
YTQwMzcyOGMyYWE5ZDA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBsaXN0ZW5l
clVuaXF1ZUlEIDogbV9ldmVudExpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNo
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2Fj
aGUoMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJh
c2UmIFN0b3JhZ2VBcmVhOjplbnN1cmVEYXRhYmFzZSgpIGNvbnN0CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQp
OwogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpIHsK
ICAgICAgICAgYXV0byBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gbGlzdGVuZXJVbmlxdWVJ
RCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1w
bElEKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxpc3Rl
bmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZl
bnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlz
cGF0Y2hTdG9yYWdlRXZlbnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjYmRkZDJlMzA0OGQyODcwYWUw
N2EwYWFkZjRlZDk3YjMxMDQzNmM5Li4zY2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4Yzkx
OWQ2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkRm9yVHJhbnNpZW50U3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW8KICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhID0gbnVsbHB0
cjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3
b3JrUXVldWUpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7
CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZUFyZWEpIHsKICAgICAgICAgaWYgKCFtX3BhdGguaXNF
bXB0eSgpKQpAQCAtMTc3LDExICsxNzcsMTEgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWMKICAg
ICB9CiAKICAgICBBU1NFUlQobV9wYXRoLmlzRW1wdHkoKSB8fCBtX2xvY2FsU3RvcmFnZUFyZWEt
PnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6OlNRTGl0ZSk7Ci0gICAgbV9sb2NhbFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX2xvY2FsU3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVy
biBtX2xvY2FsU3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIAotU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAg
IGlmICghbV90cmFuc2llbnRTdG9yYWdlQXJlYSkgewogICAgICAgICBtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhID0gbWFrZVVuaXF1ZTxNZW1vcnlTdG9yYWdlQXJlYT4ob3JpZ2luLCBTdG9yYWdlQXJl
YUJhc2U6OlN0b3JhZ2VUeXBlOjpMb2NhbCk7CkBAIC0xODksNyArMTg5LDcgQEAgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVAKICAgICB9CiAKICAgICBBU1NFUlQobV90cmFuc2llbnRTdG9yYWdlQXJl
YS0+dHlwZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6TWVtb3J5KTsKLSAgICBtX3RyYW5z
aWVudFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX3RyYW5zaWVu
dFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuaAppbmRleCBhODg4NDJlMjk1ZjJkOTBhOGYwZThiYmE4ZWQ3YjNlYTI3
ZDU4YThiLi5jZGNiNjgxMmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU2LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0xv
Y2FsU3RvcmFnZSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Ry
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YS4uZDk3
NGU2ZGIzNTUzODcxNDI1YmFlNjJjMDcyMjU3MjEzMmM2ZDQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTYyNSwyNCArNjI1LDMzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwg
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgdG9wT3JpZ2luIH07Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmxvY2FsU3RvcmFn
ZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgbV9xdWV1ZS5jb3B5UmVmKCkpKTsKLX0K
KyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwor
ICAgIGF1dG8mIG9yaWdpblN0b3JhZ2VNYW5hZ2VyID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihvcmlnaW4pOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZXN1bHRJZGVudGlmaWVyOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2Fs
OgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxT
dG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG1f
cXVldWUuY29weVJlZigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmln
aW5TdG9yYWdlTWFuYWdlci5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0
cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb246CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIg
PSBvcmlnaW5TdG9yYWdlTWFuYWdlci5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFy
ZWFSZWdpc3RyeSkuY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG5hbWVzcGFjZUlkZW50aWZpZXIpOworICAg
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luIH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdp
bikpOworICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5n
ZXRTdG9yYWdlQXJlYShyZXN1bHRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdElkZW50aWZpZXIsIHN0b3JhZ2VBcmVhLT5hbGxJdGVtcygpLCBTdG9y
YWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKKworICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7
IH0sIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9y
aWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBp
ZGVudGlmaWVyKSk7CisgICAgY29ubmVjdFRvU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgdHlwZSwg
c291cmNlSWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaXNj
b25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02NjksMTYgKzY3OCw2IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0
byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEoaWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+
YWxsSXRlbXMoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci19
Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXgg
ZDIxZDY1NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJhNTNhOWU5MS4uYTFmMzA3NjQ0Njc2ZThk
NTM1NjViZmVjODM3OTY3OTZjMzQ2YTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgpAQCAtNDQsNiArNDUsNyBAQCBj
bGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTA4LDEyICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9y
IFdlYlN0b3JhZ2UuCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIp
PiYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKLSAgICB2b2lkIGNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQg
Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRWYWx1ZXMoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Jik+JiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNl
ZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYga2V5
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRf
dCBzZWVkLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTUxNmFkYTk4MzJmZGVmNWI2ODE0OTQ0MjE1ZjY4OGZkYTgx
YzYxNS4uZmZjODZmOWQwOWZkNDU5NTUzNWY4NzUwNTM5NDVhMThhNzczMWYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00MCwxMiArNDAsMTAgQEAK
ICAgICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVj
dGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4s
IFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KIAotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRv
U3RvcmFnZUFyZWEoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cikgQXN5bmMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
IHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFt
ZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgogICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xv
bmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFZhbHVl
cyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cwogICAgIFNldEl0ZW0oV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5n
IGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAg
ICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVj
dGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkNDBlNDBiNjE3M2MyOGQ0NGM1N2I4ZTIwZjcy
YmNiNTExMDQxZGI1Li5iNzM0MmU0MGVmMWY2YmI1Y2RiNmZiZmIyZWYxMjNmOWQwNmU4ZTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjphZGRTdG9yYWdlQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8TWVtbwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1TdG9yYWdlQXJlYUlk
ZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllcikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6
OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIgbmFtZXNwYWNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3N0b3Jh
Z2VBcmVhc0J5TmFtZXNwYWNlLmdldChuYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlk
ZW50aWZpZXIuaXNWYWxpZCgpKSB7CkBAIC04NCw3ICs4NCw4IEBAIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJ
UEM6OkNvCiAgICAgaWYgKCFzdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciB7IH07CiAKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlv
bik7CisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50
aWZpZXIpOworCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaAppbmRleCBmYzE3NjFiZTkwMGY4ZTRkYTc3NTRiMDE4ZjFkYmUyZTM4ZmI3ZGZhLi4wZjdi
ZTRjNWU1Y2M4OGFjMzgyOWMxOTI1MDFmY2M2ODI2MjVlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
b21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJh
MTQ5OThmOGYzYzEuLjIzNmQ4NDZjYzc2NWNkZDRjMDBkYzYzYjFmZDBiNDA1YjdkODg2OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9y
YWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAordWludDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVuSWRlbnRpZmllcnQ7CisgICAg
cmV0dXJuICsrY3VycmVudElkZW50aWZpZXI7Cit9CisKIFN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFn
ZUFyZWFCYXNlKHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbikKLSAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkpCisgICAgOiBtX2lkZW50aWZpZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0ZVRo
cmVhZFNhZmUoKSkKICAgICAsIG1fcXVvdGEocXVvdGEpCiAgICAgLCBtX29yaWdpbihvcmlnaW4p
CiB7CkBAIC0zOSwxMSArNDUsMTEgQEAgU3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlQXJlYUJhc2Uo
dW5zaWduZWQgcXVvdGEsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3IKIAogU3RvcmFn
ZUFyZWFCYXNlOjp+U3RvcmFnZUFyZWFCYXNlKCkgPSBkZWZhdWx0OwogCi12b2lkIFN0b3JhZ2VB
cmVhQmFzZTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
KQordm9pZCBTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgQVNTRVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSk7CisgICAgQVNT
RVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSB8fCBtX2xpc3RlbmVycy5nZXQo
Y29ubmVjdGlvbikgPT0gaWRlbnRpZmllcik7CiAKLSAgICBtX2xpc3RlbmVycy5hZGQoY29ubmVj
dGlvbik7CisgICAgbV9saXN0ZW5lcnMuc2V0KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOwogfQog
CiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCBjb25uZWN0aW9uKQpAQCAtNTgsMTkgKzY0LDE5IEBAIGJvb2wgU3RvcmFnZUFyZWFC
YXNlOjpoYXNMaXN0ZW5lcnMoKSBjb25zdAogCiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6bm90aWZ5
TGlzdGVuZXJzQWJvdXRDbGVhcigpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9s
aXN0ZW5lcnMpCi0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNz
YWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rpb24sIGlkZW50aWZpZXJdIDogbV9saXN0ZW5l
cnMpCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlk
ZW50aWZpZXIoKSksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZUFy
ZWFCYXNlOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgc291cmNlSW1wbElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3QKIHsKICAgICBBU1NFUlQo
c291cmNlSW1wbElkZW50aWZpZXIpOwogCi0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9s
aXN0ZW5lcnMpIHsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uLCBpZGVudGlmaWVyXSA6IG1f
bGlzdGVuZXJzKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRp
Zmllcj4gaW1wbElkZW50aWZpZXI7CiAgICAgICAgIGlmIChjb25uZWN0aW9uID09IHNvdXJjZUNv
bm5lY3Rpb24pCiAgICAgICAgICAgICBpbXBsSWRlbnRpZmllciA9IHNvdXJjZUltcGxJZGVudGlm
aWVyOwotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChpbXBsSWRlbnRpZmllciwga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpT
dG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtleSwg
b2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3Nh
Z2VJZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVh
QmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVh
QmFzZS5oCmluZGV4IGVkM2VkMTQyMDZlMTc1ZGNhY2M4YzFmOTk0OTA3NTA1NDVlMzRlOTguLmVm
YzhmYjk2NDg5MTA3Yzg4ZTMzY2QxMjNmNjA5YTM2ZjIxYWVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNDcsNiAr
NDgsNyBAQCBjbGFzcyBTdG9yYWdlQXJlYUJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3Rv
cmFnZUFyZWFCYXNlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RvcmFnZUFyZWFCYXNl
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBzdGF0aWMgdWlu
dDY0X3QgbmV4dE1lc3NhZ2VJZGVudGlmaWVyKCk7CiAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFC
YXNlKCk7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgU1FMaXRlLCBNZW1vcnkgfTsK
QEAgLTU5LDcgKzYxLDcgQEAgcHVibGljOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdW5zaWdu
ZWQgcXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhOyB9Ci0gICAgdm9pZCBhZGRMaXN0ZW5l
cihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcik7CiAgICAgdm9p
ZCByZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29sIGhh
c0xpc3RlbmVycygpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5TGlzdGVuZXJzQWJvdXRDbGVhcigp
OwpAQCAtNzcsNyArNzksNyBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgdW5zaWduZWQgbV9xdW90YTsKICAgICBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gbV9vcmlnaW47Ci0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBt
X2xpc3RlbmVyczsKKyAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllcj4gbV9saXN0ZW5lcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDhiNTIx
Zjc3MDE1NDhiMWFmOGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIuLmMxZjQzYTE4YzcyYmZiMjVmZjhj
YzYzMTRmMWM3ODM3MWE2YjkyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMzA1LDYgKzMwNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAg
J1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAor
ICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAogICAgICAgICAnV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCkBAIC0zNDcsNiAr
MzQ4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0
b3JhZ2VBcmVhSW1wbElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlRhcElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpU
ZXh0Q2hlY2tlclJlcXVlc3RJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxNTI2MzBhMzAzMjEwNzQ4Yjg4YTAxOWExM2M0MGEwZGFm
MjAzZDE0Li41NGE0YjIxMDFhMzU3YWUxNDk4ZThlODY3NDFlODc2MDUyMjVhMTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NTcs
NiArMTQ1Nyw3IEBACiAJCTkzQUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUI5QjQyMjU3NDkyOEMwMDk4QjEwRSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJOTNBQjlCNTUy
NTc1QTI3NjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNBQjlCNEYyNTc1ODkxMTAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0
aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk5M0FCOUI1NjI1NzVBMjhCMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI1MTI1NzU4OTExMDA5OEIxMEUg
LyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCMEE2NzUyNkQ1QURDRjAwQUEyMUU0IC8qIFdlYlBlcm1p
c3Npb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0IwQTY3NDI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xs
ZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0
OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUy
MjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYg
LyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKQEAgLTUzMDUsNiArNTMwNiw3IEBACiAJ
CTkzQUI5QjUyMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNBQjlCNTMyNTc1ODkxMjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTQyNTc1ODkx
MjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzMy
NkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8q
IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzQjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA2MSw2ICs3MDYzLDcgQEAKIAkJCQkxQUNF
Q0QyMjE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwICovLAogCQkJCTFBQ0VD
RDIzMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oICovLAogCQkJCTFBMzM0REVB
MTZERThCNjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLywKKwkJCQk5
M0FFQzE2MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggKi8s
CiAJCQkJNDY1RjRFMDUyMzBCMkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLmggKi8sCiAJCQkJMUExNzYzNTQxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcCAqLywKIAkJCQkxQTE3NjM1NTE2QjFENUQwMDBEODhGRDYgLyogU3RvcmFnZU5h
bWVzcGFjZUltcGwuaCAqLywKQEAgLTEzMjYzLDYgKzEzMjY2LDcgQEAKIAkJCQk5M0U3OTlEQzI3
NjEyMTA4MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUQzMzA2RjE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUz
OCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlD
NzI3NjAyNzQ2MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAyMjcwYTUzYWY5YmE4YmY4
MGQ3YzNiM2RjZGM4Y2ViNTY1MTc2ZTMuLjhkM2I1N2JkMThkYzJlMDUzODRjY2YwOGQ3ZDljODkw
N2NkMDRkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1h
cDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlQXJl
YU1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFN0b3JhZ2VBcmVhSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpCisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc3RvcmFnZUFyZWFNYXAobWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAg
IHN0b3JhZ2VBcmVhTWFwLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCBmODE2Nzc1YTc5OTRhYjIyY2MyZmJjMjYwMDBlOWQyMmYyZmMyYzZhLi5kMjhm
Y2Y5OTEyMDU3ZTI2NjAyNjZjNzc1MDcwNWQ4MjZiMDc3ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMTg5LDggKzExODksMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKiBjb25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOwogICAg
IEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPT0g
Y29ubmVjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRvVmVj
dG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKLSAgICAgICAgc3RvcmFnZUFyZWFNYXAt
PmRpc2Nvbm5lY3QoKTsKKyAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fc3RvcmFn
ZUFyZWFNYXBzLmtleXMoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gbWFwIDogbV9zdG9yYWdlQXJl
YU1hcHMuZ2V0KGtleSkpCisgICAgICAgIG1fc3RvcmFnZUFyZWFNYXBzLmdldChrZXkpLT5kaXNj
b25uZWN0KCk7CisgICAgfQogCiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVl
cygpKSB7CiAgICAgICAgIGF1dG8gaWRiQ29ubmVjdGlvbiA9IHBhZ2UtPmNvcmVQYWdlKCktPm9w
dGlvbmFsSURCQ29ubmVjdGlvbigpOwpAQCAtMTY5NywyMCArMTY5OSwyMCBAQCB2b2lkIFdlYlBy
b2Nlc3M6Om5vblZpc2libGVQcm9jZXNzTWVtb3J5Q2xlYW51cFRpbWVyRmlyZWQoKQogCiB2b2lk
IFdlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIHN0b3Jh
Z2VBcmVhTWFwKQogewotICAgIEFTU0VSVChzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpOwot
ICAgIEFTU0VSVCghbV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoKnN0b3JhZ2VBcmVhTWFwLmlk
ZW50aWZpZXIoKSkpOwotICAgIG1fc3RvcmFnZUFyZWFNYXBzLnNldCgqc3RvcmFnZUFyZWFNYXAu
aWRlbnRpZmllcigpLCAmc3RvcmFnZUFyZWFNYXApOworICAgIGF1dG8gaWRlbnRpZmllciA9IHN0
b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fc3RvcmFnZUFyZWFNYXBz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwcy5hZGQoaWRlbnRp
Zmllciwgc3RvcmFnZUFyZWFNYXApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAgQVNT
RVJUKHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFy
ZWFNYXBzLmNvbnRhaW5zKCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKTsKLSAgICBBU1NF
UlQobV9zdG9yYWdlQXJlYU1hcHMuZ2V0KCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpID09
ICZzdG9yYWdlQXJlYU1hcCk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKCpzdG9yYWdl
QXJlYU1hcC5pZGVudGlmaWVyKCkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IHN0b3JhZ2VBcmVh
TWFwLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMo
aWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRpZmll
cikuZ2V0KCkgPT0gJnN0b3JhZ2VBcmVhTWFwKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1v
dmUoaWRlbnRpZmllcik7CiB9CiAKLVN0b3JhZ2VBcmVhTWFwKiBXZWJQcm9jZXNzOjpzdG9yYWdl
QXJlYU1hcChTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK1dlYWtQdHI8
U3RvcmFnZUFyZWFNYXA+IFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAogewogICAgIHJldHVybiBtX3N0b3JhZ2VBcmVh
TWFwcy5nZXQoaWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAppbmRleCA0NjlhMGE1ZTE5MWRjZjQ3MDEzMjcxNmI2NzJlZDFjMmU2MWYzMTE3Li5lODdkNzMz
ZDc2YWRlZTBjYjhiYWRiODdmNWNhNzU1ZGE2MmQ3MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgi
CiAjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgotI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNp
bmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVmll
d1VwZGF0ZURpc3BhdGNoZXIuaCIKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmKTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwotICAgIFN0b3JhZ2VBcmVh
TWFwKiBzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYUlkZW50aWZpZXIpIGNvbnN0OworICAgIFdl
YWtQdHI8U3RvcmFnZUFyZWFNYXA+IHN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwSWRlbnRp
ZmllcikgY29uc3Q7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtNzQyLDcgKzc0Miw3
IEBAIHByaXZhdGU6CiAgICAgSGFzaENvdW50ZWRTZXQ8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXI+IG1fc3dSZWdpc3RyYXRpb25Db3VudHM7CiAjZW5kaWYKIAot
ICAgIEhhc2hNYXA8U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYU1hcCo+IG1fc3Rv
cmFnZUFyZWFNYXBzOworICAgIEhhc2hNYXA8U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLCBXZWFr
UHRyPFN0b3JhZ2VBcmVhTWFwPj4gbV9zdG9yYWdlQXJlYU1hcHM7CiAgICAgCiAgICAgLy8gUHJl
d2FybWVkIFdlYlByb2Nlc3NlcyBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHNlc3Npb25JRCB5
ZXQsIHdoaWNoIGlzIHdoeSB0aGlzIGlzIGFuIG9wdGlvbmFsLgogICAgIC8vIEJ5IHRoZSB0aW1l
IHRoZSBXZWJQcm9jZXNzIGdldHMgYSBXZWJQYWdlLCBpdCBpcyBndWFyYW50ZWVkIHRvIGhhdmUg
YSBzZXNzaW9uSUQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRleCBiMTJjNThjMGFhZDY3ZTk5NTc3MDZlMjll
NmRlNjU2OWVmZTY0ODQ2Li4xZjliNDJjYjEyN2Q2ZGMwMjhhNjgwNTllMjcxMDFmYzc5Njk0NDZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTExMiwyMCArMTEyLDEwIEBAIHNpemVfdCBTdG9yYWdlQXJl
YUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKQogICAgIHJldHVybiAwOwogfQogCi12b2lk
IFN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQoKQordm9pZCBTdG9yYWdlQXJl
YUltcGw6OnByZXdhcm0oKQogewotICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4g
dGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCi19Ci0K
LXZvaWQgU3RvcmFnZUFyZWFJbXBsOjpkZWNyZW1lbnRBY2Nlc3NDb3VudCgpCi17Ci0gICAgLy8g
U3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0aGVy
ZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsb3Nl
RGF0YWJhc2VJZklkbGUoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAobV9zdG9yYWdlQXJlYU1hcCkKKyAgICAgICAg
bV9zdG9yYWdlQXJlYU1hcC0+Y29ubmVjdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmgKaW5kZXggNzllMTRiOTFmOGFjNmQ4MmZlNzkyYWMwNmQzOTRlZDc2NTg0MmE2Mi4u
YTM1ZDY2NzkyNTA1ZjBjMDNlNTkwODcwMDFlMGNhNGZkYTdhNmNkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAg
LTYxLDkgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYg
a2V5KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsb3NlRGF0YWJhc2VJ
ZklkbGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByZXdhcm0oKSBmaW5hbDsKIAogICAgIElkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFn
ZUFyZWFNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMmNmN2E2ZDRiNjAwNWMxZDdlYzI1NmJkNjM4ODc2
Mjk0ZTllNGNmMi4uZGY0YzI2ZjJhZmYzMjkxZDkxOWRlZDUzZGQ3NjI3YjU4ZjI4OTI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLmNwcApAQCAtNTEsMTcgKzUxLDE5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIFN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcChTdG9y
YWdlTmFtZXNwYWNlSW1wbCYgc3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQotICAgIDogbV9uYW1lc3BhY2Uoc3RvcmFnZU5hbWVz
cGFjZSkKKyAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYU1hcElkZW50aWZpZXI6OmdlbmVy
YXRlKCkpCisgICAgLCBtX25hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlKQogICAgICwgbV9zZWN1
cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIG1fcXVvdGFJbkJ5dGVz
KHN0b3JhZ2VOYW1lc3BhY2UucXVvdGFJbkJ5dGVzKCkpCiAgICAgLCBtX3R5cGUoc3RvcmFnZU5h
bWVzcGFjZS5zdG9yYWdlVHlwZSgpKQogewotICAgIGNvbm5lY3QoKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAogU3RvcmFn
ZUFyZWFNYXA6On5TdG9yYWdlQXJlYU1hcCgpCiB7CiAgICAgZGlzY29ubmVjdCgpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9
CiAKIHVuc2lnbmVkIFN0b3JhZ2VBcmVhTWFwOjpsZW5ndGgoKQpAQCAtOTUsOCArOTcsOCBAQCB2
b2lkIFN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFy
ZWFJbXBsKiBzb3VyY2VBcmVhLCBjbwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChr
ZXkpOwogCi0gICAgaWYgKG1fbWFwSUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0oKm1fbWFwSUQsIHNvdXJjZUFyZWEt
PmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50
aWZpZXIpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OlNldEl0ZW0oKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEtPmlk
ZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpLnN0cmluZygpKSwgMCk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTdG9yYWdlLCAiU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0gZmFpbGVkIGJlY2F1c2Ug
c3RvcmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwogfQpAQCAtMTE0LDIzICsxMTYsMjIgQEAgdm9p
ZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUs
IFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5
KTsKIAotICAgIGlmIChtX21hcElEKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJdGVtKCptX21hcElELCBzb3VyY2VBcmVh
LT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIp
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OlJlbW92ZUl0ZW0oKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEtPmlkZW50
aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbSBmYWlsZWQgYmVjYXVzZSBzdG9yYWdl
IG1hcCBJRCBpcyBpbnZhbGlkIik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyKFdl
YkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhKQog
ewotICAgIGNvbm5lY3QoKTsKLQorICAgIGNvbm5lY3RTeW5jKCk7CiAgICAgcmVzZXRWYWx1ZXMo
KTsKIAogICAgIG1faGFzUGVuZGluZ0NsZWFyID0gdHJ1ZTsKICAgICBtX21hcCA9IG1ha2VVbmlx
dWU8U3RvcmFnZU1hcD4obV9xdW90YUluQnl0ZXMpOwogCi0gICAgaWYgKG1fbWFwSUQpCi0gICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNs
ZWFyKCptX21hcElELCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQsIHNv
dXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDApOworICAgIGlmIChtX3Jl
bW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhcigqbV9yZW1vdGVBcmVhSWRlbnRpZmllciwgc291
cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6Y2xlYXIgZmFpbGVkIGJlY2F1c2Ugc3Rv
cmFnZSBtYXAgSUQgaXMgaW52YWxpZCIpOwogfQpAQCAtMTUxLDIxICsxNTIsMTEgQEAgdm9pZCBT
dG9yYWdlQXJlYU1hcDo6cmVzZXRWYWx1ZXMoKQogCiBTdG9yYWdlTWFwJiBTdG9yYWdlQXJlYU1h
cDo6ZW5zdXJlTWFwKCkKIHsKLSAgICBjb25uZWN0KCk7CisgICAgY29ubmVjdFN5bmMoKTsKIAot
ICAgIGlmICghbV9tYXApIHsKKyAgICBpZiAoIW1fbWFwKQogICAgICAgICBtX21hcCA9IG1ha2VV
bmlxdWU8U3RvcmFnZU1hcD4obV9xdW90YUluQnl0ZXMpOwogCi0gICAgICAgIGlmIChtX21hcElE
KSB7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSBhIElQQzo6VW5ib3VuZGVkU3luY2hy
b25vdXNJUENTY29wZSB0byBwcmV2ZW50IFVJUHJvY2VzcyBoYW5ncyBpbiBjYXNlIHdlIHJlY2Vp
dmUgYSBzeW5jaHJvbm91cyBJUEMgZnJvbSB0aGUgVUlQcm9jZXNzIHdoaWxlIHdlJ3JlIHdhaXRp
bmcgZm9yIGEgcmVzcG9uc2UKLSAgICAgICAgICAgIC8vIGZyb20gb3VyIFN0b3JhZ2VNYW5hZ2Vy
U2V0OjpHZXRWYWx1ZXMoKSBJUEMuIFRoaXMgSVBDIG1heSBiZSB2ZXJ5IHNsb3cgYmVjYXVzZSBp
dCBtYXkgbmVlZCB0byBmZXRjaCB0aGUgdmFsdWVzIGZyb20gZGlzayBhbmQgdGhlcmUgbWF5IGJl
IGEgbG90IG9mIGRhdGEuCi0gICAgICAgICAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBD
U2NvcGUgdW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZTsKLSAgICAgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IHZhbHVlczsKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpHZXRWYWx1ZXMoKm1fbWFwSUQpLCBN
ZXNzYWdlczo6U3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlczo6UmVwbHkodmFsdWVzKSwgMCk7
Ci0gICAgICAgICAgICBtX21hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZSh2YWx1ZXMpKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU3RvcmFn
ZUFyZWFNYXA6OmVuc3VyZU1hcCBmYWlsZWQgdG8gbG9hZCBmcm9tIG5ldHdvcmsgcHJvY2VzcyBi
ZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFsaWQiKTsKLSAgICB9CiAgICAgcmV0dXJuICpt
X21hcDsKIH0KIApAQCAtMjU5LDggKzI1MCwxMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjphcHBs
eUNoYW5nZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkKICAgICBt
X21hcC0+c2V0SXRlbUlnbm9yaW5nUXVvdGEoa2V5LCBuZXdWYWx1ZSk7CiB9CiAKLXZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3Jh
Z2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiBz
dG9yYWdlQXJlYUltcGxJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1aW50
NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKIHsKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIgPCBt
X2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOwogICAgIGlm
ICghc3RvcmFnZUFyZWFJbXBsSUQpIHsKICAgICAgICAgLy8gVGhpcyBzdG9yYWdlIGV2ZW50IG9y
aWdpbmF0ZXMgZnJvbSBhbm90aGVyIHByb2Nlc3Mgc28gd2UgbmVlZCB0byBhcHBseSB0aGUgY2hh
bmdlIHRvIG91ciBzdG9yYWdlIGFyZWEgbWFwLgogICAgICAgICBhcHBseUNoYW5nZShrZXksIG5l
d1ZhbHVlKTsKQEAgLTI3Miw4ICsyNjcsMTIgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0
Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGUKICAg
ICAgICAgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChzdG9yYWdlQXJlYUltcGxJRCwga2V5LCBv
bGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFNYXA6
OmNsZWFyQ2FjaGUoKQordm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSh1aW50NjRfdCBt
ZXNzYWdlSWRlbnRpZmllcikKIHsKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIgPCBtX2xhc3RI
YW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEhh
bmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOwogICAgIHJlc2V0VmFs
dWVzKCk7CiB9CiAKQEAgLTM0NCw0MiArMzQzLDc5IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRp
c3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUlt
CiAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNU
b0ZyYW1lcyhwYWdlR3JvdXAsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0
cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYU1h
cDo6c2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlIG1vZGUpCit7CisgICAgYXV0byYgaXBjQ29u
bmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBhdXRvIG5hbWVzcGFjZUlkZW50aWZpZXIgPSBt
X25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKTsKKyAgICBhdXRvIG9yaWdpbkRhdGEgPSBt
X3NlY3VyaXR5T3JpZ2luLT5kYXRhKCk7CisgICAgYXV0byB0b3BPcmlnaW5EYXRhID0gbV9uYW1l
c3BhY2UudG9wTGV2ZWxPcmlnaW4oKSA/IG1fbmFtZXNwYWNlLnRvcExldmVsT3JpZ2luKCktPmRh
dGEoKSA6IG9yaWdpbkRhdGE7CisgICAgYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmln
aW4geyB0b3BPcmlnaW5EYXRhLCBvcmlnaW5EYXRhIH07CisgICAgYXV0byB0eXBlID0gbV90eXBl
OworICAgIGlmICgodHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9jYWwgfHwgdHlwZSA9PSBTdG9yYWdl
VHlwZTo6VHJhbnNpZW50TG9jYWwpICYmIG1fbmFtZXNwYWNlLnRvcExldmVsT3JpZ2luKCkpCisg
ICAgICAgIHR5cGUgPSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw7CisKKyAgICBpZiAobW9k
ZSA9PSBTZW5kTW9kZTo6U3luYykgeworICAgICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgcmVt
b3RlQXJlYUlkZW50aWZpZXI7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1z
OworICAgICAgICB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcjsKKyAgICAgICAgaXBjQ29ubmVj
dGlvbi5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9T
dG9yYWdlQXJlYVN5bmModHlwZSwgbV9pZGVudGlmaWVyLCBuYW1lc3BhY2VJZGVudGlmaWVyLCBv
cmlnaW4pLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9yYWdl
QXJlYVN5bmM6OlJlcGx5KHJlbW90ZUFyZWFJZGVudGlmaWVyLCBpdGVtcywgbWVzc2FnZUlkZW50
aWZpZXIpLCAwKTsKKyAgICAgICAgZGlkQ29ubmVjdChyZW1vdGVBcmVhSWRlbnRpZmllciwgV1RG
TW92ZShpdGVtcyksIG1lc3NhZ2VJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgd2Vha0Nvbm5lY3Rpb24gPSBXZWFrUHRyIHsgaXBjQ29ubmVjdGlvbiB9XShh
dXRvIHJlbW90ZUFyZWFJZGVudGlmaWVyLCBhdXRvIGl0ZW1zLCBhdXRvIG1lc3NhZ2VJZGVudGlm
aWVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJu
IGRpZENvbm5lY3QocmVtb3RlQXJlYUlkZW50aWZpZXIsIFdURk1vdmUoaXRlbXMpLCBtZXNzYWdl
SWRlbnRpZmllcik7CisKKyAgICAgICAgaWYgKHdlYWtDb25uZWN0aW9uICYmIHJlbW90ZUFyZWFJ
ZGVudGlmaWVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHdlYWtDb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEo
cmVtb3RlQXJlYUlkZW50aWZpZXIpLCAwKTsKKyAgICB9OworCisgICAgaXBjQ29ubmVjdGlvbi5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVj
dFRvU3RvcmFnZUFyZWEodHlwZSwgbV9pZGVudGlmaWVyLCBuYW1lc3BhY2VJZGVudGlmaWVyLCBv
cmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgU3RvcmFnZUFy
ZWFNYXA6OmNvbm5lY3RTeW5jKCkKK3sKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlOjpTeW5j
KTsKK30KKwogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKG1fbWFw
SUQpCisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBtYXBJRDsKLSAgICBzd2l0Y2ggKG1fdHlwZSkgewot
ICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgotICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5z
aWVudExvY2FsOgotICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0g
bV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9UcmFuc2ll
bnRMb2NhbFN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCB0b3BM
ZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
OjpSZXBseShtYXBJRCksIDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvTG9j
YWxTdG9yYWdlQXJlYShtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0
eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVj
dFRvTG9jYWxTdG9yYWdlQXJlYTo6UmVwbHkobWFwSUQpLCAwKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTdG9yYWdlVHlwZTo6U2Vzc2lvbjoKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1Nlc3Npb25TdG9y
YWdlQXJlYShtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdp
bi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU2Vz
c2lvblN0b3JhZ2VBcmVhOjpSZXBseShtYXBJRCksIDApOwotICAgIH0KKyAgICBzZW5kQ29ubmVj
dE1lc3NhZ2UoU2VuZE1vZGU6OkFzeW5jKTsKK30KIAotICAgIGlmIChtYXBJRC5pc1ZhbGlkKCkp
IHsKLSAgICAgICAgbV9tYXBJRCA9IG1hcElEOwotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKLSAgICB9Cit2b2lkIFN0b3JhZ2VB
cmVhTWFwOjpkaWRDb25uZWN0KFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZW1vdGVBcmVhSWRlbnRp
ZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlk
ZW50aWZpZXIpCit7CisgICAgaWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxlZE1l
c3NhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVkTWVz
c2FnZUlkZW50aWZpZXIgPSBtZXNzYWdlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbW90ZUFyZWFJ
ZGVudGlmaWVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW1vdGVBcmVh
SWRlbnRpZmllciA9IHJlbW90ZUFyZWFJZGVudGlmaWVyOworICAgIG1fbWFwID0gbWFrZVVuaXF1
ZTxTdG9yYWdlTWFwPihtX3F1b3RhSW5CeXRlcyk7CisgICAgbV9tYXAtPmltcG9ydEl0ZW1zKFdU
Rk1vdmUoaXRlbXMpKTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzY29ubmVjdCgpCiB7
Ci0gICAgaWYgKCFtX21hcElEKQorICAgIGlmICghbV9yZW1vdGVBcmVhSWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcmVzZXRWYWx1ZXMoKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogCiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0
aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYSgqbV9tYXBJRCksIDApOworICAgICAgICBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoKm1fcmVtb3RlQXJlYUlk
ZW50aWZpZXIpLCAwKTsKIAotICAgIG1fbWFwSUQgPSB7IH07CisgICAgbV9yZW1vdGVBcmVhSWRl
bnRpZmllciA9IHsgfTsKKyAgICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIgPSAwOwog
fQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjppbmNyZW1lbnRVc2VDb3VudCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRl
eCAwNmU2MzU2Y2IxMzM5MjY2YmEzNDU0NTk2MjUzODA0NjdiNTgwYjE3Li5jNjI3MWQ5Zjc5ZWNi
YWMzZTRmOGY4Yjg3Zjg3Y2MwNGVkM2JmODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgpAQCAtNjYsOCArNjcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAg
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4mIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX21h
cElEOyB9CisgICAgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAorICAgIHZvaWQgY29ubmVjdCgpOwogICAgIHZvaWQg
ZGlzY29ubmVjdCgpOwogCiAgICAgdm9pZCBpbmNyZW1lbnRVc2VDb3VudCgpOwpAQCAtNzgsOCAr
ODAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBtYXBTZWVk
LCBjb25zdCBTdHJpbmcmIGtleSk7CiAgICAgdm9pZCBkaWRDbGVhcih1aW50NjRfdCBtYXBTZWVk
KTsKIAotICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyQ2FjaGUoKTsKKyAgICB2
b2lkIGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllcj4mIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xl
YXJDYWNoZSh1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJlc2V0VmFs
dWVzKCk7CiAgICAgV2ViQ29yZTo6U3RvcmFnZU1hcCYgZW5zdXJlTWFwKCk7CkBAIC05MCwxMiAr
OTIsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudChj
b25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKICAgICB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdl
RXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAKLSAgICB2b2lkIGNvbm5lY3QoKTsK
KyAgICBlbnVtIGNsYXNzIFNlbmRNb2RlIDogYm9vbCB7IEFzeW5jLCBTeW5jIH07CisgICAgdm9p
ZCBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGUpOworICAgIHZvaWQgY29ubmVjdFN5bmMoKTsK
KyAgICB2b2lkIGRpZENvbm5lY3QoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYmLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CiAKKyAgICBTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fbGFzdEhhbmRs
ZWRNZXNzYWdlSWRlbnRpZmllciB7IDAgfTsKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbCYgbV9u
YW1lc3BhY2U7CiAgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3Jp
Z2luOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTdG9yYWdlTWFwPiBtX21hcDsKLSAg
ICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gbV9tYXBJRDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gbV9yZW1vdGVBcmVhSWRlbnRpZmllcjsK
ICAgICBIYXNoQ291bnRlZFNldDxTdHJpbmc+IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlczsKICAgICB1
aW50NjRfdCBtX2N1cnJlbnRTZWVkIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgppbmRleCAyZDFhODEzZmNiODc1N2IxODQyNzYy
OTM4MDY5N2ZjN2JlOWJhOWI1Li42ZGVlOGU4ZTM1YWI1YjY4ODY2ZjIyMDBhNzA2YTgyOTM3ZmRi
Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYU1hcC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsNiBAQCBtZXNz
YWdlcyAtPiBTdG9yYWdlQXJlYU1hcCBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRSZW1vdmVJdGVt
KHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5KQogICAgIERpZENsZWFyKHVpbnQ2
NF90IHN0b3JhZ2VNYXBTZWVkKQogCi0gICAgRGlzcGF0Y2hTdG9yYWdlRXZlbnQoc3RkOjpvcHRp
b25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1wbElE
LCBTdHJpbmcga2V5LCBTdHJpbmcgb2xkVmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5nIHVy
bFN0cmluZykKLSAgICBDbGVhckNhY2hlKCkKKyAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJ
bXBsSUQsIFN0cmluZyBrZXksIFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBTdHJp
bmcgdXJsU3RyaW5nLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKKyAgICBDbGVhckNhY2hl
KHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZpZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mOTIyMTA4OTY4ZjM1OThmZDIwMWFhYWNhZjBlYzAzNzVjNDZlZjk5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2VudW0gU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFN0b3JhZ2VB
cmVhTWFwSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwo=
</data>
<flag name="commit-queue"
          id="475523"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449443</attachid>
            <date>2022-01-18 16:10:47 -0800</date>
            <delta_ts>2022-01-18 16:12:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220118161046.patch</filename>
            <type>text/plain</type>
            <size>62109</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uMWU0Y2ZiODkwMjg1ODcwMjExOWFjODA3Yzk2OTgz
YzAyNWE3N2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5h
bHlzaXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQg
YWZ0ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQw
ZTc5YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLjM2OTAxNmVlMTVkN2NkOGVlOGQ4MjMz
NzJmOTdiZDYwZmE4NjBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0
b3JhZ2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3lu
YyB3aXRoIGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQg
cGVyZm9ybXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0
byByZW1vdGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQg
dHdvIHN5bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9y
IGdldHRpbmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0
VmFsdWVzOiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBX
ZSBjYW4gbWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RU
b1N0b3JhZ2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBw
cm9jZXNzIHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRo
ZSB3YWl0IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291
bGQgcHJld2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdl
QXJlYU1hcCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBk
b24ndCBhY3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBm
b3Igb3BlcmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdl
IENvbm5lY3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBw
cmV3YXJtaW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5
IGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25u
ZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5k
bGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVj
dFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdl
KSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0
Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBw
cm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0
aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9m
IG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VB
cmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5
bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0
b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5l
cnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRj
aEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdl
QXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1
M2E5ZjY3MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFt
ZSgpLm1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
VGhpcyBlYWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQg
aXRlbXMgZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9j
YWxTdG9yYWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlm
TmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2Fs
U3RvcmFnZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRh
YTc0YTVjMS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBG
cmFtZTo6ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1l
KCkpOwotICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2Fs
U3RvcmFnZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdD
b3VudDsKLX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVBy
ZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxv
YXRTaXplIEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVT
Y3JlZW5TaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2Qy
ZmQ3ZmM0MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBi
ZGQzMzk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29s
IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0g
ICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9j
YWxTdG9yYWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lk
IGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRF
dmVudFJlZ2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9z
ZWxmT25seVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsg
MCB9OwogCiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCA1MDAzMGI1MmMx
ODNiMTczZTY5ZmRhMjEzNmFlNjYxZWZlNGNhMmVmLi4xN2RkZDAyNWE4OThjYjQxMGRkZDUzYWI3
NmQ3MjkxMmU4YWFhY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5jcHAKQEAgLTIyNSw2ICsyMjUsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1
c2VXQUxKb3VybmFsTW9kZSgpCiB7CiAgICAgbV91c2VXQUwgPSB0cnVlOwogICAgIHsKKyAgICAg
ICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3Vu
dGVyOwogICAgICAgICBhdXRvIHdhbFN0YXRlbWVudCA9IHByZXBhcmVTdGF0ZW1lbnQoIlBSQUdN
QSBqb3VybmFsX21vZGU9V0FMOyJfcyk7CiAgICAgICAgIGlmICh3YWxTdGF0ZW1lbnQgJiYgd2Fs
U3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewogI2lmbmRlZiBOREVCVUcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCAyNTFiZDQyOWQ2MjA2Mjk5N2Y3MjhkYzBk
YzY2MjVmMTRmMWI1Yzc4Li43NzQ2MTQwZjc4NDA4MWIwNzg2YTE1ZDYwMWZlZmNhMmM5MWMxMGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01OCw2ICs1OCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmV3YXJtKCkgeyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VU
eXBlLmgKaW5kZXggMjIwNTg3ZWM4NmJhNWM1MTcxYjY3M2IxNzdhNDY2MWEyMmNmMzEzZC4uZjNj
ZmU0Y2Q5NWZkNjQ2MGIwOTRjOWNiMGE3MTRmZGMzZDhjZjdjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZVR5cGUuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBj
bGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3QgewpAQCAtNDQsMyArNDYsMTYgQEAgaW5saW5lIGJv
b2wgaXNQZXJzaXN0ZW50TG9jYWxTdG9yYWdlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN0b3JhZ2VUeXBlPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUsCisgICAgICAg
IFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpTZXNzaW9uLAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdl
VHlwZTo6TG9jYWwsCisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2Nh
bAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCmluZGV4IGM4
NGVhZDQzMGFiMTVkOTRmZDhlZjI1MzNkNmU0OTI4NzJiNmUxMmIuLjBjNDFhYjkyZTMxZjQ5ZDZh
NWE5NDlhNDAzNzI4YzJhYTlkMDQwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcApAQCAtMTY1LDcgKzE2NSw3
IEBAIHZvaWQgU3RvcmFnZUFyZWE6OmNsZWFyKCkKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGxp
c3RlbmVyVW5pcXVlSUQgOiBtX2V2ZW50TGlzdGVuZXJzKQotICAgICAgICBJUEM6OkNvbm5lY3Rp
b246OnNlbmQobGlzdGVuZXJVbmlxdWVJRCwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVh
ckNhY2hlKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xl
YXJDYWNoZSgwKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBMb2NhbFN0b3JhZ2VE
YXRhYmFzZSYgU3RvcmFnZUFyZWE6OmVuc3VyZURhdGFiYXNlKCkgY29uc3QKQEAgLTE4OCw3ICsx
ODgsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIFN0bwogICAgIEFTU0VSVChzdG9yYWdlQXJlYUlt
cGxJRCk7CiAgICAgZm9yIChhdXRvJiBsaXN0ZW5lclVuaXF1ZUlEIDogbV9ldmVudExpc3RlbmVy
cykgewogICAgICAgICBhdXRvIG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQgPSBsaXN0ZW5lclVu
aXF1ZUlEID09IHNvdXJjZUNvbm5lY3Rpb24gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoc3RvcmFnZUFy
ZWFJbXBsSUQpIDogc3RkOjpudWxsb3B0OwotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQo
bGlzdGVuZXJVbmlxdWVJRCwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3Jh
Z2VFdmVudChvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1
ZSwgdXJsU3RyaW5nKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBJUEM6OkNv
bm5lY3Rpb246OnNlbmQobGlzdGVuZXJVbmlxdWVJRCwgTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFw
OjpEaXNwYXRjaFN0b3JhZ2VFdmVudChvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElELCBrZXksIG9s
ZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCAwKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGNiZGRkMmUzMDQ4ZDI4
NzBhZTA3YTBhYWRmNGVkOTdiMzEwNDM2YzkuLjNjZTBlYzg1NzNkOThjOWQ3NDhkNzA0YjJkYzlk
YzhjOTE5ZDZmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBA
QCB2b2lkIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3Rpb25DbG9zZWRGb3JUcmFuc2llbnRT
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3RpbwogICAgIG1fdHJhbnNpZW50U3RvcmFnZUFyZWEgPSBu
dWxscHRyOwogfQogCi1TdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBSZWY8V29ya1F1ZXVl
PiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5hZ2Vy
Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29u
bmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBSZWY8V29ya1F1ZXVlPiYmIHdvcmtRdWV1
ZSkKIHsKICAgICBpZiAoIW1fbG9jYWxTdG9yYWdlQXJlYSkgewogICAgICAgICBpZiAoIW1fcGF0
aC5pc0VtcHR5KCkpCkBAIC0xNzcsMTEgKzE3NywxMSBAQCBTdG9yYWdlQXJlYUlkZW50aWZpZXIg
TG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5l
YwogICAgIH0KIAogICAgIEFTU0VSVChtX3BhdGguaXNFbXB0eSgpIHx8IG1fbG9jYWxTdG9yYWdl
QXJlYS0+dHlwZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6U1FMaXRlKTsKLSAgICBtX2xv
Y2FsU3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24pOworICAgIG1fbG9jYWxTdG9y
YWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbiwgc291cmNlSWRlbnRpZmllcik7CiAgICAg
cmV0dXJuIG1fbG9jYWxTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCi1TdG9yYWdlQXJl
YUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxT
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQorU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIg
c291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7
CiAgICAgaWYgKCFtX3RyYW5zaWVudFN0b3JhZ2VBcmVhKSB7CiAgICAgICAgIG1fdHJhbnNpZW50
U3RvcmFnZUFyZWEgPSBtYWtlVW5pcXVlPE1lbW9yeVN0b3JhZ2VBcmVhPihvcmlnaW4sIFN0b3Jh
Z2VBcmVhQmFzZTo6U3RvcmFnZVR5cGU6OkxvY2FsKTsKQEAgLTE4OSw3ICsxODksNyBAQCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50
TG9jYWxTdG9yYWdlQXJlYShJUAogICAgIH0KIAogICAgIEFTU0VSVChtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhLT50eXBlKCkgPT0gU3RvcmFnZUFyZWFCYXNlOjpUeXBlOjpNZW1vcnkpOwotICAgIG1f
dHJhbnNpZW50U3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24pOworICAgIG1fdHJh
bnNpZW50U3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHJldHVybiBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5oCmluZGV4IGE4ODg0MmUyOTVmMmQ5MGE4ZjBlOGJiYThlZDdi
M2VhMjdkNThhOGIuLmNkY2I2ODEyZjhmZWQ2OWJjZGE0OWY2OTQyZDY3Y2RhMmQxMGYxNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xv
Y2FsU3RvcmFnZU1hbmFnZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsOCArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
eW5jTG9jYWxTdG9yYWdlKCk7CiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQpOwogCi0gICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb0xv
Y2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgUmVmPFdvcmtRdWV1ZT4mJik7Ci0gICAgU3RvcmFnZUFyZWFJZGVudGlm
aWVyIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJik7CisgICAgU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIGNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mLCBSZWY8V29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBT
dG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwog
ICAgIHZvaWQgZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBTdG9yYWdlQXJlYUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyLmNwcAppbmRleCA5MzAwOWUyNDllZDFhNGM4OTdjYTkxOTBjM2YyNGQ1YTNjNDU0ODVh
Li5kOTc0ZTZkYjM1NTM4NzE0MjViYWU2MmMwNzIyNTcyMTMyYzZkNDI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNjI1LDI0ICs2MjUsMzMgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXQKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RU
b0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSB0
eXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU3RvcmFnZU5h
bWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVu
dGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCB0b3BPcmlnaW4gfTsKLSAgICBj
b21wbGV0aW9uSGFuZGxlcihsb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2VyKG9yaWdpbikubG9jYWxT
dG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBtX3F1ZXVlLmNvcHlSZWYoKSkp
OwotfQorICAgIGF1dG8gY29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLnVuaXF1ZUlE
KCk7CisgICAgYXV0byYgb3JpZ2luU3RvcmFnZU1hbmFnZXIgPSBsb2NhbE9yaWdpblN0b3JhZ2VN
YW5hZ2VyKG9yaWdpbik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIHJlc3VsdElkZW50aWZp
ZXI7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6
TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmlnaW5TdG9yYWdlTWFuYWdlci5s
b2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNvbm5lY3RUb0xvY2Fs
U3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZpZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdp
biwgbV9xdWV1ZS5jb3B5UmVmKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6
OlN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDoKKyAgICAgICAgcmVzdWx0SWRlbnRpZmllciA9
IG9yaWdpblN0b3JhZ2VNYW5hZ2VyLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFS
ZWdpc3RyeSkuY29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uSWRl
bnRpZmllciwgc291cmNlSWRlbnRpZmllciwgb3JpZ2luKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6U2Vzc2lvbjoKKyAgICAgICAgcmVzdWx0SWRlbnRp
ZmllciA9IG9yaWdpblN0b3JhZ2VNYW5hZ2VyLnNlc3Npb25TdG9yYWdlTWFuYWdlcigqbV9zdG9y
YWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoY29ubmVjdGlvbklk
ZW50aWZpZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbiwgbmFtZXNwYWNlSWRlbnRpZmllcik7
CisgICAgfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50
TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4s
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9wZW5pbmdPcmlnaW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIG9wZW5p
bmdPcmlnaW4gfTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihsb2NhbE9yaWdpblN0b3JhZ2VNYW5h
Z2VyKG9yaWdpbikubG9jYWxTdG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5j
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwg
b3JpZ2luKSk7CisgICAgaWYgKGF1dG8gc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhUmVnaXN0
cnktPmdldFN0b3JhZ2VBcmVhKHJlc3VsdElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIocmVzdWx0SWRlbnRpZmllciwgc3RvcmFnZUFyZWEtPmFsbEl0ZW1zKCks
IFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOworCisgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdElkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IHsgfSwgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKSk7CiB9CiAK
LXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TdG9yYWdlQXJlYVN5
bmMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSB0eXBl
LCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFyZWFJZGVudGlm
aWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwg
dG9wT3JpZ2luIH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFu
YWdlcihvcmlnaW4pLnNlc3Npb25TdG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5
KS5jb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoY29ubmVjdGlvbi51bmlxdWVJRCgpLCBvcmln
aW4sIGlkZW50aWZpZXIpKTsKKyAgICBjb25uZWN0VG9TdG9yYWdlQXJlYShjb25uZWN0aW9uLCB0
eXBlLCBzb3VyY2VJZGVudGlmaWVyLCBuYW1lc3BhY2VJZGVudGlmaWVyLCBvcmlnaW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OmRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTY2OSwxNiArNjc4LDYgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWMKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpnZXRWYWx1ZXMoU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlm
IChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5nZXRTdG9yYWdlQXJl
YShpZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VB
cmVhLT5hbGxJdGVtcygpKTsKLSAgICAKLSAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKLX0KLQogdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnNldEl0ZW0oSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgU3RvcmFn
ZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc3RvcmFnZU1hcFNl
ZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZykKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApp
bmRleCBkMjFkNjU2ZDNhNjcyN2M5OGQxMmE0MTIzNzVlZDA1MmE1M2E5ZTkxLi5hMWYzMDc2NDQ2
NzZlOGQ1MzU2NWJmZWM4Mzc5Njc5NmMzNDZhODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiT3JpZ2luU3RvcmFnZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlt
cGxJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CkBAIC00NCw2ICs0NSw3
IEBAIGNsYXNzIFNoYXJlZEZpbGVIYW5kbGU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVj
dCBDbGllbnRPcmlnaW47CitlbnVtIGNsYXNzIFN0b3JhZ2VUeXBlIDogdWludDhfdDsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDgsMTIgKzExMCwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2V0SGFuZGxlKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJ
ZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIEZp
bGVTeXN0ZW1TdG9yYWdlRXJyb3I+KT4mJik7CiAgICAgCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cyBmb3IgV2ViU3RvcmFnZS4KLSAgICB2b2lkIGNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRp
Zmllcik+JiYpOwotICAgIHZvaWQgY29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShJ
UEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYpOwotICAgIHZvaWQgY29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKKyAgICB2b2lkIGNvbm5lY3RU
b1N0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVh
SWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAg
dm9pZCBjb25uZWN0VG9TdG9yYWdlQXJlYVN5bmMoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6
U3RvcmFnZVR5cGUsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiwgdWlu
dDY0X3QpPiYmKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25u
ZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKICAgICB2b2lkIGNsb25lU2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UoSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGdldFZhbHVlcyhTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4mKT4mJik7CiAgICAgdm9pZCBzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYs
IFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc2VlZCwgU3RyaW5nJiYga2V5LCBTdHJpbmcmJiB2YWx1ZSwgU3RyaW5nJiYgdXJsU3RyaW5n
KTsKICAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVu
dGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzZWVkLCBTdHJpbmcm
JiBrZXksIFN0cmluZyYmIHVybFN0cmluZyk7CiAgICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rp
b24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVp
bnQ2NF90IHNlZWQsIFN0cmluZyYmIHVybFN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBhNTE2YWRhOTgzMmZkZWY1YjY4MTQ5NDQyMTVmNjg4
ZmRhODFjNjE1Li5mZmM4NmY5ZDA5ZmQ0NTk1NTM1Zjg3NTA1Mzk0NWExOGE3NzMxZjAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTQwLDEyICs0MCwx
MCBAQAogICAgIEdldEhhbmRsZU5hbWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlm
aWVyIGlkZW50aWZpZXIpIC0+IChFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgV2ViS2l0OjpGaWxl
U3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAgR2V0SGFuZGxlKFdlYkNvcmU6
OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyBuYW1lKSAtPiAo
RXhwZWN0ZWQ8c3RkOjpwYWlyPFdlYkNvcmU6OkZpbGVTeXN0ZW1IYW5kbGVJZGVudGlmaWVyLCBi
b29sPiwgV2ViS2l0OjpGaWxlU3lzdGVtU3RvcmFnZUVycm9yPiByZXN1bHQpIEFzeW5jIFdhbnRz
Q29ubmVjdGlvbgogCi0gICAgQ29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3Jh
Z2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24K
LSAgICBDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFdlYktpdDo6U3RvcmFnZU5h
bWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIHRvcExldmVsU2VjdXJpdHlPcmlnaW5EYXRhLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKFdlYktpdDo6U3Rv
cmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlv
bgotICAgIENvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRl
bnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb25u
ZWN0VG9TdG9yYWdlQXJlYShXZWJDb3JlOjpTdG9yYWdlVHlwZSB0eXBlLCBXZWJLaXQ6OlN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4gb3JpZ2luKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXMsIHVpbnQ2NF90IG1lc3NhZ2VJZGVu
dGlmaWVyKSBBc3luYyBXYW50c0Nvbm5lY3Rpb24KKyAgICBDb25uZWN0VG9TdG9yYWdlQXJlYVN5
bmMoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
ciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdp
bikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikgU3luY2hy
b25vdXMgV2FudHNDb25uZWN0aW9uCiAgICAgRGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShXZWJL
aXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBXYW50c0Nvbm5lY3Rpb24KICAg
ICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXIgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciB0b1N0b3JhZ2VOYW1lc3BhY2VJRCkgV2FudHNDb25uZWN0aW9uCi0gICAgR2V0
VmFsdWVzKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiB2YWx1ZXMpIFN5bmNocm9ub3VzCiAgICAgU2V0SXRlbShXZWJL
aXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlv
bgogICAgIFJlbW92ZUl0ZW0oV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50
NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5nIHVybFN0cmluZykgV2FudHND
b25uZWN0aW9uCiAgICAgQ2xlYXIoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1
aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lv
blN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGQ0MGU0MGI2MTczYzI4ZDQ0YzU3Yjhl
MjBmNzJiY2I1MTEwNDFkYjUuLmI3MzQyZTQwZWYxZjZiYjVjZGI2ZmJmYjJlZjEyM2Y5ZDA2ZThl
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0b3Jh
Z2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmFkZFN0b3JhZ2VBcmVhKHN0
ZDo6dW5pcXVlX3B0cjxNZW1vCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKLVN0b3JhZ2VB
cmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBuYW1l
c3BhY2VJZGVudGlmaWVyKQorU3RvcmFnZUFyZWFJZGVudGlmaWVyIFNlc3Npb25TdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyKQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IG1f
c3RvcmFnZUFyZWFzQnlOYW1lc3BhY2UuZ2V0KG5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIGlm
ICghaWRlbnRpZmllci5pc1ZhbGlkKCkpIHsKQEAgLTg0LDcgKzg0LDggQEAgU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIFNlc3Npb25TdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VB
cmVhKElQQzo6Q28KICAgICBpZiAoIXN0b3JhZ2VBcmVhKQogICAgICAgICByZXR1cm4gU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIHsgfTsKIAotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25u
ZWN0aW9uKTsKKyAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbiwgc291cmNl
SWRlbnRpZmllcik7CisKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdl
TWFuYWdlci5oCmluZGV4IGZjMTc2MWJlOTAwZjhlNGRhNzc1NGIwMThmMWRiZTJlMzhmYjdkZmEu
LjBmN2JlNGM1ZTVjYzg4YWMzODI5YzE5MjUwMWZjYzY4MjYyNWU1MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3Jh
Z2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyRGF0YSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9TZXNz
aW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOworICAgIFN0b3JhZ2VB
cmVhSWRlbnRpZmllciBjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaXNjb25u
ZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVh
SWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9TdG9yYWdlQXJlYUJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5jcHAKaW5kZXggZTQ0YmEwMTM1YTY0M2MwMWE1YjkwMGM3
NjMxYmExNDk5OGY4ZjNjMS4uMjM2ZDg0NmNjNzY1Y2RkNGMwMGRjNjNiMWZkMGI0MDViN2Q4ODY5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3Jh
Z2VBcmVhQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L1N0b3JhZ2VBcmVhQmFzZS5jcHAKQEAgLTMwLDggKzMwLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCit1aW50NjRfdCBTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigp
Cit7CisgICAgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW5JZGVudGlmaWVydDsK
KyAgICByZXR1cm4gKytjdXJyZW50SWRlbnRpZmllcjsKK30KKwogU3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UodW5zaWduZWQgcXVvdGEsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luKQotICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSkKKyAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYUlkZW50aWZpZXI6OmdlbmVy
YXRlVGhyZWFkU2FmZSgpKQogICAgICwgbV9xdW90YShxdW90YSkKICAgICAsIG1fb3JpZ2luKG9y
aWdpbikKIHsKQEAgLTM5LDExICs0NSwxMSBAQCBTdG9yYWdlQXJlYUJhc2U6OlN0b3JhZ2VBcmVh
QmFzZSh1bnNpZ25lZCBxdW90YSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcgogCiBT
dG9yYWdlQXJlYUJhc2U6On5TdG9yYWdlQXJlYUJhc2UoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgU3Rv
cmFnZUFyZWFCYXNlOjphZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5l
Y3Rpb24pCit2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBBU1NFUlQoIW1fbGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb24pKTsKKyAg
ICBBU1NFUlQoIW1fbGlzdGVuZXJzLmNvbnRhaW5zKGNvbm5lY3Rpb24pIHx8IG1fbGlzdGVuZXJz
LmdldChjb25uZWN0aW9uKSA9PSBpZGVudGlmaWVyKTsKIAotICAgIG1fbGlzdGVuZXJzLmFkZChj
b25uZWN0aW9uKTsKKyAgICBtX2xpc3RlbmVycy5zZXQoY29ubmVjdGlvbiwgaWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFCYXNlOjpyZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlEIGNvbm5lY3Rpb24pCkBAIC01OCwxOSArNjQsMTkgQEAgYm9vbCBTdG9yYWdl
QXJlYUJhc2U6Omhhc0xpc3RlbmVycygpIGNvbnN0CiAKIHZvaWQgU3RvcmFnZUFyZWFCYXNlOjpu
b3RpZnlMaXN0ZW5lcnNBYm91dENsZWFyKCkKIHsKLSAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24g
OiBtX2xpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24s
IE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgZm9yIChhdXRvJiBbY29ubmVjdGlvbiwgaWRlbnRpZmllcl0gOiBtX2xp
c3RlbmVycykKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZShTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNz
YWdlSWRlbnRpZmllcigpKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBTdG9y
YWdlQXJlYUJhc2U6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291
cmNlQ29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBzb3VyY2VJbXBsSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0
cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewogICAgIEFT
U0VSVChzb3VyY2VJbXBsSWRlbnRpZmllcik7CiAKLSAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24g
OiBtX2xpc3RlbmVycykgeworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rpb24sIGlkZW50aWZpZXJd
IDogbV9saXN0ZW5lcnMpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyPiBpbXBsSWRlbnRpZmllcjsKICAgICAgICAgaWYgKGNvbm5lY3Rpb24gPT0gc291
cmNlQ29ubmVjdGlvbikKICAgICAgICAgICAgIGltcGxJZGVudGlmaWVyID0gc291cmNlSW1wbElk
ZW50aWZpZXI7Ci0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNz
YWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KGltcGxJZGVudGlmaWVy
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChpbXBsSWRlbnRpZmllciwg
a2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgU3RvcmFnZUFyZWFCYXNlOjpuZXh0
TWVzc2FnZUlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFn
ZUFyZWFCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFn
ZUFyZWFCYXNlLmgKaW5kZXggZWQzZWQxNDIwNmUxNzVkY2FjYzhjMWY5OTQ5MDc1MDU0NWUzNGU5
OC4uZWZjOGZiOTY0ODkxMDdjODhlMzNjZDEyM2Y2MDlhMzZmMjFhZWQ3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2Uu
aApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJT
dG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC00
Nyw2ICs0OCw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhQmFzZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxTdG9yYWdlQXJlYUJhc2U+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdG9yYWdlQXJl
YUJhc2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRp
YyB1aW50NjRfdCBuZXh0TWVzc2FnZUlkZW50aWZpZXIoKTsKICAgICB2aXJ0dWFsIH5TdG9yYWdl
QXJlYUJhc2UoKTsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBTUUxpdGUsIE1lbW9y
eSB9OwpAQCAtNTksNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4gb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB1
bnNpZ25lZCBxdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVvdGE7IH0KLSAgICB2b2lkIGFkZExp
c3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOworICAgIHZvaWQgYWRkTGlzdGVuZXIo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQpOwogICAgIGJv
b2wgaGFzTGlzdGVuZXJzKCkgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlMaXN0ZW5lcnNBYm91dENs
ZWFyKCk7CkBAIC03Nyw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgU3RvcmFnZUFyZWFJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKICAgICB1bnNpZ25lZCBtX3F1b3RhOwogICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBtX29yaWdpbjsKLSAgICBIYXNoU2V0PElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQ+IG1fbGlzdGVuZXJzOworICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyPiBtX2xpc3RlbmVyczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXgg
OGI1MjFmNzcwMTU0OGIxYWY4YjQ0YjM1Mzc0NjM3NjljOTBkZjk4Mi4uYzFmNDNhMThjNzJiZmIy
NWZmOGNjNjMxNGYxYzc4MzcxYTZiOTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CkBAIC0zMDUsNiArMzA1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2Jl
X2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlNsZWVwRGlzYWJsZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUnLAogICAg
ICAgICAnV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
cicsCisgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlVHlwZScsCiAgICAgICAgICdXZWJDb3JlOjpV
c2VyTWVkaWFSZXF1ZXN0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJMb2NrSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpXZWJTb2NrZXRJZGVudGlmaWVyJywKQEAgLTM0
Nyw2ICszNDgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgp
OgogICAgICAgICAnV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VB
cmVhTWFwSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6VGFwSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OlRleHRDaGVja2VyUmVxdWVzdElEJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1MjYzMGEzMDMyMTA3NDhiODhhMDE5YTEzYzQw
YTBkYWYyMDNkMTQuLjU0YTRiMjEwMWEzNTdhZTE0OThlOGU4Njc0MWU4NzYwNTIyNWExMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTQ1Nyw2ICsxNDU3LDcgQEAKIAkJOTNBQjlCNEUyNTc1NjdFMjAwOThCMTBFIC8qIFNwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQjlCNDIyNTc0OTI4QzAwOThCMTBFIC8qIFNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oICovOyB9OwogCQk5M0FC
OUI1NTI1NzVBMjc2MDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI0RjI1NzU4OTExMDA5OEIxMEUgLyogU3BlZWNoUmVj
b2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCTkzQUI5QjU2MjU3NUEyOEIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUI5QjUxMjU3NTg5MTEwMDk4
QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNBRUMxNjEyNzhGOENEMzAwNjY2NjZGIC8q
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllci5oICovOyB9OwogCQk5M0IwQTY3NTI2RDVBRENGMDBBQTIxRTQgLyogV2Vi
UGVybWlzc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQjBBNjc0MjZENUE3MkUwMEFBMjFFNCAvKiBXZWJQZXJtaXNzaW9uQ29u
dHJvbGxlci5oICovOyB9OwogCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYgLyogU3RvcmFnZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjI2MTQ5MjI3RDE0NzIwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oICovOyB9OwogCQk5M0Iy
NjE0RTIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjI2MTQ1MjI3RDE0NzAwMEI5
N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovOyB9OwpAQCAtNTMwNSw2ICs1MzA2LDcg
QEAKIAkJOTNBQjlCNTIyNTc1ODkxMjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0FCOUI1MzI1NzU4OTEyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FCOUI1NDI1
NzU4OTEyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJl
Y29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0FFQzE2MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Iw
QTY3MzI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IwQTY3NDI2RDVBNzJFMDBBQTIx
RTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDYxLDYgKzcwNjMsNyBAQAogCQkJ
CTFBQ0VDRDIyMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5jcHAgKi8sCiAJCQkJ
MUFDRUNEMjMxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmggKi8sCiAJCQkJMUEz
MzRERUExNkRFOEI2ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluICovLAor
CQkJCTkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIu
aCAqLywKIAkJCQk0NjVGNEUwNTIzMEIyRTdDMDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXIuaCAqLywKIAkJCQkxQTE3NjM1NDE2QjFENUQwMDBEODhGRDYgLyogU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwICovLAogCQkJCTFBMTc2MzU1MTZCMUQ1RDAwMEQ4OEZENiAvKiBTdG9y
YWdlTmFtZXNwYWNlSW1wbC5oICovLApAQCAtMTMyNjMsNiArMTMyNjYsNyBAQAogCQkJCTkzRTc5
OURDMjc2MTIxMDgwMDc0MDA4QSAvKiBTdG9yYWdlQXJlYUJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRDMzMDZGMTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9yYWdlQXJlYUltcGwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQ0VDRDI1MTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTNBRUMxNjEyNzhGOENEMzAwNjY2NjZGIC8qIFN0b3JhZ2VB
cmVhTWFwSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzMzRERUUxNkRFOEY4ODAw
NkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RTc5OUM3Mjc2MDI3NDYwMDc0MDA4QSAvKiBTdG9yYWdlQXJlYVJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMDIyNzBhNTNhZjli
YThiZjgwZDdjM2IzZGNkYzhjZWI1NjUxNzZlMy4uOGQzYjU3YmQxOGRjMmUwNTM4NGNjZjA4ZDdk
OWM4OTA3Y2QwNGRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlN0b3JhZ2VB
cmVhTWFwOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3RvcmFnZUFyZWFNYXAobWFrZU9i
amVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKKyAgICAgICAgaWYgKGF1dG8gc3RvcmFnZUFyZWFNYXAgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zdG9yYWdlQXJlYU1hcChtYWtlT2JqZWN0SWRlbnRpZmllcjxTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAg
ICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGY4MTY3NzVhNzk5NGFiMjJjYzJmYmMyNjAwMGU5ZDIyZjJmYzJjNmEu
LjY4OTcwZWQ3MDQ1Mzc5MzkwZjUyODFiMjc2NTgxMWEyMmMwN2UyZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExODksOCArMTE4OSwxMCBAQCB2b2lkIFdl
YlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24qIGNvbm5lYwogICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik7
CiAgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
biA9PSBjb25uZWN0aW9uKTsKIAotICAgIGZvciAoYXV0byogc3RvcmFnZUFyZWFNYXAgOiBjb3B5
VG9WZWN0b3IobV9zdG9yYWdlQXJlYU1hcHMudmFsdWVzKCkpKQotICAgICAgICBzdG9yYWdlQXJl
YU1hcC0+ZGlzY29ubmVjdCgpOworICAgIGZvciAoYXV0byBrZXkgOiBjb3B5VG9WZWN0b3IobV9z
dG9yYWdlQXJlYU1hcHMua2V5cygpKSkgeworICAgICAgICBpZiAoYXV0byBtYXAgPSBtX3N0b3Jh
Z2VBcmVhTWFwcy5nZXQoa2V5KSkKKyAgICAgICAgICAgIG1hcC0+ZGlzY29ubmVjdCgpOworICAg
IH0KIAogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgewogICAgICAg
ICBhdXRvIGlkYkNvbm5lY3Rpb24gPSBwYWdlLT5jb3JlUGFnZSgpLT5vcHRpb25hbElEQkNvbm5l
Y3Rpb24oKTsKQEAgLTE2OTcsMjAgKzE2OTksMjAgQEAgdm9pZCBXZWJQcm9jZXNzOjpub25WaXNp
YmxlUHJvY2Vzc01lbW9yeUNsZWFudXBUaW1lckZpcmVkKCkKIAogdm9pZCBXZWJQcm9jZXNzOjpy
ZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1hcCkKIHsK
LSAgICBBU1NFUlQoc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQoIW1f
c3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKTsK
LSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5zZXQoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSwg
JnN0b3JhZ2VBcmVhTWFwKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBzdG9yYWdlQXJlYU1hcC5p
ZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMuYWRkKGlkZW50aWZpZXIsIHN0b3JhZ2VB
cmVhTWFwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAo
U3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogewotICAgIEFTU0VSVChzdG9yYWdlQXJl
YU1hcC5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlu
cygqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFy
ZWFNYXBzLmdldCgqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSA9PSAmc3RvcmFnZUFyZWFN
YXApOwotICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZSgqc3RvcmFnZUFyZWFNYXAuaWRlbnRp
ZmllcigpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVy
KCk7CisgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KyAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGlkZW50aWZpZXIpLmdldCgpID09ICZz
dG9yYWdlQXJlYU1hcCk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKGlkZW50aWZpZXIp
OwogfQogCi1TdG9yYWdlQXJlYU1hcCogV2ViUHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CitXZWFrUHRyPFN0b3JhZ2VBcmVhTWFw
PiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIgaWRl
bnRpZmllcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdG9yYWdlQXJlYU1hcHMuZ2V0KGlkZW50
aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNDY5YTBh
NWUxOTFkY2Y0NzAxMzI3MTZiNjcyZWQxYzJlNjFmMzExNy4uZTg3ZDczM2Q3NmFkZWUwY2I4YmFk
Yjg3ZjVjYTc1NWRhNjJkNzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIklk
ZW50aWZpZXJUeXBlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNsdWRl
ICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRj
aGVyLmgiCkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlclN0
b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU3RvcmFn
ZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmKTsKLSAgICBTdG9yYWdlQXJlYU1hcCogc3RvcmFnZUFy
ZWFNYXAoU3RvcmFnZUFyZWFJZGVudGlmaWVyKSBjb25zdDsKKyAgICBXZWFrUHRyPFN0b3JhZ2VB
cmVhTWFwPiBzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIpIGNvbnN0Owog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBw
bGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKQEAgLTc0Miw3ICs3NDIsNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hDb3VudGVkU2V0PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPiBtX3N3UmVnaXN0cmF0aW9uQ291bnRzOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPFN0
b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFNYXAqPiBtX3N0b3JhZ2VBcmVhTWFwczsK
KyAgICBIYXNoTWFwPFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgV2Vha1B0cjxTdG9yYWdlQXJl
YU1hcD4+IG1fc3RvcmFnZUFyZWFNYXBzOwogICAgIAogICAgIC8vIFByZXdhcm1lZCBXZWJQcm9j
ZXNzZXMgZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3
aHkgdGhpcyBpcyBhbiBvcHRpb25hbC4KICAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2Vz
cyBnZXRzIGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAKaW5kZXggYjEyYzU4YzBhYWQ2N2U5OTU3NzA2ZTI5ZTZkZTY1NjllZmU2NDg0
Ni4uMWY5YjQyY2IxMjdkNmRjMDI4YTY4MDU5ZTI3MTAxZmM3OTY5NDQ2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
Y3BwCkBAIC0xMTIsMjAgKzExMiwxMCBAQCBzaXplX3QgU3RvcmFnZUFyZWFJbXBsOjptZW1vcnlC
eXRlc1VzZWRCeUNhY2hlKCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYUlt
cGw6OmluY3JlbWVudEFjY2Vzc0NvdW50KCkKK3ZvaWQgU3RvcmFnZUFyZWFJbXBsOjpwcmV3YXJt
KCkKIHsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVkIGluIHRoZSBuZXR3b3JrIHBy
b2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgotfQotCi12b2lkIFN0b3JhZ2VB
cmVhSW1wbDo6ZGVjcmVtZW50QWNjZXNzQ291bnQoKQotewotICAgIC8vIFN0b3JhZ2UgYWNjZXNz
IGlzIGhhbmRsZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcywgc28gdGhlcmUncyBub3RoaW5nIHRv
IGRvIGhlcmUuCi19Ci0KLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxl
KCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgaWYgKG1fc3RvcmFnZUFyZWFNYXApCisgICAgICAgIG1fc3RvcmFnZUFyZWFN
YXAtPmNvbm5lY3QoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCmluZGV4
IDc5ZTE0YjkxZjhhYzZkODJmZTc5MmFjMDZkMzk0ZWQ3NjU4NDJhNjIuLmEzNWQ2Njc5MjUwNWYw
YzAzZTU5MDg3MDAxZTBjYTRmZGE3YTZjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw5ICs2MSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIG92ZXJyaWRlOwotICAgIHZvaWQg
aW5jcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlY3JlbWVudEFjY2Vz
c0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwcmV3YXJtKCkgZmluYWw7CiAKICAgICBJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKICAgICBXZWFrUHRyPFN0b3JhZ2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCmluZGV4IDJjZjdhNmQ0YjYwMDVjMWQ3ZWMyNTZiZDYzODg3NjI5NGU5ZTRjZjIuLmRm
NGMyNmYyYWZmMzI5MWQ5MTlkZWQ1M2RkNzYyN2I1OGYyODkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAg
LTUxLDE3ICs1MSwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBTdG9yYWdlQXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUlt
cGwmIHN0b3JhZ2VOYW1lc3BhY2UsIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1
cml0eU9yaWdpbikKLSAgICA6IG1fbmFtZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCisgICAgOiBt
X2lkZW50aWZpZXIoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwg
bV9uYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZSkKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oV1RG
TW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhzdG9yYWdlTmFtZXNw
YWNlLnF1b3RhSW5CeXRlcygpKQogICAgICwgbV90eXBlKHN0b3JhZ2VOYW1lc3BhY2Uuc3RvcmFn
ZVR5cGUoKSkKIHsKLSAgICBjb25uZWN0KCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIFN0b3JhZ2VBcmVhTWFwOjp+U3Rv
cmFnZUFyZWFNYXAoKQogewogICAgIGRpc2Nvbm5lY3QoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS51bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiB1bnNpZ25lZCBT
dG9yYWdlQXJlYU1hcDo6bGVuZ3RoKCkKQEAgLTk1LDggKzk3LDggQEAgdm9pZCBTdG9yYWdlQXJl
YU1hcDo6c2V0SXRlbShGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNl
QXJlYSwgY28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIGlm
IChtX21hcElEKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpTZXRJdGVtKCptX21hcElELCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCks
IG1fY3VycmVudFNlZWQsIGtleSwgdmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKSksIDApOworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpTZXRJ
dGVtKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1f
Y3VycmVudFNlZWQsIGtleSwgdmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlN0b3JhZ2VBcmVhTWFwOjpzZXRJdGVtIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElE
IGlzIGludmFsaWQiKTsKIH0KQEAgLTExNCwyMyArMTE2LDIyIEBAIHZvaWQgU3RvcmFnZUFyZWFN
YXA6OnJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUlt
cGwqIHNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBpZiAo
bV9tYXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6UmVtb3ZlSXRlbSgqbV9tYXBJRCwgc291cmNlQXJlYS0+aWRlbnRpZmllcigp
LCBtX2N1cnJlbnRTZWVkLCBrZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJp
bmcoKSksIDApOworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJdGVt
KCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3Vy
cmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKSwg
MCk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU3RvcmFn
ZUFyZWFNYXA6OnJlbW92ZUl0ZW0gZmFpbGVkIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52
YWxpZCIpOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhcihXZWJDb3JlOjpGcmFtZSog
c291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSkKIHsKLSAgICBjb25uZWN0
KCk7Ci0KKyAgICBjb25uZWN0U3luYygpOwogICAgIHJlc2V0VmFsdWVzKCk7CiAKICAgICBtX2hh
c1BlbmRpbmdDbGVhciA9IHRydWU7CiAgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VNYXA+
KG1fcXVvdGFJbkJ5dGVzKTsKIAotICAgIGlmIChtX21hcElEKQotICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDbGVhcigqbV9tYXBJRCwg
c291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRp
ZmllcikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Q2xlYXIoKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEtPmlkZW50
aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpKSwgMCk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdl
LCAiU3RvcmFnZUFyZWFNYXA6OmNsZWFyIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlz
IGludmFsaWQiKTsKIH0KQEAgLTE1MSwyMSArMTUyLDExIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OnJlc2V0VmFsdWVzKCkKIAogU3RvcmFnZU1hcCYgU3RvcmFnZUFyZWFNYXA6OmVuc3VyZU1hcCgp
CiB7Ci0gICAgY29ubmVjdCgpOworICAgIGNvbm5lY3RTeW5jKCk7CiAKLSAgICBpZiAoIW1fbWFw
KSB7CisgICAgaWYgKCFtX21hcCkKICAgICAgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VN
YXA+KG1fcXVvdGFJbkJ5dGVzKTsKIAotICAgICAgICBpZiAobV9tYXBJRCkgewotICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byB1c2UgYSBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUg
dG8gcHJldmVudCBVSVByb2Nlc3MgaGFuZ3MgaW4gY2FzZSB3ZSByZWNlaXZlIGEgc3luY2hyb25v
dXMgSVBDIGZyb20gdGhlIFVJUHJvY2VzcyB3aGlsZSB3ZSdyZSB3YWl0aW5nIGZvciBhIHJlc3Bv
bnNlCi0gICAgICAgICAgICAvLyBmcm9tIG91ciBTdG9yYWdlTWFuYWdlclNldDo6R2V0VmFsdWVz
KCkgSVBDLiBUaGlzIElQQyBtYXkgYmUgdmVyeSBzbG93IGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8g
ZmV0Y2ggdGhlIHZhbHVlcyBmcm9tIGRpc2sgYW5kIHRoZXJlIG1heSBiZSBhIGxvdCBvZiBkYXRh
LgotICAgICAgICAgICAgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHVuYm91bmRl
ZFN5bmNocm9ub3VzSVBDU2NvcGU7Ci0gICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiB2YWx1ZXM7Ci0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6R2V0VmFsdWVzKCptX21hcElEKSwgTWVzc2FnZXM6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXM6OlJlcGx5KHZhbHVlcyksIDApOwotICAgICAgICAgICAg
bV9tYXAtPmltcG9ydEl0ZW1zKFdURk1vdmUodmFsdWVzKSk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVhTWFwOjplbnN1
cmVNYXAgZmFpbGVkIHRvIGxvYWQgZnJvbSBuZXR3b3JrIHByb2Nlc3MgYmVjYXVzZSBzdG9yYWdl
IG1hcCBJRCBpcyBpbnZhbGlkIik7Ci0gICAgfQogICAgIHJldHVybiAqbV9tYXA7CiB9CiAKQEAg
LTI1OSw4ICsyNTAsMTIgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6YXBwbHlDaGFuZ2UoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpCiAgICAgbV9tYXAtPnNldEl0ZW1J
Z25vcmluZ1F1b3RhKGtleSwgbmV3VmFsdWUpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpk
aXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElk
ZW50aWZpZXI+JiBzdG9yYWdlQXJlYUltcGxJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQordm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qg
c3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc3RvcmFnZUFyZWFJbXBs
SUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgdWludDY0X3QgbWVzc2FnZUlk
ZW50aWZpZXIpCiB7CisgICAgaWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxlZE1l
c3NhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVkTWVz
c2FnZUlkZW50aWZpZXIgPSBtZXNzYWdlSWRlbnRpZmllcjsKICAgICBpZiAoIXN0b3JhZ2VBcmVh
SW1wbElEKSB7CiAgICAgICAgIC8vIFRoaXMgc3RvcmFnZSBldmVudCBvcmlnaW5hdGVzIGZyb20g
YW5vdGhlciBwcm9jZXNzIHNvIHdlIG5lZWQgdG8gYXBwbHkgdGhlIGNoYW5nZSB0byBvdXIgc3Rv
cmFnZSBhcmVhIG1hcC4KICAgICAgICAgYXBwbHlDaGFuZ2Uoa2V5LCBuZXdWYWx1ZSk7CkBAIC0y
NzIsOCArMjY3LDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlCiAgICAgICAgIGRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnQoc3RvcmFnZUFyZWFJbXBsSUQsIGtleSwgb2xkVmFsdWUsIG5ld1Zh
bHVlLCB1cmxTdHJpbmcpOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKCkK
K3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlkZW50aWZp
ZXIpCiB7CisgICAgaWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJ
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlk
ZW50aWZpZXIgPSBtZXNzYWdlSWRlbnRpZmllcjsKICAgICByZXNldFZhbHVlcygpOwogfQogCkBA
IC0zNDQsNDIgKzM0Myw3OSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbQogICAgIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZUdy
b3VwLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIG1fc2VjdXJp
dHlPcmlnaW4tPmRhdGEoKSk7CiB9CiAKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OnNlbmRDb25uZWN0
TWVzc2FnZShTZW5kTW9kZSBtb2RlKQoreworICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCk7CisgICAgYXV0byBuYW1lc3BhY2VJZGVudGlmaWVyID0gbV9uYW1lc3BhY2Uuc3Rv
cmFnZU5hbWVzcGFjZUlEKCk7CisgICAgYXV0byBvcmlnaW5EYXRhID0gbV9zZWN1cml0eU9yaWdp
bi0+ZGF0YSgpOworICAgIGF1dG8gdG9wT3JpZ2luRGF0YSA9IG1fbmFtZXNwYWNlLnRvcExldmVs
T3JpZ2luKCkgPyBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpLT5kYXRhKCkgOiBvcmlnaW5E
YXRhOworICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgdG9wT3JpZ2lu
RGF0YSwgb3JpZ2luRGF0YSB9OworICAgIGF1dG8gdHlwZSA9IG1fdHlwZTsKKyAgICBpZiAoKHR5
cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsIHx8IHR5cGUgPT0gU3RvcmFnZVR5cGU6OlRyYW5zaWVu
dExvY2FsKSAmJiBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpKQorICAgICAgICB0eXBlID0g
U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOworCisgICAgaWYgKG1vZGUgPT0gU2VuZE1vZGU6
OlN5bmMpIHsKKyAgICAgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIHJlbW90ZUFyZWFJZGVudGlm
aWVyOworICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtczsKKyAgICAgICAgdWlu
dDY0X3QgbWVzc2FnZUlkZW50aWZpZXI7CisgICAgICAgIGlwY0Nvbm5lY3Rpb24uc2VuZFN5bmMo
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU3RvcmFnZUFyZWFTeW5j
KHR5cGUsIG1faWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jOjpSZXBs
eShyZW1vdGVBcmVhSWRlbnRpZmllciwgaXRlbXMsIG1lc3NhZ2VJZGVudGlmaWVyKSwgMCk7Cisg
ICAgICAgIGRpZENvbm5lY3QocmVtb3RlQXJlYUlkZW50aWZpZXIsIFdURk1vdmUoaXRlbXMpLCBt
ZXNzYWdlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHdl
YWtDb25uZWN0aW9uID0gV2Vha1B0ciB7IGlwY0Nvbm5lY3Rpb24gfV0oYXV0byByZW1vdGVBcmVh
SWRlbnRpZmllciwgYXV0byBpdGVtcywgYXV0byBtZXNzYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7
CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBkaWRDb25uZWN0KHJl
bW90ZUFyZWFJZGVudGlmaWVyLCBXVEZNb3ZlKGl0ZW1zKSwgbWVzc2FnZUlkZW50aWZpZXIpOwor
CisgICAgICAgIGlmICh3ZWFrQ29ubmVjdGlvbiAmJiByZW1vdGVBcmVhSWRlbnRpZmllci5pc1Zh
bGlkKCkpCisgICAgICAgICAgICB3ZWFrQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKHJlbW90ZUFyZWFJZGVu
dGlmaWVyKSwgMCk7CisgICAgfTsKKworICAgIGlwY0Nvbm5lY3Rpb24uc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVh
KHR5cGUsIG1faWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjb25uZWN0
U3luYygpCit7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNlbmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZTo6U3luYyk7Cit9CisKIHZvaWQg
U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QoKQogewotICAgIGlmIChtX21hcElEKQorICAgIGlmICht
X3JlbW90ZUFyZWFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgbWFwSUQ7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFN0b3Jh
Z2VUeXBlOjpMb2NhbDoKLSAgICBjYXNlIFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbDoKLSAg
ICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiA9IG1fbmFtZXNwYWNlLnRv
cExldmVsT3JpZ2luKCkpCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYShtX25hbWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgdG9wTGV2ZWxPcmlnaW4tPmRh
dGEoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYTo6UmVwbHkobWFwSUQp
LCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEo
bV9uYW1lc3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEo
KSksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb0xvY2FsU3RvcmFn
ZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU3RvcmFn
ZVR5cGU6OlNlc3Npb246Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEobV9uYW1l
c3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1l
c3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJl
YTo6UmVwbHkobWFwSUQpLCAwKTsKLSAgICB9CisgICAgc2VuZENvbm5lY3RNZXNzYWdlKFNlbmRN
b2RlOjpBc3luYyk7Cit9CiAKLSAgICBpZiAobWFwSUQuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1f
bWFwSUQgPSBtYXBJRDsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcCgqdGhpcyk7Ci0gICAgfQordm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlkQ29u
bmVjdChTdG9yYWdlQXJlYUlkZW50aWZpZXIgcmVtb3RlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiYgaXRlbXMsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQorewor
ICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVy
ID0gbWVzc2FnZUlkZW50aWZpZXI7CisgICAgaWYgKCFyZW1vdGVBcmVhSWRlbnRpZmllci5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVtb3RlQXJlYUlkZW50aWZpZXIgPSBy
ZW1vdGVBcmVhSWRlbnRpZmllcjsKKyAgICBtX21hcCA9IG1ha2VVbmlxdWU8U3RvcmFnZU1hcD4o
bV9xdW90YUluQnl0ZXMpOworICAgIG1fbWFwLT5pbXBvcnRJdGVtcyhXVEZNb3ZlKGl0ZW1zKSk7
CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc2Nvbm5lY3QoKQogewotICAgIGlmICghbV9t
YXBJRCkKKyAgICBpZiAoIW1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHJlc2V0VmFsdWVzKCk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudW5yZWdp
c3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIAogICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpKQotICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RG
cm9tU3RvcmFnZUFyZWEoKm1fbWFwSUQpLCAwKTsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
OjpEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyKSwgMCk7
CiAKLSAgICBtX21hcElEID0geyB9OworICAgIG1fcmVtb3RlQXJlYUlkZW50aWZpZXIgPSB7IH07
CisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0gMDsKIH0KIAogdm9pZCBTdG9y
YWdlQXJlYU1hcDo6aW5jcmVtZW50VXNlQ291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKaW5kZXggMDZlNjM1NmNiMTMz
OTI2NmJhMzQ1NDU5NjI1MzgwNDY3YjU4MGIxNy4uYzYyNzFkOWY3OWVjYmFjM2U0ZjhmOGI4N2Y4
N2NjMDRlZDNiZjgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTY2LDggKzY3LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlY3Vy
aXR5T3JpZ2luLmdldCgpOyB9Ci0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUlk
ZW50aWZpZXI+JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJRDsgfQorICAgIFN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAKKyAgICB2b2lkIGNvbm5lY3QoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsK
IAogICAgIHZvaWQgaW5jcmVtZW50VXNlQ291bnQoKTsKQEAgLTc4LDggKzgwLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlbW92ZUl0ZW0odWludDY0X3QgbWFwU2VlZCwgY29uc3QgU3RyaW5n
JiBrZXkpOwogICAgIHZvaWQgZGlkQ2xlYXIodWludDY0X3QgbWFwU2VlZCk7CiAKLSAgICB2b2lk
IGRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBs
SWRlbnRpZmllcj4mIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZyk7Ci0gICAgdm9pZCBjbGVhckNhY2hlKCk7CisgICAgdm9pZCBkaXNwYXRjaFN0
b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+
JiBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFyQ2FjaGUodWludDY0
X3QgbWVzc2FnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZXNldFZhbHVlcygpOwogICAgIFdl
YkNvcmU6OlN0b3JhZ2VNYXAmIGVuc3VyZU1hcCgpOwpAQCAtOTAsMTIgKzkyLDE3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZyk7CiAgICAgdm9pZCBkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpOwogCi0gICAgdm9pZCBjb25uZWN0KCk7CisgICAgZW51bSBjbGFz
cyBTZW5kTW9kZSA6IGJvb2wgeyBBc3luYywgU3luYyB9OworICAgIHZvaWQgc2VuZENvbm5lY3RN
ZXNzYWdlKFNlbmRNb2RlKTsKKyAgICB2b2lkIGNvbm5lY3RTeW5jKCk7CisgICAgdm9pZCBkaWRD
b25uZWN0KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiwg
dWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpOwogCisgICAgU3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50
aWZpZXIgeyAwIH07CiAgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwmIG1fbmFtZXNwYWNlOwogICAg
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3RvcmFnZU1hcD4gbV9tYXA7Ci0gICAgc3RkOjpvcHRpb25h
bDxTdG9yYWdlQXJlYUlkZW50aWZpZXI+IG1fbWFwSUQ7CisgICAgc3RkOjpvcHRpb25hbDxTdG9y
YWdlQXJlYUlkZW50aWZpZXI+IG1fcmVtb3RlQXJlYUlkZW50aWZpZXI7CiAgICAgSGFzaENvdW50
ZWRTZXQ8U3RyaW5nPiBtX3BlbmRpbmdWYWx1ZUNoYW5nZXM7CiAgICAgdWludDY0X3QgbV9jdXJy
ZW50U2VlZCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAubWVzc2FnZXMuaW4KaW5kZXggMmQxYTgxM2ZjYjg3NTdiMTg0Mjc2MjkzODA2OTdmYzdiZTli
YTliNS4uNmRlZThlOGUzNWFiNWI2ODg2NmYyMjAwYTcwNmE4MjkzN2ZkYmNhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDYgQEAgbWVzc2FnZXMgLT4gU3RvcmFn
ZUFyZWFNYXAgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBzdG9y
YWdlTWFwU2VlZCwgU3RyaW5nIGtleSkKICAgICBEaWRDbGVhcih1aW50NjRfdCBzdG9yYWdlTWFw
U2VlZCkKIAotICAgIERpc3BhdGNoU3RvcmFnZUV2ZW50KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUltcGxJRCwgU3RyaW5nIGtleSwg
U3RyaW5nIG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUsIFN0cmluZyB1cmxTdHJpbmcpCi0gICAg
Q2xlYXJDYWNoZSgpCisgICAgRGlzcGF0Y2hTdG9yYWdlRXZlbnQoc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1wbElELCBTdHJpbmcg
a2V5LCBTdHJpbmcgb2xkVmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5nIHVybFN0cmluZywg
dWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCisgICAgQ2xlYXJDYWNoZSh1aW50NjRfdCBtZXNz
YWdlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjkyMjEwODk2OGYzNTk4ZmQyMDFhYWFjYWYwZWMwMzc1YzQ2ZWY5OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRl
bnRpZmllci5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449444</attachid>
            <date>2022-01-18 16:12:20 -0800</date>
            <delta_ts>2022-01-18 16:41:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220118161219.patch</filename>
            <type>text/plain</type>
            <size>61477</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uMWU0Y2ZiODkwMjg1ODcwMjExOWFjODA3Yzk2OTgz
YzAyNWE3N2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5h
bHlzaXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQg
YWZ0ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQw
ZTc5YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLjM2OTAxNmVlMTVkN2NkOGVlOGQ4MjMz
NzJmOTdiZDYwZmE4NjBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0
b3JhZ2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3lu
YyB3aXRoIGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQg
cGVyZm9ybXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0
byByZW1vdGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQg
dHdvIHN5bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9y
IGdldHRpbmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0
VmFsdWVzOiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBX
ZSBjYW4gbWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RU
b1N0b3JhZ2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBw
cm9jZXNzIHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRo
ZSB3YWl0IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291
bGQgcHJld2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdl
QXJlYU1hcCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBk
b24ndCBhY3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBm
b3Igb3BlcmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdl
IENvbm5lY3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBw
cmV3YXJtaW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5
IGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25u
ZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5k
bGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVj
dFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdl
KSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0
Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBw
cm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0
aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9m
IG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VB
cmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5
bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0
b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5l
cnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRj
aEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdl
QXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1
M2E5ZjY3MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFt
ZSgpLm1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
VGhpcyBlYWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQg
aXRlbXMgZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9j
YWxTdG9yYWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlm
TmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2Fs
U3RvcmFnZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRh
YTc0YTVjMS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBG
cmFtZTo6ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1l
KCkpOwotICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2Fs
U3RvcmFnZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdD
b3VudDsKLX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVBy
ZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxv
YXRTaXplIEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVT
Y3JlZW5TaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2Qy
ZmQ3ZmM0MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBi
ZGQzMzk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29s
IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0g
ICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9j
YWxTdG9yYWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lk
IGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRF
dmVudFJlZ2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9z
ZWxmT25seVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsg
MCB9OwogCiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggMjUxYmQ0MjlkNjIwNjI5OTdmNzI4ZGMwZGM2NjI1
ZjE0ZjFiNWM3OC4uNzc0NjE0MGY3ODQwODFiMDc4NmExNWQ2MDFmZWZjYTJjOTFjMTBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJld2FybSgpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5o
CmluZGV4IDIyMDU4N2VjODZiYTVjNTE3MWI2NzNiMTc3YTQ2NjFhMjJjZjMxM2QuLmYzY2ZlNGNk
OTVmZDY0NjBiMDk0YzljYjBhNzE0ZmRjM2Q4Y2Y3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VUeXBlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
U3RvcmFnZVR5cGUgOiB1aW50OF90IHsKQEAgLTQ0LDMgKzQ2LDE2IEBAIGlubGluZSBib29sIGlz
UGVyc2lzdGVudExvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdG9yYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLAorICAgICAgICBXZWJD
b3JlOjpTdG9yYWdlVHlwZTo6U2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6
OkxvY2FsLAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCBjODRlYWQ0
MzBhYjE1ZDk0ZmQ4ZWYyNTMzZDZlNDkyODcyYjZlMTJiLi4wYzQxYWI5MmUzMWY0OWQ2YTVhOTQ5
YTQwMzcyOGMyYWE5ZDA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBsaXN0ZW5l
clVuaXF1ZUlEIDogbV9ldmVudExpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNo
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2Fj
aGUoMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJh
c2UmIFN0b3JhZ2VBcmVhOjplbnN1cmVEYXRhYmFzZSgpIGNvbnN0CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQp
OwogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpIHsK
ICAgICAgICAgYXV0byBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gbGlzdGVuZXJVbmlxdWVJ
RCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1w
bElEKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxpc3Rl
bmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZl
bnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlz
cGF0Y2hTdG9yYWdlRXZlbnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjYmRkZDJlMzA0OGQyODcwYWUw
N2EwYWFkZjRlZDk3YjMxMDQzNmM5Li4zY2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4Yzkx
OWQ2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkRm9yVHJhbnNpZW50U3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW8KICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhID0gbnVsbHB0
cjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3
b3JrUXVldWUpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7
CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZUFyZWEpIHsKICAgICAgICAgaWYgKCFtX3BhdGguaXNF
bXB0eSgpKQpAQCAtMTc3LDExICsxNzcsMTEgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWMKICAg
ICB9CiAKICAgICBBU1NFUlQobV9wYXRoLmlzRW1wdHkoKSB8fCBtX2xvY2FsU3RvcmFnZUFyZWEt
PnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6OlNRTGl0ZSk7Ci0gICAgbV9sb2NhbFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX2xvY2FsU3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVy
biBtX2xvY2FsU3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIAotU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAg
IGlmICghbV90cmFuc2llbnRTdG9yYWdlQXJlYSkgewogICAgICAgICBtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhID0gbWFrZVVuaXF1ZTxNZW1vcnlTdG9yYWdlQXJlYT4ob3JpZ2luLCBTdG9yYWdlQXJl
YUJhc2U6OlN0b3JhZ2VUeXBlOjpMb2NhbCk7CkBAIC0xODksNyArMTg5LDcgQEAgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVAKICAgICB9CiAKICAgICBBU1NFUlQobV90cmFuc2llbnRTdG9yYWdlQXJl
YS0+dHlwZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6TWVtb3J5KTsKLSAgICBtX3RyYW5z
aWVudFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX3RyYW5zaWVu
dFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuaAppbmRleCBhODg4NDJlMjk1ZjJkOTBhOGYwZThiYmE4ZWQ3YjNlYTI3
ZDU4YThiLi5jZGNiNjgxMmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU2LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0xv
Y2FsU3RvcmFnZSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Ry
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YS4uZDk3
NGU2ZGIzNTUzODcxNDI1YmFlNjJjMDcyMjU3MjEzMmM2ZDQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTYyNSwyNCArNjI1LDMzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwg
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgdG9wT3JpZ2luIH07Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmxvY2FsU3RvcmFn
ZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgbV9xdWV1ZS5jb3B5UmVmKCkpKTsKLX0K
KyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwor
ICAgIGF1dG8mIG9yaWdpblN0b3JhZ2VNYW5hZ2VyID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihvcmlnaW4pOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZXN1bHRJZGVudGlmaWVyOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2Fs
OgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxT
dG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG1f
cXVldWUuY29weVJlZigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmln
aW5TdG9yYWdlTWFuYWdlci5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0
cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb246CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIg
PSBvcmlnaW5TdG9yYWdlTWFuYWdlci5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFy
ZWFSZWdpc3RyeSkuY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG5hbWVzcGFjZUlkZW50aWZpZXIpOworICAg
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luIH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdp
bikpOworICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5n
ZXRTdG9yYWdlQXJlYShyZXN1bHRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdElkZW50aWZpZXIsIHN0b3JhZ2VBcmVhLT5hbGxJdGVtcygpLCBTdG9y
YWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKKworICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7
IH0sIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9y
aWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBp
ZGVudGlmaWVyKSk7CisgICAgY29ubmVjdFRvU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgdHlwZSwg
c291cmNlSWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaXNj
b25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02NjksMTYgKzY3OCw2IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0
byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEoaWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+
YWxsSXRlbXMoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci19
Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXgg
ZDIxZDY1NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJhNTNhOWU5MS4uYTFmMzA3NjQ0Njc2ZThk
NTM1NjViZmVjODM3OTY3OTZjMzQ2YTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgpAQCAtNDQsNiArNDUsNyBAQCBj
bGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTA4LDEyICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9y
IFdlYlN0b3JhZ2UuCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIp
PiYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKLSAgICB2b2lkIGNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQg
Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRWYWx1ZXMoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Jik+JiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNl
ZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYga2V5
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRf
dCBzZWVkLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTUxNmFkYTk4MzJmZGVmNWI2ODE0OTQ0MjE1ZjY4OGZkYTgx
YzYxNS4uZmZjODZmOWQwOWZkNDU5NTUzNWY4NzUwNTM5NDVhMThhNzczMWYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00MCwxMiArNDAsMTAgQEAK
ICAgICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVj
dGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4s
IFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KIAotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRv
U3RvcmFnZUFyZWEoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cikgQXN5bmMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
IHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFt
ZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgogICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xv
bmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFZhbHVl
cyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cwogICAgIFNldEl0ZW0oV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5n
IGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAg
ICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVj
dGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkNDBlNDBiNjE3M2MyOGQ0NGM1N2I4ZTIwZjcy
YmNiNTExMDQxZGI1Li5iNzM0MmU0MGVmMWY2YmI1Y2RiNmZiZmIyZWYxMjNmOWQwNmU4ZTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjphZGRTdG9yYWdlQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8TWVtbwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1TdG9yYWdlQXJlYUlk
ZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllcikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6
OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIgbmFtZXNwYWNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3N0b3Jh
Z2VBcmVhc0J5TmFtZXNwYWNlLmdldChuYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlk
ZW50aWZpZXIuaXNWYWxpZCgpKSB7CkBAIC04NCw3ICs4NCw4IEBAIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJ
UEM6OkNvCiAgICAgaWYgKCFzdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciB7IH07CiAKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlv
bik7CisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50
aWZpZXIpOworCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaAppbmRleCBmYzE3NjFiZTkwMGY4ZTRkYTc3NTRiMDE4ZjFkYmUyZTM4ZmI3ZGZhLi4wZjdi
ZTRjNWU1Y2M4OGFjMzgyOWMxOTI1MDFmY2M2ODI2MjVlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
b21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJh
MTQ5OThmOGYzYzEuLjIzNmQ4NDZjYzc2NWNkZDRjMDBkYzYzYjFmZDBiNDA1YjdkODg2OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9y
YWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAordWludDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVuSWRlbnRpZmllcnQ7CisgICAg
cmV0dXJuICsrY3VycmVudElkZW50aWZpZXI7Cit9CisKIFN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFn
ZUFyZWFCYXNlKHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbikKLSAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkpCisgICAgOiBtX2lkZW50aWZpZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0ZVRo
cmVhZFNhZmUoKSkKICAgICAsIG1fcXVvdGEocXVvdGEpCiAgICAgLCBtX29yaWdpbihvcmlnaW4p
CiB7CkBAIC0zOSwxMSArNDUsMTEgQEAgU3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlQXJlYUJhc2Uo
dW5zaWduZWQgcXVvdGEsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3IKIAogU3RvcmFn
ZUFyZWFCYXNlOjp+U3RvcmFnZUFyZWFCYXNlKCkgPSBkZWZhdWx0OwogCi12b2lkIFN0b3JhZ2VB
cmVhQmFzZTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
KQordm9pZCBTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgQVNTRVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSk7CisgICAgQVNT
RVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSB8fCBtX2xpc3RlbmVycy5nZXQo
Y29ubmVjdGlvbikgPT0gaWRlbnRpZmllcik7CiAKLSAgICBtX2xpc3RlbmVycy5hZGQoY29ubmVj
dGlvbik7CisgICAgbV9saXN0ZW5lcnMuc2V0KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOwogfQog
CiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCBjb25uZWN0aW9uKQpAQCAtNTgsMTkgKzY0LDE5IEBAIGJvb2wgU3RvcmFnZUFyZWFC
YXNlOjpoYXNMaXN0ZW5lcnMoKSBjb25zdAogCiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6bm90aWZ5
TGlzdGVuZXJzQWJvdXRDbGVhcigpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9s
aXN0ZW5lcnMpCi0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNz
YWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rpb24sIGlkZW50aWZpZXJdIDogbV9saXN0ZW5l
cnMpCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlk
ZW50aWZpZXIoKSksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZUFy
ZWFCYXNlOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgc291cmNlSW1wbElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3QKIHsKICAgICBBU1NFUlQo
c291cmNlSW1wbElkZW50aWZpZXIpOwogCi0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9s
aXN0ZW5lcnMpIHsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uLCBpZGVudGlmaWVyXSA6IG1f
bGlzdGVuZXJzKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRp
Zmllcj4gaW1wbElkZW50aWZpZXI7CiAgICAgICAgIGlmIChjb25uZWN0aW9uID09IHNvdXJjZUNv
bm5lY3Rpb24pCiAgICAgICAgICAgICBpbXBsSWRlbnRpZmllciA9IHNvdXJjZUltcGxJZGVudGlm
aWVyOwotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChpbXBsSWRlbnRpZmllciwga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpT
dG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtleSwg
b2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3Nh
Z2VJZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVh
QmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVh
QmFzZS5oCmluZGV4IGVkM2VkMTQyMDZlMTc1ZGNhY2M4YzFmOTk0OTA3NTA1NDVlMzRlOTguLmVm
YzhmYjk2NDg5MTA3Yzg4ZTMzY2QxMjNmNjA5YTM2ZjIxYWVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNDcsNiAr
NDgsNyBAQCBjbGFzcyBTdG9yYWdlQXJlYUJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3Rv
cmFnZUFyZWFCYXNlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RvcmFnZUFyZWFCYXNl
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBzdGF0aWMgdWlu
dDY0X3QgbmV4dE1lc3NhZ2VJZGVudGlmaWVyKCk7CiAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFC
YXNlKCk7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgU1FMaXRlLCBNZW1vcnkgfTsK
QEAgLTU5LDcgKzYxLDcgQEAgcHVibGljOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdW5zaWdu
ZWQgcXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhOyB9Ci0gICAgdm9pZCBhZGRMaXN0ZW5l
cihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcik7CiAgICAgdm9p
ZCByZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29sIGhh
c0xpc3RlbmVycygpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5TGlzdGVuZXJzQWJvdXRDbGVhcigp
OwpAQCAtNzcsNyArNzksNyBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgdW5zaWduZWQgbV9xdW90YTsKICAgICBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gbV9vcmlnaW47Ci0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBt
X2xpc3RlbmVyczsKKyAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllcj4gbV9saXN0ZW5lcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDhiNTIx
Zjc3MDE1NDhiMWFmOGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIuLmMxZjQzYTE4YzcyYmZiMjVmZjhj
YzYzMTRmMWM3ODM3MWE2YjkyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMzA1LDYgKzMwNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAg
J1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAor
ICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAogICAgICAgICAnV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCkBAIC0zNDcsNiAr
MzQ4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0
b3JhZ2VBcmVhSW1wbElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlRhcElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpU
ZXh0Q2hlY2tlclJlcXVlc3RJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxNTI2MzBhMzAzMjEwNzQ4Yjg4YTAxOWExM2M0MGEwZGFm
MjAzZDE0Li41NGE0YjIxMDFhMzU3YWUxNDk4ZThlODY3NDFlODc2MDUyMjVhMTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NTcs
NiArMTQ1Nyw3IEBACiAJCTkzQUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUI5QjQyMjU3NDkyOEMwMDk4QjEwRSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJOTNBQjlCNTUy
NTc1QTI3NjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNBQjlCNEYyNTc1ODkxMTAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0
aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk5M0FCOUI1NjI1NzVBMjhCMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI1MTI1NzU4OTExMDA5OEIxMEUg
LyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCMEE2NzUyNkQ1QURDRjAwQUEyMUU0IC8qIFdlYlBlcm1p
c3Npb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0IwQTY3NDI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xs
ZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0
OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUy
MjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYg
LyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKQEAgLTUzMDUsNiArNTMwNiw3IEBACiAJ
CTkzQUI5QjUyMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNBQjlCNTMyNTc1ODkxMjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTQyNTc1ODkx
MjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzMy
NkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8q
IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzQjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA2MSw2ICs3MDYzLDcgQEAKIAkJCQkxQUNF
Q0QyMjE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwICovLAogCQkJCTFBQ0VD
RDIzMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oICovLAogCQkJCTFBMzM0REVB
MTZERThCNjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLywKKwkJCQk5
M0FFQzE2MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggKi8s
CiAJCQkJNDY1RjRFMDUyMzBCMkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLmggKi8sCiAJCQkJMUExNzYzNTQxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcCAqLywKIAkJCQkxQTE3NjM1NTE2QjFENUQwMDBEODhGRDYgLyogU3RvcmFnZU5h
bWVzcGFjZUltcGwuaCAqLywKQEAgLTEzMjYzLDYgKzEzMjY2LDcgQEAKIAkJCQk5M0U3OTlEQzI3
NjEyMTA4MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUQzMzA2RjE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUz
OCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlD
NzI3NjAyNzQ2MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAyMjcwYTUzYWY5YmE4YmY4
MGQ3YzNiM2RjZGM4Y2ViNTY1MTc2ZTMuLjhkM2I1N2JkMThkYzJlMDUzODRjY2YwOGQ3ZDljODkw
N2NkMDRkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1h
cDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlQXJl
YU1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFN0b3JhZ2VBcmVhSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpCisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc3RvcmFnZUFyZWFNYXAobWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAg
IHN0b3JhZ2VBcmVhTWFwLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCBmODE2Nzc1YTc5OTRhYjIyY2MyZmJjMjYwMDBlOWQyMmYyZmMyYzZhLi42ODk3
MGVkNzA0NTM3OTM5MGY1MjgxYjI3NjU4MTFhMjJjMDdlMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMTg5LDggKzExODksMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKiBjb25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOwogICAg
IEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPT0g
Y29ubmVjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRvVmVj
dG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKLSAgICAgICAgc3RvcmFnZUFyZWFNYXAt
PmRpc2Nvbm5lY3QoKTsKKyAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fc3RvcmFn
ZUFyZWFNYXBzLmtleXMoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gbWFwID0gbV9zdG9yYWdlQXJl
YU1hcHMuZ2V0KGtleSkpCisgICAgICAgICAgICBtYXAtPmRpc2Nvbm5lY3QoKTsKKyAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsKICAgICAgICAgYXV0
byBpZGJDb25uZWN0aW9uID0gcGFnZS0+Y29yZVBhZ2UoKS0+b3B0aW9uYWxJREJDb25uZWN0aW9u
KCk7CkBAIC0xNjk3LDIwICsxNjk5LDIwIEBAIHZvaWQgV2ViUHJvY2Vzczo6bm9uVmlzaWJsZVBy
b2Nlc3NNZW1vcnlDbGVhbnVwVGltZXJGaXJlZCgpCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0
ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAg
QVNTRVJUKHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKCFtX3N0b3Jh
Z2VBcmVhTWFwcy5jb250YWlucygqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSk7Ci0gICAg
bV9zdG9yYWdlQXJlYU1hcHMuc2V0KCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCksICZzdG9y
YWdlQXJlYU1hcCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAuaWRlbnRp
ZmllcigpOworICAgIEFTU0VSVCghbV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmll
cikpOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLmFkZChpZGVudGlmaWVyLCBzdG9yYWdlQXJlYU1h
cCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6dW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3Jh
Z2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1hcCkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZUFyZWFNYXAu
aWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoKnN0
b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFw
cy5nZXQoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkgPT0gJnN0b3JhZ2VBcmVhTWFwKTsK
LSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIo
KSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpOwor
ICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAg
QVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVyKS5nZXQoKSA9PSAmc3RvcmFn
ZUFyZWFNYXApOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0K
IAotU3RvcmFnZUFyZWFNYXAqIFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVh
SWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAorV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gV2Vi
UHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDQ2OWEwYTVlMTkx
ZGNmNDcwMTMyNzE2YjY3MmVkMWMyZTYxZjMxMTcuLmU4N2Q3MzNkNzZhZGVlMGNiOGJhZGI4N2Y1
Y2E3NTVkYTYyZDcwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJJZGVudGlm
aWVyVHlwZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiU3Rv
cmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hlci5o
IgpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJTdG9yYWdl
QXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwogICAgIHZvaWQgdW5yZWdpc3RlclN0b3JhZ2VBcmVh
TWFwKFN0b3JhZ2VBcmVhTWFwJik7Ci0gICAgU3RvcmFnZUFyZWFNYXAqIHN0b3JhZ2VBcmVhTWFw
KFN0b3JhZ2VBcmVhSWRlbnRpZmllcikgY29uc3Q7CisgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1h
cD4gc3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyKSBjb25zdDsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0
aW9uQXVkaXREYXRhKCkgY29uc3Q7CkBAIC03NDIsNyArNzQyLDcgQEAgcHJpdmF0ZToKICAgICBI
YXNoQ291bnRlZFNldDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj4gbV9zd1JlZ2lzdHJhdGlvbkNvdW50czsKICNlbmRpZgogCi0gICAgSGFzaE1hcDxTdG9yYWdl
QXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhTWFwKj4gbV9zdG9yYWdlQXJlYU1hcHM7CisgICAg
SGFzaE1hcDxTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+
PiBtX3N0b3JhZ2VBcmVhTWFwczsKICAgICAKICAgICAvLyBQcmV3YXJtZWQgV2ViUHJvY2Vzc2Vz
IGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklEIHlldCwgd2hpY2ggaXMgd2h5IHRo
aXMgaXMgYW4gb3B0aW9uYWwuCiAgICAgLy8gQnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nlc3MgZ2V0
cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwCmluZGV4IGIxMmM1OGMwYWFkNjdlOTk1NzcwNmUyOWU2ZGU2NTY5ZWZlNjQ4NDYuLjFm
OWI0MmNiMTI3ZDZkYzAyOGE2ODA1OWUyNzEwMWZjNzk2OTQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApA
QCAtMTEyLDIwICsxMTIsMTAgQEAgc2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNV
c2VkQnlDYWNoZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjpp
bmNyZW1lbnRBY2Nlc3NDb3VudCgpCit2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6cHJld2FybSgpCiB7
Ci0gICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNz
LCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KCkKLXsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBo
YW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBo
ZXJlLgotfQotCi12b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCi17
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0b3JhZ2VBcmVhTWFwLT5j
b25uZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA3OWUx
NGI5MWY4YWM2ZDgyZmU3OTJhYzA2ZDM5NGVkNzY1ODQyYTYyLi5hMzVkNjY3OTI1MDVmMGMwM2U1
OTA4NzAwMWUwY2E0ZmRhN2E2Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjEsOSArNjEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogICAg
IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
c2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGluY3Jl
bWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3Vu
dCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcHJld2FybSgpIGZpbmFsOwogCiAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNw
cAppbmRleCAyY2Y3YTZkNGI2MDA1YzFkN2VjMjU2YmQ2Mzg4NzYyOTRlOWU0Y2YyLi5kZjRjMjZm
MmFmZjMyOTFkOTE5ZGVkNTNkZDc2MjdiNThmMjg5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC01MSwx
NyArNTEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBz
dG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlP
cmlnaW4pCi0gICAgOiBtX25hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlKQorICAgIDogbV9pZGVu
dGlmaWVyKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fbmFt
ZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURk1vdmUo
c2VjdXJpdHlPcmlnaW4pKQogICAgICwgbV9xdW90YUluQnl0ZXMoc3RvcmFnZU5hbWVzcGFjZS5x
dW90YUluQnl0ZXMoKSkKICAgICAsIG1fdHlwZShzdG9yYWdlTmFtZXNwYWNlLnN0b3JhZ2VUeXBl
KCkpCiB7Ci0gICAgY29ubmVjdCgpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lz
dGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiBTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VB
cmVhTWFwKCkKIHsKICAgICBkaXNjb25uZWN0KCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAogdW5zaWduZWQgU3RvcmFn
ZUFyZWFNYXA6Omxlbmd0aCgpCkBAIC05NSw4ICs5Nyw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEs
IGNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBpZiAobV9t
YXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6U2V0SXRlbSgqbV9tYXBJRCwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1
cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3Ry
aW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbSgq
bV9yZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJl
bnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5n
KCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJT
dG9yYWdlQXJlYU1hcDo6c2V0SXRlbSBmYWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBp
bnZhbGlkIik7CiB9CkBAIC0xMTQsMjMgKzExNiwyMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpy
ZW1vdmVJdGVtKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBz
bwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgaWYgKG1fbWFw
SUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OlJlbW92ZUl0ZW0oKm1fbWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9j
dXJyZW50U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkp
LCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlSXRlbSgqbV9y
ZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRT
ZWVkLCBrZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDApOwog
ICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVh
TWFwOjpyZW1vdmVJdGVtIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFsaWQi
KTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJj
ZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEpCiB7Ci0gICAgY29ubmVjdCgpOwot
CisgICAgY29ubmVjdFN5bmMoKTsKICAgICByZXNldFZhbHVlcygpOwogCiAgICAgbV9oYXNQZW5k
aW5nQ2xlYXIgPSB0cnVlOwogICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPihtX3F1
b3RhSW5CeXRlcyk7CiAKLSAgICBpZiAobV9tYXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xlYXIoKm1fbWFwSUQsIHNvdXJj
ZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIp
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkNsZWFyKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVy
KCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0
b3JhZ2VBcmVhTWFwOjpjbGVhciBmYWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBpbnZh
bGlkIik7CiB9CkBAIC0xNTEsMjEgKzE1MiwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZXNl
dFZhbHVlcygpCiAKIFN0b3JhZ2VNYXAmIFN0b3JhZ2VBcmVhTWFwOjplbnN1cmVNYXAoKQogewot
ICAgIGNvbm5lY3QoKTsKKyAgICBjb25uZWN0U3luYygpOwogCi0gICAgaWYgKCFtX21hcCkgewor
ICAgIGlmICghbV9tYXApCiAgICAgICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPiht
X3F1b3RhSW5CeXRlcyk7CiAKLSAgICAgICAgaWYgKG1fbWFwSUQpIHsKLSAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gdXNlIGEgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHRvIHBy
ZXZlbnQgVUlQcm9jZXNzIGhhbmdzIGluIGNhc2Ugd2UgcmVjZWl2ZSBhIHN5bmNocm9ub3VzIElQ
QyBmcm9tIHRoZSBVSVByb2Nlc3Mgd2hpbGUgd2UncmUgd2FpdGluZyBmb3IgYSByZXNwb25zZQot
ICAgICAgICAgICAgLy8gZnJvbSBvdXIgU3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlcygpIElQ
Qy4gVGhpcyBJUEMgbWF5IGJlIHZlcnkgc2xvdyBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGZldGNo
IHRoZSB2YWx1ZXMgZnJvbSBkaXNrIGFuZCB0aGVyZSBtYXkgYmUgYSBsb3Qgb2YgZGF0YS4KLSAg
ICAgICAgICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5j
aHJvbm91c0lQQ1Njb3BlOwotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFs
dWVzOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkdldFZhbHVlcygqbV9tYXBJRCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFu
YWdlclNldDo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKLSAgICAgICAgICAgIG1fbWFw
LT5pbXBvcnRJdGVtcyhXVEZNb3ZlKHZhbHVlcykpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFw
IGZhaWxlZCB0byBsb2FkIGZyb20gbmV0d29yayBwcm9jZXNzIGJlY2F1c2Ugc3RvcmFnZSBtYXAg
SUQgaXMgaW52YWxpZCIpOwotICAgIH0KICAgICByZXR1cm4gKm1fbWFwOwogfQogCkBAIC0yNTks
OCArMjUwLDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgIG1fbWFwLT5zZXRJdGVtSWdub3Jp
bmdRdW90YShrZXksIG5ld1ZhbHVlKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0
Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBu
ZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlm
aWVyKQogeworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdl
SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJ
ZGVudGlmaWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgaWYgKCFzdG9yYWdlQXJlYUltcGxJ
RCkgewogICAgICAgICAvLyBUaGlzIHN0b3JhZ2UgZXZlbnQgb3JpZ2luYXRlcyBmcm9tIGFub3Ro
ZXIgcHJvY2VzcyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBjaGFuZ2UgdG8gb3VyIHN0b3JhZ2Ug
YXJlYSBtYXAuCiAgICAgICAgIGFwcGx5Q2hhbmdlKGtleSwgbmV3VmFsdWUpOwpAQCAtMjcyLDgg
KzI2NywxMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25z
dCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZQogICAgICAgICBkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50KHN0b3JhZ2VBcmVhSW1wbElELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwg
dXJsU3RyaW5nKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSgpCit2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQog
eworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlm
aWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgcmVzZXRWYWx1ZXMoKTsKIH0KIApAQCAtMzQ0
LDQyICszNDMsNzkgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VF
dmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW0KICAgICBTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwg
ZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3Jp
Z2luLT5kYXRhKCkpOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpzZW5kQ29ubmVjdE1lc3Nh
Z2UoU2VuZE1vZGUgbW9kZSkKK3sKKyAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworICAgIGF1dG8gbmFtZXNwYWNlSWRlbnRpZmllciA9IG1fbmFtZXNwYWNlLnN0b3JhZ2VO
YW1lc3BhY2VJRCgpOworICAgIGF1dG8gb3JpZ2luRGF0YSA9IG1fc2VjdXJpdHlPcmlnaW4tPmRh
dGEoKTsKKyAgICBhdXRvIHRvcE9yaWdpbkRhdGEgPSBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdp
bigpID8gbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKS0+ZGF0YSgpIDogb3JpZ2luRGF0YTsK
KyAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IHRvcE9yaWdpbkRhdGEs
IG9yaWdpbkRhdGEgfTsKKyAgICBhdXRvIHR5cGUgPSBtX3R5cGU7CisgICAgaWYgKCh0eXBlID09
IFN0b3JhZ2VUeXBlOjpMb2NhbCB8fCB0eXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2Nh
bCkgJiYgbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSkKKyAgICAgICAgdHlwZSA9IFN0b3Jh
Z2VUeXBlOjpUcmFuc2llbnRMb2NhbDsKKworICAgIGlmIChtb2RlID09IFNlbmRNb2RlOjpTeW5j
KSB7CisgICAgICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZW1vdGVBcmVhSWRlbnRpZmllcjsK
KyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXM7CisgICAgICAgIHVpbnQ2NF90
IG1lc3NhZ2VJZGVudGlmaWVyOworICAgICAgICBpcGNDb25uZWN0aW9uLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyh0eXBl
LCBtX2lkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiksIE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYzo6UmVwbHkocmVt
b3RlQXJlYUlkZW50aWZpZXIsIGl0ZW1zLCBtZXNzYWdlSWRlbnRpZmllciksIDApOworICAgICAg
ICBkaWRDb25uZWN0KHJlbW90ZUFyZWFJZGVudGlmaWVyLCBXVEZNb3ZlKGl0ZW1zKSwgbWVzc2Fn
ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrQ29u
bmVjdGlvbiA9IFdlYWtQdHIgeyBpcGNDb25uZWN0aW9uIH1dKGF1dG8gcmVtb3RlQXJlYUlkZW50
aWZpZXIsIGF1dG8gaXRlbXMsIGF1dG8gbWVzc2FnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAg
ICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gZGlkQ29ubmVjdChyZW1vdGVB
cmVhSWRlbnRpZmllciwgV1RGTW92ZShpdGVtcyksIG1lc3NhZ2VJZGVudGlmaWVyKTsKKworICAg
ICAgICBpZiAod2Vha0Nvbm5lY3Rpb24gJiYgcmVtb3RlQXJlYUlkZW50aWZpZXIuaXNWYWxpZCgp
KQorICAgICAgICAgICAgd2Vha0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShyZW1vdGVBcmVhSWRlbnRpZmll
ciksIDApOworICAgIH07CisKKyAgICBpcGNDb25uZWN0aW9uLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9yYWdlQXJlYSh0eXBl
LCBtX2lkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdFN5bmMo
KQoreworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGU6OlN5bmMpOworfQorCiB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpjb25uZWN0KCkKIHsKLSAgICBpZiAobV9tYXBJRCkKKyAgICBpZiAobV9yZW1v
dGVBcmVhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIG1hcElEOwotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBTdG9yYWdlVHlw
ZTo6TG9jYWw6Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6Ci0gICAgICAg
IGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBtX25hbWVzcGFjZS50b3BMZXZl
bE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEo
bV9uYW1lc3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCks
IG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKG1fbmFt
ZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVh
OjpSZXBseShtYXBJRCksIDApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0b3JhZ2VUeXBl
OjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNl
LnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWE6OlJl
cGx5KG1hcElEKSwgMCk7Ci0gICAgfQorICAgIHNlbmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZTo6
QXN5bmMpOworfQogCi0gICAgaWYgKG1hcElELmlzVmFsaWQoKSkgewotICAgICAgICBtX21hcElE
ID0gbWFwSUQ7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFn
ZUFyZWFNYXAoKnRoaXMpOwotICAgIH0KK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpZENvbm5lY3Qo
U3RvcmFnZUFyZWFJZGVudGlmaWVyIHJlbW90ZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYmIGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAobWVzc2FnZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1l
c3NhZ2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlQXJlYUlkZW50aWZpZXIuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbW90ZUFyZWFJZGVudGlmaWVyID0gcmVtb3Rl
QXJlYUlkZW50aWZpZXI7CisgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VNYXA+KG1fcXVv
dGFJbkJ5dGVzKTsKKyAgICBtX21hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZShpdGVtcykpOwogfQog
CiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KCkKIHsKLSAgICBpZiAoIW1fbWFwSUQp
CisgICAgaWYgKCFtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICByZXNldFZhbHVlcygpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcCgqdGhpcyk7CiAKICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaXNjb25uZWN0RnJvbVN0
b3JhZ2VBcmVhKCptX21hcElEKSwgMCk7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlz
Y29ubmVjdEZyb21TdG9yYWdlQXJlYSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciksIDApOwogCi0g
ICAgbV9tYXBJRCA9IHsgfTsKKyAgICBtX3JlbW90ZUFyZWFJZGVudGlmaWVyID0geyB9OworICAg
IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IDA7CiB9CiAKIHZvaWQgU3RvcmFnZUFy
ZWFNYXA6OmluY3JlbWVudFVzZUNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDA2ZTYzNTZjYjEzMzkyNjZi
YTM0NTQ1OTYyNTM4MDQ2N2I1ODBiMTcuLmM2MjcxZDlmNzllY2JhYzNlNGY4ZjhiODdmODdjYzA0
ZWQzYmY4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFNYXAuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC02
Niw4ICs2Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9y
aWdpbi5nZXQoKTsgfQotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlm
aWVyPiYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSUQ7IH0KKyAgICBTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQogCisgICAgdm9pZCBjb25uZWN0KCk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKICAg
ICB2b2lkIGluY3JlbWVudFVzZUNvdW50KCk7CkBAIC03OCw4ICs4MCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZW1vdmVJdGVtKHVpbnQ2NF90IG1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5
KTsKICAgICB2b2lkIGRpZENsZWFyKHVpbnQ2NF90IG1hcFNlZWQpOwogCi0gICAgdm9pZCBkaXNw
YXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXI+JiBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOwotICAgIHZvaWQgY2xlYXJDYWNoZSgpOworICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdl
RXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291
cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1aW50
NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBjbGVhckNhY2hlKHVpbnQ2NF90IG1l
c3NhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVzZXRWYWx1ZXMoKTsKICAgICBXZWJDb3Jl
OjpTdG9yYWdlTWFwJiBlbnN1cmVNYXAoKTsKQEAgLTkwLDEyICs5MiwxNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOwogICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9w
dGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKIAotICAgIHZvaWQgY29ubmVjdCgpOworICAgIGVudW0gY2xhc3MgU2Vu
ZE1vZGUgOiBib29sIHsgQXN5bmMsIFN5bmMgfTsKKyAgICB2b2lkIHNlbmRDb25uZWN0TWVzc2Fn
ZShTZW5kTW9kZSk7CisgICAgdm9pZCBjb25uZWN0U3luYygpOworICAgIHZvaWQgZGlkQ29ubmVj
dChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYsIHVpbnQ2
NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKIAorICAgIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVy
IHsgMCB9OwogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBtX25hbWVzcGFjZTsKICAgICBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlN0b3JhZ2VNYXA+IG1fbWFwOwotICAgIHN0ZDo6b3B0aW9uYWw8U3Rv
cmFnZUFyZWFJZGVudGlmaWVyPiBtX21hcElEOworICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFy
ZWFJZGVudGlmaWVyPiBtX3JlbW90ZUFyZWFJZGVudGlmaWVyOwogICAgIEhhc2hDb3VudGVkU2V0
PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwogICAgIHVpbnQ2NF90IG1fY3VycmVudFNl
ZWQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1l
c3NhZ2VzLmluCmluZGV4IDJkMWE4MTNmY2I4NzU3YjE4NDI3NjI5MzgwNjk3ZmM3YmU5YmE5YjUu
LjZkZWU4ZThlMzVhYjViNjg4NjZmMjIwMGE3MDZhODI5MzdmZGJjYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VBcmVh
TWFwIE5vdFJlZkNvdW50ZWQgewogICAgIERpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1h
cFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQp
CiAKLSAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFn
ZUFyZWFJbXBsSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXksIFN0cmlu
ZyBvbGRWYWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKQotICAgIENsZWFy
Q2FjaGUoKQorICAgIERpc3BhdGNoU3RvcmFnZUV2ZW50KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUltcGxJRCwgU3RyaW5nIGtleSwg
U3RyaW5nIG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUsIFN0cmluZyB1cmxTdHJpbmcsIHVpbnQ2
NF90IG1lc3NhZ2VJZGVudGlmaWVyKQorICAgIENsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlk
ZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MjIx
MDg5NjhmMzU5OGZkMjAxYWFhY2FmMGVjMDM3NWM0NmVmOTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51
bSBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyVHlw
ZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCg==
</data>
<flag name="commit-queue"
          id="475525"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449447</attachid>
            <date>2022-01-18 16:26:19 -0800</date>
            <delta_ts>2022-01-18 16:52:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220118162618.patch</filename>
            <type>text/plain</type>
            <size>61478</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uMWU0Y2ZiODkwMjg1ODcwMjExOWFjODA3Yzk2OTgz
YzAyNWE3N2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5h
bHlzaXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQg
YWZ0ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQw
ZTc5YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLjM2OTAxNmVlMTVkN2NkOGVlOGQ4MjMz
NzJmOTdiZDYwZmE4NjBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0
b3JhZ2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3lu
YyB3aXRoIGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQg
cGVyZm9ybXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0
byByZW1vdGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQg
dHdvIHN5bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9y
IGdldHRpbmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0
VmFsdWVzOiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBX
ZSBjYW4gbWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RU
b1N0b3JhZ2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBw
cm9jZXNzIHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRo
ZSB3YWl0IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291
bGQgcHJld2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdl
QXJlYU1hcCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBk
b24ndCBhY3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBm
b3Igb3BlcmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdl
IENvbm5lY3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBw
cmV3YXJtaW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5
IGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25u
ZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5k
bGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVj
dFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdl
KSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0
Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBw
cm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0
aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9m
IG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VB
cmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5
bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0
b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5l
cnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRj
aEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdl
QXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1
M2E5ZjY3MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFt
ZSgpLm1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
VGhpcyBlYWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQg
aXRlbXMgZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9j
YWxTdG9yYWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlm
TmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2Fs
U3RvcmFnZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRh
YTc0YTVjMS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBG
cmFtZTo6ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1l
KCkpOwotICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2Fs
U3RvcmFnZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdD
b3VudDsKLX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVBy
ZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxv
YXRTaXplIEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVT
Y3JlZW5TaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2Qy
ZmQ3ZmM0MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBi
ZGQzMzk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29s
IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0g
ICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9j
YWxTdG9yYWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lk
IGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRF
dmVudFJlZ2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9z
ZWxmT25seVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsg
MCB9OwogCiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggMjUxYmQ0MjlkNjIwNjI5OTdmNzI4ZGMwZGM2NjI1
ZjE0ZjFiNWM3OC4uNzc0NjE0MGY3ODQwODFiMDc4NmExNWQ2MDFmZWZjYTJjOTFjMTBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJld2FybSgpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5o
CmluZGV4IDIyMDU4N2VjODZiYTVjNTE3MWI2NzNiMTc3YTQ2NjFhMjJjZjMxM2QuLmYzY2ZlNGNk
OTVmZDY0NjBiMDk0YzljYjBhNzE0ZmRjM2Q4Y2Y3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VUeXBlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
U3RvcmFnZVR5cGUgOiB1aW50OF90IHsKQEAgLTQ0LDMgKzQ2LDE2IEBAIGlubGluZSBib29sIGlz
UGVyc2lzdGVudExvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdG9yYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLAorICAgICAgICBXZWJD
b3JlOjpTdG9yYWdlVHlwZTo6U2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6
OkxvY2FsLAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCBjODRlYWQ0
MzBhYjE1ZDk0ZmQ4ZWYyNTMzZDZlNDkyODcyYjZlMTJiLi4wYzQxYWI5MmUzMWY0OWQ2YTVhOTQ5
YTQwMzcyOGMyYWE5ZDA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBsaXN0ZW5l
clVuaXF1ZUlEIDogbV9ldmVudExpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNo
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2Fj
aGUoMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJh
c2UmIFN0b3JhZ2VBcmVhOjplbnN1cmVEYXRhYmFzZSgpIGNvbnN0CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQp
OwogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpIHsK
ICAgICAgICAgYXV0byBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gbGlzdGVuZXJVbmlxdWVJ
RCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1w
bElEKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxpc3Rl
bmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZl
bnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlz
cGF0Y2hTdG9yYWdlRXZlbnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjYmRkZDJlMzA0OGQyODcwYWUw
N2EwYWFkZjRlZDk3YjMxMDQzNmM5Li4zY2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4Yzkx
OWQ2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkRm9yVHJhbnNpZW50U3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW8KICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhID0gbnVsbHB0
cjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3
b3JrUXVldWUpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7
CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZUFyZWEpIHsKICAgICAgICAgaWYgKCFtX3BhdGguaXNF
bXB0eSgpKQpAQCAtMTc3LDExICsxNzcsMTEgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWMKICAg
ICB9CiAKICAgICBBU1NFUlQobV9wYXRoLmlzRW1wdHkoKSB8fCBtX2xvY2FsU3RvcmFnZUFyZWEt
PnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6OlNRTGl0ZSk7Ci0gICAgbV9sb2NhbFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX2xvY2FsU3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVy
biBtX2xvY2FsU3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIAotU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAg
IGlmICghbV90cmFuc2llbnRTdG9yYWdlQXJlYSkgewogICAgICAgICBtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhID0gbWFrZVVuaXF1ZTxNZW1vcnlTdG9yYWdlQXJlYT4ob3JpZ2luLCBTdG9yYWdlQXJl
YUJhc2U6OlN0b3JhZ2VUeXBlOjpMb2NhbCk7CkBAIC0xODksNyArMTg5LDcgQEAgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVAKICAgICB9CiAKICAgICBBU1NFUlQobV90cmFuc2llbnRTdG9yYWdlQXJl
YS0+dHlwZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6TWVtb3J5KTsKLSAgICBtX3RyYW5z
aWVudFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX3RyYW5zaWVu
dFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuaAppbmRleCBhODg4NDJlMjk1ZjJkOTBhOGYwZThiYmE4ZWQ3YjNlYTI3
ZDU4YThiLi5jZGNiNjgxMmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU2LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0xv
Y2FsU3RvcmFnZSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Ry
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YS4uZDk3
NGU2ZGIzNTUzODcxNDI1YmFlNjJjMDcyMjU3MjEzMmM2ZDQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTYyNSwyNCArNjI1LDMzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwg
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgdG9wT3JpZ2luIH07Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmxvY2FsU3RvcmFn
ZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgbV9xdWV1ZS5jb3B5UmVmKCkpKTsKLX0K
KyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwor
ICAgIGF1dG8mIG9yaWdpblN0b3JhZ2VNYW5hZ2VyID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihvcmlnaW4pOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZXN1bHRJZGVudGlmaWVyOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2Fs
OgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxT
dG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG1f
cXVldWUuY29weVJlZigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmln
aW5TdG9yYWdlTWFuYWdlci5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0
cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb246CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIg
PSBvcmlnaW5TdG9yYWdlTWFuYWdlci5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFy
ZWFSZWdpc3RyeSkuY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG5hbWVzcGFjZUlkZW50aWZpZXIpOworICAg
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luIH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdp
bikpOworICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5n
ZXRTdG9yYWdlQXJlYShyZXN1bHRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdElkZW50aWZpZXIsIHN0b3JhZ2VBcmVhLT5hbGxJdGVtcygpLCBTdG9y
YWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKKworICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7
IH0sIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9y
aWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBp
ZGVudGlmaWVyKSk7CisgICAgY29ubmVjdFRvU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgdHlwZSwg
c291cmNlSWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaXNj
b25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02NjksMTYgKzY3OCw2IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0
byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEoaWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+
YWxsSXRlbXMoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci19
Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXgg
ZDIxZDY1NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJhNTNhOWU5MS4uYTFmMzA3NjQ0Njc2ZThk
NTM1NjViZmVjODM3OTY3OTZjMzQ2YTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgpAQCAtNDQsNiArNDUsNyBAQCBj
bGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTA4LDEyICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9y
IFdlYlN0b3JhZ2UuCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIp
PiYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKLSAgICB2b2lkIGNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQg
Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRWYWx1ZXMoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Jik+JiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNl
ZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYga2V5
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRf
dCBzZWVkLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTUxNmFkYTk4MzJmZGVmNWI2ODE0OTQ0MjE1ZjY4OGZkYTgx
YzYxNS4uZmZjODZmOWQwOWZkNDU5NTUzNWY4NzUwNTM5NDVhMThhNzczMWYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00MCwxMiArNDAsMTAgQEAK
ICAgICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVj
dGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4s
IFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KIAotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRv
U3RvcmFnZUFyZWEoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cikgQXN5bmMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
IHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFt
ZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgogICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xv
bmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFZhbHVl
cyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cwogICAgIFNldEl0ZW0oV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5n
IGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAg
ICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVj
dGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkNDBlNDBiNjE3M2MyOGQ0NGM1N2I4ZTIwZjcy
YmNiNTExMDQxZGI1Li5iNzM0MmU0MGVmMWY2YmI1Y2RiNmZiZmIyZWYxMjNmOWQwNmU4ZTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjphZGRTdG9yYWdlQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8TWVtbwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1TdG9yYWdlQXJlYUlk
ZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllcikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6
OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIgbmFtZXNwYWNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3N0b3Jh
Z2VBcmVhc0J5TmFtZXNwYWNlLmdldChuYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlk
ZW50aWZpZXIuaXNWYWxpZCgpKSB7CkBAIC04NCw3ICs4NCw4IEBAIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJ
UEM6OkNvCiAgICAgaWYgKCFzdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciB7IH07CiAKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlv
bik7CisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50
aWZpZXIpOworCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaAppbmRleCBmYzE3NjFiZTkwMGY4ZTRkYTc3NTRiMDE4ZjFkYmUyZTM4ZmI3ZGZhLi4wZjdi
ZTRjNWU1Y2M4OGFjMzgyOWMxOTI1MDFmY2M2ODI2MjVlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
b21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJh
MTQ5OThmOGYzYzEuLmEzMjc3YzljNjc4MWY5OWEyZjg2MDc2NmUwZmIwYmMwNGRlYWE3MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9y
YWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAordWludDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudElkZW50aWZpZXJ0OworICAg
IHJldHVybiArK2N1cnJlbnRJZGVudGlmaWVyOworfQorCiBTdG9yYWdlQXJlYUJhc2U6OlN0b3Jh
Z2VBcmVhQmFzZSh1bnNpZ25lZCBxdW90YSwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4pCi0gICAgOiBtX2lkZW50aWZpZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKQorICAgIDogbV9pZGVudGlmaWVyKFN0b3JhZ2VBcmVhSWRlbnRpZmllcjo6Z2VuZXJhdGVU
aHJlYWRTYWZlKCkpCiAgICAgLCBtX3F1b3RhKHF1b3RhKQogICAgICwgbV9vcmlnaW4ob3JpZ2lu
KQogewpAQCAtMzksMTEgKzQ1LDExIEBAIFN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFnZUFyZWFCYXNl
KHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yCiAKIFN0b3Jh
Z2VBcmVhQmFzZTo6flN0b3JhZ2VBcmVhQmFzZSgpID0gZGVmYXVsdDsKIAotdm9pZCBTdG9yYWdl
QXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlv
bikKK3ZvaWQgU3RvcmFnZUFyZWFCYXNlOjphZGRMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlEIGNvbm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewotICAgIEFTU0VSVCghbV9saXN0ZW5lcnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAgIEFT
U0VSVCghbV9saXN0ZW5lcnMuY29udGFpbnMoY29ubmVjdGlvbikgfHwgbV9saXN0ZW5lcnMuZ2V0
KGNvbm5lY3Rpb24pID09IGlkZW50aWZpZXIpOwogCi0gICAgbV9saXN0ZW5lcnMuYWRkKGNvbm5l
Y3Rpb24pOworICAgIG1fbGlzdGVuZXJzLnNldChjb25uZWN0aW9uLCBpZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6OnJlbW92ZUxpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgY29ubmVjdGlvbikKQEAgLTU4LDE5ICs2NCwxOSBAQCBib29sIFN0b3JhZ2VBcmVh
QmFzZTo6aGFzTGlzdGVuZXJzKCkgY29uc3QKIAogdm9pZCBTdG9yYWdlQXJlYUJhc2U6Om5vdGlm
eUxpc3RlbmVyc0Fib3V0Q2xlYXIoKQogewotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
bGlzdGVuZXJzKQotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVz
c2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uLCBpZGVudGlmaWVyXSA6IG1fbGlzdGVu
ZXJzKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpDbGVhckNhY2hlKFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJ
ZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFN0b3JhZ2VB
cmVhQmFzZTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VD
b25uZWN0aW9uLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIHNvdXJjZUltcGxJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KHNvdXJjZUltcGxJZGVudGlmaWVyKTsKIAotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
bGlzdGVuZXJzKSB7CisgICAgZm9yIChhdXRvJiBbY29ubmVjdGlvbiwgaWRlbnRpZmllcl0gOiBt
X2xpc3RlbmVycykgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXI+IGltcGxJZGVudGlmaWVyOwogICAgICAgICBpZiAoY29ubmVjdGlvbiA9PSBzb3VyY2VD
b25uZWN0aW9uKQogICAgICAgICAgICAgaW1wbElkZW50aWZpZXIgPSBzb3VyY2VJbXBsSWRlbnRp
ZmllcjsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBtX2lkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KGltcGxJZGVudGlmaWVyLCBrZXks
IG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBTdG9yYWdlQXJlYUJhc2U6Om5leHRNZXNz
YWdlSWRlbnRpZmllcigpKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuaAppbmRleCBlZDNlZDE0MjA2ZTE3NWRjYWNjOGMxZjk5NDkwNzUwNTQ1ZTM0ZTk4Li5l
ZmM4ZmI5NjQ4OTEwN2M4OGUzM2NkMTIzZjYwOWEzNmYyMWFlZDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0NsaWVudE9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQ3LDYg
KzQ4LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWFCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFN0
b3JhZ2VBcmVhQmFzZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0b3JhZ2VBcmVhQmFz
ZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIHVp
bnQ2NF90IG5leHRNZXNzYWdlSWRlbnRpZmllcigpOwogICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVh
QmFzZSgpOwogCiAgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IFNRTGl0ZSwgTWVtb3J5IH07
CkBAIC01OSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHVuc2ln
bmVkIHF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9xdW90YTsgfQotICAgIHZvaWQgYWRkTGlzdGVu
ZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CisgICAgdm9pZCBhZGRMaXN0ZW5lcihJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIpOwogICAgIHZv
aWQgcmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCk7CiAgICAgYm9vbCBo
YXNMaXN0ZW5lcnMoKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUxpc3RlbmVyc0Fib3V0Q2xlYXIo
KTsKQEAgLTc3LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIHVuc2lnbmVkIG1fcXVvdGE7CiAgICAgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG1fb3JpZ2luOwotICAgIEhhc2hTZXQ8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4g
bV9saXN0ZW5lcnM7CisgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXI+IG1fbGlzdGVuZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4YjUy
MWY3NzAxNTQ4YjFhZjhiNDRiMzUzNzQ2Mzc2OWM5MGRmOTgyLi5jMWY0M2ExOGM3MmJmYjI1ZmY4
Y2M2MzE0ZjFjNzgzNzFhNmI5MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTMwNSw2ICszMDUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6U2xlZXBEaXNhYmxlcklkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZScsCiAgICAgICAg
ICdXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyJywK
KyAgICAgICAgJ1dlYkNvcmU6OlN0b3JhZ2VUeXBlJywKICAgICAgICAgJ1dlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3RJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYkxvY2tJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OldlYlNvY2tldElkZW50aWZpZXInLApAQCAtMzQ3LDYg
KzM0OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgICAgICdXZWJLaXQ6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXInLAogICAgICAgICAnV2ViS2l0OjpUYXBJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
VGV4dENoZWNrZXJSZXF1ZXN0SUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTUyNjMwYTMwMzIxMDc0OGI4OGEwMTlhMTNjNDBhMGRh
ZjIwM2QxNC4uNTRhNGIyMTAxYTM1N2FlMTQ5OGU4ZTg2NzQxZTg3NjA1MjI1YTEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDU3
LDYgKzE0NTcsNyBAQAogCQk5M0FCOUI0RTI1NzU2N0UyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI0MjI1NzQ5MjhDMDA5OEIxMEUgLyogU3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggKi87IH07CiAJCTkzQUI5QjU1
MjU3NUEyNzYwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQUI5QjRGMjU3NTg5MTEwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJOTNBQjlCNTYyNTc1QTI4QjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQjlCNTEyNTc1ODkxMTAwOThCMTBF
IC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5M0FFQzE2MTI3OEY4Q0QzMDA2NjY2NkYgLyogU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0FFQzE2MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmggKi87IH07CiAJCTkzQjBBNjc1MjZENUFEQ0YwMEFBMjFFNCAvKiBXZWJQZXJt
aXNzaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9s
bGVyLmggKi87IH07CiAJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYx
NDkyMjdEMTQ3MjAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi87IH07CiAJCTkzQjI2MTRF
MjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2
IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggKi87IH07CkBAIC01MzA1LDYgKzUzMDYsNyBAQAog
CQk5M0FCOUI1MjI1NzU4OTEyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQUI5QjUzMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdl
ck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUI5QjU0MjU3NTg5
MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2du
aXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjBBNjcz
MjZENUE3MkUwMEFBMjFFNCAvKiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjBBNjc0MjZENUE3MkUwMEFBMjFFNCAv
KiBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQZXJtaXNzaW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9yYWdlRGF0YWJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcwNjEsNiArNzA2Myw3IEBACiAJCQkJMUFD
RUNEMjIxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmNwcCAqLywKIAkJCQkxQUNF
Q0QyMzE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCAqLywKIAkJCQkxQTMzNERF
QTE2REU4QjY4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gKi8sCisJCQkJ
OTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oICov
LAogCQkJCTQ2NUY0RTA1MjMwQjJFN0MwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
Zmllci5oICovLAogCQkJCTFBMTc2MzU0MTZCMUQ1RDAwMEQ4OEZENiAvKiBTdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAgKi8sCiAJCQkJMUExNzYzNTUxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsLmggKi8sCkBAIC0xMzI2Myw2ICsxMzI2Niw3IEBACiAJCQkJOTNFNzk5REMy
NzYxMjEwODAwNzQwMDhBIC8qIFN0b3JhZ2VBcmVhQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFEMzMwNkYxNkIxRDk5MTAwNEY2MEU3IC8qIFN0b3JhZ2VBcmVhSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDRUNEMjUxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0FFQzE2MTI3OEY4Q0QzMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTMzNERFRTE2REU4Rjg4MDA2QThF
MzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFNzk5
QzcyNzYwMjc0NjAwNzQwMDhBIC8qIFN0b3JhZ2VBcmVhUmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAwMjI3MGE1M2FmOWJhOGJm
ODBkN2MzYjNkY2RjOGNlYjU2NTE3NmUzLi44ZDNiNTdiZDE4ZGMyZTA1Mzg0Y2NmMDhkN2Q5Yzg5
MDdjZDA0ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U3RvcmFnZUFyZWFN
YXA6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogc3RvcmFnZUFy
ZWFNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdG9yYWdlQXJlYU1hcChtYWtlT2JqZWN0
SWRlbnRpZmllcjxTdG9yYWdlQXJlYUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQorICAgICAgICBpZiAoYXV0byBzdG9yYWdlQXJlYU1hcCA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJZGVudGlmaWVyPFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgICAg
ICBzdG9yYWdlQXJlYU1hcC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggZjgxNjc3NWE3OTk0YWIyMmNjMmZiYzI2MDAwZTlkMjJmMmZjMmM2YS4uNjg5
NzBlZDcwNDUzNzkzOTBmNTI4MWIyNzY1ODExYTIyYzA3ZTJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTE4OSw4ICsxMTg5LDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbiogY29ubmVjCiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID09
IGNvbm5lY3Rpb24pOwogCi0gICAgZm9yIChhdXRvKiBzdG9yYWdlQXJlYU1hcCA6IGNvcHlUb1Zl
Y3RvcihtX3N0b3JhZ2VBcmVhTWFwcy52YWx1ZXMoKSkpCi0gICAgICAgIHN0b3JhZ2VBcmVhTWFw
LT5kaXNjb25uZWN0KCk7CisgICAgZm9yIChhdXRvIGtleSA6IGNvcHlUb1ZlY3RvcihtX3N0b3Jh
Z2VBcmVhTWFwcy5rZXlzKCkpKSB7CisgICAgICAgIGlmIChhdXRvIG1hcCA9IG1fc3RvcmFnZUFy
ZWFNYXBzLmdldChrZXkpKQorICAgICAgICAgICAgbWFwLT5kaXNjb25uZWN0KCk7CisgICAgfQog
CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGF1
dG8gaWRiQ29ubmVjdGlvbiA9IHBhZ2UtPmNvcmVQYWdlKCktPm9wdGlvbmFsSURCQ29ubmVjdGlv
bigpOwpAQCAtMTY5NywyMCArMTY5OSwyMCBAQCB2b2lkIFdlYlByb2Nlc3M6Om5vblZpc2libGVQ
cm9jZXNzTWVtb3J5Q2xlYW51cFRpbWVyRmlyZWQoKQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lz
dGVyU3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmIHN0b3JhZ2VBcmVhTWFwKQogewotICAg
IEFTU0VSVChzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVCghbV9zdG9y
YWdlQXJlYU1hcHMuY29udGFpbnMoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkpOwotICAg
IG1fc3RvcmFnZUFyZWFNYXBzLnNldCgqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpLCAmc3Rv
cmFnZUFyZWFNYXApOworICAgIGF1dG8gaWRlbnRpZmllciA9IHN0b3JhZ2VBcmVhTWFwLmlkZW50
aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwcy5hZGQoaWRlbnRpZmllciwgc3RvcmFnZUFyZWFN
YXApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcChTdG9y
YWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAgQVNTRVJUKHN0b3JhZ2VBcmVhTWFw
LmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmNvbnRhaW5zKCpz
dG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1h
cHMuZ2V0KCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCkpID09ICZzdG9yYWdlQXJlYU1hcCk7
Ci0gICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVy
KCkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKTsK
KyAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAg
IEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRpZmllcikuZ2V0KCkgPT0gJnN0b3Jh
Z2VBcmVhTWFwKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoaWRlbnRpZmllcik7CiB9
CiAKLVN0b3JhZ2VBcmVhTWFwKiBXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKK1dlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IFdl
YlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBpZGVudGlm
aWVyKSBjb25zdAogewogICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhTWFwcy5nZXQoaWRlbnRpZmll
cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA0NjlhMGE1ZTE5
MWRjZjQ3MDEzMjcxNmI2NzJlZDFjMmU2MWYzMTE3Li5lODdkNzMzZDc2YWRlZTBjYjhiYWRiODdm
NWNhNzU1ZGE2MmQ3MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiSWRlbnRp
ZmllclR5cGVzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIu
aCIKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyU3RvcmFn
ZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXAmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTdG9yYWdlQXJl
YU1hcChTdG9yYWdlQXJlYU1hcCYpOwotICAgIFN0b3JhZ2VBcmVhTWFwKiBzdG9yYWdlQXJlYU1h
cChTdG9yYWdlQXJlYUlkZW50aWZpZXIpIGNvbnN0OworICAgIFdlYWtQdHI8U3RvcmFnZUFyZWFN
YXA+IHN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcikgY29uc3Q7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtNzQyLDcgKzc0Miw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaENvdW50ZWRTZXQ8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+IG1fc3dSZWdpc3RyYXRpb25Db3VudHM7CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8U3RvcmFn
ZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYU1hcCo+IG1fc3RvcmFnZUFyZWFNYXBzOworICAg
IEhhc2hNYXA8U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLCBXZWFrUHRyPFN0b3JhZ2VBcmVhTWFw
Pj4gbV9zdG9yYWdlQXJlYU1hcHM7CiAgICAgCiAgICAgLy8gUHJld2FybWVkIFdlYlByb2Nlc3Nl
cyBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHNlc3Npb25JRCB5ZXQsIHdoaWNoIGlzIHdoeSB0
aGlzIGlzIGFuIG9wdGlvbmFsLgogICAgIC8vIEJ5IHRoZSB0aW1lIHRoZSBXZWJQcm9jZXNzIGdl
dHMgYSBXZWJQYWdlLCBpdCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYSBzZXNzaW9uSUQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcAppbmRleCBiMTJjNThjMGFhZDY3ZTk5NTc3MDZlMjllNmRlNjU2OWVmZTY0ODQ2Li4x
ZjliNDJjYjEyN2Q2ZGMwMjhhNjgwNTllMjcxMDFmYzc5Njk0NDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAK
QEAgLTExMiwyMCArMTEyLDEwIEBAIHNpemVfdCBTdG9yYWdlQXJlYUltcGw6Om1lbW9yeUJ5dGVz
VXNlZEJ5Q2FjaGUoKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIFN0b3JhZ2VBcmVhSW1wbDo6
aW5jcmVtZW50QWNjZXNzQ291bnQoKQordm9pZCBTdG9yYWdlQXJlYUltcGw6OnByZXdhcm0oKQog
ewotICAgIC8vIFN0b3JhZ2UgYWNjZXNzIGlzIGhhbmRsZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2Vz
cywgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvIGhlcmUuCi19Ci0KLXZvaWQgU3RvcmFnZUFyZWFJ
bXBsOjpkZWNyZW1lbnRBY2Nlc3NDb3VudCgpCi17Ci0gICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMg
aGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8g
aGVyZS4KLX0KLQotdm9pZCBTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VJZklkbGUoKQot
ewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBpZiAobV9zdG9yYWdlQXJlYU1hcCkKKyAgICAgICAgbV9zdG9yYWdlQXJlYU1hcC0+
Y29ubmVjdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggNzll
MTRiOTFmOGFjNmQ4MmZlNzkyYWMwNmQzOTRlZDc2NTg0MmE2Mi4uYTM1ZDY2NzkyNTA1ZjBjMDNl
NTkwODcwMDFlMGNhNGZkYTdhNmNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTYxLDkgKzYxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKICAg
ICBXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHNpemVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbmNy
ZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291
bnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHByZXdhcm0oKSBmaW5hbDsKIAogICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogICAgIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+IG1fc3RvcmFnZUFyZWFNYXA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKaW5kZXggMmNmN2E2ZDRiNjAwNWMxZDdlYzI1NmJkNjM4ODc2Mjk0ZTllNGNmMi4uZGY0YzI2
ZjJhZmYzMjkxZDkxOWRlZDUzZGQ3NjI3YjU4ZjI4OTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNTEs
MTcgKzUxLDE5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcChTdG9yYWdlTmFtZXNwYWNlSW1wbCYg
c3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5
T3JpZ2luKQotICAgIDogbV9uYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZSkKKyAgICA6IG1faWRl
bnRpZmllcihTdG9yYWdlQXJlYU1hcElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX25h
bWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlKQogICAgICwgbV9zZWN1cml0eU9yaWdpbihXVEZNb3Zl
KHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHN0b3JhZ2VOYW1lc3BhY2Uu
cXVvdGFJbkJ5dGVzKCkpCiAgICAgLCBtX3R5cGUoc3RvcmFnZU5hbWVzcGFjZS5zdG9yYWdlVHlw
ZSgpKQogewotICAgIGNvbm5lY3QoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdp
c3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAogU3RvcmFnZUFyZWFNYXA6On5TdG9yYWdl
QXJlYU1hcCgpCiB7CiAgICAgZGlzY29ubmVjdCgpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnVucmVnaXN0ZXJTdG9yYWdlQXJlYU1hcCgqdGhpcyk7CiB9CiAKIHVuc2lnbmVkIFN0b3Jh
Z2VBcmVhTWFwOjpsZW5ndGgoKQpAQCAtOTUsOCArOTcsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVh
LCBjbwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgaWYgKG1f
bWFwSUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OlNldEl0ZW0oKm1fbWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9j
dXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0o
Km1fcmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJy
ZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmlu
ZygpKSwgMCk7CiAgICAgZWxzZQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAi
U3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0gZmFpbGVkIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMg
aW52YWxpZCIpOwogfQpAQCAtMTE0LDIzICsxMTYsMjIgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6
cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCog
c28KIAogICAgIG1fcGVuZGluZ1ZhbHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIGlmIChtX21h
cElEKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpSZW1vdmVJdGVtKCptX21hcElELCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1f
Y3VycmVudFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
KSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OlJlbW92ZUl0ZW0oKm1f
cmVtb3RlQXJlYUlkZW50aWZpZXIsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50
U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsK
ICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJl
YU1hcDo6cmVtb3ZlSXRlbSBmYWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBpbnZhbGlk
Iik7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3Vy
Y2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhKQogewotICAgIGNvbm5lY3QoKTsK
LQorICAgIGNvbm5lY3RTeW5jKCk7CiAgICAgcmVzZXRWYWx1ZXMoKTsKIAogICAgIG1faGFzUGVu
ZGluZ0NsZWFyID0gdHJ1ZTsKICAgICBtX21hcCA9IG1ha2VVbmlxdWU8U3RvcmFnZU1hcD4obV9x
dW90YUluQnl0ZXMpOwogCi0gICAgaWYgKG1fbWFwSUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNsZWFyKCptX21hcElELCBzb3Vy
Y2VBcmVhLT5pZGVudGlmaWVyKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKS5zdHJpbmcoKSksIDApOworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVy
KQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpDbGVhcigqbV9yZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmll
cigpLCBtX2N1cnJlbnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5n
KCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJT
dG9yYWdlQXJlYU1hcDo6Y2xlYXIgZmFpbGVkIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMgaW52
YWxpZCIpOwogfQpAQCAtMTUxLDIxICsxNTIsMTEgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVz
ZXRWYWx1ZXMoKQogCiBTdG9yYWdlTWFwJiBTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKCkKIHsK
LSAgICBjb25uZWN0KCk7CisgICAgY29ubmVjdFN5bmMoKTsKIAotICAgIGlmICghbV9tYXApIHsK
KyAgICBpZiAoIW1fbWFwKQogICAgICAgICBtX21hcCA9IG1ha2VVbmlxdWU8U3RvcmFnZU1hcD4o
bV9xdW90YUluQnl0ZXMpOwogCi0gICAgICAgIGlmIChtX21hcElEKSB7Ci0gICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIHVzZSBhIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB0byBw
cmV2ZW50IFVJUHJvY2VzcyBoYW5ncyBpbiBjYXNlIHdlIHJlY2VpdmUgYSBzeW5jaHJvbm91cyBJ
UEMgZnJvbSB0aGUgVUlQcm9jZXNzIHdoaWxlIHdlJ3JlIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UK
LSAgICAgICAgICAgIC8vIGZyb20gb3VyIFN0b3JhZ2VNYW5hZ2VyU2V0OjpHZXRWYWx1ZXMoKSBJ
UEMuIFRoaXMgSVBDIG1heSBiZSB2ZXJ5IHNsb3cgYmVjYXVzZSBpdCBtYXkgbmVlZCB0byBmZXRj
aCB0aGUgdmFsdWVzIGZyb20gZGlzayBhbmQgdGhlcmUgbWF5IGJlIGEgbG90IG9mIGRhdGEuCi0g
ICAgICAgICAgICBJUEM6OlVuYm91bmRlZFN5bmNocm9ub3VzSVBDU2NvcGUgdW5ib3VuZGVkU3lu
Y2hyb25vdXNJUENTY29wZTsKLSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZh
bHVlczsKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpHZXRWYWx1ZXMoKm1fbWFwSUQpLCBNZXNzYWdlczo6U3RvcmFnZU1h
bmFnZXJTZXQ6OkdldFZhbHVlczo6UmVwbHkodmFsdWVzKSwgMCk7Ci0gICAgICAgICAgICBtX21h
cC0+aW1wb3J0SXRlbXMoV1RGTW92ZSh2YWx1ZXMpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU3RvcmFnZUFyZWFNYXA6OmVuc3VyZU1h
cCBmYWlsZWQgdG8gbG9hZCBmcm9tIG5ldHdvcmsgcHJvY2VzcyBiZWNhdXNlIHN0b3JhZ2UgbWFw
IElEIGlzIGludmFsaWQiKTsKLSAgICB9CiAgICAgcmV0dXJuICptX21hcDsKIH0KIApAQCAtMjU5
LDggKzI1MCwxMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjphcHBseUNoYW5nZShjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSkKICAgICBtX21hcC0+c2V0SXRlbUlnbm9y
aW5nUXVvdGEoa2V5LCBuZXdWYWx1ZSk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRp
Zmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6
Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiBzdG9yYWdlQXJlYUltcGxJRCwg
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRp
ZmllcikKIHsKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2Fn
ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdl
SWRlbnRpZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOwogICAgIGlmICghc3RvcmFnZUFyZWFJbXBs
SUQpIHsKICAgICAgICAgLy8gVGhpcyBzdG9yYWdlIGV2ZW50IG9yaWdpbmF0ZXMgZnJvbSBhbm90
aGVyIHByb2Nlc3Mgc28gd2UgbmVlZCB0byBhcHBseSB0aGUgY2hhbmdlIHRvIG91ciBzdG9yYWdl
IGFyZWEgbWFwLgogICAgICAgICBhcHBseUNoYW5nZShrZXksIG5ld1ZhbHVlKTsKQEAgLTI3Miw4
ICsyNjcsMTIgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9yYWdlRXZlbnQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGUKICAgICAgICAgZGlzcGF0Y2hMb2Nh
bFN0b3JhZ2VFdmVudChzdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUs
IHVybFN0cmluZyk7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyQ2FjaGUoKQordm9p
ZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSh1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikK
IHsKKyAgICBpZiAobWVzc2FnZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRp
ZmllciA9IG1lc3NhZ2VJZGVudGlmaWVyOwogICAgIHJlc2V0VmFsdWVzKCk7CiB9CiAKQEAgLTM0
NCw0MiArMzQzLDc5IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdl
RXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltCiAgICAgU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3JvdXAs
IGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9y
aWdpbi0+ZGF0YSgpKTsKIH0KIAordm9pZCBTdG9yYWdlQXJlYU1hcDo6c2VuZENvbm5lY3RNZXNz
YWdlKFNlbmRNb2RlIG1vZGUpCit7CisgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKKyAgICBhdXRvIG5hbWVzcGFjZUlkZW50aWZpZXIgPSBtX25hbWVzcGFjZS5zdG9yYWdl
TmFtZXNwYWNlSUQoKTsKKyAgICBhdXRvIG9yaWdpbkRhdGEgPSBtX3NlY3VyaXR5T3JpZ2luLT5k
YXRhKCk7CisgICAgYXV0byB0b3BPcmlnaW5EYXRhID0gbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmln
aW4oKSA/IG1fbmFtZXNwYWNlLnRvcExldmVsT3JpZ2luKCktPmRhdGEoKSA6IG9yaWdpbkRhdGE7
CisgICAgYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpDbGllbnRPcmlnaW4geyB0b3BPcmlnaW5EYXRh
LCBvcmlnaW5EYXRhIH07CisgICAgYXV0byB0eXBlID0gbV90eXBlOworICAgIGlmICgodHlwZSA9
PSBTdG9yYWdlVHlwZTo6TG9jYWwgfHwgdHlwZSA9PSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9j
YWwpICYmIG1fbmFtZXNwYWNlLnRvcExldmVsT3JpZ2luKCkpCisgICAgICAgIHR5cGUgPSBTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWw7CisKKyAgICBpZiAobW9kZSA9PSBTZW5kTW9kZTo6U3lu
YykgeworICAgICAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgcmVtb3RlQXJlYUlkZW50aWZpZXI7
CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zOworICAgICAgICB1aW50NjRf
dCBtZXNzYWdlSWRlbnRpZmllcjsKKyAgICAgICAgaXBjQ29ubmVjdGlvbi5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9yYWdlQXJlYVN5bmModHlw
ZSwgbV9pZGVudGlmaWVyLCBuYW1lc3BhY2VJZGVudGlmaWVyLCBvcmlnaW4pLCBNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9yYWdlQXJlYVN5bmM6OlJlcGx5KHJl
bW90ZUFyZWFJZGVudGlmaWVyLCBpdGVtcywgbWVzc2FnZUlkZW50aWZpZXIpLCAwKTsKKyAgICAg
ICAgZGlkQ29ubmVjdChyZW1vdGVBcmVhSWRlbnRpZmllciwgV1RGTW92ZShpdGVtcyksIG1lc3Nh
Z2VJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgd2Vha0Nv
bm5lY3Rpb24gPSBXZWFrUHRyIHsgaXBjQ29ubmVjdGlvbiB9XShhdXRvIHJlbW90ZUFyZWFJZGVu
dGlmaWVyLCBhdXRvIGl0ZW1zLCBhdXRvIG1lc3NhZ2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuIGRpZENvbm5lY3QocmVtb3Rl
QXJlYUlkZW50aWZpZXIsIFdURk1vdmUoaXRlbXMpLCBtZXNzYWdlSWRlbnRpZmllcik7CisKKyAg
ICAgICAgaWYgKHdlYWtDb25uZWN0aW9uICYmIHJlbW90ZUFyZWFJZGVudGlmaWVyLmlzVmFsaWQo
KSkKKyAgICAgICAgICAgIHdlYWtDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OkRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEocmVtb3RlQXJlYUlkZW50aWZp
ZXIpLCAwKTsKKyAgICB9OworCisgICAgaXBjQ29ubmVjdGlvbi5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU3RvcmFnZUFyZWEodHlw
ZSwgbV9pZGVudGlmaWVyLCBuYW1lc3BhY2VJZGVudGlmaWVyLCBvcmlnaW4pLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmNvbm5lY3RTeW5j
KCkKK3sKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc2VuZENvbm5lY3RNZXNzYWdlKFNlbmRNb2RlOjpTeW5jKTsKK30KKwogdm9pZCBTdG9y
YWdlQXJlYU1hcDo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKG1fbWFwSUQpCisgICAgaWYgKG1fcmVt
b3RlQXJlYUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0b3JhZ2VBcmVhSWRl
bnRpZmllciBtYXBJRDsKLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgU3RvcmFnZVR5
cGU6OkxvY2FsOgotICAgIGNhc2UgU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgotICAgICAg
ICBpZiAoU2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luID0gbV9uYW1lc3BhY2UudG9wTGV2
ZWxPcmlnaW4oKSkKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
KG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCB0b3BMZXZlbE9yaWdpbi0+ZGF0YSgp
LCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhOjpSZXBseShtYXBJRCksIDAp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShtX25h
bWVzcGFjZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwg
TWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YTo6UmVwbHkobWFwSUQpLCAwKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTdG9yYWdlVHlw
ZTo6U2Vzc2lvbjoKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShtX25hbWVzcGFj
ZS5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhOjpS
ZXBseShtYXBJRCksIDApOwotICAgIH0KKyAgICBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGU6
OkFzeW5jKTsKK30KIAotICAgIGlmIChtYXBJRC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgbV9tYXBJ
RCA9IG1hcElEOwotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZWdpc3RlclN0b3Jh
Z2VBcmVhTWFwKCp0aGlzKTsKLSAgICB9Cit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaWRDb25uZWN0
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZW1vdGVBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mJiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpCit7CisgICAg
aWYgKG1lc3NhZ2VJZGVudGlmaWVyIDwgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIgPSBt
ZXNzYWdlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbW90ZUFyZWFJZGVudGlmaWVyLmlzVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZW1vdGVBcmVhSWRlbnRpZmllciA9IHJlbW90
ZUFyZWFJZGVudGlmaWVyOworICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPihtX3F1
b3RhSW5CeXRlcyk7CisgICAgbV9tYXAtPmltcG9ydEl0ZW1zKFdURk1vdmUoaXRlbXMpKTsKIH0K
IAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgaWYgKCFtX21hcElE
KQorICAgIGlmICghbV9yZW1vdGVBcmVhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgcmVzZXRWYWx1ZXMoKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVy
U3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21T
dG9yYWdlQXJlYSgqbV9tYXBJRCksIDApOworICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkRp
c2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoKm1fcmVtb3RlQXJlYUlkZW50aWZpZXIpLCAwKTsKIAot
ICAgIG1fbWFwSUQgPSB7IH07CisgICAgbV9yZW1vdGVBcmVhSWRlbnRpZmllciA9IHsgfTsKKyAg
ICBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIgPSAwOwogfQogCiB2b2lkIFN0b3JhZ2VB
cmVhTWFwOjppbmNyZW1lbnRVc2VDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCAwNmU2MzU2Y2IxMzM5MjY2
YmEzNDU0NTk2MjUzODA0NjdiNTgwYjE3Li5jNjI3MWQ5Zjc5ZWNiYWMzZTRmOGY4Yjg3Zjg3Y2Mw
NGVkM2JmODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
NjYsOCArNjcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlP
cmlnaW4uZ2V0KCk7IH0KLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSWRlbnRp
Zmllcj4mIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX21hcElEOyB9CisgICAgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KIAorICAgIHZvaWQgY29ubmVjdCgpOwogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCiAg
ICAgdm9pZCBpbmNyZW1lbnRVc2VDb3VudCgpOwpAQCAtNzgsOCArODAsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVtb3ZlSXRlbSh1aW50NjRfdCBtYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtl
eSk7CiAgICAgdm9pZCBkaWRDbGVhcih1aW50NjRfdCBtYXBTZWVkKTsKIAotICAgIHZvaWQgZGlz
cGF0Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVu
dGlmaWVyPiYgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyQ2FjaGUoKTsKKyAgICB2b2lkIGRpc3BhdGNoU3RvcmFn
ZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgdWlu
dDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xlYXJDYWNoZSh1aW50NjRfdCBt
ZXNzYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJlc2V0VmFsdWVzKCk7CiAgICAgV2ViQ29y
ZTo6U3RvcmFnZU1hcCYgZW5zdXJlTWFwKCk7CkBAIC05MCwxMiArOTIsMTcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKTsKICAgICB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpv
cHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYsIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZyk7CiAKLSAgICB2b2lkIGNvbm5lY3QoKTsKKyAgICBlbnVtIGNsYXNzIFNl
bmRNb2RlIDogYm9vbCB7IEFzeW5jLCBTeW5jIH07CisgICAgdm9pZCBzZW5kQ29ubmVjdE1lc3Nh
Z2UoU2VuZE1vZGUpOworICAgIHZvaWQgY29ubmVjdFN5bmMoKTsKKyAgICB2b2lkIGRpZENvbm5l
Y3QoU3RvcmFnZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmLCB1aW50
NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CiAKKyAgICBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIg
bV9pZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmll
ciB7IDAgfTsKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbCYgbV9uYW1lc3BhY2U7CiAgICAgUmVm
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTdG9yYWdlTWFwPiBtX21hcDsKLSAgICBzdGQ6Om9wdGlvbmFsPFN0
b3JhZ2VBcmVhSWRlbnRpZmllcj4gbV9tYXBJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VB
cmVhSWRlbnRpZmllcj4gbV9yZW1vdGVBcmVhSWRlbnRpZmllcjsKICAgICBIYXNoQ291bnRlZFNl
dDxTdHJpbmc+IG1fcGVuZGluZ1ZhbHVlQ2hhbmdlczsKICAgICB1aW50NjRfdCBtX2N1cnJlbnRT
ZWVkIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fcXVvdGFJbkJ5dGVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5t
ZXNzYWdlcy5pbgppbmRleCAyZDFhODEzZmNiODc1N2IxODQyNzYyOTM4MDY5N2ZjN2JlOWJhOWI1
Li42ZGVlOGU4ZTM1YWI1YjY4ODY2ZjIyMDBhNzA2YTgyOTM3ZmRiY2FhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsNiBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlQXJl
YU1hcCBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRSZW1vdmVJdGVtKHVpbnQ2NF90IHN0b3JhZ2VN
YXBTZWVkLCBTdHJpbmcga2V5KQogICAgIERpZENsZWFyKHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVk
KQogCi0gICAgRGlzcGF0Y2hTdG9yYWdlRXZlbnQoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSW1wbElELCBTdHJpbmcga2V5LCBTdHJp
bmcgb2xkVmFsdWUsIFN0cmluZyBuZXdWYWx1ZSwgU3RyaW5nIHVybFN0cmluZykKLSAgICBDbGVh
ckNhY2hlKCkKKyAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXks
IFN0cmluZyBvbGRWYWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nLCB1aW50
NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKKyAgICBDbGVhckNhY2hlKHVpbnQ2NF90IG1lc3NhZ2VJ
ZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTIy
MTA4OTY4ZjM1OThmZDIwMWFhYWNhZjBlYzAzNzVjNDZlZjk5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllclR5
cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwo=
</data>
<flag name="commit-queue"
          id="475530"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449449</attachid>
            <date>2022-01-18 16:42:04 -0800</date>
            <delta_ts>2022-01-20 08:35:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235236-20220118164203.patch</filename>
            <type>text/plain</type>
            <size>61477</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uMWU0Y2ZiODkwMjg1ODcwMjExOWFjODA3Yzk2OTgz
YzAyNWE3N2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3Jh
Z2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJl
d2FybSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5h
bHlzaXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQg
YWZ0ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQw
ZTc5YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLjM2OTAxNmVlMTVkN2NkOGVlOGQ4MjMz
NzJmOTdiZDYwZmE4NjBmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0
b3JhZ2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3lu
YyB3aXRoIGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQg
cGVyZm9ybXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0
byByZW1vdGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQg
dHdvIHN5bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9y
IGdldHRpbmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0
VmFsdWVzOiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBX
ZSBjYW4gbWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RU
b1N0b3JhZ2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBw
cm9jZXNzIHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRo
ZSB3YWl0IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291
bGQgcHJld2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdl
QXJlYU1hcCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBk
b24ndCBhY3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBm
b3Igb3BlcmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdl
IENvbm5lY3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBw
cmV3YXJtaW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5
IGFmdGVyIHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25u
ZWN0VG9TdG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5k
bGUgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVj
dFRvU3RvcmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdl
KSwgYW5kIGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0
Y2hTdG9yYWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBw
cm9jZXNzIGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0
aGlzLCB3ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9m
IG1lc3NhZ2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VB
cmVhTWFwIGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5
bmNlZCB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJl
YTo6ZGlzcGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1N0b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nl
c3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0
b3JhZ2VBcmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4
dE1lc3NhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpT
dG9yYWdlQXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExp
c3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5l
cnNBYm91dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRj
aEV2ZW50cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdl
QXJlYUJhc2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAg
ICAgKHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVh
SW1wbDo6cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVt
ZW50QWNjZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFw
OjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZUFyZWFNYXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6
c2VuZENvbm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNv
bm5lY3RTeW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0x
NyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2
aWNlV29ya2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJv
bSBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1
M2E5ZjY3MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9j
YWxTdG9yYWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFt
ZSgpLm1heVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
VGhpcyBlYWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQg
aXRlbXMgZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9j
YWxTdG9yYWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlm
TmVjZXNzYXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGFnZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2Fs
U3RvcmFnZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRh
YTc0YTVjMS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hp
bGRyZW4oKQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBG
cmFtZTo6ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1l
KCkpOwotICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2Fs
U3RvcmFnZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdD
b3VudDsKLX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVBy
ZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxv
YXRTaXplIEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVT
Y3JlZW5TaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2Qy
ZmQ3ZmM0MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBi
ZGQzMzk2MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29s
IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0g
ICAgdm9pZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9j
YWxTdG9yYWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZl
bnRSZWdpb25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lk
IGludmFsaWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRF
dmVudFJlZ2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9z
ZWxmT25seVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24g
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsg
MCB9OwogCiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggMjUxYmQ0MjlkNjIwNjI5OTdmNzI4ZGMwZGM2NjI1
ZjE0ZjFiNWM3OC4uNzc0NjE0MGY3ODQwODFiMDc4NmExNWQ2MDFmZWZjYTJjOTFjMTBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJld2FybSgpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5o
CmluZGV4IDIyMDU4N2VjODZiYTVjNTE3MWI2NzNiMTc3YTQ2NjFhMjJjZjMxM2QuLmYzY2ZlNGNk
OTVmZDY0NjBiMDk0YzljYjBhNzE0ZmRjM2Q4Y2Y3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VUeXBlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
U3RvcmFnZVR5cGUgOiB1aW50OF90IHsKQEAgLTQ0LDMgKzQ2LDE2IEBAIGlubGluZSBib29sIGlz
UGVyc2lzdGVudExvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTdG9yYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLAorICAgICAgICBXZWJD
b3JlOjpTdG9yYWdlVHlwZTo6U2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6
OkxvY2FsLAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCBjODRlYWQ0
MzBhYjE1ZDk0ZmQ4ZWYyNTMzZDZlNDkyODcyYjZlMTJiLi4wYzQxYWI5MmUzMWY0OWQ2YTVhOTQ5
YTQwMzcyOGMyYWE5ZDA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBsaXN0ZW5l
clVuaXF1ZUlEIDogbV9ldmVudExpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNo
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6
c2VuZChsaXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2Fj
aGUoMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJh
c2UmIFN0b3JhZ2VBcmVhOjplbnN1cmVEYXRhYmFzZSgpIGNvbnN0CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQp
OwogICAgIGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpIHsK
ICAgICAgICAgYXV0byBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gbGlzdGVuZXJVbmlxdWVJ
RCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1w
bElEKSA6IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxpc3Rl
bmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZl
bnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVy
bFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0
aW9uOjpzZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlz
cGF0Y2hTdG9yYWdlRXZlbnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHVybFN0cmluZywgMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjYmRkZDJlMzA0OGQyODcwYWUw
N2EwYWFkZjRlZDk3YjMxMDQzNmM5Li4zY2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4Yzkx
OWQ2ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkRm9yVHJhbnNpZW50U3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW8KICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhID0gbnVsbHB0
cjsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3
b3JrUXVldWUpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29u
bmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7
CiAgICAgaWYgKCFtX2xvY2FsU3RvcmFnZUFyZWEpIHsKICAgICAgICAgaWYgKCFtX3BhdGguaXNF
bXB0eSgpKQpAQCAtMTc3LDExICsxNzcsMTEgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2Fs
U3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWMKICAg
ICB9CiAKICAgICBBU1NFUlQobV9wYXRoLmlzRW1wdHkoKSB8fCBtX2xvY2FsU3RvcmFnZUFyZWEt
PnR5cGUoKSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6OlNRTGl0ZSk7Ci0gICAgbV9sb2NhbFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX2xvY2FsU3RvcmFnZUFy
ZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVy
biBtX2xvY2FsU3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIAotU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3Jh
Z2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAg
IGlmICghbV90cmFuc2llbnRTdG9yYWdlQXJlYSkgewogICAgICAgICBtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhID0gbWFrZVVuaXF1ZTxNZW1vcnlTdG9yYWdlQXJlYT4ob3JpZ2luLCBTdG9yYWdlQXJl
YUJhc2U6OlN0b3JhZ2VUeXBlOjpMb2NhbCk7CkBAIC0xODksNyArMTg5LDcgQEAgU3RvcmFnZUFy
ZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVAKICAgICB9CiAKICAgICBBU1NFUlQobV90cmFuc2llbnRTdG9yYWdlQXJl
YS0+dHlwZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6TWVtb3J5KTsKLSAgICBtX3RyYW5z
aWVudFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX3RyYW5zaWVu
dFN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuaAppbmRleCBhODg4NDJlMjk1ZjJkOTBhOGYwZThiYmE4ZWQ3YjNlYTI3
ZDU4YThiLi5jZGNiNjgxMmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTU2LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0xv
Y2FsU3RvcmFnZSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246
OlVuaXF1ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
UmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1Ry
YW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YS4uZDk3
NGU2ZGIzNTUzODcxNDI1YmFlNjJjMDcyMjU3MjEzMmM2ZDQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdl
TWFuYWdlci5jcHAKQEAgLTYyNSwyNCArNjI1LDMzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyOjpzeW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwg
U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgdG9wT3JpZ2luIH07Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmxvY2FsU3RvcmFn
ZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJl
YShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgbV9xdWV1ZS5jb3B5UmVmKCkpKTsKLX0K
KyAgICBhdXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwor
ICAgIGF1dG8mIG9yaWdpblN0b3JhZ2VNYW5hZ2VyID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdl
cihvcmlnaW4pOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZXN1bHRJZGVudGlmaWVyOwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2Fs
OgorICAgICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxT
dG9yYWdlTWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG1f
cXVldWUuY29weVJlZigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmln
aW5TdG9yYWdlTWFuYWdlci5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0
cnkpLmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZp
ZXIsIHNvdXJjZUlkZW50aWZpZXIsIG9yaWdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2ViQ29yZTo6U3RvcmFnZVR5cGU6OlNlc3Npb246CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIg
PSBvcmlnaW5TdG9yYWdlTWFuYWdlci5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFy
ZWFSZWdpc3RyeSkuY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG5hbWVzcGFjZUlkZW50aWZpZXIpOworICAg
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0g
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luIH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihv
cmlnaW4pLmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdp
bikpOworICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5n
ZXRTdG9yYWdlQXJlYShyZXN1bHRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VsdElkZW50aWZpZXIsIHN0b3JhZ2VBcmVhLT5hbGxJdGVtcygpLCBTdG9y
YWdlQXJlYUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKKworICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7
IH0sIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3Rv
cmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9y
aWdpbiB9OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIo
b3JpZ2luKS5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29u
bmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBp
ZGVudGlmaWVyKSk7CisgICAgY29ubmVjdFRvU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgdHlwZSwg
c291cmNlSWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaXNj
b25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02NjksMTYgKzY3OCw2IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Z2V0VmFsdWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0
byBzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEoaWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+
YWxsSXRlbXMoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci19
Ci0KIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBT
dHJpbmcmJiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXgg
ZDIxZDY1NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJhNTNhOWU5MS4uYTFmMzA3NjQ0Njc2ZThk
NTM1NjViZmVjODM3OTY3OTZjMzQ2YTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgpAQCAtNDQsNiArNDUsNyBAQCBj
bGFzcyBTaGFyZWRGaWxlSGFuZGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTA4LDEyICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEhhbmRsZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
OnBhaXI8V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lz
dGVtU3RvcmFnZUVycm9yPik+JiYpOwogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9y
IFdlYlN0b3JhZ2UuCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIp
PiYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKLSAgICB2b2lkIGNvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50
aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQg
Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3Jh
Z2VUeXBlLCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90
KT4mJik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRWYWx1ZXMoU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Jik+JiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNl
ZWQsIFN0cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZyk7CiAg
ICAgdm9pZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmll
ciwgU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYga2V5
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwg
U3RvcmFnZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRf
dCBzZWVkLCBTdHJpbmcmJiB1cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTUxNmFkYTk4MzJmZGVmNWI2ODE0OTQ0MjE1ZjY4OGZkYTgx
YzYxNS4uZmZjODZmOWQwOWZkNDU5NTUzNWY4NzUwNTM5NDVhMThhNzczMWYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00MCwxMiArNDAsMTAgQEAK
ICAgICBHZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3Rl
bVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxl
U3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVj
dGVkPHN0ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4s
IFdlYktpdDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5l
Y3Rpb24KIAotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAg
Q29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VB
cmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRv
U3RvcmFnZUFyZWEoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmll
cikgQXN5bmMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKFdl
YkNvcmU6OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
IHNvdXJjZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFt
ZXNwYWNlSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+
IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgogICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xv
bmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFZhbHVl
cyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cwogICAgIFNldEl0ZW0oV2ViS2l0OjpT
dG9yYWdlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJ
ZGVudGlmaWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5n
IGtleSwgU3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAg
ICBSZW1vdmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qg
c3RvcmFnZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVj
dGlvbgogICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0
X3Qgc3RvcmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9y
YWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkNDBlNDBiNjE3M2MyOGQ0NGM1N2I4ZTIwZjcy
YmNiNTExMDQxZGI1Li5iNzM0MmU0MGVmMWY2YmI1Y2RiNmZiZmIyZWYxMjNmOWQwNmU4ZTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjphZGRTdG9yYWdlQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8TWVtbwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1TdG9yYWdlQXJlYUlk
ZW50aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllcikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6
OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIgbmFtZXNwYWNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3N0b3Jh
Z2VBcmVhc0J5TmFtZXNwYWNlLmdldChuYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlk
ZW50aWZpZXIuaXNWYWxpZCgpKSB7CkBAIC04NCw3ICs4NCw4IEBAIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJ
UEM6OkNvCiAgICAgaWYgKCFzdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVh
SWRlbnRpZmllciB7IH07CiAKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlv
bik7CisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50
aWZpZXIpOworCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFn
ZXIuaAppbmRleCBmYzE3NjFiZTkwMGY4ZTRkYTc3NTRiMDE4ZjFkYmUyZTM4ZmI3ZGZhLi4wZjdi
ZTRjNWU1Y2M4OGFjMzgyOWMxOTI1MDFmY2M2ODI2MjVlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckRhdGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
b21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TdG9yYWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJh
MTQ5OThmOGYzYzEuLjE4OWM3MTVmMzc2OWI4NGJmZjNiODRiYTYzYmRkZWViNmE1OGZkMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9y
YWdlQXJlYUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAordWludDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQorewor
ICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudElkZW50aWZpZXI7CisgICAg
cmV0dXJuICsrY3VycmVudElkZW50aWZpZXI7Cit9CisKIFN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFn
ZUFyZWFCYXNlKHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbikKLSAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkpCisgICAgOiBtX2lkZW50aWZpZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0ZVRo
cmVhZFNhZmUoKSkKICAgICAsIG1fcXVvdGEocXVvdGEpCiAgICAgLCBtX29yaWdpbihvcmlnaW4p
CiB7CkBAIC0zOSwxMSArNDUsMTEgQEAgU3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlQXJlYUJhc2Uo
dW5zaWduZWQgcXVvdGEsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3IKIAogU3RvcmFn
ZUFyZWFCYXNlOjp+U3RvcmFnZUFyZWFCYXNlKCkgPSBkZWZhdWx0OwogCi12b2lkIFN0b3JhZ2VB
cmVhQmFzZTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9u
KQordm9pZCBTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5p
cXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
Ci0gICAgQVNTRVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSk7CisgICAgQVNT
RVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSB8fCBtX2xpc3RlbmVycy5nZXQo
Y29ubmVjdGlvbikgPT0gaWRlbnRpZmllcik7CiAKLSAgICBtX2xpc3RlbmVycy5hZGQoY29ubmVj
dGlvbik7CisgICAgbV9saXN0ZW5lcnMuc2V0KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOwogfQog
CiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCBjb25uZWN0aW9uKQpAQCAtNTgsMTkgKzY0LDE5IEBAIGJvb2wgU3RvcmFnZUFyZWFC
YXNlOjpoYXNMaXN0ZW5lcnMoKSBjb25zdAogCiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6bm90aWZ5
TGlzdGVuZXJzQWJvdXRDbGVhcigpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9s
aXN0ZW5lcnMpCi0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNz
YWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rpb24sIGlkZW50aWZpZXJdIDogbV9saXN0ZW5l
cnMpCisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlk
ZW50aWZpZXIoKSksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZUFy
ZWFCYXNlOjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNv
bm5lY3Rpb24sIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgc291cmNlSW1wbElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3QKIHsKICAgICBBU1NFUlQo
c291cmNlSW1wbElkZW50aWZpZXIpOwogCi0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9s
aXN0ZW5lcnMpIHsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uLCBpZGVudGlmaWVyXSA6IG1f
bGlzdGVuZXJzKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRp
Zmllcj4gaW1wbElkZW50aWZpZXI7CiAgICAgICAgIGlmIChjb25uZWN0aW9uID09IHNvdXJjZUNv
bm5lY3Rpb24pCiAgICAgICAgICAgICBpbXBsSWRlbnRpZmllciA9IHNvdXJjZUltcGxJZGVudGlm
aWVyOwotICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6
OlN0b3JhZ2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChpbXBsSWRlbnRpZmllciwga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpT
dG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtleSwg
b2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3Nh
Z2VJZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVh
QmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVh
QmFzZS5oCmluZGV4IGVkM2VkMTQyMDZlMTc1ZGNhY2M4YzFmOTk0OTA3NTA1NDVlMzRlOTguLmVm
YzhmYjk2NDg5MTA3Yzg4ZTMzY2QxMjNmNjA5YTM2ZjIxYWVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNDcsNiAr
NDgsNyBAQCBjbGFzcyBTdG9yYWdlQXJlYUJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3Rv
cmFnZUFyZWFCYXNlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RvcmFnZUFyZWFCYXNl
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBzdGF0aWMgdWlu
dDY0X3QgbmV4dE1lc3NhZ2VJZGVudGlmaWVyKCk7CiAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFC
YXNlKCk7CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgU1FMaXRlLCBNZW1vcnkgfTsK
QEAgLTU5LDcgKzYxLDcgQEAgcHVibGljOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdW5zaWdu
ZWQgcXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhOyB9Ci0gICAgdm9pZCBhZGRMaXN0ZW5l
cihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcik7CiAgICAgdm9p
ZCByZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29sIGhh
c0xpc3RlbmVycygpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5TGlzdGVuZXJzQWJvdXRDbGVhcigp
OwpAQCAtNzcsNyArNzksNyBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgdW5zaWduZWQgbV9xdW90YTsKICAgICBXZWJDb3JlOjpDbGllbnRP
cmlnaW4gbV9vcmlnaW47Ci0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBt
X2xpc3RlbmVyczsKKyAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllcj4gbV9saXN0ZW5lcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDhiNTIx
Zjc3MDE1NDhiMWFmOGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIuLmMxZjQzYTE4YzcyYmZiMjVmZjhj
YzYzMTRmMWM3ODM3MWE2YjkyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMzA1LDYgKzMwNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAg
J1dlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAor
ICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAogICAgICAgICAnV2ViQ29yZTo6VXNlck1l
ZGlhUmVxdWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZp
ZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCkBAIC0zNDcsNiAr
MzQ4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0
b3JhZ2VBcmVhSW1wbElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJLaXQ6OlRhcElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpU
ZXh0Q2hlY2tlclJlcXVlc3RJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxNTI2MzBhMzAzMjEwNzQ4Yjg4YTAxOWExM2M0MGEwZGFm
MjAzZDE0Li41NGE0YjIxMDFhMzU3YWUxNDk4ZThlODY3NDFlODc2MDUyMjVhMTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NTcs
NiArMTQ1Nyw3IEBACiAJCTkzQUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUI5QjQyMjU3NDkyOEMwMDk4QjEwRSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJOTNBQjlCNTUy
NTc1QTI3NjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNBQjlCNEYyNTc1ODkxMTAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0
aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk5M0FCOUI1NjI1NzVBMjhCMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI1MTI1NzU4OTExMDA5OEIxMEUg
LyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCMEE2NzUyNkQ1QURDRjAwQUEyMUU0IC8qIFdlYlBlcm1p
c3Npb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0IwQTY3NDI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xs
ZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0
OTIyN0QxNDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUy
MjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYg
LyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKQEAgLTUzMDUsNiArNTMwNiw3IEBACiAJ
CTkzQUI5QjUyMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNBQjlCNTMyNTc1ODkxMjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2Vy
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTQyNTc1ODkx
MjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25p
dGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzMy
NkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8q
IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzQjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA2MSw2ICs3MDYzLDcgQEAKIAkJCQkxQUNF
Q0QyMjE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwICovLAogCQkJCTFBQ0VD
RDIzMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oICovLAogCQkJCTFBMzM0REVB
MTZERThCNjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLywKKwkJCQk5
M0FFQzE2MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggKi8s
CiAJCQkJNDY1RjRFMDUyMzBCMkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLmggKi8sCiAJCQkJMUExNzYzNTQxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcCAqLywKIAkJCQkxQTE3NjM1NTE2QjFENUQwMDBEODhGRDYgLyogU3RvcmFnZU5h
bWVzcGFjZUltcGwuaCAqLywKQEAgLTEzMjYzLDYgKzEzMjY2LDcgQEAKIAkJCQk5M0U3OTlEQzI3
NjEyMTA4MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUQzMzA2RjE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUz
OCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlD
NzI3NjAyNzQ2MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAyMjcwYTUzYWY5YmE4YmY4
MGQ3YzNiM2RjZGM4Y2ViNTY1MTc2ZTMuLjhkM2I1N2JkMThkYzJlMDUzODRjY2YwOGQ3ZDljODkw
N2NkMDRkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1h
cDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlQXJl
YU1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFN0b3JhZ2VBcmVhSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkpCisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc3RvcmFnZUFyZWFNYXAobWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAg
IHN0b3JhZ2VBcmVhTWFwLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCBmODE2Nzc1YTc5OTRhYjIyY2MyZmJjMjYwMDBlOWQyMmYyZmMyYzZhLi42ODk3
MGVkNzA0NTM3OTM5MGY1MjgxYjI3NjU4MTFhMjJjMDdlMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMTg5LDggKzExODksMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKiBjb25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOwogICAg
IEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPT0g
Y29ubmVjdGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRvVmVj
dG9yKG1fc3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKLSAgICAgICAgc3RvcmFnZUFyZWFNYXAt
PmRpc2Nvbm5lY3QoKTsKKyAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fc3RvcmFn
ZUFyZWFNYXBzLmtleXMoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gbWFwID0gbV9zdG9yYWdlQXJl
YU1hcHMuZ2V0KGtleSkpCisgICAgICAgICAgICBtYXAtPmRpc2Nvbm5lY3QoKTsKKyAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsKICAgICAgICAgYXV0
byBpZGJDb25uZWN0aW9uID0gcGFnZS0+Y29yZVBhZ2UoKS0+b3B0aW9uYWxJREJDb25uZWN0aW9u
KCk7CkBAIC0xNjk3LDIwICsxNjk5LDIwIEBAIHZvaWQgV2ViUHJvY2Vzczo6bm9uVmlzaWJsZVBy
b2Nlc3NNZW1vcnlDbGVhbnVwVGltZXJGaXJlZCgpCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0
ZXJTdG9yYWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAg
QVNTRVJUKHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKCFtX3N0b3Jh
Z2VBcmVhTWFwcy5jb250YWlucygqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSk7Ci0gICAg
bV9zdG9yYWdlQXJlYU1hcHMuc2V0KCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCksICZzdG9y
YWdlQXJlYU1hcCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAuaWRlbnRp
ZmllcigpOworICAgIEFTU0VSVCghbV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmll
cikpOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLmFkZChpZGVudGlmaWVyLCBzdG9yYWdlQXJlYU1h
cCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6dW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3Jh
Z2VBcmVhTWFwJiBzdG9yYWdlQXJlYU1hcCkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZUFyZWFNYXAu
aWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoKnN0
b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFw
cy5nZXQoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkgPT0gJnN0b3JhZ2VBcmVhTWFwKTsK
LSAgICBtX3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIo
KSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpOwor
ICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAg
QVNTRVJUKG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVyKS5nZXQoKSA9PSAmc3RvcmFn
ZUFyZWFNYXApOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0K
IAotU3RvcmFnZUFyZWFNYXAqIFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVh
SWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAorV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gV2Vi
UHJvY2Vzczo6c3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDQ2OWEwYTVlMTkx
ZGNmNDcwMTMyNzE2YjY3MmVkMWMyZTYxZjMxMTcuLmU4N2Q3MzNkNzZhZGVlMGNiOGJhZGI4N2Y1
Y2E3NTVkYTYyZDcwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJJZGVudGlm
aWVyVHlwZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiU3Rv
cmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hlci5o
IgpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJTdG9yYWdl
QXJlYU1hcChTdG9yYWdlQXJlYU1hcCYpOwogICAgIHZvaWQgdW5yZWdpc3RlclN0b3JhZ2VBcmVh
TWFwKFN0b3JhZ2VBcmVhTWFwJik7Ci0gICAgU3RvcmFnZUFyZWFNYXAqIHN0b3JhZ2VBcmVhTWFw
KFN0b3JhZ2VBcmVhSWRlbnRpZmllcikgY29uc3Q7CisgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1h
cD4gc3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyKSBjb25zdDsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0
aW9uQXVkaXREYXRhKCkgY29uc3Q7CkBAIC03NDIsNyArNzQyLDcgQEAgcHJpdmF0ZToKICAgICBI
YXNoQ291bnRlZFNldDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj4gbV9zd1JlZ2lzdHJhdGlvbkNvdW50czsKICNlbmRpZgogCi0gICAgSGFzaE1hcDxTdG9yYWdl
QXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhTWFwKj4gbV9zdG9yYWdlQXJlYU1hcHM7CisgICAg
SGFzaE1hcDxTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+
PiBtX3N0b3JhZ2VBcmVhTWFwczsKICAgICAKICAgICAvLyBQcmV3YXJtZWQgV2ViUHJvY2Vzc2Vz
IGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklEIHlldCwgd2hpY2ggaXMgd2h5IHRo
aXMgaXMgYW4gb3B0aW9uYWwuCiAgICAgLy8gQnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nlc3MgZ2V0
cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUlt
cGwuY3BwCmluZGV4IGIxMmM1OGMwYWFkNjdlOTk1NzcwNmUyOWU2ZGU2NTY5ZWZlNjQ4NDYuLjFm
OWI0MmNiMTI3ZDZkYzAyOGE2ODA1OWUyNzEwMWZjNzk2OTQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApA
QCAtMTEyLDIwICsxMTIsMTAgQEAgc2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNV
c2VkQnlDYWNoZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjpp
bmNyZW1lbnRBY2Nlc3NDb3VudCgpCit2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6cHJld2FybSgpCiB7
Ci0gICAgLy8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNz
LCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBTdG9yYWdlQXJlYUlt
cGw6OmRlY3JlbWVudEFjY2Vzc0NvdW50KCkKLXsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBo
YW5kbGVkIGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBo
ZXJlLgotfQotCi12b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCi17
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0b3JhZ2VBcmVhTWFwLT5j
b25uZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA3OWUx
NGI5MWY4YWM2ZDgyZmU3OTJhYzA2ZDM5NGVkNzY1ODQyYTYyLi5hMzVkNjY3OTI1MDVmMGMwM2U1
OTA4NzAwMWUwY2E0ZmRhN2E2Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjEsOSArNjEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogICAg
IFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
c2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGluY3Jl
bWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3Vu
dCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcHJld2FybSgpIGZpbmFsOwogCiAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNw
cAppbmRleCAyY2Y3YTZkNGI2MDA1YzFkN2VjMjU2YmQ2Mzg4NzYyOTRlOWU0Y2YyLi5kZjRjMjZm
MmFmZjMyOTFkOTE5ZGVkNTNkZDc2MjdiNThmMjg5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC01MSwx
NyArNTEsMTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBz
dG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlP
cmlnaW4pCi0gICAgOiBtX25hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlKQorICAgIDogbV9pZGVu
dGlmaWVyKFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fbmFt
ZXNwYWNlKHN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURk1vdmUo
c2VjdXJpdHlPcmlnaW4pKQogICAgICwgbV9xdW90YUluQnl0ZXMoc3RvcmFnZU5hbWVzcGFjZS5x
dW90YUluQnl0ZXMoKSkKICAgICAsIG1fdHlwZShzdG9yYWdlTmFtZXNwYWNlLnN0b3JhZ2VUeXBl
KCkpCiB7Ci0gICAgY29ubmVjdCgpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lz
dGVyU3RvcmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiBTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VB
cmVhTWFwKCkKIHsKICAgICBkaXNjb25uZWN0KCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAogdW5zaWduZWQgU3RvcmFn
ZUFyZWFNYXA6Omxlbmd0aCgpCkBAIC05NSw4ICs5Nyw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OnNldEl0ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEs
IGNvCiAKICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBpZiAobV9t
YXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcjo6U2V0SXRlbSgqbV9tYXBJRCwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1
cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3Ry
aW5nKCkpLCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbSgq
bV9yZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJl
bnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5n
KCkpLCAwKTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJT
dG9yYWdlQXJlYU1hcDo6c2V0SXRlbSBmYWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBp
bnZhbGlkIik7CiB9CkBAIC0xMTQsMjMgKzExNiwyMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpy
ZW1vdmVJdGVtKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBz
bwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgaWYgKG1fbWFw
SUQpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1h
bmFnZXI6OlJlbW92ZUl0ZW0oKm1fbWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9j
dXJyZW50U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkp
LCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlSXRlbSgqbV9y
ZW1vdGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRT
ZWVkLCBrZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDApOwog
ICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVh
TWFwOjpyZW1vdmVJdGVtIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFsaWQi
KTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJj
ZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEpCiB7Ci0gICAgY29ubmVjdCgpOwot
CisgICAgY29ubmVjdFN5bmMoKTsKICAgICByZXNldFZhbHVlcygpOwogCiAgICAgbV9oYXNQZW5k
aW5nQ2xlYXIgPSB0cnVlOwogICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPihtX3F1
b3RhSW5CeXRlcyk7CiAKLSAgICBpZiAobV9tYXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xlYXIoKm1fbWFwSUQsIHNvdXJj
ZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIp
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkNsZWFyKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVy
KCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KSksIDApOwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0
b3JhZ2VBcmVhTWFwOjpjbGVhciBmYWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBpbnZh
bGlkIik7CiB9CkBAIC0xNTEsMjEgKzE1MiwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZXNl
dFZhbHVlcygpCiAKIFN0b3JhZ2VNYXAmIFN0b3JhZ2VBcmVhTWFwOjplbnN1cmVNYXAoKQogewot
ICAgIGNvbm5lY3QoKTsKKyAgICBjb25uZWN0U3luYygpOwogCi0gICAgaWYgKCFtX21hcCkgewor
ICAgIGlmICghbV9tYXApCiAgICAgICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPiht
X3F1b3RhSW5CeXRlcyk7CiAKLSAgICAgICAgaWYgKG1fbWFwSUQpIHsKLSAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gdXNlIGEgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHRvIHBy
ZXZlbnQgVUlQcm9jZXNzIGhhbmdzIGluIGNhc2Ugd2UgcmVjZWl2ZSBhIHN5bmNocm9ub3VzIElQ
QyBmcm9tIHRoZSBVSVByb2Nlc3Mgd2hpbGUgd2UncmUgd2FpdGluZyBmb3IgYSByZXNwb25zZQot
ICAgICAgICAgICAgLy8gZnJvbSBvdXIgU3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlcygpIElQ
Qy4gVGhpcyBJUEMgbWF5IGJlIHZlcnkgc2xvdyBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGZldGNo
IHRoZSB2YWx1ZXMgZnJvbSBkaXNrIGFuZCB0aGVyZSBtYXkgYmUgYSBsb3Qgb2YgZGF0YS4KLSAg
ICAgICAgICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5j
aHJvbm91c0lQQ1Njb3BlOwotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFs
dWVzOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkdldFZhbHVlcygqbV9tYXBJRCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFu
YWdlclNldDo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKLSAgICAgICAgICAgIG1fbWFw
LT5pbXBvcnRJdGVtcyhXVEZNb3ZlKHZhbHVlcykpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFw
IGZhaWxlZCB0byBsb2FkIGZyb20gbmV0d29yayBwcm9jZXNzIGJlY2F1c2Ugc3RvcmFnZSBtYXAg
SUQgaXMgaW52YWxpZCIpOwotICAgIH0KICAgICByZXR1cm4gKm1fbWFwOwogfQogCkBAIC0yNTks
OCArMjUwLDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgIG1fbWFwLT5zZXRJdGVtSWdub3Jp
bmdRdW90YShrZXksIG5ld1ZhbHVlKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0
Y2hTdG9yYWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyPiYgc3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykKK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBu
ZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlm
aWVyKQogeworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdl
SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJ
ZGVudGlmaWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgaWYgKCFzdG9yYWdlQXJlYUltcGxJ
RCkgewogICAgICAgICAvLyBUaGlzIHN0b3JhZ2UgZXZlbnQgb3JpZ2luYXRlcyBmcm9tIGFub3Ro
ZXIgcHJvY2VzcyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBjaGFuZ2UgdG8gb3VyIHN0b3JhZ2Ug
YXJlYSBtYXAuCiAgICAgICAgIGFwcGx5Q2hhbmdlKGtleSwgbmV3VmFsdWUpOwpAQCAtMjcyLDgg
KzI2NywxMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25z
dCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZQogICAgICAgICBkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50KHN0b3JhZ2VBcmVhSW1wbElELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwg
dXJsU3RyaW5nKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSgpCit2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpjbGVhckNhY2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQog
eworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlm
aWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgcmVzZXRWYWx1ZXMoKTsKIH0KIApAQCAtMzQ0
LDQyICszNDMsNzkgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VF
dmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW0KICAgICBTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwg
ZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3Jp
Z2luLT5kYXRhKCkpOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpzZW5kQ29ubmVjdE1lc3Nh
Z2UoU2VuZE1vZGUgbW9kZSkKK3sKKyAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworICAgIGF1dG8gbmFtZXNwYWNlSWRlbnRpZmllciA9IG1fbmFtZXNwYWNlLnN0b3JhZ2VO
YW1lc3BhY2VJRCgpOworICAgIGF1dG8gb3JpZ2luRGF0YSA9IG1fc2VjdXJpdHlPcmlnaW4tPmRh
dGEoKTsKKyAgICBhdXRvIHRvcE9yaWdpbkRhdGEgPSBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdp
bigpID8gbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKS0+ZGF0YSgpIDogb3JpZ2luRGF0YTsK
KyAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IHRvcE9yaWdpbkRhdGEs
IG9yaWdpbkRhdGEgfTsKKyAgICBhdXRvIHR5cGUgPSBtX3R5cGU7CisgICAgaWYgKCh0eXBlID09
IFN0b3JhZ2VUeXBlOjpMb2NhbCB8fCB0eXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2Nh
bCkgJiYgbV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSkKKyAgICAgICAgdHlwZSA9IFN0b3Jh
Z2VUeXBlOjpUcmFuc2llbnRMb2NhbDsKKworICAgIGlmIChtb2RlID09IFNlbmRNb2RlOjpTeW5j
KSB7CisgICAgICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZW1vdGVBcmVhSWRlbnRpZmllcjsK
KyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXM7CisgICAgICAgIHVpbnQ2NF90
IG1lc3NhZ2VJZGVudGlmaWVyOworICAgICAgICBpcGNDb25uZWN0aW9uLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyh0eXBl
LCBtX2lkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiksIE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYzo6UmVwbHkocmVt
b3RlQXJlYUlkZW50aWZpZXIsIGl0ZW1zLCBtZXNzYWdlSWRlbnRpZmllciksIDApOworICAgICAg
ICBkaWRDb25uZWN0KHJlbW90ZUFyZWFJZGVudGlmaWVyLCBXVEZNb3ZlKGl0ZW1zKSwgbWVzc2Fn
ZUlkZW50aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrQ29u
bmVjdGlvbiA9IFdlYWtQdHIgeyBpcGNDb25uZWN0aW9uIH1dKGF1dG8gcmVtb3RlQXJlYUlkZW50
aWZpZXIsIGF1dG8gaXRlbXMsIGF1dG8gbWVzc2FnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAg
ICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gZGlkQ29ubmVjdChyZW1vdGVB
cmVhSWRlbnRpZmllciwgV1RGTW92ZShpdGVtcyksIG1lc3NhZ2VJZGVudGlmaWVyKTsKKworICAg
ICAgICBpZiAod2Vha0Nvbm5lY3Rpb24gJiYgcmVtb3RlQXJlYUlkZW50aWZpZXIuaXNWYWxpZCgp
KQorICAgICAgICAgICAgd2Vha0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShyZW1vdGVBcmVhSWRlbnRpZmll
ciksIDApOworICAgIH07CisKKyAgICBpcGNDb25uZWN0aW9uLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9yYWdlQXJlYSh0eXBl
LCBtX2lkZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdFN5bmMo
KQoreworICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBzZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGU6OlN5bmMpOworfQorCiB2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpjb25uZWN0KCkKIHsKLSAgICBpZiAobV9tYXBJRCkKKyAgICBpZiAobV9yZW1v
dGVBcmVhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIG1hcElEOwotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBTdG9yYWdlVHlw
ZTo6TG9jYWw6Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6Ci0gICAgICAg
IGlmIChTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBtX25hbWVzcGFjZS50b3BMZXZl
bE9yaWdpbigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEo
bV9uYW1lc3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCks
IG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFn
ZXI6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKG1fbmFt
ZXNwYWNlLnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBN
ZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVh
OjpSZXBseShtYXBJRCksIDApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0b3JhZ2VUeXBl
OjpTZXNzaW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNl
LnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWE6OlJl
cGx5KG1hcElEKSwgMCk7Ci0gICAgfQorICAgIHNlbmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZTo6
QXN5bmMpOworfQogCi0gICAgaWYgKG1hcElELmlzVmFsaWQoKSkgewotICAgICAgICBtX21hcElE
ID0gbWFwSUQ7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFn
ZUFyZWFNYXAoKnRoaXMpOwotICAgIH0KK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpZENvbm5lY3Qo
U3RvcmFnZUFyZWFJZGVudGlmaWVyIHJlbW90ZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYmIGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAobWVzc2FnZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1l
c3NhZ2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlQXJlYUlkZW50aWZpZXIuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlbW90ZUFyZWFJZGVudGlmaWVyID0gcmVtb3Rl
QXJlYUlkZW50aWZpZXI7CisgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VNYXA+KG1fcXVv
dGFJbkJ5dGVzKTsKKyAgICBtX21hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZShpdGVtcykpOwogfQog
CiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KCkKIHsKLSAgICBpZiAoIW1fbWFwSUQp
CisgICAgaWYgKCFtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICByZXNldFZhbHVlcygpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJT
dG9yYWdlQXJlYU1hcCgqdGhpcyk7CiAKICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaXNjb25uZWN0RnJvbVN0
b3JhZ2VBcmVhKCptX21hcElEKSwgMCk7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlz
Y29ubmVjdEZyb21TdG9yYWdlQXJlYSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciksIDApOwogCi0g
ICAgbV9tYXBJRCA9IHsgfTsKKyAgICBtX3JlbW90ZUFyZWFJZGVudGlmaWVyID0geyB9OworICAg
IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IDA7CiB9CiAKIHZvaWQgU3RvcmFnZUFy
ZWFNYXA6OmluY3JlbWVudFVzZUNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDA2ZTYzNTZjYjEzMzkyNjZi
YTM0NTQ1OTYyNTM4MDQ2N2I1ODBiMTcuLmM2MjcxZDlmNzllY2JhYzNlNGY4ZjhiODdmODdjYzA0
ZWQzYmY4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFNYXAuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC02
Niw4ICs2Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9y
aWdpbi5nZXQoKTsgfQotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlm
aWVyPiYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSUQ7IH0KKyAgICBTdG9yYWdl
QXJlYU1hcElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQogCisgICAgdm9pZCBjb25uZWN0KCk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKICAg
ICB2b2lkIGluY3JlbWVudFVzZUNvdW50KCk7CkBAIC03OCw4ICs4MCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZW1vdmVJdGVtKHVpbnQ2NF90IG1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5
KTsKICAgICB2b2lkIGRpZENsZWFyKHVpbnQ2NF90IG1hcFNlZWQpOwogCi0gICAgdm9pZCBkaXNw
YXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXI+JiBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOwotICAgIHZvaWQgY2xlYXJDYWNoZSgpOworICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdl
RXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291
cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1aW50
NjRfdCBtZXNzYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBjbGVhckNhY2hlKHVpbnQ2NF90IG1l
c3NhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVzZXRWYWx1ZXMoKTsKICAgICBXZWJDb3Jl
OjpTdG9yYWdlTWFwJiBlbnN1cmVNYXAoKTsKQEAgLTkwLDEyICs5MiwxNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpOwogICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9w
dGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKIAotICAgIHZvaWQgY29ubmVjdCgpOworICAgIGVudW0gY2xhc3MgU2Vu
ZE1vZGUgOiBib29sIHsgQXN5bmMsIFN5bmMgfTsKKyAgICB2b2lkIHNlbmRDb25uZWN0TWVzc2Fn
ZShTZW5kTW9kZSk7CisgICAgdm9pZCBjb25uZWN0U3luYygpOworICAgIHZvaWQgZGlkQ29ubmVj
dChTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYsIHVpbnQ2
NF90IG1lc3NhZ2VJZGVudGlmaWVyKTsKIAorICAgIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVy
IHsgMCB9OwogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBtX25hbWVzcGFjZTsKICAgICBSZWY8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlN0b3JhZ2VNYXA+IG1fbWFwOwotICAgIHN0ZDo6b3B0aW9uYWw8U3Rv
cmFnZUFyZWFJZGVudGlmaWVyPiBtX21hcElEOworICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFy
ZWFJZGVudGlmaWVyPiBtX3JlbW90ZUFyZWFJZGVudGlmaWVyOwogICAgIEhhc2hDb3VudGVkU2V0
PFN0cmluZz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwogICAgIHVpbnQ2NF90IG1fY3VycmVudFNl
ZWQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1l
c3NhZ2VzLmluCmluZGV4IDJkMWE4MTNmY2I4NzU3YjE4NDI3NjI5MzgwNjk3ZmM3YmU5YmE5YjUu
LjZkZWU4ZThlMzVhYjViNjg4NjZmMjIwMGE3MDZhODI5MzdmZGJjYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VBcmVh
TWFwIE5vdFJlZkNvdW50ZWQgewogICAgIERpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1h
cFNlZWQsIFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQp
CiAKLSAgICBEaXNwYXRjaFN0b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFn
ZUFyZWFJbXBsSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXksIFN0cmlu
ZyBvbGRWYWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKQotICAgIENsZWFy
Q2FjaGUoKQorICAgIERpc3BhdGNoU3RvcmFnZUV2ZW50KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpT
dG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUltcGxJRCwgU3RyaW5nIGtleSwg
U3RyaW5nIG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUsIFN0cmluZyB1cmxTdHJpbmcsIHVpbnQ2
NF90IG1lc3NhZ2VJZGVudGlmaWVyKQorICAgIENsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlk
ZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MjIx
MDg5NjhmMzU5OGZkMjAxYWFhY2FmMGVjMDM3NWM0NmVmOTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51
bSBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFN0b3JhZ2VBcmVhTWFw
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyVHlw
ZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449579</attachid>
            <date>2022-01-20 08:35:45 -0800</date>
            <delta_ts>2022-01-20 09:25:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235236-20220120083544.patch</filename>
            <type>text/plain</type>
            <size>61471</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjY1N2YyYjkxOWMxZTEz
OTQ2ODRmMWQwYmEzNDdmNTI4M2U0ZmY3NS4uYTk1M2Q4Zjg3ZjBjMDY1YTg4NDY3MTc4YzRhNjdi
ZTQwYTlkYWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTG9jYWxTdG9yYWdl
IHByZXdhcm1pbmcgYXN5bmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpwcmV3YXJtTG9jYWxTdG9yYWdlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpZFByZXdhcm1Mb2NhbFN0b3JhZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om1heVByZXdhcm1Mb2NhbFN0b3JhZ2Ug
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBzdG9y
YWdlL1N0b3JhZ2VBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYTo6cHJld2Fy
bSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlVHlwZS5oOgorCiAyMDIyLTAxLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEltYWdlQW5hbHlz
aXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQgYWZ0
ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmZjFiMGQwZTc5
YzRlMDczMDc2YmViZDI4NGZiZjk3OWYyNDBmNTkuLmFkZjc0NDYzNWFjYzEyNDg1OTMzOWUzYzBk
YjQzNjExNzBiMWMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjItMDEtMTcgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMb2NhbFN0b3Jh
Z2UgcHJld2FybWluZyBhc3luYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisK
KyAgICAgICAgU3RvcmFnZUFyZWFNYXAgaW4gd2ViIHByb2Nlc3MgbmVlZHMgdG8gc3luYyB3aXRo
IGEgcmVtb3RlIFN0b3JhZ2VBcmVhIGluIG5ldHdvcmsgcHJvY2VzcyBiZWZvcmUgaXQgcGVyZm9y
bXMgYW55CisgICAgICAgIFdlYiBTdG9yYWdlIG9wZXJhdGlvbi4gVG8gY29ubmVjdCB0byByZW1v
dGUgU3RvcmFnZUFyZWEsIFN0b3JhZ2VBcmVhTWFwIGN1cnJlbnRseSBzZW5kcyBvdXQgdHdvIHN5
bmMgbWVzc2FnZXM6CisgICAgICAgIDEuIENvbm5lY3RUbypTdG9yYWdlQXJlYTogZm9yIGdldHRp
bmcgdGhlIHJlbW90ZSBTdG9yYWdlQXJlYUlkZW50aWZpZXIKKyAgICAgICAgMi4gZ2V0VmFsdWVz
OiBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBTdG9yYWdlQXJlYQorICAgICAgICBXZSBjYW4g
bWVyZ2UgdGhlc2UgdHdvIG1lc3NhZ2VzIGludG8gb25lIG1lc3NhZ2U6IENvbm5lY3RUb1N0b3Jh
Z2VBcmVhU3luYywgYW5kIHJldHVybiBib3RoIHJlbW90ZSAKKyAgICAgICAgU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIGFuZCBjb250ZW50IGluIGl0cyByZXBseS4gVGhpcyB3YXksIHdlYiBwcm9jZXNz
IHdpbGwgbm90IGJlIGJsb2NrZWQgdHdpY2UuCisKKyAgICAgICAgVG8gcmVkdWNlIHRoZSB3YWl0
IHRpbWUgZm9yIGNvbm5lY3RpbmcgdG8gYSBsb2NhbCBTdG9yYWdlQXJlYSwgd2Ugd291bGQgcHJl
d2FybSBMb2NhbFN0b3JhZ2UgYnkgY3JlYXRpbmcgaXRzIAorICAgICAgICBTdG9yYWdlQXJlYU1h
cCBhaGVhZCBhbmQgbWFraW5nIGl0IGNvbm5lY3RlZCAocjI0NzU1NSksIGJ1dCB3ZSBkb24ndCBh
Y3R1YWxseSBuZWVkIFN0b3JhZ2VBcmVhTWFwIHRvIGJlIHJlYWR5IAorICAgICAgICBmb3Igb3Bl
cmF0aW9uIGF0IHRoaXMgdGltZS4gVGhlcmVmb3JlLCBhIG5ldyBhc3luYyBtZXNzYWdlIENvbm5l
Y3RUb1N0b3JhZ2VBcmVhIGlzIGFkZGVkIHRvIGJlIHVzZWQgZm9yIAorICAgICAgICBwcmV3YXJt
aW5nLgorCisgICAgICAgIElmIExvY2FsU3RvcmFnZSBpcyB1c2VkIGltbWVkaWF0ZWx5IGFmdGVy
IHByZXdhcm1pbmcsIGEgU3RvcmFnZUFyZWFNYXAgbWF5IHNlbmQgQ29ubmVjdFRvU3RvcmFnZUFy
ZWFTeW5jIGJlZm9yZSAKKyAgICAgICAgcmVjZWl2aW5nIHRoZSByZXBseSBvZiBDb25uZWN0VG9T
dG9yYWdlQXJlYS4gSW4gdGhpcyBjYXNlLCBTdG9yYWdlQXJlYU1hcCB3b3VsZCBoYW5kbGUgQ29u
bmVjdFRvU3RvcmFnZUFyZWFTeW5jIAorICAgICAgICByZXBseSBiZWZvcmUgQ29ubmVjdFRvU3Rv
cmFnZUFyZWEgcmVwbHkgKGR1ZSB0byB0aGUgcHJpb3JpdHkgb2Ygc3luYyBtZXNzYWdlKSwgYW5k
IGFsc28gYmVmb3JlIG90aGVyIGFzeW5jIAorICAgICAgICBtZXNzYWdlcyAoRGlzcGF0Y2hTdG9y
YWdlRXZlbnQgLyBDbGVhckNhY2hlKSB0aGF0IGFyZSBzZW50IGZyb20gbmV0d29yayBwcm9jZXNz
IGVhcmxpZXIgYmVmb3JlIHRoZSBzeW5jIHJlcGx5LgorICAgICAgICBUbyBzb2x2ZSB0aGlzLCB3
ZSB1c2UgYSBtZXNzYWdlIGlkZW50aWZpZXIgdG8gaW5kaWNhdGUgdGhlIG9yZGVyIG9mIG1lc3Nh
Z2VzIHNlbnQgZnJvbSBuZXR3b3JrIHByb2Nlc3MsIHNvCisgICAgICAgIFN0b3JhZ2VBcmVhTWFw
IGNhbiBpZ25vcmUgcHJldmlvdXMgbWVzc2FnZXMgd2hlbiBpdCBpcyBhbHJlYWR5IHN5bmNlZCB3
aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiBTdG9yYWdlQXJlYS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYTo6ZGlz
cGF0Y2hFdmVudHMgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9j
YWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZU1hbmFn
ZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0
b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFy
ZWEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0
b3JhZ2VBcmVhU3luYyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVj
dFRvU2Vzc2lvblN0b3JhZ2VBcmVhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpnZXRWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25T
dG9yYWdlQXJlYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3Rv
cmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VB
cmVhQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3Nh
Z2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdl
QXJlYUJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVy
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpub3RpZnlMaXN0ZW5lcnNBYm91
dENsZWFyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFCYXNlOjpkaXNwYXRjaEV2ZW50
cyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJh
c2UuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKHR5
cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQpOgorICAgICAgICAoaGVhZGVyc19m
b3JfdHlwZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU3RvcmFnZUFyZWFNYXApOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdG9yYWdlQXJlYU1hcCBjb25zdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6
cHJld2FybSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNj
ZXNzQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmRl
Y3JlbWVudEFjY2Vzc0NvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFJbXBsOjpjbG9zZURhdGFiYXNlSWZJZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6
On5TdG9yYWdlQXJlYU1hcCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpzZXRJ
dGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OnJlbW92ZUl0ZW0pOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFN
YXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFN
YXA6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6c2VuZENv
bm5lY3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3RT
eW5jKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6OmNvbm5lY3QpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMi0wMS0xNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBTZXJ2aWNlV29y
a2VyQ2xpZW50LmlkIGEgVVVJRCBpbnN0ZWFkIG9mIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggNjFlYjhhNDFjMTg5MmYyMDBjNTg1ODNhNjk3ZWQyNTg4ZjY5Y2Y2OS4uMzU1M2E5ZjY3
MGFkYzUyNmEzZWI0OTI5MDYxYzVjY2FkODE1MzUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcApAQCAtNDEzLDkgKzQxMyw2IEBAIHZvaWQgRE9NV2luZG93OjpwcmV3YXJtTG9jYWxTdG9y
YWdlSWZOZWNlc3NhcnkoKQogICAgIGlmICghcGFnZSB8fCBwYWdlLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UtPm1haW5GcmFtZSgpLm1h
eVByZXdhcm1Mb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gVGhpcyBl
YWdlcmx5IGNvbnN0cnVjdHMgdGhlIFN0b3JhZ2VBcmVhLCB3aGljaCB3aWxsIGxvYWQgaXRlbXMg
ZnJvbSBkaXNrLgogICAgIGF1dG8gbG9jYWxTdG9yYWdlUmVzdWx0ID0gdGhpcy0+bG9jYWxTdG9y
YWdlKCk7CiAgICAgaWYgKGxvY2FsU3RvcmFnZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTQy
NSw3ICs0MjIsNyBAQCB2b2lkIERPTVdpbmRvdzo6cHJld2FybUxvY2FsU3RvcmFnZUlmTmVjZXNz
YXJ5KCkKICAgICBpZiAoIWxvY2FsU3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFn
ZS0+bWFpbkZyYW1lKCkuZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpOworICAgIGxvY2FsU3RvcmFn
ZS0+YXJlYSgpLnByZXdhcm0oKTsKIH0KIAogRE9NV2luZG93Ojp+RE9NV2luZG93KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKaW5kZXggODZmOWE3YmUzZWJhMGRiZjJiMjc1Yzc1MWNjODQzZGRhYTc0YTVj
MS4uYTQ3ZWEwZDg0NDAwNTgwY2ViZTEyMWM4OWViYzBmODc3MjQ3ZmM4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKQEAgLTEwNTcsMTkgKzEwNTcsNiBAQCB2b2lkIEZyYW1lOjpkcm9wQ2hpbGRyZW4o
KQogICAgICAgICB0cmVlKCkucmVtb3ZlQ2hpbGQoKmNoaWxkKTsKIH0KIAotdm9pZCBGcmFtZTo6
ZGlkUHJld2FybUxvY2FsU3RvcmFnZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpbkZyYW1lKCkpOwot
ICAgIEFTU0VSVChtX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudCA8IG1heGxvY2FsU3RvcmFn
ZVByZXdhcm1pbmdDb3VudCk7Ci0gICAgKyttX2xvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsK
LX0KLQotYm9vbCBGcmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGlzTWFpbkZyYW1lKCkpOwotICAgIHJldHVybiBtX2xvY2FsU3RvcmFnZVByZXdhcm1p
bmdDb3VudCA8IG1heGxvY2FsU3RvcmFnZVByZXdhcm1pbmdDb3VudDsKLX0KLQogRmxvYXRTaXpl
IEZyYW1lOjpzY3JlZW5TaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3ZlcnJpZGVTY3JlZW5T
aXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA1MzY0NGViMTk1ZTE3Y2QyZmQ3ZmM0
MWIxNDJhZDFiNzZlNGI2Y2NkLi5lMDRjOTQ0MWUzMTA4MDczYWQ1ODliZDhlOGZhMDBiZGQzMzk2
MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOTEsOSArMjkxLDYgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICBib29sIGFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50ID4gMDsgfQogCi0gICAgdm9p
ZCBkaWRQcmV3YXJtTG9jYWxTdG9yYWdlKCk7Ci0gICAgYm9vbCBtYXlQcmV3YXJtTG9jYWxTdG9y
YWdlKCkgY29uc3Q7Ci0KICAgICBlbnVtIGNsYXNzIEludmFsaWRhdGVDb250ZW50RXZlbnRSZWdp
b25zUmVhc29uIHsgTGF5b3V0LCBFdmVudEhhbmRsZXJDaGFuZ2UgfTsKICAgICB2b2lkIGludmFs
aWRhdGVDb250ZW50RXZlbnRSZWdpb25zSWZOZWVkZWQoSW52YWxpZGF0ZUNvbnRlbnRFdmVudFJl
Z2lvbnNSZWFzb24pOwogCkBAIC0zNjEsNyArMzU4LDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25hdmlnYXRpb25EaXNhYmxlQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9zZWxmT25s
eVJlZkNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNIYWRVc2VySW50ZXJhY3Rpb24geyBmYWxz
ZSB9OwotICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50IHsgMCB9Owog
CiAgICAgRmxvYXRTaXplIG1fb3ZlcnJpZGVTY3JlZW5TaXplOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VBcmVhLmgKaW5kZXggMjUxYmQ0MjlkNjIwNjI5OTdmNzI4ZGMwZGM2NjI1ZjE0ZjFi
NWM3OC4uNzc0NjE0MGY3ODQwODFiMDc4NmExNWQ2MDFmZWZjYTJjOTFjMTBhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlRGF0YWJh
c2VJZklkbGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJld2FybSgpIHsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHlwZS5oCmluZGV4
IDIyMDU4N2VjODZiYTVjNTE3MWI2NzNiMTc3YTQ2NjFhMjJjZjMxM2QuLmYzY2ZlNGNkOTVmZDY0
NjBiMDk0YzljYjBhNzE0ZmRjM2Q4Y2Y3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VU
eXBlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYv
RW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgU3RvcmFn
ZVR5cGUgOiB1aW50OF90IHsKQEAgLTQ0LDMgKzQ2LDE2IEBAIGlubGluZSBib29sIGlzUGVyc2lz
dGVudExvY2FsU3RvcmFnZShTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpTdG9yYWdlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlLAorICAgICAgICBXZWJDb3JlOjpT
dG9yYWdlVHlwZTo6U2Vzc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2Fs
LAorICAgICAgICBXZWJDb3JlOjpTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwKKyAgICA+Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCBjODRlYWQ0MzBhYjE1
ZDk0ZmQ4ZWYyNTMzZDZlNDkyODcyYjZlMTJiLi4wYzQxYWI5MmUzMWY0OWQ2YTVhOTQ5YTQwMzcy
OGMyYWE5ZDA0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFN0
b3JhZ2VBcmVhOjpjbGVhcigpCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBsaXN0ZW5lclVuaXF1
ZUlEIDogbV9ldmVudExpc3RlbmVycykKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxp
c3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZSgpLCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChs
aXN0ZW5lclVuaXF1ZUlELCBNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoMCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJhc2UmIFN0
b3JhZ2VBcmVhOjplbnN1cmVEYXRhYmFzZSgpIGNvbnN0CkBAIC0xODgsNyArMTg4LDcgQEAgdm9p
ZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBz
b3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQpOwogICAg
IGZvciAoYXV0byYgbGlzdGVuZXJVbmlxdWVJRCA6IG1fZXZlbnRMaXN0ZW5lcnMpIHsKICAgICAg
ICAgYXV0byBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gbGlzdGVuZXJVbmlxdWVJRCA9PSBz
b3VyY2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1wbElEKSA6
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGxpc3RlbmVyVW5p
cXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQob3B0
aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHVybFN0cmlu
ZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgSVBDOjpDb25uZWN0aW9uOjpz
ZW5kKGxpc3RlbmVyVW5pcXVlSUQsIE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlzcGF0Y2hT
dG9yYWdlRXZlbnQob3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCwga2V5LCBvbGRWYWx1ZSwgbmV3
VmFsdWUsIHVybFN0cmluZywgMCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjYmRkZDJlMzA0OGQyODcwYWUwN2EwYWFk
ZjRlZDk3YjMxMDQzNmM5Li4zY2UwZWM4NTczZDk4YzlkNzQ4ZDcwNGIyZGM5ZGM4YzkxOWQ2Zjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxT
dG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBMb2Nh
bFN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0aW9uQ2xvc2VkRm9yVHJhbnNpZW50U3RvcmFnZUFyZWEo
SVBDOjpDb25uZWN0aW8KICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVhID0gbnVsbHB0cjsKIH0K
IAotU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb0xv
Y2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVl
dWUpCitTdG9yYWdlQXJlYUlkZW50aWZpZXIgTG9jYWxTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRv
TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb24sIFN0
b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUpCiB7CiAgICAg
aWYgKCFtX2xvY2FsU3RvcmFnZUFyZWEpIHsKICAgICAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgp
KQpAQCAtMTc3LDExICsxNzcsMTEgQEAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIExvY2FsU3RvcmFn
ZU1hbmFnZXI6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWMKICAgICB9CiAK
ICAgICBBU1NFUlQobV9wYXRoLmlzRW1wdHkoKSB8fCBtX2xvY2FsU3RvcmFnZUFyZWEtPnR5cGUo
KSA9PSBTdG9yYWdlQXJlYUJhc2U6OlR5cGU6OlNRTGl0ZSk7Ci0gICAgbV9sb2NhbFN0b3JhZ2VB
cmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX2xvY2FsU3RvcmFnZUFyZWEtPmFk
ZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVybiBtX2xv
Y2FsU3RvcmFnZUFyZWEtPmlkZW50aWZpZXIoKTsKIH0KIAotU3RvcmFnZUFyZWFJZGVudGlmaWVy
IExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBMb2NhbFN0b3JhZ2VNYW5h
Z2VyOjpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIGlmICgh
bV90cmFuc2llbnRTdG9yYWdlQXJlYSkgewogICAgICAgICBtX3RyYW5zaWVudFN0b3JhZ2VBcmVh
ID0gbWFrZVVuaXF1ZTxNZW1vcnlTdG9yYWdlQXJlYT4ob3JpZ2luLCBTdG9yYWdlQXJlYUJhc2U6
OlN0b3JhZ2VUeXBlOjpMb2NhbCk7CkBAIC0xODksNyArMTg5LDcgQEAgU3RvcmFnZUFyZWFJZGVu
dGlmaWVyIExvY2FsU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVAKICAgICB9CiAKICAgICBBU1NFUlQobV90cmFuc2llbnRTdG9yYWdlQXJlYS0+dHlw
ZSgpID09IFN0b3JhZ2VBcmVhQmFzZTo6VHlwZTo6TWVtb3J5KTsKLSAgICBtX3RyYW5zaWVudFN0
b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uKTsKKyAgICBtX3RyYW5zaWVudFN0b3Jh
Z2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzb3VyY2VJZGVudGlmaWVyKTsKICAgICBy
ZXR1cm4gbV90cmFuc2llbnRTdG9yYWdlQXJlYS0+aWRlbnRpZmllcigpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFn
ZU1hbmFnZXIuaAppbmRleCBhODg4NDJlMjk1ZjJkOTBhOGYwZThiYmE4ZWQ3YjNlYTI3ZDU4YThi
Li5jZGNiNjgxMmY4ZmVkNjliY2RhNDlmNjk0MmQ2N2NkYTJkMTBmMTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VN
YW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJTdG9yYWdlQXJlYUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTU2LDggKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgc3luY0xvY2FsU3Rv
cmFnZSgpOwogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZChJUEM6OkNvbm5lY3Rpb246OlVuaXF1
ZUlEKTsKIAotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VB
cmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIFJlZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBjb25uZWN0
VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBj
b25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3Jh
Z2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgUmVmPFdv
cmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGNvbm5lY3RUb1RyYW5zaWVu
dExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFnZUFyZWFN
YXBJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKICAgICB2b2lkIGRp
c2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
aW5kZXggOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YS4uZDk3NGU2ZGIz
NTUzODcxNDI1YmFlNjJjMDcyMjU3MjEzMmM2ZDQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdl
ci5jcHAKQEAgLTYyNSwyNCArNjI1LDMzIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpz
eW5jTG9jYWxTdG9yYWdlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0CiAgICAg
fSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9Mb2NhbFN0b3Jh
Z2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1N0b3JhZ2VBcmVhKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3RvcmFn
ZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiBvcmlnaW4gPSB7IHRvcE9yaWdpbiwgdG9wT3JpZ2luIH07Ci0gICAgY29tcGxldGlvbkhh
bmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4pLmxvY2FsU3RvcmFnZU1hbmFn
ZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShjb25u
ZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbiwgbV9xdWV1ZS5jb3B5UmVmKCkpKTsKLX0KKyAgICBh
dXRvIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOworICAgIGF1
dG8mIG9yaWdpblN0b3JhZ2VNYW5hZ2VyID0gbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmln
aW4pOworICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZXN1bHRJZGVudGlmaWVyOworICAgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVR5cGU6OkxvY2FsOgorICAg
ICAgICByZXN1bHRJZGVudGlmaWVyID0gb3JpZ2luU3RvcmFnZU1hbmFnZXIubG9jYWxTdG9yYWdl
TWFuYWdlcigqbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5KS5jb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVh
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG1fcXVldWUu
Y29weVJlZigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpTdG9yYWdlVHlw
ZTo6VHJhbnNpZW50TG9jYWw6CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmlnaW5TdG9y
YWdlTWFuYWdlci5sb2NhbFN0b3JhZ2VNYW5hZ2VyKCptX3N0b3JhZ2VBcmVhUmVnaXN0cnkpLmNv
bm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoY29ubmVjdGlvbklkZW50aWZpZXIsIHNv
dXJjZUlkZW50aWZpZXIsIG9yaWdpbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29y
ZTo6U3RvcmFnZVR5cGU6OlNlc3Npb246CisgICAgICAgIHJlc3VsdElkZW50aWZpZXIgPSBvcmln
aW5TdG9yYWdlTWFuYWdlci5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdp
c3RyeSkuY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
b3VyY2VJZGVudGlmaWVyLCBvcmlnaW4sIG5hbWVzcGFjZUlkZW50aWZpZXIpOworICAgIH0KIAot
dm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiBvcGVuaW5nT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiA9IHsgdG9wT3JpZ2luLCBvcGVuaW5nT3JpZ2luIH07
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcihvcmlnaW4p
LmxvY2FsU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRvVHJh
bnNpZW50TG9jYWxTdG9yYWdlQXJlYShjb25uZWN0aW9uLnVuaXF1ZUlEKCksIG9yaWdpbikpOwor
ICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhID0gbV9zdG9yYWdlQXJlYVJlZ2lzdHJ5LT5nZXRTdG9y
YWdlQXJlYShyZXN1bHRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VsdElkZW50aWZpZXIsIHN0b3JhZ2VBcmVhLT5hbGxJdGVtcygpLCBTdG9yYWdlQXJl
YUJhc2U6Om5leHRNZXNzYWdlSWRlbnRpZmllcigpKTsKKworICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihyZXN1bHRJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB7IH0sIFN0
b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCkpOwogfQogCi12b2lkIE5ldHdv
cmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Y29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgU3RvcmFnZUFy
ZWFNYXBJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIG5hbWVzcGFjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luID0geyB0b3BPcmlnaW4sIHRvcE9yaWdpbiB9
OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKGxvY2FsT3JpZ2luU3RvcmFnZU1hbmFnZXIob3JpZ2lu
KS5zZXNzaW9uU3RvcmFnZU1hbmFnZXIoKm1fc3RvcmFnZUFyZWFSZWdpc3RyeSkuY29ubmVjdFRv
U2Vzc2lvblN0b3JhZ2VBcmVhKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgb3JpZ2luLCBpZGVudGlm
aWVyKSk7CisgICAgY29ubmVjdFRvU3RvcmFnZUFyZWEoY29ubmVjdGlvbiwgdHlwZSwgc291cmNl
SWRlbnRpZmllciwgbmFtZXNwYWNlSWRlbnRpZmllciwgb3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpkaXNjb25uZWN0
RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC02NjksMTYgKzY3OCw2IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Z2V0VmFs
dWVzKFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0byBzdG9y
YWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFSZWdpc3RyeS0+Z2V0U3RvcmFnZUFyZWEoaWRlbnRpZmll
cikpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYS0+YWxsSXRl
bXMoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci19Ci0KIHZv
aWQgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElk
ZW50aWZpZXIgaW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcm
JiBrZXksIFN0cmluZyYmIHZhbHVlLCBTdHJpbmcmJiB1cmxTdHJpbmcpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggZDIxZDY1
NmQzYTY3MjdjOThkMTJhNDEyMzc1ZWQwNTJhNTNhOWU5MS4uYTFmMzA3NjQ0Njc2ZThkNTM1NjVi
ZmVjODM3OTY3OTZjMzQ2YTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIk9yaWdpblN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZUFyZWFJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgpAQCAtNDQsNiArNDUsNyBAQCBjbGFzcyBT
aGFyZWRGaWxlSGFuZGxlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ2xpZW50T3Jp
Z2luOworZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMTA4LDEyICsxMTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEhhbmRs
ZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwg
U3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8
V2ViQ29yZTo6RmlsZVN5c3RlbUhhbmRsZUlkZW50aWZpZXIsIGJvb2w+LCBGaWxlU3lzdGVtU3Rv
cmFnZUVycm9yPik+JiYpOwogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMgZm9yIFdlYlN0
b3JhZ2UuCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsK
LSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0
aW9uJiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIpPiYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1Nlc3Np
b25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFyZWFJZGVudGlmaWVyKT4mJik7CisgICAgdm9pZCBjb25uZWN0VG9TdG9yYWdlQXJl
YShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTdG9yYWdlVHlwZSwgU3RvcmFnZUFyZWFNYXBJ
ZGVudGlmaWVyLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQXJlYUlkZW50aWZpZXIs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgY29ubmVj
dFRvU3RvcmFnZUFyZWFTeW5jKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlN0b3JhZ2VUeXBl
LCBTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBcmVhSWRlbnRpZmllciwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4sIHVpbnQ2NF90KT4mJik7
CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFN0
b3JhZ2VBcmVhSWRlbnRpZmllcik7CiAgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBTdG9yYWdl
TmFtZXNwYWNlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBnZXRWYWx1ZXMoU3RvcmFnZUFyZWFJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+Jik+JiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJl
YUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHNlZWQsIFN0
cmluZyYmIGtleSwgU3RyaW5nJiYgdmFsdWUsIFN0cmluZyYmIHVybFN0cmluZyk7CiAgICAgdm9p
ZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc2VlZCwgU3RyaW5nJiYga2V5LCBTdHJp
bmcmJiB1cmxTdHJpbmcpOwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFn
ZUFyZWFJZGVudGlmaWVyLCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzZWVk
LCBTdHJpbmcmJiB1cmxTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIubWVz
c2FnZXMuaW4KaW5kZXggYTUxNmFkYTk4MzJmZGVmNWI2ODE0OTQ0MjE1ZjY4OGZkYTgxYzYxNS4u
ZmZjODZmOWQwOWZkNDU5NTUzNWY4NzUwNTM5NDVhMThhNzczMWYwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0
d29ya1N0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC00MCwxMiArNDAsMTAgQEAKICAgICBH
ZXRIYW5kbGVOYW1lcyhXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciBpZGVudGlm
aWVyKSAtPiAoRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIFdlYktpdDo6RmlsZVN5c3RlbVN0b3Jh
Z2VFcnJvcj4gcmVzdWx0KSBBc3luYwogICAgIEdldEhhbmRsZShXZWJDb3JlOjpGaWxlU3lzdGVt
SGFuZGxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbmFtZSkgLT4gKEV4cGVjdGVkPHN0
ZDo6cGFpcjxXZWJDb3JlOjpGaWxlU3lzdGVtSGFuZGxlSWRlbnRpZmllciwgYm9vbD4sIFdlYktp
dDo6RmlsZVN5c3RlbVN0b3JhZ2VFcnJvcj4gcmVzdWx0KSBBc3luYyBXYW50c0Nvbm5lY3Rpb24K
IAotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50
aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ29ubmVj
dFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSB0b3BMZXZlbFNlY3VyaXR5T3JpZ2luRGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRl
bnRpZmllciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb25u
ZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
ciBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
c2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXIgaWRl
bnRpZmllcikgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFn
ZUFyZWEoV2ViQ29yZTo6U3RvcmFnZVR5cGUgdHlwZSwgV2ViS2l0OjpTdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciBuYW1lc3BhY2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9y
aWdpbikgLT4gKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikgQXN5
bmMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvU3RvcmFnZUFyZWFTeW5jKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlIHR5cGUsIFdlYktpdDo6U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNl
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+IChXZWJL
aXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBpdGVtcywgdWludDY0X3QgbWVzc2FnZUlkZW50aWZpZXIpIFN5bmNocm9ub3VzIFdhbnRz
Q29ubmVjdGlvbgogICAgIERpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoV2ViS2l0OjpTdG9yYWdl
QXJlYUlkZW50aWZpZXIgaWRlbnRpZmllcikgV2FudHNDb25uZWN0aW9uCiAgICAgQ2xvbmVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIGZy
b21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIg
dG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFZhbHVlcyhXZWJL
aXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cwogICAgIFNldEl0ZW0oV2ViS2l0OjpTdG9yYWdl
QXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyIGltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwg
U3RyaW5nIHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAgICBSZW1v
dmVJdGVtKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc3RvcmFn
ZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgog
ICAgIENsZWFyKFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktp
dDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllciBpbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc3Rv
cmFnZU1hcFNlZWQsIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0
b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkNDBlNDBiNjE3M2MyOGQ0NGM1N2I4ZTIwZjcyYmNiNTEx
MDQxZGI1Li5iNzM0MmU0MGVmMWY2YmI1Y2RiNmZiZmIyZWYxMjNmOWQwNmU4ZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vz
c2lvblN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjphZGRTdG9yYWdlQXJlYShzdGQ6OnVuaXF1ZV9w
dHI8TWVtbwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCi1TdG9yYWdlQXJlYUlkZW50aWZp
ZXIgU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyOjpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFtZXNwYWNlSWRlbnRp
ZmllcikKK1N0b3JhZ2VBcmVhSWRlbnRpZmllciBTZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5l
Y3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmFt
ZXNwYWNlSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3N0b3JhZ2VBcmVh
c0J5TmFtZXNwYWNlLmdldChuYW1lc3BhY2VJZGVudGlmaWVyKTsKICAgICBpZiAoIWlkZW50aWZp
ZXIuaXNWYWxpZCgpKSB7CkBAIC04NCw3ICs4NCw4IEBAIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBT
ZXNzaW9uU3RvcmFnZU1hbmFnZXI6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNv
CiAgICAgaWYgKCFzdG9yYWdlQXJlYSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciB7IH07CiAKLSAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbik7Cisg
ICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHNvdXJjZUlkZW50aWZpZXIp
OworCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TZXNzaW9uU3RvcmFnZU1hbmFnZXIuaApp
bmRleCBmYzE3NjFiZTkwMGY4ZTRkYTc3NTRiMDE4ZjFkYmUyZTM4ZmI3ZGZhLi4wZjdiZTRjNWU1
Y2M4OGFjMzgyOWMxOTI1MDFmY2M2ODI2MjVlNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1Nlc3Npb25TdG9yYWdlTWFuYWdlci5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZUFyZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRh
dGEoKTsKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCk7CiAKLSAgICBTdG9yYWdlQXJlYUlkZW50aWZpZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VB
cmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKTsKKyAgICBTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgY29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQs
IFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwg
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb21TdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBTdG9yYWdlQXJlYUlkZW50aWZpZXIp
OwogICAgIHZvaWQgY2xvbmVTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFn
ZUFyZWFCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9y
YWdlQXJlYUJhc2UuY3BwCmluZGV4IGU0NGJhMDEzNWE2NDNjMDFhNWI5MDBjNzYzMWJhMTQ5OThm
OGYzYzEuLmJhMDkyNDBkZTAxZWM2MGU4ZTc3YThkZDJhOGFlN2YwYTMyM2YxMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJl
YUJhc2UuY3BwCkBAIC0zMCw4ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordWlu
dDY0X3QgU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZpZXIoKQoreworICAgIHN0
YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudElkZW50aWZpZXI7CisgICAgcmV0dXJu
ICsrY3VycmVudElkZW50aWZpZXI7Cit9CisKIFN0b3JhZ2VBcmVhQmFzZTo6U3RvcmFnZUFyZWFC
YXNlKHVuc2lnbmVkIHF1b3RhLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikK
LSAgICA6IG1faWRlbnRpZmllcihTdG9yYWdlQXJlYUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisg
ICAgOiBtX2lkZW50aWZpZXIoU3RvcmFnZUFyZWFJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNh
ZmUoKSkKICAgICAsIG1fcXVvdGEocXVvdGEpCiAgICAgLCBtX29yaWdpbihvcmlnaW4pCiB7CkBA
IC0zOSwxMSArNDUsMTEgQEAgU3RvcmFnZUFyZWFCYXNlOjpTdG9yYWdlQXJlYUJhc2UodW5zaWdu
ZWQgcXVvdGEsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3IKIAogU3RvcmFnZUFyZWFC
YXNlOjp+U3RvcmFnZUFyZWFCYXNlKCkgPSBkZWZhdWx0OwogCi12b2lkIFN0b3JhZ2VBcmVhQmFz
ZTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uKQordm9p
ZCBTdG9yYWdlQXJlYUJhc2U6OmFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQg
Y29ubmVjdGlvbiwgU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAg
QVNTRVJUKCFtX2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSk7CisgICAgQVNTRVJUKCFt
X2xpc3RlbmVycy5jb250YWlucyhjb25uZWN0aW9uKSB8fCBtX2xpc3RlbmVycy5nZXQoY29ubmVj
dGlvbikgPT0gaWRlbnRpZmllcik7CiAKLSAgICBtX2xpc3RlbmVycy5hZGQoY29ubmVjdGlvbik7
CisgICAgbV9saXN0ZW5lcnMuYWRkKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIpOwogfQogCiB2b2lk
IFN0b3JhZ2VBcmVhQmFzZTo6cmVtb3ZlTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCBjb25uZWN0aW9uKQpAQCAtNTgsMTkgKzY0LDE5IEBAIGJvb2wgU3RvcmFnZUFyZWFCYXNlOjpo
YXNMaXN0ZW5lcnMoKSBjb25zdAogCiB2b2lkIFN0b3JhZ2VBcmVhQmFzZTo6bm90aWZ5TGlzdGVu
ZXJzQWJvdXRDbGVhcigpCiB7Ci0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9saXN0ZW5l
cnMpCi0gICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6
U3RvcmFnZUFyZWFNYXA6OkNsZWFyQ2FjaGUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIGZvciAoYXV0byYgW2Nvbm5lY3Rpb24sIGlkZW50aWZpZXJdIDogbV9saXN0ZW5lcnMpCisg
ICAgICAgIElQQzo6Q29ubmVjdGlvbjo6c2VuZChjb25uZWN0aW9uLCBNZXNzYWdlczo6U3RvcmFn
ZUFyZWFNYXA6OkNsZWFyQ2FjaGUoU3RvcmFnZUFyZWFCYXNlOjpuZXh0TWVzc2FnZUlkZW50aWZp
ZXIoKSksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFCYXNl
OjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rp
b24sIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgc291cmNlSW1wbElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3QKIHsKICAgICBBU1NFUlQoc291cmNl
SW1wbElkZW50aWZpZXIpOwogCi0gICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9saXN0ZW5l
cnMpIHsKKyAgICBmb3IgKGF1dG8mIFtjb25uZWN0aW9uLCBpZGVudGlmaWVyXSA6IG1fbGlzdGVu
ZXJzKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4g
aW1wbElkZW50aWZpZXI7CiAgICAgICAgIGlmIChjb25uZWN0aW9uID09IHNvdXJjZUNvbm5lY3Rp
b24pCiAgICAgICAgICAgICBpbXBsSWRlbnRpZmllciA9IHNvdXJjZUltcGxJZGVudGlmaWVyOwot
ICAgICAgICBJUEM6OkNvbm5lY3Rpb246OnNlbmQoY29ubmVjdGlvbiwgTWVzc2FnZXM6OlN0b3Jh
Z2VBcmVhTWFwOjpEaXNwYXRjaFN0b3JhZ2VFdmVudChpbXBsSWRlbnRpZmllciwga2V5LCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIHVybFN0cmluZyksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgSVBDOjpDb25uZWN0aW9uOjpzZW5kKGNvbm5lY3Rpb24sIE1lc3NhZ2VzOjpTdG9yYWdl
QXJlYU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoaW1wbElkZW50aWZpZXIsIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIFN0b3JhZ2VBcmVhQmFzZTo6bmV4dE1lc3NhZ2VJZGVu
dGlmaWVyKCkpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1N0b3JhZ2VBcmVhQmFzZS5o
CmluZGV4IGVkM2VkMTQyMDZlMTc1ZGNhY2M4YzFmOTk0OTA3NTA1NDVlMzRlOTguLmVmYzhmYjk2
NDg5MTA3Yzg4ZTMzY2QxMjNmNjA5YTM2ZjIxYWVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TdG9yYWdlQXJlYUJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU3RvcmFnZUFyZWFCYXNlLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xp
ZW50T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNDcsNiArNDgsNyBA
QCBjbGFzcyBTdG9yYWdlQXJlYUJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3RvcmFnZUFy
ZWFCYXNlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RvcmFnZUFyZWFCYXNlKTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBzdGF0aWMgdWludDY0X3Qg
bmV4dE1lc3NhZ2VJZGVudGlmaWVyKCk7CiAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFCYXNlKCk7
CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgU1FMaXRlLCBNZW1vcnkgfTsKQEAgLTU5
LDcgKzYxLDcgQEAgcHVibGljOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdW5zaWduZWQgcXVv
dGEoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhOyB9Ci0gICAgdm9pZCBhZGRMaXN0ZW5lcihJUEM6
OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKKyAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6Q29ubmVj
dGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1v
dmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKICAgICBib29sIGhhc0xpc3Rl
bmVycygpIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5TGlzdGVuZXJzQWJvdXRDbGVhcigpOwpAQCAt
NzcsNyArNzksNyBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAgICAgdW5zaWduZWQgbV9xdW90YTsKICAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
bV9vcmlnaW47Ci0gICAgSGFzaFNldDxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPiBtX2xpc3Rl
bmVyczsKKyAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIFN0b3JhZ2VBcmVh
TWFwSWRlbnRpZmllcj4gbV9saXN0ZW5lcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDhiNTIxZjc3MDE1
NDhiMWFmOGI0NGIzNTM3NDYzNzY5YzkwZGY5ODIuLmMxZjQzYTE4YzcyYmZiMjVmZjhjYzYzMTRm
MWM3ODM3MWE2YjkyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMzA1LDYgKzMwNSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpTbGVlcERpc2FibGVySWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpTb3VyY2VCdWZmZXJBcHBlbmRNb2RlJywKICAgICAgICAgJ1dlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXInLAorICAgICAg
ICAnV2ViQ29yZTo6U3RvcmFnZVR5cGUnLAogICAgICAgICAnV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllcicsCkBAIC0zNDcsNiArMzQ4LDcg
QEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAg
J1dlYktpdDo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VB
cmVhSW1wbElkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlRhcElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpUZXh0Q2hl
Y2tlclJlcXVlc3RJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAxNTI2MzBhMzAzMjEwNzQ4Yjg4YTAxOWExM2M0MGEwZGFmMjAzZDE0
Li41NGE0YjIxMDFhMzU3YWUxNDk4ZThlODY3NDFlODc2MDUyMjVhMTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NTcsNiArMTQ1
Nyw3IEBACiAJCTkzQUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQUI5QjQyMjU3NDkyOEMwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJOTNBQjlCNTUyNTc1QTI3
NjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNBQjlCNEYyNTc1ODkxMTAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk5M0FC
OUI1NjI1NzVBMjhCMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCOUI1MTI1NzU4OTExMDA5OEIxMEUgLyogU3Bl
ZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CisJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJl
YU1hcElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQUVDMTYwMjc4RjhDRDIwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIuaCAqLzsgfTsKIAkJOTNCMEE2NzUyNkQ1QURDRjAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0IwQTY3NDI2RDVBNzJFMDBBQTIxRTQgLyogV2ViUGVybWlzc2lvbkNvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJOTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0OTIyN0Qx
NDcyMDBCOTdBNzYgLyogU3RvcmFnZU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCMjYxNEUyMjdEMTRC
MTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyNjE0NTIyN0QxNDcwMDBCOTdBNzYgLyogTG9j
YWxTdG9yYWdlRGF0YWJhc2UuaCAqLzsgfTsKQEAgLTUzMDUsNiArNTMwNiw3IEBACiAJCTkzQUI5
QjUyMjU3NTg5MTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlC
NTMyNTc1ODkxMjAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQjlCNTQyNTc1ODkxMjAwOThC
MTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNBRUMxNjAyNzhGOENEMjAwNjY2NjZGIC8qIFN0b3JhZ2VBcmVhTWFwSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYU1hcElk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzMyNkQ1QTcy
RTAwQUEyMUU0IC8qIFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBlcm1pc3Npb25Db250cm9sbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMEE2NzQyNkQ1QTcyRTAwQUEyMUU0IC8qIFdlYlBl
cm1pc3Npb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlBlcm1pc3Npb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
QjI2MTQ1MjI3RDE0NzAwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA2MSw2ICs3MDYzLDcgQEAKIAkJCQkxQUNFQ0QyMjE3
MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwICovLAogCQkJCTFBQ0VDRDIzMTcx
NjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5oICovLAogCQkJCTFBMzM0REVBMTZERThC
NjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLywKKwkJCQk5M0FFQzE2
MDI3OEY4Q0QyMDA2NjY2NkYgLyogU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmggKi8sCiAJCQkJ
NDY1RjRFMDUyMzBCMkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJMUExNzYzNTQxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcCAqLywKIAkJCQkxQTE3NjM1NTE2QjFENUQwMDBEODhGRDYgLyogU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaCAqLywKQEAgLTEzMjYzLDYgKzEzMjY2LDcgQEAKIAkJCQk5M0U3OTlEQzI3NjEyMTA4
MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQzMzA2
RjE2QjFEOTkxMDA0RjYwRTcgLyogU3RvcmFnZUFyZWFJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUNFQ0QyNTE3MTYyREIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTkzQUVDMTYxMjc4RjhDRDMwMDY2NjY2RiAvKiBTdG9yYWdlQXJlYU1hcElkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBT
dG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlDNzI3NjAy
NzQ2MDA3NDAwOEEgLyogU3RvcmFnZUFyZWFSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNCMjYxNEQyMjdEMTQ5RTAwQjk3QTc2IC8qIFN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAyMjcwYTUzYWY5YmE4YmY4MGQ3YzNi
M2RjZGM4Y2ViNTY1MTc2ZTMuLjhkM2I1N2JkMThkYzJlMDUzODRjY2YwOGQ3ZDljODkwN2NkMDRk
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzdG9yYWdlQXJlYU1hcCA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN0b3JhZ2VBcmVhTWFwKG1ha2VPYmplY3RJZGVudGlm
aWVyPFN0b3JhZ2VBcmVhSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkp
CisgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VBcmVhTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3RvcmFnZUFyZWFNYXAobWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFNYXBJZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHN0b3Jh
Z2VBcmVhTWFwLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCBmODE2Nzc1YTc5OTRhYjIyY2MyZmJjMjYwMDBlOWQyMmYyZmMyYzZhLi42ODk3MGVkNzA0
NTM3OTM5MGY1MjgxYjI3NjU4MTFhMjJjMDdlMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xMTg5LDggKzExODksMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpu
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKiBj
b25uZWMKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOwogICAgIEFTU0VS
VF9VTlVTRUQoY29ubmVjdGlvbiwgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPT0gY29ubmVj
dGlvbik7CiAKLSAgICBmb3IgKGF1dG8qIHN0b3JhZ2VBcmVhTWFwIDogY29weVRvVmVjdG9yKG1f
c3RvcmFnZUFyZWFNYXBzLnZhbHVlcygpKSkKLSAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpc2Nv
bm5lY3QoKTsKKyAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fc3RvcmFnZUFyZWFN
YXBzLmtleXMoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gbWFwID0gbV9zdG9yYWdlQXJlYU1hcHMu
Z2V0KGtleSkpCisgICAgICAgICAgICBtYXAtPmRpc2Nvbm5lY3QoKTsKKyAgICB9CiAKICAgICBm
b3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsKICAgICAgICAgYXV0byBpZGJD
b25uZWN0aW9uID0gcGFnZS0+Y29yZVBhZ2UoKS0+b3B0aW9uYWxJREJDb25uZWN0aW9uKCk7CkBA
IC0xNjk3LDIwICsxNjk5LDIwIEBAIHZvaWQgV2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3NN
ZW1vcnlDbGVhbnVwVGltZXJGaXJlZCgpCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTdG9y
YWdlQXJlYU1hcChTdG9yYWdlQXJlYU1hcCYgc3RvcmFnZUFyZWFNYXApCiB7Ci0gICAgQVNTRVJU
KHN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUKCFtX3N0b3JhZ2VBcmVh
TWFwcy5jb250YWlucygqc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpKSk7Ci0gICAgbV9zdG9y
YWdlQXJlYU1hcHMuc2V0KCpzdG9yYWdlQXJlYU1hcC5pZGVudGlmaWVyKCksICZzdG9yYWdlQXJl
YU1hcCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigp
OworICAgIEFTU0VSVCghbV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoaWRlbnRpZmllcikpOwor
ICAgIG1fc3RvcmFnZUFyZWFNYXBzLmFkZChpZGVudGlmaWVyLCBzdG9yYWdlQXJlYU1hcCk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzczo6dW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVh
TWFwJiBzdG9yYWdlQXJlYU1hcCkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZUFyZWFNYXAuaWRlbnRp
ZmllcigpKTsKLSAgICBBU1NFUlQobV9zdG9yYWdlQXJlYU1hcHMuY29udGFpbnMoKnN0b3JhZ2VB
cmVhTWFwLmlkZW50aWZpZXIoKSkpOwotICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5nZXQo
KnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSkgPT0gJnN0b3JhZ2VBcmVhTWFwKTsKLSAgICBt
X3N0b3JhZ2VBcmVhTWFwcy5yZW1vdmUoKnN0b3JhZ2VBcmVhTWFwLmlkZW50aWZpZXIoKSk7Cisg
ICAgYXV0byBpZGVudGlmaWVyID0gc3RvcmFnZUFyZWFNYXAuaWRlbnRpZmllcigpOworICAgIEFT
U0VSVChtX3N0b3JhZ2VBcmVhTWFwcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgQVNTRVJU
KG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVyKS5nZXQoKSA9PSAmc3RvcmFnZUFyZWFN
YXApOworICAgIG1fc3RvcmFnZUFyZWFNYXBzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAotU3Rv
cmFnZUFyZWFNYXAqIFdlYlByb2Nlc3M6OnN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VBcmVhSWRlbnRp
ZmllciBpZGVudGlmaWVyKSBjb25zdAorV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gV2ViUHJvY2Vz
czo6c3RvcmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWFNYXBzLmdldChpZGVudGlmaWVyKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDQ2OWEwYTVlMTkxZGNmNDcw
MTMyNzE2YjY3MmVkMWMyZTYxZjMxMTcuLmU4N2Q3MzNkNzZhZGVlMGNiOGJhZGI4N2Y1Y2E3NTVk
YTYyZDcwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzAsNyAr
MzAsNyBAQAogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyVHlw
ZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiU3RvcmFnZUFy
ZWFJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hlci5oIgpAQCAt
Mjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJTdG9yYWdlQXJlYU1h
cChTdG9yYWdlQXJlYU1hcCYpOwogICAgIHZvaWQgdW5yZWdpc3RlclN0b3JhZ2VBcmVhTWFwKFN0
b3JhZ2VBcmVhTWFwJik7Ci0gICAgU3RvcmFnZUFyZWFNYXAqIHN0b3JhZ2VBcmVhTWFwKFN0b3Jh
Z2VBcmVhSWRlbnRpZmllcikgY29uc3Q7CisgICAgV2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gc3Rv
cmFnZUFyZWFNYXAoU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyKSBjb25zdDsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVk
aXREYXRhKCkgY29uc3Q7CkBAIC03NDIsNyArNzQyLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoQ291
bnRlZFNldDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gbV9z
d1JlZ2lzdHJhdGlvbkNvdW50czsKICNlbmRpZgogCi0gICAgSGFzaE1hcDxTdG9yYWdlQXJlYUlk
ZW50aWZpZXIsIFN0b3JhZ2VBcmVhTWFwKj4gbV9zdG9yYWdlQXJlYU1hcHM7CisgICAgSGFzaE1h
cDxTdG9yYWdlQXJlYU1hcElkZW50aWZpZXIsIFdlYWtQdHI8U3RvcmFnZUFyZWFNYXA+PiBtX3N0
b3JhZ2VBcmVhTWFwczsKICAgICAKICAgICAvLyBQcmV3YXJtZWQgV2ViUHJvY2Vzc2VzIGRvIG5v
dCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklEIHlldCwgd2hpY2ggaXMgd2h5IHRoaXMgaXMg
YW4gb3B0aW9uYWwuCiAgICAgLy8gQnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nlc3MgZ2V0cyBhIFdl
YlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3Bw
CmluZGV4IGIxMmM1OGMwYWFkNjdlOTk1NzcwNmUyOWU2ZGU2NTY5ZWZlNjQ4NDYuLjFmOWI0MmNi
MTI3ZDZkYzAyOGE2ODA1OWUyNzEwMWZjNzk2OTQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMTEy
LDIwICsxMTIsMTAgQEAgc2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNVc2VkQnlD
YWNoZSgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgU3RvcmFnZUFyZWFJbXBsOjppbmNyZW1l
bnRBY2Nlc3NDb3VudCgpCit2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6cHJld2FybSgpCiB7Ci0gICAg
Ly8gU3RvcmFnZSBhY2Nlc3MgaXMgaGFuZGxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzLCBzbyB0
aGVyZSdzIG5vdGhpbmcgdG8gZG8gaGVyZS4KLX0KLQotdm9pZCBTdG9yYWdlQXJlYUltcGw6OmRl
Y3JlbWVudEFjY2Vzc0NvdW50KCkKLXsKLSAgICAvLyBTdG9yYWdlIGFjY2VzcyBpcyBoYW5kbGVk
IGluIHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNvIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBoZXJlLgot
fQotCi12b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCi17Ci0gICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IGlmIChtX3N0b3JhZ2VBcmVhTWFwKQorICAgICAgICBtX3N0b3JhZ2VBcmVhTWFwLT5jb25uZWN0
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCA3OWUxNGI5MWY4
YWM2ZDgyZmU3OTJhYzA2ZDM5NGVkNzY1ODQyYTYyLi5hMzVkNjY3OTI1MDVmMGMwM2U1OTA4NzAw
MWUwY2E0ZmRhN2E2Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNjEsOSArNjEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogICAgIFdlYkNv
cmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90
IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZTsKLSAgICB2b2lkIGluY3JlbWVudEFj
Y2Vzc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJld2FybSgpIGZpbmFsOwogCiAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
V2Vha1B0cjxTdG9yYWdlQXJlYU1hcD4gbV9zdG9yYWdlQXJlYU1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRl
eCAyY2Y3YTZkNGI2MDA1YzFkN2VjMjU2YmQ2Mzg4NzYyOTRlOWU0Y2YyLi5kZjRjMjZmMmFmZjMy
OTFkOTE5ZGVkNTNkZDc2MjdiNThmMjg5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC01MSwxNyArNTEs
MTkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU3Rv
cmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBzdG9yYWdl
TmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4p
Ci0gICAgOiBtX25hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlKQorICAgIDogbV9pZGVudGlmaWVy
KFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fbmFtZXNwYWNl
KHN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFdURk1vdmUoc2VjdXJp
dHlPcmlnaW4pKQogICAgICwgbV9xdW90YUluQnl0ZXMoc3RvcmFnZU5hbWVzcGFjZS5xdW90YUlu
Qnl0ZXMoKSkKICAgICAsIG1fdHlwZShzdG9yYWdlTmFtZXNwYWNlLnN0b3JhZ2VUeXBlKCkpCiB7
Ci0gICAgY29ubmVjdCgpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3Rv
cmFnZUFyZWFNYXAoKnRoaXMpOwogfQogCiBTdG9yYWdlQXJlYU1hcDo6flN0b3JhZ2VBcmVhTWFw
KCkKIHsKICAgICBkaXNjb25uZWN0KCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudW5y
ZWdpc3RlclN0b3JhZ2VBcmVhTWFwKCp0aGlzKTsKIH0KIAogdW5zaWduZWQgU3RvcmFnZUFyZWFN
YXA6Omxlbmd0aCgpCkBAIC05NSw4ICs5Nyw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnNldEl0
ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvCiAK
ICAgICBtX3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBpZiAobV9tYXBJRCkK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdl
cjo6U2V0SXRlbSgqbV9tYXBJRCwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRT
ZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkp
LCAwKTsKKyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbSgqbV9yZW1v
dGVBcmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVk
LCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAw
KTsKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdl
QXJlYU1hcDo6c2V0SXRlbSBmYWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBpbnZhbGlk
Iik7CiB9CkBAIC0xMTQsMjMgKzExNiwyMiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJ
dGVtKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzbwogCiAg
ICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgaWYgKG1fbWFwSUQpCi0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6
OlJlbW92ZUl0ZW0oKm1fbWFwSUQsIHNvdXJjZUFyZWEtPmlkZW50aWZpZXIoKSwgbV9jdXJyZW50
U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpLCAwKTsK
KyAgICBpZiAobV9yZW1vdGVBcmVhSWRlbnRpZmllcikKKyAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6UmVtb3ZlSXRlbSgqbV9yZW1vdGVB
cmVhSWRlbnRpZmllciwgc291cmNlQXJlYS0+aWRlbnRpZmllcigpLCBtX2N1cnJlbnRTZWVkLCBr
ZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDApOwogICAgIGVs
c2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VBcmVhTWFwOjpy
ZW1vdmVJdGVtIGZhaWxlZCBiZWNhdXNlIHN0b3JhZ2UgbWFwIElEIGlzIGludmFsaWQiKTsKIH0K
IAogdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXIoV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1l
LCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEpCiB7Ci0gICAgY29ubmVjdCgpOwotCisgICAg
Y29ubmVjdFN5bmMoKTsKICAgICByZXNldFZhbHVlcygpOwogCiAgICAgbV9oYXNQZW5kaW5nQ2xl
YXIgPSB0cnVlOwogICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPihtX3F1b3RhSW5C
eXRlcyk7CiAKLSAgICBpZiAobV9tYXBJRCkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Q2xlYXIoKm1fbWFwSUQsIHNvdXJjZUFyZWEt
PmlkZW50aWZpZXIoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpLnN0cmluZygpKSwgMCk7CisgICAgaWYgKG1fcmVtb3RlQXJlYUlkZW50aWZpZXIpCisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNs
ZWFyKCptX3JlbW90ZUFyZWFJZGVudGlmaWVyLCBzb3VyY2VBcmVhLT5pZGVudGlmaWVyKCksIG1f
Y3VycmVudFNlZWQsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSksIDAp
OwogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlN0b3JhZ2VB
cmVhTWFwOjpjbGVhciBmYWlsZWQgYmVjYXVzZSBzdG9yYWdlIG1hcCBJRCBpcyBpbnZhbGlkIik7
CiB9CkBAIC0xNTEsMjEgKzE1MiwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZXNldFZhbHVl
cygpCiAKIFN0b3JhZ2VNYXAmIFN0b3JhZ2VBcmVhTWFwOjplbnN1cmVNYXAoKQogewotICAgIGNv
bm5lY3QoKTsKKyAgICBjb25uZWN0U3luYygpOwogCi0gICAgaWYgKCFtX21hcCkgeworICAgIGlm
ICghbV9tYXApCiAgICAgICAgIG1fbWFwID0gbWFrZVVuaXF1ZTxTdG9yYWdlTWFwPihtX3F1b3Rh
SW5CeXRlcyk7CiAKLSAgICAgICAgaWYgKG1fbWFwSUQpIHsKLSAgICAgICAgICAgIC8vIFdlIG5l
ZWQgdG8gdXNlIGEgSVBDOjpVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlIHRvIHByZXZlbnQg
VUlQcm9jZXNzIGhhbmdzIGluIGNhc2Ugd2UgcmVjZWl2ZSBhIHN5bmNocm9ub3VzIElQQyBmcm9t
IHRoZSBVSVByb2Nlc3Mgd2hpbGUgd2UncmUgd2FpdGluZyBmb3IgYSByZXNwb25zZQotICAgICAg
ICAgICAgLy8gZnJvbSBvdXIgU3RvcmFnZU1hbmFnZXJTZXQ6OkdldFZhbHVlcygpIElQQy4gVGhp
cyBJUEMgbWF5IGJlIHZlcnkgc2xvdyBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGZldGNoIHRoZSB2
YWx1ZXMgZnJvbSBkaXNrIGFuZCB0aGVyZSBtYXkgYmUgYSBsb3Qgb2YgZGF0YS4KLSAgICAgICAg
ICAgIElQQzo6VW5ib3VuZGVkU3luY2hyb25vdXNJUENTY29wZSB1bmJvdW5kZWRTeW5jaHJvbm91
c0lQQ1Njb3BlOwotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzOwot
ICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OkdldFZhbHVlcygqbV9tYXBJRCksIE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNl
dDo6R2V0VmFsdWVzOjpSZXBseSh2YWx1ZXMpLCAwKTsKLSAgICAgICAgICAgIG1fbWFwLT5pbXBv
cnRJdGVtcyhXVEZNb3ZlKHZhbHVlcykpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTdG9yYWdlQXJlYU1hcDo6ZW5zdXJlTWFwIGZhaWxl
ZCB0byBsb2FkIGZyb20gbmV0d29yayBwcm9jZXNzIGJlY2F1c2Ugc3RvcmFnZSBtYXAgSUQgaXMg
aW52YWxpZCIpOwotICAgIH0KICAgICByZXR1cm4gKm1fbWFwOwogfQogCkBAIC0yNTksOCArMjUw
LDEyIEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmFwcGx5Q2hhbmdlKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQogICAgIG1fbWFwLT5zZXRJdGVtSWdub3JpbmdRdW90
YShrZXksIG5ld1ZhbHVlKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTdG9y
YWdlRXZlbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYg
c3RvcmFnZUFyZWFJbXBsSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3Zv
aWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4mIHN0b3JhZ2VBcmVhSW1wbElELCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1
ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQog
eworICAgIGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlm
aWVyID0gbWVzc2FnZUlkZW50aWZpZXI7CiAgICAgaWYgKCFzdG9yYWdlQXJlYUltcGxJRCkgewog
ICAgICAgICAvLyBUaGlzIHN0b3JhZ2UgZXZlbnQgb3JpZ2luYXRlcyBmcm9tIGFub3RoZXIgcHJv
Y2VzcyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBjaGFuZ2UgdG8gb3VyIHN0b3JhZ2UgYXJlYSBt
YXAuCiAgICAgICAgIGFwcGx5Q2hhbmdlKGtleSwgbmV3VmFsdWUpOwpAQCAtMjcyLDggKzI2Nywx
MiBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6
Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZQogICAgICAgICBkaXNwYXRjaExvY2FsU3RvcmFn
ZUV2ZW50KHN0b3JhZ2VBcmVhSW1wbElELCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3Ry
aW5nKTsKIH0KIAotdm9pZCBTdG9yYWdlQXJlYU1hcDo6Y2xlYXJDYWNoZSgpCit2b2lkIFN0b3Jh
Z2VBcmVhTWFwOjpjbGVhckNhY2hlKHVpbnQ2NF90IG1lc3NhZ2VJZGVudGlmaWVyKQogeworICAg
IGlmIChtZXNzYWdlSWRlbnRpZmllciA8IG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyID0g
bWVzc2FnZUlkZW50aWZpZXI7CiAgICAgcmVzZXRWYWx1ZXMoKTsKIH0KIApAQCAtMzQ0LDQyICsz
NDMsNzkgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChj
b25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW0KICAgICBTdG9yYWdlRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVz
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLT5k
YXRhKCkpOwogfQogCit2b2lkIFN0b3JhZ2VBcmVhTWFwOjpzZW5kQ29ubmVjdE1lc3NhZ2UoU2Vu
ZE1vZGUgbW9kZSkKK3sKKyAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwor
ICAgIGF1dG8gbmFtZXNwYWNlSWRlbnRpZmllciA9IG1fbmFtZXNwYWNlLnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpOworICAgIGF1dG8gb3JpZ2luRGF0YSA9IG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKTsK
KyAgICBhdXRvIHRvcE9yaWdpbkRhdGEgPSBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdpbigpID8g
bV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKS0+ZGF0YSgpIDogb3JpZ2luRGF0YTsKKyAgICBh
dXRvIG9yaWdpbiA9IFdlYkNvcmU6OkNsaWVudE9yaWdpbiB7IHRvcE9yaWdpbkRhdGEsIG9yaWdp
bkRhdGEgfTsKKyAgICBhdXRvIHR5cGUgPSBtX3R5cGU7CisgICAgaWYgKCh0eXBlID09IFN0b3Jh
Z2VUeXBlOjpMb2NhbCB8fCB0eXBlID09IFN0b3JhZ2VUeXBlOjpUcmFuc2llbnRMb2NhbCkgJiYg
bV9uYW1lc3BhY2UudG9wTGV2ZWxPcmlnaW4oKSkKKyAgICAgICAgdHlwZSA9IFN0b3JhZ2VUeXBl
OjpUcmFuc2llbnRMb2NhbDsKKworICAgIGlmIChtb2RlID09IFNlbmRNb2RlOjpTeW5jKSB7Cisg
ICAgICAgIFN0b3JhZ2VBcmVhSWRlbnRpZmllciByZW1vdGVBcmVhSWRlbnRpZmllcjsKKyAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaXRlbXM7CisgICAgICAgIHVpbnQ2NF90IG1lc3Nh
Z2VJZGVudGlmaWVyOworICAgICAgICBpcGNDb25uZWN0aW9uLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYyh0eXBlLCBtX2lk
ZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiksIE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1N0b3JhZ2VBcmVhU3luYzo6UmVwbHkocmVtb3RlQXJl
YUlkZW50aWZpZXIsIGl0ZW1zLCBtZXNzYWdlSWRlbnRpZmllciksIDApOworICAgICAgICBkaWRD
b25uZWN0KHJlbW90ZUFyZWFJZGVudGlmaWVyLCBXVEZNb3ZlKGl0ZW1zKSwgbWVzc2FnZUlkZW50
aWZpZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjb21wbGV0aW9uSGFu
ZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB3ZWFrQ29ubmVjdGlv
biA9IFdlYWtQdHIgeyBpcGNDb25uZWN0aW9uIH1dKGF1dG8gcmVtb3RlQXJlYUlkZW50aWZpZXIs
IGF1dG8gaXRlbXMsIGF1dG8gbWVzc2FnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBp
ZiAod2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gZGlkQ29ubmVjdChyZW1vdGVBcmVhSWRl
bnRpZmllciwgV1RGTW92ZShpdGVtcyksIG1lc3NhZ2VJZGVudGlmaWVyKTsKKworICAgICAgICBp
ZiAod2Vha0Nvbm5lY3Rpb24gJiYgcmVtb3RlQXJlYUlkZW50aWZpZXIuaXNWYWxpZCgpKQorICAg
ICAgICAgICAgd2Vha0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFu
YWdlcjo6RGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShyZW1vdGVBcmVhSWRlbnRpZmllciksIDAp
OworICAgIH07CisKKyAgICBpcGNDb25uZWN0aW9uLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TdG9yYWdlQXJlYSh0eXBlLCBtX2lk
ZW50aWZpZXIsIG5hbWVzcGFjZUlkZW50aWZpZXIsIG9yaWdpbiksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwordm9pZCBTdG9yYWdlQXJlYU1hcDo6Y29ubmVjdFN5bmMoKQorewor
ICAgIGlmIChtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBz
ZW5kQ29ubmVjdE1lc3NhZ2UoU2VuZE1vZGU6OlN5bmMpOworfQorCiB2b2lkIFN0b3JhZ2VBcmVh
TWFwOjpjb25uZWN0KCkKIHsKLSAgICBpZiAobV9tYXBJRCkKKyAgICBpZiAobV9yZW1vdGVBcmVh
SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RvcmFnZUFyZWFJZGVudGlmaWVy
IG1hcElEOwotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6TG9j
YWw6Ci0gICAgY2FzZSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWw6Ci0gICAgICAgIGlmIChT
ZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4gPSBtX25hbWVzcGFjZS50b3BMZXZlbE9yaWdp
bigpKQotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
U3RvcmFnZU1hbmFnZXI6OkNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEobV9uYW1l
c3BhY2Uuc3RvcmFnZU5hbWVzcGFjZUlEKCksIHRvcExldmVsT3JpZ2luLT5kYXRhKCksIG1fc2Vj
dXJpdHlPcmlnaW4tPmRhdGEoKSksIE1lc3NhZ2VzOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OkNv
bm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWE6OlJlcGx5KG1hcElEKSwgMCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNl
LnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdl
czo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhOjpSZXBs
eShtYXBJRCksIDApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0b3JhZ2VUeXBlOjpTZXNz
aW9uOgotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6Q29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKG1fbmFtZXNwYWNlLnN0b3Jh
Z2VOYW1lc3BhY2VJRCgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpLCBNZXNzYWdlczo6TmV0
d29ya1N0b3JhZ2VNYW5hZ2VyOjpDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWE6OlJlcGx5KG1h
cElEKSwgMCk7Ci0gICAgfQorICAgIHNlbmRDb25uZWN0TWVzc2FnZShTZW5kTW9kZTo6QXN5bmMp
OworfQogCi0gICAgaWYgKG1hcElELmlzVmFsaWQoKSkgewotICAgICAgICBtX21hcElEID0gbWFw
SUQ7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU3RvcmFnZUFyZWFN
YXAoKnRoaXMpOwotICAgIH0KK3ZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpZENvbm5lY3QoU3RvcmFn
ZUFyZWFJZGVudGlmaWVyIHJlbW90ZUFyZWFJZGVudGlmaWVyLCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYmIGl0ZW1zLCB1aW50NjRfdCBtZXNzYWdlSWRlbnRpZmllcikKK3sKKyAgICBpZiAobWVz
c2FnZUlkZW50aWZpZXIgPCBtX2xhc3RIYW5kbGVkTWVzc2FnZUlkZW50aWZpZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fbGFzdEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IG1lc3NhZ2VJ
ZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlQXJlYUlkZW50aWZpZXIuaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3JlbW90ZUFyZWFJZGVudGlmaWVyID0gcmVtb3RlQXJlYUlk
ZW50aWZpZXI7CisgICAgbV9tYXAgPSBtYWtlVW5pcXVlPFN0b3JhZ2VNYXA+KG1fcXVvdGFJbkJ5
dGVzKTsKKyAgICBtX21hcC0+aW1wb3J0SXRlbXMoV1RGTW92ZShpdGVtcykpOwogfQogCiB2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpkaXNjb25uZWN0KCkKIHsKLSAgICBpZiAoIW1fbWFwSUQpCisgICAg
aWYgKCFtX3JlbW90ZUFyZWFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKICAgICByZXNl
dFZhbHVlcygpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJTdG9yYWdl
QXJlYU1hcCgqdGhpcyk7CiAKICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpEaXNjb25uZWN0RnJvbVN0b3JhZ2VB
cmVhKCptX21hcElEKSwgMCk7CisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6RGlzY29ubmVj
dEZyb21TdG9yYWdlQXJlYSgqbV9yZW1vdGVBcmVhSWRlbnRpZmllciksIDApOwogCi0gICAgbV9t
YXBJRCA9IHsgfTsKKyAgICBtX3JlbW90ZUFyZWFJZGVudGlmaWVyID0geyB9OworICAgIG1fbGFz
dEhhbmRsZWRNZXNzYWdlSWRlbnRpZmllciA9IDA7CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OmluY3JlbWVudFVzZUNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDA2ZTYzNTZjYjEzMzkyNjZiYTM0NTQ1
OTYyNTM4MDQ2N2I1ODBiMTcuLmM2MjcxZDlmNzllY2JhYzNlNGY4ZjhiODdmODdjYzA0ZWQzYmY4
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFNYXAuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhSW1wbElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcElkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC02Niw4ICs2
Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5n
ZXQoKTsgfQotICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVudGlmaWVyPiYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSUQ7IH0KKyAgICBTdG9yYWdlQXJlYU1h
cElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
CisgICAgdm9pZCBjb25uZWN0KCk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKICAgICB2b2lk
IGluY3JlbWVudFVzZUNvdW50KCk7CkBAIC03OCw4ICs4MCw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRSZW1vdmVJdGVtKHVpbnQ2NF90IG1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5KTsKICAg
ICB2b2lkIGRpZENsZWFyKHVpbnQ2NF90IG1hcFNlZWQpOwogCi0gICAgdm9pZCBkaXNwYXRjaFN0
b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+
JiBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
OwotICAgIHZvaWQgY2xlYXJDYWNoZSgpOworICAgIHZvaWQgZGlzcGF0Y2hTdG9yYWdlRXZlbnQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiYgc291cmNlU3Rv
cmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCB1aW50NjRfdCBt
ZXNzYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBjbGVhckNhY2hlKHVpbnQ2NF90IG1lc3NhZ2VJ
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVzZXRWYWx1ZXMoKTsKICAgICBXZWJDb3JlOjpTdG9y
YWdlTWFwJiBlbnN1cmVNYXAoKTsKQEAgLTkwLDEyICs5MiwxNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmFn
ZUFyZWFJbXBsSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBv
bGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
OwogICAgIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChjb25zdCBzdGQ6Om9wdGlvbmFs
PFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+JiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKTsKIAotICAgIHZvaWQgY29ubmVjdCgpOworICAgIGVudW0gY2xhc3MgU2VuZE1vZGUg
OiBib29sIHsgQXN5bmMsIFN5bmMgfTsKKyAgICB2b2lkIHNlbmRDb25uZWN0TWVzc2FnZShTZW5k
TW9kZSk7CisgICAgdm9pZCBjb25uZWN0U3luYygpOworICAgIHZvaWQgZGlkQ29ubmVjdChTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYsIHVpbnQ2NF90IG1l
c3NhZ2VJZGVudGlmaWVyKTsKIAorICAgIFN0b3JhZ2VBcmVhTWFwSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CisgICAgdWludDY0X3QgbV9sYXN0SGFuZGxlZE1lc3NhZ2VJZGVudGlmaWVyIHsgMCB9
OwogICAgIFN0b3JhZ2VOYW1lc3BhY2VJbXBsJiBtX25hbWVzcGFjZTsKICAgICBSZWY8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlN0b3JhZ2VNYXA+IG1fbWFwOwotICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFy
ZWFJZGVudGlmaWVyPiBtX21hcElEOworICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZUFyZWFJZGVu
dGlmaWVyPiBtX3JlbW90ZUFyZWFJZGVudGlmaWVyOwogICAgIEhhc2hDb3VudGVkU2V0PFN0cmlu
Zz4gbV9wZW5kaW5nVmFsdWVDaGFuZ2VzOwogICAgIHVpbnQ2NF90IG1fY3VycmVudFNlZWQgeyAw
IH07CiAgICAgdW5zaWduZWQgbV9xdW90YUluQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2Vz
LmluCmluZGV4IDJkMWE4MTNmY2I4NzU3YjE4NDI3NjI5MzgwNjk3ZmM3YmU5YmE5YjUuLjZkZWU4
ZThlMzVhYjViNjg4NjZmMjIwMGE3MDZhODI5MzdmZGJjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLm1l
c3NhZ2VzLmluCkBAIC0yNSw2ICsyNSw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VBcmVhTWFwIE5v
dFJlZkNvdW50ZWQgewogICAgIERpZFJlbW92ZUl0ZW0odWludDY0X3Qgc3RvcmFnZU1hcFNlZWQs
IFN0cmluZyBrZXkpCiAgICAgRGlkQ2xlYXIodWludDY0X3Qgc3RvcmFnZU1hcFNlZWQpCiAKLSAg
ICBEaXNwYXRjaFN0b3JhZ2VFdmVudChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJbXBsSUQsIFN0cmluZyBrZXksIFN0cmluZyBvbGRW
YWx1ZSwgU3RyaW5nIG5ld1ZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKQotICAgIENsZWFyQ2FjaGUo
KQorICAgIERpc3BhdGNoU3RvcmFnZUV2ZW50KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpTdG9yYWdl
QXJlYUltcGxJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUltcGxJRCwgU3RyaW5nIGtleSwgU3RyaW5n
IG9sZFZhbHVlLCBTdHJpbmcgbmV3VmFsdWUsIFN0cmluZyB1cmxTdHJpbmcsIHVpbnQ2NF90IG1l
c3NhZ2VJZGVudGlmaWVyKQorICAgIENsZWFyQ2FjaGUodWludDY0X3QgbWVzc2FnZUlkZW50aWZp
ZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5MjIxMDg5Njhm
MzU5OGZkMjAxYWFhY2FmMGVjMDM3NWM0NmVmOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcElkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBTdG9y
YWdlQXJlYU1hcElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFN0b3JhZ2VBcmVhTWFwSWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8U3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyVHlwZT47CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>