<?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>194594</bug_id>
          
          <creation_ts>2019-02-13 08:53:42 -0800</creation_ts>
          <short_desc>[PSON] Introduce a WebContent Process cache</short_desc>
          <delta_ts>2019-02-15 01:11:06 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=194695</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1505730</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-13 08:53:42 -0800</bug_when>
    <thetext>Introduce a WebContent Process cache to avoid launching new processes too frequently and reduce the power impact of PSON.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505731</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-13 08:54:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/46793397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505907</commentid>
    <comment_count>2</comment_count>
      <attachid>361952</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-13 16:02:23 -0800</bug_when>
    <thetext>Created attachment 361952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505910</commentid>
    <comment_count>3</comment_count>
      <attachid>361953</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-13 16:06:16 -0800</bug_when>
    <thetext>Created attachment 361953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506023</commentid>
    <comment_count>4</comment_count>
      <attachid>361986</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-13 19:49:23 -0800</bug_when>
    <thetext>Created attachment 361986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506046</commentid>
    <comment_count>5</comment_count>
      <attachid>361986</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-13 21:35:21 -0800</bug_when>
    <thetext>Comment on attachment 361986
Patch

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

r=me

&gt; Source/WebKit/UIProcess/WebProcessCache.cpp:121
&gt; +void WebProcessCache::setApplicationIsActive(bool value)

value =&gt; isActive

&gt; Source/WebKit/UIProcess/WebProcessCache.h:48
&gt; +    unsigned maximumSize() { return m_maximumSize; }

We usually call this capacity.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1337
&gt;  void WebProcessPool::handleMemoryPressureWarning(Critical)
&gt;  {
&gt; +    RELEASE_LOG(PerformanceLogging, &quot;%p - WebProcessPool::handleMemoryPressureWarning&quot;, this);
&gt; +
&gt; +    m_webProcessCache-&gt;clear();

Does the process suspension code run the low memory warning in the web process?

Relatedly, maybe the web process should listen to the low memory warning, in case it gets the warning before the UI process does.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2301
&gt; +    // FIXME: If the SuspendedPage is for this page, then we need to destroy the suspended page as we do not support having
&gt; +    // multiple WebPages with the same ID in a given WebProcess currently (https://bugs.webkit.org/show_bug.cgi?id=191166).
&gt; +    if (&amp;(*it)-&gt;page() == &amp;page)
&gt; +        m_suspendedPages.remove(it);
&gt;  

Do we need the same check when we retrieve a process from the web process cache?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506131</commentid>
    <comment_count>6</comment_count>
      <attachid>361986</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-14 06:33:26 -0800</bug_when>
    <thetext>Comment on attachment 361986
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1337
&gt;&gt; +    m_webProcessCache-&gt;clear();
&gt; 
&gt; Does the process suspension code run the low memory warning in the web process?
&gt; 
&gt; Relatedly, maybe the web process should listen to the low memory warning, in case it gets the warning before the UI process does.

The processes suspension code does simulate a memory warning in the WebProcress on iOS. There is no process suspension on macOS and this cache will be macOS only I believe.

It is a good point that the WebProcess’s memory pressure handler should likely cause the process the exit if it is in the cache. I will look into this.

&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2301
&gt;&gt;  
&gt; 
&gt; Do we need the same check when we retrieve a process from the web process cache?

No, processes in the cache cannot have any pages or suspended pages, they only enter the cache when they are about to exit because they are no longer used for anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506143</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-14 07:44:57 -0800</bug_when>
    <thetext>Yeah, I think the cache should be mac only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506146</commentid>
    <comment_count>8</comment_count>
      <attachid>361986</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-14 07:53:34 -0800</bug_when>
    <thetext>Comment on attachment 361986
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebProcessCache.cpp:121
&gt;&gt; +void WebProcessCache::setApplicationIsActive(bool value)
&gt; 
&gt; value =&gt; isActive

Ok

&gt;&gt; Source/WebKit/UIProcess/WebProcessCache.h:48
&gt;&gt; +    unsigned maximumSize() { return m_maximumSize; }
&gt; 
&gt; We usually call this capacity.

Ok but for the record I prefer maximumSize because I feel it is clearer. Vector has the concept of capacity and it has nothing to do with maximum size.

&gt;&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1337
&gt;&gt;&gt; +    m_webProcessCache-&gt;clear();
&gt;&gt; 
&gt;&gt; Does the process suspension code run the low memory warning in the web process?
&gt;&gt; 
&gt;&gt; Relatedly, maybe the web process should listen to the low memory warning, in case it gets the warning before the UI process does.
&gt; 
&gt; The processes suspension code does simulate a memory warning in the WebProcress on iOS. There is no process suspension on macOS and this cache will be macOS only I believe.
&gt; 
&gt; It is a good point that the WebProcess’s memory pressure handler should likely cause the process the exit if it is in the cache. I will look into this.

Note that we could simulate a memory pressure warning when entering the cache to try and slim the process as much as possible. However, doing so could impact performance as some valuable caches would be gone when trying to reuse the process. This could impact power and PLT. For this reason, I have not implemented it in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506168</commentid>
    <comment_count>9</comment_count>
      <attachid>362022</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-14 09:04:20 -0800</bug_when>
    <thetext>Created attachment 362022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506185</commentid>
    <comment_count>10</comment_count>
      <attachid>362022</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-02-14 09:21:35 -0800</bug_when>
    <thetext>Comment on attachment 362022
Patch

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506186</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-14 09:22:00 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #10)
&gt; Comment on attachment 362022 [details]
&gt; Patch
&gt; 
&gt; 👍

Thanks for looking as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506187</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-14 09:22:25 -0800</bug_when>
    <thetext>I will try and figure out why the GTK bot is unhappy now :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506189</commentid>
    <comment_count>13</comment_count>
      <attachid>362026</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-02-14 09:24:19 -0800</bug_when>
    <thetext>Created attachment 362026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506254</commentid>
    <comment_count>14</comment_count>
      <attachid>362026</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-14 11:06:18 -0800</bug_when>
    <thetext>Comment on attachment 362026
Patch

Clearing flags on attachment: 362026

Committed r241556: &lt;https://trac.webkit.org/changeset/241556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506255</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-14 11:06:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506262</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-14 11:16:47 -0800</bug_when>
    <thetext>Probably the right move is to land without the pressure warning when entering the cache, and then separately a/b test a change to add a pressure warning. 

It’s a good point that a cache’s capacity limits its size, whereas a vector’s capacity does not. One thing that was unclear to me about “maximum size” was that I first read it as “the maximum size I have ever been” rather than “the maximum size I am allowed to reach”. STL vectors have a max size — but that means the max size that any vector could be, and it’s not adjustable for a given vector. I do think people often refer to caches as having a capacity. e.g. http://kb.mozillazine.org/Browser.cache.memory.capacity. I’ve gotten used to size as “how many elements I have” and capacity as “how many elements I could have before triggering some action (grow, evict, ring buffer, crash, whatever)”. Maybe we should circulate with other folks and see what the communal preference is.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361952</attachid>
            <date>2019-02-13 16:02:23 -0800</date>
            <delta_ts>2019-02-13 16:06:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194594-20190213160222.patch</filename>
            <type>text/plain</type>
            <size>108900</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk5ZjQ4MWQxMjA4M2Zm
ZGI5MjAyNDEwYzMzOWIyNmQ4ZDFkYmM2NC4uM2ZlYWI1ZGU3ODhkYTMxZjc4NGMwOWQ0NDAxYjZk
ZDY0NTE3MmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAyLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIEludHJvZHVjZSBh
IFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc5MzM5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgbG9jYWxpemFibGUgc3RyaW5ncy4KKworICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisKIDIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgbG9jYWxpemFibGUgc3RyaW5ncy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYzczZmQ3ZWYzYWRiYTI4MmRhZmM2OGRkMzhmMDJlMTdiZjg0MWIyNS4uZDQ5YWJiZmQ4
MzY3MzU1ZmQ3NmFiMzJiM2FlNDVlOTM1OTQzMGQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYg
QEAKKzIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBbUFNPTl0gSW50cm9kdWNlIGEgV2ViQ29udGVudCBQcm9jZXNzIGNhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ1OTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ2NzkzMzk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZSB0byBy
ZWR1Y2UgdGhlIG51bWJlciBvZiBwcm9jZXNzIGxhdW5jaGVzIHdoZW4KKyAgICAgICAgcHJvY2Vz
cyBzd2FwIG9uIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwgYW5kIHRvIHJlZHVjZSB0aGUgcG93ZXIg
Y29zdCBvZiB0aGUgZmVhdHVyZS4KKworICAgICAgICBJZiBhIFdlYlByb2Nlc3MgbG9hZGVkIHBh
Z2VzIGZyb20gYSBzaW5nbGUgcmVnaXN0cmFibGUgZG9tYWluIHRoZW4gaXQgaXMgZWxpZ2libGUK
KyAgICAgICAgZm9yIHRoZSBjYWNoZS4gV2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIG5hdmlnYXRp
b24gdG8gYSBuZXcgcmVnaXN0cmFibGUgZG9tYWluLCB3ZQorICAgICAgICBub3cgYXR0ZW1wdCB0
byByZXRyaWV2ZSBhIHByb2Nlc3MgZnJvbSB0aGUgY2FjaGUgZm9yIHRoZSBkb21haW4gaW4gcXVl
c3Rpb24gaW5zdGVhZAorICAgICAgICBvZiBhbHdheXMgbGF1bmNoaW5nIGEgbmV3IG9uZS4KKwor
ICAgICAgICBUaGUgV2ViUHJvY2VzcyBjYWNoZSBjdXJyZW50bHkgaGFzIHRoZSBmb2xsb3dpbmcg
YXR0cmlidXRlczoKKyAgICAgICAgLSBJdCBtYXkgY29udGFpbnMgNCBwcm9jZXNzZXMgcGVyIEdC
IG9mIFJBTSB0aGUgbWFjaGluZSBoYXMsIHVwIHRvIDMwIHByb2Nlc3Nlcy4KKyAgICAgICAgLSBX
ZWJQcm9jZXNzZXMgYXV0b21hdGljYWxseSBnZXQgZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBhZnRl
ciAzMCBtaW51dGVzLgorICAgICAgICAtIElmIHRoZSBhcHBsaWNhdGlvbiBpcyBubyBsb25nZXIg
dGhlIGFjdGl2ZSBhcHAsIHRoZW4gdGhlIGNhY2hlIHdpbGwgZ2V0IGNsZWFyZWQKKyAgICAgICAg
ICBhZnRlciA1IG1pbnV0ZXMuCisgICAgICAgIC0gV2ViUHJvY2Vzc2VzIHRoYXQgYXJlIGluIHRo
ZSBjYWNoZSBhcmUgcmVwb3J0ZWQgYXMgIihDYWNoZWQpIiBpbiBBY3Rpdml0eSBNb25pdG9yLgor
CisgICAgICAgIFRoZSBXZWJQcm9jZXNzIGNhY2hlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBk
ZWZhdWx0IGFuZCBjYW4gYnkgZW5hYmxlZCBieSB0aGUKKyAgICAgICAgY2xpZW50IHZpYSBTUEku
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0p
OgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Omxhc3RQcm9jZXNzSWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldExhc3RQcm9j
ZXNzSWRlbnRpZmllcik6CisgICAgICAgIEFkZCBuZXcgbGFzdFByb2Nlc3NJZGVudGlmaWVyIGRh
dGEgbWVtYmVyIHRoYXQgcmVmbGVjdHMgd2hpY2ggcHJvY2VzcyB0aGlzIGl0ZW0KKyAgICAgICAg
d2FzIGxhc3QgbG9hZGVkIGluLiBJdCBpcyBub3JtYWxseSBpZGVudGljYWwgdG8gdGhlIGlkZW50
aWZpZXIgb2YgdGhlIHByb2Nlc3MKKyAgICAgICAgdGhhdCBjcmVhdGVkIHRoZSBpdGVtIGJ1dCBp
dCBnZXRzIG92ZXJyaWRlbiBpbiBjYXNlIG9mIGNyb3NzLXNpdGUgY2xpZW50LXNpZGUKKyAgICAg
ICAgcmVkaXJlY3QsIHNpbmNlIGEgbmV3IHByb2Nlc3MgdGFrZXMgb3ZlciB0aGUgaXRlbSBpbiB0
aGlzIGNhc2UuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBzb3Vy
Y2UgZmlsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNw
cDoKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKToK
KyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VzV2ViUHJvY2Vzc0NhY2hlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRVc2Vz
V2ViUHJvY2Vzc0NhY2hlOl0pOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gdXNlc1dlYlByb2Nlc3NDYWNoZV0pOgorICAgICAgICBBZGQgbmV3IFNQSSB0byBlbmFibGUg
dGhlIFdlYlByb2Nlc3MgY2FjaGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3Vu
dElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICBBZGQgbmV3IFNQSSBmb3IgdGVz
dGluZyB3aGljaCByZXR1cm5zIHRoZSBudW1iZXIgb2YgV2ViUHJvY2Vzc2VzIGlnbm9yaW5nCisg
ICAgICAgIGJvdGggcHJld2FybWVkIGFuZCBjYWNoZWQgb25lcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6Cisg
ICAgICAgIEFkZCBhcHBsaWNhdGlvbiBhY3RpdmUgc3RhdGUgb2JzZXJ2ZXJzIGFzIHRoZSBXZWJQ
cm9jZXNzIGNhY2hlIGdldHMgY2xlYXJlZAorICAgICAgICB3aGVuIHRoZSBhcHBsaWNhdGlvbiBy
ZXNpZ25zIGFjdGl2ZSBzdGF0ZSBmb3IgbW9yZSB0aGFuIDUgbWludXRlcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIFdoZW4gZG9pbmcgYSBs
b2FkIGluIGEgbmV3IHByb2Nlc3Mgd2l0aCB0aGUgQmFja0ZvcndhcmRMaXN0IGxvY2tlZCAoaS5l
LiBjbGllbnQtc2lkZQorICAgICAgICByZWRpcmVjdCksIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhl
IGxhc3QgcHJvY2VzcyBpZGVudGlmaWVyIGZvciB0aGUgQmFja0ZvcndhcmRMaXN0SXRlbS4KKyAg
ICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgbG9naWMgaW4gV2ViUHJvY2Vzc1Bv
b2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCkgcmVsaWVzIG9uCisgICAgICAgIHRoaXMgaWRlbnRp
ZmllciB0byBzZWxlY3Qgd2hpY2ggcHJvY2VzcyB0byBkbyB0aGUgaGlzdG9yeSBuYXZpZ2F0aW9u
IGludG8sIGFuZCB3ZSB3YW50CisgICAgICAgIHRvIGRvIHRoZSBsb2FkIGluIHRoZSBwb3N0LXJl
ZGlyZWN0IHByb2Nlc3MsIG5vdCB0aGUgcHJlLXJlZGlyZWN0IG9uZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICBUZWxsIHRo
ZSBXZWJQcm9jZXNzIHdoZW5ldmVyIGEgbWFpbiBmcmFtZSBwcm92aXNpb25hbCBsb2FkIGlzIHN0
YXJ0ZWQsIHByb3ZpZGluZyB0aGUgVVJMLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6Oldl
YlByb2Nlc3NDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZU1heGltdW1TaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OmV2
aWN0aW9uVGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjptYXhpbXVtU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6c2l6ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6cHJvY2Vzcyk6CisgICAg
ICAgIEFkZCBwcm9jZXNzIGNhY2hlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV93ZWJQcm9jZXNzQ2Fj
aGUpOgorICAgICAgICBXZWJQcm9jZXNzQ2FjaGUgaXMgc3RvcmVkIG9uIHRoZSBXZWJQcm9jZXNz
UG9vbCB2aWEgbV93ZWJQcm9jZXNzQ2FjaGUgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIENsZWFyIHRoZSBX
ZWJQcm9jZXNzIGNhY2hlIGluIHRoZSBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZXRBcHBsaWNhdGlvbklzQWN0aXZlKToKKyAgICAgICAgTm90aWZ5IHRo
ZSBXZWJQcm9jZXNzQ2FjaGUgd2hlbmV2ZXIgdGhlIGFwcGxpY2F0aW9uJ3MgYWN0aXZlIHN0YXRl
IGNoYW5nZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBh
Z2UpOgorICAgICAgICBJZiB0aGUgc3RhdGUgb2YgUFNPTiBjaGFuZ2VzIHZpYSB0aGUgZXhwZXJp
bWVudGFsIGZlYXR1cmVzIG1lbnUsIGR5bmFtaWNhbGx5CisgICAgICAgIHVwZGF0ZSB0aGUgV2Vi
UHJvY2Vzc0NhY2hlJ3Mgc2l6ZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgY2FjaGUgaXMg
ZGlzYWJsZWQKKyAgICAgICAgd2hlbiBQU09OIGlzIGRpc2FibGVkLgorCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmcpOgorICAgICAg
ICBDbGVhciB0aGUgV2ViUHJvY2VzcyBjYWNoZSBvbiBtZW1vcnkgcHJlc3N1cmUuCisKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwp
OgorICAgICAgICBRdWVyeSB0aGUgV2ViUHJvY2Vzc0NhY2hlIGJlZm9yZSBhdHRlbXB0aW5nIHRv
IGNyZWF0ZSBhIG5ldyBXZWJQcm9jZXNzIGZvciBhIGNyb3NzLXNpdGUKKyAgICAgICAgbmF2aWdh
dGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZmluZFJldXNhYmxlU3Vz
cGVuZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICBUaGlzIGxvZ2ljIHdhcyBzcGxpdCBvdXQgb2Yg
cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCgpIHRvIHJlZHVjZSB0aGUgc2l6ZQorICAgICAg
ICBvZiB0aGUgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZSk6CisgICAgICAgIFVwZGF0
ZSB0aGUgaXNJblByb2Nlc3NDYWNoZSBmbGFnIG9uIHRoZSBXZWJQcm9jZXNzUHJveHkgYW5kIHNl
bmQgYW4gSVBDIHRvIHRoZSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3Mgc28gdGhhdCBpdCBj
YW4gdXBkYXRlIGl0cyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3IuCisgICAgICAgIFdlIGFsc28g
bmVlZCB0byBzdG9wIGhvbGRpbmcgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBXZWJQcm9jZXNz
UG9vbCB3aGVuZXZlciB0aGUgcHJvY2VzcworICAgICAgICBpcyBpbiB0aGUgY2FjaGUsIHNpbWls
YXJseSB0byB3aGF0IHdlIGRvIGZvciBwcmUtd2FybWVkIHByb2Nlc3NlcywgZ2l2ZW4gdGhhdCBz
dWNoIHByb2Nlc3NlcworICAgICAgICBzaG91bGQgbm90IGtlZXAgdGhlIHByb2Nlc3MgcG9vbCBh
bGl2ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2Vi
UGFnZSk6CisgICAgICAgIEFzc2VydCB0aGF0IHdlIG5ldmVyIHRyeSB0byBhZGQgYSBwYWdlIHRv
IGEgY2FjaGVkIHByb2Nlc3MsIGl0IHNob3VsZCBiZSB0YWtlbiBvdXQgb2YgdGhlCisgICAgICAg
IGNhY2hlIGJlZm9yZSB1c2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpo
YXNQcm92aXNpb25hbFBhZ2VXaXRoSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0pOgorICAg
ICAgICBJbiBjYXNlIG9mIGNsaWVudC1zaWRlIHJlZGlyZWN0cywgdGhlIHByZXZpb3VzIHByb2Nl
c3Mgd291bGQgc29tZXRpbWVzIHNlbmQgYW4gSVBDIGNhdXNpbmcKKyAgICAgICAgdGhlIFVJUHJv
Y2VzcycgYmFja2ZvcndhcmQgbGlzdCBpdGVtIHRvIGdldCB1cGRhdGVkIHdpdGggdGhlIHByZS1y
ZWRpcmVjdCBVUkwgYWZ0ZXIgd2UndmUKKyAgICAgICAgYWxyZWFkeSByZWRpcmVjdGVkLiBUaGlz
IHByZXZpb3VzbHkgd291bGQgYmUgdW5saWtlbHkgdG8gb2NjdXIgYmVjYXVzZSB3ZSBkbyBub3Qg
c3VzcGVuZAorICAgICAgICBjbGllbnQtcmVkaXJlY3QgcGFnZXMgYW5kIHRoZWlyIHByb2Nlc3Mg
d291bGQgbm9ybWFsbHkgZXhpdCBiZWZvcmUgZ2V0dGluZyBhIGNoYW5jZSB0byBzZW5kCisgICAg
ICAgIHRoZSBJUEMuIEhvd2V2ZXIsIHdpdGggdGhlIHByb2Nlc3MgY2FjaGUsIHRoZSBidWcgYmVj
YW1lIG9idmlvdXMgYXMgdGhlIHByb2Nlc3Mgd291bGQgc3RheQorICAgICAgICBhbGl2ZSBhbmQg
c2VuZCB1cCB0aGUgImJhZCIgSVBDLiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ugbm93IG9ubHkg
bGV0IHRoZSBJUEMgdXBkYXRlIHRoZQorICAgICAgICBpdGVtIGlmIHRoZSBpdGVtJ3MgcGFnZSBp
cyAoc3RpbGwpIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvY2Vzcy4gSW4gdGhlIGZ1dHVyZSwgd2Ug
bWF5IHdhbnQKKyAgICAgICAgdG8gdXBkYXRlIHRoZSBJUEMgc28gdGhhdCBpdCBnZXRzIHNlbnQg
dG8gdGhlIFdlYlBhZ2VQcm94eSBpbnN0ZWFkIG9mIHRoZSBXZWJQcm9jZXNzUHJveHkuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWls
ZWRUb0xhdW5jaCk6CisgICAgICAgIElmIGEgY2FjaGVkIFdlYlByb2Nlc3MgY3Jhc2hlcywgcmVt
b3ZlIGl0IGZyb20gdGhlIGNhY2hlIHNvIHRoYXQgd2UgZG8gbm90IGF0dGVtcHQgdG8gdXNlCisg
ICAgICAgIGl0IGZvciBhIGxvYWQgbGF0ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUgY29uc3QpOgorICAgICAgICBPbmx5
IGNhY2hlIFdlYlByb2Nlc3NlcyB0aGF0IGhhdmUgbG9hZGVkIGEgc2luZ2xlIHJlZ2lzdHJhYmxl
IGRvbWFpbi4gQWxzbyBwcmV2ZW50IGNhY2hpbmcKKyAgICAgICAgZm9yIHNlcnZpY2Ugd29ya2Vy
IGFuZCBpbnNwZWN0b3IgcHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6bWF5YmVTaHV0RG93bik6CisgICAgICAgIElmIHRoZSBwcm9jZXNzIGlzIGNhY2hlYWJs
ZSwgYWRkIGl0IHRvIHRoZSBjYWNoZSBpbnN0ZWFkIG9mIHNodXR0aW5nIGl0IGRvd24gcmlnaHQg
YXdheS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUF1
eGlsaWFyeVByb2Nlc3MpOgorICAgICAgICBNYWtlIHN1cmUgd2UgZG8gbm90IGF0dGVtcHQgdG8g
dGVybWluYXRlIGEgcHJvY2Vzc2VzIHRoYXQgaXMgaW4gdGhlIGNhY2hlLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJh
bWUpOgorICAgICAgICBXaGVuZXZlciBhIG1haW4gZnJhbWUgcHJvdmlzaW9uYWwgbG9hZCBzdGFy
dHMsIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHByb2Nlc3MncyBhc3NvY2lhdGVkCisgICAgICAg
IHJlZ2lzdHJhYmxlIGRvbWFpbi4gbnVsbG9wdCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBh
c3NvY2lhdGVkIGRvbWFpbiB5ZXQuIE51bGwgc3RyaW5nCisgICAgICAgIGluZGljYXRlcyB0aGF0
IHRoZSBwcm9jZXNzIGlzIGFzc29jaWF0ZWQgd2l0aCBzZXZlcmFsIHJlZ2lzdHJhYmxlIGRvbWFp
biBhbmQgaXMgdGhlcmVmb3JlCisgICAgICAgIG5vdCBlbGlnaWJsZSBmb3IgY2FjaGluZy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6aXNJblByb2Nlc3NDYWNoZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvdmlzaW9uYWxQYWdlQ291bnQgY29uc3QpOgorICAg
ICAgICBBZGQgY29udmVuaWVuY2UgZ2V0dGVycy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzIHRvIHByb2plY3QuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpzZXRJc0luUHJvY2Vzc0NhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKToKKyAgICAgICAgVXBkYXRl
IHRoZSBXZWJQcm9jZXNzJyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3Igd2hlbmV2ZXIgaXQgZ29l
cyBpbnRvIG9yIG91dCBvZiB0aGUgV2ViUHJvY2VzcworICAgICAgICBjYWNoZS4KKwogMjAxOS0w
Mi0xMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bmNyeXB0ZWQgUERGcyBpbnNpZGUgPGVtYmVkPiBvciA8b2JqZWN0PiBjcmFzaCB0aGUgV2ViIENv
bnRlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmlu
Z3MKaW5kZXggZmJlMjk5ZWUyYTI0YTIzYjc1M2IxMjYwN2NlZDI1NmQwZWQxYzBlYS4uZjE0NDE5
MTgzNWMzOTBjMjFkZTViZGYxYzk2NWI2YjFhOTVhYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9l
bi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00Niw2ICs0Niw5IEBACiAvKiBWaXNpYmxl
IG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9u
IG5hbWUuICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogVmlz
aWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNh
dGlvbiBuYW1lLiAqLworIiVAIFdlYiBDb250ZW50IChDYWNoZWQpIiA9ICIlQCBXZWIgQ29udGVu
dCAoQ2FjaGVkKSI7CisKIC8qIFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBh
cmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCAoUHJl
d2FybWVkKSIgPSAiJUAgV2ViIENvbnRlbnQgKFByZXdhcm1lZCkiOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDAzYjQzZjFjOTdi
MWViODdkZGMwZjQ0MTUzZWM4MjhmNWNlNDQ0OTguLjlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdj
ZjRkODQyZGZmMzk2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwCkBAIC00Myw2ICs0Myw3IEBAIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0
CiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFn
ZUlEKQogICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUp
KQogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXIo
bV9pdGVtU3RhdGUuaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJl
c3VsdCA9IGFsbEl0ZW1zKCkuYWRkKG1faXRlbVN0YXRlLmlkZW50aWZpZXIsIHRoaXMpOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggYmZmMGM4ODIwNDFmNmE5
YWE4MzMyMTY2ZmQ3YjM3N2VjM2YxYjU4My4uODcyZWYxODA5NWQxOGNjM2E5YzVlNzQ2M2QzMGU3
ZjYxNDg3MmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaApAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiBpdGVtU3RhdGUoKSB7IHJldHVybiBtX2l0ZW1TdGF0ZTsgfQogICAgIHVp
bnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKKyAgICBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVu
dGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1f
bGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCiAgICAgdm9pZCBzZXRQYWdl
U3RhdGUoUGFnZVN0YXRlIHBhZ2VTdGF0ZSkgeyBtX2l0ZW1TdGF0ZS5wYWdlU3RhdGUgPSBXVEZN
b3ZlKHBhZ2VTdGF0ZSk7IH0KICAgICBjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXRlbVN0YXRlLnBhZ2VTdGF0ZTsgfQogCkBAIC04NCw2ICs4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAgICAg
dWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY2NzNmM2RmODE3NWI0N2U0ZDVkNzA0
NTk2MTA5ZGFiNWMyMzY4NWYuLjU5Y2VmODNhNTIzOWVlYTBjYTE5N2Y2OGNiMzcyMDY3Yjk3OWUw
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dApAQCAtMjc3LDYgKzI3Nyw3IEBAIFVJUHJvY2Vzcy9XZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuY3BwCiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAogVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAK
K1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAK
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXgg
ZDE3OTc4ZTVlNjQxMTAxMDhmOGYxMjBmNmRmMGRkY2MxMmI3ODQ4My4uMjNjZjAzNTE5ODk1Yjlk
MzhjNDJiYjA5OTQ0YjQ1NzI1YTY2NTlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEy
NCw2ICsxMjQsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBl
ZFByb2Nlc3NlcyA9IHRoaXMtPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczsK
ICAgICBjb3B5LT5tX3Byb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXIgPSB0aGlzLT5t
X3Byb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXI7CiAgICAgY29weS0+bV9pc0F1dG9t
YXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50ID0gdGhpcy0+bV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGNvcHktPm1fdXNlc1dlYlByb2Nlc3ND
YWNoZSA9IHRoaXMtPm1fdXNlc1dlYlByb2Nlc3NDYWNoZTsKICNpZiBFTkFCTEUoUFJPWElNSVRZ
X05FVFdPUktJTkcpCiAgICAgY29weS0+bV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyID0gdGhp
cy0+bV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
aW5kZXggZTNhNmE3NzI1NjliNjgzMDhhNTczMDAwNmJjMTk4MzdlOWJkNDYwOC4uYTAxNjYxMmM2
OWM3MzdlMjgwZDI4ODBiY2IxMTJmNjliZTg3YWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAt
NjcsNiArNjcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YXNBdXRvbWF0aWNQcm9jZXNzV2FybWlu
Z1NldEJ5Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gISFtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1p
bmdFbmFibGVkQnlDbGllbnQ7IH0KICAgICB2b2lkIHNldElzQXV0b21hdGljUHJvY2Vzc1dhcm1p
bmdFbmFibGVkKGJvb2wgdmFsdWUpIHsgbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxl
ZEJ5Q2xpZW50ID0gdmFsdWU7IH0KIAorICAgIHZvaWQgc2V0VXNlc1dlYlByb2Nlc3NDYWNoZShi
b29sIHZhbHVlKSB7IG1fdXNlc1dlYlByb2Nlc3NDYWNoZSA9IHZhbHVlOyB9CisgICAgYm9vbCB1
c2VzV2ViUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91c2VzV2ViUHJvY2Vzc0NhY2hl
OyB9CisKICAgICBib29sIGNsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJl
d2FybWluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRp
Y1Byb2Nlc3NQcmV3YXJtaW5nOyB9CiAgICAgdm9pZCBzZXRDbGllbnRXb3VsZEJlbmVmaXRGcm9t
QXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcoYm9vbCB2YWx1ZSkgeyBtX2NsaWVudFdvdWxkQmVu
ZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyA9IHZhbHVlOyB9CiAKQEAgLTIyMyw2
ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNLZWVwQW5kUmV1c2VTd2FwcGVk
UHJvY2Vzc2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVu
V2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGJvb2wgbV91c2VzV2ViUHJvY2Vzc0Nh
Y2hlIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRp
Y1Byb2Nlc3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKICAgICBXVEY6OlN0cmluZyBtX2N1c3RvbVdl
YkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsKICAgICBib29sIG1faXNKSVRFbmFibGVk
IHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAppbmRleCAzMzhjMGRkZDc2OTZjMzJkNWQ1
YzBhZTFkYTg2NWJmMzI1YzFiMzdlLi4xNzY1MzE0MmRmNjdmNGYzYmVlMjkxMjU0NjVlNDE4ZGU2
Njg3Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcApAQCAtMTg4LDYgKzE4OCwxNiBAQCB2b2lk
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRQcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHko
V0tDb250ZXh0Q29uZmlndXJhdAogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0SXNBdXRv
bWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWQocHJld2FybXMpOwogfQogCitib29sIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT51
c2VzV2ViUHJvY2Vzc0NhY2hlKCk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNl
dFVzZXNXZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0
aW9uLCBib29sIHVzZXMpCit7CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRVc2VzV2Vi
UHJvY2Vzc0NhY2hlKHVzZXMpOworfQorCiBib29sIFdLQ29udGV4dENvbmZpZ3VyYXRpb25BbHdh
eXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5hbHdh
eXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmgKaW5kZXgg
YWQzZTdhMTcyZjgwMzU0ZWNhOTgyNDAzYTQ5ZmE4ODUxNDJmZTU3NS4uOTM5ODVhZDgzN2ZjYTk2
YzNjOGIzZmQ5ZDY1ODI4OWM4NjdiMjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaApAQCAtNzgsNiAr
NzgsOSBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0UHJvY2Vzc1N3
YXBzT25OYXZpZ2F0aW9uKFdLQ29udGV4dENvbmZpZwogV0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0
Q29uZmlndXJhdGlvblByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29u
ZmlndXJhdGlvblNldFByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgcHJld2FybXMpOwogCitXS19FWFBPUlQg
Ym9vbCBXS0NvbnRleHRDb25maWd1cmF0aW9uVXNlc1dlYlByb2Nlc3NDYWNoZShXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
Q29uZmlndXJhdGlvblNldFVzZXNXZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uLCBib29sIHVzZXMpOworCiBXS19FWFBPUlQgYm9vbCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlcyhXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250
ZXh0Q29uZmlndXJhdGlvblNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBib29sIGtlZXBBbmRSZXVzZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KaW5kZXggMjk4YjQ0ZTJmMThmODY4ZDc5NDE4OTRkMmRhNzkzYWJkZGQxNjI2MS4uYzM0
NWNkOTgzMmQ1YzliYTE4YzE1YmU3ZWU0NWMwYTEzNjg1ZTUxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTM5LDYgKzM5
LDcgQEAKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2ltcG9ydCAi
V2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCIK
QEAgLTQ3NSw2ICs0NzYsMTEgQEAgLSAoc2l6ZV90KV93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1By
ZXdhcm1lZAogICAgIHJldHVybiBbc2VsZiBfd2ViUHJvY2Vzc0NvdW50XSAtIChbc2VsZiBfaGFz
UHJld2FybWVkV2ViUHJvY2Vzc10gPyAxIDogMCk7CiB9CiAKKy0gKHNpemVfdClfd2ViUHJvY2Vz
c0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX3dl
YlByb2Nlc3NDb3VudF0gLSAoW3NlbGYgX2hhc1ByZXdhcm1lZFdlYlByb2Nlc3NdID8gMSA6IDAp
IC0gX3Byb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5zaXplKCk7Cit9CisKIC0gKHNpemVf
dClfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnQKIHsKICAgICBhdXRvIGFsbFdlYlByb2Nlc3Nl
cyA9IF9wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDQ3MGRk
NTM5NGEyMTQwNzA0NmFlMmJhZTUzODdiNjY1OGViMmNiNmUuLjA3NWY3MTk3ZTk3Y2NjYTlhNDc1
ZWE4NDg2ODQ2ZWUxNzIyNmM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC05Niw2ICs5Niw3IEBA
CiAtIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MyksIGlvcygxMS4wKSk7CiAtIChCT09MKV9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoc2l6ZV90
KV93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xNCksIGlvcygxMi4wKSk7CistIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudElnbm9yaW5n
UHJld2FybWVkQW5kQ2FjaGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtIChzaXplX3QpX3NlcnZpY2VX
b3JrZXJQcm9jZXNzQ291bnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIu
MCkpOwogLSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
aW5kZXggZjY3MWQ3YjRjMmI4YmY5ODZiNmU0YTUwY2UwOTA5NTE3MjhjYTQzZC4uNDA1MDBkOTZh
MmRlNGRkMjExOTFhZDgzNzNkMWVhNmNjM2UxYjc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaApAQCAtNjcsNiArNjcsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEw
KSwgaW9zKDguMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbHdheXNLZWVwQW5kUmV1
c2VTd2FwcGVkUHJvY2Vzc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjE0KSwgaW9zKDEy
LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByb2Nlc3NTd2Fwc09uV2luZG93T3Bl
bldpdGhPcGVuZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwog
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlc1dlYlByb2Nlc3NDYWNoZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTQpLCBpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNK
SVRFbmFibGVkKSBCT09MIEpJVEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQpp
bmRleCA4YTM2NzgxOTg4ZWUwN2MyZTcwNTg5ZmJmYjM1N2UwZjExYTBlYTMyLi4wMWJmNmE1NDVk
OGZkNzc2MjllZDQ0MDIwOTQ2NTBiOGVmZmI0NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubW0KQEAgLTI1OCw2ICsyNTgsMTYgQEAgLSAoQk9PTClwcmV3YXJtc1Byb2Nlc3Nlc0F1
dG9tYXRpY2FsbHkKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+aXNBdXRv
bWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWQoKTsKIH0KIAorLSAodm9pZClzZXRVc2VzV2ViUHJv
Y2Vzc0NhY2hlOihCT09MKXZhbHVlCit7CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+
c2V0VXNlc1dlYlByb2Nlc3NDYWNoZSh2YWx1ZSk7Cit9CisKKy0gKEJPT0wpdXNlc1dlYlByb2Nl
c3NDYWNoZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT51c2VzV2Vi
UHJvY2Vzc0NhY2hlKCk7Cit9CisKIC0gKHZvaWQpc2V0QWx3YXlzS2VlcEFuZFJldXNlU3dhcHBl
ZFByb2Nlc3NlczooQk9PTClzd2FwcwogewogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24t
PnNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoc3dhcHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5k
ZXggNzBjOTFhNmExNDUxOGVlNTk2MmVhYTc4YmFhNzAwZDVmYWU2MTJjYS4uOTg3NDZjMzdjNTI0
Yzg3ODRiN2E2ZTgyNjY3NjY2NTE3NWY2ZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00MTgsNiArNDE4LDE0
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkK
ICAgICB9XTsKICNlbmRpZgogCisgICAgbV9hY3RpdmF0aW9uT2JzZXJ2ZXIgPSBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpbTlNPcGVy
YXRpb25RdWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90
aWZpY2F0aW9uKSB7CisgICAgICAgIHNldEFwcGxpY2F0aW9uSXNBY3RpdmUodHJ1ZSk7CisgICAg
fV07CisKKyAgICBtX2RlYWN0aXZhdGlvbk9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNBcHBsaWNhdGlvbkRpZFJlc2ln
bkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHAgcXVldWU6W05TT3BlcmF0aW9uUXVldWUg
Y3VycmVudFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikg
eworICAgICAgICBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGZhbHNlKTsKKyAgICB9XTsKKwogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC00MzMsNiArNDQxLDggQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCiAjaWYg
RU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zY3JvbGxlclN0eWxl
Tm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCldOwogI2VuZGlmCisgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2FjdGl2YXRpb25PYnNlcnZl
ci5nZXQoKV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1v
dmVPYnNlcnZlcjptX2RlYWN0aXZhdGlvbk9ic2VydmVyLmdldCgpXTsKICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGEzZjU3MTFiMDUxZWUxZjQ5NGUwZjdjYTdmYmU4
OTY1OWYxY2M0MzQuLmI2NmZmOWI0ZGQxZDA3ZjY2YWFhYTRhMTE5NmY5YTgzNGRmOTdjODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
QEAgLTE1NCw2ICsxNTQsMTIgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CiAKKyAgICAvLyBJZiB0aGlzIGlzIGEgY2xp
ZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBu
ZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2Fz
ZSwKKyAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9j
ZXNzSWRlbnRpZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tG
b3J3YXJkIGl0ZW0gdG8gaGFwcGVuIGluIHRoZQorICAgIC8vIG5ldyBwcm9jZXNzLgorICAgIGlm
IChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0
KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQorICAgICAgICBuYXZpZ2F0
aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpKTsKKwogICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVz
dCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGExM2Yy
YmI4MzE2MWU0ZjNhNmUwOWNkN2MxMGY1ODNkYmNkMDVmYS4uMTc0NTMxYTQzNDVmYjg1YmJkYzgw
ODlkNWZkOTNmN2UzNTc4MWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0zODM0LDYgKzM4MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAg
bV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24pOwog
CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIHByb2Nlc3MtPmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKHVybCk7CiAgICAgICAgIHJlcG9ydFBhZ2VM
b2FkUmVzdWx0KFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRp
b24gfSk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwog
ICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodHJhbnNhY3Rp
b24sIHVybCwgdW5yZWFjaGFibGVVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0YTRjNjIwY2Q2YTQ1YzBlYjAyYjQ4YWU0Njdm
ZDVjMzMxYTZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHAKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBTZWNvbmRzIGNhY2hl
ZFByb2Nlc3NMaWZldGltZSB7IDMwX21pbiB9Oworc3RhdGljIFNlY29uZHMgY2xlYXJpbmdEZWxh
eUFmdGVyQXBwbGljYXRpb25SZXNpZ25zQWN0aXZlIHsgNV9taW4gfTsKKworV2ViUHJvY2Vzc0Nh
Y2hlOjpXZWJQcm9jZXNzQ2FjaGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDog
bV9ldmljdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlByb2Nlc3NDYWNoZTo6
Y2xlYXIpCit7CisgICAgdXBkYXRlTWF4aW11bVNpemUocHJvY2Vzc1Bvb2wpOworfQorCitib29s
IFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzcyhjb25zdCBTdHJpbmcmIHJlZ2lzdHJhYmxlRG9t
YWluLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCit7CisgICAgQVNTRVJUKCFyZWdp
c3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cGFnZUNvdW50
KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cHJvdmlzaW9uYWxQYWdlQ291bnQoKSk7CisgICAg
QVNTRVJUKCFwcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmhhc1N1c3BlbmRlZFBhZ2VGb3IocHJvY2Vz
cykpOworCisgICAgaWYgKCFtYXhpbXVtU2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB3aGlsZSAobV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5zaXplKCkgPj0gbWF4
aW11bVNpemUoKSkgeworICAgICAgICBhdXRvIGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJs
ZURvbWFpbi5yYW5kb20oKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
JXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3MoKTogRXZpY3RpbmcgcHJvY2VzcyAlaSBm
cm9tIFdlYlByb2Nlc3MgY2FjaGUiLCB0aGlzLCBpdC0+dmFsdWUtPnByb2Nlc3MoKS5wcm9jZXNz
SWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5y
ZW1vdmUoaXQpOworICAgIH0KKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wcm9jZXNzZXNQZXJS
ZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtwcm9jZXNzID0gcHJv
Y2Vzcy5jb3B5UmVmKCldKCkgbXV0YWJsZSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZFByb2Nlc3M+KFdURk1vdmUocHJvY2VzcykpOworICAgIH0pOworICAgIGlmICgh
YWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNz
OiBBZGRpbmcgcHJvY2VzcyAlaSB0byBXZWJQcm9jZXNzIGNhY2hlLCBjYWNoZSBzaXplOiBbJXUg
LyAldV0iLCB0aGlzLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBzaXplKCksIG1heGlt
dW1TaXplKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFN0cmluZyYgcmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3sKKyAgICBhdXRvIGl0ID0gbV9w
cm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNp
dGVEYXRhU3RvcmUoKSAhPSAmZGF0YVN0b3JlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGF1dG8gcHJvY2VzcyA9IGl0LT52YWx1ZS0+dGFrZVByb2Nlc3MoKTsKKyAgICBtX3Byb2Nl
c3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShpdCk7CisgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzOiBUYWtpbmcg
cHJvY2VzcyAlaSBmcm9tIFdlYlByb2Nlc3MgY2FjaGUsIGNhY2hlIHNpemU6IFsldSAvICV1XSIs
IHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHNpemUoKSwgbWF4aW11bVNpemUo
KSk7CisKKyAgICBBU1NFUlQoIXByb2Nlc3MtPnBhZ2VDb3VudCgpKTsKKyAgICBBU1NFUlQoIXBy
b2Nlc3MtPnByb3Zpc2lvbmFsUGFnZUNvdW50KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5oYXNTdXNwZW5kZWRQYWdlRm9yKHByb2Nlc3MpKTsKKworICAgIHJldHVybiBX
VEZNb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlTWF4aW11
bVNpemUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQoreworICAgIGlmICghcHJvY2Vzc1Bv
b2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNz
UG9vbC5jb25maWd1cmF0aW9uKCkudXNlc1dlYlByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgIGlm
ICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigp
KQorICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9j
ZXNzQ2FjaGU6OnVwZGF0ZU1heGltdW1TaXplOiBDYWNoZSBpcyBkaXNhYmxlZCBiZWNhdXNlIHBy
b2Nlc3Mgc3dhcCBvbiBuYXZpZ2F0aW9uIGlzIGRpc2FibGVkIiwgdGhpcyk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJv
Y2Vzc0NhY2hlOjp1cGRhdGVNYXhpbXVtU2l6ZTogQ2FjaGUgaXMgZGlzYWJsZWQgYnkgY2xpZW50
IiwgdGhpcyk7CisgICAgICAgIG1fbWF4aW11bVNpemUgPSAwOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHNpemVfdCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gR0I7CisKKyAgICAgICAgLy8gQWxs
b3cgNCBwcm9jZXNzZXMgaW4gdGhlIGNhY2hlIHBlciBHQiBvZiBSQU0sIHVwIHRvIDMwIHByb2Nl
c3Nlcy4KKyAgICAgICAgbV9tYXhpbXVtU2l6ZSA9IHN0ZDo6bWluPHVuc2lnbmVkPihtZW1vcnlT
aXplICogNCwgMzApOworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAt
IFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlTWF4aW11bVNpemU6IENhY2hlIGhhcyBhIG1heGltdW0g
c2l6ZSBvZiAldSBwcm9jZXNzZXMiLCB0aGlzLCBtYXhpbXVtU2l6ZSgpKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1fbWF4aW11bVNpemUpCisgICAgICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc0NhY2hlOjpjbGVhcigpCit7CisgICAgaWYgKG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXIoKSBldmljdGluZyAldSBw
cm9jZXNzZXMiLCB0aGlzLCBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnNpemUoKSk7
CisgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5jbGVhcigpOworfQorCit2b2lk
IFdlYlByb2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZShib29sIHZhbHVlKQorewor
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjpz
ZXRBcHBsaWNhdGlvbklzQWN0aXZlKCVkKSIsIHRoaXMsIHZhbHVlKTsKKyAgICBpZiAodmFsdWUp
CisgICAgICAgIG1fZXZpY3Rpb25UaW1lci5zdG9wKCk7CisgICAgZWxzZSBpZiAoIW1fcHJvY2Vz
c2VzUGVyUmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICBtX2V2aWN0aW9uVGlt
ZXIuc3RhcnRPbmVTaG90KGNsZWFyaW5nRGVsYXlBZnRlckFwcGxpY2F0aW9uUmVzaWduc0FjdGl2
ZSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpldmljdFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKQoreworICAgIGF1dG8gaXQgPSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxl
RG9tYWluLmZpbmQocHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBBU1NFUlQoaXQg
IT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSk7CisgICAgQVNTRVJUKCZp
dC0+dmFsdWUtPnByb2Nlc3MoKSA9PSAmcHJvY2Vzcyk7CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNzKCk6IEV2aWN0
aW5nIHByb2Nlc3MgJWkgZnJvbSBXZWJQcm9jZXNzIGNhY2hlIGJlY2F1c2UgaXQgZXhwaXJlZCIs
IHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICBtX3Byb2Nlc3Nlc1Bl
clJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShpdCk7Cit9CisKK1dlYlByb2Nlc3NDYWNoZTo6Q2Fj
aGVkUHJvY2Vzczo6Q2FjaGVkUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Mp
CisgICAgOiBtX3Byb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSkKKyAgICAsIG1fZXZpY3Rpb25UaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDYWNoZWRQcm9jZXNzOjpldmljdGlvblRpbWVyRmly
ZWQpCit7CisgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKHRydWUpOworICAgIG1f
ZXZpY3Rpb25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkUHJvY2Vzc0xpZmV0aW1lKTsKK30KKwor
V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2VzcygpCit7CisgICAg
aWYgKCFtX3Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9wcm9jZXNz
LT5wYWdlQ291bnQoKSk7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3MtPnByb3Zpc2lvbmFsUGFnZUNv
dW50KCkpOworICAgIEFTU0VSVCghbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmhhc1N1c3BlbmRl
ZFBhZ2VGb3IoKm1fcHJvY2VzcykpOworCisgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0Nh
Y2hlKGZhbHNlKTsKKyAgICBtX3Byb2Nlc3MtPnNodXREb3duKCk7Cit9CisKK1JlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVByb2Nlc3MoKQor
eworICAgIEFTU0VSVChtX3Byb2Nlc3MpOworICAgIG1fZXZpY3Rpb25UaW1lci5zdG9wKCk7Cisg
ICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKGZhbHNlKTsKKyAgICByZXR1cm4gbV9w
cm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpDYWNo
ZWRQcm9jZXNzOjpldmljdGlvblRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3Mp
OworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS53ZWJQcm9jZXNzQ2FjaGUoKS5ldmljdFBy
b2Nlc3MoKm1fcHJvY2Vzcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjc3MDBiYTkwZTQy
NmYyZGZlZGZmMzUxNGI5YTQ3ZjM3MWVhY2UwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYlByb2Nl
c3NQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNzIFdlYlByb2Nlc3NDYWNo
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
V2ViUHJvY2Vzc0NhY2hlKFdlYlByb2Nlc3NQb29sJik7CisKKyAgICBib29sIGFkZFByb2Nlc3Mo
Y29uc3QgU3RyaW5nJiByZWdpc3RyYWJsZURvbWFpbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7
CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3MoY29uc3QgU3RyaW5nJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYpOworCisgICAgdm9pZCB1cGRhdGVN
YXhpbXVtU2l6ZShXZWJQcm9jZXNzUG9vbCYpOworICAgIHVuc2lnbmVkIG1heGltdW1TaXplKCkg
eyByZXR1cm4gbV9tYXhpbXVtU2l6ZTsgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uc2l6ZSgpOyB9CisKKyAgICB2
b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGJvb2wpOworCitw
cml2YXRlOgorICAgIHZvaWQgZXZpY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOworCisgICAg
dW5zaWduZWQgbV9tYXhpbXVtU2l6ZSB7IDAgfTsKKworICAgIGNsYXNzIENhY2hlZFByb2Nlc3Mg
eworICAgIHB1YmxpYzoKKyAgICAgICAgQ2FjaGVkUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmKTsKKyAgICAgICAgfkNhY2hlZFByb2Nlc3MoKTsKKworICAgICAgICBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiB0YWtlUHJvY2VzcygpOworICAgICAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mo
KSB7IEFTU0VSVChtX3Byb2Nlc3MpOyByZXR1cm4gKm1fcHJvY2VzczsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgdm9pZCBldmljdGlvblRpbWVyRmlyZWQoKTsKKworICAgICAgICBSZWZQdHI8
V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CisgICAgICAgIFJ1bkxvb3A6OlRpbWVyPENhY2hl
ZFByb2Nlc3M+IG1fZXZpY3Rpb25UaW1lcjsKKyAgICB9OworCisgICAgSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQcm9jZXNzPj4gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJs
ZURvbWFpbjsKKyAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzQ2FjaGU+IG1fZXZpY3Rpb25U
aW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGM5ZGU3ZmI1NDFiMDBhNWEzMDkyOGFlNDk5OWRl
NmI1YTU1Yzg0MDUuLmViN2QzODBjZjA2ZmU0YzcwYzM4NTBiODkyZGViYTQ2NGE3NWZhMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTY5LDYgKzY5
LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
cy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1l
c3NhZ2VzLmgiCkBAIC0yNTUsNiArMjU2LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQ
b29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwg
bV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1
cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQogICAgICwgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vz
c0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9u
cygpOyB9KQogI2VuZGlmCisgICAgLCBtX3dlYlByb2Nlc3NDYWNoZShtYWtlVW5pcXVlUmVmPFdl
YlByb2Nlc3NDYWNoZT4oKnRoaXMpKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewpAQCAtMzEzLDYgKzMxNSw4
IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKIAogV2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9v
bCgpCiB7CisgICAgbV93ZWJQcm9jZXNzQ2FjaGUtPmNsZWFyKCk7CisKICAgICBib29sIHJlbW92
ZWQgPSBwcm9jZXNzUG9vbHMoKS5yZW1vdmVGaXJzdCh0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlbW92ZWQsIHJlbW92ZWQpOwogCkBAIC00NTUsNiArNDU5LDExIEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnRleHRDaGVja2VyU3RhdGVDaGFuZ2VkKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0
YXRlKCkpKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXBwbGljYXRpb25Jc0FjdGl2
ZShib29sIGlzQWN0aXZlKQoreworICAgIG1fd2ViUHJvY2Vzc0NhY2hlLT5zZXRBcHBsaWNhdGlv
bklzQWN0aXZlKGlzQWN0aXZlKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2NyZWVuUHJv
cGVydGllc1N0YXRlQ2hhbmdlZCgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTE1NCw3ICsx
MTYzLDExIEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgICAgIGVuYWJsZVByb2Nlc3NT
d2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0gZmFsc2U7CiAjZW5kaWYKIAorICAgIGJvb2wgd2Fz
UHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9uRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+cHJv
Y2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCk7CiAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRQcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb25Gcm9tRXhwZXJpbWVudGFsRmVhdHVyZXMoZW5hYmxlUHJvY2Vzc1N3
YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24pOworICAgIGlmICh3YXNQcm9jZXNzU3dhcHBpbmdPbk5h
dmlnYXRpb25FbmFibGVkICE9IG1fY29uZmlndXJhdGlvbi0+cHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uKCkpCisgICAgICAgIG1fd2ViUHJvY2Vzc0NhY2hlLT51cGRhdGVNYXhpbXVtU2l6ZSgqdGhp
cyk7CisKICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9j
ZXNzKHBhZ2UtPnByZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3NFbmFibGVkKCkp
OwogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0U2hvdWxkQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3Mo
cGFnZS0+cHJlZmVyZW5jZXMoKS5jYXB0dXJlVmlkZW9JblVJUHJvY2Vzc0VuYWJsZWQoKSk7CiAK
QEAgLTEzMTksNiArMTMzMiwxMCBAQCBXZWJQcm9jZXNzUG9vbDo6U3RhdGlzdGljcyYgV2ViUHJv
Y2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZW1v
cnlQcmVzc3VyZVdhcm5pbmcoQ3JpdGljYWwpCiB7CisgICAgUkVMRUFTRV9MT0coUGVyZm9ybWFu
Y2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJu
aW5nIiwgdGhpcyk7CisKKyAgICBtX3dlYlByb2Nlc3NDYWNoZS0+Y2xlYXIoKTsKKwogICAgIGlm
IChtX3ByZXdhcm1lZFByb2Nlc3MpCiAgICAgICAgIG1fcHJld2FybWVkUHJvY2Vzcy0+c2h1dERv
d24oKTsKICAgICBBU1NFUlQoIW1fcHJld2FybWVkUHJvY2Vzcyk7CkBAIC0yMTUzLDE0ICsyMTcw
LDI0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9j
ZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgdGFyZ2V0VVJMID0gbmF2aWdhdGlvbi5jdXJy
ZW50UmVxdWVzdCgpLnVybCgpOworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB0b1JlZ2lz
dHJhYmxlRG9tYWluKHRhcmdldFVSTCk7CisKKyAgICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYWdlID0gbWFrZVJlZihwYWdl
KSwgdGFyZ2V0VVJMLCByZWdpc3RyYWJsZURvbWFpbl0gKCkgLT4gUmVmPFdlYlByb2Nlc3NQcm94
eT4geworICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFrZVBy
b2Nlc3MocmVnaXN0cmFibGVEb21haW4sIHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKSkpCisgICAg
ICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNlTm9uTnVsbCgpOworCisgICAgICAgIC8vIENo
ZWNrIGlmIHdlIGhhdmUgYSBzdXNwZW5kZWQgcGFnZSBmb3IgdGhlIGdpdmVuIHJlZ2lzdHJhYmxl
IGRvbWFpbiBhbmQgdXNlIGl0cyBwcm9jZXNzIGlmIHdlIGRvLCBmb3IgcGVyZm9ybWFuY2UgcmVh
c29ucy4KKyAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBh
Z2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdlKSkgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiVXNpbmcgV2ViUHJvY2VzcyAlaSBmcm9tIGEgU3VzcGVu
ZGVkUGFnZSIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgcmV0
dXJuIHByb2Nlc3MucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgfQogCi0gICAgYXV0byBjcmVh
dGVOZXdQcm9jZXNzID0gWyZdICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKLSAgICAgICAg
aWYgKFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJv
Y2VzcyhwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHJvY2Vz
cyA9IHRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKSkpIHsK
ICAgICAgICAgICAgIHRyeVByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oKnByb2Nlc3MsIHRh
cmdldFVSTCk7CiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNlTm9uTnVsbCgpOwog
ICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MocGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2VzcyhwYWdl
LT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH07CiAKICAgICBpZiAodXNlc1NpbmdsZVdlYlBy
b2Nlc3MoKSkKQEAgLTIxOTksMTIgKzIyMjYsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJv
Y2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFJlZlB0cjxXZWJQcm9j
ZXNzUHJveHk+IHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVy
KHRhcmdldEl0ZW0tPml0ZW1JRCgpLnByb2Nlc3NJZGVudGlmaWVyKSkgeworICAgICAgICBpZiAo
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIodGFyZ2V0SXRlbS0+bGFzdFByb2Nlc3NJZGVudGlmaWVyKCkpKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogQXJjaGl0ZWN0dXJhbGx5IHdlIGRvIG5vdCBjdXJyZW50bHkg
c3VwcG9ydCBtdWx0aXBsZSBXZWJQYWdlJ3Mgd2l0aCB0aGUgc2FtZSBJRCBpbiBhIGdpdmVuIFdl
YlByb2Nlc3MuCiAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSB0aGlzIFdlYlByb2Nl
c3MgaGFzIGEgU3VzcGVuZGVkUGFnZVByb3h5IGZvciB0aGlzIFdlYlBhZ2UsIHdlIGNhbiB0aHJv
dyBpdCBhd2F5IHRvIHN1cHBvcnQKICAgICAgICAgICAgIC8vIFdlYlByb2Nlc3MgcmUtdXNlLgog
ICAgICAgICAgICAgcmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKHBhZ2UsIHByb2Nlc3Mu
Z2V0KCkpOwogCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgcmVtb3ZlIHRoZSBwcm9jZXNz
IGZyb20gdGhlIGNhY2hlIGlmIGl0IGlzIGluIHRoZXJlIHNpbmNlIHdlJ3JlIGFib3V0IHRvIHVz
ZSBpdC4KKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIHJlbW92ZWRQcm9jZXNzID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFr
ZVByb2Nlc3MocHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKSwgcHJvY2Vzcy0+d2Vic2l0ZURh
dGFTdG9yZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQcm9jZXNz
LCByZW1vdmVkUHJvY2Vzcy5nZXQoKSA9PSBwcm9jZXNzLmdldCgpKTsKKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHByb2Nlc3MucmVsZWFzZU5v
bk51bGwoKSwgbnVsbHB0ciwgIlVzaW5nIHRhcmdldCBiYWNrL2ZvcndhcmQgaXRlbSdzIHByb2Nl
c3MiX3MpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIyOCw3ICsyMjYxLDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBh
Z2UsIGNvbnN0IEFQSToKIAogICAgIFN0cmluZyByZWFzb24gPSAiTmF2aWdhdGlvbiBpcyBjcm9z
cy1zaXRlIl9zOwogICAgIAotICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB0b1JlZ2lzdHJh
YmxlRG9tYWluKHRhcmdldFVSTCk7CiAgICAgaWYgKG1fY29uZmlndXJhdGlvbi0+YWx3YXlzS2Vl
cEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlcygpKSB7CiAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBp
bmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBDb25zaWRlcmluZyByZS11c2Ugb2YgYSBwcmV2aW91c2x5
IGNhY2hlZCBwcm9jZXNzIGZvciBkb21haW4gJXMiLCByZWdpc3RyYWJsZURvbWFpbi51dGY4KCku
ZGF0YSgpKTsKIApAQCAtMjI0NywyMiArMjI3OSwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJ
OgogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHN1c3BlbmRl
ZCBwYWdlIGZvciB0aGUgZ2l2ZW4gcmVnaXN0cmFibGUgZG9tYWluIGFuZCB1c2UgaXRzIHByb2Nl
c3MgaWYgd2UgZG8sIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgorICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihjcmVhdGVOZXdQcm9jZXNzKCksIG51bGxwdHIsIHJlYXNvbik7Cit9CisKK1Jl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpmaW5kUmV1c2FibGVTdXNwZW5k
ZWRQYWdlUHJvY2Vzcyhjb25zdCBTdHJpbmcmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJQYWdlUHJv
eHkmIHBhZ2UpCit7CiAgICAgYXV0byBpdCA9IG1fc3VzcGVuZGVkUGFnZXMuZmluZElmKFsmXShh
dXRvJiBzdXNwZW5kZWRQYWdlKSB7Ci0gICAgICAgIHJldHVybiBzdXNwZW5kZWRQYWdlLT5yZWdp
c3RyYWJsZURvbWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluOworICAgICAgICByZXR1cm4gc3Vz
cGVuZGVkUGFnZS0+cmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiAm
c3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCk7CiAgICAgfSk7Ci0gICAgaWYgKGl0ICE9IG1fc3VzcGVuZGVkUGFnZXMu
ZW5kKCkpIHsKLSAgICAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9ICgqaXQpLT5w
cm9jZXNzKCk7CisgICAgaWYgKGl0ID09IG1fc3VzcGVuZGVkUGFnZXMuZW5kKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgU3VzcGVuZGVkUGFn
ZSBpcyBmb3IgdGhpcyBwYWdlLCB0aGVuIHdlIG5lZWQgdG8gZGVzdHJveSB0aGUgc3VzcGVuZGVk
IHBhZ2UgYXMgd2UgZG8gbm90IHN1cHBvcnQgaGF2aW5nCi0gICAgICAgIC8vIG11bHRpcGxlIFdl
YlBhZ2VzIHdpdGggdGhlIHNhbWUgSUQgaW4gYSBnaXZlbiBXZWJQcm9jZXNzIGN1cnJlbnRseSAo
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTE2NikuCi0gICAgICAg
IGlmICgmKCppdCktPnBhZ2UoKSA9PSAmcGFnZSkKLSAgICAgICAgICAgIG1fc3VzcGVuZGVkUGFn
ZXMucmVtb3ZlKGl0KTsKKyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzID0gKCppdCkt
PnByb2Nlc3MoKTsKIAotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShw
cm9jZXNzKSwgbnVsbHB0ciwgcmVhc29uKTsKLSAgICB9CisgICAgLy8gRklYTUU6IElmIHRoZSBT
dXNwZW5kZWRQYWdlIGlzIGZvciB0aGlzIHBhZ2UsIHRoZW4gd2UgbmVlZCB0byBkZXN0cm95IHRo
ZSBzdXNwZW5kZWQgcGFnZSBhcyB3ZSBkbyBub3Qgc3VwcG9ydCBoYXZpbmcKKyAgICAvLyBtdWx0
aXBsZSBXZWJQYWdlcyB3aXRoIHRoZSBzYW1lIElEIGluIGEgZ2l2ZW4gV2ViUHJvY2VzcyBjdXJy
ZW50bHkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExNjYpLgor
ICAgIGlmICgmKCppdCktPnBhZ2UoKSA9PSAmcGFnZSkKKyAgICAgICAgbV9zdXNwZW5kZWRQYWdl
cy5yZW1vdmUoaXQpOwogCi0gICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5ld1By
b2Nlc3MoKSwgbnVsbHB0ciwgcmVhc29uKTsKKworICAgIHJldHVybiBXVEZNb3ZlKHByb2Nlc3Mp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVl
X3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGU1NzRlMWQ3YTYyYzRkN2VjZjMwODNkMmY4
MzMwZDk4MTM3ZTVmY2QuLmViZmY5YmY5N2ZhOTY5NmQzMjcxNjRhYjZjYWVlNDU0YmFhMmIyZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTAxLDYgKzEw
MSw3IEBAIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2ViQ29udGV4dFN1cHBs
ZW1lbnQ7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CitjbGFzcyBX
ZWJQcm9jZXNzQ2FjaGU7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7
CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczsKQEAgLTE3Niw2ICsxNzcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKKyAgICBXZWJQcm9jZXNzQ2FjaGUm
IHdlYlByb2Nlc3NDYWNoZSgpIHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0NhY2hlLmdldCgpOyB9CisK
ICAgICAvLyBEaXNjb25uZWN0IHRoZSBwcm9jZXNzIGZyb20gdGhlIGNvbnRleHQuCiAgICAgdm9p
ZCBkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqKTsKIApAQCAtNDY0LDYgKzQ2Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVBy
b3h5Jik7CiAgICAgYm9vbCBoYXNTdXNwZW5kZWRQYWdlRm9yKFdlYlByb2Nlc3NQcm94eSYsIFdl
YlBhZ2VQcm94eSogPSBudWxscHRyKSBjb25zdDsKICAgICB1bnNpZ25lZCBtYXhTdXNwZW5kZWRQ
YWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX21heFN1c3BlbmRlZFBhZ2VDb3VudDsgfQorICAg
IFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNz
KGNvbnN0IFN0cmluZyYsIFdlYlBhZ2VQcm94eSYpOwogCiAgICAgdm9pZCBkaWRSZWFjaEdvb2RU
aW1lVG9QcmV3YXJtKCk7CiAKQEAgLTU0OCw2ICs1NTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpOwogI2VuZGlmCiAKKyAgICB2b2lkIHNl
dEFwcGxpY2F0aW9uSXNBY3RpdmUoYm9vbCk7CisKICAgICB2b2lkIGFkZFBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5Pcmln
aW5IYXNoLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlcklu
dGVyYWN0aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFBBTDo6U2Vzc2lvbklEKTsKIApA
QCAtNjQ5LDYgKzY1NSw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9X
U0VSVkVSX0JMT0NLSU5HKQogICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9zY3JvbGxlclN0eWxl
Tm90aWZpY2F0aW9uT2JzZXJ2ZXI7CiAjZW5kaWYKKyAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1f
YWN0aXZhdGlvbk9ic2VydmVyOworICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9kZWFjdGl2YXRp
b25PYnNlcnZlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2FtcGxlcj4gbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4gbV9wZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwpAQCAtNzM5LDYgKzc0Nyw3IEBAIHByaXZhdGU6
CiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4+IG1fc3VzcGVu
ZGVkUGFnZXM7CiAgICAgdW5zaWduZWQgbV9tYXhTdXNwZW5kZWRQYWdlQ291bnQgeyAwIH07CiAK
KyAgICBVbmlxdWVSZWY8V2ViUHJvY2Vzc0NhY2hlPiBtX3dlYlByb2Nlc3NDYWNoZTsKICAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fc3dhcHBlZFByb2Nlc3Nl
c1BlclJlZ2lzdHJhYmxlRG9tYWluOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+PiBtX3ByZXdhcm1JbmZvcm1hdGlvblBl
clJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggZTY4NjgyODU5MGE1NDgwNWRmM2UzMTc5MGZmODUwNDJlYWY1NzNjZS4u
NjM5YjBiMmFiMDUzZDYyYTBlM2Q4ZDNmY2RkODNjNjg2ZTkyYTE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5j
bHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUGFzdGVib2FyZFByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgpAQCAtMTgxLDYgKzE4Miwy
MyBAQCBXZWJQcm9jZXNzUHJveHk6On5XZWJQcm9jZXNzUHJveHkoKQogI2VuZGlmCiB9CiAKK3Zv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wgdmFsdWUpCit7Cisg
ICAgQVNTRVJUKG1faXNJblByb2Nlc3NDYWNoZSAhPSB2YWx1ZSk7CisgICAgbV9pc0luUHJvY2Vz
c0NhY2hlID0gdmFsdWU7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRJc0lu
UHJvY2Vzc0NhY2hlKG1faXNJblByb2Nlc3NDYWNoZSksIDApOworCisgICAgaWYgKG1faXNJblBy
b2Nlc3NDYWNoZSkgeworICAgICAgICAvLyBXZWJQcm9jZXNzUHJveHkgb2JqZWN0cyBub3JtYWxs
eSBrZWVwIHRoZSBwcm9jZXNzIHBvb2wgYWxpdmUgYnV0IHdlIGRvIG5vdCB3YW50IHRoaXMgdG8g
YmUgdGhlIGNhc2UKKyAgICAgICAgLy8gZm9yIGNhY2hlZCBwcm9jZXNzZXMgb3IgaXQgd291bGQg
bGVhayB0aGUgcG9vbC4KKyAgICAgICAgbV9wcm9jZXNzUG9vbC5zZXRJc1dlYWsoSXNXZWFrOjpZ
ZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzc1Bvb2wp
OworICAgICAgICBtX3Byb2Nlc3NQb29sLnNldElzV2VhayhJc1dlYWs6Ok5vKTsKKyAgICB9Cit9
CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hl
cjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKICAgICBsYXVuY2hPcHRpb25zLnBy
b2Nlc3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6V2ViOwpAQCAtMzMzLDYg
KzM1MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlSUQsCiB7CiAgICAgQVNTRVJUKCFtX3BhZ2VN
YXAuY29udGFpbnMocGFnZUlEKSk7CiAgICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCkuY29udGFp
bnMocGFnZUlEKSk7CisgICAgQVNTRVJUKCFtX2lzSW5Qcm9jZXNzQ2FjaGUpOwogCiAgICAgaWYg
KGJlZ2luc1VzaW5nRGF0YVN0b3JlID09IEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMpCiAgICAg
ICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdl
KTsKQEAgLTQ4MCwxMCArNDk5LDM2IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9h
cmRBY2Nlc3NFbmFibGVkKCkKIH0KICNlbmRpZgogCitib29sIFdlYlByb2Nlc3NQcm94eTo6aGFz
UHJvdmlzaW9uYWxQYWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK3sKKyAgICBmb3Ig
KGF1dG8qIHByb3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgeworICAgICAgICBp
ZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJQ
cm9jZXNzUHJveHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mIGl0ZW0pIGNvbnN0Cit7CisgICAgaWYgKG1fcGFnZU1hcC5jb250YWlucyhp
dGVtLnBhZ2VJRCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoaGFzUHJvdmlz
aW9uYWxQYWdlV2l0aElEKGl0ZW0ucGFnZUlEKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGlmIChpdGVtLnN1c3BlbmRlZFBhZ2UoKSAmJiBpdGVtLnN1c3BlbmRlZFBhZ2UoKS0+cGFn
ZSgpLnBhZ2VJRCgpID09IGl0ZW0ucGFnZUlEKCkgJiYgJml0ZW0uc3VzcGVuZGVkUGFnZSgpLT5w
cm9jZXNzKCkgPT0gdGhpcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29u
c3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVtU3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8q
IGl0ZW0gPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtRm9ySUQoaXRlbVN0YXRlLmlkZW50
aWZpZXIpKQotICAgICAgICBpdGVtLT5zZXRQYWdlU3RhdGUoaXRlbVN0YXRlLnBhZ2VTdGF0ZSk7
CisgICAgYXV0byogaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChpdGVt
U3RhdGUuaWRlbnRpZmllcik7CisgICAgaWYgKCFpdGVtIHx8ICFpc0FsbG93ZWRUb1VwZGF0ZUJh
Y2tGb3J3YXJkSXRlbSgqaXRlbSkpCisgICAgICAgIHJldHVybjsKKworICAgIGl0ZW0tPnNldFBh
Z2VTdGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQpAQCAtNTkwLDYgKzYzNSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVkVG9MYXVuY2goKQogICAgIGF1dG8gcGFnZXMgPSBjb3B5
VG9WZWN0b3JPZjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4obV9wYWdlTWFwLnZhbHVlcygpKTsKICAg
ICBhdXRvIHByb3Zpc2lvbmFsUGFnZXMgPSBXVEY6Om1hcChtX3Byb3Zpc2lvbmFsUGFnZXMsIFtd
KGF1dG8qIHByb3Zpc2lvbmFsUGFnZSkgeyByZXR1cm4gbWFrZVdlYWtQdHIocHJvdmlzaW9uYWxQ
YWdlKTsgfSk7CiAKKyAgICBpZiAobV9pc0luUHJvY2Vzc0NhY2hlKSB7CisgICAgICAgIGF1dG8g
cmVtb3ZlZFByb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLndlYlByb2Nlc3NDYWNoZSgpLnRha2VQcm9j
ZXNzKHJlZ2lzdHJhYmxlRG9tYWluKCksIHdlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzLmdldCgpID09IHRoaXMp
OworICAgIH0KKwogICAgIHNodXREb3duKCk7CiAKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQpAQCAtNzY5LDE3ICs4MTksMzQgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ry
b3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgbV91c2VySW5pdGlh
dGVkQWN0aW9uTWFwLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorYm9vbCBXZWJQcm9jZXNzUHJv
eHk6OmNhbkJlQWRkZWRUb1dlYlByb2Nlc3NDYWNoZSgpIGNvbnN0Cit7CisgICAgaWYgKHJlZ2lz
dHJhYmxlRG9tYWluKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoV2ViS2l0Ojppc0luc3BlY3RvclByb2Nlc3NQb29sKHByb2Nlc3NQb29sKCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6Om1heWJlU2h1dERvd24oKQogewogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpU
ZXJtaW5hdGVkIHx8ICFjYW5UZXJtaW5hdGVBdXhpbGlhcnlQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmIChjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUoKSAmJiBwcm9jZXNz
UG9vbCgpLndlYlByb2Nlc3NDYWNoZSgpLmFkZFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4oKSwg
KnRoaXMpKQorICAgICAgICByZXR1cm47CisKICAgICBzaHV0RG93bigpOwogfQogCiBib29sIFdl
YlByb2Nlc3NQcm94eTo6Y2FuVGVybWluYXRlQXV4aWxpYXJ5UHJvY2VzcygpCiB7Ci0gICAgaWYg
KCFtX3BhZ2VNYXAuaXNFbXB0eSgpIHx8IG1fcHJvY2Vzc1Bvb2wtPmhhc1N1c3BlbmRlZFBhZ2VG
b3IoKnRoaXMpIHx8ICFtX3Byb3Zpc2lvbmFsUGFnZXMuaXNFbXB0eSgpKQorICAgIGlmICghbV9w
YWdlTWFwLmlzRW1wdHkoKSB8fCBtX3Byb2Nlc3NQb29sLT5oYXNTdXNwZW5kZWRQYWdlRm9yKCp0
aGlzKSB8fCAhbV9wcm92aXNpb25hbFBhZ2VzLmlzRW1wdHkoKSB8fCBtX2lzSW5Qcm9jZXNzQ2Fj
aGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9wcm9jZXNzUG9vbC0+c2hv
dWxkVGVybWluYXRlKHRoaXMpKQpAQCAtMTM0NCw2ICsxNDExLDIzIEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjphY3RpdmVQYWdlc0RvbWFpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yCiAgICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCit7CisgICAgLy8gVGhp
cyBwcm9jZXNzIGhhcyBiZWVuIHVzZWQgZm9yIHNldmVyYWwgcmVnaXN0cmFibGUgZG9tYWlucyBh
bHJlYWR5LgorICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmIG1fcmVnaXN0cmFibGVEb21h
aW4tPmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9t
YWluID0gdG9SZWdpc3RyYWJsZURvbWFpbih1cmwpOworICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9t
YWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CisgICAg
ICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFz
IG5vdyBiZWVuIHVzZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KKyAgICAgICAgbV9yZWdpc3RyYWJs
ZURvbWFpbiA9IFN0cmluZygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQXNz
b2NpYXRlIHRoZSBwcm9jZXNzIHdpdGggdGhpcyByZWdpc3RyYWJsZSBkb21haW4uCisgICAgbV9y
ZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOworfQorCiAjaWYg
UExBVEZPUk0oV0FUQ0hPUykKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnRha2VCYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGVhODA5Nzk2MjFlODE2MmM4MmQ2MjA3Y2MzZTJiNDY4
MWE1ZjIxNmYuLjM3NmYzZDU3NzkzZTdiZmM0OTFjMzUzNjNkMjA4ODMyZDdkZjQ0MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xMDgsNiArMTA4LDEw
IEBAIHB1YmxpYzoKIAogICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCgpIGNvbnN0IHsg
QVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOyByZXR1cm4gKm1fcHJvY2Vzc1Bvb2wuZ2V0KCk7IH0KIAor
ICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFi
bGVEb21haW4udmFsdWVPcihTdHJpbmcoKSk7IH0KKyAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2Fj
aGUoYm9vbCk7CisgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0luUHJvY2Vzc0NhY2hlOyB9CisKICAgICAvLyBGSVhNRTogV2Vic2l0ZURhdGFTdG9yZXMgc2hv
dWxkIGJlIG1hZGUgcGVyLVdlYlBhZ2VQcm94eSB0aHJvdWdob3V0IFdlYktpdDIKICAgICBXZWJz
aXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRl
RGF0YVN0b3JlLmdldCgpOyB9CiAKQEAgLTEyNiw2ICsxMzAsNyBAQCBwdWJsaWM6CiAKICAgICB0
eXBlbmFtZSBXZWJQYWdlUHJveHlNYXA6OlZhbHVlc0NvbnN0SXRlcmF0b3JSYW5nZSBwYWdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC52YWx1ZXMoKTsgfQogICAgIHVuc2lnbmVkIHBhZ2VD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC5zaXplKCk7IH0KKyAgICB1bnNpZ25lZCBw
cm92aXNpb25hbFBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxQYWdlcy5z
aXplKCk7IH0KICAgICB1bnNpZ25lZCB2aXNpYmxlUGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV92aXNpYmxlUGFnZUNvdW50ZXIudmFsdWUoKTsgfQogCiAgICAgdm9pZCBhY3RpdmVQYWdlc0Rv
bWFpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+
JiYpOyAvLyBUaGlzIGlzIHdoYXQgaXMgcmVwb3J0ZWQgdG8gQWN0aXZpdHlNb25pdG9yLgpAQCAt
MjQ5LDYgKzI1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNodXREb3duKCk7CiAgICAgdm9pZCBt
YXliZVNodXREb3duKCk7CiAKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFp
bkZyYW1lKGNvbnN0IFVSTCYpOworCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlUGFnZUlEKCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vi
c2l0ZURhdGFTdG9yZSYsIElzUHJld2FybWVkKTsKQEAgLTI3NCw2ICsyODEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRGVzdHJveUZyYW1lKHVpbnQ2NF90KTsKICAgICB2b2lkIGRpZERlc3Ry
b3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90KTsKIAorICAgIGJvb2wgY2FuQmVBZGRlZFRvV2Vi
UHJvY2Vzc0NhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBzaG91bGRUZXJtaW5hdGUoYm9vbCYgc2hv
dWxkVGVybWluYXRlKTsKIAogICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDIpOwpAQCAtMjg2LDYgKzI5NCw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyh1aW50NjRfdCBtZXNz
YWdlQmF0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZv
ckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBpc0xvY2FsbHlSZWFj
aGFibGUpOwogCisgICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFn
ZUlEKSBjb25zdDsKKyAgICBib29sIGlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBjb25zdDsKKwogICAgIC8vIFBsdWdpbnMKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICB2b2lkIGdldFBsdWdpbnMoYm9vbCByZWZyZXNo
LCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMsIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiYgYXBwbGljYXRpb25QbHVnaW5zLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+Jik7CkBAIC0zNzEsNyArMzgyLDcgQEAgcHJpdmF0
ZToKICAgICBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIgbV9iYWNrZ3JvdW5k
UmVzcG9uc2l2ZW5lc3NUaW1lcjsKICAgICAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwotICAgIFdlYWtPclN0cm9uZ1B0cjxXZWJQcm9jZXNz
UG9vbD4gbV9wcm9jZXNzUG9vbDsgLy8gUHJlLXdhcm1lZCBwcm9jZXNzZXMgZG8gbm90IGhvbGQg
YSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZWlyIHBvb2wuCisgICAgV2Vha09yU3Ryb25nUHRyPFdl
YlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOyAvLyBQcmUtd2FybWVkIGFuZCBjYWNoZWQgcHJv
Y2Vzc2VzIGRvIG5vdCBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGVpciBwb29sLgogCiAg
ICAgYm9vbCBtX21heUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb247IC8vIFRy
dWUgaWYgYSByZWFkIGV4dGVuc2lvbiBmb3IgIi8iIHdhcyBldmVyIGdyYW50ZWQgLSB3ZSBkb24n
dCB0cmFjayB3aGV0aGVyIFdlYlByb2Nlc3Mgc3RpbGwgaGFzIGl0LgogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3M7CkBAIC0zOTQsNiArNDA1LDkg
QEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9wYWdlVVJMUmV0
YWluQ291bnRNYXA7CiAKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1fcmVnaXN0cmFibGVEb21haW47
CisgICAgYm9vbCBtX2lzSW5Qcm9jZXNzQ2FjaGUgeyBmYWxzZSB9OworCiAgICAgZW51bSBjbGFz
cyBOb09yTWF5YmUgeyBObywgTWF5YmUgfSBtX2lzUmVzcG9uc2l2ZTsKICAgICBWZWN0b3I8V1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSk+PiBtX2lzUmVzcG9u
c2l2ZUNhbGxiYWNrczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggODIxYTA2YTNlMzdiNjRlNTc0OWEyYTFmNmU0NGEzMzA0Njk4Yzhi
My4uODJiYjVjNzY4OTliMWI4MWFjMDA1NDQxODhmZDQ2YTU3YWVhOTMyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNjg1LDYgKzM2
ODUsOCBAQAogCQk4MzJBRTI1MTFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODMyRUQxODkxRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODMzOTdDNjYyMjEyNEJEMTAwQjYyMzg4IC8qIFdlYlByb2Nlc3NDYWNoZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcm9jZXNzQ2FjaGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzM5N0M2NzIyMTI0QkQxMDBCNjIzODggLyogV2Vi
UHJvY2Vzc0NhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nl
c3NDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUwRTFBODMxQThE
MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0
aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2MDM0OUQxQUNCMzRE
NjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ5MCw2ICs3NDkyLDggQEAKIAkJCQlCQzU3NEU2
MTEyNjdEMDgwMDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHkuaCAqLywKIAkJCQlCQ0Q1OTdG
RTExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuY3BwICovLAogCQkJCUJDRDU5N0ZE
MTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlcy5oICovLAorCQkJCTgzMzk3QzY2MjIx
MjRCRDEwMEI2MjM4OCAvKiBXZWJQcm9jZXNzQ2FjaGUuY3BwICovLAorCQkJCTgzMzk3QzY3MjIx
MjRCRDEwMEI2MjM4OCAvKiBXZWJQcm9jZXNzQ2FjaGUuaCAqLywKIAkJCQkxQUZBNEI4RDFBNjVB
OUUyMDA2QzRBQjQgLyogV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwICovLAogCQkJCTFB
RkE0QjhFMUE2NUE5RTIwMDZDNEFCNCAvKiBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5oICov
LAogCQkJCTFBRkE0Qjg5MUE2NUExRDAwMDZDNEFCNCAvKiBXZWJQcm9jZXNzTGlmZXRpbWVUcmFj
a2VyLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAy
ODIyMDUwZTRhYjUxYTI4NDkxMmJlZmM0ZDAzYWIyNTJhMGVmZGNmLi4yM2U4YzM3MTI2ODMwNjdl
Y2M0NGUxOTJjZTYzZTliMTVkYmVmNjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC00NTcsNiArNDU3LDIzIEBAIGJvb2wgV2ViUHJvY2Vzczo6aGFzUGFnZVJl
cXVpcmluZ1BhZ2VDYWNoZVdoaWxlU3VzcGVuZGVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIGlzSW5Qcm9j
ZXNzQ2FjaGUpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChpc0luUHJvY2Vzc0NhY2hl
KSB7CisgICAgICAgIEFTU0VSVChtX3Byb2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpXZWJDb250
ZW50KTsKKyAgICAgICAgbV9wcm9jZXNzVHlwZSA9IFByb2Nlc3NUeXBlOjpDYWNoZWRXZWJDb250
ZW50OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3Byb2Nlc3NUeXBlID09IFByb2Nl
c3NUeXBlOjpDYWNoZWRXZWJDb250ZW50KTsKKyAgICAgICAgbV9wcm9jZXNzVHlwZSA9IFByb2Nl
c3NUeXBlOjpXZWJDb250ZW50OworICAgIH0KKworICAgIHVwZGF0ZVByb2Nlc3NOYW1lKCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShpc0luUHJvY2Vzc0NhY2hlKTsKKyNlbmRpZgorfQorCiB2
b2lkIFdlYlByb2Nlc3M6Om1hcmtJc05vTG9uZ2VyUHJld2FybWVkKCkKIHsKICNpZiBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiOWNhMmVlNDE3
MDdiYzViYzYyYmIxMWJkNDYyOGVmYzRiMjcwYzNmLi41YmQwMDA1ODBjMWYwMTRiZDM5ODgzNzM3
ZjA3OTVlZjY0NDIzZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTI2Nyw2ICsyNjcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybVRlcm1pbmF0ZSgp
OwogCisgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOwogICAgIHZvaWQgbWFya0lz
Tm9Mb25nZXJQcmV3YXJtZWQoKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5
RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CkBAIC00NjUsNyArNDY2LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q1BVTW9uaXRvcj4gbV9jcHVNb25pdG9yOwogICAg
IE9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAotICAgIGVudW0gY2xhc3MgUHJvY2Vzc1R5
cGUgeyBJbnNwZWN0b3IsIFNlcnZpY2VXb3JrZXIsIFByZXdhcm1lZFdlYkNvbnRlbnQsIFdlYkNv
bnRlbnQgfTsKKyAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsgSW5zcGVjdG9yLCBTZXJ2aWNl
V29ya2VyLCBQcmV3YXJtZWRXZWJDb250ZW50LCBDYWNoZWRXZWJDb250ZW50LCBXZWJDb250ZW50
IH07CiAgICAgUHJvY2Vzc1R5cGUgbV9wcm9jZXNzVHlwZSB7IFByb2Nlc3NUeXBlOjpXZWJDb250
ZW50IH07CiAgICAgU3RyaW5nIG1fdWlQcm9jZXNzTmFtZTsKICAgICBTdHJpbmcgbV9zZWN1cml0
eU9yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggNmY2Y2EzNjJlZmM2Mjg2ZTg5ZmY0NmRjZTgwMmRiY2JlZmU4NzcyMy4uM2Q3
M2YyZTljYzYyMDZiNzE3N2YyZTJkZTAxYWJlOWM4NmJkMzU3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTExOSw2ICsxMTksNyBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDaGVja1Byb2Nl
c3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyIHBvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKICAgICBNZXNzYWdlc0F2YWls
YWJsZUZvclBvcnQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KQog
CisgICAgU2V0SXNJblByb2Nlc3NDYWNoZShib29sIGlzSW5Qcm9jZXNzQ2FjaGUpCiAgICAgTWFy
a0lzTm9Mb25nZXJQcmV3YXJtZWQoKQogICAgIFVwZGF0ZUFjdGl2ZVBhZ2VzKCkKICAgICBHZXRB
Y3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKCkgLT4gKFZlY3RvcjxTdHJpbmc+IGFjdGl2ZU9y
aWdpbnMpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQppbmRleCBlNzdmNzE1NGRiOTQ4ZTZiZmQzNjk3NzY0YzFhNGI5ZTJmZDM5
NDdkLi5kMTYyNTE2NTk4YTcxODNhYWMyNGIwMGZlMjYyYzI1YmNjYTg3ZTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTI0
MCw2ICsyNDAsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKCkKICAgICBj
YXNlIFByb2Nlc3NUeXBlOjpQcmV3YXJtZWRXZWJDb250ZW50OgogICAgICAgICBhcHBsaWNhdGlv
bk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIg
Q29udGVudCAoUHJld2FybWVkKSIsICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBU
aGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKW1fdWlQ
cm9jZXNzTmFtZV07CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvY2Vzc1R5cGU6OkNhY2hl
ZFdlYkNvbnRlbnQ6CisgICAgICAgIGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBDb250ZW50IChDYWNoZWQpIiwgIlZpc2li
bGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRp
b24gbmFtZS4iKSwgKE5TU3RyaW5nICopbV91aVByb2Nlc3NOYW1lXTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBQcm9jZXNzVHlwZTo6V2ViQ29udGVudDoKICAgICAgICAgYXBwbGljYXRpb25O
YW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIENv
bnRlbnQiLCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlz
IHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKiltX3VpUHJvY2Vzc05hbWVdOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAyMmNjNmE1MTIwZDc1OGE0MjY5YjBiNGZlOWFjMzY5OTMyNWFhNjNkLi4xZDU0
NzQ5YjA3ZjI1ZjdiNzYzZDYxM2VlOTlhMDE2NTk4MDY2MTVlIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMDIt
MTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbUFNPTl0gSW50
cm9kdWNlIGEgV2ViQ29udGVudCBQcm9jZXNzIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ1OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ2NzkzMzk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBBUEkgdGVzdHMgdG8gdHVybiBvbiB0aGUgV2ViQ29udGVudCBQcm9jZXNzIGNh
Y2hlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbToKKwogMjAxOS0wMi0xMiAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZ1cnRoZXIgcmVzdHJpY3Rpbmcgd2ViYXJjaGl2ZSBs
b2FkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggMjJlMWNkNTgzZjA1ZjE0
ZGRkZGE0NDgxY2E4Yjc4Yzg2YjAxMTJjNC4uYzI3Nzg1MDE4NThkYmU4YjdjNWJjNTljMWJkNDQw
YzU3ODNiNjE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC00MzIsMTEg
KzQzMiwxOCBAQCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCBmdW5jdGlvbihl
dmVudCkgewogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1URVNUKFByb2Nlc3NTd2FwLCBC
YXNpYykKK3N0YXRpYyBSZXRhaW5QdHI8X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKIHsKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uID0gWUVTOworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS51c2Vz
V2ViUHJvY2Vzc0NhY2hlID0gWUVTOwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAgcmV0dXJuIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgQmFzaWMpCit7Cisg
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29s
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00ODEsOSArNDg4LDcgQEAgVEVT
VChQcm9jZXNzU3dhcCwgQmFzaWMpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIExvYWRBZnRlclBvbGlj
eURlY2lzaW9uKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7
Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0
b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBz
b25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRv
cHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAg
LTUxOSw5ICs1MjQsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBMb2FkQWZ0ZXJQb2xpY3lEZWNpc2lv
bikKIAogVEVTVChQcm9jZXNzU3dhcCwgS2lsbFdlYkNvbnRlbnRQcm9jZXNzQWZ0ZXJTZXJ2ZXJS
ZWRpcmVjdFBvbGljeURlY2lzaW9uKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmln
YXRpb24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1z
UHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nl
c3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZp
ZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKQEAgLTU3MCw5ICs1NzMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBLaWxsV2ViQ29u
dGVudFByb2Nlc3NBZnRlclNlcnZlclJlZGlyZWN0UG9saWN5RGVjaXNpb24pCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIE5vU3dhcHBpbmdGb3JlVExEUGx1czIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAg
IGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNjA3LDggKzYwOCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAs
IE5vU3dhcHBpbmdGb3JlVExEUGx1czIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEJhY2spCiB7Ci0g
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTcxNSw4ICs3MTUsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogcGFnZVdpdGhGcmFnbWVudFRlc3RCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAogCiBURVNUKFBy
b2Nlc3NTd2FwLCBIaXN0b3J5TmF2aWdhdGlvblRvRnJhZ21lbnRVUkwpCiB7Ci0gICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
LnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHBy
b2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKQEAgLTc2OCw4ICs3NjcsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBIaXN0b3J5
TmF2aWdhdGlvblRvRnJhZ21lbnRVUkwpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFN1c3BlbmRlZFBh
Z2VEaWVzQWZ0ZXJCYWNrRm9yd2FyZExpc3RJdGVtSXNHb25lKQogewotICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNz
UG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CkBAIC04MDEsNyArNzk5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFn
ZURpZXNBZnRlckJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0dvbmUpCiAgICAgRVhQRUNUX05FKHdlYmtp
dFBJRCwgYXBwbGVQSUQpOwogCiAgICAgLy8gd2Via2l0Lm9yZyArIGFwcGxlLmNvbSBwcm9jZXNz
ZXMuCi0gICAgRVhQRUNUX0VRKDJVLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9y
aW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDJVLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nl
c3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAKICAgICBbd2ViVmlldyBnb0Jh
Y2tdOyAvLyBCYWNrIHRvIHdlYmtpdC5vcmcuCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKQEAgLTgxMCw3ICs4MDgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTdXNwZW5kZWRQ
YWdlRGllc0FmdGVyQmFja0ZvcndhcmRMaXN0SXRlbUlzR29uZSkKICAgICBFWFBFQ1RfRVEod2Vi
a2l0UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIAogICAgIC8vIHdlYmtp
dC5vcmcgKyBhcHBsZS5jb20gcHJvY2Vzc2VzLgotICAgIEVYUEVDVF9FUSgyVSwgW3Byb2Nlc3NQ
b29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgy
VSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hl
ZF0pOwogCiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvbWFpbjIuaHRtbCJdXTsKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTgyMSwxNSArODE5LDE0IEBAIFRF
U1QoUHJvY2Vzc1N3YXAsIFN1c3BlbmRlZFBhZ2VEaWVzQWZ0ZXJCYWNrRm9yd2FyZExpc3RJdGVt
SXNHb25lKQogICAgIEVYUEVDVF9FUSh3ZWJraXRQSUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl0pOwogCiAgICAgLy8gYXBwbGUuY29tIGlzIG5vdCBsb25nZXIgcHJlc2VudCBpbiB0
aGUgYmFjay9mb3J3YXJkIGxpc3QgYW5kIHRoZXJlIHNob3VsZCB0aGVyZWZvcmUgYmUgbm8tc3Vz
cGVuZGVkIHBhZ2UgZm9yIGl0LgotICAgIHdoaWxlIChbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3ND
b3VudElnbm9yaW5nUHJld2FybWVkXSA+IDF1KQorICAgIHdoaWxlIChbcHJvY2Vzc1Bvb2wgX3dl
YlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSA+IDF1KQogICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwogfQogCiAjaWYgUExBVEZPUk0oTUFD
KQogVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFnZXNJbkFjdGl2aXR5TW9uaXRvcikKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtOTE3LDggKzkxNCw3IEBAIFRFU1QoUHJvY2Vzc1N3
YXAsIFN1c3BlbmRlZFBhZ2VzSW5BY3Rpdml0eU1vbml0b3IpCiAKIFRFU1QoUHJvY2Vzc1N3YXAs
IEJhY2tXaXRob3V0U3VzcGVuZGVkUGFnZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNv
blByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAt
OTc1LDggKzk3MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEJhY2tXaXRob3V0U3VzcGVuZGVkUGFn
ZSkKIAogVEVTVChQcm9jZXNzU3dhcCwgQmFja05hdmlnYXRpb25BZnRlclNlc3Npb25SZXN0b3Jl
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xMDMyLDggKzEwMjcsNyBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBCYWNrTmF2aWdhdGlvbkFmdGVyU2Vzc2lvblJlc3RvcmUpCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIENyb3NzU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJv
Y2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vz
c1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmll
d0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwpAQCAtMTA3Miw4ICsxMDY2LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRl
V2luZG93T3Blbk5vT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc09yaWdpbkJ1dFNh
bWVTaXRlV2luZG93T3Blbk5vT3BlbmVyKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0x
MTEyLDggKzExMDUsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc09yaWdpbkJ1dFNhbWVTaXRl
V2luZG93T3Blbk5vT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVXaW5kb3dP
cGVuV2l0aE9wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0g
WUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVyID0gWUVTOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtMTE1Myw4ICsxMTQ1LDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlV2luZG93T3BlbldpdGhPcGVuZXIpCiAKIFRF
U1QoUHJvY2Vzc1N3YXAsIFNhbWVTaXRlV2luZG93T3Blbk5vT3BlbmVyKQogewotICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CkBAIC0xMTkyLDggKzExODMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTYW1l
U2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQmxh
bmtUYXJnZXRXaXRoT3BlbmVyKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xMjMyLDgg
KzEyMjIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVCbGFua1RhcmdldFdpdGhPcGVu
ZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUJsYW5rVGFyZ2V0SW1wbGljaXROb09w
ZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTI3Miw4ICsxMjYxLDcgQEAgVEVT
VChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQmxhbmtUYXJnZXRJbXBsaWNpdE5vT3BlbmVyKQogCiBU
RVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVCbGFua1RhcmdldE5vT3BlbmVyKQogewotICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0
byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CkBAIC0xMzEyLDggKzEzMDAsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBD
cm9zc1NpdGVCbGFua1RhcmdldE5vT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBTYW1lU2l0
ZUJsYW5rVGFyZ2V0Tm9PcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdh
dGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTEzNTQs
OCArMTM0MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVTaXRlQmxhbmtUYXJnZXROb09wZW5l
cikKIAogVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3RGcm9tTmV3V2ViVmlldykKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTM4OCw4ICsxMzc0LDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgU2VydmVyUmVkaXJlY3RGcm9tTmV3V2ViVmlldykKIAogVEVTVChQcm9jZXNzU3dhcCwg
U2VydmVyUmVkaXJlY3QpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9
IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJv
Y2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE0MzUsOCArMTQy
MCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0KQogVEVTVChQcm9jZXNzU3dh
cCwgU2VydmVyUmVkaXJlY3QyKQogewogICAgIC8vIFRoaXMgdGVzdHMgYSBsb2FkIHRoYXQgKnN0
YXJ0cyBvdXQqIHRvIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgcHJldmlvdXMgbG9hZCwgYnV0IHRo
ZW4gcmVkaXJlY3RzIHRvIGEgbmV3IG9yaWdpbi4KLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNv
blByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAt
MTQ5Myw4ICsxNDc3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3QyKQogCiBU
RVNUKFByb2Nlc3NTd2FwLCBUZXJtaW5hdGVQcm9jZXNzUmlnaHRBZnRlclN3YXApCiB7Ci0gICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBh
dXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBh
dXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKQEAgLTE1MzMsOCArMTUxNiw3IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBsaW5rVG9XZWJLaXRCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAogCiBURVNUKFByb2Nlc3NTd2Fw
LCBQb2xpY3lDYW5jZWxBZnRlclNlcnZlclJlZGlyZWN0KQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CkBAIC0xNTg3LDggKzE1NjksNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQb2xpY3lDYW5jZWxB
ZnRlclNlcnZlclJlZGlyZWN0KQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVEb3dubG9h
ZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTY0OCw4ICsxNjI5LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHN5c3RlbVByZXZpZXdDcm9zc09yaWdpblRlc3RCeXRlcyA9IFIiUFNPTlJF
U09VUkNFKAogCiBURVNUKFByb2Nlc3NTd2FwLCBTYW1lT3JpZ2luU3lzdGVtUHJldmlldykKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTY4NSw4ICsxNjY1LDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgU2FtZU9yaWdpblN5c3RlbVByZXZpZXcpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3Nz
T3JpZ2luU3lzdGVtUHJldmlldykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTcyNSw3
ICsxNzA0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5TeXN0ZW1QcmV2aWV3KQog
ZW51bSBjbGFzcyBTaG91bGRFbmFibGVQU09OIHsgTm8sIFllcyB9Owogc3RhdGljIHZvaWQgcnVu
Q2xpZW50U2lkZVJlZGlyZWN0VGVzdChTaG91bGRFbmFibGVQU09OIHNob3VsZEVuYWJsZVBTT04p
CiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IHNo
b3VsZEVuYWJsZVBTT04gPT0gU2hvdWxkRW5hYmxlUFNPTjo6WWVzID8gWUVTIDogTk87CiAgICAg
YXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCkBAIC0x
ODYwLDkgKzE4MzksNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVDbGllbnRTaWRlUmVk
aXJlY3RXaXRoUFNPTikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQ2xpZW50U2lkZVJl
ZGlyZWN0RnJvbUZpbGVVUkwpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
biA9IFlFUzsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9j
ZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtMTg5MSwxNSArMTg2OCwxNCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVD
bGllbnRTaWRlUmVkaXJlY3RGcm9tRmlsZVVSTCkKICAgICBhdXRvIHBpZDIgPSBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogICAgIEVYUEVDVF9ORShwaWQxLCBwaWQyKTsKIAotICAg
IEVYUEVDVF9FUSgxVSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdh
cm1lZF0pOworICAgIEVYUEVDVF9FUSgxVSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJ
Z25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVYUEVDVF9UUlVFKHdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QpOwogICAgIEVYUEVDVF9UUlVFKGRpZFBlcmZvcm1DbGllbnRSZWRpcmVj
dCk7CiB9CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQmFja0FmdGVyQ2xpZW50U2lkZVJl
ZGlyZWN0KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7Cisg
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29s
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xOTczLDcgKzE5NDksNyBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUJhY2tBZnRlckNsaWVudFNpZGVSZWRpcmVjdCkKIAog
c3RhdGljIHZvaWQgcnVuTmF2aWdhdGlvbldpdGhMb2NrZWRIaXN0b3J5VGVzdChTaG91bGRFbmFi
bGVQU09OIHNob3VsZEVuYWJsZVBTT04pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CiAgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IHNob3VsZEVuYWJsZVBTT04gPT0gU2hvdWxkRW5hYmxlUFNP
Tjo6WWVzID8gWUVTIDogTk87CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCkBAIC0yMDcyLDggKzIwNDgsNyBAQCB3aW5kb3cub25sb2FkID0g
ZnVuY3Rpb24oZXZ0KSB7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNlc3Npb25TdG9yYWdlKQogewot
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAg
YXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
YXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yMTI5LDggKzIxMDQsNyBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBTZXNzaW9uU3RvcmFnZSkKIAogVEVTVChQcm9jZXNzU3dhcCwgUmV1c2VTdXNwZW5kZWRQcm9j
ZXNzKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yMTkwLDggKzIxNjQsNyBAQCB2YXIgbXlX
b3JrZXIgPSBuZXcgV29ya2VyKCd3b3JrZXIuanMnKTsKIAogVEVTVChQcm9jZXNzU3dhcCwgUmV1
c2VTdXNwZW5kZWRQcm9jZXNzRXZlbklmUGFnZUNhY2hlRmFpbHMpCiB7Ci0gICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTIyNDMsOCArMjIxNiw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFJldXNlU3VzcGVu
ZGVkUHJvY2Vzc0V2ZW5JZlBhZ2VDYWNoZUZhaWxzKQogCiBURVNUKFByb2Nlc3NTd2FwLCBSZXVz
ZVN1c3BlbmRlZFByb2Nlc3NPbkJhY2tFdmVuSWZQYWdlQ2FjaGVGYWlscykKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwpAQCAtMjI5Miw4ICsyMjY0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHdpdGhT
dWJmcmFtZXNUZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9jZXNzU3dhcCwg
SGlzdG9yeUl0ZW1JRENvbmZ1c2lvbikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdh
dGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjM1OCw4
ICsyMzI5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgSGlzdG9yeUl0ZW1JRENvbmZ1c2lvbikKIAog
VEVTVChQcm9jZXNzU3dhcCwgR29Ub1NlY29uZEl0ZW1JbkJhY2tIaXN0b3J5KQogewotICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
c2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CkBAIC0yNDQ1LDExICsyNDE1LDkgQEAgZW51bSBjbGFzcyBSZXRhaW5QYWdl
SW5CdW5kbGUgeyBObywgWWVzIH07CiAKIHZvaWQgdGVzdFJldXNlU3VzcGVuZGVkUHJvY2Vzc0Zv
clJlZ3VsYXJOYXZpZ2F0aW9uKFJldGFpblBhZ2VJbkJ1bmRsZSByZXRhaW5QYWdlSW5CdW5kbGUp
CiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsK
ICAgICBpZiAocmV0YWluUGFnZUluQnVuZGxlID09IFJldGFpblBhZ2VJbkJ1bmRsZTo6WWVzKQog
ICAgICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEluamVjdGVkQnVuZGxlVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJUZXN0V2ViS2l0QVBJIiB3aXRo
RXh0ZW5zaW9uOkAid2tidW5kbGUiXV07Ci0KICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHRO
UyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgaWYgKHJldGFpblBhZ2VJbkJ1bmRsZSA9PSBS
ZXRhaW5QYWdlSW5CdW5kbGU6OlllcykKICAgICAgICAgW3Byb2Nlc3NQb29sIF9zZXRPYmplY3Q6
QCJCdW5kbGVSZXRhaW5QYWdlUGx1Z0luIiBmb3JCdW5kbGVQYXJhbWV0ZXI6VGVzdFdlYktpdEFQ
STo6VXRpbDo6VGVzdFBsdWdJbkNsYXNzTmFtZVBhcmFtZXRlcl07CkBAIC0yNTI1LDggKzI0OTMs
NyBAQCBzdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lc09ubHlTdWJmcmFtZTIgPSBSIlBTT05S
RVNPVVJDRSgKIAogVEVTVChQcm9jZXNzU3dhcCwgTWFpbkZyYW1lc09ubHkpCiB7Ci0gICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBz
ZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHBy
b2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKQEAgLTI1NzEsOCArMjUzOCw3IEBAIG9ubG9hZCA9ICgpID0+IHsKIAogVEVT
VChQcm9jZXNzU3dhcCwgUGFnZVpvb21MZXZlbEFmdGVyU3dhcCkKIHsKLSAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtMjY0OCw5ICsyNjE0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG5hdmlnYXRlQmVm
b3JlUGFnZUxvYWRFbmRCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAogCiBURVNUKFByb2Nlc3NTd2Fw
LCBOYXZpZ2F0ZUNyb3NzU2l0ZUJlZm9yZVBhZ2VMb2FkRW5kKQogewotICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uOllFU107Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBz
ZXRQcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHk6WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBh
dXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBh
dXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKQEAgLTI2NzksOCArMjY0Myw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAs
IE5hdmlnYXRlQ3Jvc3NTaXRlQmVmb3JlUGFnZUxvYWRFbmQpCiAKIFRFU1QoUHJvY2Vzc1N3YXAs
IERvU2FtZVNpdGVOYXZpZ2F0aW9uQWZ0ZXJDcm9zc1NpdGVQcm92aXNpb25hbExvYWRTdGFydGVk
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNzIxLDggKzI2ODQsNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBEb1NhbWVTaXRlTmF2aWdhdGlvbkFmdGVyQ3Jvc3NTaXRlUHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZCkKIAogVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFnZUxpbWl0KQogewotICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0
byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CkBAIC0yNzcxLDEzICsyNzMzLDEyIEBAIFRFU1QoUHJvY2Vzc1N3YXAs
IFN1c3BlbmRlZFBhZ2VMaW1pdCkKICAgICBFWFBFQ1RfRVEoNXUsIHNlZW5QSURzLnNpemUoKSk7
CiAKICAgICAvLyBCdXQgbm90IGFsbCBvZiB0aG9zZSBwcm9jZXNzZXMgc2hvdWxkIHN0aWxsIGJl
IGFsaXZlICgxIHZpc2libGUsIG1heGltdW1TdXNwZW5kZWRQYWdlQ291bnQgc3VzcGVuZGVkKS4K
LSAgICBFWFBFQ1RfRVEoW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdh
cm1lZF0sICgxVSArIG1heGltdW1TdXNwZW5kZWRQYWdlQ291bnQpKTsKKyAgICBFWFBFQ1RfRVEo
W3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0s
ICgxVSArIG1heGltdW1TdXNwZW5kZWRQYWdlQ291bnQpKTsKIH0KIAogVEVTVChQcm9jZXNzU3dh
cCwgUGFnZUNhY2hlMSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBb
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNd
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjgwMiw3ICsyNzYzLDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgUGFnZUNhY2hlMSkKIAogICAgIGF1dG8gcGlkQWZ0ZXJMb2Fk
MSA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAKLSAgICBFWFBFQ1RfRVEoMXUs
IFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBF
WFBFQ1RfRVEoMXUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJt
ZWRBbmRDYWNoZWRdKTsKIAogICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1s
Il1dOwogCkBAIC0yODEyLDcgKzI3NzMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdlQ2FjaGUx
KQogCiAgICAgYXV0byBwaWRBZnRlckxvYWQyID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlm
aWVyXTsKIAotICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJ
Z25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQ
cm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVYUEVDVF9ORShw
aWRBZnRlckxvYWQxLCBwaWRBZnRlckxvYWQyKTsKIAogICAgIFt3ZWJWaWV3IGdvQmFja107CkBA
IC0yODIzLDcgKzI3ODQsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdlQ2FjaGUxKQogCiAgICAg
YXV0byBwaWRBZnRlckxvYWQzID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKIAot
ICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1By
ZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291
bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVYUEVDVF9FUShwaWRBZnRlckxv
YWQxLCBwaWRBZnRlckxvYWQzKTsKICAgICBFWFBFQ1RfRVEoMXUsIFtyZWNlaXZlZE1lc3NhZ2Vz
IGNvdW50XSk7CiAgICAgRVhQRUNUX1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMF0gaXNF
cXVhbFRvU3RyaW5nOkAiV2FzIHBlcnNpc3RlZCIgXSk7CkBAIC0yODM3LDcgKzI3OTgsNyBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBQYWdlQ2FjaGUxKQogCiAgICAgYXV0byBwaWRBZnRlckxvYWQ0ID0g
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKIAotICAgIEVYUEVDVF9FUSgydSwgW3By
b2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVD
VF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFu
ZENhY2hlZF0pOwogICAgIEVYUEVDVF9FUShwaWRBZnRlckxvYWQyLCBwaWRBZnRlckxvYWQ0KTsK
ICAgICBFWFBFQ1RfRVEoMnUsIFtyZWNlaXZlZE1lc3NhZ2VzIGNvdW50XSk7CiAgICAgRVhQRUNU
X1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0gaXNFcXVhbFRvU3RyaW5nOkAiV2FzIHBl
cnNpc3RlZCIgXSk7CkBAIC0yODQ2LDkgKzI4MDcsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdl
Q2FjaGUxKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOdW1iZXJPZlByZXdhcm1lZFByb2Nlc3NlcykK
IHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwotICAgIFtwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gc2V0UHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5OllFU107
CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yODY2LDcgKzI4MjUsNyBA
QCBURVNUKFByb2Nlc3NTd2FwLCBOdW1iZXJPZlByZXdhcm1lZFByb2Nlc3NlcykKICAgICBkb25l
ID0gZmFsc2U7CiAKICAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0Nv
dW50XSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudEln
bm9yaW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDF1LCBbcHJvY2Vzc1Bvb2wgX3dlYlBy
b2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAgICAgRVhQRUNUX1RSVUUo
W3Byb2Nlc3NQb29sIF9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzXSk7CiAKICAgICByZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246
Ly93d3cuZ29vZ2xlLmNvbS9tYWluLmh0bWwiXV07CkBAIC0yODc1LDcgKzI4MzQsNyBAQCBURVNU
KFByb2Nlc3NTd2FwLCBOdW1iZXJPZlByZXdhcm1lZFByb2Nlc3NlcykKICAgICBkb25lID0gZmFs
c2U7CiAKICAgICBFWFBFQ1RfRVEoM3UsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50XSk7
Ci0gICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5n
UHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3ND
b3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAgICAgRVhQRUNUX1RSVUUoW3Byb2Nl
c3NQb29sIF9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzXSk7CiB9CiAKQEAgLTI4OTcsOCArMjg1Niw3
IEBAIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIGZ1bmN0aW9uKGV2ZW50KSB7
CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VTaG93SGlkZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wg
PSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwpAQCAtMjk4OSw4ICsyOTQ3LDcgQEAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBm
dW5jdGlvbihldmVudCkgewogCiBURVNUKFByb2Nlc3NTd2FwLCBMb2FkVW5sb2FkKQogewotICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0
byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CkBAIC0zMDY2LDggKzMwMjMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBM
b2FkVW5sb2FkKQogCiBURVNUKFByb2Nlc3NTd2FwLCBXZWJJbnNwZWN0b3IpCiB7Ci0gICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKQEAgLTMxMjksOCArMzA4NSw3IEBAIGxpbmsuaHJlZiA9IFVSTC5jcmVh
dGVPYmplY3RVUkwoYmxvYik7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVPcmlnaW5CbG9iTmF2
aWdhdGlvbikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwor
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9v
bCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzE2NCw4ICszMTE5LDcgQEAg
VEVTVChQcm9jZXNzU3dhcCwgU2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uKQogCiBURVNUKFByb2Nl
c3NTd2FwLCBDcm9zc09yaWdpbkJsb2JOYXZpZ2F0aW9uKQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CkBAIC0zMjIzLDggKzMxNzcsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc09yaWdpbkJs
b2JOYXZpZ2F0aW9uKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvQWJvdXRCbGFuaykK
IHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
OwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
IAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzI1Nyw4ICszMjEwLDcgQEAgVEVTVChQcm9j
ZXNzU3dhcCwgTmF2aWdhdGVUb0Fib3V0QmxhbmspCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmln
YXRlVG9EYXRhVVJMKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZ
RVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nl
c3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0zMjkxLDkgKzMyNDMs
NyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvRGF0YVVSTCkKIAogVEVTVChQcm9jZXNz
U3dhcCwgUHJvY2Vzc1JldXNlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
OllFU107Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRBbHdheXNLZWVwQW5kUmV1
c2VTd2FwcGVkUHJvY2Vzc2VzOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CkBAIC0zMzM4LDkgKzMyODgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQcm9jZXNzUmV1c2Up
CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFByb2Nlc3NSZXVzZWVUTERQbHVzMikKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gc2V0QWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczpZRVNdOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzM4NSw4ICszMzMzLDcgQEAgVEVTVChQ
cm9jZXNzU3dhcCwgUHJvY2Vzc1JldXNlZVRMRFBsdXMyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBD
b25jdXJyZW50SGlzdG9yeU5hdmlnYXRpb25zKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBw
c29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFk
b3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBA
IC0zNDU1LDggKzM0MDIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb25jdXJyZW50SGlzdG9yeU5h
dmlnYXRpb25zKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvSW52YWxpZFVSTCkKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzUwNyw4ICszNDUzLDcgQEAgb25wYWdlc2hvdyA9
IGZ1bmN0aW9uKGV2ZW50KSB7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlVG9EYXRhVVJM
VGhlbkJhY2spCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsK
KyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucGFnZUNhY2hl
RW5hYmxlZCA9IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIApAQCAtMzU0Myw4ICszNDg4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2
aWdhdGVUb0RhdGFVUkxUaGVuQmFjaykKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVDcm9z
c1NpdGVXaXRoUGFnZUNhY2hlRGlzYWJsZWQpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBz
b25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCkucGFnZUNhY2hlRW5hYmxlZCA9IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBh
ZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtMzYzNCw4ICszNTc4LDcgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIG5hdmlnYXRlQmFja0Zyb21KU0J5dGVzID0gUiJQU09OUkVTT1VSQ0Uo
CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlVG9Dcm9zc1NpdGVUaGVuQmFja0Zyb21KUykK
IHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
OwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wYWdlQ2FjaGVFbmFibGVkID0g
Tk87CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCkBAIC0zNjc1LDggKzM2MTgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvQ3Jv
c3NTaXRlVGhlbkJhY2tGcm9tSlMpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENsb3NlUGFnZUFmdGVy
Q3Jvc3NTaXRlUHJvdmlzaW9uYWxMb2FkKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0z
NzM0LDggKzM2NzYsNyBAQCBAZW5kCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIExvYWRpbmdTdGF0ZUFm
dGVyUG9saWN5RGVjaXNpb24pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
biA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTM5NDAsOSAr
Mzg4MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE9wZW5lckxpbmtBZnRlckFQSUNvbnRyb2xsZWRQ
cm9jZXNzU3dhcHBpbmdPZk9wZW5lZSkKIGVudW0gY2xhc3MgRXhwZWN0U3dhcCB7IE5vLCBZZXMg
fTsKIHN0YXRpYyB2b2lkIHJ1blByb2Nlc3NTd2FwRHVlVG9SZWxhdGVkV2ViVmlld1Rlc3QoTlNV
UkwqIHJlbGF0ZWRWaWV3VVJMLCBOU1VSTCogdGFyZ2V0VVJMLCBFeHBlY3RTd2FwIGV4cGVjdFN3
YXApCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNh
bGx5ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlldzFDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTM5OTgs
OSArMzkzNyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5vUHJvY2Vzc1N3YXBEdWVUb1JlbGF0ZWRW
aWV3KQogCiBURVNUKFByb2Nlc3NTd2FwLCBUZXJtaW5hdGVkU3VzcGVuZGVkUGFnZVByb2Nlc3Mp
CiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5
ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDA2Myw4ICs0
MDAwLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVGVybWluYXRlZFN1c3BlbmRlZFBhZ2VQcm9jZXNz
KQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUJhY2tBbmRGb3J0aCkKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8g
d2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwpAQCAtNDExNSw4ICs0MDUxLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2
aWdhdGVCYWNrQW5kRm9ydGgpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFN3YXBPbkxvYWRIVE1MU3Ry
aW5nKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00MTU5LDkgKzQwOTQsNyBAQCBURVNU
KFByb2Nlc3NTd2FwLCBTd2FwT25Mb2FkSFRNTFN0cmluZykKIAogVEVTVChQcm9jZXNzU3dhcCwg
VXNlUHJld2FybWVkUHJvY2Vzc0FmdGVyVGVybWluYXRpbmdOZXR3b3JrUHJvY2VzcykKIHsKLSAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7
CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpA
QCAtNDE5NSw4ICs0MTI4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVXNlUHJld2FybWVkUHJvY2Vz
c0FmdGVyVGVybWluYXRpbmdOZXR3b3JrUHJvY2VzcykKIAogVEVTVChQcm9jZXNzU3dhcCwgVXNl
U2Vzc2lvbkNvb2tpZXNBZnRlclByb2Nlc3NTd2FwSW5Qcml2YXRlQnJvd3NpbmcpCiB7Ci0gICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBh
dXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgUmV0
YWluUHRyPFdLV2Vic2l0ZURhdGFTdG9yZT4gZXBoZW1lcmFsU3RvcmUgPSBbV0tXZWJzaXRlRGF0
YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwogCkBAIC00MjU1LDggKzQxODcsNyBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBVc2VTZXNzaW9uQ29va2llc0FmdGVyUHJvY2Vzc1N3YXBJblByaXZh
dGVCcm93c2luZykKIAogVEVTVChQcm9jZXNzU3dhcCwgVGVybWluYXRlUHJvY2Vzc0FmdGVyUHJv
Y2Vzc1N3YXApCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQzMDksOCArNDI0MCw3IEBAIFRF
U1QoUHJvY2Vzc1N3YXAsIFRlcm1pbmF0ZVByb2Nlc3NBZnRlclByb2Nlc3NTd2FwKQogCiBURVNU
KFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUNyb3NzT3JpZ2luV2l0aE9wZW5lZSkKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwpAQCAtNDM4Nyw4ICs0MzE3LDcgQEAgZnVuY3Rpb24gc2F2ZU9wZW5lZSgpCiAK
IFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQ3Jvc3NPcmlnaW5XaXRoT3BlbmVyKQogewotICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0
byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CkBAIC00NTE2LDggKzQ0NDUsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBO
YXZpZ2F0ZUNyb3NzT3JpZ2luV2l0aE9wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgR29CYWNr
VG9TdXNwZW5kZWRQYWdlV2l0aE1haW5GcmFtZUlEVGhhdElzTm90T25lKQogewotICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0
UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9j
ZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJW
aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CkBAIC00NjA3LDggKzQ1MzUsNyBAQCBib2R5IHsKIAogVEVTVChQcm9jZXNzU3dh
cCwgU2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNv
blByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAt
NDY4Nyw4ICs0NjE0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudEJsb2NraW5nQWZ0ZXJQ
cm9jZXNzU3dhcCkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRv
bmUgPSBmYWxzZTsKIAotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107Cisg
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29s
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00ODEwLDEwICs0NzM2LDcgQEAg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVlfSk7CiAKIFRF
U1QoUHJvY2Vzc1N3YXAsIEdldFVzZXJNZWRpYUNhcHR1cmVTdGF0ZSkKIHsKLSAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCku
cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7Ci0KKyAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361953</attachid>
            <date>2019-02-13 16:06:16 -0800</date>
            <delta_ts>2019-02-13 19:49:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194594-20190213160615.patch</filename>
            <type>text/plain</type>
            <size>108934</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk5ZjQ4MWQxMjA4M2Zm
ZGI5MjAyNDEwYzMzOWIyNmQ4ZDFkYmM2NC4uM2ZlYWI1ZGU3ODhkYTMxZjc4NGMwOWQ0NDAxYjZk
ZDY0NTE3MmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAyLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIEludHJvZHVjZSBh
IFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc5MzM5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgbG9jYWxpemFibGUgc3RyaW5ncy4KKworICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisKIDIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgbG9jYWxpemFibGUgc3RyaW5ncy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYzczZmQ3ZWYzYWRiYTI4MmRhZmM2OGRkMzhmMDJlMTdiZjg0MWIyNS4uZDQ5YWJiZmQ4
MzY3MzU1ZmQ3NmFiMzJiM2FlNDVlOTM1OTQzMGQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYg
QEAKKzIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBbUFNPTl0gSW50cm9kdWNlIGEgV2ViQ29udGVudCBQcm9jZXNzIGNhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ1OTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ2NzkzMzk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZSB0byBy
ZWR1Y2UgdGhlIG51bWJlciBvZiBwcm9jZXNzIGxhdW5jaGVzIHdoZW4KKyAgICAgICAgcHJvY2Vz
cyBzd2FwIG9uIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwgYW5kIHRvIHJlZHVjZSB0aGUgcG93ZXIg
Y29zdCBvZiB0aGUgZmVhdHVyZS4KKworICAgICAgICBJZiBhIFdlYlByb2Nlc3MgbG9hZGVkIHBh
Z2VzIGZyb20gYSBzaW5nbGUgcmVnaXN0cmFibGUgZG9tYWluIHRoZW4gaXQgaXMgZWxpZ2libGUK
KyAgICAgICAgZm9yIHRoZSBjYWNoZS4gV2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIG5hdmlnYXRp
b24gdG8gYSBuZXcgcmVnaXN0cmFibGUgZG9tYWluLCB3ZQorICAgICAgICBub3cgYXR0ZW1wdCB0
byByZXRyaWV2ZSBhIHByb2Nlc3MgZnJvbSB0aGUgY2FjaGUgZm9yIHRoZSBkb21haW4gaW4gcXVl
c3Rpb24gaW5zdGVhZAorICAgICAgICBvZiBhbHdheXMgbGF1bmNoaW5nIGEgbmV3IG9uZS4KKwor
ICAgICAgICBUaGUgV2ViUHJvY2VzcyBjYWNoZSBjdXJyZW50bHkgaGFzIHRoZSBmb2xsb3dpbmcg
YXR0cmlidXRlczoKKyAgICAgICAgLSBJdCBtYXkgY29udGFpbnMgNCBwcm9jZXNzZXMgcGVyIEdC
IG9mIFJBTSB0aGUgbWFjaGluZSBoYXMsIHVwIHRvIDMwIHByb2Nlc3Nlcy4KKyAgICAgICAgLSBX
ZWJQcm9jZXNzZXMgYXV0b21hdGljYWxseSBnZXQgZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBhZnRl
ciAzMCBtaW51dGVzLgorICAgICAgICAtIElmIHRoZSBhcHBsaWNhdGlvbiBpcyBubyBsb25nZXIg
dGhlIGFjdGl2ZSBhcHAsIHRoZW4gdGhlIGNhY2hlIHdpbGwgZ2V0IGNsZWFyZWQKKyAgICAgICAg
ICBhZnRlciA1IG1pbnV0ZXMuCisgICAgICAgIC0gV2ViUHJvY2Vzc2VzIHRoYXQgYXJlIGluIHRo
ZSBjYWNoZSBhcmUgcmVwb3J0ZWQgYXMgIihDYWNoZWQpIiBpbiBBY3Rpdml0eSBNb25pdG9yLgor
CisgICAgICAgIFRoZSBXZWJQcm9jZXNzIGNhY2hlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBk
ZWZhdWx0IGFuZCBjYW4gYnkgZW5hYmxlZCBieSB0aGUKKyAgICAgICAgY2xpZW50IHZpYSBTUEku
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0p
OgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Omxhc3RQcm9jZXNzSWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldExhc3RQcm9j
ZXNzSWRlbnRpZmllcik6CisgICAgICAgIEFkZCBuZXcgbGFzdFByb2Nlc3NJZGVudGlmaWVyIGRh
dGEgbWVtYmVyIHRoYXQgcmVmbGVjdHMgd2hpY2ggcHJvY2VzcyB0aGlzIGl0ZW0KKyAgICAgICAg
d2FzIGxhc3QgbG9hZGVkIGluLiBJdCBpcyBub3JtYWxseSBpZGVudGljYWwgdG8gdGhlIGlkZW50
aWZpZXIgb2YgdGhlIHByb2Nlc3MKKyAgICAgICAgdGhhdCBjcmVhdGVkIHRoZSBpdGVtIGJ1dCBp
dCBnZXRzIG92ZXJyaWRlbiBpbiBjYXNlIG9mIGNyb3NzLXNpdGUgY2xpZW50LXNpZGUKKyAgICAg
ICAgcmVkaXJlY3QsIHNpbmNlIGEgbmV3IHByb2Nlc3MgdGFrZXMgb3ZlciB0aGUgaXRlbSBpbiB0
aGlzIGNhc2UuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBzb3Vy
Y2UgZmlsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNw
cDoKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKToK
KyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VzV2ViUHJvY2Vzc0NhY2hlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRVc2Vz
V2ViUHJvY2Vzc0NhY2hlOl0pOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gdXNlc1dlYlByb2Nlc3NDYWNoZV0pOgorICAgICAgICBBZGQgbmV3IFNQSSB0byBlbmFibGUg
dGhlIFdlYlByb2Nlc3MgY2FjaGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3Vu
dElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICBBZGQgbmV3IFNQSSBmb3IgdGVz
dGluZyB3aGljaCByZXR1cm5zIHRoZSBudW1iZXIgb2YgV2ViUHJvY2Vzc2VzIGlnbm9yaW5nCisg
ICAgICAgIGJvdGggcHJld2FybWVkIGFuZCBjYWNoZWQgb25lcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6Cisg
ICAgICAgIEFkZCBhcHBsaWNhdGlvbiBhY3RpdmUgc3RhdGUgb2JzZXJ2ZXJzIGFzIHRoZSBXZWJQ
cm9jZXNzIGNhY2hlIGdldHMgY2xlYXJlZAorICAgICAgICB3aGVuIHRoZSBhcHBsaWNhdGlvbiBy
ZXNpZ25zIGFjdGl2ZSBzdGF0ZSBmb3IgbW9yZSB0aGFuIDUgbWludXRlcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIFdoZW4gZG9pbmcgYSBs
b2FkIGluIGEgbmV3IHByb2Nlc3Mgd2l0aCB0aGUgQmFja0ZvcndhcmRMaXN0IGxvY2tlZCAoaS5l
LiBjbGllbnQtc2lkZQorICAgICAgICByZWRpcmVjdCksIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhl
IGxhc3QgcHJvY2VzcyBpZGVudGlmaWVyIGZvciB0aGUgQmFja0ZvcndhcmRMaXN0SXRlbS4KKyAg
ICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgbG9naWMgaW4gV2ViUHJvY2Vzc1Bv
b2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCkgcmVsaWVzIG9uCisgICAgICAgIHRoaXMgaWRlbnRp
ZmllciB0byBzZWxlY3Qgd2hpY2ggcHJvY2VzcyB0byBkbyB0aGUgaGlzdG9yeSBuYXZpZ2F0aW9u
IGludG8sIGFuZCB3ZSB3YW50CisgICAgICAgIHRvIGRvIHRoZSBsb2FkIGluIHRoZSBwb3N0LXJl
ZGlyZWN0IHByb2Nlc3MsIG5vdCB0aGUgcHJlLXJlZGlyZWN0IG9uZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICBUZWxsIHRo
ZSBXZWJQcm9jZXNzIHdoZW5ldmVyIGEgbWFpbiBmcmFtZSBwcm92aXNpb25hbCBsb2FkIGlzIHN0
YXJ0ZWQsIHByb3ZpZGluZyB0aGUgVVJMLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6Oldl
YlByb2Nlc3NDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZU1heGltdW1TaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OmV2
aWN0aW9uVGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjptYXhpbXVtU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6c2l6ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6cHJvY2Vzcyk6CisgICAg
ICAgIEFkZCBwcm9jZXNzIGNhY2hlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV93ZWJQcm9jZXNzQ2Fj
aGUpOgorICAgICAgICBXZWJQcm9jZXNzQ2FjaGUgaXMgc3RvcmVkIG9uIHRoZSBXZWJQcm9jZXNz
UG9vbCB2aWEgbV93ZWJQcm9jZXNzQ2FjaGUgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIENsZWFyIHRoZSBX
ZWJQcm9jZXNzIGNhY2hlIGluIHRoZSBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZXRBcHBsaWNhdGlvbklzQWN0aXZlKToKKyAgICAgICAgTm90aWZ5IHRo
ZSBXZWJQcm9jZXNzQ2FjaGUgd2hlbmV2ZXIgdGhlIGFwcGxpY2F0aW9uJ3MgYWN0aXZlIHN0YXRl
IGNoYW5nZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBh
Z2UpOgorICAgICAgICBJZiB0aGUgc3RhdGUgb2YgUFNPTiBjaGFuZ2VzIHZpYSB0aGUgZXhwZXJp
bWVudGFsIGZlYXR1cmVzIG1lbnUsIGR5bmFtaWNhbGx5CisgICAgICAgIHVwZGF0ZSB0aGUgV2Vi
UHJvY2Vzc0NhY2hlJ3Mgc2l6ZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgY2FjaGUgaXMg
ZGlzYWJsZWQKKyAgICAgICAgd2hlbiBQU09OIGlzIGRpc2FibGVkLgorCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmcpOgorICAgICAg
ICBDbGVhciB0aGUgV2ViUHJvY2VzcyBjYWNoZSBvbiBtZW1vcnkgcHJlc3N1cmUuCisKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwp
OgorICAgICAgICBRdWVyeSB0aGUgV2ViUHJvY2Vzc0NhY2hlIGJlZm9yZSBhdHRlbXB0aW5nIHRv
IGNyZWF0ZSBhIG5ldyBXZWJQcm9jZXNzIGZvciBhIGNyb3NzLXNpdGUKKyAgICAgICAgbmF2aWdh
dGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZmluZFJldXNhYmxlU3Vz
cGVuZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICBUaGlzIGxvZ2ljIHdhcyBzcGxpdCBvdXQgb2Yg
cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCgpIHRvIHJlZHVjZSB0aGUgc2l6ZQorICAgICAg
ICBvZiB0aGUgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZSk6CisgICAgICAgIFVwZGF0
ZSB0aGUgaXNJblByb2Nlc3NDYWNoZSBmbGFnIG9uIHRoZSBXZWJQcm9jZXNzUHJveHkgYW5kIHNl
bmQgYW4gSVBDIHRvIHRoZSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3Mgc28gdGhhdCBpdCBj
YW4gdXBkYXRlIGl0cyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3IuCisgICAgICAgIFdlIGFsc28g
bmVlZCB0byBzdG9wIGhvbGRpbmcgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBXZWJQcm9jZXNz
UG9vbCB3aGVuZXZlciB0aGUgcHJvY2VzcworICAgICAgICBpcyBpbiB0aGUgY2FjaGUsIHNpbWls
YXJseSB0byB3aGF0IHdlIGRvIGZvciBwcmUtd2FybWVkIHByb2Nlc3NlcywgZ2l2ZW4gdGhhdCBz
dWNoIHByb2Nlc3NlcworICAgICAgICBzaG91bGQgbm90IGtlZXAgdGhlIHByb2Nlc3MgcG9vbCBh
bGl2ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2Vi
UGFnZSk6CisgICAgICAgIEFzc2VydCB0aGF0IHdlIG5ldmVyIHRyeSB0byBhZGQgYSBwYWdlIHRv
IGEgY2FjaGVkIHByb2Nlc3MsIGl0IHNob3VsZCBiZSB0YWtlbiBvdXQgb2YgdGhlCisgICAgICAg
IGNhY2hlIGJlZm9yZSB1c2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpo
YXNQcm92aXNpb25hbFBhZ2VXaXRoSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0pOgorICAg
ICAgICBJbiBjYXNlIG9mIGNsaWVudC1zaWRlIHJlZGlyZWN0cywgdGhlIHByZXZpb3VzIHByb2Nl
c3Mgd291bGQgc29tZXRpbWVzIHNlbmQgYW4gSVBDIGNhdXNpbmcKKyAgICAgICAgdGhlIFVJUHJv
Y2VzcycgYmFja2ZvcndhcmQgbGlzdCBpdGVtIHRvIGdldCB1cGRhdGVkIHdpdGggdGhlIHByZS1y
ZWRpcmVjdCBVUkwgYWZ0ZXIgd2UndmUKKyAgICAgICAgYWxyZWFkeSByZWRpcmVjdGVkLiBUaGlz
IHByZXZpb3VzbHkgd291bGQgYmUgdW5saWtlbHkgdG8gb2NjdXIgYmVjYXVzZSB3ZSBkbyBub3Qg
c3VzcGVuZAorICAgICAgICBjbGllbnQtcmVkaXJlY3QgcGFnZXMgYW5kIHRoZWlyIHByb2Nlc3Mg
d291bGQgbm9ybWFsbHkgZXhpdCBiZWZvcmUgZ2V0dGluZyBhIGNoYW5jZSB0byBzZW5kCisgICAg
ICAgIHRoZSBJUEMuIEhvd2V2ZXIsIHdpdGggdGhlIHByb2Nlc3MgY2FjaGUsIHRoZSBidWcgYmVj
YW1lIG9idmlvdXMgYXMgdGhlIHByb2Nlc3Mgd291bGQgc3RheQorICAgICAgICBhbGl2ZSBhbmQg
c2VuZCB1cCB0aGUgImJhZCIgSVBDLiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ugbm93IG9ubHkg
bGV0IHRoZSBJUEMgdXBkYXRlIHRoZQorICAgICAgICBpdGVtIGlmIHRoZSBpdGVtJ3MgcGFnZSBp
cyAoc3RpbGwpIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvY2Vzcy4gSW4gdGhlIGZ1dHVyZSwgd2Ug
bWF5IHdhbnQKKyAgICAgICAgdG8gdXBkYXRlIHRoZSBJUEMgc28gdGhhdCBpdCBnZXRzIHNlbnQg
dG8gdGhlIFdlYlBhZ2VQcm94eSBpbnN0ZWFkIG9mIHRoZSBXZWJQcm9jZXNzUHJveHkuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWls
ZWRUb0xhdW5jaCk6CisgICAgICAgIElmIGEgY2FjaGVkIFdlYlByb2Nlc3MgY3Jhc2hlcywgcmVt
b3ZlIGl0IGZyb20gdGhlIGNhY2hlIHNvIHRoYXQgd2UgZG8gbm90IGF0dGVtcHQgdG8gdXNlCisg
ICAgICAgIGl0IGZvciBhIGxvYWQgbGF0ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUgY29uc3QpOgorICAgICAgICBPbmx5
IGNhY2hlIFdlYlByb2Nlc3NlcyB0aGF0IGhhdmUgbG9hZGVkIGEgc2luZ2xlIHJlZ2lzdHJhYmxl
IGRvbWFpbi4gQWxzbyBwcmV2ZW50IGNhY2hpbmcKKyAgICAgICAgZm9yIHNlcnZpY2Ugd29ya2Vy
IGFuZCBpbnNwZWN0b3IgcHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6bWF5YmVTaHV0RG93bik6CisgICAgICAgIElmIHRoZSBwcm9jZXNzIGlzIGNhY2hlYWJs
ZSwgYWRkIGl0IHRvIHRoZSBjYWNoZSBpbnN0ZWFkIG9mIHNodXR0aW5nIGl0IGRvd24gcmlnaHQg
YXdheS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUF1
eGlsaWFyeVByb2Nlc3MpOgorICAgICAgICBNYWtlIHN1cmUgd2UgZG8gbm90IGF0dGVtcHQgdG8g
dGVybWluYXRlIGEgcHJvY2Vzc2VzIHRoYXQgaXMgaW4gdGhlIGNhY2hlLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJh
bWUpOgorICAgICAgICBXaGVuZXZlciBhIG1haW4gZnJhbWUgcHJvdmlzaW9uYWwgbG9hZCBzdGFy
dHMsIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHByb2Nlc3MncyBhc3NvY2lhdGVkCisgICAgICAg
IHJlZ2lzdHJhYmxlIGRvbWFpbi4gbnVsbG9wdCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBh
c3NvY2lhdGVkIGRvbWFpbiB5ZXQuIE51bGwgc3RyaW5nCisgICAgICAgIGluZGljYXRlcyB0aGF0
IHRoZSBwcm9jZXNzIGlzIGFzc29jaWF0ZWQgd2l0aCBzZXZlcmFsIHJlZ2lzdHJhYmxlIGRvbWFp
biBhbmQgaXMgdGhlcmVmb3JlCisgICAgICAgIG5vdCBlbGlnaWJsZSBmb3IgY2FjaGluZy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6aXNJblByb2Nlc3NDYWNoZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvdmlzaW9uYWxQYWdlQ291bnQgY29uc3QpOgorICAg
ICAgICBBZGQgY29udmVuaWVuY2UgZ2V0dGVycy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzIHRvIHByb2plY3QuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpzZXRJc0luUHJvY2Vzc0NhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKToKKyAgICAgICAgVXBkYXRl
IHRoZSBXZWJQcm9jZXNzJyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3Igd2hlbmV2ZXIgaXQgZ29l
cyBpbnRvIG9yIG91dCBvZiB0aGUgV2ViUHJvY2VzcworICAgICAgICBjYWNoZS4KKwogMjAxOS0w
Mi0xMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bmNyeXB0ZWQgUERGcyBpbnNpZGUgPGVtYmVkPiBvciA8b2JqZWN0PiBjcmFzaCB0aGUgV2ViIENv
bnRlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmlu
Z3MKaW5kZXggZmJlMjk5ZWUyYTI0YTIzYjc1M2IxMjYwN2NlZDI1NmQwZWQxYzBlYS4uZjE0NDE5
MTgzNWMzOTBjMjFkZTViZGYxYzk2NWI2YjFhOTVhYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9l
bi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00Niw2ICs0Niw5IEBACiAvKiBWaXNpYmxl
IG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9u
IG5hbWUuICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogVmlz
aWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNh
dGlvbiBuYW1lLiAqLworIiVAIFdlYiBDb250ZW50IChDYWNoZWQpIiA9ICIlQCBXZWIgQ29udGVu
dCAoQ2FjaGVkKSI7CisKIC8qIFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBh
cmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCAoUHJl
d2FybWVkKSIgPSAiJUAgV2ViIENvbnRlbnQgKFByZXdhcm1lZCkiOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDAzYjQzZjFjOTdi
MWViODdkZGMwZjQ0MTUzZWM4MjhmNWNlNDQ0OTguLjlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdj
ZjRkODQyZGZmMzk2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwCkBAIC00Myw2ICs0Myw3IEBAIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0
CiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFn
ZUlEKQogICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUp
KQogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXIo
bV9pdGVtU3RhdGUuaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJl
c3VsdCA9IGFsbEl0ZW1zKCkuYWRkKG1faXRlbVN0YXRlLmlkZW50aWZpZXIsIHRoaXMpOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggYmZmMGM4ODIwNDFmNmE5
YWE4MzMyMTY2ZmQ3YjM3N2VjM2YxYjU4My4uODcyZWYxODA5NWQxOGNjM2E5YzVlNzQ2M2QzMGU3
ZjYxNDg3MmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaApAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiBpdGVtU3RhdGUoKSB7IHJldHVybiBtX2l0ZW1TdGF0ZTsgfQogICAgIHVp
bnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKKyAgICBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVu
dGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1f
bGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCiAgICAgdm9pZCBzZXRQYWdl
U3RhdGUoUGFnZVN0YXRlIHBhZ2VTdGF0ZSkgeyBtX2l0ZW1TdGF0ZS5wYWdlU3RhdGUgPSBXVEZN
b3ZlKHBhZ2VTdGF0ZSk7IH0KICAgICBjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXRlbVN0YXRlLnBhZ2VTdGF0ZTsgfQogCkBAIC04NCw2ICs4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAgICAg
dWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY2NzNmM2RmODE3NWI0N2U0ZDVkNzA0
NTk2MTA5ZGFiNWMyMzY4NWYuLjU5Y2VmODNhNTIzOWVlYTBjYTE5N2Y2OGNiMzcyMDY3Yjk3OWUw
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dApAQCAtMjc3LDYgKzI3Nyw3IEBAIFVJUHJvY2Vzcy9XZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuY3BwCiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAogVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAK
K1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAK
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXgg
ZDE3OTc4ZTVlNjQxMTAxMDhmOGYxMjBmNmRmMGRkY2MxMmI3ODQ4My4uMjNjZjAzNTE5ODk1Yjlk
MzhjNDJiYjA5OTQ0YjQ1NzI1YTY2NTlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEy
NCw2ICsxMjQsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBl
ZFByb2Nlc3NlcyA9IHRoaXMtPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczsK
ICAgICBjb3B5LT5tX3Byb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXIgPSB0aGlzLT5t
X3Byb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXI7CiAgICAgY29weS0+bV9pc0F1dG9t
YXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50ID0gdGhpcy0+bV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGNvcHktPm1fdXNlc1dlYlByb2Nlc3ND
YWNoZSA9IHRoaXMtPm1fdXNlc1dlYlByb2Nlc3NDYWNoZTsKICNpZiBFTkFCTEUoUFJPWElNSVRZ
X05FVFdPUktJTkcpCiAgICAgY29weS0+bV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyID0gdGhp
cy0+bV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
aW5kZXggZTNhNmE3NzI1NjliNjgzMDhhNTczMDAwNmJjMTk4MzdlOWJkNDYwOC4uYTAxNjYxMmM2
OWM3MzdlMjgwZDI4ODBiY2IxMTJmNjliZTg3YWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAt
NjcsNiArNjcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YXNBdXRvbWF0aWNQcm9jZXNzV2FybWlu
Z1NldEJ5Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gISFtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1p
bmdFbmFibGVkQnlDbGllbnQ7IH0KICAgICB2b2lkIHNldElzQXV0b21hdGljUHJvY2Vzc1dhcm1p
bmdFbmFibGVkKGJvb2wgdmFsdWUpIHsgbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxl
ZEJ5Q2xpZW50ID0gdmFsdWU7IH0KIAorICAgIHZvaWQgc2V0VXNlc1dlYlByb2Nlc3NDYWNoZShi
b29sIHZhbHVlKSB7IG1fdXNlc1dlYlByb2Nlc3NDYWNoZSA9IHZhbHVlOyB9CisgICAgYm9vbCB1
c2VzV2ViUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91c2VzV2ViUHJvY2Vzc0NhY2hl
OyB9CisKICAgICBib29sIGNsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJl
d2FybWluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRp
Y1Byb2Nlc3NQcmV3YXJtaW5nOyB9CiAgICAgdm9pZCBzZXRDbGllbnRXb3VsZEJlbmVmaXRGcm9t
QXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcoYm9vbCB2YWx1ZSkgeyBtX2NsaWVudFdvdWxkQmVu
ZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyA9IHZhbHVlOyB9CiAKQEAgLTIyMyw2
ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNLZWVwQW5kUmV1c2VTd2FwcGVk
UHJvY2Vzc2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVu
V2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGJvb2wgbV91c2VzV2ViUHJvY2Vzc0Nh
Y2hlIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRp
Y1Byb2Nlc3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKICAgICBXVEY6OlN0cmluZyBtX2N1c3RvbVdl
YkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsKICAgICBib29sIG1faXNKSVRFbmFibGVk
IHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAppbmRleCAzMzhjMGRkZDc2OTZjMzJkNWQ1
YzBhZTFkYTg2NWJmMzI1YzFiMzdlLi4xNzY1MzE0MmRmNjdmNGYzYmVlMjkxMjU0NjVlNDE4ZGU2
Njg3Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcApAQCAtMTg4LDYgKzE4OCwxNiBAQCB2b2lk
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRQcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHko
V0tDb250ZXh0Q29uZmlndXJhdAogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0SXNBdXRv
bWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWQocHJld2FybXMpOwogfQogCitib29sIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT51
c2VzV2ViUHJvY2Vzc0NhY2hlKCk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNl
dFVzZXNXZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0
aW9uLCBib29sIHVzZXMpCit7CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRVc2VzV2Vi
UHJvY2Vzc0NhY2hlKHVzZXMpOworfQorCiBib29sIFdLQ29udGV4dENvbmZpZ3VyYXRpb25BbHdh
eXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5hbHdh
eXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmgKaW5kZXgg
YWQzZTdhMTcyZjgwMzU0ZWNhOTgyNDAzYTQ5ZmE4ODUxNDJmZTU3NS4uOTM5ODVhZDgzN2ZjYTk2
YzNjOGIzZmQ5ZDY1ODI4OWM4NjdiMjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaApAQCAtNzgsNiAr
NzgsOSBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0UHJvY2Vzc1N3
YXBzT25OYXZpZ2F0aW9uKFdLQ29udGV4dENvbmZpZwogV0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0
Q29uZmlndXJhdGlvblByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29u
ZmlndXJhdGlvblNldFByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgcHJld2FybXMpOwogCitXS19FWFBPUlQg
Ym9vbCBXS0NvbnRleHRDb25maWd1cmF0aW9uVXNlc1dlYlByb2Nlc3NDYWNoZShXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
Q29uZmlndXJhdGlvblNldFVzZXNXZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uLCBib29sIHVzZXMpOworCiBXS19FWFBPUlQgYm9vbCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlcyhXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250
ZXh0Q29uZmlndXJhdGlvblNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBib29sIGtlZXBBbmRSZXVzZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KaW5kZXggMjk4YjQ0ZTJmMThmODY4ZDc5NDE4OTRkMmRhNzkzYWJkZGQxNjI2MS4uYzM0
NWNkOTgzMmQ1YzliYTE4YzE1YmU3ZWU0NWMwYTEzNjg1ZTUxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTM5LDYgKzM5
LDcgQEAKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2ltcG9ydCAi
V2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCIK
QEAgLTQ3NSw2ICs0NzYsMTEgQEAgLSAoc2l6ZV90KV93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1By
ZXdhcm1lZAogICAgIHJldHVybiBbc2VsZiBfd2ViUHJvY2Vzc0NvdW50XSAtIChbc2VsZiBfaGFz
UHJld2FybWVkV2ViUHJvY2Vzc10gPyAxIDogMCk7CiB9CiAKKy0gKHNpemVfdClfd2ViUHJvY2Vz
c0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX3dl
YlByb2Nlc3NDb3VudF0gLSAoW3NlbGYgX2hhc1ByZXdhcm1lZFdlYlByb2Nlc3NdID8gMSA6IDAp
IC0gX3Byb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5zaXplKCk7Cit9CisKIC0gKHNpemVf
dClfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnQKIHsKICAgICBhdXRvIGFsbFdlYlByb2Nlc3Nl
cyA9IF9wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDQ3MGRk
NTM5NGEyMTQwNzA0NmFlMmJhZTUzODdiNjY1OGViMmNiNmUuLjA3NWY3MTk3ZTk3Y2NjYTlhNDc1
ZWE4NDg2ODQ2ZWUxNzIyNmM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC05Niw2ICs5Niw3IEBA
CiAtIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MyksIGlvcygxMS4wKSk7CiAtIChCT09MKV9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoc2l6ZV90
KV93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xNCksIGlvcygxMi4wKSk7CistIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudElnbm9yaW5n
UHJld2FybWVkQW5kQ2FjaGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtIChzaXplX3QpX3NlcnZpY2VX
b3JrZXJQcm9jZXNzQ291bnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIu
MCkpOwogLSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
aW5kZXggZjY3MWQ3YjRjMmI4YmY5ODZiNmU0YTUwY2UwOTA5NTE3MjhjYTQzZC4uNDA1MDBkOTZh
MmRlNGRkMjExOTFhZDgzNzNkMWVhNmNjM2UxYjc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaApAQCAtNjcsNiArNjcsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEw
KSwgaW9zKDguMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbHdheXNLZWVwQW5kUmV1
c2VTd2FwcGVkUHJvY2Vzc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjE0KSwgaW9zKDEy
LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByb2Nlc3NTd2Fwc09uV2luZG93T3Bl
bldpdGhPcGVuZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwog
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlc1dlYlByb2Nlc3NDYWNoZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTQpLCBpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNK
SVRFbmFibGVkKSBCT09MIEpJVEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQpp
bmRleCA4YTM2NzgxOTg4ZWUwN2MyZTcwNTg5ZmJmYjM1N2UwZjExYTBlYTMyLi4wMWJmNmE1NDVk
OGZkNzc2MjllZDQ0MDIwOTQ2NTBiOGVmZmI0NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubW0KQEAgLTI1OCw2ICsyNTgsMTYgQEAgLSAoQk9PTClwcmV3YXJtc1Byb2Nlc3Nlc0F1
dG9tYXRpY2FsbHkKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+aXNBdXRv
bWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWQoKTsKIH0KIAorLSAodm9pZClzZXRVc2VzV2ViUHJv
Y2Vzc0NhY2hlOihCT09MKXZhbHVlCit7CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+
c2V0VXNlc1dlYlByb2Nlc3NDYWNoZSh2YWx1ZSk7Cit9CisKKy0gKEJPT0wpdXNlc1dlYlByb2Nl
c3NDYWNoZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT51c2VzV2Vi
UHJvY2Vzc0NhY2hlKCk7Cit9CisKIC0gKHZvaWQpc2V0QWx3YXlzS2VlcEFuZFJldXNlU3dhcHBl
ZFByb2Nlc3NlczooQk9PTClzd2FwcwogewogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24t
PnNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoc3dhcHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5k
ZXggNzBjOTFhNmExNDUxOGVlNTk2MmVhYTc4YmFhNzAwZDVmYWU2MTJjYS4uOTg3NDZjMzdjNTI0
Yzg3ODRiN2E2ZTgyNjY3NjY2NTE3NWY2ZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00MTgsNiArNDE4LDE0
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkK
ICAgICB9XTsKICNlbmRpZgogCisgICAgbV9hY3RpdmF0aW9uT2JzZXJ2ZXIgPSBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpbTlNPcGVy
YXRpb25RdWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90
aWZpY2F0aW9uKSB7CisgICAgICAgIHNldEFwcGxpY2F0aW9uSXNBY3RpdmUodHJ1ZSk7CisgICAg
fV07CisKKyAgICBtX2RlYWN0aXZhdGlvbk9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNBcHBsaWNhdGlvbkRpZFJlc2ln
bkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHAgcXVldWU6W05TT3BlcmF0aW9uUXVldWUg
Y3VycmVudFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikg
eworICAgICAgICBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGZhbHNlKTsKKyAgICB9XTsKKwogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC00MzMsNiArNDQxLDggQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCiAjaWYg
RU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zY3JvbGxlclN0eWxl
Tm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCldOwogI2VuZGlmCisgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2FjdGl2YXRpb25PYnNlcnZl
ci5nZXQoKV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1v
dmVPYnNlcnZlcjptX2RlYWN0aXZhdGlvbk9ic2VydmVyLmdldCgpXTsKICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGEzZjU3MTFiMDUxZWUxZjQ5NGUwZjdjYTdmYmU4
OTY1OWYxY2M0MzQuLmI2NmZmOWI0ZGQxZDA3ZjY2YWFhYTRhMTE5NmY5YTgzNGRmOTdjODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
QEAgLTE1NCw2ICsxNTQsMTIgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CiAKKyAgICAvLyBJZiB0aGlzIGlzIGEgY2xp
ZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBu
ZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2Fz
ZSwKKyAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9j
ZXNzSWRlbnRpZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tG
b3J3YXJkIGl0ZW0gdG8gaGFwcGVuIGluIHRoZQorICAgIC8vIG5ldyBwcm9jZXNzLgorICAgIGlm
IChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0
KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQorICAgICAgICBuYXZpZ2F0
aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpKTsKKwogICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVz
dCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGExM2Yy
YmI4MzE2MWU0ZjNhNmUwOWNkN2MxMGY1ODNkYmNkMDVmYS4uMTc0NTMxYTQzNDVmYjg1YmJkYzgw
ODlkNWZkOTNmN2UzNTc4MWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0zODM0LDYgKzM4MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAg
bV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24pOwog
CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIHByb2Nlc3MtPmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKHVybCk7CiAgICAgICAgIHJlcG9ydFBhZ2VM
b2FkUmVzdWx0KFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRp
b24gfSk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwog
ICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodHJhbnNhY3Rp
b24sIHVybCwgdW5yZWFjaGFibGVVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0YTRjNjIwY2Q2YTQ1YzBlYjAyYjQ4YWU0Njdm
ZDVjMzMxYTZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHAKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBTZWNvbmRzIGNhY2hl
ZFByb2Nlc3NMaWZldGltZSB7IDMwX21pbiB9Oworc3RhdGljIFNlY29uZHMgY2xlYXJpbmdEZWxh
eUFmdGVyQXBwbGljYXRpb25SZXNpZ25zQWN0aXZlIHsgNV9taW4gfTsKKworV2ViUHJvY2Vzc0Nh
Y2hlOjpXZWJQcm9jZXNzQ2FjaGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDog
bV9ldmljdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlByb2Nlc3NDYWNoZTo6
Y2xlYXIpCit7CisgICAgdXBkYXRlTWF4aW11bVNpemUocHJvY2Vzc1Bvb2wpOworfQorCitib29s
IFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzcyhjb25zdCBTdHJpbmcmIHJlZ2lzdHJhYmxlRG9t
YWluLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCit7CisgICAgQVNTRVJUKCFyZWdp
c3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cGFnZUNvdW50
KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cHJvdmlzaW9uYWxQYWdlQ291bnQoKSk7CisgICAg
QVNTRVJUKCFwcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmhhc1N1c3BlbmRlZFBhZ2VGb3IocHJvY2Vz
cykpOworCisgICAgaWYgKCFtYXhpbXVtU2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB3aGlsZSAobV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5zaXplKCkgPj0gbWF4
aW11bVNpemUoKSkgeworICAgICAgICBhdXRvIGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJs
ZURvbWFpbi5yYW5kb20oKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
JXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3MoKTogRXZpY3RpbmcgcHJvY2VzcyAlaSBm
cm9tIFdlYlByb2Nlc3MgY2FjaGUiLCB0aGlzLCBpdC0+dmFsdWUtPnByb2Nlc3MoKS5wcm9jZXNz
SWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5y
ZW1vdmUoaXQpOworICAgIH0KKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wcm9jZXNzZXNQZXJS
ZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtwcm9jZXNzID0gcHJv
Y2Vzcy5jb3B5UmVmKCldKCkgbXV0YWJsZSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZFByb2Nlc3M+KFdURk1vdmUocHJvY2VzcykpOworICAgIH0pOworICAgIGlmICgh
YWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNz
OiBBZGRpbmcgcHJvY2VzcyAlaSB0byBXZWJQcm9jZXNzIGNhY2hlLCBjYWNoZSBzaXplOiBbJXUg
LyAldV0iLCB0aGlzLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBzaXplKCksIG1heGlt
dW1TaXplKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFN0cmluZyYgcmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3sKKyAgICBhdXRvIGl0ID0gbV9w
cm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNp
dGVEYXRhU3RvcmUoKSAhPSAmZGF0YVN0b3JlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGF1dG8gcHJvY2VzcyA9IGl0LT52YWx1ZS0+dGFrZVByb2Nlc3MoKTsKKyAgICBtX3Byb2Nl
c3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShpdCk7CisgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzOiBUYWtpbmcg
cHJvY2VzcyAlaSBmcm9tIFdlYlByb2Nlc3MgY2FjaGUsIGNhY2hlIHNpemU6IFsldSAvICV1XSIs
IHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHNpemUoKSwgbWF4aW11bVNpemUo
KSk7CisKKyAgICBBU1NFUlQoIXByb2Nlc3MtPnBhZ2VDb3VudCgpKTsKKyAgICBBU1NFUlQoIXBy
b2Nlc3MtPnByb3Zpc2lvbmFsUGFnZUNvdW50KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5oYXNTdXNwZW5kZWRQYWdlRm9yKHByb2Nlc3MpKTsKKworICAgIHJldHVybiBX
VEZNb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlTWF4aW11
bVNpemUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQoreworICAgIGlmICghcHJvY2Vzc1Bv
b2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNz
UG9vbC5jb25maWd1cmF0aW9uKCkudXNlc1dlYlByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgIGlm
ICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigp
KQorICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9j
ZXNzQ2FjaGU6OnVwZGF0ZU1heGltdW1TaXplOiBDYWNoZSBpcyBkaXNhYmxlZCBiZWNhdXNlIHBy
b2Nlc3Mgc3dhcCBvbiBuYXZpZ2F0aW9uIGlzIGRpc2FibGVkIiwgdGhpcyk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJv
Y2Vzc0NhY2hlOjp1cGRhdGVNYXhpbXVtU2l6ZTogQ2FjaGUgaXMgZGlzYWJsZWQgYnkgY2xpZW50
IiwgdGhpcyk7CisgICAgICAgIG1fbWF4aW11bVNpemUgPSAwOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHNpemVfdCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gR0I7CisKKyAgICAgICAgLy8gQWxs
b3cgNCBwcm9jZXNzZXMgaW4gdGhlIGNhY2hlIHBlciBHQiBvZiBSQU0sIHVwIHRvIDMwIHByb2Nl
c3Nlcy4KKyAgICAgICAgbV9tYXhpbXVtU2l6ZSA9IHN0ZDo6bWluPHVuc2lnbmVkPihtZW1vcnlT
aXplICogNCwgMzApOworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAt
IFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlTWF4aW11bVNpemU6IENhY2hlIGhhcyBhIG1heGltdW0g
c2l6ZSBvZiAldSBwcm9jZXNzZXMiLCB0aGlzLCBtYXhpbXVtU2l6ZSgpKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1fbWF4aW11bVNpemUpCisgICAgICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc0NhY2hlOjpjbGVhcigpCit7CisgICAgaWYgKG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXIoKSBldmljdGluZyAldSBw
cm9jZXNzZXMiLCB0aGlzLCBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnNpemUoKSk7
CisgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5jbGVhcigpOworfQorCit2b2lk
IFdlYlByb2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZShib29sIHZhbHVlKQorewor
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjpz
ZXRBcHBsaWNhdGlvbklzQWN0aXZlKCVkKSIsIHRoaXMsIHZhbHVlKTsKKyAgICBpZiAodmFsdWUp
CisgICAgICAgIG1fZXZpY3Rpb25UaW1lci5zdG9wKCk7CisgICAgZWxzZSBpZiAoIW1fcHJvY2Vz
c2VzUGVyUmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICBtX2V2aWN0aW9uVGlt
ZXIuc3RhcnRPbmVTaG90KGNsZWFyaW5nRGVsYXlBZnRlckFwcGxpY2F0aW9uUmVzaWduc0FjdGl2
ZSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpldmljdFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKQoreworICAgIGF1dG8gaXQgPSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxl
RG9tYWluLmZpbmQocHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBBU1NFUlQoaXQg
IT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSk7CisgICAgQVNTRVJUKCZp
dC0+dmFsdWUtPnByb2Nlc3MoKSA9PSAmcHJvY2Vzcyk7CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNzKCk6IEV2aWN0
aW5nIHByb2Nlc3MgJWkgZnJvbSBXZWJQcm9jZXNzIGNhY2hlIGJlY2F1c2UgaXQgZXhwaXJlZCIs
IHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICBtX3Byb2Nlc3Nlc1Bl
clJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShpdCk7Cit9CisKK1dlYlByb2Nlc3NDYWNoZTo6Q2Fj
aGVkUHJvY2Vzczo6Q2FjaGVkUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Mp
CisgICAgOiBtX3Byb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSkKKyAgICAsIG1fZXZpY3Rpb25UaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDYWNoZWRQcm9jZXNzOjpldmljdGlvblRpbWVyRmly
ZWQpCit7CisgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKHRydWUpOworICAgIG1f
ZXZpY3Rpb25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkUHJvY2Vzc0xpZmV0aW1lKTsKK30KKwor
V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2VzcygpCit7CisgICAg
aWYgKCFtX3Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9wcm9jZXNz
LT5wYWdlQ291bnQoKSk7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3MtPnByb3Zpc2lvbmFsUGFnZUNv
dW50KCkpOworICAgIEFTU0VSVCghbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmhhc1N1c3BlbmRl
ZFBhZ2VGb3IoKm1fcHJvY2VzcykpOworCisgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0Nh
Y2hlKGZhbHNlKTsKKyAgICBtX3Byb2Nlc3MtPnNodXREb3duKCk7Cit9CisKK1JlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVByb2Nlc3MoKQor
eworICAgIEFTU0VSVChtX3Byb2Nlc3MpOworICAgIG1fZXZpY3Rpb25UaW1lci5zdG9wKCk7Cisg
ICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKGZhbHNlKTsKKyAgICByZXR1cm4gbV9w
cm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpDYWNo
ZWRQcm9jZXNzOjpldmljdGlvblRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3Mp
OworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS53ZWJQcm9jZXNzQ2FjaGUoKS5ldmljdFBy
b2Nlc3MoKm1fcHJvY2Vzcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTJhMTY1MWE3OTg0
NDc4MDU2MTViOTI0MmFkZmU0NTQ0N2UyMmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYlByb2Nl
c3NQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNzIFdlYlByb2Nlc3NDYWNo
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
V2ViUHJvY2Vzc0NhY2hlKFdlYlByb2Nlc3NQb29sJik7CisKKyAgICBib29sIGFkZFByb2Nlc3Mo
Y29uc3QgU3RyaW5nJiByZWdpc3RyYWJsZURvbWFpbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7
CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3MoY29uc3QgU3RyaW5nJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYpOworCisgICAgdm9pZCB1cGRhdGVN
YXhpbXVtU2l6ZShXZWJQcm9jZXNzUG9vbCYpOworICAgIHVuc2lnbmVkIG1heGltdW1TaXplKCkg
eyByZXR1cm4gbV9tYXhpbXVtU2l6ZTsgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uc2l6ZSgpOyB9CisKKyAgICB2
b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGJvb2wpOworCitw
cml2YXRlOgorICAgIHZvaWQgZXZpY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOworCisgICAg
dW5zaWduZWQgbV9tYXhpbXVtU2l6ZSB7IDAgfTsKKworICAgIGNsYXNzIENhY2hlZFByb2Nlc3Mg
eworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAg
IENhY2hlZFByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7CisgICAgICAgIH5DYWNoZWRQ
cm9jZXNzKCk7CisKKyAgICAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3MoKTsK
KyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgeyBBU1NFUlQobV9wcm9jZXNzKTsg
cmV0dXJuICptX3Byb2Nlc3M7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZXZpY3Rp
b25UaW1lckZpcmVkKCk7CisKKyAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9j
ZXNzOworICAgICAgICBSdW5Mb29wOjpUaW1lcjxDYWNoZWRQcm9jZXNzPiBtX2V2aWN0aW9uVGlt
ZXI7CisgICAgfTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVk
UHJvY2Vzcz4+IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW47CisgICAgUnVuTG9vcDo6
VGltZXI8V2ViUHJvY2Vzc0NhY2hlPiBtX2V2aWN0aW9uVGltZXI7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCBjOWRlN2ZiNTQxYjAwYTVhMzA5MjhhZTQ5OTlkZTZiNWE1NWM4NDA1Li5lYjdkMzgwY2Yw
NmZlNGM3MGMzODUwYjg5MmRlYmE0NjRhNzVmYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiV2ViUGFn
ZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcmVm
ZXJlbmNlc0tleXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgpAQCAtMjU1LDYgKzI1
Niw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3ND
b3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMo
KTsgfSkKICAgICAsIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3Vu
dGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICNlbmRpZgorICAgICwg
bV93ZWJQcm9jZXNzQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+KCp0aGlzKSkK
IHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKQEAgLTMxMyw2ICszMTUsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2Vi
UHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CiAKIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogeworICAgIG1fd2ViUHJvY2Vz
c0NhY2hlLT5jbGVhcigpOworCiAgICAgYm9vbCByZW1vdmVkID0gcHJvY2Vzc1Bvb2xzKCkucmVt
b3ZlRmlyc3QodGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKIApA
QCAtNDU1LDYgKzQ1OSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXh0Q2hlY2tlclN0YXRl
Q2hhbmdlZCgpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpT
ZXRUZXh0Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldEFwcGxpY2F0aW9uSXNBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKK3sKKyAg
ICBtX3dlYlByb2Nlc3NDYWNoZS0+c2V0QXBwbGljYXRpb25Jc0FjdGl2ZShpc0FjdGl2ZSk7Cit9
CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNjcmVlblByb3BlcnRpZXNTdGF0ZUNoYW5nZWQoKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTExNTQsNyArMTE2MywxMSBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBSZWY8QVBJOgogICAgICAgICBlbmFibGVQcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlv
biA9IGZhbHNlOwogI2VuZGlmCiAKKyAgICBib29sIHdhc1Byb2Nlc3NTd2FwcGluZ09uTmF2aWdh
dGlvbkVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigp
OwogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4
cGVyaW1lbnRhbEZlYXR1cmVzKGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9u
KTsKKyAgICBpZiAod2FzUHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9uRW5hYmxlZCAhPSBtX2Nv
bmZpZ3VyYXRpb24tPnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpKQorICAgICAgICBtX3dlYlBy
b2Nlc3NDYWNoZS0+dXBkYXRlTWF4aW11bVNpemUoKnRoaXMpOworCiAgICAgbV9jb25maWd1cmF0
aW9uLT5zZXRTaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyhwYWdlLT5wcmVmZXJlbmNlcygp
LmNhcHR1cmVBdWRpb0luVUlQcm9jZXNzRW5hYmxlZCgpKTsKICAgICBtX2NvbmZpZ3VyYXRpb24t
PnNldFNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzKHBhZ2UtPnByZWZlcmVuY2VzKCkuY2Fw
dHVyZVZpZGVvSW5VSVByb2Nlc3NFbmFibGVkKCkpOwogCkBAIC0xMzE5LDYgKzEzMzIsMTAgQEAg
V2ViUHJvY2Vzc1Bvb2w6OlN0YXRpc3RpY3MmIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkK
IAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJuaW5nKENyaXRp
Y2FsKQogeworICAgIFJFTEVBU0VfTE9HKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJv
Y2Vzc1Bvb2w6OmhhbmRsZU1lbW9yeVByZXNzdXJlV2FybmluZyIsIHRoaXMpOworCisgICAgbV93
ZWJQcm9jZXNzQ2FjaGUtPmNsZWFyKCk7CisKICAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzKQog
ICAgICAgICBtX3ByZXdhcm1lZFByb2Nlc3MtPnNodXREb3duKCk7CiAgICAgQVNTRVJUKCFtX3By
ZXdhcm1lZFByb2Nlc3MpOwpAQCAtMjE1MywxNCArMjE3MCwyNCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6
TmF2aWdhdAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5h
bChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRl
ZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8mIHRhcmdldFVSTCA9IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKS51cmwoKTsKKyAg
ICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gdG9SZWdpc3RyYWJsZURvbWFpbih0YXJnZXRVUkwp
OworCisgICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcGFnZSA9IG1ha2VSZWYocGFnZSksIHRhcmdldFVSTCwgcmVnaXN0cmFi
bGVEb21haW5dICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKKyAgICAgICAgaWYgKGF1dG8g
cHJvY2VzcyA9IHdlYlByb2Nlc3NDYWNoZSgpLnRha2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWlu
LCBwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKQorICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3Mu
cmVsZWFzZU5vbk51bGwoKTsKKworICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgc3VzcGVu
ZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiByZWdpc3RyYWJsZSBkb21haW4gYW5kIHVzZSBpdHMgcHJv
Y2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCisgICAgICAgIGlmIChhdXRv
IHByb2Nlc3MgPSBmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhyZWdpc3RyYWJsZURv
bWFpbiwgcGFnZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
IlVzaW5nIFdlYlByb2Nlc3MgJWkgZnJvbSBhIFN1c3BlbmRlZFBhZ2UiLCBwcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9jZXNzLnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgIH0KIAotICAgIGF1dG8gY3JlYXRlTmV3UHJvY2VzcyA9IFsmXSAoKSAt
PiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViUHJvY2Vzc1By
b3h5PiBwcm9jZXNzID0gdHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MocGFnZS53ZWJzaXRlRGF0YVN0
b3JlKCkpKSB7CisgICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJv
Y2VzcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKSB7CiAgICAgICAgICAgICB0cnlQcmV3YXJt
V2l0aERvbWFpbkluZm9ybWF0aW9uKCpwcm9jZXNzLCB0YXJnZXRVUkwpOwogICAgICAgICAgICAg
cmV0dXJuIHByb2Nlc3MucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgfQogCi0gICAgICAgIHJl
dHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsK
ICAgICB9OwogCiAgICAgaWYgKHVzZXNTaW5nbGVXZWJQcm9jZXNzKCkpCkBAIC0yMTk5LDEyICsy
MjI2LDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJu
YWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzID0gV2Vi
UHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih0YXJnZXRJdGVtLT5pdGVtSUQoKS5w
cm9jZXNzSWRlbnRpZmllcikpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+
IHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHRhcmdldEl0
ZW0tPmxhc3RQcm9jZXNzSWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEFy
Y2hpdGVjdHVyYWxseSB3ZSBkbyBub3QgY3VycmVudGx5IHN1cHBvcnQgbXVsdGlwbGUgV2ViUGFn
ZSdzIHdpdGggdGhlIHNhbWUgSUQgaW4gYSBnaXZlbiBXZWJQcm9jZXNzLgogICAgICAgICAgICAg
Ly8gSW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBXZWJQcm9jZXNzIGhhcyBhIFN1c3BlbmRlZFBhZ2VQ
cm94eSBmb3IgdGhpcyBXZWJQYWdlLCB3ZSBjYW4gdGhyb3cgaXQgYXdheSB0byBzdXBwb3J0CiAg
ICAgICAgICAgICAvLyBXZWJQcm9jZXNzIHJlLXVzZS4KICAgICAgICAgICAgIHJlbW92ZUFsbFN1
c3BlbmRlZFBhZ2VzRm9yUGFnZShwYWdlLCBwcm9jZXNzLmdldCgpKTsKIAorICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIHJlbW92ZSB0aGUgcHJvY2VzcyBmcm9tIHRoZSBjYWNoZSBpZiBpdCBp
cyBpbiB0aGVyZSBzaW5jZSB3ZSdyZSBhYm91dCB0byB1c2UgaXQuCisgICAgICAgICAgICBpZiAo
cHJvY2Vzcy0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byByZW1v
dmVkUHJvY2VzcyA9IHdlYlByb2Nlc3NDYWNoZSgpLnRha2VQcm9jZXNzKHByb2Nlc3MtPnJlZ2lz
dHJhYmxlRG9tYWluKCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUHJvY2VzcywgcmVtb3ZlZFByb2Nlc3MuZ2V0KCkg
PT0gcHJvY2Vzcy5nZXQoKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihwcm9jZXNzLnJlbGVhc2VOb25OdWxsKCksIG51bGxwdHIsICJVc2lu
ZyB0YXJnZXQgYmFjay9mb3J3YXJkIGl0ZW0ncyBwcm9jZXNzIl9zKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTIyMjgsNyArMjI2MSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JO
YXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAKICAgICBT
dHJpbmcgcmVhc29uID0gIk5hdmlnYXRpb24gaXMgY3Jvc3Mtc2l0ZSJfczsKICAgICAKLSAgICBh
dXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gdG9SZWdpc3RyYWJsZURvbWFpbih0YXJnZXRVUkwpOwog
ICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNz
ZXMoKSkgewogICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykg
Q29uc2lkZXJpbmcgcmUtdXNlIG9mIGEgcHJldmlvdXNseSBjYWNoZWQgcHJvY2VzcyBmb3IgZG9t
YWluICVzIiwgcmVnaXN0cmFibGVEb21haW4udXRmOCgpLmRhdGEoKSk7CiAKQEAgLTIyNDcsMjIg
KzIyNzksMjYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRl
cm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICAgICAgfQogICAgIH0KIAot
ICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBzdXNwZW5kZWQgcGFnZSBmb3IgdGhlIGdpdmVuIHJl
Z2lzdHJhYmxlIGRvbWFpbiBhbmQgdXNlIGl0cyBwcm9jZXNzIGlmIHdlIGRvLCBmb3IgcGVyZm9y
bWFuY2UgcmVhc29ucy4KKyAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlTmV3UHJv
Y2VzcygpLCBudWxscHRyLCByZWFzb24pOworfQorCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBX
ZWJQcm9jZXNzUG9vbDo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoY29uc3QgU3Ry
aW5nJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5JiBwYWdlKQorewogICAgIGF1dG8g
aXQgPSBtX3N1c3BlbmRlZFBhZ2VzLmZpbmRJZihbJl0oYXV0byYgc3VzcGVuZGVkUGFnZSkgewot
ICAgICAgICByZXR1cm4gc3VzcGVuZGVkUGFnZS0+cmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdp
c3RyYWJsZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIHN1c3BlbmRlZFBhZ2UtPnJlZ2lzdHJhYmxl
RG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnN1c3BlbmRlZFBhZ2UtPnByb2Nlc3Mo
KS53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJnBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpOwogICAgIH0p
OwotICAgIGlmIChpdCAhPSBtX3N1c3BlbmRlZFBhZ2VzLmVuZCgpKSB7Ci0gICAgICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IHByb2Nlc3MgPSAoKml0KS0+cHJvY2VzcygpOworICAgIGlmIChpdCA9
PSBtX3N1c3BlbmRlZFBhZ2VzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICAvLyBGSVhNRTogSWYgdGhlIFN1c3BlbmRlZFBhZ2UgaXMgZm9yIHRoaXMgcGFnZSwgdGhl
biB3ZSBuZWVkIHRvIGRlc3Ryb3kgdGhlIHN1c3BlbmRlZCBwYWdlIGFzIHdlIGRvIG5vdCBzdXBw
b3J0IGhhdmluZwotICAgICAgICAvLyBtdWx0aXBsZSBXZWJQYWdlcyB3aXRoIHRoZSBzYW1lIElE
IGluIGEgZ2l2ZW4gV2ViUHJvY2VzcyBjdXJyZW50bHkgKGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTExNjYpLgotICAgICAgICBpZiAoJigqaXQpLT5wYWdlKCkgPT0g
JnBhZ2UpCi0gICAgICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZShpdCk7CisgICAgUmVm
PFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9ICgqaXQpLT5wcm9jZXNzKCk7CiAKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocHJvY2VzcyksIG51bGxwdHIsIHJlYXNv
bik7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBJZiB0aGUgU3VzcGVuZGVkUGFnZSBpcyBmb3IgdGhp
cyBwYWdlLCB0aGVuIHdlIG5lZWQgdG8gZGVzdHJveSB0aGUgc3VzcGVuZGVkIHBhZ2UgYXMgd2Ug
ZG8gbm90IHN1cHBvcnQgaGF2aW5nCisgICAgLy8gbXVsdGlwbGUgV2ViUGFnZXMgd2l0aCB0aGUg
c2FtZSBJRCBpbiBhIGdpdmVuIFdlYlByb2Nlc3MgY3VycmVudGx5IChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTY2KS4KKyAgICBpZiAoJigqaXQpLT5wYWdlKCkg
PT0gJnBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlKGl0KTsKIAotICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVOZXdQcm9jZXNzKCksIG51bGxwdHIsIHJlYXNv
bik7CisKKyAgICByZXR1cm4gV1RGTW92ZShwcm9jZXNzKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6YWRkU3VzcGVuZGVkUGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5
PiYmIHN1c3BlbmRlZFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAppbmRleCBlNTc0ZTFkN2E2MmM0ZDdlY2YzMDgzZDJmODMzMGQ5ODEzN2U1ZmNkLi5lYmZmOWJm
OTdmYTk2OTZkMzI3MTY0YWI2Y2FlZTQ1NGJhYTJiMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBjbGFzcyBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjsKIGNsYXNzIFdlYkNvbnRleHRTdXBwbGVtZW50OwogY2xhc3MgV2ViUGFnZUdy
b3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvY2Vzc0NhY2hlOwogc3RydWN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFN0YXRpc3RpY3NEYXRh
Owogc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC0xNzYsNiArMTc3LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nl
c3NQcm94eSopOwogCisgICAgV2ViUHJvY2Vzc0NhY2hlJiB3ZWJQcm9jZXNzQ2FjaGUoKSB7IHJl
dHVybiBtX3dlYlByb2Nlc3NDYWNoZS5nZXQoKTsgfQorCiAgICAgLy8gRGlzY29ubmVjdCB0aGUg
cHJvY2VzcyBmcm9tIHRoZSBjb250ZXh0LgogICAgIHZvaWQgZGlzY29ubmVjdFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5Kik7CiAKQEAgLTQ2NCw2ICs0NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmVTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYpOwogICAgIGJvb2wgaGFzU3Vz
cGVuZGVkUGFnZUZvcihXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlUHJveHkqID0gbnVsbHB0cikg
Y29uc3Q7CiAgICAgdW5zaWduZWQgbWF4U3VzcGVuZGVkUGFnZUNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9tYXhTdXNwZW5kZWRQYWdlQ291bnQ7IH0KKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiBmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vzcyhjb25zdCBTdHJpbmcmLCBXZWJQYWdl
UHJveHkmKTsKIAogICAgIHZvaWQgZGlkUmVhY2hHb29kVGltZVRvUHJld2FybSgpOwogCkBAIC01
NDgsNiArNTUyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJOb3RpZmljYXRpb25P
YnNlcnZlcnMoKTsKICNlbmRpZgogCisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGJv
b2wpOworCiAgICAgdm9pZCBhZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmlu
ZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgUEFMOjpTZXNzaW9uSUQp
OwogICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVn
SW5PcmlnaW5IYXNoLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTY0OSw2ICs2NTUsOCBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBS
ZXRhaW5QdHI8TlNPYmplY3Q+IG1fc2Nyb2xsZXJTdHlsZU5vdGlmaWNhdGlvbk9ic2VydmVyOwog
I2VuZGlmCisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2FjdGl2YXRpb25PYnNlcnZlcjsKKyAg
ICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fZGVhY3RpdmF0aW9uT2JzZXJ2ZXI7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+IG1faGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcjsKQEAgLTczOSw2ICs3NDcsNyBAQCBwcml2YXRlOgogICAgIERlcXVlPHN0ZDo6dW5pcXVl
X3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+PiBtX3N1c3BlbmRlZFBhZ2VzOwogICAgIHVuc2lnbmVk
IG1fbWF4U3VzcGVuZGVkUGFnZUNvdW50IHsgMCB9OwogCisgICAgVW5pcXVlUmVmPFdlYlByb2Nl
c3NDYWNoZT4gbV93ZWJQcm9jZXNzQ2FjaGU7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+PiBtX3N3YXBwZWRQcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbjsK
IAogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UHJld2FybUlu
Zm9ybWF0aW9uPj4gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU2ODY4Mjg1
OTBhNTQ4MDVkZjNlMzE3OTBmZjg1MDQyZWFmNTczY2UuLjYzOWIwYjJhYjA1M2Q2MmEwZTNkOGQz
ZmNkZDgzYzY4NmU5MmExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKQEAgLTE4MSw2ICsxODIsMjMgQEAgV2ViUHJvY2Vzc1Byb3h5Ojp+
V2ViUHJvY2Vzc1Byb3h5KCkKICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0
SXNJblByb2Nlc3NDYWNoZShib29sIHZhbHVlKQoreworICAgIEFTU0VSVChtX2lzSW5Qcm9jZXNz
Q2FjaGUgIT0gdmFsdWUpOworICAgIG1faXNJblByb2Nlc3NDYWNoZSA9IHZhbHVlOworCisgICAg
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SXNJblByb2Nlc3NDYWNoZShtX2lzSW5Qcm9j
ZXNzQ2FjaGUpLCAwKTsKKworICAgIGlmIChtX2lzSW5Qcm9jZXNzQ2FjaGUpIHsKKyAgICAgICAg
Ly8gV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgbm9ybWFsbHkga2VlcCB0aGUgcHJvY2VzcyBwb29s
IGFsaXZlIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGlzIHRvIGJlIHRoZSBjYXNlCisgICAgICAgIC8v
IGZvciBjYWNoZWQgcHJvY2Vzc2VzIG9yIGl0IHdvdWxkIGxlYWsgdGhlIHBvb2wuCisgICAgICAg
IG1fcHJvY2Vzc1Bvb2wuc2V0SXNXZWFrKElzV2Vhazo6WWVzKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKKyAgICAgICAgbV9wcm9jZXNzUG9v
bC5zZXRJc1dlYWsoSXNXZWFrOjpObyk7CisgICAgfQorfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5j
aE9wdGlvbnMpCiB7CiAgICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVu
Y2hlcjo6UHJvY2Vzc1R5cGU6OldlYjsKQEAgLTMzMyw2ICszNTEsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0
X3QgcGFnZUlELAogewogICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJRCkpOwog
ICAgIEFTU0VSVCghZ2xvYmFsUGFnZU1hcCgpLmNvbnRhaW5zKHBhZ2VJRCkpOworICAgIEFTU0VS
VCghbV9pc0luUHJvY2Vzc0NhY2hlKTsKIAogICAgIGlmIChiZWdpbnNVc2luZ0RhdGFTdG9yZSA9
PSBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKQogICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdl
QmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZSk7CkBAIC00ODAsMTAgKzQ5OSwzNiBA
QCBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAj
ZW5kaWYKIAorYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1
aW50NjRfdCBwYWdlSUQpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvKiBwcm92aXNpb25hbFBhZ2Ug
OiBtX3Byb3Zpc2lvbmFsUGFnZXMpIHsKKyAgICAgICAgaWYgKHByb3Zpc2lvbmFsUGFnZS0+cGFn
ZSgpLnBhZ2VJRCgpID09IHBhZ2VJRCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5Ojppc0FsbG93ZWRU
b1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSBjb25z
dAoreworICAgIGlmIChtX3BhZ2VNYXAuY29udGFpbnMoaXRlbS5wYWdlSUQoKSkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChpdGVtLnBh
Z2VJRCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoaXRlbS5zdXNwZW5kZWRQ
YWdlKCkgJiYgaXRlbS5zdXNwZW5kZWRQYWdlKCktPnBhZ2UoKS5wYWdlSUQoKSA9PSBpdGVtLnBh
Z2VJRCgpICYmICZpdGVtLnN1c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpID09IHRoaXMpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6dXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYgaXRlbVN0YXRlKQogewotICAgIGlmIChhdXRvKiBpdGVtID0gV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6aXRlbUZvcklEKGl0ZW1TdGF0ZS5pZGVudGlmaWVyKSkKLSAgICAgICAgaXRlbS0+
c2V0UGFnZVN0YXRlKGl0ZW1TdGF0ZS5wYWdlU3RhdGUpOworICAgIGF1dG8qIGl0ZW0gPSBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjppdGVtRm9ySUQoaXRlbVN0YXRlLmlkZW50aWZpZXIpOworICAg
IGlmICghaXRlbSB8fCAhaXNBbGxvd2VkVG9VcGRhdGVCYWNrRm9yd2FyZEl0ZW0oKml0ZW0pKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpdGVtLT5zZXRQYWdlU3RhdGUoaXRlbVN0YXRlLnBhZ2VT
dGF0ZSk7CiB9CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTU5MCw2ICs2
MzUsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGVPckZhaWxl
ZFRvTGF1bmNoKCkKICAgICBhdXRvIHBhZ2VzID0gY29weVRvVmVjdG9yT2Y8UmVmUHRyPFdlYlBh
Z2VQcm94eT4+KG1fcGFnZU1hcC52YWx1ZXMoKSk7CiAgICAgYXV0byBwcm92aXNpb25hbFBhZ2Vz
ID0gV1RGOjptYXAobV9wcm92aXNpb25hbFBhZ2VzLCBbXShhdXRvKiBwcm92aXNpb25hbFBhZ2Up
IHsgcmV0dXJuIG1ha2VXZWFrUHRyKHByb3Zpc2lvbmFsUGFnZSk7IH0pOwogCisgICAgaWYgKG1f
aXNJblByb2Nlc3NDYWNoZSkgeworICAgICAgICBhdXRvIHJlbW92ZWRQcm9jZXNzID0gcHJvY2Vz
c1Bvb2woKS53ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbigp
LCB3ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQcm9j
ZXNzLCByZW1vdmVkUHJvY2Vzcy5nZXQoKSA9PSB0aGlzKTsKKyAgICB9CisKICAgICBzaHV0RG93
bigpOwogCiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKQEAgLTc2OSwxNyArODE5LDM0
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95VXNlckdlc3R1cmVUb2tlbih1aW50
NjRfdCBpZGVudGlmaWVyKQogICAgIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcC5yZW1vdmUoaWRl
bnRpZmllcik7CiB9CiAKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9j
ZXNzQ2FjaGUoKSBjb25zdAoreworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbigpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nl
c3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKFdlYktpdDo6aXNJbnNwZWN0
b3JQcm9jZXNzUG9vbChwcm9jZXNzUG9vbCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjptYXliZVNodXREb3du
KCkKIHsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8fCAhY2FuVGVybWlu
YXRlQXV4aWxpYXJ5UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoY2FuQmVB
ZGRlZFRvV2ViUHJvY2Vzc0NhY2hlKCkgJiYgcHJvY2Vzc1Bvb2woKS53ZWJQcm9jZXNzQ2FjaGUo
KS5hZGRQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluKCksICp0aGlzKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgc2h1dERvd24oKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1p
bmF0ZUF1eGlsaWFyeVByb2Nlc3MoKQogewotICAgIGlmICghbV9wYWdlTWFwLmlzRW1wdHkoKSB8
fCBtX3Byb2Nlc3NQb29sLT5oYXNTdXNwZW5kZWRQYWdlRm9yKCp0aGlzKSB8fCAhbV9wcm92aXNp
b25hbFBhZ2VzLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fcGFnZU1hcC5pc0VtcHR5KCkgfHwgbV9w
cm9jZXNzUG9vbC0+aGFzU3VzcGVuZGVkUGFnZUZvcigqdGhpcykgfHwgIW1fcHJvdmlzaW9uYWxQ
YWdlcy5pc0VtcHR5KCkgfHwgbV9pc0luUHJvY2Vzc0NhY2hlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wtPnNob3VsZFRlcm1pbmF0ZSh0aGlzKSkKQEAg
LTEzNDQsNiArMTQxMSwyMyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWN0aXZlUGFnZXNEb21h
aW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcgogICAgIGNvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRBY3RpdmVQ
YWdlc09yaWdpbnNGb3JUZXN0aW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZy
YW1lKGNvbnN0IFVSTCYgdXJsKQoreworICAgIC8vIFRoaXMgcHJvY2VzcyBoYXMgYmVlbiB1c2Vk
IGZvciBzZXZlcmFsIHJlZ2lzdHJhYmxlIGRvbWFpbnMgYWxyZWFkeS4KKyAgICBpZiAobV9yZWdp
c3RyYWJsZURvbWFpbiAmJiBtX3JlZ2lzdHJhYmxlRG9tYWluLT5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHRvUmVnaXN0cmFibGVEb21h
aW4odXJsKTsKKyAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURv
bWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgeworICAgICAgICAvLyBOdWxsIG91dCByZWdpc3Ry
YWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZl
cmFsIGRvbWFpbnMuCisgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBTdHJpbmcoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEFzc29jaWF0ZSB0aGUgcHJvY2VzcyB3aXRo
IHRoaXMgcmVnaXN0cmFibGUgZG9tYWluLgorICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKK30KKwogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2Ny
ZWVuSW5wdXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRl
eCBlYTgwOTc5NjIxZTgxNjJjODJkNjIwN2NjM2UyYjQ2ODFhNWYyMTZmLi4zNzZmM2Q1Nzc5M2U3
YmZjNDkxYzM1MzYzZDIwODgzMmQ3ZGY0NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaApAQCAtMTA4LDYgKzEwOCwxMCBAQCBwdWJsaWM6CiAKICAgICBXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSBjb25zdCB7IEFTU0VSVChtX3Byb2Nlc3NQb29sKTsg
cmV0dXJuICptX3Byb2Nlc3NQb29sLmdldCgpOyB9CiAKKyAgICBTdHJpbmcgcmVnaXN0cmFibGVE
b21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLnZhbHVlT3IoU3RyaW5n
KCkpOyB9CisgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOworICAgIGJvb2wgaXNJ
blByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQorCiAg
ICAgLy8gRklYTUU6IFdlYnNpdGVEYXRhU3RvcmVzIHNob3VsZCBiZSBtYWRlIHBlci1XZWJQYWdl
UHJveHkgdGhyb3VnaG91dCBXZWJLaXQyCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURh
dGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQogCkBA
IC0xMjYsNiArMTMwLDcgQEAgcHVibGljOgogCiAgICAgdHlwZW5hbWUgV2ViUGFnZVByb3h5TWFw
OjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UgcGFnZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VN
YXAudmFsdWVzKCk7IH0KICAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VNYXAuc2l6ZSgpOyB9CisgICAgdW5zaWduZWQgcHJvdmlzaW9uYWxQYWdlQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsUGFnZXMuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQg
dmlzaWJsZVBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVBhZ2VDb3VudGVyLnZh
bHVlKCk7IH0KIAogICAgIHZvaWQgYWN0aXZlUGFnZXNEb21haW5zRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsgLy8gVGhpcyBpcyB3aGF0IGlz
IHJlcG9ydGVkIHRvIEFjdGl2aXR5TW9uaXRvci4KQEAgLTI0OSw2ICsyNTQsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaHV0RG93bigpOwogICAgIHZvaWQgbWF5YmVTaHV0RG93bigpOwogCisgICAg
dm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmKTsKKwog
cHJvdGVjdGVkOgogICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFdl
YlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBJc1ByZXdh
cm1lZCk7CkBAIC0yNzQsNiArMjgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lG
cmFtZSh1aW50NjRfdCk7CiAgICAgdm9pZCBkaWREZXN0cm95VXNlckdlc3R1cmVUb2tlbih1aW50
NjRfdCk7CiAKKyAgICBib29sIGNhbkJlQWRkZWRUb1dlYlByb2Nlc3NDYWNoZSgpIGNvbnN0Owog
ICAgIHZvaWQgc2hvdWxkVGVybWluYXRlKGJvb2wmIHNob3VsZFRlcm1pbmF0ZSk7CiAKICAgICB2
b2lkIGNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXImIHBvcnQxLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIm
IHBvcnQyKTsKQEAgLTI4Niw2ICsyOTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVsaXZl
ck1lc3NhZ2VQb3J0TWVzc2FnZXModWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWRDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIGJvb2wgaXNMb2NhbGx5UmVhY2hhYmxlKTsKIAorICAgIGJvb2wgaGFz
UHJvdmlzaW9uYWxQYWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAgYm9vbCBp
c0FsbG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikg
Y29uc3Q7CisKICAgICAvLyBQbHVnaW5zCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAgICAgdm9pZCBnZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+JiBwbHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIGFwcGxpY2F0aW9u
UGx1Z2lucywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZp
ZXI+PiYpOwpAQCAtMzcxLDcgKzM4Miw3IEBAIHByaXZhdGU6CiAgICAgQmFja2dyb3VuZFByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXI7CiAg
ICAgCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fd2ViQ29ubmVjdGlv
bjsKLSAgICBXZWFrT3JTdHJvbmdQdHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7IC8v
IFByZS13YXJtZWQgcHJvY2Vzc2VzIGRvIG5vdCBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0
aGVpciBwb29sLgorICAgIFdlYWtPclN0cm9uZ1B0cjxXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNz
UG9vbDsgLy8gUHJlLXdhcm1lZCBhbmQgY2FjaGVkIHByb2Nlc3NlcyBkbyBub3QgaG9sZCBhIHN0
cm9uZyByZWZlcmVuY2UgdG8gdGhlaXIgcG9vbC4KIAogICAgIGJvb2wgbV9tYXlIYXZlVW5pdmVy
c2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uOyAvLyBUcnVlIGlmIGEgcmVhZCBleHRlbnNpb24g
Zm9yICIvIiB3YXMgZXZlciBncmFudGVkIC0gd2UgZG9uJ3QgdHJhY2sgd2hldGhlciBXZWJQcm9j
ZXNzIHN0aWxsIGhhcyBpdC4KICAgICBIYXNoU2V0PFN0cmluZz4gbV9sb2NhbFBhdGhzV2l0aEFz
c3VtZWRSZWFkQWNjZXNzOwpAQCAtMzk0LDYgKzQwNSw5IEBAIHByaXZhdGU6CiAKICAgICBIYXNo
TWFwPFN0cmluZywgdWludDY0X3Q+IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwOwogCisgICAgT3B0
aW9uYWw8U3RyaW5nPiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIGJvb2wgbV9pc0luUHJvY2Vz
c0NhY2hlIHsgZmFsc2UgfTsKKwogICAgIGVudW0gY2xhc3MgTm9Pck1heWJlIHsgTm8sIE1heWJl
IH0gbV9pc1Jlc3BvbnNpdmU7CiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZChib29sIHdl
YlByb2Nlc3NJc1Jlc3BvbnNpdmUpPj4gbV9pc1Jlc3BvbnNpdmVDYWxsYmFja3M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgyMWEw
NmEzZTM3YjY0ZTU3NDlhMmExZjZlNDRhMzMwNDY5OGM4YjMuLjgyYmI1Yzc2ODk5YjFiODFhYzAw
NTQ0MTg4ZmQ0NmE1N2FlYTkzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzY4NSw2ICszNjg1LDggQEAKIAkJODMyQUUyNTExQkUy
RThDRDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkVEMTg5
MUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlckFjdGl2aXR5U3RhdGVDUFVV
c2FnZVNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJFRDE4QTFF
MkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMzk3QzY2MjIxMjRCRDEwMEI2
MjM4OCAvKiBXZWJQcm9jZXNzQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViUHJvY2Vzc0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODMzOTdDNjcyMjEyNEJEMTAwQjYyMzg4IC8qIFdlYlByb2Nlc3NDYWNoZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Nh
Y2hlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUxMDFB
ODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc0OTAsNiArNzQ5Miw4IEBACiAJCQkJQkM1NzRFNjExMjY3RDA4MDAwNkYwRjEyIC8qIFdl
YlBvcHVwTWVudVByb3h5LmggKi8sCiAJCQkJQkNENTk3RkUxMTJCNTdCRTAwRUM4QzIzIC8qIFdl
YlByZWZlcmVuY2VzLmNwcCAqLywKIAkJCQlCQ0Q1OTdGRDExMkI1N0JFMDBFQzhDMjMgLyogV2Vi
UHJlZmVyZW5jZXMuaCAqLywKKwkJCQk4MzM5N0M2NjIyMTI0QkQxMDBCNjIzODggLyogV2ViUHJv
Y2Vzc0NhY2hlLmNwcCAqLywKKwkJCQk4MzM5N0M2NzIyMTI0QkQxMDBCNjIzODggLyogV2ViUHJv
Y2Vzc0NhY2hlLmggKi8sCiAJCQkJMUFGQTRCOEQxQTY1QTlFMjAwNkM0QUI0IC8qIFdlYlByb2Nl
c3NMaWZldGltZU9ic2VydmVyLmNwcCAqLywKIAkJCQkxQUZBNEI4RTFBNjVBOUUyMDA2QzRBQjQg
LyogV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuaCAqLywKIAkJCQkxQUZBNEI4OTFBNjVBMUQw
MDA2QzRBQjQgLyogV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjgyMjA1MGU0YWI1MWEyODQ5MTJiZWZj
NGQwM2FiMjUyYTBlZmRjZi4uMjNlOGMzNzEyNjgzMDY3ZWNjNDRlMTkyY2U2M2U5YjE1ZGJlZjYz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDU3LDYgKzQ1
NywyMyBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1BhZ2VSZXF1aXJpbmdQYWdlQ2FjaGVXaGlsZVN1
c3BlbmRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlByb2Nlc3M6
OnNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCBpc0luUHJvY2Vzc0NhY2hlKQoreworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBpZiAoaXNJblByb2Nlc3NDYWNoZSkgeworICAgICAgICBBU1NFUlQobV9w
cm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6V2ViQ29udGVudCk7CisgICAgICAgIG1fcHJvY2Vz
c1R5cGUgPSBQcm9jZXNzVHlwZTo6Q2FjaGVkV2ViQ29udGVudDsKKyAgICB9IGVsc2UgeworICAg
ICAgICBBU1NFUlQobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6Q2FjaGVkV2ViQ29udGVu
dCk7CisgICAgICAgIG1fcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6V2ViQ29udGVudDsKKyAg
ICB9CisKKyAgICB1cGRhdGVQcm9jZXNzTmFtZSgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
aXNJblByb2Nlc3NDYWNoZSk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQcm9jZXNzOjptYXJrSXNO
b0xvbmdlclByZXdhcm1lZCgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggYjljYTJlZTQxNzA3YmM1YmM2MmJiMTFiZDQ2MjhlZmM0
YjI3MGMzZi4uNWJkMDAwNTgwYzFmMDE0YmQzOTg4MzczN2YwNzk1ZWY2NDQyM2Q2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0yNjcsNiArMjY3LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGxhdGZvcm1UZXJtaW5hdGUoKTsKIAorICAgIHZvaWQgc2V0SXNJblBy
b2Nlc3NDYWNoZShib29sKTsKICAgICB2b2lkIG1hcmtJc05vTG9uZ2VyUHJld2FybWVkKCk7CiAK
ICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KGNvbnN0IFN0cmluZyYp
OwpAQCAtNDY1LDcgKzQ2Niw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNQVU1vbml0b3I+IG1fY3B1TW9uaXRvcjsKICAgICBPcHRpb25hbDxkb3VibGU+IG1fY3B1
TGltaXQ7CiAKLSAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsgSW5zcGVjdG9yLCBTZXJ2aWNl
V29ya2VyLCBQcmV3YXJtZWRXZWJDb250ZW50LCBXZWJDb250ZW50IH07CisgICAgZW51bSBjbGFz
cyBQcm9jZXNzVHlwZSB7IEluc3BlY3RvciwgU2VydmljZVdvcmtlciwgUHJld2FybWVkV2ViQ29u
dGVudCwgQ2FjaGVkV2ViQ29udGVudCwgV2ViQ29udGVudCB9OwogICAgIFByb2Nlc3NUeXBlIG1f
cHJvY2Vzc1R5cGUgeyBQcm9jZXNzVHlwZTo6V2ViQ29udGVudCB9OwogICAgIFN0cmluZyBtX3Vp
UHJvY2Vzc05hbWU7CiAgICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDZmNmNhMzYyZWZj
NjI4NmU4OWZmNDZkY2U4MDJkYmNiZWZlODc3MjMuLjNkNzNmMmU5Y2M2MjA2YjcxNzdmMmUyZGUw
MWFiZTljODZiZDM1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC0xMTksNiArMTE5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHko
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0LCB1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIpCiAgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkKIAorICAgIFNldElzSW5Qcm9jZXNzQ2Fj
aGUoYm9vbCBpc0luUHJvY2Vzc0NhY2hlKQogICAgIE1hcmtJc05vTG9uZ2VyUHJld2FybWVkKCkK
ICAgICBVcGRhdGVBY3RpdmVQYWdlcygpCiAgICAgR2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVz
dGluZygpIC0+IChWZWN0b3I8U3RyaW5nPiBhY3RpdmVPcmlnaW5zKSBBc3luYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZTc3
ZjcxNTRkYjk0OGU2YmZkMzY5Nzc2NGMxYTRiOWUyZmQzOTQ3ZC4uZDE2MjUxNjU5OGE3MTgzYWFj
MjRiMDBmZTI2MmMyNWJjY2E4N2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0yNDAsNiArMjQwLDkgQEAgdm9pZCBXZWJQ
cm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZSgpCiAgICAgY2FzZSBQcm9jZXNzVHlwZTo6UHJld2Fy
bWVkV2ViQ29udGVudDoKICAgICAgICAgYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIENvbnRlbnQgKFByZXdhcm1lZCkiLCAi
VmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBs
aWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKiltX3VpUHJvY2Vzc05hbWVdOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFByb2Nlc3NUeXBlOjpDYWNoZWRXZWJDb250ZW50OgorICAgICAgICBh
cHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5H
KCIlQCBXZWIgQ29udGVudCAoQ2FjaGVkKSIsICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9j
ZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAq
KW1fdWlQcm9jZXNzTmFtZV07CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvY2Vzc1R5cGU6
OldlYkNvbnRlbnQ6CiAgICAgICAgIGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBDb250ZW50IiwgIlZpc2libGUgbmFtZSBv
ZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4i
KSwgKE5TU3RyaW5nICopbV91aVByb2Nlc3NOYW1lXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjJjYzZhNTEyMGQ3
NThhNDI2OWIwYjRmZTlhYzM2OTkzMjVhYTYzZC4uMWQ1NDc0OWIwN2YyNWY3Yjc2M2Q2MTNlZTk5
YTAxNjU5ODA2NjE1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIEludHJvZHVjZSBhIFdlYkNvbnRlbnQgUHJv
Y2VzcyBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk0NTk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc5MzM5Nz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzIHRv
IHR1cm4gb24gdGhlIFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisK
IDIwMTktMDItMTIgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGdXJ0aGVyIHJlc3RyaWN0aW5nIHdlYmFyY2hpdmUgbG9hZHMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCmluZGV4IDIyZTFjZDU4M2YwNWYxNGRkZGRhNDQ4MWNhOGI3OGM4NmIwMTEy
YzQuLmMyNzc4NTAxODU4ZGJlOGI3YzViYzU5YzFiZDQ0MGM1NzgzYjYxNGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtNDMyLDExICs0MzIsMTggQEAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ3BhZ2VzaG93JywgZnVuY3Rpb24oZXZlbnQpIHsKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKIAotVEVTVChQcm9jZXNzU3dhcCwgQmFzaWMpCitzdGF0aWMgUmV0YWluUHRy
PF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpCiB7CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkudXNlc1dlYlByb2Nlc3NDYWNoZSA9IFlFUzsK
ICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRv
bWF0aWNhbGx5ID0gWUVTOworICAgIHJldHVybiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247Cit9
CisKK1RFU1QoUHJvY2Vzc1N3YXAsIEJhc2ljKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwpAQCAtNDgxLDkgKzQ4OCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEJhc2ljKQog
CiBURVNUKFByb2Nlc3NTd2FwLCBMb2FkQWZ0ZXJQb2xpY3lEZWNpc2lvbikKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC01MTksOSArNTI0LDcgQEAgVEVTVChQ
cm9jZXNzU3dhcCwgTG9hZEFmdGVyUG9saWN5RGVjaXNpb24pCiAKIFRFU1QoUHJvY2Vzc1N3YXAs
IEtpbGxXZWJDb250ZW50UHJvY2Vzc0FmdGVyU2VydmVyUmVkaXJlY3RQb2xpY3lEZWNpc2lvbikK
IHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkg
PSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC01NzAsOSArNTcz
LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgS2lsbFdlYkNvbnRlbnRQcm9jZXNzQWZ0ZXJTZXJ2ZXJS
ZWRpcmVjdFBvbGljeURlY2lzaW9uKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOb1N3YXBwaW5nRm9y
ZVRMRFBsdXMyKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7
Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0
b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBz
b25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRv
cHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAg
LTYwNyw4ICs2MDgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOb1N3YXBwaW5nRm9yZVRMRFBsdXMy
KQogCiBURVNUKFByb2Nlc3NTd2FwLCBCYWNrKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBw
c29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFk
b3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBA
IC03MTUsOCArNzE1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHBhZ2VXaXRoRnJhZ21lbnRUZXN0
Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9jZXNzU3dhcCwgSGlzdG9yeU5hdmln
YXRpb25Ub0ZyYWdtZW50VVJMKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC03NjgsOCAr
NzY3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgSGlzdG9yeU5hdmlnYXRpb25Ub0ZyYWdtZW50VVJM
KQogCiBURVNUKFByb2Nlc3NTd2FwLCBTdXNwZW5kZWRQYWdlRGllc0FmdGVyQmFja0ZvcndhcmRM
aXN0SXRlbUlzR29uZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0g
WUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtODAxLDcgKzc5OSw3
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFN1c3BlbmRlZFBhZ2VEaWVzQWZ0ZXJCYWNrRm9yd2FyZExp
c3RJdGVtSXNHb25lKQogICAgIEVYUEVDVF9ORSh3ZWJraXRQSUQsIGFwcGxlUElEKTsKIAogICAg
IC8vIHdlYmtpdC5vcmcgKyBhcHBsZS5jb20gcHJvY2Vzc2VzLgotICAgIEVYUEVDVF9FUSgyVSwg
W3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVY
UEVDVF9FUSgyVSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1l
ZEFuZENhY2hlZF0pOwogCiAgICAgW3dlYlZpZXcgZ29CYWNrXTsgLy8gQmFjayB0byB3ZWJraXQu
b3JnLgogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CkBAIC04MTAsNyArODA4
LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFnZURpZXNBZnRlckJhY2tGb3J3YXJk
TGlzdEl0ZW1Jc0dvbmUpCiAgICAgRVhQRUNUX0VRKHdlYmtpdFBJRCwgW3dlYlZpZXcgX3dlYlBy
b2Nlc3NJZGVudGlmaWVyXSk7CiAKICAgICAvLyB3ZWJraXQub3JnICsgYXBwbGUuY29tIHByb2Nl
c3Nlcy4KLSAgICBFWFBFQ1RfRVEoMlUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdu
b3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBFQ1RfRVEoMlUsIFtwcm9jZXNzUG9vbCBfd2ViUHJv
Y2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKIAogICAgIHJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjov
L3d3dy53ZWJraXQub3JnL21haW4yLmh0bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CkBAIC04MjEsMTUgKzgxOSwxNCBAQCBURVNUKFByb2Nlc3NTd2FwLCBTdXNwZW5k
ZWRQYWdlRGllc0FmdGVyQmFja0ZvcndhcmRMaXN0SXRlbUlzR29uZSkKICAgICBFWFBFQ1RfRVEo
d2Via2l0UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIAogICAgIC8vIGFw
cGxlLmNvbSBpcyBub3QgbG9uZ2VyIHByZXNlbnQgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0IGFu
ZCB0aGVyZSBzaG91bGQgdGhlcmVmb3JlIGJlIG5vLXN1c3BlbmRlZCBwYWdlIGZvciBpdC4KLSAg
ICB3aGlsZSAoW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0g
PiAxdSkKKyAgICB3aGlsZSAoW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1By
ZXdhcm1lZEFuZENhY2hlZF0gPiAxdSkKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3Bp
blJ1bkxvb3AoKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIFRFU1QoUHJvY2Vzc1N3YXAsIFN1
c3BlbmRlZFBhZ2VzSW5BY3Rpdml0eU1vbml0b3IpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTkxNyw4ICs5MTQsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTdXNwZW5kZWRQYWdlc0luQWN0
aXZpdHlNb25pdG9yKQogCiBURVNUKFByb2Nlc3NTd2FwLCBCYWNrV2l0aG91dFN1c3BlbmRlZFBh
Z2UpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTk3NSw4ICs5NzEsNyBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBCYWNrV2l0aG91dFN1c3BlbmRlZFBhZ2UpCiAKIFRFU1QoUHJvY2Vzc1N3YXAs
IEJhY2tOYXZpZ2F0aW9uQWZ0ZXJTZXNzaW9uUmVzdG9yZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtMTAzMiw4ICsxMDI3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQmFja05hdmlnYXRp
b25BZnRlclNlc3Npb25SZXN0b3JlKQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVXaW5k
b3dPcGVuTm9PcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9
IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJv
Y2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTEwNzIsOCArMTA2
Niw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIAog
VEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5CdXRTYW1lU2l0ZVdpbmRvd09wZW5Ob09wZW5l
cikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTExMiw4ICsxMTA1LDcgQEAgVEVTVChQ
cm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5CdXRTYW1lU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIAog
VEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlV2luZG93T3BlbldpdGhPcGVuZXIpCiB7Ci0gICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0
aE9wZW5lciA9IFlFUzsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKQEAgLTExNTMsOCArMTE0NSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENy
b3NzU2l0ZVdpbmRvd09wZW5XaXRoT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBTYW1lU2l0
ZVdpbmRvd09wZW5Ob09wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTE5Miw4
ICsxMTgzLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU2FtZVNpdGVXaW5kb3dPcGVuTm9PcGVuZXIp
CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUJsYW5rVGFyZ2V0V2l0aE9wZW5lcikKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTIzMiw4ICsxMjIyLDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgQ3Jvc3NTaXRlQmxhbmtUYXJnZXRXaXRoT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2Fw
LCBDcm9zc1NpdGVCbGFua1RhcmdldEltcGxpY2l0Tm9PcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnBy
b2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nl
c3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZp
ZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKQEAgLTEyNzIsOCArMTI2MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0
ZUJsYW5rVGFyZ2V0SW1wbGljaXROb09wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NT
aXRlQmxhbmtUYXJnZXROb09wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZp
Z2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTMx
Miw4ICsxMzAwLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQmxhbmtUYXJnZXROb09w
ZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgU2FtZVNpdGVCbGFua1RhcmdldE5vT3BlbmVyKQog
ewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xMzU0LDggKzEzNDEsNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBTYW1lU2l0ZUJsYW5rVGFyZ2V0Tm9PcGVuZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAs
IFNlcnZlclJlZGlyZWN0RnJvbU5ld1dlYlZpZXcpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTEzODgsOCArMTM3NCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0RnJv
bU5ld1dlYlZpZXcpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0KQogewotICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAg
YXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
YXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xNDM1LDggKzE0MjAsNyBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBTZXJ2ZXJSZWRpcmVjdCkKIFRFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0MikKIHsK
ICAgICAvLyBUaGlzIHRlc3RzIGEgbG9hZCB0aGF0ICpzdGFydHMgb3V0KiB0byB0aGUgc2FtZSBv
cmlnaW4gYXMgdGhlIHByZXZpb3VzIGxvYWQsIGJ1dCB0aGVuIHJlZGlyZWN0cyB0byBhIG5ldyBv
cmlnaW4uCi0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE0OTMsOCArMTQ3Nyw3IEBAIFRFU1Qo
UHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0MikKIAogVEVTVChQcm9jZXNzU3dhcCwgVGVybWlu
YXRlUHJvY2Vzc1JpZ2h0QWZ0ZXJTd2FwKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0x
NTMzLDggKzE1MTYsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogbGlua1RvV2ViS2l0Qnl0ZXMgPSBS
IlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9jZXNzU3dhcCwgUG9saWN5Q2FuY2VsQWZ0ZXJTZXJ2
ZXJSZWRpcmVjdCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVT
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTU4Nyw4ICsxNTY5LDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgUG9saWN5Q2FuY2VsQWZ0ZXJTZXJ2ZXJSZWRpcmVjdCkKIAog
VEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlRG93bmxvYWQpCiB7Ci0gICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTE2NDgsOCArMTYyOSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzeXN0ZW1QcmV2
aWV3Q3Jvc3NPcmlnaW5UZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9jZXNz
U3dhcCwgU2FtZU9yaWdpblN5c3RlbVByZXZpZXcpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTE2ODUsOCArMTY2NSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVPcmlnaW5TeXN0ZW1Q
cmV2aWV3KQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc09yaWdpblN5c3RlbVByZXZpZXcpCiB7
Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsK
ICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
ICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE3MjUsNyArMTcwNCw3IEBAIFRFU1QoUHJvY2Vz
c1N3YXAsIENyb3NzT3JpZ2luU3lzdGVtUHJldmlldykKIGVudW0gY2xhc3MgU2hvdWxkRW5hYmxl
UFNPTiB7IE5vLCBZZXMgfTsKIHN0YXRpYyB2b2lkIHJ1bkNsaWVudFNpZGVSZWRpcmVjdFRlc3Qo
U2hvdWxkRW5hYmxlUFNPTiBzaG91bGRFbmFibGVQU09OKQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBzaG91bGRFbmFibGVQU09OID09IFNob3Vs
ZEVuYWJsZVBTT046OlllcyA/IFlFUyA6IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtMTg2MCw5ICsxODM5LDcgQEAgVEVTVChQ
cm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQ2xpZW50U2lkZVJlZGlyZWN0V2l0aFBTT04pCiAKIFRFU1Qo
UHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdEZyb21GaWxlVVJMKQogewot
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IFlF
UzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE4OTEsMTUgKzE4Njgs
MTQgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQ2xpZW50U2lkZVJlZGlyZWN0RnJvbUZp
bGVVUkwpCiAgICAgYXV0byBwaWQyID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsK
ICAgICBFWFBFQ1RfTkUocGlkMSwgcGlkMik7CiAKLSAgICBFWFBFQ1RfRVEoMVUsIFtwcm9jZXNz
UG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBFQ1RfRVEo
MVUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNo
ZWRdKTsKICAgICBFWFBFQ1RfVFJVRSh3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKICAgICBF
WFBFQ1RfVFJVRShkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOwogfQogCiBURVNUKFByb2Nlc3NT
d2FwLCBOYXZpZ2F0ZUJhY2tBZnRlckNsaWVudFNpZGVSZWRpcmVjdCkKIHsKLSAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCku
cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwpAQCAtMTk3Myw3ICsxOTQ5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdh
dGVCYWNrQWZ0ZXJDbGllbnRTaWRlUmVkaXJlY3QpCiAKIHN0YXRpYyB2b2lkIHJ1bk5hdmlnYXRp
b25XaXRoTG9ja2VkSGlzdG9yeVRlc3QoU2hvdWxkRW5hYmxlUFNPTiBzaG91bGRFbmFibGVQU09O
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBz
aG91bGRFbmFibGVQU09OID09IFNob3VsZEVuYWJsZVBTT046OlllcyA/IFlFUyA6IE5POwogICAg
IGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAt
MjA3Miw4ICsyMDQ4LDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKGV2dCkgewogCiBURVNU
KFByb2Nlc3NTd2FwLCBTZXNzaW9uU3RvcmFnZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNv
blByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAt
MjEyOSw4ICsyMTA0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU2Vzc2lvblN0b3JhZ2UpCiAKIFRF
U1QoUHJvY2Vzc1N3YXAsIFJldXNlU3VzcGVuZGVkUHJvY2VzcykKIHsKLSAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtMjE5MCw4ICsyMTY0LDcgQEAgdmFyIG15V29ya2VyID0gbmV3IFdvcmtlcignd29y
a2VyLmpzJyk7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFJldXNlU3VzcGVuZGVkUHJvY2Vzc0V2ZW5J
ZlBhZ2VDYWNoZUZhaWxzKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAg
IFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllF
U107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nl
c3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yMjQzLDggKzIyMTYs
NyBAQCBURVNUKFByb2Nlc3NTd2FwLCBSZXVzZVN1c3BlbmRlZFByb2Nlc3NFdmVuSWZQYWdlQ2Fj
aGVGYWlscykKIAogVEVTVChQcm9jZXNzU3dhcCwgUmV1c2VTdXNwZW5kZWRQcm9jZXNzT25CYWNr
RXZlbklmUGFnZUNhY2hlRmFpbHMpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTIyOTIsOCAr
MjI2NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB3aXRoU3ViZnJhbWVzVGVzdEJ5dGVzID0gUiJQ
U09OUkVTT1VSQ0UoCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEhpc3RvcnlJdGVtSURDb25mdXNpb24p
CiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsK
ICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
ICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTIzNTgsOCArMjMyOSw3IEBAIFRFU1QoUHJvY2Vz
c1N3YXAsIEhpc3RvcnlJdGVtSURDb25mdXNpb24pCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEdvVG9T
ZWNvbmRJdGVtSW5CYWNrSGlzdG9yeSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdh
dGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjQ0NSwx
MSArMjQxNSw5IEBAIGVudW0gY2xhc3MgUmV0YWluUGFnZUluQnVuZGxlIHsgTm8sIFllcyB9Owog
CiB2b2lkIHRlc3RSZXVzZVN1c3BlbmRlZFByb2Nlc3NGb3JSZWd1bGFyTmF2aWdhdGlvbihSZXRh
aW5QYWdlSW5CdW5kbGUgcmV0YWluUGFnZUluQnVuZGxlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3
YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgaWYgKHJldGFpblBhZ2VJbkJ1
bmRsZSA9PSBSZXRhaW5QYWdlSW5CdW5kbGU6OlllcykKICAgICAgICAgW3Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBzZXRJbmplY3RlZEJ1bmRsZVVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiVGVzdFdlYktpdEFQSSIgd2l0aEV4dGVuc2lvbjpAIndrYnVuZGxlIl1d
OwotCiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIGlmIChyZXRhaW5QYWdlSW5CdW5kbGUgPT0gUmV0YWluUGFnZUluQnVuZGxlOjpZZXMp
CiAgICAgICAgIFtwcm9jZXNzUG9vbCBfc2V0T2JqZWN0OkAiQnVuZGxlUmV0YWluUGFnZVBsdWdJ
biIgZm9yQnVuZGxlUGFyYW1ldGVyOlRlc3RXZWJLaXRBUEk6OlV0aWw6OlRlc3RQbHVnSW5DbGFz
c05hbWVQYXJhbWV0ZXJdOwpAQCAtMjUyNSw4ICsyNDkzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IG1haW5GcmFtZXNPbmx5U3ViZnJhbWUyID0gUiJQU09OUkVTT1VSQ0UoCiAKIFRFU1QoUHJvY2Vz
c1N3YXAsIE1haW5GcmFtZXNPbmx5KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNTcxLDgg
KzI1MzgsNyBAQCBvbmxvYWQgPSAoKSA9PiB7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2Vab29t
TGV2ZWxBZnRlclN3YXApCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
W3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVT
XTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTI2NDgsOSArMjYxNCw3
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBuYXZpZ2F0ZUJlZm9yZVBhZ2VMb2FkRW5kQnl0ZXMgPSBS
IlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVDcm9zc1NpdGVCZWZv
cmVQYWdlTG9hZEVuZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBb
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNd
OwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJld2FybXNQcm9jZXNzZXNBdXRv
bWF0aWNhbGx5OllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0y
Njc5LDggKzI2NDMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUNyb3NzU2l0ZUJlZm9y
ZVBhZ2VMb2FkRW5kKQogCiBURVNUKFByb2Nlc3NTd2FwLCBEb1NhbWVTaXRlTmF2aWdhdGlvbkFm
dGVyQ3Jvc3NTaXRlUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wg
PSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwpAQCAtMjcyMSw4ICsyNjg0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgRG9TYW1lU2l0ZU5hdmln
YXRpb25BZnRlckNyb3NzU2l0ZVByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpCiAKIFRFU1QoUHJvY2Vz
c1N3YXAsIFN1c3BlbmRlZFBhZ2VMaW1pdCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjc3
MSwxMyArMjczMywxMiBAQCBURVNUKFByb2Nlc3NTd2FwLCBTdXNwZW5kZWRQYWdlTGltaXQpCiAg
ICAgRVhQRUNUX0VRKDV1LCBzZWVuUElEcy5zaXplKCkpOwogCiAgICAgLy8gQnV0IG5vdCBhbGwg
b2YgdGhvc2UgcHJvY2Vzc2VzIHNob3VsZCBzdGlsbCBiZSBhbGl2ZSAoMSB2aXNpYmxlLCBtYXhp
bXVtU3VzcGVuZGVkUGFnZUNvdW50IHN1c3BlbmRlZCkuCi0gICAgRVhQRUNUX0VRKFtwcm9jZXNz
UG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdLCAoMVUgKyBtYXhpbXVtU3Vz
cGVuZGVkUGFnZUNvdW50KSk7CisgICAgRVhQRUNUX0VRKFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vz
c0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRdLCAoMVUgKyBtYXhpbXVtU3VzcGVuZGVk
UGFnZUNvdW50KSk7CiB9CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VDYWNoZTEpCiB7Ci0gICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKQEAgLTI4MDIsNyArMjc2Myw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFBh
Z2VDYWNoZTEpCiAKICAgICBhdXRvIHBpZEFmdGVyTG9hZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vz
c0lkZW50aWZpZXJdOwogCi0gICAgRVhQRUNUX0VRKDF1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nl
c3NDb3VudElnbm9yaW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDF1LCBbcHJvY2Vzc1Bv
b2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAKICAgICBy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAInBzb246Ly93d3cuYXBwbGUuY29tL21haW4uaHRtbCJdXTsKIApAQCAtMjgxMiw3ICsyNzcz
LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgUGFnZUNhY2hlMSkKIAogICAgIGF1dG8gcGlkQWZ0ZXJM
b2FkMiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAKLSAgICBFWFBFQ1RfRVEo
MnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAg
ICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3
YXJtZWRBbmRDYWNoZWRdKTsKICAgICBFWFBFQ1RfTkUocGlkQWZ0ZXJMb2FkMSwgcGlkQWZ0ZXJM
b2FkMik7CiAKICAgICBbd2ViVmlldyBnb0JhY2tdOwpAQCAtMjgyMyw3ICsyNzg0LDcgQEAgVEVT
VChQcm9jZXNzU3dhcCwgUGFnZUNhY2hlMSkKIAogICAgIGF1dG8gcGlkQWZ0ZXJMb2FkMyA9IFt3
ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAKLSAgICBFWFBFQ1RfRVEoMnUsIFtwcm9j
ZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBFQ1Rf
RVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRD
YWNoZWRdKTsKICAgICBFWFBFQ1RfRVEocGlkQWZ0ZXJMb2FkMSwgcGlkQWZ0ZXJMb2FkMyk7CiAg
ICAgRVhQRUNUX0VRKDF1LCBbcmVjZWl2ZWRNZXNzYWdlcyBjb3VudF0pOwogICAgIEVYUEVDVF9U
UlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0cmluZzpAIldhcyBwZXJz
aXN0ZWQiIF0pOwpAQCAtMjgzNyw3ICsyNzk4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgUGFnZUNh
Y2hlMSkKIAogICAgIGF1dG8gcGlkQWZ0ZXJMb2FkNCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRl
bnRpZmllcl07CiAKLSAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0Nv
dW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBf
d2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKICAgICBFWFBFQ1Rf
RVEocGlkQWZ0ZXJMb2FkMiwgcGlkQWZ0ZXJMb2FkNCk7CiAgICAgRVhQRUNUX0VRKDJ1LCBbcmVj
ZWl2ZWRNZXNzYWdlcyBjb3VudF0pOwogICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2Vz
LmdldCgpWzFdIGlzRXF1YWxUb1N0cmluZzpAIldhcyBwZXJzaXN0ZWQiIF0pOwpAQCAtMjg0Niw5
ICsyODA3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgUGFnZUNhY2hlMSkKIAogVEVTVChQcm9jZXNz
U3dhcCwgTnVtYmVyT2ZQcmV3YXJtZWRQcm9jZXNzZXMpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb246WUVTXTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFBy
ZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseTpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8g
d2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwpAQCAtMjg2Niw3ICsyODI1LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTnVt
YmVyT2ZQcmV3YXJtZWRQcm9jZXNzZXMpCiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgRVhQRUNU
X0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOwotICAgIEVYUEVDVF9FUSgx
dSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAg
IEVYUEVDVF9FUSgxdSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdh
cm1lZEFuZENhY2hlZF0pOwogICAgIEVYUEVDVF9UUlVFKFtwcm9jZXNzUG9vbCBfaGFzUHJld2Fy
bWVkV2ViUHJvY2Vzc10pOwogCiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3Lmdvb2dsZS5jb20vbWFpbi5o
dG1sIl1dOwpAQCAtMjg3NSw3ICsyODM0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTnVtYmVyT2ZQ
cmV3YXJtZWRQcm9jZXNzZXMpCiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgRVhQRUNUX0VRKDN1
LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudF0pOwotICAgIEVYUEVDVF9FUSgydSwgW3By
b2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVD
VF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFu
ZENhY2hlZF0pOwogICAgIEVYUEVDVF9UUlVFKFtwcm9jZXNzUG9vbCBfaGFzUHJld2FybWVkV2Vi
UHJvY2Vzc10pOwogfQogCkBAIC0yODk3LDggKzI4NTYsNyBAQCB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigncGFnZWhpZGUnLCBmdW5jdGlvbihldmVudCkgewogCiBURVNUKFByb2Nlc3NTd2FwLCBQ
YWdlU2hvd0hpZGUpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsK
KyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bv
b2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTI5ODksOCArMjk0Nyw3IEBA
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oZXZlbnQpIHsKIAogVEVT
VChQcm9jZXNzU3dhcCwgTG9hZFVubG9hZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzA2
Niw4ICszMDIzLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTG9hZFVubG9hZCkKIAogVEVTVChQcm9j
ZXNzU3dhcCwgV2ViSW5zcGVjdG9yKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmln
YXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMo
W1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0zMTI5
LDggKzMwODUsNyBAQCBsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOwogCiBU
RVNUKFByb2Nlc3NTd2FwLCBTYW1lT3JpZ2luQmxvYk5hdmlnYXRpb24pCiB7Ci0gICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
LnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHBy
b2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKQEAgLTMxNjQsOCArMzExOSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVP
cmlnaW5CbG9iTmF2aWdhdGlvbikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5CbG9i
TmF2aWdhdGlvbikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVT
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzIyMyw4ICszMTc3LDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5CbG9iTmF2aWdhdGlvbikKIAogVEVTVChQ
cm9jZXNzU3dhcCwgTmF2aWdhdGVUb0Fib3V0QmxhbmspCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29s
ID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKQEAgLTMyNTcsOCArMzIxMCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlVG9BYm91
dEJsYW5rKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvRGF0YVVSTCkKIHsKLSAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1
dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwpAQCAtMzI5MSw5ICszMjQzLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwg
TmF2aWdhdGVUb0RhdGFVUkwpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFByb2Nlc3NSZXVzZSkKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwotICAgIFtwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gc2V0QWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczpZRVNd
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzMzOCw5ICszMjg4LDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgUHJvY2Vzc1JldXNlKQogCiBURVNUKFByb2Nlc3NTd2FwLCBQ
cm9jZXNzUmV1c2VlVExEUGx1czIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b246WUVTXTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEFsd2F5c0tlZXBBbmRS
ZXVzZVN3YXBwZWRQcm9jZXNzZXM6WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTMzODUsOCArMzMzMyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFByb2Nlc3NSZXVz
ZWVUTERQbHVzMikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ29uY3VycmVudEhpc3RvcnlOYXZpZ2F0
aW9ucykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzQ1NSw4ICszNDAyLDcgQEAgVEVT
VChQcm9jZXNzU3dhcCwgQ29uY3VycmVudEhpc3RvcnlOYXZpZ2F0aW9ucykKIAogVEVTVChQcm9j
ZXNzU3dhcCwgTmF2aWdhdGVUb0ludmFsaWRVUkwpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTM1MDcsOCArMzQ1Myw3IEBAIG9ucGFnZXNob3cgPSBmdW5jdGlvbihldmVudCkgewogCiBU
RVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvRGF0YVVSTFRoZW5CYWNrKQogewotICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnBhZ2VDYWNoZUVuYWJsZWQgPSBOTzsKICAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTM1NDMs
OCArMzQ4OCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlVG9EYXRhVVJMVGhlbkJhY2sp
CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQ3Jvc3NTaXRlV2l0aFBhZ2VDYWNoZURpc2Fi
bGVkKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uKCk7CiAgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnBhZ2VDYWNoZUVuYWJs
ZWQgPSBOTzsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKQEAgLTM2MzQsOCArMzU3OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBuYXZpZ2F0
ZUJhY2tGcm9tSlNCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAogCiBURVNUKFByb2Nlc3NTd2FwLCBO
YXZpZ2F0ZVRvQ3Jvc3NTaXRlVGhlbkJhY2tGcm9tSlMpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCkucGFnZUNhY2hlRW5hYmxlZCA9IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtMzY3NSw4ICszNjE4LDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVUb0Nyb3NzU2l0ZVRoZW5CYWNrRnJvbUpTKQog
CiBURVNUKFByb2Nlc3NTd2FwLCBDbG9zZVBhZ2VBZnRlckNyb3NzU2l0ZVByb3Zpc2lvbmFsTG9h
ZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzczNCw4ICszNjc2LDcgQEAgQGVuZAog
CiBURVNUKFByb2Nlc3NTd2FwLCBMb2FkaW5nU3RhdGVBZnRlclBvbGljeURlY2lzaW9uKQogewot
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0zOTQwLDkgKzM4ODEsNyBAQCBURVNUKFByb2Nlc3NT
d2FwLCBPcGVuZXJMaW5rQWZ0ZXJBUElDb250cm9sbGVkUHJvY2Vzc1N3YXBwaW5nT2ZPcGVuZWUp
CiBlbnVtIGNsYXNzIEV4cGVjdFN3YXAgeyBObywgWWVzIH07CiBzdGF0aWMgdm9pZCBydW5Qcm9j
ZXNzU3dhcER1ZVRvUmVsYXRlZFdlYlZpZXdUZXN0KE5TVVJMKiByZWxhdGVkVmlld1VSTCwgTlNV
UkwqIHRhcmdldFVSTCwgRXhwZWN0U3dhcCBleHBlY3RTd2FwKQogewotICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsK
ICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
ICAgICBhdXRvIHdlYlZpZXcxQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0zOTk4LDkgKzM5MzcsNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBOb1Byb2Nlc3NTd2FwRHVlVG9SZWxhdGVkVmlldykKIAogVEVTVChQcm9jZXNzU3dh
cCwgVGVybWluYXRlZFN1c3BlbmRlZFBhZ2VQcm9jZXNzKQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQwNjMsOCArNDAwMCw3IEBAIFRFU1QoUHJvY2Vzc1N3
YXAsIFRlcm1pbmF0ZWRTdXNwZW5kZWRQYWdlUHJvY2VzcykKIAogVEVTVChQcm9jZXNzU3dhcCwg
TmF2aWdhdGVCYWNrQW5kRm9ydGgpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdh
dGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQxMTUs
OCArNDA1MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQmFja0FuZEZvcnRoKQogCiBU
RVNUKFByb2Nlc3NTd2FwLCBTd2FwT25Mb2FkSFRNTFN0cmluZykKIHsKLSAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJv
Y2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vz
c1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmll
d0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwpAQCAtNDE1OSw5ICs0MDk0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU3dhcE9uTG9h
ZEhUTUxTdHJpbmcpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFVzZVByZXdhcm1lZFByb2Nlc3NBZnRl
clRlcm1pbmF0aW5nTmV0d29ya1Byb2Nlc3MpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbiA9IFlFUzsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJl
d2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQxOTUsOCArNDEyOCw3IEBAIFRF
U1QoUHJvY2Vzc1N3YXAsIFVzZVByZXdhcm1lZFByb2Nlc3NBZnRlclRlcm1pbmF0aW5nTmV0d29y
a1Byb2Nlc3MpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFVzZVNlc3Npb25Db29raWVzQWZ0ZXJQcm9j
ZXNzU3dhcEluUHJpdmF0ZUJyb3dzaW5nKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFJldGFpblB0cjxXS1dlYnNpdGVEYXRhU3Rv
cmU+IGVwaGVtZXJhbFN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0
YVN0b3JlXTsKIApAQCAtNDI1NSw4ICs0MTg3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVXNlU2Vz
c2lvbkNvb2tpZXNBZnRlclByb2Nlc3NTd2FwSW5Qcml2YXRlQnJvd3NpbmcpCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIFRlcm1pbmF0ZVByb2Nlc3NBZnRlclByb2Nlc3NTd2FwKQogewotICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0
UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9j
ZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJW
aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CkBAIC00MzA5LDggKzQyNDAsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBUZXJtaW5h
dGVQcm9jZXNzQWZ0ZXJQcm9jZXNzU3dhcCkKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVD
cm9zc09yaWdpbldpdGhPcGVuZWUpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQzODcsOCAr
NDMxNyw3IEBAIGZ1bmN0aW9uIHNhdmVPcGVuZWUoKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZp
Z2F0ZUNyb3NzT3JpZ2luV2l0aE9wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDUx
Niw4ICs0NDQ1LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVDcm9zc09yaWdpbldpdGhP
cGVuZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEdvQmFja1RvU3VzcGVuZGVkUGFnZVdpdGhNYWlu
RnJhbWVJRFRoYXRJc05vdE9uZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
bjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDYwNyw4ICs0
NTM1LDcgQEAgYm9keSB7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNjcm9sbFBvc2l0aW9uUmVzdG9y
YXRpb24pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQ2ODcsOCArNDYxNCw3IEBAIFRFU1Qo
UHJvY2Vzc1N3YXAsIENvbnRlbnRCbG9ja2luZ0FmdGVyUHJvY2Vzc1N3YXApCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwpAQCAtNDgxMCwxMCArNDczNiw3IEBAIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOwogCiBURVNUKFByb2Nlc3NTd2FwLCBHZXRVc2Vy
TWVkaWFDYXB0dXJlU3RhdGUpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
biA9IFlFUzsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9j
ZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVTOwotCisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNz
UG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361986</attachid>
            <date>2019-02-13 19:49:23 -0800</date>
            <delta_ts>2019-02-14 09:04:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194594-20190213194922.patch</filename>
            <type>text/plain</type>
            <size>109103</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk5ZjQ4MWQxMjA4M2Zm
ZGI5MjAyNDEwYzMzOWIyNmQ4ZDFkYmM2NC4uM2ZlYWI1ZGU3ODhkYTMxZjc4NGMwOWQ0NDAxYjZk
ZDY0NTE3MmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAyLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIEludHJvZHVjZSBh
IFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc5MzM5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgbG9jYWxpemFibGUgc3RyaW5ncy4KKworICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisKIDIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgbG9jYWxpemFibGUgc3RyaW5ncy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYzczZmQ3ZWYzYWRiYTI4MmRhZmM2OGRkMzhmMDJlMTdiZjg0MWIyNS4uZDQ5YWJiZmQ4
MzY3MzU1ZmQ3NmFiMzJiM2FlNDVlOTM1OTQzMGQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYg
QEAKKzIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBbUFNPTl0gSW50cm9kdWNlIGEgV2ViQ29udGVudCBQcm9jZXNzIGNhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ1OTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ2NzkzMzk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZSB0byBy
ZWR1Y2UgdGhlIG51bWJlciBvZiBwcm9jZXNzIGxhdW5jaGVzIHdoZW4KKyAgICAgICAgcHJvY2Vz
cyBzd2FwIG9uIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwgYW5kIHRvIHJlZHVjZSB0aGUgcG93ZXIg
Y29zdCBvZiB0aGUgZmVhdHVyZS4KKworICAgICAgICBJZiBhIFdlYlByb2Nlc3MgbG9hZGVkIHBh
Z2VzIGZyb20gYSBzaW5nbGUgcmVnaXN0cmFibGUgZG9tYWluIHRoZW4gaXQgaXMgZWxpZ2libGUK
KyAgICAgICAgZm9yIHRoZSBjYWNoZS4gV2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIG5hdmlnYXRp
b24gdG8gYSBuZXcgcmVnaXN0cmFibGUgZG9tYWluLCB3ZQorICAgICAgICBub3cgYXR0ZW1wdCB0
byByZXRyaWV2ZSBhIHByb2Nlc3MgZnJvbSB0aGUgY2FjaGUgZm9yIHRoZSBkb21haW4gaW4gcXVl
c3Rpb24gaW5zdGVhZAorICAgICAgICBvZiBhbHdheXMgbGF1bmNoaW5nIGEgbmV3IG9uZS4KKwor
ICAgICAgICBUaGUgV2ViUHJvY2VzcyBjYWNoZSBjdXJyZW50bHkgaGFzIHRoZSBmb2xsb3dpbmcg
YXR0cmlidXRlczoKKyAgICAgICAgLSBJdCBtYXkgY29udGFpbnMgNCBwcm9jZXNzZXMgcGVyIEdC
IG9mIFJBTSB0aGUgbWFjaGluZSBoYXMsIHVwIHRvIDMwIHByb2Nlc3Nlcy4KKyAgICAgICAgLSBX
ZWJQcm9jZXNzZXMgYXV0b21hdGljYWxseSBnZXQgZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBhZnRl
ciAzMCBtaW51dGVzLgorICAgICAgICAtIElmIHRoZSBhcHBsaWNhdGlvbiBpcyBubyBsb25nZXIg
dGhlIGFjdGl2ZSBhcHAsIHRoZW4gdGhlIGNhY2hlIHdpbGwgZ2V0IGNsZWFyZWQKKyAgICAgICAg
ICBhZnRlciA1IG1pbnV0ZXMuCisgICAgICAgIC0gV2ViUHJvY2Vzc2VzIHRoYXQgYXJlIGluIHRo
ZSBjYWNoZSBhcmUgcmVwb3J0ZWQgYXMgIihDYWNoZWQpIiBpbiBBY3Rpdml0eSBNb25pdG9yLgor
CisgICAgICAgIFRoZSBXZWJQcm9jZXNzIGNhY2hlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBk
ZWZhdWx0IGFuZCBjYW4gYnkgZW5hYmxlZCBieSB0aGUKKyAgICAgICAgY2xpZW50IHZpYSBTUEku
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0p
OgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Omxhc3RQcm9jZXNzSWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldExhc3RQcm9j
ZXNzSWRlbnRpZmllcik6CisgICAgICAgIEFkZCBuZXcgbGFzdFByb2Nlc3NJZGVudGlmaWVyIGRh
dGEgbWVtYmVyIHRoYXQgcmVmbGVjdHMgd2hpY2ggcHJvY2VzcyB0aGlzIGl0ZW0KKyAgICAgICAg
d2FzIGxhc3QgbG9hZGVkIGluLiBJdCBpcyBub3JtYWxseSBpZGVudGljYWwgdG8gdGhlIGlkZW50
aWZpZXIgb2YgdGhlIHByb2Nlc3MKKyAgICAgICAgdGhhdCBjcmVhdGVkIHRoZSBpdGVtIGJ1dCBp
dCBnZXRzIG92ZXJyaWRlbiBpbiBjYXNlIG9mIGNyb3NzLXNpdGUgY2xpZW50LXNpZGUKKyAgICAg
ICAgcmVkaXJlY3QsIHNpbmNlIGEgbmV3IHByb2Nlc3MgdGFrZXMgb3ZlciB0aGUgaXRlbSBpbiB0
aGlzIGNhc2UuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBzb3Vy
Y2UgZmlsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNw
cDoKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKToK
KyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VzV2ViUHJvY2Vzc0NhY2hlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRVc2Vz
V2ViUHJvY2Vzc0NhY2hlOl0pOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gdXNlc1dlYlByb2Nlc3NDYWNoZV0pOgorICAgICAgICBBZGQgbmV3IFNQSSB0byBlbmFibGUg
dGhlIFdlYlByb2Nlc3MgY2FjaGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3Vu
dElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICBBZGQgbmV3IFNQSSBmb3IgdGVz
dGluZyB3aGljaCByZXR1cm5zIHRoZSBudW1iZXIgb2YgV2ViUHJvY2Vzc2VzIGlnbm9yaW5nCisg
ICAgICAgIGJvdGggcHJld2FybWVkIGFuZCBjYWNoZWQgb25lcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6Cisg
ICAgICAgIEFkZCBhcHBsaWNhdGlvbiBhY3RpdmUgc3RhdGUgb2JzZXJ2ZXJzIGFzIHRoZSBXZWJQ
cm9jZXNzIGNhY2hlIGdldHMgY2xlYXJlZAorICAgICAgICB3aGVuIHRoZSBhcHBsaWNhdGlvbiBy
ZXNpZ25zIGFjdGl2ZSBzdGF0ZSBmb3IgbW9yZSB0aGFuIDUgbWludXRlcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIFdoZW4gZG9pbmcgYSBs
b2FkIGluIGEgbmV3IHByb2Nlc3Mgd2l0aCB0aGUgQmFja0ZvcndhcmRMaXN0IGxvY2tlZCAoaS5l
LiBjbGllbnQtc2lkZQorICAgICAgICByZWRpcmVjdCksIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhl
IGxhc3QgcHJvY2VzcyBpZGVudGlmaWVyIGZvciB0aGUgQmFja0ZvcndhcmRMaXN0SXRlbS4KKyAg
ICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgbG9naWMgaW4gV2ViUHJvY2Vzc1Bv
b2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCkgcmVsaWVzIG9uCisgICAgICAgIHRoaXMgaWRlbnRp
ZmllciB0byBzZWxlY3Qgd2hpY2ggcHJvY2VzcyB0byBkbyB0aGUgaGlzdG9yeSBuYXZpZ2F0aW9u
IGludG8sIGFuZCB3ZSB3YW50CisgICAgICAgIHRvIGRvIHRoZSBsb2FkIGluIHRoZSBwb3N0LXJl
ZGlyZWN0IHByb2Nlc3MsIG5vdCB0aGUgcHJlLXJlZGlyZWN0IG9uZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICBUZWxsIHRo
ZSBXZWJQcm9jZXNzIHdoZW5ldmVyIGEgbWFpbiBmcmFtZSBwcm92aXNpb25hbCBsb2FkIGlzIHN0
YXJ0ZWQsIHByb3ZpZGluZyB0aGUgVVJMLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6Oldl
YlByb2Nlc3NDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZU1heGltdW1TaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVByb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OmV2
aWN0aW9uVGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjptYXhpbXVtU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6c2l6ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6cHJvY2Vzcyk6CisgICAg
ICAgIEFkZCBwcm9jZXNzIGNhY2hlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV93ZWJQcm9jZXNzQ2Fj
aGUpOgorICAgICAgICBXZWJQcm9jZXNzQ2FjaGUgaXMgc3RvcmVkIG9uIHRoZSBXZWJQcm9jZXNz
UG9vbCB2aWEgbV93ZWJQcm9jZXNzQ2FjaGUgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIENsZWFyIHRoZSBX
ZWJQcm9jZXNzIGNhY2hlIGluIHRoZSBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZXRBcHBsaWNhdGlvbklzQWN0aXZlKToKKyAgICAgICAgTm90aWZ5IHRo
ZSBXZWJQcm9jZXNzQ2FjaGUgd2hlbmV2ZXIgdGhlIGFwcGxpY2F0aW9uJ3MgYWN0aXZlIHN0YXRl
IGNoYW5nZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBh
Z2UpOgorICAgICAgICBJZiB0aGUgc3RhdGUgb2YgUFNPTiBjaGFuZ2VzIHZpYSB0aGUgZXhwZXJp
bWVudGFsIGZlYXR1cmVzIG1lbnUsIGR5bmFtaWNhbGx5CisgICAgICAgIHVwZGF0ZSB0aGUgV2Vi
UHJvY2Vzc0NhY2hlJ3Mgc2l6ZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgY2FjaGUgaXMg
ZGlzYWJsZWQKKyAgICAgICAgd2hlbiBQU09OIGlzIGRpc2FibGVkLgorCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmcpOgorICAgICAg
ICBDbGVhciB0aGUgV2ViUHJvY2VzcyBjYWNoZSBvbiBtZW1vcnkgcHJlc3N1cmUuCisKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwp
OgorICAgICAgICBRdWVyeSB0aGUgV2ViUHJvY2Vzc0NhY2hlIGJlZm9yZSBhdHRlbXB0aW5nIHRv
IGNyZWF0ZSBhIG5ldyBXZWJQcm9jZXNzIGZvciBhIGNyb3NzLXNpdGUKKyAgICAgICAgbmF2aWdh
dGlvbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZmluZFJldXNhYmxlU3Vz
cGVuZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICBUaGlzIGxvZ2ljIHdhcyBzcGxpdCBvdXQgb2Yg
cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCgpIHRvIHJlZHVjZSB0aGUgc2l6ZQorICAgICAg
ICBvZiB0aGUgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZSk6CisgICAgICAgIFVwZGF0
ZSB0aGUgaXNJblByb2Nlc3NDYWNoZSBmbGFnIG9uIHRoZSBXZWJQcm9jZXNzUHJveHkgYW5kIHNl
bmQgYW4gSVBDIHRvIHRoZSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3Mgc28gdGhhdCBpdCBj
YW4gdXBkYXRlIGl0cyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3IuCisgICAgICAgIFdlIGFsc28g
bmVlZCB0byBzdG9wIGhvbGRpbmcgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBXZWJQcm9jZXNz
UG9vbCB3aGVuZXZlciB0aGUgcHJvY2VzcworICAgICAgICBpcyBpbiB0aGUgY2FjaGUsIHNpbWls
YXJseSB0byB3aGF0IHdlIGRvIGZvciBwcmUtd2FybWVkIHByb2Nlc3NlcywgZ2l2ZW4gdGhhdCBz
dWNoIHByb2Nlc3NlcworICAgICAgICBzaG91bGQgbm90IGtlZXAgdGhlIHByb2Nlc3MgcG9vbCBh
bGl2ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2Vi
UGFnZSk6CisgICAgICAgIEFzc2VydCB0aGF0IHdlIG5ldmVyIHRyeSB0byBhZGQgYSBwYWdlIHRv
IGEgY2FjaGVkIHByb2Nlc3MsIGl0IHNob3VsZCBiZSB0YWtlbiBvdXQgb2YgdGhlCisgICAgICAg
IGNhY2hlIGJlZm9yZSB1c2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpo
YXNQcm92aXNpb25hbFBhZ2VXaXRoSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0pOgorICAg
ICAgICBJbiBjYXNlIG9mIGNsaWVudC1zaWRlIHJlZGlyZWN0cywgdGhlIHByZXZpb3VzIHByb2Nl
c3Mgd291bGQgc29tZXRpbWVzIHNlbmQgYW4gSVBDIGNhdXNpbmcKKyAgICAgICAgdGhlIFVJUHJv
Y2VzcycgYmFja2ZvcndhcmQgbGlzdCBpdGVtIHRvIGdldCB1cGRhdGVkIHdpdGggdGhlIHByZS1y
ZWRpcmVjdCBVUkwgYWZ0ZXIgd2UndmUKKyAgICAgICAgYWxyZWFkeSByZWRpcmVjdGVkLiBUaGlz
IHByZXZpb3VzbHkgd291bGQgYmUgdW5saWtlbHkgdG8gb2NjdXIgYmVjYXVzZSB3ZSBkbyBub3Qg
c3VzcGVuZAorICAgICAgICBjbGllbnQtcmVkaXJlY3QgcGFnZXMgYW5kIHRoZWlyIHByb2Nlc3Mg
d291bGQgbm9ybWFsbHkgZXhpdCBiZWZvcmUgZ2V0dGluZyBhIGNoYW5jZSB0byBzZW5kCisgICAg
ICAgIHRoZSBJUEMuIEhvd2V2ZXIsIHdpdGggdGhlIHByb2Nlc3MgY2FjaGUsIHRoZSBidWcgYmVj
YW1lIG9idmlvdXMgYXMgdGhlIHByb2Nlc3Mgd291bGQgc3RheQorICAgICAgICBhbGl2ZSBhbmQg
c2VuZCB1cCB0aGUgImJhZCIgSVBDLiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ugbm93IG9ubHkg
bGV0IHRoZSBJUEMgdXBkYXRlIHRoZQorICAgICAgICBpdGVtIGlmIHRoZSBpdGVtJ3MgcGFnZSBp
cyAoc3RpbGwpIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvY2Vzcy4gSW4gdGhlIGZ1dHVyZSwgd2Ug
bWF5IHdhbnQKKyAgICAgICAgdG8gdXBkYXRlIHRoZSBJUEMgc28gdGhhdCBpdCBnZXRzIHNlbnQg
dG8gdGhlIFdlYlBhZ2VQcm94eSBpbnN0ZWFkIG9mIHRoZSBXZWJQcm9jZXNzUHJveHkuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWls
ZWRUb0xhdW5jaCk6CisgICAgICAgIElmIGEgY2FjaGVkIFdlYlByb2Nlc3MgY3Jhc2hlcywgcmVt
b3ZlIGl0IGZyb20gdGhlIGNhY2hlIHNvIHRoYXQgd2UgZG8gbm90IGF0dGVtcHQgdG8gdXNlCisg
ICAgICAgIGl0IGZvciBhIGxvYWQgbGF0ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUgY29uc3QpOgorICAgICAgICBPbmx5
IGNhY2hlIFdlYlByb2Nlc3NlcyB0aGF0IGhhdmUgbG9hZGVkIGEgc2luZ2xlIHJlZ2lzdHJhYmxl
IGRvbWFpbi4gQWxzbyBwcmV2ZW50IGNhY2hpbmcKKyAgICAgICAgZm9yIHNlcnZpY2Ugd29ya2Vy
IGFuZCBpbnNwZWN0b3IgcHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6bWF5YmVTaHV0RG93bik6CisgICAgICAgIElmIHRoZSBwcm9jZXNzIGlzIGNhY2hlYWJs
ZSwgYWRkIGl0IHRvIHRoZSBjYWNoZSBpbnN0ZWFkIG9mIHNodXR0aW5nIGl0IGRvd24gcmlnaHQg
YXdheS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUF1
eGlsaWFyeVByb2Nlc3MpOgorICAgICAgICBNYWtlIHN1cmUgd2UgZG8gbm90IGF0dGVtcHQgdG8g
dGVybWluYXRlIGEgcHJvY2Vzc2VzIHRoYXQgaXMgaW4gdGhlIGNhY2hlLgorCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJh
bWUpOgorICAgICAgICBXaGVuZXZlciBhIG1haW4gZnJhbWUgcHJvdmlzaW9uYWwgbG9hZCBzdGFy
dHMsIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHByb2Nlc3MncyBhc3NvY2lhdGVkCisgICAgICAg
IHJlZ2lzdHJhYmxlIGRvbWFpbi4gbnVsbG9wdCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBh
c3NvY2lhdGVkIGRvbWFpbiB5ZXQuIE51bGwgc3RyaW5nCisgICAgICAgIGluZGljYXRlcyB0aGF0
IHRoZSBwcm9jZXNzIGlzIGFzc29jaWF0ZWQgd2l0aCBzZXZlcmFsIHJlZ2lzdHJhYmxlIGRvbWFp
biBhbmQgaXMgdGhlcmVmb3JlCisgICAgICAgIG5vdCBlbGlnaWJsZSBmb3IgY2FjaGluZy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6aXNJblByb2Nlc3NDYWNoZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvdmlzaW9uYWxQYWdlQ291bnQgY29uc3QpOgorICAg
ICAgICBBZGQgY29udmVuaWVuY2UgZ2V0dGVycy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzIHRvIHByb2plY3QuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpzZXRJc0luUHJvY2Vzc0NhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKToKKyAgICAgICAgVXBkYXRl
IHRoZSBXZWJQcm9jZXNzJyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3Igd2hlbmV2ZXIgaXQgZ29l
cyBpbnRvIG9yIG91dCBvZiB0aGUgV2ViUHJvY2VzcworICAgICAgICBjYWNoZS4KKwogMjAxOS0w
Mi0xMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bmNyeXB0ZWQgUERGcyBpbnNpZGUgPGVtYmVkPiBvciA8b2JqZWN0PiBjcmFzaCB0aGUgV2ViIENv
bnRlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmlu
Z3MKaW5kZXggZmJlMjk5ZWUyYTI0YTIzYjc1M2IxMjYwN2NlZDI1NmQwZWQxYzBlYS4uZjE0NDE5
MTgzNWMzOTBjMjFkZTViZGYxYzk2NWI2YjFhOTVhYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9l
bi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00Niw2ICs0Niw5IEBACiAvKiBWaXNpYmxl
IG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9u
IG5hbWUuICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogVmlz
aWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNh
dGlvbiBuYW1lLiAqLworIiVAIFdlYiBDb250ZW50IChDYWNoZWQpIiA9ICIlQCBXZWIgQ29udGVu
dCAoQ2FjaGVkKSI7CisKIC8qIFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBh
cmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCAoUHJl
d2FybWVkKSIgPSAiJUAgV2ViIENvbnRlbnQgKFByZXdhcm1lZCkiOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDAzYjQzZjFjOTdi
MWViODdkZGMwZjQ0MTUzZWM4MjhmNWNlNDQ0OTguLjlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdj
ZjRkODQyZGZmMzk2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwCkBAIC00Myw2ICs0Myw3IEBAIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0
CiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFn
ZUlEKQogICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUp
KQogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXIo
bV9pdGVtU3RhdGUuaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJl
c3VsdCA9IGFsbEl0ZW1zKCkuYWRkKG1faXRlbVN0YXRlLmlkZW50aWZpZXIsIHRoaXMpOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggYmZmMGM4ODIwNDFmNmE5
YWE4MzMyMTY2ZmQ3YjM3N2VjM2YxYjU4My4uODcyZWYxODA5NWQxOGNjM2E5YzVlNzQ2M2QzMGU3
ZjYxNDg3MmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaApAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiBpdGVtU3RhdGUoKSB7IHJldHVybiBtX2l0ZW1TdGF0ZTsgfQogICAgIHVp
bnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKKyAgICBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVu
dGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1f
bGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCiAgICAgdm9pZCBzZXRQYWdl
U3RhdGUoUGFnZVN0YXRlIHBhZ2VTdGF0ZSkgeyBtX2l0ZW1TdGF0ZS5wYWdlU3RhdGUgPSBXVEZN
b3ZlKHBhZ2VTdGF0ZSk7IH0KICAgICBjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXRlbVN0YXRlLnBhZ2VTdGF0ZTsgfQogCkBAIC04NCw2ICs4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAgICAg
dWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY2NzNmM2RmODE3NWI0N2U0ZDVkNzA0
NTk2MTA5ZGFiNWMyMzY4NWYuLjU5Y2VmODNhNTIzOWVlYTBjYTE5N2Y2OGNiMzcyMDY3Yjk3OWUw
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dApAQCAtMjc3LDYgKzI3Nyw3IEBAIFVJUHJvY2Vzcy9XZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuY3BwCiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAogVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAK
K1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAK
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXgg
ZDE3OTc4ZTVlNjQxMTAxMDhmOGYxMjBmNmRmMGRkY2MxMmI3ODQ4My4uMjNjZjAzNTE5ODk1Yjlk
MzhjNDJiYjA5OTQ0YjQ1NzI1YTY2NTlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEy
NCw2ICsxMjQsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBl
ZFByb2Nlc3NlcyA9IHRoaXMtPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczsK
ICAgICBjb3B5LT5tX3Byb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXIgPSB0aGlzLT5t
X3Byb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXI7CiAgICAgY29weS0+bV9pc0F1dG9t
YXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50ID0gdGhpcy0+bV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGNvcHktPm1fdXNlc1dlYlByb2Nlc3ND
YWNoZSA9IHRoaXMtPm1fdXNlc1dlYlByb2Nlc3NDYWNoZTsKICNpZiBFTkFCTEUoUFJPWElNSVRZ
X05FVFdPUktJTkcpCiAgICAgY29weS0+bV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyID0gdGhp
cy0+bV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
aW5kZXggZTNhNmE3NzI1NjliNjgzMDhhNTczMDAwNmJjMTk4MzdlOWJkNDYwOC4uYTAxNjYxMmM2
OWM3MzdlMjgwZDI4ODBiY2IxMTJmNjliZTg3YWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAt
NjcsNiArNjcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YXNBdXRvbWF0aWNQcm9jZXNzV2FybWlu
Z1NldEJ5Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gISFtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1p
bmdFbmFibGVkQnlDbGllbnQ7IH0KICAgICB2b2lkIHNldElzQXV0b21hdGljUHJvY2Vzc1dhcm1p
bmdFbmFibGVkKGJvb2wgdmFsdWUpIHsgbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxl
ZEJ5Q2xpZW50ID0gdmFsdWU7IH0KIAorICAgIHZvaWQgc2V0VXNlc1dlYlByb2Nlc3NDYWNoZShi
b29sIHZhbHVlKSB7IG1fdXNlc1dlYlByb2Nlc3NDYWNoZSA9IHZhbHVlOyB9CisgICAgYm9vbCB1
c2VzV2ViUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91c2VzV2ViUHJvY2Vzc0NhY2hl
OyB9CisKICAgICBib29sIGNsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJl
d2FybWluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRp
Y1Byb2Nlc3NQcmV3YXJtaW5nOyB9CiAgICAgdm9pZCBzZXRDbGllbnRXb3VsZEJlbmVmaXRGcm9t
QXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcoYm9vbCB2YWx1ZSkgeyBtX2NsaWVudFdvdWxkQmVu
ZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyA9IHZhbHVlOyB9CiAKQEAgLTIyMyw2
ICsyMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNLZWVwQW5kUmV1c2VTd2FwcGVk
UHJvY2Vzc2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVu
V2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGJvb2wgbV91c2VzV2ViUHJvY2Vzc0Nh
Y2hlIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRp
Y1Byb2Nlc3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKICAgICBXVEY6OlN0cmluZyBtX2N1c3RvbVdl
YkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsKICAgICBib29sIG1faXNKSVRFbmFibGVk
IHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAppbmRleCAzMzhjMGRkZDc2OTZjMzJkNWQ1
YzBhZTFkYTg2NWJmMzI1YzFiMzdlLi4xNzY1MzE0MmRmNjdmNGYzYmVlMjkxMjU0NjVlNDE4ZGU2
Njg3Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcApAQCAtMTg4LDYgKzE4OCwxNiBAQCB2b2lk
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRQcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHko
V0tDb250ZXh0Q29uZmlndXJhdAogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0SXNBdXRv
bWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWQocHJld2FybXMpOwogfQogCitib29sIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT51
c2VzV2ViUHJvY2Vzc0NhY2hlKCk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNl
dFVzZXNXZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0
aW9uLCBib29sIHVzZXMpCit7CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRVc2VzV2Vi
UHJvY2Vzc0NhY2hlKHVzZXMpOworfQorCiBib29sIFdLQ29udGV4dENvbmZpZ3VyYXRpb25BbHdh
eXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5hbHdh
eXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmgKaW5kZXgg
YWQzZTdhMTcyZjgwMzU0ZWNhOTgyNDAzYTQ5ZmE4ODUxNDJmZTU3NS4uOTM5ODVhZDgzN2ZjYTk2
YzNjOGIzZmQ5ZDY1ODI4OWM4NjdiMjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaApAQCAtNzgsNiAr
NzgsOSBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0UHJvY2Vzc1N3
YXBzT25OYXZpZ2F0aW9uKFdLQ29udGV4dENvbmZpZwogV0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0
Q29uZmlndXJhdGlvblByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29u
ZmlndXJhdGlvblNldFByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgcHJld2FybXMpOwogCitXS19FWFBPUlQg
Ym9vbCBXS0NvbnRleHRDb25maWd1cmF0aW9uVXNlc1dlYlByb2Nlc3NDYWNoZShXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
Q29uZmlndXJhdGlvblNldFVzZXNXZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uLCBib29sIHVzZXMpOworCiBXS19FWFBPUlQgYm9vbCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlcyhXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250
ZXh0Q29uZmlndXJhdGlvblNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBib29sIGtlZXBBbmRSZXVzZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KaW5kZXggMjk4YjQ0ZTJmMThmODY4ZDc5NDE4OTRkMmRhNzkzYWJkZGQxNjI2MS4uYzM0
NWNkOTgzMmQ1YzliYTE4YzE1YmU3ZWU0NWMwYTEzNjg1ZTUxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTM5LDYgKzM5
LDcgQEAKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJDZXJ0aWZp
Y2F0ZUluZm8uaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2ltcG9ydCAi
V2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCIK
QEAgLTQ3NSw2ICs0NzYsMTEgQEAgLSAoc2l6ZV90KV93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1By
ZXdhcm1lZAogICAgIHJldHVybiBbc2VsZiBfd2ViUHJvY2Vzc0NvdW50XSAtIChbc2VsZiBfaGFz
UHJld2FybWVkV2ViUHJvY2Vzc10gPyAxIDogMCk7CiB9CiAKKy0gKHNpemVfdClfd2ViUHJvY2Vz
c0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX3dl
YlByb2Nlc3NDb3VudF0gLSAoW3NlbGYgX2hhc1ByZXdhcm1lZFdlYlByb2Nlc3NdID8gMSA6IDAp
IC0gX3Byb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5zaXplKCk7Cit9CisKIC0gKHNpemVf
dClfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnQKIHsKICAgICBhdXRvIGFsbFdlYlByb2Nlc3Nl
cyA9IF9wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDQ3MGRk
NTM5NGEyMTQwNzA0NmFlMmJhZTUzODdiNjY1OGViMmNiNmUuLjA3NWY3MTk3ZTk3Y2NjYTlhNDc1
ZWE4NDg2ODQ2ZWUxNzIyNmM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC05Niw2ICs5Niw3IEBA
CiAtIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MyksIGlvcygxMS4wKSk7CiAtIChCT09MKV9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoc2l6ZV90
KV93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xNCksIGlvcygxMi4wKSk7CistIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudElnbm9yaW5n
UHJld2FybWVkQW5kQ2FjaGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtIChzaXplX3QpX3NlcnZpY2VX
b3JrZXJQcm9jZXNzQ291bnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIu
MCkpOwogLSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgK
aW5kZXggZjY3MWQ3YjRjMmI4YmY5ODZiNmU0YTUwY2UwOTA5NTE3MjhjYTQzZC4uNDA1MDBkOTZh
MmRlNGRkMjExOTFhZDgzNzNkMWVhNmNjM2UxYjc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaApAQCAtNjcsNiArNjcsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEw
KSwgaW9zKDguMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbHdheXNLZWVwQW5kUmV1
c2VTd2FwcGVkUHJvY2Vzc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjE0KSwgaW9zKDEy
LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByb2Nlc3NTd2Fwc09uV2luZG93T3Bl
bldpdGhPcGVuZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwog
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlc1dlYlByb2Nlc3NDYWNoZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTQpLCBpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNK
SVRFbmFibGVkKSBCT09MIEpJVEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQpp
bmRleCA4YTM2NzgxOTg4ZWUwN2MyZTcwNTg5ZmJmYjM1N2UwZjExYTBlYTMyLi4wMWJmNmE1NDVk
OGZkNzc2MjllZDQ0MDIwOTQ2NTBiOGVmZmI0NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubW0KQEAgLTI1OCw2ICsyNTgsMTYgQEAgLSAoQk9PTClwcmV3YXJtc1Byb2Nlc3Nlc0F1
dG9tYXRpY2FsbHkKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+aXNBdXRv
bWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWQoKTsKIH0KIAorLSAodm9pZClzZXRVc2VzV2ViUHJv
Y2Vzc0NhY2hlOihCT09MKXZhbHVlCit7CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+
c2V0VXNlc1dlYlByb2Nlc3NDYWNoZSh2YWx1ZSk7Cit9CisKKy0gKEJPT0wpdXNlc1dlYlByb2Nl
c3NDYWNoZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT51c2VzV2Vi
UHJvY2Vzc0NhY2hlKCk7Cit9CisKIC0gKHZvaWQpc2V0QWx3YXlzS2VlcEFuZFJldXNlU3dhcHBl
ZFByb2Nlc3NlczooQk9PTClzd2FwcwogewogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24t
PnNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoc3dhcHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5k
ZXggNzBjOTFhNmExNDUxOGVlNTk2MmVhYTc4YmFhNzAwZDVmYWU2MTJjYS4uOTg3NDZjMzdjNTI0
Yzg3ODRiN2E2ZTgyNjY3NjY2NTE3NWY2ZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00MTgsNiArNDE4LDE0
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkK
ICAgICB9XTsKICNlbmRpZgogCisgICAgbV9hY3RpdmF0aW9uT2JzZXJ2ZXIgPSBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpbTlNPcGVy
YXRpb25RdWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90
aWZpY2F0aW9uKSB7CisgICAgICAgIHNldEFwcGxpY2F0aW9uSXNBY3RpdmUodHJ1ZSk7CisgICAg
fV07CisKKyAgICBtX2RlYWN0aXZhdGlvbk9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNBcHBsaWNhdGlvbkRpZFJlc2ln
bkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHAgcXVldWU6W05TT3BlcmF0aW9uUXVldWUg
Y3VycmVudFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikg
eworICAgICAgICBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGZhbHNlKTsKKyAgICB9XTsKKwogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC00MzMsNiArNDQxLDggQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCiAjaWYg
RU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zY3JvbGxlclN0eWxl
Tm90aWZpY2F0aW9uT2JzZXJ2ZXIuZ2V0KCldOwogI2VuZGlmCisgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2FjdGl2YXRpb25PYnNlcnZl
ci5nZXQoKV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1v
dmVPYnNlcnZlcjptX2RlYWN0aXZhdGlvbk9ic2VydmVyLmdldCgpXTsKICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGEzZjU3MTFiMDUxZWUxZjQ5NGUwZjdjYTdmYmU4
OTY1OWYxY2M0MzQuLmI2NmZmOWI0ZGQxZDA3ZjY2YWFhYTRhMTE5NmY5YTgzNGRmOTdjODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
QEAgLTE1NCw2ICsxNTQsMTIgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CiAKKyAgICAvLyBJZiB0aGlzIGlzIGEgY2xp
ZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBu
ZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2Fz
ZSwKKyAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9j
ZXNzSWRlbnRpZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tG
b3J3YXJkIGl0ZW0gdG8gaGFwcGVuIGluIHRoZQorICAgIC8vIG5ldyBwcm9jZXNzLgorICAgIGlm
IChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0
KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQorICAgICAgICBuYXZpZ2F0
aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpKTsKKwogICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVz
dCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGExM2Yy
YmI4MzE2MWU0ZjNhNmUwOWNkN2MxMGY1ODNkYmNkMDVmYS4uMTc0NTMxYTQzNDVmYjg1YmJkYzgw
ODlkNWZkOTNmN2UzNTc4MWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0zODM0LDYgKzM4MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAg
bV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24pOwog
CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIHByb2Nlc3MtPmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKHVybCk7CiAgICAgICAgIHJlcG9ydFBhZ2VM
b2FkUmVzdWx0KFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRp
b24gfSk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwog
ICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodHJhbnNhY3Rp
b24sIHVybCwgdW5yZWFjaGFibGVVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0YTRjNjIwY2Q2YTQ1YzBlYjAyYjQ4YWU0Njdm
ZDVjMzMxYTZlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHAKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBTZWNvbmRzIGNhY2hl
ZFByb2Nlc3NMaWZldGltZSB7IDMwX21pbiB9Oworc3RhdGljIFNlY29uZHMgY2xlYXJpbmdEZWxh
eUFmdGVyQXBwbGljYXRpb25SZXNpZ25zQWN0aXZlIHsgNV9taW4gfTsKKworV2ViUHJvY2Vzc0Nh
Y2hlOjpXZWJQcm9jZXNzQ2FjaGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDog
bV9ldmljdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlByb2Nlc3NDYWNoZTo6
Y2xlYXIpCit7CisgICAgdXBkYXRlTWF4aW11bVNpemUocHJvY2Vzc1Bvb2wpOworfQorCitib29s
IFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzcyhjb25zdCBTdHJpbmcmIHJlZ2lzdHJhYmxlRG9t
YWluLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCit7CisgICAgQVNTRVJUKCFyZWdp
c3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cGFnZUNvdW50
KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cHJvdmlzaW9uYWxQYWdlQ291bnQoKSk7CisgICAg
QVNTRVJUKCFwcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmhhc1N1c3BlbmRlZFBhZ2VGb3IocHJvY2Vz
cykpOworCisgICAgaWYgKCFtYXhpbXVtU2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB3aGlsZSAobV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5zaXplKCkgPj0gbWF4
aW11bVNpemUoKSkgeworICAgICAgICBhdXRvIGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJs
ZURvbWFpbi5yYW5kb20oKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
JXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3MoKTogRXZpY3RpbmcgcHJvY2VzcyAlaSBm
cm9tIFdlYlByb2Nlc3MgY2FjaGUiLCB0aGlzLCBpdC0+dmFsdWUtPnByb2Nlc3MoKS5wcm9jZXNz
SWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5y
ZW1vdmUoaXQpOworICAgIH0KKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wcm9jZXNzZXNQZXJS
ZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtwcm9jZXNzID0gcHJv
Y2Vzcy5jb3B5UmVmKCldKCkgbXV0YWJsZSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZFByb2Nlc3M+KFdURk1vdmUocHJvY2VzcykpOworICAgIH0pOworICAgIGlmICgh
YWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNz
OiBBZGRpbmcgcHJvY2VzcyAlaSB0byBXZWJQcm9jZXNzIGNhY2hlLCBjYWNoZSBzaXplOiBbJXUg
LyAldV0iLCB0aGlzLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBzaXplKCksIG1heGlt
dW1TaXplKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFN0cmluZyYgcmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3sKKyAgICBhdXRvIGl0ID0gbV9w
cm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAg
ICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNp
dGVEYXRhU3RvcmUoKSAhPSAmZGF0YVN0b3JlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGF1dG8gcHJvY2VzcyA9IGl0LT52YWx1ZS0+dGFrZVByb2Nlc3MoKTsKKyAgICBtX3Byb2Nl
c3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShpdCk7CisgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzOiBUYWtpbmcg
cHJvY2VzcyAlaSBmcm9tIFdlYlByb2Nlc3MgY2FjaGUsIGNhY2hlIHNpemU6IFsldSAvICV1XSIs
IHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHNpemUoKSwgbWF4aW11bVNpemUo
KSk7CisKKyAgICBBU1NFUlQoIXByb2Nlc3MtPnBhZ2VDb3VudCgpKTsKKyAgICBBU1NFUlQoIXBy
b2Nlc3MtPnByb3Zpc2lvbmFsUGFnZUNvdW50KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5oYXNTdXNwZW5kZWRQYWdlRm9yKHByb2Nlc3MpKTsKKworICAgIHJldHVybiBX
VEZNb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlTWF4aW11
bVNpemUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQoreworICAgIGlmICghcHJvY2Vzc1Bv
b2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpIHx8ICFwcm9jZXNz
UG9vbC5jb25maWd1cmF0aW9uKCkudXNlc1dlYlByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgIGlm
ICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigp
KQorICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9j
ZXNzQ2FjaGU6OnVwZGF0ZU1heGltdW1TaXplOiBDYWNoZSBpcyBkaXNhYmxlZCBiZWNhdXNlIHBy
b2Nlc3Mgc3dhcCBvbiBuYXZpZ2F0aW9uIGlzIGRpc2FibGVkIiwgdGhpcyk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJv
Y2Vzc0NhY2hlOjp1cGRhdGVNYXhpbXVtU2l6ZTogQ2FjaGUgaXMgZGlzYWJsZWQgYnkgY2xpZW50
IiwgdGhpcyk7CisgICAgICAgIG1fbWF4aW11bVNpemUgPSAwOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHNpemVfdCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gR0I7CisKKyAgICAgICAgLy8gQWxs
b3cgNCBwcm9jZXNzZXMgaW4gdGhlIGNhY2hlIHBlciBHQiBvZiBSQU0sIHVwIHRvIDMwIHByb2Nl
c3Nlcy4KKyAgICAgICAgbV9tYXhpbXVtU2l6ZSA9IHN0ZDo6bWluPHVuc2lnbmVkPihtZW1vcnlT
aXplICogNCwgMzApOworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAt
IFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlTWF4aW11bVNpemU6IENhY2hlIGhhcyBhIG1heGltdW0g
c2l6ZSBvZiAldSBwcm9jZXNzZXMiLCB0aGlzLCBtYXhpbXVtU2l6ZSgpKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1fbWF4aW11bVNpemUpCisgICAgICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc0NhY2hlOjpjbGVhcigpCit7CisgICAgaWYgKG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXIoKSBldmljdGluZyAldSBw
cm9jZXNzZXMiLCB0aGlzLCBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnNpemUoKSk7
CisgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5jbGVhcigpOworfQorCit2b2lk
IFdlYlByb2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZShib29sIHZhbHVlKQorewor
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjpz
ZXRBcHBsaWNhdGlvbklzQWN0aXZlKCVkKSIsIHRoaXMsIHZhbHVlKTsKKyAgICBpZiAodmFsdWUp
CisgICAgICAgIG1fZXZpY3Rpb25UaW1lci5zdG9wKCk7CisgICAgZWxzZSBpZiAoIW1fcHJvY2Vz
c2VzUGVyUmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICBtX2V2aWN0aW9uVGlt
ZXIuc3RhcnRPbmVTaG90KGNsZWFyaW5nRGVsYXlBZnRlckFwcGxpY2F0aW9uUmVzaWduc0FjdGl2
ZSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpldmljdFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKQoreworICAgIGF1dG8gaXQgPSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxl
RG9tYWluLmZpbmQocHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBBU1NFUlQoaXQg
IT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSk7CisgICAgQVNTRVJUKCZp
dC0+dmFsdWUtPnByb2Nlc3MoKSA9PSAmcHJvY2Vzcyk7CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNzKCk6IEV2aWN0
aW5nIHByb2Nlc3MgJWkgZnJvbSBXZWJQcm9jZXNzIGNhY2hlIGJlY2F1c2UgaXQgZXhwaXJlZCIs
IHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICBtX3Byb2Nlc3Nlc1Bl
clJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShpdCk7Cit9CisKK1dlYlByb2Nlc3NDYWNoZTo6Q2Fj
aGVkUHJvY2Vzczo6Q2FjaGVkUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Mp
CisgICAgOiBtX3Byb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSkKKyAgICAsIG1fZXZpY3Rpb25UaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDYWNoZWRQcm9jZXNzOjpldmljdGlvblRpbWVyRmly
ZWQpCit7CisgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKHRydWUpOworICAgIG1f
ZXZpY3Rpb25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkUHJvY2Vzc0xpZmV0aW1lKTsKK30KKwor
V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2VzcygpCit7CisgICAg
aWYgKCFtX3Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghbV9wcm9jZXNz
LT5wYWdlQ291bnQoKSk7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3MtPnByb3Zpc2lvbmFsUGFnZUNv
dW50KCkpOworICAgIEFTU0VSVCghbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmhhc1N1c3BlbmRl
ZFBhZ2VGb3IoKm1fcHJvY2VzcykpOworCisgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0Nh
Y2hlKGZhbHNlKTsKKyAgICBtX3Byb2Nlc3MtPnNodXREb3duKCk7Cit9CisKK1JlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVByb2Nlc3MoKQor
eworICAgIEFTU0VSVChtX3Byb2Nlc3MpOworICAgIG1fZXZpY3Rpb25UaW1lci5zdG9wKCk7Cisg
ICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKGZhbHNlKTsKKyAgICByZXR1cm4gbV9w
cm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpDYWNo
ZWRQcm9jZXNzOjpldmljdGlvblRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3Mp
OworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS53ZWJQcm9jZXNzQ2FjaGUoKS5ldmljdFBy
b2Nlc3MoKm1fcHJvY2Vzcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTJhMTY1MWE3OTg0
NDc4MDU2MTViOTI0MmFkZmU0NTQ0N2UyMmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYlByb2Nl
c3NQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNzIFdlYlByb2Nlc3NDYWNo
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
V2ViUHJvY2Vzc0NhY2hlKFdlYlByb2Nlc3NQb29sJik7CisKKyAgICBib29sIGFkZFByb2Nlc3Mo
Y29uc3QgU3RyaW5nJiByZWdpc3RyYWJsZURvbWFpbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7
CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3MoY29uc3QgU3RyaW5nJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYpOworCisgICAgdm9pZCB1cGRhdGVN
YXhpbXVtU2l6ZShXZWJQcm9jZXNzUG9vbCYpOworICAgIHVuc2lnbmVkIG1heGltdW1TaXplKCkg
eyByZXR1cm4gbV9tYXhpbXVtU2l6ZTsgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uc2l6ZSgpOyB9CisKKyAgICB2
b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGJvb2wpOworCitw
cml2YXRlOgorICAgIHZvaWQgZXZpY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOworCisgICAg
dW5zaWduZWQgbV9tYXhpbXVtU2l6ZSB7IDAgfTsKKworICAgIGNsYXNzIENhY2hlZFByb2Nlc3Mg
eworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAg
IENhY2hlZFByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7CisgICAgICAgIH5DYWNoZWRQ
cm9jZXNzKCk7CisKKyAgICAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3MoKTsK
KyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgeyBBU1NFUlQobV9wcm9jZXNzKTsg
cmV0dXJuICptX3Byb2Nlc3M7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZXZpY3Rp
b25UaW1lckZpcmVkKCk7CisKKyAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9j
ZXNzOworICAgICAgICBSdW5Mb29wOjpUaW1lcjxDYWNoZWRQcm9jZXNzPiBtX2V2aWN0aW9uVGlt
ZXI7CisgICAgfTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVk
UHJvY2Vzcz4+IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW47CisgICAgUnVuTG9vcDo6
VGltZXI8V2ViUHJvY2Vzc0NhY2hlPiBtX2V2aWN0aW9uVGltZXI7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCBjOWRlN2ZiNTQxYjAwYTVhMzA5MjhhZTQ5OTlkZTZiNWE1NWM4NDA1Li5hZDQxMWNiN2Y0
ZDM3YjZlMTY0YjgyMTg2OTZiOWZhN2QwZTY0MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiV2ViUGFn
ZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcmVm
ZXJlbmNlc0tleXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgpAQCAtMjU1LDYgKzI1
Niw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3ND
b3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMo
KTsgfSkKICAgICAsIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3Vu
dGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICNlbmRpZgorICAgICwg
bV93ZWJQcm9jZXNzQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+KCp0aGlzKSkK
IHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKQEAgLTMxMyw2ICszMTUsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2Vi
UHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CiAKIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogeworICAgIG1fd2ViUHJvY2Vz
c0NhY2hlLT5jbGVhcigpOworCiAgICAgYm9vbCByZW1vdmVkID0gcHJvY2Vzc1Bvb2xzKCkucmVt
b3ZlRmlyc3QodGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKIApA
QCAtNDU1LDYgKzQ1OSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXh0Q2hlY2tlclN0YXRl
Q2hhbmdlZCgpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpT
ZXRUZXh0Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNldEFwcGxpY2F0aW9uSXNBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKK3sKKyAg
ICBtX3dlYlByb2Nlc3NDYWNoZS0+c2V0QXBwbGljYXRpb25Jc0FjdGl2ZShpc0FjdGl2ZSk7Cit9
CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNjcmVlblByb3BlcnRpZXNTdGF0ZUNoYW5nZWQoKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTExNTQsNyArMTE2MywxMSBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBSZWY8QVBJOgogICAgICAgICBlbmFibGVQcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlv
biA9IGZhbHNlOwogI2VuZGlmCiAKKyAgICBib29sIHdhc1Byb2Nlc3NTd2FwcGluZ09uTmF2aWdh
dGlvbkVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigp
OwogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4
cGVyaW1lbnRhbEZlYXR1cmVzKGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9u
KTsKKyAgICBpZiAod2FzUHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9uRW5hYmxlZCAhPSBtX2Nv
bmZpZ3VyYXRpb24tPnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpKQorICAgICAgICBtX3dlYlBy
b2Nlc3NDYWNoZS0+dXBkYXRlTWF4aW11bVNpemUoKnRoaXMpOworCiAgICAgbV9jb25maWd1cmF0
aW9uLT5zZXRTaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyhwYWdlLT5wcmVmZXJlbmNlcygp
LmNhcHR1cmVBdWRpb0luVUlQcm9jZXNzRW5hYmxlZCgpKTsKICAgICBtX2NvbmZpZ3VyYXRpb24t
PnNldFNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzKHBhZ2UtPnByZWZlcmVuY2VzKCkuY2Fw
dHVyZVZpZGVvSW5VSVByb2Nlc3NFbmFibGVkKCkpOwogCkBAIC0xMzE5LDYgKzEzMzIsMTAgQEAg
V2ViUHJvY2Vzc1Bvb2w6OlN0YXRpc3RpY3MmIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkK
IAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJuaW5nKENyaXRp
Y2FsKQogeworICAgIFJFTEVBU0VfTE9HKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJv
Y2Vzc1Bvb2w6OmhhbmRsZU1lbW9yeVByZXNzdXJlV2FybmluZyIsIHRoaXMpOworCisgICAgbV93
ZWJQcm9jZXNzQ2FjaGUtPmNsZWFyKCk7CisKICAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzKQog
ICAgICAgICBtX3ByZXdhcm1lZFByb2Nlc3MtPnNodXREb3duKCk7CiAgICAgQVNTRVJUKCFtX3By
ZXdhcm1lZFByb2Nlc3MpOwpAQCAtMjE1MywxNCArMjE3MCwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6
TmF2aWdhdAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5h
bChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRl
ZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8mIHRhcmdldFVSTCA9IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKS51cmwoKTsKKyAg
ICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gdG9SZWdpc3RyYWJsZURvbWFpbih0YXJnZXRVUkwp
OworCisgICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcGFnZSA9IG1ha2VSZWYocGFnZSksIHRhcmdldFVSTCwgcmVnaXN0cmFi
bGVEb21haW5dICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKKyAgICAgICAgaWYgKGF1dG8g
cHJvY2VzcyA9IHdlYlByb2Nlc3NDYWNoZSgpLnRha2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWlu
LCBwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKQorICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3Mu
cmVsZWFzZU5vbk51bGwoKTsKKworICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgc3VzcGVu
ZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiByZWdpc3RyYWJsZSBkb21haW4gYW5kIHVzZSBpdHMgcHJv
Y2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCisgICAgICAgIGlmIChhdXRv
IHByb2Nlc3MgPSBmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhyZWdpc3RyYWJsZURv
bWFpbiwgcGFnZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
IlVzaW5nIFdlYlByb2Nlc3MgJWkgZnJvbSBhIFN1c3BlbmRlZFBhZ2UiLCBwcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9jZXNzLnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgIH0KIAotICAgIGF1dG8gY3JlYXRlTmV3UHJvY2VzcyA9IFsmXSAoKSAt
PiBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViUHJvY2Vzc1By
b3h5PiBwcm9jZXNzID0gdHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MocGFnZS53ZWJzaXRlRGF0YVN0
b3JlKCkpKSB7CisgICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJv
Y2VzcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3dhcHBpbmcsICJVc2luZyBwcmV3YXJtZWQgcHJvY2VzcyAlaSIsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgdHJ5UHJld2FybVdpdGhEb21haW5J
bmZvcm1hdGlvbigqcHJvY2VzcywgdGFyZ2V0VVJMKTsKICAgICAgICAgICAgIHJldHVybiBwcm9j
ZXNzLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gY3JlYXRl
TmV3V2ViUHJvY2VzcyhwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTd2FwcGluZywgIkxhdW5jaGluZyBhIG5ldyBwcm9jZXNzIik7CisgICAgICAg
IHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAg
ICAgfTsKIAogICAgIGlmICh1c2VzU2luZ2xlV2ViUHJvY2VzcygpKQpAQCAtMjE5OSwxMiArMjIy
OCwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFs
KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIodGFyZ2V0SXRlbS0+aXRlbUlEKCkucHJv
Y2Vzc0lkZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBw
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih0YXJnZXRJdGVt
LT5sYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBcmNo
aXRlY3R1cmFsbHkgd2UgZG8gbm90IGN1cnJlbnRseSBzdXBwb3J0IG11bHRpcGxlIFdlYlBhZ2Un
cyB3aXRoIHRoZSBzYW1lIElEIGluIGEgZ2l2ZW4gV2ViUHJvY2Vzcy4KICAgICAgICAgICAgIC8v
IEluIHRoZSBjYXNlIHdoZXJlIHRoaXMgV2ViUHJvY2VzcyBoYXMgYSBTdXNwZW5kZWRQYWdlUHJv
eHkgZm9yIHRoaXMgV2ViUGFnZSwgd2UgY2FuIHRocm93IGl0IGF3YXkgdG8gc3VwcG9ydAogICAg
ICAgICAgICAgLy8gV2ViUHJvY2VzcyByZS11c2UuCiAgICAgICAgICAgICByZW1vdmVBbGxTdXNw
ZW5kZWRQYWdlc0ZvclBhZ2UocGFnZSwgcHJvY2Vzcy5nZXQoKSk7CiAKKyAgICAgICAgICAgIC8v
IE1ha2Ugc3VyZSB3ZSByZW1vdmUgdGhlIHByb2Nlc3MgZnJvbSB0aGUgY2FjaGUgaWYgaXQgaXMg
aW4gdGhlcmUgc2luY2Ugd2UncmUgYWJvdXQgdG8gdXNlIGl0LgorICAgICAgICAgICAgaWYgKHBy
b2Nlc3MtPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcmVtb3Zl
ZFByb2Nlc3MgPSB3ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2Vzcyhwcm9jZXNzLT5yZWdpc3Ry
YWJsZURvbWFpbigpLCBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzLmdldCgpID09
IHByb2Nlc3MuZ2V0KCkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIocHJvY2Vzcy5yZWxlYXNlTm9uTnVsbCgpLCBudWxscHRyLCAiVXNpbmcg
dGFyZ2V0IGJhY2svZm9yd2FyZCBpdGVtJ3MgcHJvY2VzcyJfcyk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yMjI4LDcgKzIyNjMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2
aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgogCiAgICAgU3Ry
aW5nIHJlYXNvbiA9ICJOYXZpZ2F0aW9uIGlzIGNyb3NzLXNpdGUiX3M7CiAgICAgCi0gICAgYXV0
byByZWdpc3RyYWJsZURvbWFpbiA9IHRvUmVnaXN0cmFibGVEb21haW4odGFyZ2V0VVJMKTsKICAg
ICBpZiAobV9jb25maWd1cmF0aW9uLT5hbHdheXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2Vz
KCkpIHsKICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBpbmcpIENv
bnNpZGVyaW5nIHJlLXVzZSBvZiBhIHByZXZpb3VzbHkgY2FjaGVkIHByb2Nlc3MgZm9yIGRvbWFp
biAlcyIsIHJlZ2lzdHJhYmxlRG9tYWluLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0yMjQ3LDIyICsy
MjgxLDI2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJu
YWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgc3VzcGVuZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiByZWdp
c3RyYWJsZSBkb21haW4gYW5kIHVzZSBpdHMgcHJvY2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZvcm1h
bmNlIHJlYXNvbnMuCisgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5ld1Byb2Nl
c3MoKSwgbnVsbHB0ciwgcmVhc29uKTsKK30KKworUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc1Bvb2w6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKGNvbnN0IFN0cmlu
ZyYgcmVnaXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eSYgcGFnZSkKK3sKICAgICBhdXRvIGl0
ID0gbV9zdXNwZW5kZWRQYWdlcy5maW5kSWYoWyZdKGF1dG8mIHN1c3BlbmRlZFBhZ2UpIHsKLSAg
ICAgICAgcmV0dXJuIHN1c3BlbmRlZFBhZ2UtPnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0
cmFibGVEb21haW47CisgICAgICAgIHJldHVybiBzdXNwZW5kZWRQYWdlLT5yZWdpc3RyYWJsZURv
bWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCku
d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwYWdlLndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICB9KTsK
LSAgICBpZiAoaXQgIT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQoKSkgewotICAgICAgICBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiBwcm9jZXNzID0gKCppdCktPnByb2Nlc3MoKTsKKyAgICBpZiAoaXQgPT0g
bV9zdXNwZW5kZWRQYWdlcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAg
ICAgLy8gRklYTUU6IElmIHRoZSBTdXNwZW5kZWRQYWdlIGlzIGZvciB0aGlzIHBhZ2UsIHRoZW4g
d2UgbmVlZCB0byBkZXN0cm95IHRoZSBzdXNwZW5kZWQgcGFnZSBhcyB3ZSBkbyBub3Qgc3VwcG9y
dCBoYXZpbmcKLSAgICAgICAgLy8gbXVsdGlwbGUgV2ViUGFnZXMgd2l0aCB0aGUgc2FtZSBJRCBp
biBhIGdpdmVuIFdlYlByb2Nlc3MgY3VycmVudGx5IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxMTY2KS4KLSAgICAgICAgaWYgKCYoKml0KS0+cGFnZSgpID09ICZw
YWdlKQotICAgICAgICAgICAgbV9zdXNwZW5kZWRQYWdlcy5yZW1vdmUoaXQpOworICAgIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IHByb2Nlc3MgPSAoKml0KS0+cHJvY2VzcygpOwogCi0gICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHByb2Nlc3MpLCBudWxscHRyLCByZWFzb24p
OwotICAgIH0KKyAgICAvLyBGSVhNRTogSWYgdGhlIFN1c3BlbmRlZFBhZ2UgaXMgZm9yIHRoaXMg
cGFnZSwgdGhlbiB3ZSBuZWVkIHRvIGRlc3Ryb3kgdGhlIHN1c3BlbmRlZCBwYWdlIGFzIHdlIGRv
IG5vdCBzdXBwb3J0IGhhdmluZworICAgIC8vIG11bHRpcGxlIFdlYlBhZ2VzIHdpdGggdGhlIHNh
bWUgSUQgaW4gYSBnaXZlbiBXZWJQcm9jZXNzIGN1cnJlbnRseSAoaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTE2NikuCisgICAgaWYgKCYoKml0KS0+cGFnZSgpID09
ICZwYWdlKQorICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZShpdCk7CiAKLSAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlTmV3UHJvY2VzcygpLCBudWxscHRyLCByZWFzb24p
OworCisgICAgcmV0dXJuIFdURk1vdmUocHJvY2Vzcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmFkZFN1c3BlbmRlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4m
JiBzdXNwZW5kZWRQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggZTU3NGUxZDdhNjJjNGQ3ZWNmMzA4M2QyZjgzMzBkOTgxMzdlNWZjZC4uZWJmZjliZjk3
ZmE5Njk2ZDMyNzE2NGFiNmNhZWU0NTRiYWEyYjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMDEsNiArMTAxLDcgQEAgY2xhc3MgV2ViQXV0b21hdGlv
blNlc3Npb247CiBjbGFzcyBXZWJDb250ZXh0U3VwcGxlbWVudDsKIGNsYXNzIFdlYlBhZ2VHcm91
cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NDYWNoZTsKIHN0cnVjdCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBTdGF0aXN0aWNzRGF0YTsK
IHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtMTc2LDYgKzE3Nyw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNz
UHJveHkqKTsKIAorICAgIFdlYlByb2Nlc3NDYWNoZSYgd2ViUHJvY2Vzc0NhY2hlKCkgeyByZXR1
cm4gbV93ZWJQcm9jZXNzQ2FjaGUuZ2V0KCk7IH0KKwogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHBy
b2Nlc3MgZnJvbSB0aGUgY29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSopOwogCkBAIC00NjQsNiArNDY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlU3VzcGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmKTsKICAgICBib29sIGhhc1N1c3Bl
bmRlZFBhZ2VGb3IoV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZVByb3h5KiA9IG51bGxwdHIpIGNv
bnN0OwogICAgIHVuc2lnbmVkIG1heFN1c3BlbmRlZFBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4U3VzcGVuZGVkUGFnZUNvdW50OyB9CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoY29uc3QgU3RyaW5nJiwgV2ViUGFnZVBy
b3h5Jik7CiAKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0oKTsKIApAQCAtNTQ4
LDYgKzU1Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2Jz
ZXJ2ZXJzKCk7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0FjdGl2ZShib29s
KTsKKwogICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcm
IHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFBBTDo6U2Vzc2lvbklEKTsK
ICAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0lu
T3JpZ2luSGFzaCwgUEFMOjpTZXNzaW9uSUQpOwogCkBAIC02NDksNiArNjU1LDggQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgUmV0
YWluUHRyPE5TT2JqZWN0PiBtX3Njcm9sbGVyU3R5bGVOb3RpZmljYXRpb25PYnNlcnZlcjsKICNl
bmRpZgorICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9hY3RpdmF0aW9uT2JzZXJ2ZXI7CisgICAg
UmV0YWluUHRyPE5TT2JqZWN0PiBtX2RlYWN0aXZhdGlvbk9ic2VydmVyOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPiBtX2hpZ2hQZXJm
b3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJBY3Rp
dml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPiBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXI7CkBAIC03MzksNiArNzQ3LDcgQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5Pj4gbV9zdXNwZW5kZWRQYWdlczsKICAgICB1bnNpZ25lZCBt
X21heFN1c3BlbmRlZFBhZ2VDb3VudCB7IDAgfTsKIAorICAgIFVuaXF1ZVJlZjxXZWJQcm9jZXNz
Q2FjaGU+IG1fd2ViUHJvY2Vzc0NhY2hlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2Vi
UHJvY2Vzc1Byb3h5Pj4gbV9zd2FwcGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW47CiAK
ICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlByZXdhcm1JbmZv
cm1hdGlvbj4+IG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlNjg2ODI4NTkw
YTU0ODA1ZGYzZTMxNzkwZmY4NTA0MmVhZjU3M2NlLi42MzliMGIyYWIwNTNkNjJhMGUzZDhkM2Zj
ZGQ4M2M2ODZlOTJhMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0xODEsNiArMTgyLDIzIEBAIFdlYlByb2Nlc3NQcm94eTo6fldl
YlByb2Nlc3NQcm94eSgpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElz
SW5Qcm9jZXNzQ2FjaGUoYm9vbCB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9pc0luUHJvY2Vzc0Nh
Y2hlICE9IHZhbHVlKTsKKyAgICBtX2lzSW5Qcm9jZXNzQ2FjaGUgPSB2YWx1ZTsKKworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldElzSW5Qcm9jZXNzQ2FjaGUobV9pc0luUHJvY2Vz
c0NhY2hlKSwgMCk7CisKKyAgICBpZiAobV9pc0luUHJvY2Vzc0NhY2hlKSB7CisgICAgICAgIC8v
IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIG5vcm1hbGx5IGtlZXAgdGhlIHByb2Nlc3MgcG9vbCBh
bGl2ZSBidXQgd2UgZG8gbm90IHdhbnQgdGhpcyB0byBiZSB0aGUgY2FzZQorICAgICAgICAvLyBm
b3IgY2FjaGVkIHByb2Nlc3NlcyBvciBpdCB3b3VsZCBsZWFrIHRoZSBwb29sLgorICAgICAgICBt
X3Byb2Nlc3NQb29sLnNldElzV2VhayhJc1dlYWs6Olllcyk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzUG9vbCk7CisgICAgICAgIG1fcHJvY2Vzc1Bvb2wu
c2V0SXNXZWFrKElzV2Vhazo6Tm8pOworICAgIH0KK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hP
cHRpb25zKQogewogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNo
ZXI6OlByb2Nlc3NUeXBlOjpXZWI7CkBAIC0zMzMsNiArMzUxLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVpbnQ2NF90
IHBhZ2VJRCwKIHsKICAgICBBU1NFUlQoIW1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKICAg
ICBBU1NFUlQoIWdsb2JhbFBhZ2VNYXAoKS5jb250YWlucyhwYWdlSUQpKTsKKyAgICBBU1NFUlQo
IW1faXNJblByb2Nlc3NDYWNoZSk7CiAKICAgICBpZiAoYmVnaW5zVXNpbmdEYXRhU3RvcmUgPT0g
QmVnaW5zVXNpbmdEYXRhU3RvcmU6OlllcykKICAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUJl
Z2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UpOwpAQCAtNDgwLDEwICs0OTksMzYgQEAg
Ym9vbCBXZWJQcm9jZXNzUHJveHk6OmZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKQogfQogI2Vu
ZGlmCiAKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWlu
dDY0X3QgcGFnZUlEKSBjb25zdAoreworICAgIGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDog
bV9wcm92aXNpb25hbFBhZ2VzKSB7CisgICAgICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2Uo
KS5wYWdlSUQoKSA9PSBwYWdlSUQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYlByb2Nlc3NQcm94eTo6aXNBbGxvd2VkVG9V
cGRhdGVCYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkgY29uc3QK
K3sKKyAgICBpZiAobV9wYWdlTWFwLmNvbnRhaW5zKGl0ZW0ucGFnZUlEKCkpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoaXRlbS5wYWdl
SUQoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGl0ZW0uc3VzcGVuZGVkUGFn
ZSgpICYmIGl0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wYWdlKCkucGFnZUlEKCkgPT0gaXRlbS5wYWdl
SUQoKSAmJiAmaXRlbS5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSA9PSB0aGlzKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUmIGl0ZW1TdGF0ZSkKIHsKLSAgICBpZiAoYXV0byogaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06Oml0ZW1Gb3JJRChpdGVtU3RhdGUuaWRlbnRpZmllcikpCi0gICAgICAgIGl0ZW0tPnNl
dFBhZ2VTdGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKKyAgICBhdXRvKiBpdGVtID0gV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6aXRlbUZvcklEKGl0ZW1TdGF0ZS5pZGVudGlmaWVyKTsKKyAgICBp
ZiAoIWl0ZW0gfHwgIWlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKCppdGVtKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaXRlbS0+c2V0UGFnZVN0YXRlKGl0ZW1TdGF0ZS5wYWdlU3Rh
dGUpOwogfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC01OTAsNiArNjM1
LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRU
b0xhdW5jaCgpCiAgICAgYXV0byBwYWdlcyA9IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxXZWJQYWdl
UHJveHk+PihtX3BhZ2VNYXAudmFsdWVzKCkpOwogICAgIGF1dG8gcHJvdmlzaW9uYWxQYWdlcyA9
IFdURjo6bWFwKG1fcHJvdmlzaW9uYWxQYWdlcywgW10oYXV0byogcHJvdmlzaW9uYWxQYWdlKSB7
IHJldHVybiBtYWtlV2Vha1B0cihwcm92aXNpb25hbFBhZ2UpOyB9KTsKIAorICAgIGlmIChtX2lz
SW5Qcm9jZXNzQ2FjaGUpIHsKKyAgICAgICAgYXV0byByZW1vdmVkUHJvY2VzcyA9IHByb2Nlc3NQ
b29sKCkud2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nlc3MocmVnaXN0cmFibGVEb21haW4oKSwg
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUHJvY2Vz
cywgcmVtb3ZlZFByb2Nlc3MuZ2V0KCkgPT0gdGhpcyk7CisgICAgfQorCiAgICAgc2h1dERvd24o
KTsKIAogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCkBAIC03NjksMTcgKzgxOSwzNCBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVVzZXJHZXN0dXJlVG9rZW4odWludDY0
X3QgaWRlbnRpZmllcikKICAgICBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXAucmVtb3ZlKGlkZW50
aWZpZXIpOwogfQogCitib29sIFdlYlByb2Nlc3NQcm94eTo6Y2FuQmVBZGRlZFRvV2ViUHJvY2Vz
c0NhY2hlKCkgY29uc3QKK3sKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4oKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNz
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChXZWJLaXQ6OmlzSW5zcGVjdG9y
UHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2woKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWF5YmVTaHV0RG93bigp
CiB7CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0
ZUF1eGlsaWFyeVByb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGNhbkJlQWRk
ZWRUb1dlYlByb2Nlc3NDYWNoZSgpICYmIHByb2Nlc3NQb29sKCkud2ViUHJvY2Vzc0NhY2hlKCku
YWRkUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbigpLCAqdGhpcykpCisgICAgICAgIHJldHVybjsK
KwogICAgIHNodXREb3duKCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5h
dGVBdXhpbGlhcnlQcm9jZXNzKCkKIHsKLSAgICBpZiAoIW1fcGFnZU1hcC5pc0VtcHR5KCkgfHwg
bV9wcm9jZXNzUG9vbC0+aGFzU3VzcGVuZGVkUGFnZUZvcigqdGhpcykgfHwgIW1fcHJvdmlzaW9u
YWxQYWdlcy5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3BhZ2VNYXAuaXNFbXB0eSgpIHx8IG1fcHJv
Y2Vzc1Bvb2wtPmhhc1N1c3BlbmRlZFBhZ2VGb3IoKnRoaXMpIHx8ICFtX3Byb3Zpc2lvbmFsUGFn
ZXMuaXNFbXB0eSgpIHx8IG1faXNJblByb2Nlc3NDYWNoZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sLT5zaG91bGRUZXJtaW5hdGUodGhpcykpCkBAIC0x
MzQ0LDYgKzE0MTEsMjMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFjdGl2ZVBhZ2VzRG9tYWlu
c0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3IKICAgICBjb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0QWN0aXZlUGFn
ZXNPcmlnaW5zRm9yVGVzdGluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFt
ZShjb25zdCBVUkwmIHVybCkKK3sKKyAgICAvLyBUaGlzIHByb2Nlc3MgaGFzIGJlZW4gdXNlZCBm
b3Igc2V2ZXJhbCByZWdpc3RyYWJsZSBkb21haW5zIGFscmVhZHkuCisgICAgaWYgKG1fcmVnaXN0
cmFibGVEb21haW4gJiYgbV9yZWdpc3RyYWJsZURvbWFpbi0+aXNOdWxsKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB0b1JlZ2lzdHJhYmxlRG9tYWlu
KHVybCk7CisgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21h
aW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKKyAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFi
bGUgZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJh
bCBkb21haW5zLgorICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gU3RyaW5nKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBc3NvY2lhdGUgdGhlIHByb2Nlc3Mgd2l0aCB0
aGlzIHJlZ2lzdHJhYmxlIGRvbWFpbi4KKyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbik7Cit9CisKICNpZiBQTEFURk9STShXQVRDSE9TKQogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6dGFrZUJhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVl
bklucHV0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
ZWE4MDk3OTYyMWU4MTYyYzgyZDYyMDdjYzNlMmI0NjgxYTVmMjE2Zi4uMzc2ZjNkNTc3OTNlN2Jm
YzQ5MWMzNTM2M2QyMDg4MzJkN2RmNDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKQEAgLTEwOCw2ICsxMDgsMTAgQEAgcHVibGljOgogCiAgICAgV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgY29uc3QgeyBBU1NFUlQobV9wcm9jZXNzUG9vbCk7IHJl
dHVybiAqbV9wcm9jZXNzUG9vbC5nZXQoKTsgfQogCisgICAgU3RyaW5nIHJlZ2lzdHJhYmxlRG9t
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi52YWx1ZU9yKFN0cmluZygp
KTsgfQorICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sKTsKKyAgICBib29sIGlzSW5Q
cm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KKwogICAg
IC8vIEZJWE1FOiBXZWJzaXRlRGF0YVN0b3JlcyBzaG91bGQgYmUgbWFkZSBwZXItV2ViUGFnZVBy
b3h5IHRocm91Z2hvdXQgV2ViS2l0MgogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRh
U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIApAQCAt
MTI2LDYgKzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIHR5cGVuYW1lIFdlYlBhZ2VQcm94eU1hcDo6
VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIHBhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlTWFw
LnZhbHVlcygpOyB9CiAgICAgdW5zaWduZWQgcGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlTWFwLnNpemUoKTsgfQorICAgIHVuc2lnbmVkIHByb3Zpc2lvbmFsUGFnZUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFBhZ2VzLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIHZp
c2libGVQYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVQYWdlQ291bnRlci52YWx1
ZSgpOyB9CiAKICAgICB2b2lkIGFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7IC8vIFRoaXMgaXMgd2hhdCBpcyBy
ZXBvcnRlZCB0byBBY3Rpdml0eU1vbml0b3IuCkBAIC0yNDksNiArMjU0LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2h1dERvd24oKTsKICAgICB2b2lkIG1heWJlU2h1dERvd24oKTsKIAorICAgIHZv
aWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJik7CisKIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBXZWJQ
cm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlJiwgSXNQcmV3YXJt
ZWQpOwpAQCAtMjc0LDYgKzI4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95RnJh
bWUodWludDY0X3QpOwogICAgIHZvaWQgZGlkRGVzdHJveVVzZXJHZXN0dXJlVG9rZW4odWludDY0
X3QpOwogCisgICAgYm9vbCBjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUoKSBjb25zdDsKICAg
ICB2b2lkIHNob3VsZFRlcm1pbmF0ZShib29sJiBzaG91bGRUZXJtaW5hdGUpOwogCiAgICAgdm9p
ZCBjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiBwb3J0MSwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBw
b3J0Mik7CkBAIC0yODYsNiArMjk0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlbGl2ZXJN
ZXNzYWdlUG9ydE1lc3NhZ2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOwogICAg
IHZvaWQgZGlkQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyLCBib29sIGlzTG9jYWxseVJlYWNoYWJsZSk7CiAKKyAgICBib29sIGhhc1By
b3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIGJvb2wgaXNB
bGxvd2VkVG9VcGRhdGVCYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIGNv
bnN0OworCiAgICAgLy8gUGx1Z2lucwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
ICAgIHZvaWQgZ2V0UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiYgcGx1Z2lucywgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBhcHBsaWNhdGlvblBs
dWdpbnMsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVy
Pj4mKTsKQEAgLTM3MSw3ICszODIsNyBAQCBwcml2YXRlOgogICAgIEJhY2tncm91bmRQcm9jZXNz
UmVzcG9uc2l2ZW5lc3NUaW1lciBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyOwogICAg
IAogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247
Ci0gICAgV2Vha09yU3Ryb25nUHRyPFdlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOyAvLyBQ
cmUtd2FybWVkIHByb2Nlc3NlcyBkbyBub3QgaG9sZCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gdGhl
aXIgcG9vbC4KKyAgICBXZWFrT3JTdHJvbmdQdHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bv
b2w7IC8vIFByZS13YXJtZWQgYW5kIGNhY2hlZCBwcm9jZXNzZXMgZG8gbm90IGhvbGQgYSBzdHJv
bmcgcmVmZXJlbmNlIHRvIHRoZWlyIHBvb2wuCiAKICAgICBib29sIG1fbWF5SGF2ZVVuaXZlcnNh
bEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbjsgLy8gVHJ1ZSBpZiBhIHJlYWQgZXh0ZW5zaW9uIGZv
ciAiLyIgd2FzIGV2ZXIgZ3JhbnRlZCAtIHdlIGRvbid0IHRyYWNrIHdoZXRoZXIgV2ViUHJvY2Vz
cyBzdGlsbCBoYXMgaXQuCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbG9jYWxQYXRoc1dpdGhBc3N1
bWVkUmVhZEFjY2VzczsKQEAgLTM5NCw2ICs0MDUsOSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1h
cDxTdHJpbmcsIHVpbnQ2NF90PiBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcDsKIAorICAgIE9wdGlv
bmFsPFN0cmluZz4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBib29sIG1faXNJblByb2Nlc3ND
YWNoZSB7IGZhbHNlIH07CisKICAgICBlbnVtIGNsYXNzIE5vT3JNYXliZSB7IE5vLCBNYXliZSB9
IG1faXNSZXNwb25zaXZlOwogICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MjFhMDZh
M2UzN2I2NGU1NzQ5YTJhMWY2ZTQ0YTMzMDQ2OThjOGIzLi44MmJiNWM3Njg5OWIxYjgxYWMwMDU0
NDE4OGZkNDZhNTdhZWE5MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTM2ODUsNiArMzY4NSw4IEBACiAJCTgzMkFFMjUxMUJFMkU4
Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJFRDE4OTFF
MkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyRUQxOEExRTJG
RTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzM5N0M2NjIyMTI0QkQxMDBCNjIz
ODggLyogV2ViUHJvY2Vzc0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlByb2Nlc3NDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzMzk3QzY3MjIxMjRCRDEwMEI2MjM4OCAvKiBXZWJQcm9jZXNzQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0NhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MTAxQTg0
MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NDkwLDYgKzc0OTIsOCBAQAogCQkJCUJDNTc0RTYxMTI2N0QwODAwMDZGMEYxMiAvKiBXZWJQ
b3B1cE1lbnVQcm94eS5oICovLAogCQkJCUJDRDU5N0ZFMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQ
cmVmZXJlbmNlcy5jcHAgKi8sCiAJCQkJQkNENTk3RkQxMTJCNTdCRTAwRUM4QzIzIC8qIFdlYlBy
ZWZlcmVuY2VzLmggKi8sCisJCQkJODMzOTdDNjYyMjEyNEJEMTAwQjYyMzg4IC8qIFdlYlByb2Nl
c3NDYWNoZS5jcHAgKi8sCisJCQkJODMzOTdDNjcyMjEyNEJEMTAwQjYyMzg4IC8qIFdlYlByb2Nl
c3NDYWNoZS5oICovLAogCQkJCTFBRkE0QjhEMUE2NUE5RTIwMDZDNEFCNCAvKiBXZWJQcm9jZXNz
TGlmZXRpbWVPYnNlcnZlci5jcHAgKi8sCiAJCQkJMUFGQTRCOEUxQTY1QTlFMjAwNkM0QUI0IC8q
IFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmggKi8sCiAJCQkJMUFGQTRCODkxQTY1QTFEMDAw
NkM0QUI0IC8qIFdlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDI4MjIwNTBlNGFiNTFhMjg0OTEyYmVmYzRk
MDNhYjI1MmEwZWZkY2YuLjIzZThjMzcxMjY4MzA2N2VjYzQ0ZTE5MmNlNjNlOWIxNWRiZWY2MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ1Nyw2ICs0NTcs
MjMgQEAgYm9vbCBXZWJQcm9jZXNzOjpoYXNQYWdlUmVxdWlyaW5nUGFnZUNhY2hlV2hpbGVTdXNw
ZW5kZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjpz
ZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wgaXNJblByb2Nlc3NDYWNoZSkKK3sKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgaWYgKGlzSW5Qcm9jZXNzQ2FjaGUpIHsKKyAgICAgICAgQVNTRVJUKG1fcHJv
Y2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQpOworICAgICAgICBtX3Byb2Nlc3NU
eXBlID0gUHJvY2Vzc1R5cGU6OkNhY2hlZFdlYkNvbnRlbnQ7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQVNTRVJUKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OkNhY2hlZFdlYkNvbnRlbnQp
OworICAgICAgICBtX3Byb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ7CisgICAg
fQorCisgICAgdXBkYXRlUHJvY2Vzc05hbWUoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlz
SW5Qcm9jZXNzQ2FjaGUpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUHJvY2Vzczo6bWFya0lzTm9M
b25nZXJQcmV3YXJtZWQoKQogewogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IGI5Y2EyZWU0MTcwN2JjNWJjNjJiYjExYmQ0NjI4ZWZjNGIy
NzBjM2YuLjViZDAwMDU4MGMxZjAxNGJkMzk4ODM3MzdmMDc5NWVmNjQ0MjNkNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjY3LDYgKzI2Nyw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHBsYXRmb3JtVGVybWluYXRlKCk7CiAKKyAgICB2b2lkIHNldElzSW5Qcm9j
ZXNzQ2FjaGUoYm9vbCk7CiAgICAgdm9pZCBtYXJrSXNOb0xvbmdlclByZXdhcm1lZCgpOwogCiAg
ICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJpbmcmKTsK
QEAgLTQ2NSw3ICs0NjYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpDUFVNb25pdG9yPiBtX2NwdU1vbml0b3I7CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2NwdUxp
bWl0OwogCi0gICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7IEluc3BlY3RvciwgU2VydmljZVdv
cmtlciwgUHJld2FybWVkV2ViQ29udGVudCwgV2ViQ29udGVudCB9OworICAgIGVudW0gY2xhc3Mg
UHJvY2Vzc1R5cGUgeyBJbnNwZWN0b3IsIFNlcnZpY2VXb3JrZXIsIFByZXdhcm1lZFdlYkNvbnRl
bnQsIENhY2hlZFdlYkNvbnRlbnQsIFdlYkNvbnRlbnQgfTsKICAgICBQcm9jZXNzVHlwZSBtX3By
b2Nlc3NUeXBlIHsgUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQgfTsKICAgICBTdHJpbmcgbV91aVBy
b2Nlc3NOYW1lOwogICAgIFN0cmluZyBtX3NlY3VyaXR5T3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2ZjZjYTM2MmVmYzYy
ODZlODlmZjQ2ZGNlODAyZGJjYmVmZTg3NzIzLi4zZDczZjJlOWNjNjIwNmI3MTc3ZjJlMmRlMDFh
YmU5Yzg2YmQzNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMTE5LDYgKzExOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogICAgIENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCwgdWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyKQogICAgIE1lc3NhZ2VzQXZhaWxhYmxlRm9yUG9ydChzdHJ1Y3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpCiAKKyAgICBTZXRJc0luUHJvY2Vzc0NhY2hl
KGJvb2wgaXNJblByb2Nlc3NDYWNoZSkKICAgICBNYXJrSXNOb0xvbmdlclByZXdhcm1lZCgpCiAg
ICAgVXBkYXRlQWN0aXZlUGFnZXMoKQogICAgIEdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3Rp
bmcoKSAtPiAoVmVjdG9yPFN0cmluZz4gYWN0aXZlT3JpZ2lucykgQXN5bmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGU3N2Y3
MTU0ZGI5NDhlNmJmZDM2OTc3NjRjMWE0YjllMmZkMzk0N2QuLmQxNjI1MTY1OThhNzE4M2FhYzI0
YjAwZmUyNjJjMjViY2NhODdlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMjQwLDYgKzI0MCw5IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dXBkYXRlUHJvY2Vzc05hbWUoKQogICAgIGNhc2UgUHJvY2Vzc1R5cGU6OlByZXdhcm1l
ZFdlYkNvbnRlbnQ6CiAgICAgICAgIGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBDb250ZW50IChQcmV3YXJtZWQpIiwgIlZp
c2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGlj
YXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopbV91aVByb2Nlc3NOYW1lXTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQcm9jZXNzVHlwZTo6Q2FjaGVkV2ViQ29udGVudDoKKyAgICAgICAgYXBw
bGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygi
JUAgV2ViIENvbnRlbnQgKENhY2hlZCkiLCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vz
cy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKilt
X3VpUHJvY2Vzc05hbWVdOworICAgICAgICBicmVhazsKICAgICBjYXNlIFByb2Nlc3NUeXBlOjpX
ZWJDb250ZW50OgogICAgICAgICBhcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCIsICJWaXNpYmxlIG5hbWUgb2Yg
dGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiks
IChOU1N0cmluZyAqKW1fdWlQcm9jZXNzTmFtZV07CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIyY2M2YTUxMjBkNzU4
YTQyNjliMGI0ZmU5YWMzNjk5MzI1YWE2M2QuLjFkNTQ3NDliMDdmMjVmN2I3NjNkNjEzZWU5OWEw
MTY1OTgwNjYxNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wMi0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFtQU09OXSBJbnRyb2R1Y2UgYSBXZWJDb250ZW50IFByb2Nl
c3MgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDU5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY3OTMzOTc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0cyB0byB0
dXJuIG9uIHRoZSBXZWJDb250ZW50IFByb2Nlc3MgY2FjaGUuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorCiAy
MDE5LTAyLTEyICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
RnVydGhlciByZXN0cmljdGluZyB3ZWJhcmNoaXZlIGxvYWRzCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQppbmRleCAyMmUxY2Q1ODNmMDVmMTRkZGRkYTQ0ODFjYThiNzhjODZiMDExMmM0
Li5jMjc3ODUwMTg1OGRiZThiN2M1YmM1OWMxYmQ0NDBjNTc4M2I2MTRlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTQzMiwxMSArNDMyLDE4IEBAIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdwYWdlc2hvdycsIGZ1bmN0aW9uKGV2ZW50KSB7CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCiAKLVRFU1QoUHJvY2Vzc1N3YXAsIEJhc2ljKQorc3RhdGljIFJldGFpblB0cjxf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KQogewogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnVzZXNXZWJQcm9jZXNzQ2FjaGUgPSBZRVM7CiAg
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0b21h
dGljYWxseSA9IFlFUzsKKyAgICByZXR1cm4gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOworfQor
CitURVNUKFByb2Nlc3NTd2FwLCBCYXNpYykKK3sKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nl
c3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZp
ZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKQEAgLTQ4MSw5ICs0ODgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYXNpYykKIAog
VEVTVChQcm9jZXNzU3dhcCwgTG9hZEFmdGVyUG9saWN5RGVjaXNpb24pCiB7Ci0gICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
LnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNTE5LDkgKzUyNCw3IEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIExvYWRBZnRlclBvbGljeURlY2lzaW9uKQogCiBURVNUKFByb2Nlc3NTd2FwLCBL
aWxsV2ViQ29udGVudFByb2Nlc3NBZnRlclNlcnZlclJlZGlyZWN0UG9saWN5RGVjaXNpb24pCiB7
Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0g
WUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNTcwLDkgKzU3Myw3
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEtpbGxXZWJDb250ZW50UHJvY2Vzc0FmdGVyU2VydmVyUmVk
aXJlY3RQb2xpY3lEZWNpc2lvbikKIAogVEVTVChQcm9jZXNzU3dhcCwgTm9Td2FwcGluZ0ZvcmVU
TERQbHVzMikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwot
ICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9t
YXRpY2FsbHkgPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC02
MDcsOCArNjA4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTm9Td2FwcGluZ0ZvcmVUTERQbHVzMikK
IAogVEVTVChQcm9jZXNzU3dhcCwgQmFjaykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNv
blByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAt
NzE1LDggKzcxNSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBwYWdlV2l0aEZyYWdtZW50VGVzdEJ5
dGVzID0gUiJQU09OUkVTT1VSQ0UoCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEhpc3RvcnlOYXZpZ2F0
aW9uVG9GcmFnbWVudFVSTCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAg
ICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNzY4LDggKzc2
Nyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEhpc3RvcnlOYXZpZ2F0aW9uVG9GcmFnbWVudFVSTCkK
IAogVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFnZURpZXNBZnRlckJhY2tGb3J3YXJkTGlz
dEl0ZW1Jc0dvbmUpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlF
UzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTgwMSw3ICs3OTksNyBA
QCBURVNUKFByb2Nlc3NTd2FwLCBTdXNwZW5kZWRQYWdlRGllc0FmdGVyQmFja0ZvcndhcmRMaXN0
SXRlbUlzR29uZSkKICAgICBFWFBFQ1RfTkUod2Via2l0UElELCBhcHBsZVBJRCk7CiAKICAgICAv
LyB3ZWJraXQub3JnICsgYXBwbGUuY29tIHByb2Nlc3Nlcy4KLSAgICBFWFBFQ1RfRVEoMlUsIFtw
cm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBF
Q1RfRVEoMlUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRB
bmRDYWNoZWRdKTsKIAogICAgIFt3ZWJWaWV3IGdvQmFja107IC8vIEJhY2sgdG8gd2Via2l0Lm9y
Zy4KICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwpAQCAtODEwLDcgKzgwOCw3
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFN1c3BlbmRlZFBhZ2VEaWVzQWZ0ZXJCYWNrRm9yd2FyZExp
c3RJdGVtSXNHb25lKQogICAgIEVYUEVDVF9FUSh3ZWJraXRQSUQsIFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl0pOwogCiAgICAgLy8gd2Via2l0Lm9yZyArIGFwcGxlLmNvbSBwcm9jZXNz
ZXMuCi0gICAgRVhQRUNUX0VRKDJVLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9y
aW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDJVLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nl
c3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAKICAgICByZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93
d3cud2Via2l0Lm9yZy9tYWluMi5odG1sIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOwpAQCAtODIxLDE1ICs4MTksMTQgQEAgVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVk
UGFnZURpZXNBZnRlckJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0dvbmUpCiAgICAgRVhQRUNUX0VRKHdl
YmtpdFBJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiAKICAgICAvLyBhcHBs
ZS5jb20gaXMgbm90IGxvbmdlciBwcmVzZW50IGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBhbmQg
dGhlcmUgc2hvdWxkIHRoZXJlZm9yZSBiZSBuby1zdXNwZW5kZWQgcGFnZSBmb3IgaXQuCi0gICAg
d2hpbGUgKFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdID4g
MXUpCisgICAgd2hpbGUgKFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3
YXJtZWRBbmRDYWNoZWRdID4gMXUpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5S
dW5Mb29wKCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCiBURVNUKFByb2Nlc3NTd2FwLCBTdXNw
ZW5kZWRQYWdlc0luQWN0aXZpdHlNb25pdG9yKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBw
c29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFk
b3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBA
IC05MTcsOCArOTE0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFnZXNJbkFjdGl2
aXR5TW9uaXRvcikKIAogVEVTVChQcm9jZXNzU3dhcCwgQmFja1dpdGhvdXRTdXNwZW5kZWRQYWdl
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC05NzUsOCArOTcxLDcgQEAgVEVTVChQcm9j
ZXNzU3dhcCwgQmFja1dpdGhvdXRTdXNwZW5kZWRQYWdlKQogCiBURVNUKFByb2Nlc3NTd2FwLCBC
YWNrTmF2aWdhdGlvbkFmdGVyU2Vzc2lvblJlc3RvcmUpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NT
d2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29s
ID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKQEAgLTEwMzIsOCArMTAyNyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEJhY2tOYXZpZ2F0aW9u
QWZ0ZXJTZXNzaW9uUmVzdG9yZSkKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlV2luZG93
T3Blbk5vT3BlbmVyKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZ
RVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nl
c3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xMDcyLDggKzEwNjYs
NyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVXaW5kb3dPcGVuTm9PcGVuZXIpCiAKIFRF
U1QoUHJvY2Vzc1N3YXAsIENyb3NzT3JpZ2luQnV0U2FtZVNpdGVXaW5kb3dPcGVuTm9PcGVuZXIp
CiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7
CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTExMTIsOCArMTEwNSw3IEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIENyb3NzT3JpZ2luQnV0U2FtZVNpdGVXaW5kb3dPcGVuTm9PcGVuZXIpCiAKIFRF
U1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZVdpbmRvd09wZW5XaXRoT3BlbmVyKQogewotICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhP
cGVuZXIgPSBZRVM7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCkBAIC0xMTUzLDggKzExNDUsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9z
c1NpdGVXaW5kb3dPcGVuV2l0aE9wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgU2FtZVNpdGVX
aW5kb3dPcGVuTm9PcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
biA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTExOTIsOCAr
MTE4Myw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVTaXRlV2luZG93T3Blbk5vT3BlbmVyKQog
CiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVCbGFua1RhcmdldFdpdGhPcGVuZXIpCiB7Ci0g
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTEyMzIsOCArMTIyMiw3IEBAIFRFU1QoUHJvY2Vzc1N3
YXAsIENyb3NzU2l0ZUJsYW5rVGFyZ2V0V2l0aE9wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwg
Q3Jvc3NTaXRlQmxhbmtUYXJnZXRJbXBsaWNpdE5vT3BlbmVyKQogewotICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNz
UG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CkBAIC0xMjcyLDggKzEyNjEsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVC
bGFua1RhcmdldEltcGxpY2l0Tm9PcGVuZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0
ZUJsYW5rVGFyZ2V0Tm9PcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdh
dGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTEzMTIs
OCArMTMwMCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUJsYW5rVGFyZ2V0Tm9PcGVu
ZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVTaXRlQmxhbmtUYXJnZXROb09wZW5lcikKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTM1NCw4ICsxMzQxLDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgU2FtZVNpdGVCbGFua1RhcmdldE5vT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBT
ZXJ2ZXJSZWRpcmVjdEZyb21OZXdXZWJWaWV3KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBw
c29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFk
b3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBA
IC0xMzg4LDggKzEzNzQsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTZXJ2ZXJSZWRpcmVjdEZyb21O
ZXdXZWJWaWV3KQogCiBURVNUKFByb2Nlc3NTd2FwLCBTZXJ2ZXJSZWRpcmVjdCkKIHsKLSAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1
dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwpAQCAtMTQzNSw4ICsxNDIwLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwg
U2VydmVyUmVkaXJlY3QpCiBURVNUKFByb2Nlc3NTd2FwLCBTZXJ2ZXJSZWRpcmVjdDIpCiB7CiAg
ICAgLy8gVGhpcyB0ZXN0cyBhIGxvYWQgdGhhdCAqc3RhcnRzIG91dCogdG8gdGhlIHNhbWUgb3Jp
Z2luIGFzIHRoZSBwcmV2aW91cyBsb2FkLCBidXQgdGhlbiByZWRpcmVjdHMgdG8gYSBuZXcgb3Jp
Z2luLgotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xNDkzLDggKzE0NzcsNyBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBTZXJ2ZXJSZWRpcmVjdDIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFRlcm1pbmF0
ZVByb2Nlc3NSaWdodEFmdGVyU3dhcCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZp
Z2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTUz
Myw4ICsxNTE2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGxpbmtUb1dlYktpdEJ5dGVzID0gUiJQ
U09OUkVTT1VSQ0UoCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFBvbGljeUNhbmNlbEFmdGVyU2VydmVy
UmVkaXJlY3QpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsK
KyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bv
b2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE1ODcsOCArMTU2OSw3IEBA
IFRFU1QoUHJvY2Vzc1N3YXAsIFBvbGljeUNhbmNlbEFmdGVyU2VydmVyUmVkaXJlY3QpCiAKIFRF
U1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZURvd25sb2FkKQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CkBAIC0xNjQ4LDggKzE2MjksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3lzdGVtUHJldmll
d0Nyb3NzT3JpZ2luVGVzdEJ5dGVzID0gUiJQU09OUkVTT1VSQ0UoCiAKIFRFU1QoUHJvY2Vzc1N3
YXAsIFNhbWVPcmlnaW5TeXN0ZW1QcmV2aWV3KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBw
c29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFk
b3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBA
IC0xNjg1LDggKzE2NjUsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTYW1lT3JpZ2luU3lzdGVtUHJl
dmlldykKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5TeXN0ZW1QcmV2aWV3KQogewot
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xNzI1LDcgKzE3MDQsNyBAQCBURVNUKFByb2Nlc3NT
d2FwLCBDcm9zc09yaWdpblN5c3RlbVByZXZpZXcpCiBlbnVtIGNsYXNzIFNob3VsZEVuYWJsZVBT
T04geyBObywgWWVzIH07CiBzdGF0aWMgdm9pZCBydW5DbGllbnRTaWRlUmVkaXJlY3RUZXN0KFNo
b3VsZEVuYWJsZVBTT04gc2hvdWxkRW5hYmxlUFNPTikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gc2hvdWxkRW5hYmxlUFNPTiA9PSBTaG91bGRF
bmFibGVQU09OOjpZZXMgPyBZRVMgOiBOTzsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHRO
UyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTE4NjAsOSArMTgzOSw3IEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIENyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdFdpdGhQU09OKQogCiBURVNUKFBy
b2Nlc3NTd2FwLCBDcm9zc1NpdGVDbGllbnRTaWRlUmVkaXJlY3RGcm9tRmlsZVVSTCkKIHsKLSAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7
CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xODkxLDE1ICsxODY4LDE0
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdEZyb21GaWxl
VVJMKQogICAgIGF1dG8gcGlkMiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAg
ICAgRVhQRUNUX05FKHBpZDEsIHBpZDIpOwogCi0gICAgRVhQRUNUX0VRKDFVLCBbcHJvY2Vzc1Bv
b2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDFV
LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVk
XSk7CiAgICAgRVhQRUNUX1RSVUUod2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCk7CiAgICAgRVhQ
RUNUX1RSVUUoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKIH0KIAogVEVTVChQcm9jZXNzU3dh
cCwgTmF2aWdhdGVCYWNrQWZ0ZXJDbGllbnRTaWRlUmVkaXJlY3QpCiB7Ci0gICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnBy
b2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nl
c3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZp
ZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKQEAgLTE5NzMsNyArMTk0OSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRl
QmFja0FmdGVyQ2xpZW50U2lkZVJlZGlyZWN0KQogCiBzdGF0aWMgdm9pZCBydW5OYXZpZ2F0aW9u
V2l0aExvY2tlZEhpc3RvcnlUZXN0KFNob3VsZEVuYWJsZVBTT04gc2hvdWxkRW5hYmxlUFNPTikK
IHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gc2hv
dWxkRW5hYmxlUFNPTiA9PSBTaG91bGRFbmFibGVQU09OOjpZZXMgPyBZRVMgOiBOTzsKICAgICBh
dXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTIw
NzIsOCArMjA0OCw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbihldnQpIHsKIAogVEVTVChQ
cm9jZXNzU3dhcCwgU2Vzc2lvblN0b3JhZ2UpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Q
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHRO
UyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTIx
MjksOCArMjEwNCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNlc3Npb25TdG9yYWdlKQogCiBURVNU
KFByb2Nlc3NTd2FwLCBSZXVzZVN1c3BlbmRlZFByb2Nlc3MpCiB7Ci0gICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29s
ID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKQEAgLTIxOTAsOCArMjE2NCw3IEBAIHZhciBteVdvcmtlciA9IG5ldyBXb3JrZXIoJ3dvcmtl
ci5qcycpOwogCiBURVNUKFByb2Nlc3NTd2FwLCBSZXVzZVN1c3BlbmRlZFByb2Nlc3NFdmVuSWZQ
YWdlQ2FjaGVGYWlscykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBb
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNd
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjI0Myw4ICsyMjE2LDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgUmV1c2VTdXNwZW5kZWRQcm9jZXNzRXZlbklmUGFnZUNhY2hl
RmFpbHMpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFJldXNlU3VzcGVuZGVkUHJvY2Vzc09uQmFja0V2
ZW5JZlBhZ2VDYWNoZUZhaWxzKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
OllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yMjkyLDggKzIy
NjQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogd2l0aFN1YmZyYW1lc1Rlc3RCeXRlcyA9IFIiUFNP
TlJFU09VUkNFKAogCiBURVNUKFByb2Nlc3NTd2FwLCBIaXN0b3J5SXRlbUlEQ29uZnVzaW9uKQog
ewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yMzU4LDggKzIzMjksNyBAQCBURVNUKFByb2Nlc3NT
d2FwLCBIaXN0b3J5SXRlbUlEQ29uZnVzaW9uKQogCiBURVNUKFByb2Nlc3NTd2FwLCBHb1RvU2Vj
b25kSXRlbUluQmFja0hpc3RvcnkpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTI0NDUsMTEg
KzI0MTUsOSBAQCBlbnVtIGNsYXNzIFJldGFpblBhZ2VJbkJ1bmRsZSB7IE5vLCBZZXMgfTsKIAog
dm9pZCB0ZXN0UmV1c2VTdXNwZW5kZWRQcm9jZXNzRm9yUmVndWxhck5hdmlnYXRpb24oUmV0YWlu
UGFnZUluQnVuZGxlIHJldGFpblBhZ2VJbkJ1bmRsZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
cHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGlmIChyZXRhaW5QYWdlSW5CdW5k
bGUgPT0gUmV0YWluUGFnZUluQnVuZGxlOjpZZXMpCiAgICAgICAgIFtwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gc2V0SW5qZWN0ZWRCdW5kbGVVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAIlRlc3RXZWJLaXRBUEkiIHdpdGhFeHRlbnNpb246QCJ3a2J1bmRsZSJdXTsK
LQogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
ICAgICBpZiAocmV0YWluUGFnZUluQnVuZGxlID09IFJldGFpblBhZ2VJbkJ1bmRsZTo6WWVzKQog
ICAgICAgICBbcHJvY2Vzc1Bvb2wgX3NldE9iamVjdDpAIkJ1bmRsZVJldGFpblBhZ2VQbHVnSW4i
IGZvckJ1bmRsZVBhcmFtZXRlcjpUZXN0V2ViS2l0QVBJOjpVdGlsOjpUZXN0UGx1Z0luQ2xhc3NO
YW1lUGFyYW1ldGVyXTsKQEAgLTI1MjUsOCArMjQ5Myw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBt
YWluRnJhbWVzT25seVN1YmZyYW1lMiA9IFIiUFNPTlJFU09VUkNFKAogCiBURVNUKFByb2Nlc3NT
d2FwLCBNYWluRnJhbWVzT25seSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
bjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjU3MSw4ICsy
NTM4LDcgQEAgb25sb2FkID0gKCkgPT4gewogCiBURVNUKFByb2Nlc3NTd2FwLCBQYWdlWm9vbUxl
dmVsQWZ0ZXJTd2FwKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107
CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNjQ4LDkgKzI2MTQsNyBA
QCBzdGF0aWMgY29uc3QgY2hhciogbmF2aWdhdGVCZWZvcmVQYWdlTG9hZEVuZEJ5dGVzID0gUiJQ
U09OUkVTT1VSQ0UoCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQ3Jvc3NTaXRlQmVmb3Jl
UGFnZUxvYWRFbmQpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsK
LSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByZXdhcm1zUHJvY2Vzc2VzQXV0b21h
dGljYWxseTpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjY3
OSw4ICsyNjQzLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVDcm9zc1NpdGVCZWZvcmVQ
YWdlTG9hZEVuZCkKIAogVEVTVChQcm9jZXNzU3dhcCwgRG9TYW1lU2l0ZU5hdmlnYXRpb25BZnRl
ckNyb3NzU2l0ZVByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTI3MjEsOCArMjY4NCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIERvU2FtZVNpdGVOYXZpZ2F0
aW9uQWZ0ZXJDcm9zc1NpdGVQcm92aXNpb25hbExvYWRTdGFydGVkKQogCiBURVNUKFByb2Nlc3NT
d2FwLCBTdXNwZW5kZWRQYWdlTGltaXQpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmln
YXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTI3NzEs
MTMgKzI3MzMsMTIgQEAgVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFnZUxpbWl0KQogICAg
IEVYUEVDVF9FUSg1dSwgc2VlblBJRHMuc2l6ZSgpKTsKIAogICAgIC8vIEJ1dCBub3QgYWxsIG9m
IHRob3NlIHByb2Nlc3NlcyBzaG91bGQgc3RpbGwgYmUgYWxpdmUgKDEgdmlzaWJsZSwgbWF4aW11
bVN1c3BlbmRlZFBhZ2VDb3VudCBzdXNwZW5kZWQpLgotICAgIEVYUEVDVF9FUShbcHJvY2Vzc1Bv
b2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkXSwgKDFVICsgbWF4aW11bVN1c3Bl
bmRlZFBhZ2VDb3VudCkpOworICAgIEVYUEVDVF9FUShbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3ND
b3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSwgKDFVICsgbWF4aW11bVN1c3BlbmRlZFBh
Z2VDb3VudCkpOwogfQogCiBURVNUKFByb2Nlc3NTd2FwLCBQYWdlQ2FjaGUxKQogewotICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
c2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CkBAIC0yODAyLDcgKzI3NjMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdl
Q2FjaGUxKQogCiAgICAgYXV0byBwaWRBZnRlckxvYWQxID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJ
ZGVudGlmaWVyXTsKIAotICAgIEVYUEVDVF9FUSgxdSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNz
Q291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgxdSwgW3Byb2Nlc3NQb29s
IF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogCiAgICAgcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiXV07CiAKQEAgLTI4MTIsNyArMjc3Myw3
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VDYWNoZTEpCiAKICAgICBhdXRvIHBpZEFmdGVyTG9h
ZDIgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogCi0gICAgRVhQRUNUX0VRKDJ1
LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkXSk7CisgICAg
RVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2Fy
bWVkQW5kQ2FjaGVkXSk7CiAgICAgRVhQRUNUX05FKHBpZEFmdGVyTG9hZDEsIHBpZEFmdGVyTG9h
ZDIpOwogCiAgICAgW3dlYlZpZXcgZ29CYWNrXTsKQEAgLTI4MjMsNyArMjc4NCw3IEBAIFRFU1Qo
UHJvY2Vzc1N3YXAsIFBhZ2VDYWNoZTEpCiAKICAgICBhdXRvIHBpZEFmdGVyTG9hZDMgPSBbd2Vi
VmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogCi0gICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vz
c1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VR
KDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2Fj
aGVkXSk7CiAgICAgRVhQRUNUX0VRKHBpZEFmdGVyTG9hZDEsIHBpZEFmdGVyTG9hZDMpOwogICAg
IEVYUEVDVF9FUSgxdSwgW3JlY2VpdmVkTWVzc2FnZXMgY291bnRdKTsKICAgICBFWFBFQ1RfVFJV
RShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJXYXMgcGVyc2lz
dGVkIiBdKTsKQEAgLTI4MzcsNyArMjc5OCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VDYWNo
ZTEpCiAKICAgICBhdXRvIHBpZEFmdGVyTG9hZDQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50
aWZpZXJdOwogCi0gICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3Vu
dElnbm9yaW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dl
YlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAgICAgRVhQRUNUX0VR
KHBpZEFmdGVyTG9hZDIsIHBpZEFmdGVyTG9hZDQpOwogICAgIEVYUEVDVF9FUSgydSwgW3JlY2Vp
dmVkTWVzc2FnZXMgY291bnRdKTsKICAgICBFWFBFQ1RfVFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5n
ZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJXYXMgcGVyc2lzdGVkIiBdKTsKQEAgLTI4NDYsOSAr
MjgwNyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VDYWNoZTEpCiAKIFRFU1QoUHJvY2Vzc1N3
YXAsIE51bWJlck9mUHJld2FybWVkUHJvY2Vzc2VzKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBz
T25OYXZpZ2F0aW9uOllFU107Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcmV3
YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHk6WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHBy
b2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKQEAgLTI4NjYsNyArMjgyNSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE51bWJl
ck9mUHJld2FybWVkUHJvY2Vzc2VzKQogICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIEVYUEVDVF9F
USgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRdKTsKLSAgICBFWFBFQ1RfRVEoMXUs
IFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBF
WFBFQ1RfRVEoMXUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJt
ZWRBbmRDYWNoZWRdKTsKICAgICBFWFBFQ1RfVFJVRShbcHJvY2Vzc1Bvb2wgX2hhc1ByZXdhcm1l
ZFdlYlByb2Nlc3NdKTsKIAogICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy5nb29nbGUuY29tL21haW4uaHRt
bCJdXTsKQEAgLTI4NzUsNyArMjgzNCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE51bWJlck9mUHJl
d2FybWVkUHJvY2Vzc2VzKQogICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIEVYUEVDVF9FUSgzdSwg
W3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRdKTsKLSAgICBFWFBFQ1RfRVEoMnUsIFtwcm9j
ZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBFQ1Rf
RVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRD
YWNoZWRdKTsKICAgICBFWFBFQ1RfVFJVRShbcHJvY2Vzc1Bvb2wgX2hhc1ByZXdhcm1lZFdlYlBy
b2Nlc3NdKTsKIH0KIApAQCAtMjg5Nyw4ICsyODU2LDcgQEAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ3BhZ2VoaWRlJywgZnVuY3Rpb24oZXZlbnQpIHsKIAogVEVTVChQcm9jZXNzU3dhcCwgUGFn
ZVNob3dIaWRlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107Cisg
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29s
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yOTg5LDggKzI5NDcsNyBAQCB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKGV2ZW50KSB7CiAKIFRFU1Qo
UHJvY2Vzc1N3YXAsIExvYWRVbmxvYWQpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmln
YXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTMwNjYs
OCArMzAyMyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIExvYWRVbmxvYWQpCiAKIFRFU1QoUHJvY2Vz
c1N3YXAsIFdlYkluc3BlY3RvcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzEyOSw4
ICszMDg1LDcgQEAgbGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKIAogVEVT
VChQcm9jZXNzU3dhcCwgU2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uKQogewotICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5w
cm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9j
ZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJW
aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CkBAIC0zMTY0LDggKzMxMTksNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTYW1lT3Jp
Z2luQmxvYk5hdmlnYXRpb24pCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzT3JpZ2luQmxvYk5h
dmlnYXRpb24pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsK
KyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bv
b2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTMyMjMsOCArMzE3Nyw3IEBA
IFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzT3JpZ2luQmxvYk5hdmlnYXRpb24pCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIE5hdmlnYXRlVG9BYm91dEJsYW5rKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9
IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CkBAIC0zMjU3LDggKzMyMTAsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvQWJvdXRC
bGFuaykKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVUb0RhdGFVUkwpCiB7Ci0gICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKQEAgLTMyOTEsOSArMzI0Myw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5h
dmlnYXRlVG9EYXRhVVJMKQogCiBURVNUKFByb2Nlc3NTd2FwLCBQcm9jZXNzUmV1c2UpCiB7Ci0g
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKLSAgICBbcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIHNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXM6WUVTXTsK
KyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bv
b2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTMzMzgsOSArMzI4OCw3IEBA
IFRFU1QoUHJvY2Vzc1N3YXAsIFByb2Nlc3NSZXVzZSkKIAogVEVTVChQcm9jZXNzU3dhcCwgUHJv
Y2Vzc1JldXNlZVRMRFBsdXMyKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
OllFU107Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRBbHdheXNLZWVwQW5kUmV1
c2VTd2FwcGVkUHJvY2Vzc2VzOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CkBAIC0zMzg1LDggKzMzMzMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQcm9jZXNzUmV1c2Vl
VExEUGx1czIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENvbmN1cnJlbnRIaXN0b3J5TmF2aWdhdGlv
bnMpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTM0NTUsOCArMzQwMiw3IEBAIFRFU1Qo
UHJvY2Vzc1N3YXAsIENvbmN1cnJlbnRIaXN0b3J5TmF2aWdhdGlvbnMpCiAKIFRFU1QoUHJvY2Vz
c1N3YXAsIE5hdmlnYXRlVG9JbnZhbGlkVVJMKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBw
c29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFk
b3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBA
IC0zNTA3LDggKzM0NTMsNyBAQCBvbnBhZ2VzaG93ID0gZnVuY3Rpb24oZXZlbnQpIHsKIAogVEVT
VChQcm9jZXNzU3dhcCwgTmF2aWdhdGVUb0RhdGFVUkxUaGVuQmFjaykKIHsKLSAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCku
cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKS5wYWdlQ2FjaGVFbmFibGVkID0gTk87CiAgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCkBAIC0zNTQzLDgg
KzM0ODgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvRGF0YVVSTFRoZW5CYWNrKQog
CiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUNyb3NzU2l0ZVdpdGhQYWdlQ2FjaGVEaXNhYmxl
ZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpOwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wYWdlQ2FjaGVFbmFibGVk
ID0gTk87CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KV0pOwogCkBAIC0zNjM0LDggKzM1NzgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogbmF2aWdhdGVC
YWNrRnJvbUpTQnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2
aWdhdGVUb0Nyb3NzU2l0ZVRoZW5CYWNrRnJvbUpTKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpLnBhZ2VDYWNoZUVuYWJsZWQgPSBOTzsKICAgICBhdXRvIHByb2Nlc3NQb29s
ID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTM2NzUsOCArMzYxOCw3IEBA
IFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlVG9Dcm9zc1NpdGVUaGVuQmFja0Zyb21KUykKIAog
VEVTVChQcm9jZXNzU3dhcCwgQ2xvc2VQYWdlQWZ0ZXJDcm9zc1NpdGVQcm92aXNpb25hbExvYWQp
CiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7
CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTM3MzQsOCArMzY3Niw3IEBAIEBlbmQKIAog
VEVTVChQcm9jZXNzU3dhcCwgTG9hZGluZ1N0YXRlQWZ0ZXJQb2xpY3lEZWNpc2lvbikKIHsKLSAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAg
IGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzk0MCw5ICszODgxLDcgQEAgVEVTVChQcm9jZXNzU3dh
cCwgT3BlbmVyTGlua0FmdGVyQVBJQ29udHJvbGxlZFByb2Nlc3NTd2FwcGluZ09mT3BlbmVlKQog
ZW51bSBjbGFzcyBFeHBlY3RTd2FwIHsgTm8sIFllcyB9Owogc3RhdGljIHZvaWQgcnVuUHJvY2Vz
c1N3YXBEdWVUb1JlbGF0ZWRXZWJWaWV3VGVzdChOU1VSTCogcmVsYXRlZFZpZXdVUkwsIE5TVVJM
KiB0YXJnZXRVUkwsIEV4cGVjdFN3YXAgZXhwZWN0U3dhcCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3MUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzk5OCw5ICszOTM3LDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgTm9Qcm9jZXNzU3dhcER1ZVRvUmVsYXRlZFZpZXcpCiAKIFRFU1QoUHJvY2Vzc1N3YXAs
IFRlcm1pbmF0ZWRTdXNwZW5kZWRQYWdlUHJvY2VzcykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3
YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAg
YXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
YXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00MDYzLDggKzQwMDAsNyBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBUZXJtaW5hdGVkU3VzcGVuZGVkUGFnZVByb2Nlc3MpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5h
dmlnYXRlQmFja0FuZEZvcnRoKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00MTE1LDgg
KzQwNTEsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUJhY2tBbmRGb3J0aCkKIAogVEVT
VChQcm9jZXNzU3dhcCwgU3dhcE9uTG9hZEhUTUxTdHJpbmcpCiB7Ci0gICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTQxNTksOSArNDA5NCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFN3YXBPbkxvYWRI
VE1MU3RyaW5nKQogCiBURVNUKFByb2Nlc3NTd2FwLCBVc2VQcmV3YXJtZWRQcm9jZXNzQWZ0ZXJU
ZXJtaW5hdGluZ05ldHdvcmtQcm9jZXNzKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdh
cm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHBy
b2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00MTk1LDggKzQxMjgsNyBAQCBURVNU
KFByb2Nlc3NTd2FwLCBVc2VQcmV3YXJtZWRQcm9jZXNzQWZ0ZXJUZXJtaW5hdGluZ05ldHdvcmtQ
cm9jZXNzKQogCiBURVNUKFByb2Nlc3NTd2FwLCBVc2VTZXNzaW9uQ29va2llc0FmdGVyUHJvY2Vz
c1N3YXBJblByaXZhdGVCcm93c2luZykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZp
Z2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBSZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVN0b3Jl
PiBlcGhlbWVyYWxTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFT
dG9yZV07CiAKQEAgLTQyNTUsOCArNDE4Nyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFVzZVNlc3Np
b25Db29raWVzQWZ0ZXJQcm9jZXNzU3dhcEluUHJpdmF0ZUJyb3dzaW5nKQogCiBURVNUKFByb2Nl
c3NTd2FwLCBUZXJtaW5hdGVQcm9jZXNzQWZ0ZXJQcm9jZXNzU3dhcCkKIHsKLSAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vz
c1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmll
d0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwpAQCAtNDMwOSw4ICs0MjQwLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVGVybWluYXRl
UHJvY2Vzc0FmdGVyUHJvY2Vzc1N3YXApCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQ3Jv
c3NPcmlnaW5XaXRoT3BlbmVlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
OllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00Mzg3LDggKzQz
MTcsNyBAQCBmdW5jdGlvbiBzYXZlT3BlbmVlKCkKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdh
dGVDcm9zc09yaWdpbldpdGhPcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmln
YXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQ1MTYs
OCArNDQ0NSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQ3Jvc3NPcmlnaW5XaXRoT3Bl
bmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBHb0JhY2tUb1N1c3BlbmRlZFBhZ2VXaXRoTWFpbkZy
YW1lSURUaGF0SXNOb3RPbmUpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246
WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJv
Y2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQ2MDcsOCArNDUz
NSw3IEBAIGJvZHkgewogCiBURVNUKFByb2Nlc3NTd2FwLCBTY3JvbGxQb3NpdGlvblJlc3RvcmF0
aW9uKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00Njg3LDggKzQ2MTQsNyBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBDb250ZW50QmxvY2tpbmdBZnRlclByb2Nlc3NTd2FwKQogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQ
cm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nl
c3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZp
ZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKQEAgLTQ4MTAsMTAgKzQ3MzYsNyBAQCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKIAogVEVTVChQcm9jZXNzU3dhcCwgR2V0VXNlck1l
ZGlhQ2FwdHVyZVN0YXRlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAg
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24g
PSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vz
c2VzQXV0b21hdGljYWxseSA9IFlFUzsKLQorICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362022</attachid>
            <date>2019-02-14 09:04:20 -0800</date>
            <delta_ts>2019-02-14 09:24:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194594-20190214090418.patch</filename>
            <type>text/plain</type>
            <size>111304</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk5ZjQ4MWQxMjA4M2Zm
ZGI5MjAyNDEwYzMzOWIyNmQ4ZDFkYmM2NC4uMDM5NzAwZGVjYzBiOWY2ODdhZjQxODI4YjgzMDhk
YTAyMDYxNWM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAyLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIEludHJvZHVjZSBh
IFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc5MzM5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBVcGRhdGUg
bG9jYWxpemFibGUgc3RyaW5ncy4KKworICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0
cmluZ3M6CisKIDIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgbG9jYWxpemFibGUgc3RyaW5ncy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggYzczZmQ3ZWYzYWRiYTI4MmRhZmM2OGRkMzhmMDJlMTdiZjg0MWIyNS4uMTlmMGM3M2UxMGYy
M2YwNGQxOTg1OTg5YzJjYmFkMDI4NDQxMjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYgQEAK
KzIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBb
UFNPTl0gSW50cm9kdWNlIGEgV2ViQ29udGVudCBQcm9jZXNzIGNhY2hlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ1OTQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ2NzkzMzk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgor
CisgICAgICAgIEludHJvZHVjZSBhIFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZSB0byByZWR1Y2Ug
dGhlIG51bWJlciBvZiBwcm9jZXNzIGxhdW5jaGVzIHdoZW4KKyAgICAgICAgcHJvY2VzcyBzd2Fw
IG9uIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwgYW5kIHRvIHJlZHVjZSB0aGUgcG93ZXIgY29zdCBv
ZiB0aGUgZmVhdHVyZS4KKworICAgICAgICBJZiBhIFdlYlByb2Nlc3MgbG9hZGVkIHBhZ2VzIGZy
b20gYSBzaW5nbGUgcmVnaXN0cmFibGUgZG9tYWluIHRoZW4gaXQgaXMgZWxpZ2libGUKKyAgICAg
ICAgZm9yIHRoZSBjYWNoZS4gV2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIG5hdmlnYXRpb24gdG8g
YSBuZXcgcmVnaXN0cmFibGUgZG9tYWluLCB3ZQorICAgICAgICBub3cgYXR0ZW1wdCB0byByZXRy
aWV2ZSBhIHByb2Nlc3MgZnJvbSB0aGUgY2FjaGUgZm9yIHRoZSBkb21haW4gaW4gcXVlc3Rpb24g
aW5zdGVhZAorICAgICAgICBvZiBhbHdheXMgbGF1bmNoaW5nIGEgbmV3IG9uZS4KKworICAgICAg
ICBUaGUgV2ViUHJvY2VzcyBjYWNoZSBjdXJyZW50bHkgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmli
dXRlczoKKyAgICAgICAgLSBJdCBtYXkgY29udGFpbnMgNCBwcm9jZXNzZXMgcGVyIEdCIG9mIFJB
TSB0aGUgbWFjaGluZSBoYXMsIHVwIHRvIDMwIHByb2Nlc3Nlcy4KKyAgICAgICAgLSBXZWJQcm9j
ZXNzZXMgYXV0b21hdGljYWxseSBnZXQgZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBhZnRlciAzMCBt
aW51dGVzLgorICAgICAgICAtIElmIHRoZSBhcHBsaWNhdGlvbiBpcyBubyBsb25nZXIgdGhlIGFj
dGl2ZSBhcHAsIHRoZW4gdGhlIGNhY2hlIHdpbGwgZ2V0IGNsZWFyZWQKKyAgICAgICAgICBhZnRl
ciA1IG1pbnV0ZXMuCisgICAgICAgIC0gV2ViUHJvY2Vzc2VzIHRoYXQgYXJlIGluIHRoZSBjYWNo
ZSBhcmUgcmVwb3J0ZWQgYXMgIihDYWNoZWQpIiBpbiBBY3Rpdml0eSBNb25pdG9yLgorCisgICAg
ICAgIFRoZSBXZWJQcm9jZXNzIGNhY2hlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0
IGFuZCBjYW4gYnkgZW5hYmxlZCBieSB0aGUKKyAgICAgICAgY2xpZW50IHZpYSBTUEkuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAg
ICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Omxhc3RQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldExhc3RQcm9jZXNzSWRl
bnRpZmllcik6CisgICAgICAgIEFkZCBuZXcgbGFzdFByb2Nlc3NJZGVudGlmaWVyIGRhdGEgbWVt
YmVyIHRoYXQgcmVmbGVjdHMgd2hpY2ggcHJvY2VzcyB0aGlzIGl0ZW0KKyAgICAgICAgd2FzIGxh
c3QgbG9hZGVkIGluLiBJdCBpcyBub3JtYWxseSBpZGVudGljYWwgdG8gdGhlIGlkZW50aWZpZXIg
b2YgdGhlIHByb2Nlc3MKKyAgICAgICAgdGhhdCBjcmVhdGVkIHRoZSBpdGVtIGJ1dCBpdCBnZXRz
IG92ZXJyaWRlbiBpbiBjYXNlIG9mIGNyb3NzLXNpdGUgY2xpZW50LXNpZGUKKyAgICAgICAgcmVk
aXJlY3QsIHNpbmNlIGEgbmV3IHByb2Nlc3MgdGFrZXMgb3ZlciB0aGUgaXRlbSBpbiB0aGlzIGNh
c2UuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmls
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcDoKKyAg
ICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKToKKyAgICAg
ICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VzV2ViUHJvY2Vzc0NhY2hlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRVc2VzV2ViUHJv
Y2Vzc0NhY2hlOl0pOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gdXNl
c1dlYlByb2Nlc3NDYWNoZV0pOgorICAgICAgICBBZGQgbmV3IFNQSSB0byBlbmFibGUgdGhlIFdl
YlByb2Nlc3MgY2FjaGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9y
aW5nUHJld2FybWVkQW5kQ2FjaGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICBBZGQgbmV3IFNQSSBmb3IgdGVzdGluZyB3
aGljaCByZXR1cm5zIHRoZSBudW1iZXIgb2YgV2ViUHJvY2Vzc2VzIGlnbm9yaW5nCisgICAgICAg
IGJvdGggcHJld2FybWVkIGFuZCBjYWNoZWQgb25lcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6CisgICAgICAg
IEFkZCBhcHBsaWNhdGlvbiBhY3RpdmUgc3RhdGUgb2JzZXJ2ZXJzIGFzIHRoZSBXZWJQcm9jZXNz
IGNhY2hlIGdldHMgY2xlYXJlZAorICAgICAgICB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXNpZ25z
IGFjdGl2ZSBzdGF0ZSBmb3IgbW9yZSB0aGFuIDUgbWludXRlcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIFdoZW4gZG9pbmcgYSBsb2FkIGlu
IGEgbmV3IHByb2Nlc3Mgd2l0aCB0aGUgQmFja0ZvcndhcmRMaXN0IGxvY2tlZCAoaS5lLiBjbGll
bnQtc2lkZQorICAgICAgICByZWRpcmVjdCksIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIGxhc3Qg
cHJvY2VzcyBpZGVudGlmaWVyIGZvciB0aGUgQmFja0ZvcndhcmRMaXN0SXRlbS4KKyAgICAgICAg
VGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgbG9naWMgaW4gV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NGb3JOYXZpZ2F0aW9uKCkgcmVsaWVzIG9uCisgICAgICAgIHRoaXMgaWRlbnRpZmllciB0
byBzZWxlY3Qgd2hpY2ggcHJvY2VzcyB0byBkbyB0aGUgaGlzdG9yeSBuYXZpZ2F0aW9uIGludG8s
IGFuZCB3ZSB3YW50CisgICAgICAgIHRvIGRvIHRoZSBsb2FkIGluIHRoZSBwb3N0LXJlZGlyZWN0
IHByb2Nlc3MsIG5vdCB0aGUgcHJlLXJlZGlyZWN0IG9uZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICBUZWxsIHRoZSBXZWJQ
cm9jZXNzIHdoZW5ldmVyIGEgbWFpbiBmcmFtZSBwcm92aXNpb25hbCBsb2FkIGlzIHN0YXJ0ZWQs
IHByb3ZpZGluZyB0aGUgVVJMLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNo
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OldlYlByb2Nl
c3NDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZU1heGltdW1TaXplKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OmV2aWN0aW9u
VGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjptYXhpbXVtU2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6cHJvY2Vzcyk6CisgICAgICAgIEFk
ZCBwcm9jZXNzIGNhY2hlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgor
ICAgICAgICBXZWJQcm9jZXNzQ2FjaGUgaXMgc3RvcmVkIG9uIHRoZSBXZWJQcm9jZXNzUG9vbCB2
aWEgbV93ZWJQcm9jZXNzQ2FjaGUgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIENsZWFyIHRoZSBXZWJQcm9j
ZXNzIGNhY2hlIGluIHRoZSBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpzZXRBcHBsaWNhdGlvbklzQWN0aXZlKToKKyAgICAgICAgTm90aWZ5IHRoZSBXZWJQ
cm9jZXNzQ2FjaGUgd2hlbmV2ZXIgdGhlIGFwcGxpY2F0aW9uJ3MgYWN0aXZlIHN0YXRlIGNoYW5n
ZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgor
ICAgICAgICBJZiB0aGUgc3RhdGUgb2YgUFNPTiBjaGFuZ2VzIHZpYSB0aGUgZXhwZXJpbWVudGFs
IGZlYXR1cmVzIG1lbnUsIGR5bmFtaWNhbGx5CisgICAgICAgIHVwZGF0ZSB0aGUgV2ViUHJvY2Vz
c0NhY2hlJ3Mgc2l6ZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgY2FjaGUgaXMgZGlzYWJs
ZWQKKyAgICAgICAgd2hlbiBQU09OIGlzIGRpc2FibGVkLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmcpOgorICAgICAgICBDbGVh
ciB0aGUgV2ViUHJvY2VzcyBjYWNoZSBvbiBtZW1vcnkgcHJlc3N1cmUuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgorICAg
ICAgICBRdWVyeSB0aGUgV2ViUHJvY2Vzc0NhY2hlIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGNyZWF0
ZSBhIG5ldyBXZWJQcm9jZXNzIGZvciBhIGNyb3NzLXNpdGUKKyAgICAgICAgbmF2aWdhdGlvbi4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZmluZFJldXNhYmxlU3VzcGVuZGVk
UGFnZVByb2Nlc3MpOgorICAgICAgICBUaGlzIGxvZ2ljIHdhcyBzcGxpdCBvdXQgb2YgcHJvY2Vz
c0Zvck5hdmlnYXRpb25JbnRlcm5hbCgpIHRvIHJlZHVjZSB0aGUgc2l6ZQorICAgICAgICBvZiB0
aGUgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZSk6CisgICAgICAgIFVwZGF0ZSB0aGUg
aXNJblByb2Nlc3NDYWNoZSBmbGFnIG9uIHRoZSBXZWJQcm9jZXNzUHJveHkgYW5kIHNlbmQgYW4g
SVBDIHRvIHRoZSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3Mgc28gdGhhdCBpdCBjYW4gdXBk
YXRlIGl0cyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3IuCisgICAgICAgIFdlIGFsc28gbmVlZCB0
byBzdG9wIGhvbGRpbmcgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBXZWJQcm9jZXNzUG9vbCB3
aGVuZXZlciB0aGUgcHJvY2VzcworICAgICAgICBpcyBpbiB0aGUgY2FjaGUsIHNpbWlsYXJseSB0
byB3aGF0IHdlIGRvIGZvciBwcmUtd2FybWVkIHByb2Nlc3NlcywgZ2l2ZW4gdGhhdCBzdWNoIHBy
b2Nlc3NlcworICAgICAgICBzaG91bGQgbm90IGtlZXAgdGhlIHByb2Nlc3MgcG9vbCBhbGl2ZS4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZSk6
CisgICAgICAgIEFzc2VydCB0aGF0IHdlIG5ldmVyIHRyeSB0byBhZGQgYSBwYWdlIHRvIGEgY2Fj
aGVkIHByb2Nlc3MsIGl0IHNob3VsZCBiZSB0YWtlbiBvdXQgb2YgdGhlCisgICAgICAgIGNhY2hl
IGJlZm9yZSB1c2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92
aXNpb25hbFBhZ2VXaXRoSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICBJ
biBjYXNlIG9mIGNsaWVudC1zaWRlIHJlZGlyZWN0cywgdGhlIHByZXZpb3VzIHByb2Nlc3Mgd291
bGQgc29tZXRpbWVzIHNlbmQgYW4gSVBDIGNhdXNpbmcKKyAgICAgICAgdGhlIFVJUHJvY2Vzcycg
YmFja2ZvcndhcmQgbGlzdCBpdGVtIHRvIGdldCB1cGRhdGVkIHdpdGggdGhlIHByZS1yZWRpcmVj
dCBVUkwgYWZ0ZXIgd2UndmUKKyAgICAgICAgYWxyZWFkeSByZWRpcmVjdGVkLiBUaGlzIHByZXZp
b3VzbHkgd291bGQgYmUgdW5saWtlbHkgdG8gb2NjdXIgYmVjYXVzZSB3ZSBkbyBub3Qgc3VzcGVu
ZAorICAgICAgICBjbGllbnQtcmVkaXJlY3QgcGFnZXMgYW5kIHRoZWlyIHByb2Nlc3Mgd291bGQg
bm9ybWFsbHkgZXhpdCBiZWZvcmUgZ2V0dGluZyBhIGNoYW5jZSB0byBzZW5kCisgICAgICAgIHRo
ZSBJUEMuIEhvd2V2ZXIsIHdpdGggdGhlIHByb2Nlc3MgY2FjaGUsIHRoZSBidWcgYmVjYW1lIG9i
dmlvdXMgYXMgdGhlIHByb2Nlc3Mgd291bGQgc3RheQorICAgICAgICBhbGl2ZSBhbmQgc2VuZCB1
cCB0aGUgImJhZCIgSVBDLiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ugbm93IG9ubHkgbGV0IHRo
ZSBJUEMgdXBkYXRlIHRoZQorICAgICAgICBpdGVtIGlmIHRoZSBpdGVtJ3MgcGFnZSBpcyAoc3Rp
bGwpIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvY2Vzcy4gSW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdh
bnQKKyAgICAgICAgdG8gdXBkYXRlIHRoZSBJUEMgc28gdGhhdCBpdCBnZXRzIHNlbnQgdG8gdGhl
IFdlYlBhZ2VQcm94eSBpbnN0ZWFkIG9mIHRoZSBXZWJQcm9jZXNzUHJveHkuCisKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xh
dW5jaCk6CisgICAgICAgIElmIGEgY2FjaGVkIFdlYlByb2Nlc3MgY3Jhc2hlcywgcmVtb3ZlIGl0
IGZyb20gdGhlIGNhY2hlIHNvIHRoYXQgd2UgZG8gbm90IGF0dGVtcHQgdG8gdXNlCisgICAgICAg
IGl0IGZvciBhIGxvYWQgbGF0ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUgY29uc3QpOgorICAgICAgICBPbmx5IGNhY2hl
IFdlYlByb2Nlc3NlcyB0aGF0IGhhdmUgbG9hZGVkIGEgc2luZ2xlIHJlZ2lzdHJhYmxlIGRvbWFp
bi4gQWxzbyBwcmV2ZW50IGNhY2hpbmcKKyAgICAgICAgZm9yIHNlcnZpY2Ugd29ya2VyIGFuZCBp
bnNwZWN0b3IgcHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
bWF5YmVTaHV0RG93bik6CisgICAgICAgIElmIHRoZSBwcm9jZXNzIGlzIGNhY2hlYWJsZSwgYWRk
IGl0IHRvIHRoZSBjYWNoZSBpbnN0ZWFkIG9mIHNodXR0aW5nIGl0IGRvd24gcmlnaHQgYXdheS4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUF1eGlsaWFy
eVByb2Nlc3MpOgorICAgICAgICBNYWtlIHN1cmUgd2UgZG8gbm90IGF0dGVtcHQgdG8gdGVybWlu
YXRlIGEgcHJvY2Vzc2VzIHRoYXQgaXMgaW4gdGhlIGNhY2hlLgorCisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUpOgor
ICAgICAgICBXaGVuZXZlciBhIG1haW4gZnJhbWUgcHJvdmlzaW9uYWwgbG9hZCBzdGFydHMsIG1h
a2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHByb2Nlc3MncyBhc3NvY2lhdGVkCisgICAgICAgIHJlZ2lz
dHJhYmxlIGRvbWFpbi4gbnVsbG9wdCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBhc3NvY2lh
dGVkIGRvbWFpbiB5ZXQuIE51bGwgc3RyaW5nCisgICAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBw
cm9jZXNzIGlzIGFzc29jaWF0ZWQgd2l0aCBzZXZlcmFsIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQg
aXMgdGhlcmVmb3JlCisgICAgICAgIG5vdCBlbGlnaWJsZSBmb3IgY2FjaGluZy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpyZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6aXNJblByb2Nlc3NDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6cHJvdmlzaW9uYWxQYWdlQ291bnQgY29uc3QpOgorICAgICAgICBB
ZGQgY29udmVuaWVuY2UgZ2V0dGVycy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzIHRvIHByb2plY3QuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzZXRJc0luUHJvY2Vzc0NhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKToKKyAgICAgICAgVXBkYXRlIHRoZSBX
ZWJQcm9jZXNzJyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3Igd2hlbmV2ZXIgaXQgZ29lcyBpbnRv
IG9yIG91dCBvZiB0aGUgV2ViUHJvY2VzcworICAgICAgICBjYWNoZS4KKwogMjAxOS0wMi0xMyAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmNyeXB0
ZWQgUERGcyBpbnNpZGUgPGVtYmVkPiBvciA8b2JqZWN0PiBjcmFzaCB0aGUgV2ViIENvbnRlbnQg
cHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5k
ZXggZmJlMjk5ZWUyYTI0YTIzYjc1M2IxMjYwN2NlZDI1NmQwZWQxYzBlYS4uZjE0NDE5MTgzNWMz
OTBjMjFkZTViZGYxYzk2NWI2YjFhOTVhYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJv
ai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00Niw2ICs0Niw5IEBACiAvKiBWaXNpYmxlIG5hbWUg
b2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUu
ICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogVmlzaWJsZSBu
YW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBu
YW1lLiAqLworIiVAIFdlYiBDb250ZW50IChDYWNoZWQpIiA9ICIlQCBXZWIgQ29udGVudCAoQ2Fj
aGVkKSI7CisKIC8qIFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVu
dCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCAoUHJld2FybWVk
KSIgPSAiJUAgV2ViIENvbnRlbnQgKFByZXdhcm1lZCkiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDAzYjQzZjFjOTdiMWViODdk
ZGMwZjQ0MTUzZWM4MjhmNWNlNDQ0OTguLjlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQy
ZGZmMzk2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCkBAIC00Myw2ICs0Myw3IEBAIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0CiBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQog
ICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpKQogICAg
ICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9pdGVt
U3RhdGUuaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJlc3VsdCA9
IGFsbEl0ZW1zKCkuYWRkKG1faXRlbVN0YXRlLmlkZW50aWZpZXIsIHRoaXMpOwogICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggYmZmMGM4ODIwNDFmNmE5YWE4MzMy
MTY2ZmQ3YjM3N2VjM2YxYjU4My4uODcyZWYxODA5NWQxOGNjM2E5YzVlNzQ2M2QzMGU3ZjYxNDg3
MmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aApAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlJiBpdGVtU3RhdGUoKSB7IHJldHVybiBtX2l0ZW1TdGF0ZTsgfQogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKKyAgICBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xh
c3RQcm9jZXNzSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVy
KGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFBy
b2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCiAgICAgdm9pZCBzZXRQYWdlU3RhdGUo
UGFnZVN0YXRlIHBhZ2VTdGF0ZSkgeyBtX2l0ZW1TdGF0ZS5wYWdlU3RhdGUgPSBXVEZNb3ZlKHBh
Z2VTdGF0ZSk7IH0KICAgICBjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbVN0YXRlLnBhZ2VTdGF0ZTsgfQogCkBAIC04NCw2ICs4Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAgICAgdWludDY0
X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0UHJvY2Vz
c0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVk
UGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY2NzNmM2RmODE3NWI0N2U0ZDVkNzA0NTk2MTA5
ZGFiNWMyMzY4NWYuLjU5Y2VmODNhNTIzOWVlYTBjYTE5N2Y2OGNiMzcyMDY3Yjk3OWUwMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtMjc3LDYgKzI3Nyw3IEBAIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAogVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKK1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAKIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggZDE3OTc4
ZTVlNjQxMTAxMDhmOGYxMjBmNmRmMGRkY2MxMmI3ODQ4My4uMjNjZjAzNTE5ODk1YjlkMzhjNDJi
YjA5OTQ0YjQ1NzI1YTY2NTlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEyNCw2ICsx
MjQsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nl
c3NlcyA9IHRoaXMtPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczsKICAgICBj
b3B5LT5tX3Byb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXIgPSB0aGlzLT5tX3Byb2Nl
c3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXI7CiAgICAgY29weS0+bV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50ID0gdGhpcy0+bV9pc0F1dG9tYXRpY1Byb2Nlc3NX
YXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGNvcHktPm1fdXNlc1dlYlByb2Nlc3NDYWNoZSA9
IHRoaXMtPm1fdXNlc1dlYlByb2Nlc3NDYWNoZTsKICNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdP
UktJTkcpCiAgICAgY29weS0+bV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+bV93
aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXgg
ZTNhNmE3NzI1NjliNjgzMDhhNTczMDAwNmJjMTk4MzdlOWJkNDYwOC4uYTAxNjYxMmM2OWM3Mzdl
MjgwZDI4ODBiY2IxMTJmNjliZTg3YWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNjcsNiAr
NjcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ1NldEJ5
Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gISFtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFi
bGVkQnlDbGllbnQ7IH0KICAgICB2b2lkIHNldElzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFi
bGVkKGJvb2wgdmFsdWUpIHsgbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xp
ZW50ID0gdmFsdWU7IH0KIAorICAgIHZvaWQgc2V0VXNlc1dlYlByb2Nlc3NDYWNoZShib29sIHZh
bHVlKSB7IG1fdXNlc1dlYlByb2Nlc3NDYWNoZSA9IHZhbHVlOyB9CisgICAgYm9vbCB1c2VzV2Vi
UHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91c2VzV2ViUHJvY2Vzc0NhY2hlOyB9CisK
ICAgICBib29sIGNsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nl
c3NQcmV3YXJtaW5nOyB9CiAgICAgdm9pZCBzZXRDbGllbnRXb3VsZEJlbmVmaXRGcm9tQXV0b21h
dGljUHJvY2Vzc1ByZXdhcm1pbmcoYm9vbCB2YWx1ZSkgeyBtX2NsaWVudFdvdWxkQmVuZWZpdEZy
b21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyA9IHZhbHVlOyB9CiAKQEAgLTIyMyw2ICsyMjYs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vz
c2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9w
ZW5lciB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc0F1dG9tYXRpY1Byb2Nlc3NX
YXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGJvb2wgbV91c2VzV2ViUHJvY2Vzc0NhY2hlIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nl
c3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKICAgICBXVEY6OlN0cmluZyBtX2N1c3RvbVdlYkNvbnRl
bnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsKICAgICBib29sIG1faXNKSVRFbmFibGVkIHsgdHJ1
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAppbmRleCAzMzhjMGRkZDc2OTZjMzJkNWQ1YzBhZTFk
YTg2NWJmMzI1YzFiMzdlLi4xNzY1MzE0MmRmNjdmNGYzYmVlMjkxMjU0NjVlNDE4ZGU2Njg3Mjc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmLmNwcApAQCAtMTg4LDYgKzE4OCwxNiBAQCB2b2lkIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25TZXRQcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkoV0tDb250
ZXh0Q29uZmlndXJhdAogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0SXNBdXRvbWF0aWNQ
cm9jZXNzV2FybWluZ0VuYWJsZWQocHJld2FybXMpOwogfQogCitib29sIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT51c2VzV2Vi
UHJvY2Vzc0NhY2hlKCk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNldFVzZXNX
ZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBi
b29sIHVzZXMpCit7CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRVc2VzV2ViUHJvY2Vz
c0NhY2hlKHVzZXMpOworfQorCiBib29sIFdLQ29udGV4dENvbmZpZ3VyYXRpb25BbHdheXNLZWVw
QW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbikKIHsKICAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5hbHdheXNLZWVw
QW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmgKaW5kZXggYWQzZTdh
MTcyZjgwMzU0ZWNhOTgyNDAzYTQ5ZmE4ODUxNDJmZTU3NS4uOTM5ODVhZDgzN2ZjYTk2YzNjOGIz
ZmQ5ZDY1ODI4OWM4NjdiMjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaApAQCAtNzgsNiArNzgsOSBA
QCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0UHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uKFdLQ29udGV4dENvbmZpZwogV0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0Q29uZmln
dXJhdGlvblByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29uZmlndXJh
dGlvblNldFByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgcHJld2FybXMpOwogCitXS19FWFBPUlQgYm9vbCBX
S0NvbnRleHRDb25maWd1cmF0aW9uVXNlc1dlYlByb2Nlc3NDYWNoZShXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29uZmln
dXJhdGlvblNldFVzZXNXZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBib29sIHVzZXMpOworCiBXS19FWFBPUlQgYm9vbCBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlcyhXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29u
ZmlndXJhdGlvblNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoV0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBib29sIGtlZXBBbmRSZXVzZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0K
aW5kZXggMjk4YjQ0ZTJmMThmODY4ZDc5NDE4OTRkMmRhNzkzYWJkZGQxNjI2MS4uYzM0NWNkOTgz
MmQ1YzliYTE4YzE1YmU3ZWU0NWMwYTEzNjg1ZTUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJDZXJ0aWZpY2F0ZUlu
Zm8uaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorI2ltcG9ydCAiV2ViUHJv
Y2Vzc0NhY2hlLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCIKQEAgLTQ3
NSw2ICs0NzYsMTEgQEAgLSAoc2l6ZV90KV93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1l
ZAogICAgIHJldHVybiBbc2VsZiBfd2ViUHJvY2Vzc0NvdW50XSAtIChbc2VsZiBfaGFzUHJld2Fy
bWVkV2ViUHJvY2Vzc10gPyAxIDogMCk7CiB9CiAKKy0gKHNpemVfdClfd2ViUHJvY2Vzc0NvdW50
SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX3dlYlByb2Nl
c3NDb3VudF0gLSAoW3NlbGYgX2hhc1ByZXdhcm1lZFdlYlByb2Nlc3NdID8gMSA6IDApIC0gX3By
b2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5zaXplKCk7Cit9CisKIC0gKHNpemVfdClfd2Vi
UGFnZUNvbnRlbnRQcm9jZXNzQ291bnQKIHsKICAgICBhdXRvIGFsbFdlYlByb2Nlc3NlcyA9IF9w
cm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDQ3MGRkNTM5NGEy
MTQwNzA0NmFlMmJhZTUzODdiNjY1OGViMmNiNmUuLjA3NWY3MTk3ZTk3Y2NjYTlhNDc1ZWE4NDg2
ODQ2ZWUxNzIyNmM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC05Niw2ICs5Niw3IEBACiAtIChz
aXplX3QpX3dlYlByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlv
cygxMS4wKSk7CiAtIChCT09MKV9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoc2l6ZV90KV93ZWJQ
cm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
NCksIGlvcygxMi4wKSk7CistIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2Fy
bWVkQW5kQ2FjaGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtIChzaXplX3QpX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzQ291bnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwog
LSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMyksIGlvcygxMS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXgg
ZjY3MWQ3YjRjMmI4YmY5ODZiNmU0YTUwY2UwOTA5NTE3MjhjYTQzZC4uNDA1MDBkOTZhMmRlNGRk
MjExOTFhZDgzNzNkMWVhNmNjM2UxYjc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aApAQCAtNjcsNiArNjcsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9z
KDguMCkpCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbHdheXNLZWVwQW5kUmV1c2VTd2Fw
cGVkUHJvY2Vzc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjE0KSwgaW9zKDEyLjApKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhP
cGVuZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwogQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgcHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgdXNlc1dlYlByb2Nlc3NDYWNoZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQp
LCBpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc3VwcHJlc3Nlc0Nvbm5l
Y3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEw
LjE0KSwgaW9zKDEyLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNKSVRFbmFi
bGVkKSBCT09MIEpJVEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQppbmRleCA4
YTM2NzgxOTg4ZWUwN2MyZTcwNTg5ZmJmYjM1N2UwZjExYTBlYTMyLi4wMWJmNmE1NDVkOGZkNzc2
MjllZDQ0MDIwOTQ2NTBiOGVmZmI0NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bW0KQEAgLTI1OCw2ICsyNTgsMTYgQEAgLSAoQk9PTClwcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRp
Y2FsbHkKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+aXNBdXRvbWF0aWNQ
cm9jZXNzV2FybWluZ0VuYWJsZWQoKTsKIH0KIAorLSAodm9pZClzZXRVc2VzV2ViUHJvY2Vzc0Nh
Y2hlOihCT09MKXZhbHVlCit7CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0VXNl
c1dlYlByb2Nlc3NDYWNoZSh2YWx1ZSk7Cit9CisKKy0gKEJPT0wpdXNlc1dlYlByb2Nlc3NDYWNo
ZQoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT51c2VzV2ViUHJvY2Vz
c0NhY2hlKCk7Cit9CisKIC0gKHZvaWQpc2V0QWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nl
c3NlczooQk9PTClzd2FwcwogewogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldEFs
d2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoc3dhcHMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNzBj
OTFhNmExNDUxOGVlNTk2MmVhYTc4YmFhNzAwZDVmYWU2MTJjYS4uOTg3NDZjMzdjNTI0Yzg3ODRi
N2E2ZTgyNjY3NjY2NTE3NWY2ZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00MTgsNiArNDE4LDE0IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkKICAgICB9
XTsKICNlbmRpZgogCisgICAgbV9hY3RpdmF0aW9uT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpbTlNPcGVyYXRpb25R
dWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0
aW9uKSB7CisgICAgICAgIHNldEFwcGxpY2F0aW9uSXNBY3RpdmUodHJ1ZSk7CisgICAgfV07CisK
KyAgICBtX2RlYWN0aXZhdGlvbk9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNBcHBsaWNhdGlvbkRpZFJlc2lnbkFjdGl2
ZU5vdGlmaWNhdGlvbiBvYmplY3Q6TlNBcHAgcXVldWU6W05TT3BlcmF0aW9uUXVldWUgY3VycmVu
dFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeworICAg
ICAgICBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGZhbHNlKTsKKyAgICB9XTsKKwogI2VuZGlmIC8v
ICFQTEFURk9STShJT1NfRkFNSUxZKQogfQogCkBAIC00MzMsNiArNDQxLDggQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycygpCiAjaWYgRU5BQkxF
KFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zY3JvbGxlclN0eWxlTm90aWZp
Y2F0aW9uT2JzZXJ2ZXIuZ2V0KCldOwogI2VuZGlmCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2FjdGl2YXRpb25PYnNlcnZlci5nZXQo
KV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNl
cnZlcjptX2RlYWN0aXZhdGlvbk9ic2VydmVyLmdldCgpXTsKICNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwCmluZGV4IGEzZjU3MTFiMDUxZWUxZjQ5NGUwZjdjYTdmYmU4OTY1OWYx
Y2M0MzQuLmI2NmZmOWI0ZGQxZDA3ZjY2YWFhYTRhMTE5NmY5YTgzNGRmOTdjODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE1
NCw2ICsxNTQsMTIgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIHsKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CiAKKyAgICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNp
ZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJv
Y2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKKyAg
ICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9jZXNzSWRl
bnRpZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tGb3J3YXJk
IGl0ZW0gdG8gaGFwcGVuIGluIHRoZQorICAgIC8vIG5ldyBwcm9jZXNzLgorICAgIGlmIChuYXZp
Z2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0g
V2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQorICAgICAgICBuYXZpZ2F0aW9uLmZy
b21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpKTsKKwogICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVzdCksIHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGExM2YyYmI4MzE2
MWU0ZjNhNmUwOWNkN2MxMGY1ODNkYmNkMDVmYS4uMTc0NTMxYTQzNDVmYjg1YmJkYzgwODlkNWZk
OTNmN2UzNTc4MWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0zODM0LDYgKzM4MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgbV9wYWdl
TG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24pOwogCiAgICAg
aWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIHByb2Nlc3MtPmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKHVybCk7CiAgICAgICAgIHJlcG9ydFBhZ2VMb2FkUmVz
dWx0KFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSk7
CiAgICAgICAgIG1fcGFnZUxvYWRTdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgICAg
ICBtX3BhZ2VMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodHJhbnNhY3Rpb24sIHVy
bCwgdW5yZWFjaGFibGVVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU2Y2I1MzE5N2EwNDhkNGI0MmY2ZGI5YmMzMGUzNDJjODgw
NTQ5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NDYWNoZS5jcHAKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCisKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHkuaCIKKyNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBTZWNvbmRzIGNhY2hlZFByb2Nl
c3NMaWZldGltZSB7IDMwX21pbiB9Oworc3RhdGljIFNlY29uZHMgY2xlYXJpbmdEZWxheUFmdGVy
QXBwbGljYXRpb25SZXNpZ25zQWN0aXZlIHsgNV9taW4gfTsKKworV2ViUHJvY2Vzc0NhY2hlOjpX
ZWJQcm9jZXNzQ2FjaGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDogbV9ldmlj
dGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlByb2Nlc3NDYWNoZTo6Y2xlYXIp
Cit7CisgICAgdXBkYXRlQ2FwYWNpdHkocHJvY2Vzc1Bvb2wpOworfQorCitib29sIFdlYlByb2Nl
c3NDYWNoZTo6YWRkUHJvY2Vzcyhjb25zdCBTdHJpbmcmIHJlZ2lzdHJhYmxlRG9tYWluLCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCit7CisgICAgQVNTRVJUKCFyZWdpc3RyYWJsZURv
bWFpbi5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghcHJvY2Vzcy0+cGFnZUNvdW50KCkpOworICAg
IEFTU0VSVCghcHJvY2Vzcy0+cHJvdmlzaW9uYWxQYWdlQ291bnQoKSk7CisgICAgQVNTRVJUKCFw
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLmhhc1N1c3BlbmRlZFBhZ2VGb3IocHJvY2VzcykpOworCisg
ICAgaWYgKCFjYXBhY2l0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkg
eworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3ND
YWNoZTo6YWRkUHJvY2VzcygpOiBOb3QgY2FjaGluZyBwcm9jZXNzICVpIGJlY2F1c2Ugd2UgYXJl
IHVuZGVyIG1lbW9yeSBwcmVzc3VyZSIsIHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgd2hpbGUgKG1fcHJvY2Vz
c2VzUGVyUmVnaXN0cmFibGVEb21haW4uc2l6ZSgpID49IGNhcGFjaXR5KCkpIHsKKyAgICAgICAg
YXV0byBpdCA9IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4ucmFuZG9tKCk7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjph
ZGRQcm9jZXNzKCk6IEV2aWN0aW5nIHByb2Nlc3MgJWkgZnJvbSBXZWJQcm9jZXNzIGNhY2hlIiwg
dGhpcywgaXQtPnZhbHVlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGl0KTsKKyAgICB9CisKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZW5zdXJl
KHJlZ2lzdHJhYmxlRG9tYWluLCBbcHJvY2VzcyA9IHByb2Nlc3MuY29weVJlZigpXSgpIG11dGFi
bGUgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQcm9jZXNzPihXVEZN
b3ZlKHByb2Nlc3MpKTsKKyAgICB9KTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcs
ICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2VzczogQWRkaW5nIHByb2Nlc3MgJWkgdG8g
V2ViUHJvY2VzcyBjYWNoZSwgY2FjaGUgc2l6ZTogWyV1IC8gJXVdIiwgdGhpcywgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgc2l6ZSgpLCBjYXBhY2l0eSgpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJv
Y2Vzcyhjb25zdCBTdHJpbmcmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiBk
YXRhU3RvcmUpCit7CisgICAgYXV0byBpdCA9IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21h
aW4uZmluZChyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGl0ID09IG1fcHJvY2Vzc2VzUGVy
UmVnaXN0cmFibGVEb21haW4uZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
aWYgKCZpdC0+dmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJmRhdGFTdG9y
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHByb2Nlc3MgPSBpdC0+dmFs
dWUtPnRha2VQcm9jZXNzKCk7CisgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5y
ZW1vdmUoaXQpOworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJv
Y2Vzc0NhY2hlOjp0YWtlUHJvY2VzczogVGFraW5nIHByb2Nlc3MgJWkgZnJvbSBXZWJQcm9jZXNz
IGNhY2hlLCBjYWNoZSBzaXplOiBbJXUgLyAldV0iLCB0aGlzLCBwcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBzaXplKCksIGNhcGFjaXR5KCkpOworCisgICAgQVNTRVJUKCFwcm9jZXNzLT5w
YWdlQ291bnQoKSk7CisgICAgQVNTRVJUKCFwcm9jZXNzLT5wcm92aXNpb25hbFBhZ2VDb3VudCgp
KTsKKyAgICBBU1NFUlQoIXByb2Nlc3MtPnByb2Nlc3NQb29sKCkuaGFzU3VzcGVuZGVkUGFnZUZv
cihwcm9jZXNzKSk7CisKKyAgICByZXR1cm4gV1RGTW92ZShwcm9jZXNzKTsKK30KKwordm9pZCBX
ZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZUNhcGFjaXR5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCkKK3sKKyAgICBpZiAoIXByb2Nlc3NQb29sLmNvbmZpZ3VyYXRpb24oKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24oKSB8fCAhcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnVzZXNXZWJQcm9j
ZXNzQ2FjaGUoKSkgeworICAgICAgICBpZiAoIXByb2Nlc3NQb29sLmNvbmZpZ3VyYXRpb24oKS5w
cm9jZXNzU3dhcHNPbk5hdmlnYXRpb24oKSkKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjp1cGRhdGVDYXBhY2l0eTogQ2FjaGUg
aXMgZGlzYWJsZWQgYmVjYXVzZSBwcm9jZXNzIHN3YXAgb24gbmF2aWdhdGlvbiBpcyBkaXNhYmxl
ZCIsIHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHk6IENhY2hlIGlz
IGRpc2FibGVkIGJ5IGNsaWVudCIsIHRoaXMpOworICAgICAgICBtX2NhcGFjaXR5ID0gMDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBzaXplX3QgbWVtb3J5U2l6ZSA9IHJhbVNpemUoKSAvIEdCOwor
CisgICAgICAgIC8vIEFsbG93IDQgcHJvY2Vzc2VzIGluIHRoZSBjYWNoZSBwZXIgR0Igb2YgUkFN
LCB1cCB0byAzMCBwcm9jZXNzZXMuCisgICAgICAgIG1fY2FwYWNpdHkgPSBzdGQ6Om1pbjx1bnNp
Z25lZD4obWVtb3J5U2l6ZSAqIDQsIDMwKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3
YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZUNhcGFjaXR5OiBDYWNoZSBoYXMg
YSBjYXBhY2l0eSBvZiAldSBwcm9jZXNzZXMiLCB0aGlzLCBjYXBhY2l0eSgpKTsKKyAgICB9CisK
KyAgICBpZiAoIW1fY2FwYWNpdHkpCisgICAgICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc0NhY2hlOjpjbGVhcigpCit7CisgICAgaWYgKG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXIoKSBldmljdGluZyAldSBw
cm9jZXNzZXMiLCB0aGlzLCBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnNpemUoKSk7
CisgICAgbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5jbGVhcigpOworfQorCit2b2lk
IFdlYlByb2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZShib29sIGlzQWN0aXZlKQor
eworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hl
OjpzZXRBcHBsaWNhdGlvbklzQWN0aXZlKCVkKSIsIHRoaXMsIGlzQWN0aXZlKTsKKyAgICBpZiAo
aXNBY3RpdmUpCisgICAgICAgIG1fZXZpY3Rpb25UaW1lci5zdG9wKCk7CisgICAgZWxzZSBpZiAo
IW1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICBtX2V2
aWN0aW9uVGltZXIuc3RhcnRPbmVTaG90KGNsZWFyaW5nRGVsYXlBZnRlckFwcGxpY2F0aW9uUmVz
aWduc0FjdGl2ZSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpldmljdFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIGF1dG8gaXQgPSBtX3Byb2Nlc3Nlc1BlclJl
Z2lzdHJhYmxlRG9tYWluLmZpbmQocHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBB
U1NFUlQoaXQgIT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSk7CisgICAg
QVNTRVJUKCZpdC0+dmFsdWUtPnByb2Nlc3MoKSA9PSAmcHJvY2Vzcyk7CisKKyAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNz
KCk6IEV2aWN0aW5nIHByb2Nlc3MgJWkgZnJvbSBXZWJQcm9jZXNzIGNhY2hlIGJlY2F1c2UgaXQg
ZXhwaXJlZCIsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICBtX3By
b2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShpdCk7Cit9CisKK1dlYlByb2Nlc3ND
YWNoZTo6Q2FjaGVkUHJvY2Vzczo6Q2FjaGVkUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MoV1RGTW92ZShwcm9jZXNzKSkKKyAgICAsIG1fZXZp
Y3Rpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDYWNoZWRQcm9jZXNzOjpldmljdGlv
blRpbWVyRmlyZWQpCit7CisgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKHRydWUp
OworICAgIG1fZXZpY3Rpb25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkUHJvY2Vzc0xpZmV0aW1l
KTsKK30KKworV2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2Vzcygp
Cit7CisgICAgaWYgKCFtX3Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCgh
bV9wcm9jZXNzLT5wYWdlQ291bnQoKSk7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3MtPnByb3Zpc2lv
bmFsUGFnZUNvdW50KCkpOworICAgIEFTU0VSVCghbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmhh
c1N1c3BlbmRlZFBhZ2VGb3IoKm1fcHJvY2VzcykpOworCisgICAgbV9wcm9jZXNzLT5zZXRJc0lu
UHJvY2Vzc0NhY2hlKGZhbHNlKTsKKyAgICBtX3Byb2Nlc3MtPnNodXREb3duKCk7Cit9CisKK1Jl
ZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVBy
b2Nlc3MoKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3MpOworICAgIG1fZXZpY3Rpb25UaW1lci5z
dG9wKCk7CisgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKGZhbHNlKTsKKyAgICBy
ZXR1cm4gbV9wcm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0Nh
Y2hlOjpDYWNoZWRQcm9jZXNzOjpldmljdGlvblRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVCht
X3Byb2Nlc3MpOworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS53ZWJQcm9jZXNzQ2FjaGUo
KS5ldmljdFByb2Nlc3MoKm1fcHJvY2Vzcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGY5
OWFhODA1ZjE5ZmM0ZGJlNzg2ODlmNTEyNTgyNWY1NGE3OWViCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmgKQEAgLTAsMCArMSw4MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNz
IFdlYlByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CisKK2NsYXNzIFdlYlBy
b2Nlc3NDYWNoZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgV2ViUHJvY2Vzc0NhY2hlKFdlYlByb2Nlc3NQb29sJik7CisKKyAgICBib29sIGFk
ZFByb2Nlc3MoY29uc3QgU3RyaW5nJiByZWdpc3RyYWJsZURvbWFpbiwgUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJik7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3MoY29uc3Qg
U3RyaW5nJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYpOworCisgICAgdm9p
ZCB1cGRhdGVDYXBhY2l0eShXZWJQcm9jZXNzUG9vbCYpOworICAgIHVuc2lnbmVkIGNhcGFjaXR5
KCkgeyByZXR1cm4gbV9jYXBhY2l0eTsgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uc2l6ZSgpOyB9CisKKyAgICB2
b2lkIGNsZWFyKCk7CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGJvb2wpOworCitw
cml2YXRlOgorICAgIHZvaWQgZXZpY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOworCisgICAg
dW5zaWduZWQgbV9jYXBhY2l0eSB7IDAgfTsKKworICAgIGNsYXNzIENhY2hlZFByb2Nlc3Mgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIENh
Y2hlZFByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7CisgICAgICAgIH5DYWNoZWRQcm9j
ZXNzKCk7CisKKyAgICAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gdGFrZVByb2Nlc3MoKTsKKyAg
ICAgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgeyBBU1NFUlQobV9wcm9jZXNzKTsgcmV0
dXJuICptX3Byb2Nlc3M7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZXZpY3Rpb25U
aW1lckZpcmVkKCk7CisKKyAgICAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNz
OworICAgICAgICBSdW5Mb29wOjpUaW1lcjxDYWNoZWRQcm9jZXNzPiBtX2V2aWN0aW9uVGltZXI7
CisgICAgfTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUHJv
Y2Vzcz4+IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW47CisgICAgUnVuTG9vcDo6VGlt
ZXI8V2ViUHJvY2Vzc0NhY2hlPiBtX2V2aWN0aW9uVGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCBjOWRlN2ZiNTQxYjAwYTVhMzA5MjhhZTQ5OTlkZTZiNWE1NWM4NDA1Li43ZTg3ODhhMWZjNWIz
ZDRjMWZiNTZhYmVlZDYxM2IwZmI5ZTQ5MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUdy
b3VwLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc0tleXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgpAQCAtMjU1LDYgKzI1Niw3
IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3Vu
dGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsg
fSkKICAgICAsIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVy
RXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICNlbmRpZgorICAgICwgbV93
ZWJQcm9jZXNzQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+KCp0aGlzKSkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKQEAgLTMxMyw2ICszMTUsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJv
Y2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAK
IFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogeworICAgIG1fd2ViUHJvY2Vzc0Nh
Y2hlLT5jbGVhcigpOworCiAgICAgYm9vbCByZW1vdmVkID0gcHJvY2Vzc1Bvb2xzKCkucmVtb3Zl
Rmlyc3QodGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKIApAQCAt
NDU1LDYgKzQ1OSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXh0Q2hlY2tlclN0YXRlQ2hh
bmdlZCgpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRU
ZXh0Q2hlY2tlclN0YXRlKFRleHRDaGVja2VyOjpzdGF0ZSgpKSk7CiB9CiAKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldEFwcGxpY2F0aW9uSXNBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKK3sKKyAgICBt
X3dlYlByb2Nlc3NDYWNoZS0+c2V0QXBwbGljYXRpb25Jc0FjdGl2ZShpc0FjdGl2ZSk7Cit9CisK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNjcmVlblByb3BlcnRpZXNTdGF0ZUNoYW5nZWQoKQogewog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTExNTQsNyArMTE2MywxMSBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBS
ZWY8QVBJOgogICAgICAgICBlbmFibGVQcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbiA9
IGZhbHNlOwogI2VuZGlmCiAKKyAgICBib29sIHdhc1Byb2Nlc3NTd2FwcGluZ09uTmF2aWdhdGlv
bkVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpOwog
ICAgIG1fY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVy
aW1lbnRhbEZlYXR1cmVzKGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uKTsK
KyAgICBpZiAod2FzUHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9uRW5hYmxlZCAhPSBtX2NvbmZp
Z3VyYXRpb24tPnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpKQorICAgICAgICBtX3dlYlByb2Nl
c3NDYWNoZS0+dXBkYXRlQ2FwYWNpdHkoKnRoaXMpOworCiAgICAgbV9jb25maWd1cmF0aW9uLT5z
ZXRTaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyhwYWdlLT5wcmVmZXJlbmNlcygpLmNhcHR1
cmVBdWRpb0luVUlQcm9jZXNzRW5hYmxlZCgpKTsKICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFNo
b3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzKHBhZ2UtPnByZWZlcmVuY2VzKCkuY2FwdHVyZVZp
ZGVvSW5VSVByb2Nlc3NFbmFibGVkKCkpOwogCkBAIC0xMzE5LDYgKzEzMzIsMTAgQEAgV2ViUHJv
Y2Vzc1Bvb2w6OlN0YXRpc3RpY3MmIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkKIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJuaW5nKENyaXRpY2FsKQog
eworICAgIFJFTEVBU0VfTE9HKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Bv
b2w6OmhhbmRsZU1lbW9yeVByZXNzdXJlV2FybmluZyIsIHRoaXMpOworCisgICAgbV93ZWJQcm9j
ZXNzQ2FjaGUtPmNsZWFyKCk7CisKICAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzKQogICAgICAg
ICBtX3ByZXdhcm1lZFByb2Nlc3MtPnNodXREb3duKCk7CiAgICAgQVNTRVJUKCFtX3ByZXdhcm1l
ZFByb2Nlc3MpOwpAQCAtMjE1MywxNCArMjE3MCwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdh
dAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQ
cm94eSosIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8m
IHRhcmdldFVSTCA9IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKS51cmwoKTsKKyAgICBhdXRv
IHJlZ2lzdHJhYmxlRG9tYWluID0gdG9SZWdpc3RyYWJsZURvbWFpbih0YXJnZXRVUkwpOworCisg
ICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcGFnZSA9IG1ha2VSZWYocGFnZSksIHRhcmdldFVSTCwgcmVnaXN0cmFibGVEb21h
aW5dICgpIC0+IFJlZjxXZWJQcm9jZXNzUHJveHk+IHsKKyAgICAgICAgaWYgKGF1dG8gcHJvY2Vz
cyA9IHdlYlByb2Nlc3NDYWNoZSgpLnRha2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCBwYWdl
LT53ZWJzaXRlRGF0YVN0b3JlKCkpKQorICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3MucmVsZWFz
ZU5vbk51bGwoKTsKKworICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgc3VzcGVuZGVkIHBh
Z2UgZm9yIHRoZSBnaXZlbiByZWdpc3RyYWJsZSBkb21haW4gYW5kIHVzZSBpdHMgcHJvY2VzcyBp
ZiB3ZSBkbywgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCisgICAgICAgIGlmIChhdXRvIHByb2Nl
c3MgPSBmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbiwg
cGFnZSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIlVzaW5n
IFdlYlByb2Nlc3MgJWkgZnJvbSBhIFN1c3BlbmRlZFBhZ2UiLCBwcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9jZXNzLnJlbGVhc2VOb25OdWxsKCk7
CisgICAgICAgIH0KIAotICAgIGF1dG8gY3JlYXRlTmV3UHJvY2VzcyA9IFsmXSAoKSAtPiBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBw
cm9jZXNzID0gdHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MocGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkp
KSB7CisgICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJvY2Vzcyhw
YWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3dhcHBpbmcsICJVc2luZyBwcmV3YXJtZWQgcHJvY2VzcyAlaSIsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgdHJ5UHJld2FybVdpdGhEb21haW5JbmZvcm1h
dGlvbigqcHJvY2VzcywgdGFyZ2V0VVJMKTsKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzLnJl
bGVhc2VOb25OdWxsKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gY3JlYXRlTmV3V2Vi
UHJvY2VzcyhwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgIkxhdW5jaGluZyBhIG5ldyBwcm9jZXNzIik7CisgICAgICAgIHJldHVy
biBjcmVhdGVOZXdXZWJQcm9jZXNzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgfTsK
IAogICAgIGlmICh1c2VzU2luZ2xlV2ViUHJvY2VzcygpKQpAQCAtMjE5OSwxMiArMjIyOCwxOCBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcyA9IFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIodGFyZ2V0SXRlbS0+aXRlbUlEKCkucHJvY2Vzc0lk
ZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNz
ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih0YXJnZXRJdGVtLT5sYXN0
UHJvY2Vzc0lkZW50aWZpZXIoKSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBcmNoaXRlY3R1
cmFsbHkgd2UgZG8gbm90IGN1cnJlbnRseSBzdXBwb3J0IG11bHRpcGxlIFdlYlBhZ2UncyB3aXRo
IHRoZSBzYW1lIElEIGluIGEgZ2l2ZW4gV2ViUHJvY2Vzcy4KICAgICAgICAgICAgIC8vIEluIHRo
ZSBjYXNlIHdoZXJlIHRoaXMgV2ViUHJvY2VzcyBoYXMgYSBTdXNwZW5kZWRQYWdlUHJveHkgZm9y
IHRoaXMgV2ViUGFnZSwgd2UgY2FuIHRocm93IGl0IGF3YXkgdG8gc3VwcG9ydAogICAgICAgICAg
ICAgLy8gV2ViUHJvY2VzcyByZS11c2UuCiAgICAgICAgICAgICByZW1vdmVBbGxTdXNwZW5kZWRQ
YWdlc0ZvclBhZ2UocGFnZSwgcHJvY2Vzcy5nZXQoKSk7CiAKKyAgICAgICAgICAgIC8vIE1ha2Ug
c3VyZSB3ZSByZW1vdmUgdGhlIHByb2Nlc3MgZnJvbSB0aGUgY2FjaGUgaWYgaXQgaXMgaW4gdGhl
cmUgc2luY2Ugd2UncmUgYWJvdXQgdG8gdXNlIGl0LgorICAgICAgICAgICAgaWYgKHByb2Nlc3Mt
PmlzSW5Qcm9jZXNzQ2FjaGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcmVtb3ZlZFByb2Nl
c3MgPSB3ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2Vzcyhwcm9jZXNzLT5yZWdpc3RyYWJsZURv
bWFpbigpLCBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzLmdldCgpID09IHByb2Nl
c3MuZ2V0KCkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIocHJvY2Vzcy5yZWxlYXNlTm9uTnVsbCgpLCBudWxscHRyLCAiVXNpbmcgdGFyZ2V0
IGJhY2svZm9yd2FyZCBpdGVtJ3MgcHJvY2VzcyJfcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0y
MjI4LDcgKzIyNjMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlv
bkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgogCiAgICAgU3RyaW5nIHJl
YXNvbiA9ICJOYXZpZ2F0aW9uIGlzIGNyb3NzLXNpdGUiX3M7CiAgICAgCi0gICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IHRvUmVnaXN0cmFibGVEb21haW4odGFyZ2V0VVJMKTsKICAgICBpZiAo
bV9jb25maWd1cmF0aW9uLT5hbHdheXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKCkpIHsK
ICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBpbmcpIENvbnNpZGVy
aW5nIHJlLXVzZSBvZiBhIHByZXZpb3VzbHkgY2FjaGVkIHByb2Nlc3MgZm9yIGRvbWFpbiAlcyIs
IHJlZ2lzdHJhYmxlRG9tYWluLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0yMjQ3LDIyICsyMjgxLDI2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwoV2Vi
UGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBD
aGVjayBpZiB3ZSBoYXZlIGEgc3VzcGVuZGVkIHBhZ2UgZm9yIHRoZSBnaXZlbiByZWdpc3RyYWJs
ZSBkb21haW4gYW5kIHVzZSBpdHMgcHJvY2VzcyBpZiB3ZSBkbywgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuCisgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZU5ld1Byb2Nlc3MoKSwg
bnVsbHB0ciwgcmVhc29uKTsKK30KKworUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKGNvbnN0IFN0cmluZyYgcmVn
aXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eSYgcGFnZSkKK3sKICAgICBhdXRvIGl0ID0gbV9z
dXNwZW5kZWRQYWdlcy5maW5kSWYoWyZdKGF1dG8mIHN1c3BlbmRlZFBhZ2UpIHsKLSAgICAgICAg
cmV0dXJuIHN1c3BlbmRlZFBhZ2UtPnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVE
b21haW47CisgICAgICAgIHJldHVybiBzdXNwZW5kZWRQYWdlLT5yZWdpc3RyYWJsZURvbWFpbigp
ID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkud2Vic2l0
ZURhdGFTdG9yZSgpID09ICZwYWdlLndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICB9KTsKLSAgICBp
ZiAoaXQgIT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQoKSkgewotICAgICAgICBSZWY8V2ViUHJvY2Vz
c1Byb3h5PiBwcm9jZXNzID0gKCppdCktPnByb2Nlc3MoKTsKKyAgICBpZiAoaXQgPT0gbV9zdXNw
ZW5kZWRQYWdlcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgLy8g
RklYTUU6IElmIHRoZSBTdXNwZW5kZWRQYWdlIGlzIGZvciB0aGlzIHBhZ2UsIHRoZW4gd2UgbmVl
ZCB0byBkZXN0cm95IHRoZSBzdXNwZW5kZWQgcGFnZSBhcyB3ZSBkbyBub3Qgc3VwcG9ydCBoYXZp
bmcKLSAgICAgICAgLy8gbXVsdGlwbGUgV2ViUGFnZXMgd2l0aCB0aGUgc2FtZSBJRCBpbiBhIGdp
dmVuIFdlYlByb2Nlc3MgY3VycmVudGx5IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkxMTY2KS4KLSAgICAgICAgaWYgKCYoKml0KS0+cGFnZSgpID09ICZwYWdlKQot
ICAgICAgICAgICAgbV9zdXNwZW5kZWRQYWdlcy5yZW1vdmUoaXQpOworICAgIFJlZjxXZWJQcm9j
ZXNzUHJveHk+IHByb2Nlc3MgPSAoKml0KS0+cHJvY2VzcygpOwogCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHByb2Nlc3MpLCBudWxscHRyLCByZWFzb24pOwotICAg
IH0KKyAgICAvLyBGSVhNRTogSWYgdGhlIFN1c3BlbmRlZFBhZ2UgaXMgZm9yIHRoaXMgcGFnZSwg
dGhlbiB3ZSBuZWVkIHRvIGRlc3Ryb3kgdGhlIHN1c3BlbmRlZCBwYWdlIGFzIHdlIGRvIG5vdCBz
dXBwb3J0IGhhdmluZworICAgIC8vIG11bHRpcGxlIFdlYlBhZ2VzIHdpdGggdGhlIHNhbWUgSUQg
aW4gYSBnaXZlbiBXZWJQcm9jZXNzIGN1cnJlbnRseSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MTE2NikuCisgICAgaWYgKCYoKml0KS0+cGFnZSgpID09ICZwYWdl
KQorICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZShpdCk7CiAKLSAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoY3JlYXRlTmV3UHJvY2VzcygpLCBudWxscHRyLCByZWFzb24pOworCisg
ICAgcmV0dXJuIFdURk1vdmUocHJvY2Vzcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFk
ZFN1c3BlbmRlZFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNw
ZW5kZWRQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXgg
ZTU3NGUxZDdhNjJjNGQ3ZWNmMzA4M2QyZjgzMzBkOTgxMzdlNWZjZC4uZWJmZjliZjk3ZmE5Njk2
ZDMyNzE2NGFiNmNhZWU0NTRiYWEyYjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC0xMDEsNiArMTAxLDcgQEAgY2xhc3MgV2ViQXV0b21hdGlvblNlc3Np
b247CiBjbGFzcyBXZWJDb250ZXh0U3VwcGxlbWVudDsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNs
YXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NDYWNoZTsKIHN0cnVjdCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBTdGF0aXN0aWNzRGF0YTsKIHN0cnVj
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtMTc2LDYgKzE3Nyw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkq
KTsKIAorICAgIFdlYlByb2Nlc3NDYWNoZSYgd2ViUHJvY2Vzc0NhY2hlKCkgeyByZXR1cm4gbV93
ZWJQcm9jZXNzQ2FjaGUuZ2V0KCk7IH0KKwogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3Mg
ZnJvbSB0aGUgY29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSopOwogCkBAIC00NjQsNiArNDY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU3Vz
cGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmKTsKICAgICBib29sIGhhc1N1c3BlbmRlZFBh
Z2VGb3IoV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZVByb3h5KiA9IG51bGxwdHIpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIG1heFN1c3BlbmRlZFBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4
U3VzcGVuZGVkUGFnZUNvdW50OyB9CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gZmluZFJl
dXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoY29uc3QgU3RyaW5nJiwgV2ViUGFnZVByb3h5Jik7
CiAKICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0oKTsKIApAQCAtNTQ4LDYgKzU1
Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJz
KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0QXBwbGljYXRpb25Jc0FjdGl2ZShib29sKTsKKwog
ICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcmIHBhZ2VP
cmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2
b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2lu
SGFzaCwgUEFMOjpTZXNzaW9uSUQpOwogCkBAIC02NDksNiArNjU1LDggQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgUmV0YWluUHRy
PE5TT2JqZWN0PiBtX3Njcm9sbGVyU3R5bGVOb3RpZmljYXRpb25PYnNlcnZlcjsKICNlbmRpZgor
ICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9hY3RpdmF0aW9uT2JzZXJ2ZXI7CisgICAgUmV0YWlu
UHRyPE5TT2JqZWN0PiBtX2RlYWN0aXZhdGlvbk9ic2VydmVyOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPiBtX2hpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyPiBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI7CkBA
IC03MzksNiArNzQ3LDcgQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5Pj4gbV9zdXNwZW5kZWRQYWdlczsKICAgICB1bnNpZ25lZCBtX21heFN1
c3BlbmRlZFBhZ2VDb3VudCB7IDAgfTsKIAorICAgIFVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+
IG1fd2ViUHJvY2Vzc0NhY2hlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5Pj4gbV9zd2FwcGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW47CiAKICAgICBI
YXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlv
bj4+IG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlNjg2ODI4NTkwYTU0ODA1
ZGYzZTMxNzkwZmY4NTA0MmVhZjU3M2NlLi42MzliMGIyYWIwNTNkNjJhMGUzZDhkM2ZjZGQ4M2M2
ODZlOTJhMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1l
c3NhZ2VzLmgiCkBAIC0xODEsNiArMTgyLDIzIEBAIFdlYlByb2Nlc3NQcm94eTo6fldlYlByb2Nl
c3NQcm94eSgpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSW5Qcm9j
ZXNzQ2FjaGUoYm9vbCB2YWx1ZSkKK3sKKyAgICBBU1NFUlQobV9pc0luUHJvY2Vzc0NhY2hlICE9
IHZhbHVlKTsKKyAgICBtX2lzSW5Qcm9jZXNzQ2FjaGUgPSB2YWx1ZTsKKworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlNldElzSW5Qcm9jZXNzQ2FjaGUobV9pc0luUHJvY2Vzc0NhY2hl
KSwgMCk7CisKKyAgICBpZiAobV9pc0luUHJvY2Vzc0NhY2hlKSB7CisgICAgICAgIC8vIFdlYlBy
b2Nlc3NQcm94eSBvYmplY3RzIG5vcm1hbGx5IGtlZXAgdGhlIHByb2Nlc3MgcG9vbCBhbGl2ZSBi
dXQgd2UgZG8gbm90IHdhbnQgdGhpcyB0byBiZSB0aGUgY2FzZQorICAgICAgICAvLyBmb3IgY2Fj
aGVkIHByb2Nlc3NlcyBvciBpdCB3b3VsZCBsZWFrIHRoZSBwb29sLgorICAgICAgICBtX3Byb2Nl
c3NQb29sLnNldElzV2VhayhJc1dlYWs6Olllcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9wcm9jZXNzUG9vbCk7CisgICAgICAgIG1fcHJvY2Vzc1Bvb2wuc2V0SXNX
ZWFrKElzV2Vhazo6Tm8pOworICAgIH0KK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldExh
dW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25z
KQogewogICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6OlBy
b2Nlc3NUeXBlOjpXZWI7CkBAIC0zMzMsNiArMzUxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJ
RCwKIHsKICAgICBBU1NFUlQoIW1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKICAgICBBU1NF
UlQoIWdsb2JhbFBhZ2VNYXAoKS5jb250YWlucyhwYWdlSUQpKTsKKyAgICBBU1NFUlQoIW1faXNJ
blByb2Nlc3NDYWNoZSk7CiAKICAgICBpZiAoYmVnaW5zVXNpbmdEYXRhU3RvcmUgPT0gQmVnaW5z
VXNpbmdEYXRhU3RvcmU6OlllcykKICAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UpOwpAQCAtNDgwLDEwICs0OTksMzYgQEAgYm9vbCBX
ZWJQcm9jZXNzUHJveHk6OmZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKQogfQogI2VuZGlmCiAK
K2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3Qg
cGFnZUlEKSBjb25zdAoreworICAgIGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92
aXNpb25hbFBhZ2VzKSB7CisgICAgICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdl
SUQoKSA9PSBwYWdlSUQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIFdlYlByb2Nlc3NQcm94eTo6aXNBbGxvd2VkVG9VcGRhdGVC
YWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkgY29uc3QKK3sKKyAg
ICBpZiAobV9wYWdlTWFwLmNvbnRhaW5zKGl0ZW0ucGFnZUlEKCkpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGlmIChoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoaXRlbS5wYWdlSUQoKSkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGl0ZW0uc3VzcGVuZGVkUGFnZSgpICYm
IGl0ZW0uc3VzcGVuZGVkUGFnZSgpLT5wYWdlKCkucGFnZUlEKCkgPT0gaXRlbS5wYWdlSUQoKSAm
JiAmaXRlbS5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSA9PSB0aGlzKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0
ZW1TdGF0ZSkKIHsKLSAgICBpZiAoYXV0byogaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06
Oml0ZW1Gb3JJRChpdGVtU3RhdGUuaWRlbnRpZmllcikpCi0gICAgICAgIGl0ZW0tPnNldFBhZ2VT
dGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKKyAgICBhdXRvKiBpdGVtID0gV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6aXRlbUZvcklEKGl0ZW1TdGF0ZS5pZGVudGlmaWVyKTsKKyAgICBpZiAoIWl0
ZW0gfHwgIWlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKCppdGVtKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaXRlbS0+c2V0UGFnZVN0YXRlKGl0ZW1TdGF0ZS5wYWdlU3RhdGUpOwog
fQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC01OTAsNiArNjM1LDExIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xhdW5j
aCgpCiAgICAgYXV0byBwYWdlcyA9IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxXZWJQYWdlUHJveHk+
PihtX3BhZ2VNYXAudmFsdWVzKCkpOwogICAgIGF1dG8gcHJvdmlzaW9uYWxQYWdlcyA9IFdURjo6
bWFwKG1fcHJvdmlzaW9uYWxQYWdlcywgW10oYXV0byogcHJvdmlzaW9uYWxQYWdlKSB7IHJldHVy
biBtYWtlV2Vha1B0cihwcm92aXNpb25hbFBhZ2UpOyB9KTsKIAorICAgIGlmIChtX2lzSW5Qcm9j
ZXNzQ2FjaGUpIHsKKyAgICAgICAgYXV0byByZW1vdmVkUHJvY2VzcyA9IHByb2Nlc3NQb29sKCku
d2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nlc3MocmVnaXN0cmFibGVEb21haW4oKSwgd2Vic2l0
ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUHJvY2VzcywgcmVt
b3ZlZFByb2Nlc3MuZ2V0KCkgPT0gdGhpcyk7CisgICAgfQorCiAgICAgc2h1dERvd24oKTsKIAog
I2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCkBAIC03NjksMTcgKzgxOSwzNCBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVVzZXJHZXN0dXJlVG9rZW4odWludDY0X3QgaWRl
bnRpZmllcikKICAgICBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXAucmVtb3ZlKGlkZW50aWZpZXIp
OwogfQogCitib29sIFdlYlByb2Nlc3NQcm94eTo6Y2FuQmVBZGRlZFRvV2ViUHJvY2Vzc0NhY2hl
KCkgY29uc3QKK3sKKyAgICBpZiAocmVnaXN0cmFibGVEb21haW4oKS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChXZWJLaXQ6OmlzSW5zcGVjdG9yUHJvY2Vz
c1Bvb2wocHJvY2Vzc1Bvb2woKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWF5YmVTaHV0RG93bigpCiB7CiAg
ICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUF1eGls
aWFyeVByb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGNhbkJlQWRkZWRUb1dl
YlByb2Nlc3NDYWNoZSgpICYmIHByb2Nlc3NQb29sKCkud2ViUHJvY2Vzc0NhY2hlKCkuYWRkUHJv
Y2VzcyhyZWdpc3RyYWJsZURvbWFpbigpLCAqdGhpcykpCisgICAgICAgIHJldHVybjsKKwogICAg
IHNodXREb3duKCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5hdGVBdXhp
bGlhcnlQcm9jZXNzKCkKIHsKLSAgICBpZiAoIW1fcGFnZU1hcC5pc0VtcHR5KCkgfHwgbV9wcm9j
ZXNzUG9vbC0+aGFzU3VzcGVuZGVkUGFnZUZvcigqdGhpcykgfHwgIW1fcHJvdmlzaW9uYWxQYWdl
cy5pc0VtcHR5KCkpCisgICAgaWYgKCFtX3BhZ2VNYXAuaXNFbXB0eSgpIHx8IG1fcHJvY2Vzc1Bv
b2wtPmhhc1N1c3BlbmRlZFBhZ2VGb3IoKnRoaXMpIHx8ICFtX3Byb3Zpc2lvbmFsUGFnZXMuaXNF
bXB0eSgpIHx8IG1faXNJblByb2Nlc3NDYWNoZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKCFtX3Byb2Nlc3NQb29sLT5zaG91bGRUZXJtaW5hdGUodGhpcykpCkBAIC0xMzQ0LDYg
KzE0MTEsMjMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRl
c3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3IKICAgICBjb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0QWN0aXZlUGFnZXNPcmln
aW5zRm9yVGVzdGluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25z
dCBVUkwmIHVybCkKK3sKKyAgICAvLyBUaGlzIHByb2Nlc3MgaGFzIGJlZW4gdXNlZCBmb3Igc2V2
ZXJhbCByZWdpc3RyYWJsZSBkb21haW5zIGFscmVhZHkuCisgICAgaWYgKG1fcmVnaXN0cmFibGVE
b21haW4gJiYgbV9yZWdpc3RyYWJsZURvbWFpbi0+aXNOdWxsKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSB0b1JlZ2lzdHJhYmxlRG9tYWluKHVybCk7
CisgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0g
cmVnaXN0cmFibGVEb21haW4pIHsKKyAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9t
YWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21h
aW5zLgorICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gU3RyaW5nKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBBc3NvY2lhdGUgdGhlIHByb2Nlc3Mgd2l0aCB0aGlzIHJl
Z2lzdHJhYmxlIGRvbWFpbi4KKyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbik7Cit9CisKICNpZiBQTEFURk9STShXQVRDSE9TKQogCiB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6dGFrZUJhY2tncm91bmRBY3Rpdml0eVRva2VuRm9yRnVsbHNjcmVlbklucHV0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZWE4MDk3
OTYyMWU4MTYyYzgyZDYyMDdjYzNlMmI0NjgxYTVmMjE2Zi4uMzc2ZjNkNTc3OTNlN2JmYzQ5MWMz
NTM2M2QyMDg4MzJkN2RmNDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKQEAgLTEwOCw2ICsxMDgsMTAgQEAgcHVibGljOgogCiAgICAgV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sKCkgY29uc3QgeyBBU1NFUlQobV9wcm9jZXNzUG9vbCk7IHJldHVybiAq
bV9wcm9jZXNzUG9vbC5nZXQoKTsgfQogCisgICAgU3RyaW5nIHJlZ2lzdHJhYmxlRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi52YWx1ZU9yKFN0cmluZygpKTsgfQor
ICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sKTsKKyAgICBib29sIGlzSW5Qcm9jZXNz
Q2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KKwogICAgIC8vIEZJ
WE1FOiBXZWJzaXRlRGF0YVN0b3JlcyBzaG91bGQgYmUgbWFkZSBwZXItV2ViUGFnZVByb3h5IHRo
cm91Z2hvdXQgV2ViS2l0MgogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUo
KSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIApAQCAtMTI2LDYg
KzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIHR5cGVuYW1lIFdlYlBhZ2VQcm94eU1hcDo6VmFsdWVz
Q29uc3RJdGVyYXRvclJhbmdlIHBhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlTWFwLnZhbHVl
cygpOyB9CiAgICAgdW5zaWduZWQgcGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlTWFw
LnNpemUoKTsgfQorICAgIHVuc2lnbmVkIHByb3Zpc2lvbmFsUGFnZUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm92aXNpb25hbFBhZ2VzLnNpemUoKTsgfQogICAgIHVuc2lnbmVkIHZpc2libGVQ
YWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVQYWdlQ291bnRlci52YWx1ZSgpOyB9
CiAKICAgICB2b2lkIGFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7IC8vIFRoaXMgaXMgd2hhdCBpcyByZXBvcnRl
ZCB0byBBY3Rpdml0eU1vbml0b3IuCkBAIC0yNDksNiArMjU0LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2h1dERvd24oKTsKICAgICB2b2lkIG1heWJlU2h1dERvd24oKTsKIAorICAgIHZvaWQgZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJik7CisKIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNz
UHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlJiwgSXNQcmV3YXJtZWQpOwpA
QCAtMjc0LDYgKzI4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95RnJhbWUodWlu
dDY0X3QpOwogICAgIHZvaWQgZGlkRGVzdHJveVVzZXJHZXN0dXJlVG9rZW4odWludDY0X3QpOwog
CisgICAgYm9vbCBjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUoKSBjb25zdDsKICAgICB2b2lk
IHNob3VsZFRlcm1pbmF0ZShib29sJiBzaG91bGRUZXJtaW5hdGUpOwogCiAgICAgdm9pZCBjcmVh
dGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBwb3J0MSwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0Mik7
CkBAIC0yODYsNiArMjk0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlbGl2ZXJNZXNzYWdl
UG9ydE1lc3NhZ2VzKHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyLCBib29sIGlzTG9jYWxseVJlYWNoYWJsZSk7CiAKKyAgICBib29sIGhhc1Byb3Zpc2lv
bmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIGJvb2wgaXNBbGxvd2Vk
VG9VcGRhdGVCYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIGNvbnN0Owor
CiAgICAgLy8gUGx1Z2lucwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZv
aWQgZ2V0UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYg
cGx1Z2lucywgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBhcHBsaWNhdGlvblBsdWdpbnMs
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKTsK
QEAgLTM3MSw3ICszODIsNyBAQCBwcml2YXRlOgogICAgIEJhY2tncm91bmRQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lciBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyOwogICAgIAogICAg
IFJlZlB0cjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247Ci0gICAg
V2Vha09yU3Ryb25nUHRyPFdlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOyAvLyBQcmUtd2Fy
bWVkIHByb2Nlc3NlcyBkbyBub3QgaG9sZCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gdGhlaXIgcG9v
bC4KKyAgICBXZWFrT3JTdHJvbmdQdHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7IC8v
IFByZS13YXJtZWQgYW5kIGNhY2hlZCBwcm9jZXNzZXMgZG8gbm90IGhvbGQgYSBzdHJvbmcgcmVm
ZXJlbmNlIHRvIHRoZWlyIHBvb2wuCiAKICAgICBib29sIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVS
ZWFkU2FuZGJveEV4dGVuc2lvbjsgLy8gVHJ1ZSBpZiBhIHJlYWQgZXh0ZW5zaW9uIGZvciAiLyIg
d2FzIGV2ZXIgZ3JhbnRlZCAtIHdlIGRvbid0IHRyYWNrIHdoZXRoZXIgV2ViUHJvY2VzcyBzdGls
bCBoYXMgaXQuCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVh
ZEFjY2VzczsKQEAgLTM5NCw2ICs0MDUsOSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTdHJp
bmcsIHVpbnQ2NF90PiBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcDsKIAorICAgIE9wdGlvbmFsPFN0
cmluZz4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBib29sIG1faXNJblByb2Nlc3NDYWNoZSB7
IGZhbHNlIH07CisKICAgICBlbnVtIGNsYXNzIE5vT3JNYXliZSB7IE5vLCBNYXliZSB9IG1faXNS
ZXNwb25zaXZlOwogICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNz
SXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MjFhMDZhM2UzN2I2
NGU1NzQ5YTJhMWY2ZTQ0YTMzMDQ2OThjOGIzLi44MmJiNWM3Njg5OWIxYjgxYWMwMDU0NDE4OGZk
NDZhNTdhZWE5MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTM2ODUsNiArMzY4NSw4IEBACiAJCTgzMkFFMjUxMUJFMkU4Q0QwMEZB
QUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJFRDE4OTFFMkZFMTNC
MDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyRUQxOEExRTJGRTEzQjAw
NkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzM5N0M2NjIyMTI0QkQxMDBCNjIzODggLyog
V2ViUHJvY2Vzc0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlByb2Nlc3NDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMzk3
QzY3MjIxMjRCRDEwMEI2MjM4OCAvKiBXZWJQcm9jZXNzQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0NhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lz
dGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZUZpbGVT
eXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MTAxQTg0MkM4NzAw
Q0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDkw
LDYgKzc0OTIsOCBAQAogCQkJCUJDNTc0RTYxMTI2N0QwODAwMDZGMEYxMiAvKiBXZWJQb3B1cE1l
bnVQcm94eS5oICovLAogCQkJCUJDRDU5N0ZFMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVmZXJl
bmNlcy5jcHAgKi8sCiAJCQkJQkNENTk3RkQxMTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZlcmVu
Y2VzLmggKi8sCisJCQkJODMzOTdDNjYyMjEyNEJEMTAwQjYyMzg4IC8qIFdlYlByb2Nlc3NDYWNo
ZS5jcHAgKi8sCisJCQkJODMzOTdDNjcyMjEyNEJEMTAwQjYyMzg4IC8qIFdlYlByb2Nlc3NDYWNo
ZS5oICovLAogCQkJCTFBRkE0QjhEMUE2NUE5RTIwMDZDNEFCNCAvKiBXZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlci5jcHAgKi8sCiAJCQkJMUFGQTRCOEUxQTY1QTlFMjAwNkM0QUI0IC8qIFdlYlBy
b2Nlc3NMaWZldGltZU9ic2VydmVyLmggKi8sCiAJCQkJMUFGQTRCODkxQTY1QTFEMDAwNkM0QUI0
IC8qIFdlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDI4MjIwNTBlNGFiNTFhMjg0OTEyYmVmYzRkMDNhYjI1
MmEwZWZkY2YuLjk5ZTlhZmFlNDkzMDVjN2I2OGRiMzVjODhlZjNlNzM3YmExNzc3NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI4NSw2ICsyODUsMjAgQEAg
dm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoIW1fc3VwcHJlc3NNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIpIHsKICAgICAgICAgYXV0byYgbWVtb3J5UHJlc3N1cmVIYW5kbGVyID0gTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKTsKICAgICAgICAgbWVtb3J5UHJlc3N1cmVIYW5k
bGVyLnNldExvd01lbW9yeUhhbmRsZXIoW3RoaXNdIChDcml0aWNhbCBjcml0aWNhbCwgU3luY2hy
b25vdXMgc3luY2hyb25vdXMpIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgICAgICAvLyBJ
ZiB0aGlzIGlzIGEgcHJvY2VzcyB3ZSBrZWVwIGFyb3VuZCBmb3IgcGVyZm9ybWFuY2UsIGtpbGwg
aXQgb24gbWVtb3J5IHByZXNzdXJlIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGZyZWUgdXAgaXRzIG1l
bW9yeS4KKyAgICAgICAgICAgIGlmIChtX3Byb2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpDYWNo
ZWRXZWJDb250ZW50IHx8IG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlByZXdhcm1lZFdl
YkNvbnRlbnQgfHwgYXJlQWxsUGFnZXNTdXNwZW5kZWQoKSkgeworICAgICAgICAgICAgICAgIGlm
IChtX3Byb2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpDYWNoZWRXZWJDb250ZW50KQorICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiQ2FjaGVkIFdlYlByb2Nlc3MgJWkg
aXMgZXhpdGluZyBkdWUgdG8gbWVtb3J5IHByZXNzdXJlIiwgZ2V0cGlkKCkpOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlByZXdhcm1lZFdl
YkNvbnRlbnQpCisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJQcmV3
YXJtZWQgV2ViUHJvY2VzcyAlaSBpcyBleGl0aW5nIGR1ZSB0byBtZW1vcnkgcHJlc3N1cmUiLCBn
ZXRwaWQoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzLCAiU3VzcGVuZGVkIFdlYlByb2Nlc3MgJWkgaXMgZXhpdGluZyBkdWUg
dG8gbWVtb3J5IHByZXNzdXJlIiwgZ2V0cGlkKCkpOworICAgICAgICAgICAgICAgIHN0b3BSdW5M
b29wKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorI2VuZGlmCisK
ICAgICAgICAgICAgIGF1dG8gbWFpbnRhaW5QYWdlQ2FjaGUgPSBtX2lzU3VzcGVuZGluZyAmJiBo
YXNQYWdlUmVxdWlyaW5nUGFnZUNhY2hlV2hpbGVTdXNwZW5kZWQoKSA/IFdlYkNvcmU6Ok1haW50
YWluUGFnZUNhY2hlOjpZZXMgOiBXZWJDb3JlOjpNYWludGFpblBhZ2VDYWNoZTo6Tm87CiAgICAg
ICAgICAgICBXZWJDb3JlOjpyZWxlYXNlTWVtb3J5KGNyaXRpY2FsLCBzeW5jaHJvbm91cywgbWFp
bnRhaW5QYWdlQ2FjaGUpOwogICAgICAgICB9KTsKQEAgLTQ1Nyw2ICs0NzEsMzIgQEAgYm9vbCBX
ZWJQcm9jZXNzOjpoYXNQYWdlUmVxdWlyaW5nUGFnZUNhY2hlV2hpbGVTdXNwZW5kZWQoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBXZWJQcm9jZXNzOjphcmVBbGxQYWdlc1N1
c3BlbmRlZCgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVl
cygpKSB7CisgICAgICAgIGlmICghcGFnZS0+aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViUHJvY2Vz
czo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIGlzSW5Qcm9jZXNzQ2FjaGUpCit7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGlmIChpc0luUHJvY2Vzc0NhY2hlKSB7CisgICAgICAgIEFTU0VSVCht
X3Byb2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50KTsKKyAgICAgICAgbV9wcm9j
ZXNzVHlwZSA9IFByb2Nlc3NUeXBlOjpDYWNoZWRXZWJDb250ZW50OworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEFTU0VSVChtX3Byb2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpDYWNoZWRXZWJDb250
ZW50KTsKKyAgICAgICAgbV9wcm9jZXNzVHlwZSA9IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50Owor
ICAgIH0KKworICAgIHVwZGF0ZVByb2Nlc3NOYW1lKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShpc0luUHJvY2Vzc0NhY2hlKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlByb2Nlc3M6Om1hcmtJ
c05vTG9uZ2VyUHJld2FybWVkKCkKIHsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBiOWNhMmVlNDE3MDdiYzViYzYyYmIxMWJkNDYyOGVm
YzRiMjcwYzNmLi40OWM0YWMxMjYyYTgwNjU4ZWVjNjU3MTkxMDEzOTczMzU5MWJhNTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTI2Nyw2ICsyNjcsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybVRlcm1pbmF0ZSgpOwogCisgICAgdm9pZCBzZXRJc0lu
UHJvY2Vzc0NhY2hlKGJvb2wpOwogICAgIHZvaWQgbWFya0lzTm9Mb25nZXJQcmV3YXJtZWQoKTsK
IAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5n
Jik7CkBAIC0zNDQsNiArMzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFjdHVhbFByZXBhcmVU
b1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpOwogCiAgICAgYm9v
bCBoYXNQYWdlUmVxdWlyaW5nUGFnZUNhY2hlV2hpbGVTdXNwZW5kZWQoKSBjb25zdDsKKyAgICBi
b29sIGFyZUFsbFBhZ2VzU3VzcGVuZGVkKCkgY29uc3Q7CiAKICAgICB2b2lkIGVuc3VyZUF1dG9t
YXRpb25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcik7CiAgICAg
dm9pZCBkZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpOwpAQCAtNDY1LDcgKzQ2Nyw3IEBA
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNQVU1vbml0b3I+IG1fY3B1
TW9uaXRvcjsKICAgICBPcHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7CiAKLSAgICBlbnVtIGNs
YXNzIFByb2Nlc3NUeXBlIHsgSW5zcGVjdG9yLCBTZXJ2aWNlV29ya2VyLCBQcmV3YXJtZWRXZWJD
b250ZW50LCBXZWJDb250ZW50IH07CisgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7IEluc3Bl
Y3RvciwgU2VydmljZVdvcmtlciwgUHJld2FybWVkV2ViQ29udGVudCwgQ2FjaGVkV2ViQ29udGVu
dCwgV2ViQ29udGVudCB9OwogICAgIFByb2Nlc3NUeXBlIG1fcHJvY2Vzc1R5cGUgeyBQcm9jZXNz
VHlwZTo6V2ViQ29udGVudCB9OwogICAgIFN0cmluZyBtX3VpUHJvY2Vzc05hbWU7CiAgICAgU3Ry
aW5nIG1fc2VjdXJpdHlPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDZmNmNhMzYyZWZjNjI4NmU4OWZmNDZkY2U4MDJkYmNi
ZWZlODc3MjMuLjNkNzNmMmU5Y2M2MjA2YjcxNzdmMmUyZGUwMWFiZTljODZiZDM1NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0x
MTksNiArMTE5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciBwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpCiAgICAg
TWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXIgcG9ydCkKIAorICAgIFNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCBpc0luUHJvY2Vzc0Nh
Y2hlKQogICAgIE1hcmtJc05vTG9uZ2VyUHJld2FybWVkKCkKICAgICBVcGRhdGVBY3RpdmVQYWdl
cygpCiAgICAgR2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZygpIC0+IChWZWN0b3I8U3Ry
aW5nPiBhY3RpdmVPcmlnaW5zKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZTc3ZjcxNTRkYjk0OGU2YmZkMzY5Nzc2
NGMxYTRiOWUyZmQzOTQ3ZC4uZDE2MjUxNjU5OGE3MTgzYWFjMjRiMDBmZTI2MmMyNWJjY2E4N2Uw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCkBAIC0yNDAsNiArMjQwLDkgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNz
TmFtZSgpCiAgICAgY2FzZSBQcm9jZXNzVHlwZTo6UHJld2FybWVkV2ViQ29udGVudDoKICAgICAg
ICAgYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NU
UklORygiJUAgV2ViIENvbnRlbnQgKFByZXdhcm1lZCkiLCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3
ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNT
dHJpbmcgKiltX3VpUHJvY2Vzc05hbWVdOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFByb2Nl
c3NUeXBlOjpDYWNoZWRXZWJDb250ZW50OgorICAgICAgICBhcHBsaWNhdGlvbk5hbWUgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBXZWIgQ29udGVudCAoQ2Fj
aGVkKSIsICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMg
dGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKW1fdWlQcm9jZXNzTmFtZV07Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ6CiAgICAgICAg
IGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJ
TkcoIiVAIFdlYiBDb250ZW50IiwgIlZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRo
ZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopbV91aVBy
b2Nlc3NOYW1lXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjJjYzZhNTEyMGQ3NThhNDI2OWIwYjRmZTlhYzM2OTkz
MjVhYTYzZC4uMWQyZTgxMmMyOWQxMThiY2MwMWNiNDJhMDRkZjNkYjc1NzkwM2ZiMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE5LTAyLTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1BTT05dIEludHJvZHVjZSBhIFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTk0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80Njc5MzM5Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJl
bi4KKworICAgICAgICBVcGRhdGUgQVBJIHRlc3RzIHRvIHR1cm4gb24gdGhlIFdlYkNvbnRlbnQg
UHJvY2VzcyBjYWNoZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisKIDIwMTktMDItMTIgIEppZXdlbiBUYW4g
IDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBGdXJ0aGVyIHJlc3RyaWN0aW5nIHdl
YmFyY2hpdmUgbG9hZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDIyZTFj
ZDU4M2YwNWYxNGRkZGRhNDQ4MWNhOGI3OGM4NmIwMTEyYzQuLmMyNzc4NTAxODU4ZGJlOGI3YzVi
YzU5YzFiZDQ0MGM1NzgzYjYxNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpA
QCAtNDMyLDExICs0MzIsMTggQEAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VzaG93Jywg
ZnVuY3Rpb24oZXZlbnQpIHsKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotVEVTVChQcm9j
ZXNzU3dhcCwgQmFzaWMpCitzdGF0aWMgUmV0YWluUHRyPF9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbj4gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpCiB7CiAgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCkudXNlc1dlYlByb2Nlc3NDYWNoZSA9IFlFUzsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgIHJl
dHVybiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247Cit9CisKK1RFU1QoUHJvY2Vzc1N3YXAsIEJh
c2ljKQoreworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDgxLDkgKzQ4
OCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEJhc2ljKQogCiBURVNUKFByb2Nlc3NTd2FwLCBMb2Fk
QWZ0ZXJQb2xpY3lEZWNpc2lvbikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1By
b2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNz
UG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CkBAIC01MTksOSArNTI0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTG9hZEFmdGVyUG9s
aWN5RGVjaXNpb24pCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEtpbGxXZWJDb250ZW50UHJvY2Vzc0Fm
dGVyU2VydmVyUmVkaXJlY3RQb2xpY3lEZWNpc2lvbikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3
YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAg
YXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
YXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CkBAIC01NzAsOSArNTczLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwg
S2lsbFdlYkNvbnRlbnRQcm9jZXNzQWZ0ZXJTZXJ2ZXJSZWRpcmVjdFBvbGljeURlY2lzaW9uKQog
CiBURVNUKFByb2Nlc3NTd2FwLCBOb1N3YXBwaW5nRm9yZVRMRFBsdXMyKQogewotICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTYwNyw4ICs2MDgsNyBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBOb1N3YXBwaW5nRm9yZVRMRFBsdXMyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBC
YWNrKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC03MTUsOCArNzE1LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIHBhZ2VXaXRoRnJhZ21lbnRUZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgK
IAogVEVTVChQcm9jZXNzU3dhcCwgSGlzdG9yeU5hdmlnYXRpb25Ub0ZyYWdtZW50VVJMKQogewot
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC03NjgsOCArNzY3LDcgQEAgVEVTVChQcm9jZXNzU3dh
cCwgSGlzdG9yeU5hdmlnYXRpb25Ub0ZyYWdtZW50VVJMKQogCiBURVNUKFByb2Nlc3NTd2FwLCBT
dXNwZW5kZWRQYWdlRGllc0FmdGVyQmFja0ZvcndhcmRMaXN0SXRlbUlzR29uZSkKIHsKLSAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1
dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwpAQCAtODAxLDcgKzc5OSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFN1
c3BlbmRlZFBhZ2VEaWVzQWZ0ZXJCYWNrRm9yd2FyZExpc3RJdGVtSXNHb25lKQogICAgIEVYUEVD
VF9ORSh3ZWJraXRQSUQsIGFwcGxlUElEKTsKIAogICAgIC8vIHdlYmtpdC5vcmcgKyBhcHBsZS5j
b20gcHJvY2Vzc2VzLgotICAgIEVYUEVDVF9FUSgyVSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNz
Q291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgyVSwgW3Byb2Nlc3NQb29s
IF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogCiAgICAgW3dl
YlZpZXcgZ29CYWNrXTsgLy8gQmFjayB0byB3ZWJraXQub3JnLgogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CkBAIC04MTAsNyArODA4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwg
U3VzcGVuZGVkUGFnZURpZXNBZnRlckJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0dvbmUpCiAgICAgRVhQ
RUNUX0VRKHdlYmtpdFBJRCwgW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXSk7CiAKICAg
ICAvLyB3ZWJraXQub3JnICsgYXBwbGUuY29tIHByb2Nlc3Nlcy4KLSAgICBFWFBFQ1RfRVEoMlUs
IFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBF
WFBFQ1RfRVEoMlUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJt
ZWRBbmRDYWNoZWRdKTsKIAogICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4yLmh0
bWwiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC04MjEsMTUgKzgx
OSwxNCBAQCBURVNUKFByb2Nlc3NTd2FwLCBTdXNwZW5kZWRQYWdlRGllc0FmdGVyQmFja0Zvcndh
cmRMaXN0SXRlbUlzR29uZSkKICAgICBFWFBFQ1RfRVEod2Via2l0UElELCBbd2ViVmlldyBfd2Vi
UHJvY2Vzc0lkZW50aWZpZXJdKTsKIAogICAgIC8vIGFwcGxlLmNvbSBpcyBub3QgbG9uZ2VyIHBy
ZXNlbnQgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0IGFuZCB0aGVyZSBzaG91bGQgdGhlcmVmb3Jl
IGJlIG5vLXN1c3BlbmRlZCBwYWdlIGZvciBpdC4KLSAgICB3aGlsZSAoW3Byb2Nlc3NQb29sIF93
ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0gPiAxdSkKKyAgICB3aGlsZSAoW3Byb2Nl
c3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0gPiAxdSkK
ICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKIH0KIAogI2lmIFBM
QVRGT1JNKE1BQykKIFRFU1QoUHJvY2Vzc1N3YXAsIFN1c3BlbmRlZFBhZ2VzSW5BY3Rpdml0eU1v
bml0b3IpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTkxNyw4ICs5MTQsNyBAQCBURVNU
KFByb2Nlc3NTd2FwLCBTdXNwZW5kZWRQYWdlc0luQWN0aXZpdHlNb25pdG9yKQogCiBURVNUKFBy
b2Nlc3NTd2FwLCBCYWNrV2l0aG91dFN1c3BlbmRlZFBhZ2UpCiB7Ci0gICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTk3NSw4ICs5NzEsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrV2l0aG91dFN1
c3BlbmRlZFBhZ2UpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEJhY2tOYXZpZ2F0aW9uQWZ0ZXJTZXNz
aW9uUmVzdG9yZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVT
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTAzMiw4ICsxMDI3LDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgQmFja05hdmlnYXRpb25BZnRlclNlc3Npb25SZXN0b3JlKQog
CiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVXaW5kb3dPcGVuTm9PcGVuZXIpCiB7Ci0gICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBh
dXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBh
dXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKQEAgLTEwNzIsOCArMTA2Niw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAs
IENyb3NzU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NP
cmlnaW5CdXRTYW1lU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtMTExMiw4ICsxMTA1LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5C
dXRTYW1lU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NT
aXRlV2luZG93T3BlbldpdGhPcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Q
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lciA9IFlFUzsKICAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTExNTMs
OCArMTE0NSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZVdpbmRvd09wZW5XaXRoT3Bl
bmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBTYW1lU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTE5Miw4ICsxMTgzLDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgU2FtZVNpdGVXaW5kb3dPcGVuTm9PcGVuZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENy
b3NzU2l0ZUJsYW5rVGFyZ2V0V2l0aE9wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBz
T25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
cHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBh
ZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpA
QCAtMTIzMiw4ICsxMjIyLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQmxhbmtUYXJn
ZXRXaXRoT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVCbGFua1RhcmdldElt
cGxpY2l0Tm9PcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9
IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJv
Y2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTEyNzIsOCArMTI2
MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUJsYW5rVGFyZ2V0SW1wbGljaXROb09w
ZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQmxhbmtUYXJnZXROb09wZW5lcikK
IHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
OwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
IAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTMxMiw4ICsxMzAwLDcgQEAgVEVTVChQcm9j
ZXNzU3dhcCwgQ3Jvc3NTaXRlQmxhbmtUYXJnZXROb09wZW5lcikKIAogVEVTVChQcm9jZXNzU3dh
cCwgU2FtZVNpdGVCbGFua1RhcmdldE5vT3BlbmVyKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9
IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CkBAIC0xMzU0LDggKzEzNDEsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTYW1lU2l0ZUJsYW5rVGFy
Z2V0Tm9PcGVuZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0RnJvbU5ld1dl
YlZpZXcpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTEzODgsOCArMTM3NCw3IEBAIFRF
U1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0RnJvbU5ld1dlYlZpZXcpCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5h
dmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0x
NDM1LDggKzE0MjAsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTZXJ2ZXJSZWRpcmVjdCkKIFRFU1Qo
UHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0MikKIHsKICAgICAvLyBUaGlzIHRlc3RzIGEgbG9h
ZCB0aGF0ICpzdGFydHMgb3V0KiB0byB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIHByZXZpb3VzIGxv
YWQsIGJ1dCB0aGVuIHJlZGlyZWN0cyB0byBhIG5ldyBvcmlnaW4uCi0gICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTE0OTMsOCArMTQ3Nyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGly
ZWN0MikKIAogVEVTVChQcm9jZXNzU3dhcCwgVGVybWluYXRlUHJvY2Vzc1JpZ2h0QWZ0ZXJTd2Fw
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xNTMzLDggKzE1MTYsNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciogbGlua1RvV2ViS2l0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQ
cm9jZXNzU3dhcCwgUG9saWN5Q2FuY2VsQWZ0ZXJTZXJ2ZXJSZWRpcmVjdCkKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8g
d2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwpAQCAtMTU4Nyw4ICsxNTY5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgUG9s
aWN5Q2FuY2VsQWZ0ZXJTZXJ2ZXJSZWRpcmVjdCkKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NT
aXRlRG93bmxvYWQpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlF
UzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE2NDgsOCArMTYyOSw3
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzeXN0ZW1QcmV2aWV3Q3Jvc3NPcmlnaW5UZXN0Qnl0ZXMg
PSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9jZXNzU3dhcCwgU2FtZU9yaWdpblN5c3RlbVBy
ZXZpZXcpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE2ODUsOCArMTY2NSw3IEBAIFRF
U1QoUHJvY2Vzc1N3YXAsIFNhbWVPcmlnaW5TeXN0ZW1QcmV2aWV3KQogCiBURVNUKFByb2Nlc3NT
d2FwLCBDcm9zc09yaWdpblN5c3RlbVByZXZpZXcpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTE3MjUsNyArMTcwNCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzT3JpZ2luU3lzdGVt
UHJldmlldykKIGVudW0gY2xhc3MgU2hvdWxkRW5hYmxlUFNPTiB7IE5vLCBZZXMgfTsKIHN0YXRp
YyB2b2lkIHJ1bkNsaWVudFNpZGVSZWRpcmVjdFRlc3QoU2hvdWxkRW5hYmxlUFNPTiBzaG91bGRF
bmFibGVQU09OKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
OwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmln
YXRpb24gPSBzaG91bGRFbmFibGVQU09OID09IFNob3VsZEVuYWJsZVBTT046OlllcyA/IFlFUyA6
IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIApAQCAtMTg2MCw5ICsxODM5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQ2xp
ZW50U2lkZVJlZGlyZWN0V2l0aFBTT04pCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUNs
aWVudFNpZGVSZWRpcmVjdEZyb21GaWxlVVJMKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnBy
ZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKQEAgLTE4OTEsMTUgKzE4NjgsMTQgQEAgVEVTVChQcm9jZXNzU3dhcCwg
Q3Jvc3NTaXRlQ2xpZW50U2lkZVJlZGlyZWN0RnJvbUZpbGVVUkwpCiAgICAgYXV0byBwaWQyID0g
W3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKICAgICBFWFBFQ1RfTkUocGlkMSwgcGlk
Mik7CiAKLSAgICBFWFBFQ1RfRVEoMVUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdu
b3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBFQ1RfRVEoMVUsIFtwcm9jZXNzUG9vbCBfd2ViUHJv
Y2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKICAgICBFWFBFQ1RfVFJVRSh3
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKICAgICBFWFBFQ1RfVFJVRShkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QpOwogfQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUJhY2tBZnRlckNs
aWVudFNpZGVSZWRpcmVjdCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAg
ICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTk3Myw3ICsx
OTQ5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVCYWNrQWZ0ZXJDbGllbnRTaWRlUmVk
aXJlY3QpCiAKIHN0YXRpYyB2b2lkIHJ1bk5hdmlnYXRpb25XaXRoTG9ja2VkSGlzdG9yeVRlc3Qo
U2hvdWxkRW5hYmxlUFNPTiBzaG91bGRFbmFibGVQU09OKQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBzaG91bGRFbmFibGVQU09OID09IFNob3Vs
ZEVuYWJsZVBTT046OlllcyA/IFlFUyA6IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtMjA3Miw4ICsyMDQ4LDcgQEAgd2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKGV2dCkgewogCiBURVNUKFByb2Nlc3NTd2FwLCBTZXNzaW9uU3Rv
cmFnZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjEyOSw4ICsyMTA0LDcgQEAgVEVTVChQ
cm9jZXNzU3dhcCwgU2Vzc2lvblN0b3JhZ2UpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFJldXNlU3Vz
cGVuZGVkUHJvY2VzcykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBb
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNd
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjE5MCw4ICsyMTY0LDcg
QEAgdmFyIG15V29ya2VyID0gbmV3IFdvcmtlcignd29ya2VyLmpzJyk7CiAKIFRFU1QoUHJvY2Vz
c1N3YXAsIFJldXNlU3VzcGVuZGVkUHJvY2Vzc0V2ZW5JZlBhZ2VDYWNoZUZhaWxzKQogewotICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0
byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CkBAIC0yMjQzLDggKzIyMTYsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBS
ZXVzZVN1c3BlbmRlZFByb2Nlc3NFdmVuSWZQYWdlQ2FjaGVGYWlscykKIAogVEVTVChQcm9jZXNz
U3dhcCwgUmV1c2VTdXNwZW5kZWRQcm9jZXNzT25CYWNrRXZlbklmUGFnZUNhY2hlRmFpbHMpCiB7
Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTIyOTIsOCArMjI2NCw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiB3aXRoU3ViZnJhbWVzVGVzdEJ5dGVzID0gUiJQU09OUkVTT1VSQ0UoCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIEhpc3RvcnlJdGVtSURDb25mdXNpb24pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTIzNTgsOCArMjMyOSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEhpc3RvcnlJdGVtSURDb25m
dXNpb24pCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEdvVG9TZWNvbmRJdGVtSW5CYWNrSGlzdG9yeSkK
IHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjQ0NSwxMSArMjQxNSw5IEBAIGVudW0gY2xhc3Mg
UmV0YWluUGFnZUluQnVuZGxlIHsgTm8sIFllcyB9OwogCiB2b2lkIHRlc3RSZXVzZVN1c3BlbmRl
ZFByb2Nlc3NGb3JSZWd1bGFyTmF2aWdhdGlvbihSZXRhaW5QYWdlSW5CdW5kbGUgcmV0YWluUGFn
ZUluQnVuZGxlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107Cisg
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uKCk7CiAgICAgaWYgKHJldGFpblBhZ2VJbkJ1bmRsZSA9PSBSZXRhaW5QYWdlSW5CdW5k
bGU6OlllcykKICAgICAgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRJbmplY3RlZEJ1
bmRsZVVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiVGVzdFdlYktp
dEFQSSIgd2l0aEV4dGVuc2lvbjpAIndrYnVuZGxlIl1dOwotCiAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGlmIChyZXRhaW5QYWdlSW5C
dW5kbGUgPT0gUmV0YWluUGFnZUluQnVuZGxlOjpZZXMpCiAgICAgICAgIFtwcm9jZXNzUG9vbCBf
c2V0T2JqZWN0OkAiQnVuZGxlUmV0YWluUGFnZVBsdWdJbiIgZm9yQnVuZGxlUGFyYW1ldGVyOlRl
c3RXZWJLaXRBUEk6OlV0aWw6OlRlc3RQbHVnSW5DbGFzc05hbWVQYXJhbWV0ZXJdOwpAQCAtMjUy
NSw4ICsyNDkzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG1haW5GcmFtZXNPbmx5U3ViZnJhbWUy
ID0gUiJQU09OUkVTT1VSQ0UoCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE1haW5GcmFtZXNPbmx5KQog
ewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNTcxLDggKzI1MzgsNyBAQCBvbmxvYWQgPSAoKSA9
PiB7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2Vab29tTGV2ZWxBZnRlclN3YXApCiB7Ci0gICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKQEAgLTI2NDgsOSArMjYxNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBu
YXZpZ2F0ZUJlZm9yZVBhZ2VMb2FkRW5kQnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQ
cm9jZXNzU3dhcCwgTmF2aWdhdGVDcm9zc1NpdGVCZWZvcmVQYWdlTG9hZEVuZCkKIHsKLSAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwotICAgIFtwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gc2V0UHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5OllFU107CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNjc5LDggKzI2NDMsNyBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBOYXZpZ2F0ZUNyb3NzU2l0ZUJlZm9yZVBhZ2VMb2FkRW5kKQogCiBURVNUKFBy
b2Nlc3NTd2FwLCBEb1NhbWVTaXRlTmF2aWdhdGlvbkFmdGVyQ3Jvc3NTaXRlUHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwor
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9v
bCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjcyMSw4ICsyNjg0LDcgQEAg
VEVTVChQcm9jZXNzU3dhcCwgRG9TYW1lU2l0ZU5hdmlnYXRpb25BZnRlckNyb3NzU2l0ZVByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFN1c3BlbmRlZFBhZ2VMaW1p
dCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
OwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
IAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjc3MSwxMyArMjczMywxMiBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBTdXNwZW5kZWRQYWdlTGltaXQpCiAgICAgRVhQRUNUX0VRKDV1LCBzZWVuUElE
cy5zaXplKCkpOwogCiAgICAgLy8gQnV0IG5vdCBhbGwgb2YgdGhvc2UgcHJvY2Vzc2VzIHNob3Vs
ZCBzdGlsbCBiZSBhbGl2ZSAoMSB2aXNpYmxlLCBtYXhpbXVtU3VzcGVuZGVkUGFnZUNvdW50IHN1
c3BlbmRlZCkuCi0gICAgRVhQRUNUX0VRKFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdu
b3JpbmdQcmV3YXJtZWRdLCAoMVUgKyBtYXhpbXVtU3VzcGVuZGVkUGFnZUNvdW50KSk7CisgICAg
RVhQRUNUX0VRKFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRB
bmRDYWNoZWRdLCAoMVUgKyBtYXhpbXVtU3VzcGVuZGVkUGFnZUNvdW50KSk7CiB9CiAKIFRFU1Qo
UHJvY2Vzc1N3YXAsIFBhZ2VDYWNoZTEpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmln
YXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTI4MDIs
NyArMjc2Myw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VDYWNoZTEpCiAKICAgICBhdXRvIHBp
ZEFmdGVyTG9hZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogCi0gICAgRVhQ
RUNUX0VRKDF1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVk
XSk7CisgICAgRVhQRUNUX0VRKDF1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9y
aW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29t
L21haW4uaHRtbCJdXTsKIApAQCAtMjgxMiw3ICsyNzczLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwg
UGFnZUNhY2hlMSkKIAogICAgIGF1dG8gcGlkQWZ0ZXJMb2FkMiA9IFt3ZWJWaWV3IF93ZWJQcm9j
ZXNzSWRlbnRpZmllcl07CiAKLSAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJv
Y2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNz
UG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKICAgICBF
WFBFQ1RfTkUocGlkQWZ0ZXJMb2FkMSwgcGlkQWZ0ZXJMb2FkMik7CiAKICAgICBbd2ViVmlldyBn
b0JhY2tdOwpAQCAtMjgyMyw3ICsyNzg0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgUGFnZUNhY2hl
MSkKIAogICAgIGF1dG8gcGlkQWZ0ZXJMb2FkMyA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRp
Zmllcl07CiAKLSAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50
SWdub3JpbmdQcmV3YXJtZWRdKTsKKyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2Vi
UHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKICAgICBFWFBFQ1RfRVEo
cGlkQWZ0ZXJMb2FkMSwgcGlkQWZ0ZXJMb2FkMyk7CiAgICAgRVhQRUNUX0VRKDF1LCBbcmVjZWl2
ZWRNZXNzYWdlcyBjb3VudF0pOwogICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdl
dCgpWzBdIGlzRXF1YWxUb1N0cmluZzpAIldhcyBwZXJzaXN0ZWQiIF0pOwpAQCAtMjgzNyw3ICsy
Nzk4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgUGFnZUNhY2hlMSkKIAogICAgIGF1dG8gcGlkQWZ0
ZXJMb2FkNCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAKLSAgICBFWFBFQ1Rf
RVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRdKTsK
KyAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQ
cmV3YXJtZWRBbmRDYWNoZWRdKTsKICAgICBFWFBFQ1RfRVEocGlkQWZ0ZXJMb2FkMiwgcGlkQWZ0
ZXJMb2FkNCk7CiAgICAgRVhQRUNUX0VRKDJ1LCBbcmVjZWl2ZWRNZXNzYWdlcyBjb3VudF0pOwog
ICAgIEVYUEVDVF9UUlVFKFtyZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdIGlzRXF1YWxUb1N0cmlu
ZzpAIldhcyBwZXJzaXN0ZWQiIF0pOwpAQCAtMjg0Niw5ICsyODA3LDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgUGFnZUNhY2hlMSkKIAogVEVTVChQcm9jZXNzU3dhcCwgTnVtYmVyT2ZQcmV3YXJtZWRQ
cm9jZXNzZXMpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKLSAg
ICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGlj
YWxseTpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjg2Niw3
ICsyODI1LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTnVtYmVyT2ZQcmV3YXJtZWRQcm9jZXNzZXMp
CiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dl
YlByb2Nlc3NDb3VudF0pOwotICAgIEVYUEVDVF9FUSgxdSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9j
ZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgxdSwgW3Byb2Nlc3NQ
b29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVY
UEVDVF9UUlVFKFtwcm9jZXNzUG9vbCBfaGFzUHJld2FybWVkV2ViUHJvY2Vzc10pOwogCiAgICAg
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJwc29uOi8vd3d3Lmdvb2dsZS5jb20vbWFpbi5odG1sIl1dOwpAQCAtMjg3NSw3ICsyODM0
LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTnVtYmVyT2ZQcmV3YXJtZWRQcm9jZXNzZXMpCiAgICAg
ZG9uZSA9IGZhbHNlOwogCiAgICAgRVhQRUNUX0VRKDN1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nl
c3NDb3VudF0pOwotICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291
bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93
ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVYUEVDVF9U
UlVFKFtwcm9jZXNzUG9vbCBfaGFzUHJld2FybWVkV2ViUHJvY2Vzc10pOwogfQogCkBAIC0yODk3
LDggKzI4NTYsNyBAQCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZWhpZGUnLCBmdW5jdGlv
bihldmVudCkgewogCiBURVNUKFByb2Nlc3NTd2FwLCBQYWdlU2hvd0hpZGUpCiB7Ci0gICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBz
ZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHBy
b2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKQEAgLTI5ODksOCArMjk0Nyw3IEBAIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgZnVuY3Rpb24oZXZlbnQpIHsKIAogVEVTVChQcm9jZXNzU3dhcCwgTG9hZFVubG9h
ZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
OwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
IAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzA2Niw4ICszMDIzLDcgQEAgVEVTVChQcm9j
ZXNzU3dhcCwgTG9hZFVubG9hZCkKIAogVEVTVChQcm9jZXNzU3dhcCwgV2ViSW5zcGVjdG9yKQog
ewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0zMTI5LDggKzMwODUsNyBAQCBsaW5rLmhyZWYg
PSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOwogCiBURVNUKFByb2Nlc3NTd2FwLCBTYW1lT3Jp
Z2luQmxvYk5hdmlnYXRpb24pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
biA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dL
UHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTMxNjQsOCAr
MzExOSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVPcmlnaW5CbG9iTmF2aWdhdGlvbikKIAog
VEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5CbG9iTmF2aWdhdGlvbikKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8g
d2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwpAQCAtMzIyMyw4ICszMTc3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jv
c3NPcmlnaW5CbG9iTmF2aWdhdGlvbikKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVUb0Fi
b3V0QmxhbmspCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsK
KyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bv
b2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTMyNTcsOCArMzIxMCw3IEBA
IFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlVG9BYm91dEJsYW5rKQogCiBURVNUKFByb2Nlc3NT
d2FwLCBOYXZpZ2F0ZVRvRGF0YVVSTCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZp
Z2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5T
KFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzI5
MSw5ICszMjQzLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVUb0RhdGFVUkwpCiAKIFRF
U1QoUHJvY2Vzc1N3YXAsIFByb2Nlc3NSZXVzZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbjpZRVNdOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0QWx3YXlz
S2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8g
d2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwpAQCAtMzMzOCw5ICszMjg4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgUHJv
Y2Vzc1JldXNlKQogCiBURVNUKFByb2Nlc3NTd2FwLCBQcm9jZXNzUmV1c2VlVExEUGx1czIpCiB7
Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKLSAgICBbcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIHNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXM6WUVT
XTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTMzODUsOCArMzMzMyw3
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFByb2Nlc3NSZXVzZWVUTERQbHVzMikKIAogVEVTVChQcm9j
ZXNzU3dhcCwgQ29uY3VycmVudEhpc3RvcnlOYXZpZ2F0aW9ucykKIHsKLSAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJv
Y2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vz
c1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmll
d0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwpAQCAtMzQ1NSw4ICszNDAyLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29uY3VycmVu
dEhpc3RvcnlOYXZpZ2F0aW9ucykKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVUb0ludmFs
aWRVUkwpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTM1MDcsOCArMzQ1Myw3IEBAIG9u
cGFnZXNob3cgPSBmdW5jdGlvbihldmVudCkgewogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0
ZVRvRGF0YVVSTFRoZW5CYWNrKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
LnBhZ2VDYWNoZUVuYWJsZWQgPSBOTzsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhb
W1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTM1NDMsOCArMzQ4OCw3IEBAIFRFU1QoUHJvY2Vz
c1N3YXAsIE5hdmlnYXRlVG9EYXRhVVJMVGhlbkJhY2spCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5h
dmlnYXRlQ3Jvc3NTaXRlV2l0aFBhZ2VDYWNoZURpc2FibGVkKQogewotICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnBhZ2VDYWNoZUVuYWJsZWQgPSBOTzsKICAgICBhdXRvIHByb2Nl
c3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTM2MzQsOCArMzU3
OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBuYXZpZ2F0ZUJhY2tGcm9tSlNCeXRlcyA9IFIiUFNP
TlJFU09VUkNFKAogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvQ3Jvc3NTaXRlVGhlbkJh
Y2tGcm9tSlMpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsK
KyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucGFnZUNhY2hl
RW5hYmxlZCA9IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIApAQCAtMzY3NSw4ICszNjE4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgTmF2
aWdhdGVUb0Nyb3NzU2l0ZVRoZW5CYWNrRnJvbUpTKQogCiBURVNUKFByb2Nlc3NTd2FwLCBDbG9z
ZVBhZ2VBZnRlckNyb3NzU2l0ZVByb3Zpc2lvbmFsTG9hZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtMzczNCw4ICszNjc2LDcgQEAgQGVuZAogCiBURVNUKFByb2Nlc3NTd2FwLCBMb2Fk
aW5nU3RhdGVBZnRlclBvbGljeURlY2lzaW9uKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBw
c29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFk
b3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBA
IC0zOTQwLDkgKzM4ODEsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBPcGVuZXJMaW5rQWZ0ZXJBUElD
b250cm9sbGVkUHJvY2Vzc1N3YXBwaW5nT2ZPcGVuZWUpCiBlbnVtIGNsYXNzIEV4cGVjdFN3YXAg
eyBObywgWWVzIH07CiBzdGF0aWMgdm9pZCBydW5Qcm9jZXNzU3dhcER1ZVRvUmVsYXRlZFdlYlZp
ZXdUZXN0KE5TVVJMKiByZWxhdGVkVmlld1VSTCwgTlNVUkwqIHRhcmdldFVSTCwgRXhwZWN0U3dh
cCBleHBlY3RTd2FwKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZ
RVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2Vz
QXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXcxQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CkBAIC0zOTk4LDkgKzM5MzcsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOb1Byb2Nlc3NTd2FwRHVl
VG9SZWxhdGVkVmlldykKIAogVEVTVChQcm9jZXNzU3dhcCwgVGVybWluYXRlZFN1c3BlbmRlZFBh
Z2VQcm9jZXNzKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7
Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJvY2Vzc2VzQXV0
b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBz
b25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRv
cHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAg
LTQwNjMsOCArNDAwMCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFRlcm1pbmF0ZWRTdXNwZW5kZWRQ
YWdlUHJvY2VzcykKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVCYWNrQW5kRm9ydGgpCiB7
Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsK
ICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
ICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQxMTUsOCArNDA1MSw3IEBAIFRFU1QoUHJvY2Vz
c1N3YXAsIE5hdmlnYXRlQmFja0FuZEZvcnRoKQogCiBURVNUKFByb2Nlc3NTd2FwLCBTd2FwT25M
b2FkSFRNTFN0cmluZykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0g
WUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDE1OSw5ICs0MDk0
LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU3dhcE9uTG9hZEhUTUxTdHJpbmcpCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIFVzZVByZXdhcm1lZFByb2Nlc3NBZnRlclRlcm1pbmF0aW5nTmV0d29ya1Byb2Nl
c3MpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNh
bGx5ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKQEAgLTQxOTUsOCArNDEyOCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFVzZVByZXdh
cm1lZFByb2Nlc3NBZnRlclRlcm1pbmF0aW5nTmV0d29ya1Byb2Nlc3MpCiAKIFRFU1QoUHJvY2Vz
c1N3YXAsIFVzZVNlc3Npb25Db29raWVzQWZ0ZXJQcm9jZXNzU3dhcEluUHJpdmF0ZUJyb3dzaW5n
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIFJldGFpblB0cjxXS1dlYnNpdGVEYXRhU3RvcmU+IGVwaGVtZXJhbFN0b3JlID0gW1dL
V2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKIApAQCAtNDI1NSw4ICs0
MTg3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVXNlU2Vzc2lvbkNvb2tpZXNBZnRlclByb2Nlc3NT
d2FwSW5Qcml2YXRlQnJvd3NpbmcpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFRlcm1pbmF0ZVByb2Nl
c3NBZnRlclByb2Nlc3NTd2FwKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
OllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00MzA5LDggKzQy
NDAsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBUZXJtaW5hdGVQcm9jZXNzQWZ0ZXJQcm9jZXNzU3dh
cCkKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVDcm9zc09yaWdpbldpdGhPcGVuZWUpCiB7
Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQzODcsOCArNDMxNyw3IEBAIGZ1bmN0aW9uIHNhdmVP
cGVuZWUoKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUNyb3NzT3JpZ2luV2l0aE9wZW5l
cikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
OwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10g
X2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
IAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDUxNiw4ICs0NDQ1LDcgQEAgVEVTVChQcm9j
ZXNzU3dhcCwgTmF2aWdhdGVDcm9zc09yaWdpbldpdGhPcGVuZXIpCiAKIFRFU1QoUHJvY2Vzc1N3
YXAsIEdvQmFja1RvU3VzcGVuZGVkUGFnZVdpdGhNYWluRnJhbWVJRFRoYXRJc05vdE9uZSkKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAg
IGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDYwNyw4ICs0NTM1LDcgQEAgYm9keSB7CiAKIFRFU1Qo
UHJvY2Vzc1N3YXAsIFNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24pCiB7Ci0gICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTQ2ODcsOCArNDYxNCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRCbG9j
a2luZ0FmdGVyUHJvY2Vzc1N3YXApCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
bjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDgxMCwxMCAr
NDczNiw3IEBAIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1
ZX0pOwogCiBURVNUKFByb2Nlc3NTd2FwLCBHZXRVc2VyTWVkaWFDYXB0dXJlU3RhdGUpCiB7Ci0g
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVT
OwotCisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nl
c3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362026</attachid>
            <date>2019-02-14 09:24:19 -0800</date>
            <delta_ts>2019-02-14 11:06:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194594-20190214092417.patch</filename>
            <type>text/plain</type>
            <size>111873</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk5ZjQ4MWQxMjA4M2Zm
ZGI5MjAyNDEwYzMzOWIyNmQ4ZDFkYmM2NC4uMDM5NzAwZGVjYzBiOWY2ODdhZjQxODI4YjgzMDhk
YTAyMDYxNWM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAyLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIEludHJvZHVjZSBh
IFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc5MzM5
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBVcGRhdGUg
bG9jYWxpemFibGUgc3RyaW5ncy4KKworICAgICAgICAqIGVuLmxwcm9qL0xvY2FsaXphYmxlLnN0
cmluZ3M6CisKIDIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgbG9jYWxpemFibGUgc3RyaW5ncy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggYzczZmQ3ZWYzYWRiYTI4MmRhZmM2OGRkMzhmMDJlMTdiZjg0MWIyNS4uMTlmMGM3M2UxMGYy
M2YwNGQxOTg1OTg5YzJjYmFkMDI4NDQxMjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYgQEAK
KzIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBb
UFNPTl0gSW50cm9kdWNlIGEgV2ViQ29udGVudCBQcm9jZXNzIGNhY2hlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ1OTQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ2NzkzMzk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgor
CisgICAgICAgIEludHJvZHVjZSBhIFdlYkNvbnRlbnQgUHJvY2VzcyBjYWNoZSB0byByZWR1Y2Ug
dGhlIG51bWJlciBvZiBwcm9jZXNzIGxhdW5jaGVzIHdoZW4KKyAgICAgICAgcHJvY2VzcyBzd2Fw
IG9uIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwgYW5kIHRvIHJlZHVjZSB0aGUgcG93ZXIgY29zdCBv
ZiB0aGUgZmVhdHVyZS4KKworICAgICAgICBJZiBhIFdlYlByb2Nlc3MgbG9hZGVkIHBhZ2VzIGZy
b20gYSBzaW5nbGUgcmVnaXN0cmFibGUgZG9tYWluIHRoZW4gaXQgaXMgZWxpZ2libGUKKyAgICAg
ICAgZm9yIHRoZSBjYWNoZS4gV2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIG5hdmlnYXRpb24gdG8g
YSBuZXcgcmVnaXN0cmFibGUgZG9tYWluLCB3ZQorICAgICAgICBub3cgYXR0ZW1wdCB0byByZXRy
aWV2ZSBhIHByb2Nlc3MgZnJvbSB0aGUgY2FjaGUgZm9yIHRoZSBkb21haW4gaW4gcXVlc3Rpb24g
aW5zdGVhZAorICAgICAgICBvZiBhbHdheXMgbGF1bmNoaW5nIGEgbmV3IG9uZS4KKworICAgICAg
ICBUaGUgV2ViUHJvY2VzcyBjYWNoZSBjdXJyZW50bHkgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmli
dXRlczoKKyAgICAgICAgLSBJdCBtYXkgY29udGFpbnMgNCBwcm9jZXNzZXMgcGVyIEdCIG9mIFJB
TSB0aGUgbWFjaGluZSBoYXMsIHVwIHRvIDMwIHByb2Nlc3Nlcy4KKyAgICAgICAgLSBXZWJQcm9j
ZXNzZXMgYXV0b21hdGljYWxseSBnZXQgZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBhZnRlciAzMCBt
aW51dGVzLgorICAgICAgICAtIElmIHRoZSBhcHBsaWNhdGlvbiBpcyBubyBsb25nZXIgdGhlIGFj
dGl2ZSBhcHAsIHRoZW4gdGhlIGNhY2hlIHdpbGwgZ2V0IGNsZWFyZWQKKyAgICAgICAgICBhZnRl
ciA1IG1pbnV0ZXMuCisgICAgICAgIC0gV2ViUHJvY2Vzc2VzIHRoYXQgYXJlIGluIHRoZSBjYWNo
ZSBhcmUgcmVwb3J0ZWQgYXMgIihDYWNoZWQpIiBpbiBBY3Rpdml0eSBNb25pdG9yLgorCisgICAg
ICAgIFRoZSBXZWJQcm9jZXNzIGNhY2hlIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBieSBkZWZhdWx0
IGFuZCBjYW4gYnkgZW5hYmxlZCBieSB0aGUKKyAgICAgICAgY2xpZW50IHZpYSBTUEkuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAg
ICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Omxhc3RQcm9jZXNzSWRlbnRpZmllciBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldExhc3RQcm9jZXNzSWRl
bnRpZmllcik6CisgICAgICAgIEFkZCBuZXcgbGFzdFByb2Nlc3NJZGVudGlmaWVyIGRhdGEgbWVt
YmVyIHRoYXQgcmVmbGVjdHMgd2hpY2ggcHJvY2VzcyB0aGlzIGl0ZW0KKyAgICAgICAgd2FzIGxh
c3QgbG9hZGVkIGluLiBJdCBpcyBub3JtYWxseSBpZGVudGljYWwgdG8gdGhlIGlkZW50aWZpZXIg
b2YgdGhlIHByb2Nlc3MKKyAgICAgICAgdGhhdCBjcmVhdGVkIHRoZSBpdGVtIGJ1dCBpdCBnZXRz
IG92ZXJyaWRlbiBpbiBjYXNlIG9mIGNyb3NzLXNpdGUgY2xpZW50LXNpZGUKKyAgICAgICAgcmVk
aXJlY3QsIHNpbmNlIGEgbmV3IHByb2Nlc3MgdGFrZXMgb3ZlciB0aGUgaXRlbSBpbiB0aGlzIGNh
c2UuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgQWRkIG5ldyBzb3VyY2UgZmls
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcDoKKyAg
ICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKToKKyAgICAg
ICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VzV2ViUHJvY2Vzc0NhY2hlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRVc2VzV2ViUHJv
Y2Vzc0NhY2hlOl0pOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gdXNl
c1dlYlByb2Nlc3NDYWNoZV0pOgorICAgICAgICBBZGQgbmV3IFNQSSB0byBlbmFibGUgdGhlIFdl
YlByb2Nlc3MgY2FjaGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9y
aW5nUHJld2FybWVkQW5kQ2FjaGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICBBZGQgbmV3IFNQSSBmb3IgdGVzdGluZyB3
aGljaCByZXR1cm5zIHRoZSBudW1iZXIgb2YgV2ViUHJvY2Vzc2VzIGlnbm9yaW5nCisgICAgICAg
IGJvdGggcHJld2FybWVkIGFuZCBjYWNoZWQgb25lcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6CisgICAgICAg
IEFkZCBhcHBsaWNhdGlvbiBhY3RpdmUgc3RhdGUgb2JzZXJ2ZXJzIGFzIHRoZSBXZWJQcm9jZXNz
IGNhY2hlIGdldHMgY2xlYXJlZAorICAgICAgICB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZXNpZ25z
IGFjdGl2ZSBzdGF0ZSBmb3IgbW9yZSB0aGFuIDUgbWludXRlcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIFdoZW4gZG9pbmcgYSBsb2FkIGlu
IGEgbmV3IHByb2Nlc3Mgd2l0aCB0aGUgQmFja0ZvcndhcmRMaXN0IGxvY2tlZCAoaS5lLiBjbGll
bnQtc2lkZQorICAgICAgICByZWRpcmVjdCksIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIGxhc3Qg
cHJvY2VzcyBpZGVudGlmaWVyIGZvciB0aGUgQmFja0ZvcndhcmRMaXN0SXRlbS4KKyAgICAgICAg
VGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgbG9naWMgaW4gV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NGb3JOYXZpZ2F0aW9uKCkgcmVsaWVzIG9uCisgICAgICAgIHRoaXMgaWRlbnRpZmllciB0
byBzZWxlY3Qgd2hpY2ggcHJvY2VzcyB0byBkbyB0aGUgaGlzdG9yeSBuYXZpZ2F0aW9uIGludG8s
IGFuZCB3ZSB3YW50CisgICAgICAgIHRvIGRvIHRoZSBsb2FkIGluIHRoZSBwb3N0LXJlZGlyZWN0
IHByb2Nlc3MsIG5vdCB0aGUgcHJlLXJlZGlyZWN0IG9uZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICBUZWxsIHRoZSBXZWJQ
cm9jZXNzIHdoZW5ldmVyIGEgbWFpbiBmcmFtZSBwcm92aXNpb25hbCBsb2FkIGlzIHN0YXJ0ZWQs
IHByb3ZpZGluZyB0aGUgVVJMLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNo
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OldlYlByb2Nl
c3NDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZU1heGltdW1TaXplKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NDYWNoZTo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NDYWNoZTo6ZXZpY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp+Q2FjaGVkUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6dGFrZVByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OmV2aWN0aW9u
VGltZXJGaXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjptYXhpbXVtU2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6cHJvY2Vzcyk6CisgICAgICAgIEFk
ZCBwcm9jZXNzIGNhY2hlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgor
ICAgICAgICBXZWJQcm9jZXNzQ2FjaGUgaXMgc3RvcmVkIG9uIHRoZSBXZWJQcm9jZXNzUG9vbCB2
aWEgbV93ZWJQcm9jZXNzQ2FjaGUgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIENsZWFyIHRoZSBXZWJQcm9j
ZXNzIGNhY2hlIGluIHRoZSBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpzZXRBcHBsaWNhdGlvbklzQWN0aXZlKToKKyAgICAgICAgTm90aWZ5IHRoZSBXZWJQ
cm9jZXNzQ2FjaGUgd2hlbmV2ZXIgdGhlIGFwcGxpY2F0aW9uJ3MgYWN0aXZlIHN0YXRlIGNoYW5n
ZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgor
ICAgICAgICBJZiB0aGUgc3RhdGUgb2YgUFNPTiBjaGFuZ2VzIHZpYSB0aGUgZXhwZXJpbWVudGFs
IGZlYXR1cmVzIG1lbnUsIGR5bmFtaWNhbGx5CisgICAgICAgIHVwZGF0ZSB0aGUgV2ViUHJvY2Vz
c0NhY2hlJ3Mgc2l6ZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgY2FjaGUgaXMgZGlzYWJs
ZWQKKyAgICAgICAgd2hlbiBQU09OIGlzIGRpc2FibGVkLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmcpOgorICAgICAgICBDbGVh
ciB0aGUgV2ViUHJvY2VzcyBjYWNoZSBvbiBtZW1vcnkgcHJlc3N1cmUuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgorICAg
ICAgICBRdWVyeSB0aGUgV2ViUHJvY2Vzc0NhY2hlIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGNyZWF0
ZSBhIG5ldyBXZWJQcm9jZXNzIGZvciBhIGNyb3NzLXNpdGUKKyAgICAgICAgbmF2aWdhdGlvbi4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZmluZFJldXNhYmxlU3VzcGVuZGVk
UGFnZVByb2Nlc3MpOgorICAgICAgICBUaGlzIGxvZ2ljIHdhcyBzcGxpdCBvdXQgb2YgcHJvY2Vz
c0Zvck5hdmlnYXRpb25JbnRlcm5hbCgpIHRvIHJlZHVjZSB0aGUgc2l6ZQorICAgICAgICBvZiB0
aGUgbWV0aG9kLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZSk6CisgICAgICAgIFVwZGF0ZSB0aGUg
aXNJblByb2Nlc3NDYWNoZSBmbGFnIG9uIHRoZSBXZWJQcm9jZXNzUHJveHkgYW5kIHNlbmQgYW4g
SVBDIHRvIHRoZSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3Mgc28gdGhhdCBpdCBjYW4gdXBk
YXRlIGl0cyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3IuCisgICAgICAgIFdlIGFsc28gbmVlZCB0
byBzdG9wIGhvbGRpbmcgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBXZWJQcm9jZXNzUG9vbCB3
aGVuZXZlciB0aGUgcHJvY2VzcworICAgICAgICBpcyBpbiB0aGUgY2FjaGUsIHNpbWlsYXJseSB0
byB3aGF0IHdlIGRvIGZvciBwcmUtd2FybWVkIHByb2Nlc3NlcywgZ2l2ZW4gdGhhdCBzdWNoIHBy
b2Nlc3NlcworICAgICAgICBzaG91bGQgbm90IGtlZXAgdGhlIHByb2Nlc3MgcG9vbCBhbGl2ZS4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZSk6
CisgICAgICAgIEFzc2VydCB0aGF0IHdlIG5ldmVyIHRyeSB0byBhZGQgYSBwYWdlIHRvIGEgY2Fj
aGVkIHByb2Nlc3MsIGl0IHNob3VsZCBiZSB0YWtlbiBvdXQgb2YgdGhlCisgICAgICAgIGNhY2hl
IGJlZm9yZSB1c2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92
aXNpb25hbFBhZ2VXaXRoSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICBJ
biBjYXNlIG9mIGNsaWVudC1zaWRlIHJlZGlyZWN0cywgdGhlIHByZXZpb3VzIHByb2Nlc3Mgd291
bGQgc29tZXRpbWVzIHNlbmQgYW4gSVBDIGNhdXNpbmcKKyAgICAgICAgdGhlIFVJUHJvY2Vzcycg
YmFja2ZvcndhcmQgbGlzdCBpdGVtIHRvIGdldCB1cGRhdGVkIHdpdGggdGhlIHByZS1yZWRpcmVj
dCBVUkwgYWZ0ZXIgd2UndmUKKyAgICAgICAgYWxyZWFkeSByZWRpcmVjdGVkLiBUaGlzIHByZXZp
b3VzbHkgd291bGQgYmUgdW5saWtlbHkgdG8gb2NjdXIgYmVjYXVzZSB3ZSBkbyBub3Qgc3VzcGVu
ZAorICAgICAgICBjbGllbnQtcmVkaXJlY3QgcGFnZXMgYW5kIHRoZWlyIHByb2Nlc3Mgd291bGQg
bm9ybWFsbHkgZXhpdCBiZWZvcmUgZ2V0dGluZyBhIGNoYW5jZSB0byBzZW5kCisgICAgICAgIHRo
ZSBJUEMuIEhvd2V2ZXIsIHdpdGggdGhlIHByb2Nlc3MgY2FjaGUsIHRoZSBidWcgYmVjYW1lIG9i
dmlvdXMgYXMgdGhlIHByb2Nlc3Mgd291bGQgc3RheQorICAgICAgICBhbGl2ZSBhbmQgc2VuZCB1
cCB0aGUgImJhZCIgSVBDLiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ugbm93IG9ubHkgbGV0IHRo
ZSBJUEMgdXBkYXRlIHRoZQorICAgICAgICBpdGVtIGlmIHRoZSBpdGVtJ3MgcGFnZSBpcyAoc3Rp
bGwpIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvY2Vzcy4gSW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdh
bnQKKyAgICAgICAgdG8gdXBkYXRlIHRoZSBJUEMgc28gdGhhdCBpdCBnZXRzIHNlbnQgdG8gdGhl
IFdlYlBhZ2VQcm94eSBpbnN0ZWFkIG9mIHRoZSBXZWJQcm9jZXNzUHJveHkuCisKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xh
dW5jaCk6CisgICAgICAgIElmIGEgY2FjaGVkIFdlYlByb2Nlc3MgY3Jhc2hlcywgcmVtb3ZlIGl0
IGZyb20gdGhlIGNhY2hlIHNvIHRoYXQgd2UgZG8gbm90IGF0dGVtcHQgdG8gdXNlCisgICAgICAg
IGl0IGZvciBhIGxvYWQgbGF0ZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUgY29uc3QpOgorICAgICAgICBPbmx5IGNhY2hl
IFdlYlByb2Nlc3NlcyB0aGF0IGhhdmUgbG9hZGVkIGEgc2luZ2xlIHJlZ2lzdHJhYmxlIGRvbWFp
bi4gQWxzbyBwcmV2ZW50IGNhY2hpbmcKKyAgICAgICAgZm9yIHNlcnZpY2Ugd29ya2VyIGFuZCBp
bnNwZWN0b3IgcHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
bWF5YmVTaHV0RG93bik6CisgICAgICAgIElmIHRoZSBwcm9jZXNzIGlzIGNhY2hlYWJsZSwgYWRk
IGl0IHRvIHRoZSBjYWNoZSBpbnN0ZWFkIG9mIHNodXR0aW5nIGl0IGRvd24gcmlnaHQgYXdheS4K
KworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUF1eGlsaWFy
eVByb2Nlc3MpOgorICAgICAgICBNYWtlIHN1cmUgd2UgZG8gbm90IGF0dGVtcHQgdG8gdGVybWlu
YXRlIGEgcHJvY2Vzc2VzIHRoYXQgaXMgaW4gdGhlIGNhY2hlLgorCisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUpOgor
ICAgICAgICBXaGVuZXZlciBhIG1haW4gZnJhbWUgcHJvdmlzaW9uYWwgbG9hZCBzdGFydHMsIG1h
a2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHByb2Nlc3MncyBhc3NvY2lhdGVkCisgICAgICAgIHJlZ2lz
dHJhYmxlIGRvbWFpbi4gbnVsbG9wdCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBhc3NvY2lh
dGVkIGRvbWFpbiB5ZXQuIE51bGwgc3RyaW5nCisgICAgICAgIGluZGljYXRlcyB0aGF0IHRoZSBw
cm9jZXNzIGlzIGFzc29jaWF0ZWQgd2l0aCBzZXZlcmFsIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQg
aXMgdGhlcmVmb3JlCisgICAgICAgIG5vdCBlbGlnaWJsZSBmb3IgY2FjaGluZy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpyZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6aXNJblByb2Nlc3NDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6cHJvdmlzaW9uYWxQYWdlQ291bnQgY29uc3QpOgorICAgICAgICBB
ZGQgY29udmVuaWVuY2UgZ2V0dGVycy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzIHRvIHByb2plY3QuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzZXRJc0luUHJvY2Vzc0NhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKToKKyAgICAgICAgVXBkYXRlIHRoZSBX
ZWJQcm9jZXNzJyBuYW1lIGluIEFjdGl2aXR5IE1vbml0b3Igd2hlbmV2ZXIgaXQgZ29lcyBpbnRv
IG9yIG91dCBvZiB0aGUgV2ViUHJvY2VzcworICAgICAgICBjYWNoZS4KKwogMjAxOS0wMi0xMyAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmNyeXB0
ZWQgUERGcyBpbnNpZGUgPGVtYmVkPiBvciA8b2JqZWN0PiBjcmFzaCB0aGUgV2ViIENvbnRlbnQg
cHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUu
c3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5k
ZXggZmJlMjk5ZWUyYTI0YTIzYjc1M2IxMjYwN2NlZDI1NmQwZWQxYzBlYS4uZjE0NDE5MTgzNWMz
OTBjMjFkZTViZGYxYzk2NWI2YjFhOTVhYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJv
ai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00Niw2ICs0Niw5IEBACiAvKiBWaXNpYmxlIG5hbWUg
b2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUu
ICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogVmlzaWJsZSBu
YW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBu
YW1lLiAqLworIiVAIFdlYiBDb250ZW50IChDYWNoZWQpIiA9ICIlQCBXZWIgQ29udGVudCAoQ2Fj
aGVkKSI7CisKIC8qIFZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVu
dCBpcyB0aGUgYXBwbGljYXRpb24gbmFtZS4gKi8KICIlQCBXZWIgQ29udGVudCAoUHJld2FybWVk
KSIgPSAiJUAgV2ViIENvbnRlbnQgKFByZXdhcm1lZCkiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDAzYjQzZjFjOTdiMWViODdk
ZGMwZjQ0MTUzZWM4MjhmNWNlNDQ0OTguLjlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQy
ZGZmMzk2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCkBAIC00Myw2ICs0Myw3IEBAIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0CiBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQog
ICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpKQogICAg
ICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9pdGVt
U3RhdGUuaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJlc3VsdCA9
IGFsbEl0ZW1zKCkuYWRkKG1faXRlbVN0YXRlLmlkZW50aWZpZXIsIHRoaXMpOwogICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggYmZmMGM4ODIwNDFmNmE5YWE4MzMy
MTY2ZmQ3YjM3N2VjM2YxYjU4My4uODcyZWYxODA5NWQxOGNjM2E5YzVlNzQ2M2QzMGU3ZjYxNDg3
MmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aApAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlJiBpdGVtU3RhdGUoKSB7IHJldHVybiBtX2l0ZW1TdGF0ZTsgfQogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKKyAgICBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xh
c3RQcm9jZXNzSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVy
KGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFBy
b2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCiAgICAgdm9pZCBzZXRQYWdlU3RhdGUo
UGFnZVN0YXRlIHBhZ2VTdGF0ZSkgeyBtX2l0ZW1TdGF0ZS5wYWdlU3RhdGUgPSBXVEZNb3ZlKHBh
Z2VTdGF0ZSk7IH0KICAgICBjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbVN0YXRlLnBhZ2VTdGF0ZTsgfQogCkBAIC04NCw2ICs4Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAgICAgdWludDY0
X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0UHJvY2Vz
c0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVk
UGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDY2NzNmM2RmODE3NWI0N2U0ZDVkNzA0NTk2MTA5
ZGFiNWMyMzY4NWYuLjU5Y2VmODNhNTIzOWVlYTBjYTE5N2Y2OGNiMzcyMDY3Yjk3OWUwMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtMjc3LDYgKzI3Nyw3IEBAIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAogVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5jcHAKIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKK1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAKIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggZDE3OTc4
ZTVlNjQxMTAxMDhmOGYxMjBmNmRmMGRkY2MxMmI3ODQ4My4uMjNjZjAzNTE5ODk1YjlkMzhjNDJi
YjA5OTQ0YjQ1NzI1YTY2NTlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEyNCw2ICsx
MjQsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nl
c3NlcyA9IHRoaXMtPm1fYWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczsKICAgICBj
b3B5LT5tX3Byb2Nlc3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXIgPSB0aGlzLT5tX3Byb2Nl
c3NTd2Fwc09uV2luZG93T3BlbldpdGhPcGVuZXI7CiAgICAgY29weS0+bV9pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50ID0gdGhpcy0+bV9pc0F1dG9tYXRpY1Byb2Nlc3NX
YXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGNvcHktPm1fdXNlc1dlYlByb2Nlc3NDYWNoZSA9
IHRoaXMtPm1fdXNlc1dlYlByb2Nlc3NDYWNoZTsKICNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdP
UktJTkcpCiAgICAgY29weS0+bV93aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+bV93
aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXgg
ZTNhNmE3NzI1NjliNjgzMDhhNTczMDAwNmJjMTk4MzdlOWJkNDYwOC4uYTAxNjYxMmM2OWM3Mzdl
MjgwZDI4ODBiY2IxMTJmNjliZTg3YWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNjcsNiAr
NjcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ1NldEJ5
Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gISFtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFi
bGVkQnlDbGllbnQ7IH0KICAgICB2b2lkIHNldElzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFi
bGVkKGJvb2wgdmFsdWUpIHsgbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xp
ZW50ID0gdmFsdWU7IH0KIAorICAgIHZvaWQgc2V0VXNlc1dlYlByb2Nlc3NDYWNoZShib29sIHZh
bHVlKSB7IG1fdXNlc1dlYlByb2Nlc3NDYWNoZSA9IHZhbHVlOyB9CisgICAgYm9vbCB1c2VzV2Vi
UHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91c2VzV2ViUHJvY2Vzc0NhY2hlOyB9CisK
ICAgICBib29sIGNsaWVudFdvdWxkQmVuZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nl
c3NQcmV3YXJtaW5nOyB9CiAgICAgdm9pZCBzZXRDbGllbnRXb3VsZEJlbmVmaXRGcm9tQXV0b21h
dGljUHJvY2Vzc1ByZXdhcm1pbmcoYm9vbCB2YWx1ZSkgeyBtX2NsaWVudFdvdWxkQmVuZWZpdEZy
b21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyA9IHZhbHVlOyB9CiAKQEAgLTIyMyw2ICsyMjYs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vz
c2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9w
ZW5lciB7IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc0F1dG9tYXRpY1Byb2Nlc3NX
YXJtaW5nRW5hYmxlZEJ5Q2xpZW50OworICAgIGJvb2wgbV91c2VzV2ViUHJvY2Vzc0NhY2hlIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nl
c3NQcmV3YXJtaW5nIHsgZmFsc2UgfTsKICAgICBXVEY6OlN0cmluZyBtX2N1c3RvbVdlYkNvbnRl
bnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsKICAgICBib29sIG1faXNKSVRFbmFibGVkIHsgdHJ1
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAppbmRleCAzMzhjMGRkZDc2OTZjMzJkNWQ1YzBhZTFk
YTg2NWJmMzI1YzFiMzdlLi4xNzY1MzE0MmRmNjdmNGYzYmVlMjkxMjU0NjVlNDE4ZGU2Njg3Mjc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmLmNwcApAQCAtMTg4LDYgKzE4OCwxNiBAQCB2b2lkIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25TZXRQcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkoV0tDb250
ZXh0Q29uZmlndXJhdAogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0SXNBdXRvbWF0aWNQ
cm9jZXNzV2FybWluZ0VuYWJsZWQocHJld2FybXMpOwogfQogCitib29sIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25Vc2VzV2ViUHJvY2Vzc0NhY2hlKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT51c2VzV2Vi
UHJvY2Vzc0NhY2hlKCk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNldFVzZXNX
ZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBi
b29sIHVzZXMpCit7CisgICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRVc2VzV2ViUHJvY2Vz
c0NhY2hlKHVzZXMpOworfQorCiBib29sIFdLQ29udGV4dENvbmZpZ3VyYXRpb25BbHdheXNLZWVw
QW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbikKIHsKICAgICByZXR1cm4gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5hbHdheXNLZWVw
QW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmgKaW5kZXggYWQzZTdh
MTcyZjgwMzU0ZWNhOTgyNDAzYTQ5ZmE4ODUxNDJmZTU3NS4uOTM5ODVhZDgzN2ZjYTk2YzNjOGIz
ZmQ5ZDY1ODI4OWM4NjdiMjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaApAQCAtNzgsNiArNzgsOSBA
QCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0UHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uKFdLQ29udGV4dENvbmZpZwogV0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0Q29uZmln
dXJhdGlvblByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29uZmlndXJh
dGlvblNldFByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseShXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgcHJld2FybXMpOwogCitXS19FWFBPUlQgYm9vbCBX
S0NvbnRleHRDb25maWd1cmF0aW9uVXNlc1dlYlByb2Nlc3NDYWNoZShXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29uZmln
dXJhdGlvblNldFVzZXNXZWJQcm9jZXNzQ2FjaGUoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBib29sIHVzZXMpOworCiBXS19FWFBPUlQgYm9vbCBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlcyhXS0NvbnRleHRDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q29u
ZmlndXJhdGlvblNldEFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoV0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBib29sIGtlZXBBbmRSZXVzZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDU2M2E0MzgwZDZkM2Q5
YzJjZWM0Y2YwMmFiMTc4OWEyOGRmY2RhNzQuLmFkZmM4MTU3MGJjN2YwMGNjZThjZWM5OGJiN2M0
ZjI3YzNlYjJkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApA
QCAtNjUsNiArNjUsOCBAQAogI2luY2x1ZGUgIldLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRz
SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXS1BsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKKyNpbmNs
dWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJGb3JtQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpp
bmRleCAyOThiNDRlMmYxOGY4NjhkNzk0MTg5NGQyZGE3OTNhYmRkZDE2MjYxLi5jMzQ1Y2Q5ODMy
ZDVjOWJhMThjMTViZTdlZTQ1YzBhMTM2ODVlNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzksNiArMzksNyBAQAog
I2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNlcnRpZmljYXRlSW5m
by5oIgogI2ltcG9ydCAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW1wb3J0ICJXZWJQcm9j
ZXNzQ2FjaGUuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIgpAQCAtNDc1
LDYgKzQ3NiwxMSBAQCAtIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVk
CiAgICAgcmV0dXJuIFtzZWxmIF93ZWJQcm9jZXNzQ291bnRdIC0gKFtzZWxmIF9oYXNQcmV3YXJt
ZWRXZWJQcm9jZXNzXSA/IDEgOiAwKTsKIH0KIAorLSAoc2l6ZV90KV93ZWJQcm9jZXNzQ291bnRJ
Z25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZAoreworICAgIHJldHVybiBbc2VsZiBfd2ViUHJvY2Vz
c0NvdW50XSAtIChbc2VsZiBfaGFzUHJld2FybWVkV2ViUHJvY2Vzc10gPyAxIDogMCkgLSBfcHJv
Y2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnNpemUoKTsKK30KKwogLSAoc2l6ZV90KV93ZWJQ
YWdlQ29udGVudFByb2Nlc3NDb3VudAogewogICAgIGF1dG8gYWxsV2ViUHJvY2Vzc2VzID0gX3By
b2Nlc3NQb29sLT5wcm9jZXNzZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggNDcwZGQ1Mzk0YTIx
NDA3MDQ2YWUyYmFlNTM4N2I2NjU4ZWIyY2I2ZS4uMDc1ZjcxOTdlOTdjY2NhOWE0NzVlYTg0ODY4
NDZlZTE3MjI2Yzg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTk2LDYgKzk2LDcgQEAKIC0gKHNp
emVfdClfd2ViUHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9z
KDExLjApKTsKIC0gKEJPT0wpX2hhc1ByZXdhcm1lZFdlYlByb2Nlc3MgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChzaXplX3QpX3dlYlBy
b2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjE0
KSwgaW9zKDEyLjApKTsKKy0gKHNpemVfdClfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJt
ZWRBbmRDYWNoZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAtIChzaXplX3QpX3BsdWdpblByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHNpemVfdClfc2VydmljZVdvcmtlclBy
b2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xNCksIGlvcygxMi4wKSk7CiAt
ICh2b2lkKV9zeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KDEwLjEzKSwgaW9zKDExLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCBm
NjcxZDdiNGMyYjhiZjk4NmI2ZTRhNTBjZTA5MDk1MTcyOGNhNDNkLi40MDUwMGQ5NmEyZGU0ZGQy
MTE5MWFkODM3M2QxZWE2Y2MzZTFiNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
CkBAIC02Nyw2ICs2Nyw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3Mo
OC4wKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsd2F5c0tlZXBBbmRSZXVzZVN3YXBw
ZWRQcm9jZXNzZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwog
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9w
ZW5lciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xNCksIGlvcygxMi4wKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCBwcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCB1c2VzV2ViUHJvY2Vzc0NhY2hlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgcGFnZUNhY2hlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xNCks
IGlvcygxMi4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzdXBwcmVzc2VzQ29ubmVj
dGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTQpLCBpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc0pJVEVuYWJs
ZWQpIEJPT0wgSklURW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCmluZGV4IDhh
MzY3ODE5ODhlZTA3YzJlNzA1ODlmYmZiMzU3ZTBmMTFhMGVhMzIuLjAxYmY2YTU0NWQ4ZmQ3NzYy
OWVkNDQwMjA5NDY1MGI4ZWZmYjQ1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5t
bQpAQCAtMjU4LDYgKzI1OCwxNiBAQCAtIChCT09MKXByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGlj
YWxseQogICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5pc0F1dG9tYXRpY1By
b2Nlc3NXYXJtaW5nRW5hYmxlZCgpOwogfQogCistICh2b2lkKXNldFVzZXNXZWJQcm9jZXNzQ2Fj
aGU6KEJPT0wpdmFsdWUKK3sKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRVc2Vz
V2ViUHJvY2Vzc0NhY2hlKHZhbHVlKTsKK30KKworLSAoQk9PTCl1c2VzV2ViUHJvY2Vzc0NhY2hl
Cit7CisgICAgcmV0dXJuIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnVzZXNXZWJQcm9jZXNz
Q2FjaGUoKTsKK30KKwogLSAodm9pZClzZXRBbHdheXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vz
c2VzOihCT09MKXN3YXBzCiB7CiAgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0QWx3
YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3Nlcyhzd2Fwcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCA3MGM5
MWE2YTE0NTE4ZWU1OTYyZWFhNzhiYWE3MDBkNWZhZTYxMmNhLi45ODc0NmMzN2M1MjRjODc4NGI3
YTZlODI2Njc2NjY1MTc1ZjZmYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTQxOCw2ICs0MTgsMTQgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMoKQogICAgIH1d
OwogI2VuZGlmCiAKKyAgICBtX2FjdGl2YXRpb25PYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Ok5TQXBwIHF1ZXVlOltOU09wZXJhdGlvblF1
ZXVlIGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRp
b24pIHsKKyAgICAgICAgc2V0QXBwbGljYXRpb25Jc0FjdGl2ZSh0cnVlKTsKKyAgICB9XTsKKwor
ICAgIG1fZGVhY3RpdmF0aW9uT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0aW9uRGlkUmVzaWduQWN0aXZl
Tm90aWZpY2F0aW9uIG9iamVjdDpOU0FwcCBxdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBjdXJyZW50
UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7CisgICAg
ICAgIHNldEFwcGxpY2F0aW9uSXNBY3RpdmUoZmFsc2UpOworICAgIH1dOworCiAjZW5kaWYgLy8g
IVBMQVRGT1JNKElPU19GQU1JTFkpCiB9CiAKQEAgLTQzMyw2ICs0NDEsOCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKCkKICNpZiBFTkFCTEUo
V0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX3Njcm9sbGVyU3R5bGVOb3RpZmlj
YXRpb25PYnNlcnZlci5nZXQoKV07CiAjZW5kaWYKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fYWN0aXZhdGlvbk9ic2VydmVyLmdldCgp
XTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2Vy
dmVyOm1fZGVhY3RpdmF0aW9uT2JzZXJ2ZXIuZ2V0KCldOwogI2VuZGlmIC8vICFQTEFURk9STShJ
T1NfRkFNSUxZKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKaW5kZXggYTNmNTcxMWIwNTFlZTFmNDk0ZTBmN2NhN2ZiZTg5NjU5ZjFj
YzQzNC4uYjY2ZmY5YjRkZDFkMDdmNjZhYWFhNGExMTk2ZjlhODM0ZGY5N2M4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTU0
LDYgKzE1NCwxMiBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKIAorICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lk
ZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9j
ZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAorICAg
IC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVu
dGlmaWVyIGFzIHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQg
aXRlbSB0byBoYXBwZW4gaW4gdGhlCisgICAgLy8gbmV3IHByb2Nlc3MuCisgICAgaWYgKG5hdmln
YXRpb24uZnJvbUl0ZW0oKSAmJiBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBX
ZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCisgICAgICAgIG5hdmlnYXRpb24uZnJv
bUl0ZW0oKS0+c2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKG1fcHJvY2Vzcy0+Y29yZVByb2Nlc3NJ
ZGVudGlmaWVyKCkpOworCiAgICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBkYTEzZjJiYjgzMTYx
ZTRmM2E2ZTA5Y2Q3YzEwZjU4M2RiY2QwNWZhLi4xNzQ1MzFhNDM0NWZiODViYmRjODA4OWQ1ZmQ5
M2Y3ZTM1NzgxZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTM4MzQsNiArMzgzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBtX3BhZ2VM
b2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbik7CiAKICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgcHJvY2Vzcy0+ZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JNYWluRnJhbWUodXJsKTsKICAgICAgICAgcmVwb3J0UGFnZUxvYWRSZXN1
bHQoUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KTsK
ICAgICAgICAgbV9wYWdlTG9hZFN0YXJ0ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgICAg
IG1fcGFnZUxvYWRTdGF0ZS5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh0cmFuc2FjdGlvbiwgdXJs
LCB1bnJlYWNoYWJsZVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0Nh
Y2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NTZjYjUzMTk3YTA0OGQ0YjQyZjZkYjliYzMwZTM0MmM4ODA1
NDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c0NhY2hlLmNwcApAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFNlY29uZHMgY2FjaGVkUHJvY2Vz
c0xpZmV0aW1lIHsgMzBfbWluIH07CitzdGF0aWMgU2Vjb25kcyBjbGVhcmluZ0RlbGF5QWZ0ZXJB
cHBsaWNhdGlvblJlc2lnbnNBY3RpdmUgeyA1X21pbiB9OworCitXZWJQcm9jZXNzQ2FjaGU6Oldl
YlByb2Nlc3NDYWNoZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCisgICAgOiBtX2V2aWN0
aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUHJvY2Vzc0NhY2hlOjpjbGVhcikK
K3sKKyAgICB1cGRhdGVDYXBhY2l0eShwcm9jZXNzUG9vbCk7Cit9CisKK2Jvb2wgV2ViUHJvY2Vz
c0NhY2hlOjphZGRQcm9jZXNzKGNvbnN0IFN0cmluZyYgcmVnaXN0cmFibGVEb21haW4sIFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKK3sKKyAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9t
YWluLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFwcm9jZXNzLT5wYWdlQ291bnQoKSk7CisgICAg
QVNTRVJUKCFwcm9jZXNzLT5wcm92aXNpb25hbFBhZ2VDb3VudCgpKTsKKyAgICBBU1NFUlQoIXBy
b2Nlc3MtPnByb2Nlc3NQb29sKCkuaGFzU3VzcGVuZGVkUGFnZUZvcihwcm9jZXNzKSk7CisKKyAg
ICBpZiAoIWNhcGFjaXR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0Nh
Y2hlOjphZGRQcm9jZXNzKCk6IE5vdCBjYWNoaW5nIHByb2Nlc3MgJWkgYmVjYXVzZSB3ZSBhcmUg
dW5kZXIgbWVtb3J5IHByZXNzdXJlIiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB3aGlsZSAobV9wcm9jZXNz
ZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5zaXplKCkgPj0gY2FwYWNpdHkoKSkgeworICAgICAgICBh
dXRvIGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5yYW5kb20oKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFk
ZFByb2Nlc3MoKTogRXZpY3RpbmcgcHJvY2VzcyAlaSBmcm9tIFdlYlByb2Nlc3MgY2FjaGUiLCB0
aGlzLCBpdC0+dmFsdWUtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAg
bV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUoaXQpOworICAgIH0KKworICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUo
cmVnaXN0cmFibGVEb21haW4sIFtwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCldKCkgbXV0YWJs
ZSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KFdURk1v
dmUocHJvY2VzcykpOworICAgIH0pOworICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
IiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzOiBBZGRpbmcgcHJvY2VzcyAlaSB0byBX
ZWJQcm9jZXNzIGNhY2hlLCBjYWNoZSBzaXplOiBbJXUgLyAldV0iLCB0aGlzLCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBzaXplKCksIGNhcGFjaXR5KCkpOworICAgIHJldHVybiB0cnVl
OworfQorCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9j
ZXNzKGNvbnN0IFN0cmluZyYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKK3sKKyAgICBhdXRvIGl0ID0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFp
bi5maW5kKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJS
ZWdpc3RyYWJsZURvbWFpbi5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBp
ZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmZGF0YVN0b3Jl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gcHJvY2VzcyA9IGl0LT52YWx1
ZS0+dGFrZVByb2Nlc3MoKTsKKyAgICBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLnJl
bW92ZShpdCk7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9j
ZXNzQ2FjaGU6OnRha2VQcm9jZXNzOiBUYWtpbmcgcHJvY2VzcyAlaSBmcm9tIFdlYlByb2Nlc3Mg
Y2FjaGUsIGNhY2hlIHNpemU6IFsldSAvICV1XSIsIHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIHNpemUoKSwgY2FwYWNpdHkoKSk7CisKKyAgICBBU1NFUlQoIXByb2Nlc3MtPnBh
Z2VDb3VudCgpKTsKKyAgICBBU1NFUlQoIXByb2Nlc3MtPnByb3Zpc2lvbmFsUGFnZUNvdW50KCkp
OworICAgIEFTU0VSVCghcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5oYXNTdXNwZW5kZWRQYWdlRm9y
KHByb2Nlc3MpKTsKKworICAgIHJldHVybiBXVEZNb3ZlKHByb2Nlc3MpOworfQorCit2b2lkIFdl
YlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
KQoreworICAgIGlmICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbigpIHx8ICFwcm9jZXNzUG9vbC5jb25maWd1cmF0aW9uKCkudXNlc1dlYlByb2Nl
c3NDYWNoZSgpKSB7CisgICAgICAgIGlmICghcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnBy
b2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpKQorICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OnVwZGF0ZUNhcGFjaXR5OiBDYWNoZSBp
cyBkaXNhYmxlZCBiZWNhdXNlIHByb2Nlc3Mgc3dhcCBvbiBuYXZpZ2F0aW9uIGlzIGRpc2FibGVk
IiwgdGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
d2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjp1cGRhdGVDYXBhY2l0eTogQ2FjaGUgaXMg
ZGlzYWJsZWQgYnkgY2xpZW50IiwgdGhpcyk7CisgICAgICAgIG1fY2FwYWNpdHkgPSAwOworICAg
IH0gZWxzZSB7CisgICAgICAgIHNpemVfdCBtZW1vcnlTaXplID0gcmFtU2l6ZSgpIC8gR0I7CisK
KyAgICAgICAgLy8gQWxsb3cgNCBwcm9jZXNzZXMgaW4gdGhlIGNhY2hlIHBlciBHQiBvZiBSQU0s
IHVwIHRvIDMwIHByb2Nlc3Nlcy4KKyAgICAgICAgbV9jYXBhY2l0eSA9IHN0ZDo6bWluPHVuc2ln
bmVkPihtZW1vcnlTaXplICogNCwgMzApOworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6dXBkYXRlQ2FwYWNpdHk6IENhY2hlIGhhcyBh
IGNhcGFjaXR5IG9mICV1IHByb2Nlc3NlcyIsIHRoaXMsIGNhcGFjaXR5KCkpOworICAgIH0KKwor
ICAgIGlmICghbV9jYXBhY2l0eSkKKyAgICAgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzQ2FjaGU6OmNsZWFyKCkKK3sKKyAgICBpZiAobV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURv
bWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjpjbGVhcigpIGV2aWN0aW5nICV1IHBy
b2Nlc3NlcyIsIHRoaXMsIG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uc2l6ZSgpKTsK
KyAgICBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmNsZWFyKCk7Cit9CisKK3ZvaWQg
V2ViUHJvY2Vzc0NhY2hlOjpzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGJvb2wgaXNBY3RpdmUpCit7
CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6
OnNldEFwcGxpY2F0aW9uSXNBY3RpdmUoJWQpIiwgdGhpcywgaXNBY3RpdmUpOworICAgIGlmIChp
c0FjdGl2ZSkKKyAgICAgICAgbV9ldmljdGlvblRpbWVyLnN0b3AoKTsKKyAgICBlbHNlIGlmICgh
bV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIG1fZXZp
Y3Rpb25UaW1lci5zdGFydE9uZVNob3QoY2xlYXJpbmdEZWxheUFmdGVyQXBwbGljYXRpb25SZXNp
Z25zQWN0aXZlKTsKK30KKwordm9pZCBXZWJQcm9jZXNzQ2FjaGU6OmV2aWN0UHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgYXV0byBpdCA9IG1fcHJvY2Vzc2VzUGVyUmVn
aXN0cmFibGVEb21haW4uZmluZChwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIEFT
U0VSVChpdCAhPSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKTsKKyAgICBB
U1NFUlQoJml0LT52YWx1ZS0+cHJvY2VzcygpID09ICZwcm9jZXNzKTsKKworICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjpldmljdFByb2Nlc3Mo
KTogRXZpY3RpbmcgcHJvY2VzcyAlaSBmcm9tIFdlYlByb2Nlc3MgY2FjaGUgYmVjYXVzZSBpdCBl
eHBpcmVkIiwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpKTsKKworICAgIG1fcHJv
Y2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKGl0KTsKK30KKworV2ViUHJvY2Vzc0Nh
Y2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcykKKyAgICA6IG1fcHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpKQorICAgICwgbV9ldmlj
dGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNhY2hlZFByb2Nlc3M6OmV2aWN0aW9u
VGltZXJGaXJlZCkKK3sKKyAgICBtX3Byb2Nlc3MtPnNldElzSW5Qcm9jZXNzQ2FjaGUodHJ1ZSk7
CisgICAgbV9ldmljdGlvblRpbWVyLnN0YXJ0T25lU2hvdChjYWNoZWRQcm9jZXNzTGlmZXRpbWUp
OworfQorCitXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6On5DYWNoZWRQcm9jZXNzKCkK
K3sKKyAgICBpZiAoIW1fcHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFt
X3Byb2Nlc3MtPnBhZ2VDb3VudCgpKTsKKyAgICBBU1NFUlQoIW1fcHJvY2Vzcy0+cHJvdmlzaW9u
YWxQYWdlQ291bnQoKSk7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuaGFz
U3VzcGVuZGVkUGFnZUZvcigqbV9wcm9jZXNzKSk7CisKKyAgICBtX3Byb2Nlc3MtPnNldElzSW5Q
cm9jZXNzQ2FjaGUoZmFsc2UpOworICAgIG1fcHJvY2Vzcy0+c2h1dERvd24oKTsKK30KKworUmVm
PFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjp0YWtlUHJv
Y2VzcygpCit7CisgICAgQVNTRVJUKG1fcHJvY2Vzcyk7CisgICAgbV9ldmljdGlvblRpbWVyLnN0
b3AoKTsKKyAgICBtX3Byb2Nlc3MtPnNldElzSW5Qcm9jZXNzQ2FjaGUoZmFsc2UpOworICAgIHJl
dHVybiBtX3Byb2Nlc3MucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBXZWJQcm9jZXNzQ2Fj
aGU6OkNhY2hlZFByb2Nlc3M6OmV2aWN0aW9uVGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKG1f
cHJvY2Vzcyk7CisgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLndlYlByb2Nlc3NDYWNoZSgp
LmV2aWN0UHJvY2VzcygqbV9wcm9jZXNzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZjk5
YWE4MDVmMTlmYzRkYmU3ODY4OWY1MTI1ODI1ZjU0YTc5ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuaApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3Mg
V2ViUHJvY2Vzc1Byb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKKworY2xhc3MgV2ViUHJv
Y2Vzc0NhY2hlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBXZWJQcm9jZXNzQ2FjaGUoV2ViUHJvY2Vzc1Bvb2wmKTsKKworICAgIGJvb2wgYWRk
UHJvY2Vzcyhjb25zdCBTdHJpbmcmIHJlZ2lzdHJhYmxlRG9tYWluLCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiB0YWtlUHJvY2Vzcyhjb25zdCBT
dHJpbmcmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJik7CisKKyAgICB2b2lk
IHVwZGF0ZUNhcGFjaXR5KFdlYlByb2Nlc3NQb29sJik7CisgICAgdW5zaWduZWQgY2FwYWNpdHko
KSB7IHJldHVybiBtX2NhcGFjaXR5OyB9CisKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5zaXplKCk7IH0KKworICAgIHZv
aWQgY2xlYXIoKTsKKyAgICB2b2lkIHNldEFwcGxpY2F0aW9uSXNBY3RpdmUoYm9vbCk7CisKK3By
aXZhdGU6CisgICAgdm9pZCBldmljdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CisKKyAgICB1
bnNpZ25lZCBtX2NhcGFjaXR5IHsgMCB9OworCisgICAgY2xhc3MgQ2FjaGVkUHJvY2VzcyB7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgQ2Fj
aGVkUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKKyAgICAgICAgfkNhY2hlZFByb2Nl
c3MoKTsKKworICAgICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiB0YWtlUHJvY2VzcygpOworICAg
ICAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MoKSB7IEFTU0VSVChtX3Byb2Nlc3MpOyByZXR1
cm4gKm1fcHJvY2VzczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBldmljdGlvblRp
bWVyRmlyZWQoKTsKKworICAgICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7
CisgICAgICAgIFJ1bkxvb3A6OlRpbWVyPENhY2hlZFByb2Nlc3M+IG1fZXZpY3Rpb25UaW1lcjsK
KyAgICB9OworCisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQcm9j
ZXNzPj4gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbjsKKyAgICBSdW5Mb29wOjpUaW1l
cjxXZWJQcm9jZXNzQ2FjaGU+IG1fZXZpY3Rpb25UaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IGM5ZGU3ZmI1NDFiMDBhNWEzMDkyOGFlNDk5OWRlNmI1YTU1Yzg0MDUuLjdlODc4OGExZmM1YjNk
NGMxZmI1NmFiZWVkNjEzYjBmYjllNDkxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlR3Jv
dXAuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzS2V5cy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCkBAIC0yNTUsNiArMjU2LDcg
QEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50
ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9
KQogICAgICwgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJF
dmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQogI2VuZGlmCisgICAgLCBtX3dl
YlByb2Nlc3NDYWNoZShtYWtlVW5pcXVlUmVmPFdlYlByb2Nlc3NDYWNoZT4oKnRoaXMpKQogewog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10gewpAQCAtMzEzLDYgKzMxNSw4IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9j
ZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIAog
V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCgpCiB7CisgICAgbV93ZWJQcm9jZXNzQ2Fj
aGUtPmNsZWFyKCk7CisKICAgICBib29sIHJlbW92ZWQgPSBwcm9jZXNzUG9vbHMoKS5yZW1vdmVG
aXJzdCh0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogCkBAIC00
NTUsNiArNDU5LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRleHRDaGVja2VyU3RhdGVDaGFu
Z2VkKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRl
eHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0YXRlKCkpKTsKIH0KIAordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0QXBwbGljYXRpb25Jc0FjdGl2ZShib29sIGlzQWN0aXZlKQoreworICAgIG1f
d2ViUHJvY2Vzc0NhY2hlLT5zZXRBcHBsaWNhdGlvbklzQWN0aXZlKGlzQWN0aXZlKTsKK30KKwog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2NyZWVuUHJvcGVydGllc1N0YXRlQ2hhbmdlZCgpCiB7CiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtMTE1NCw3ICsxMTYzLDExIEBAIFJlZjxXZWJQYWdlUHJveHk+
IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJl
ZjxBUEk6CiAgICAgICAgIGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0g
ZmFsc2U7CiAjZW5kaWYKIAorICAgIGJvb2wgd2FzUHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9u
RW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCk7CiAg
ICAgbV9jb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tRXhwZXJp
bWVudGFsRmVhdHVyZXMoZW5hYmxlUHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24pOwor
ICAgIGlmICh3YXNQcm9jZXNzU3dhcHBpbmdPbk5hdmlnYXRpb25FbmFibGVkICE9IG1fY29uZmln
dXJhdGlvbi0+cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCkpCisgICAgICAgIG1fd2ViUHJvY2Vz
c0NhY2hlLT51cGRhdGVDYXBhY2l0eSgqdGhpcyk7CisKICAgICBtX2NvbmZpZ3VyYXRpb24tPnNl
dFNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzKHBhZ2UtPnByZWZlcmVuY2VzKCkuY2FwdHVy
ZUF1ZGlvSW5VSVByb2Nlc3NFbmFibGVkKCkpOwogICAgIG1fY29uZmlndXJhdGlvbi0+c2V0U2hv
dWxkQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3MocGFnZS0+cHJlZmVyZW5jZXMoKS5jYXB0dXJlVmlk
ZW9JblVJUHJvY2Vzc0VuYWJsZWQoKSk7CiAKQEAgLTEzMTksNiArMTMzMiwxMCBAQCBXZWJQcm9j
ZXNzUG9vbDo6U3RhdGlzdGljcyYgV2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKQogCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmcoQ3JpdGljYWwpCiB7
CisgICAgUkVMRUFTRV9MT0coUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNzUG9v
bDo6aGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJuaW5nIiwgdGhpcyk7CisKKyAgICBtX3dlYlByb2Nl
c3NDYWNoZS0+Y2xlYXIoKTsKKwogICAgIGlmIChtX3ByZXdhcm1lZFByb2Nlc3MpCiAgICAgICAg
IG1fcHJld2FybWVkUHJvY2Vzcy0+c2h1dERvd24oKTsKICAgICBBU1NFUlQoIW1fcHJld2FybWVk
UHJvY2Vzcyk7CkBAIC0yMTUzLDE0ICsyMTcwLDI2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVBy
b3h5KiwgY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYg
dGFyZ2V0VVJMID0gbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLnVybCgpOworICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSB0b1JlZ2lzdHJhYmxlRG9tYWluKHRhcmdldFVSTCk7CisKKyAg
ICBhdXRvIGNyZWF0ZU5ld1Byb2Nlc3MgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBwYWdlID0gbWFrZVJlZihwYWdlKSwgdGFyZ2V0VVJMLCByZWdpc3RyYWJsZURvbWFp
bl0gKCkgLT4gUmVmPFdlYlByb2Nlc3NQcm94eT4geworICAgICAgICBpZiAoYXV0byBwcm9jZXNz
ID0gd2ViUHJvY2Vzc0NhY2hlKCkudGFrZVByb2Nlc3MocmVnaXN0cmFibGVEb21haW4sIHBhZ2Ut
PndlYnNpdGVEYXRhU3RvcmUoKSkpCisgICAgICAgICAgICByZXR1cm4gcHJvY2Vzcy5yZWxlYXNl
Tm9uTnVsbCgpOworCisgICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBzdXNwZW5kZWQgcGFn
ZSBmb3IgdGhlIGdpdmVuIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQgdXNlIGl0cyBwcm9jZXNzIGlm
IHdlIGRvLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KKyAgICAgICAgaWYgKGF1dG8gcHJvY2Vz
cyA9IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCBw
YWdlKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiVXNpbmcg
V2ViUHJvY2VzcyAlaSBmcm9tIGEgU3VzcGVuZGVkUGFnZSIsIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCkpOworICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3MucmVsZWFzZU5vbk51bGwoKTsK
KyAgICAgICAgfQogCi0gICAgYXV0byBjcmVhdGVOZXdQcm9jZXNzID0gWyZdICgpIC0+IFJlZjxX
ZWJQcm9jZXNzUHJveHk+IHsKLSAgICAgICAgaWYgKFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHBy
b2Nlc3MgPSB0cnlUYWtlUHJld2FybWVkUHJvY2VzcyhwYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkp
IHsKKyAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9IHRyeVRha2VQcmV3YXJtZWRQcm9jZXNzKHBh
Z2UtPndlYnNpdGVEYXRhU3RvcmUoKSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTd2FwcGluZywgIlVzaW5nIHByZXdhcm1lZCBwcm9jZXNzICVpIiwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICB0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0
aW9uKCpwcm9jZXNzLCB0YXJnZXRVUkwpOwogICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3MucmVs
ZWFzZU5vbk51bGwoKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBjcmVhdGVOZXdXZWJQ
cm9jZXNzKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N3YXBwaW5nLCAiTGF1bmNoaW5nIGEgbmV3IHByb2Nlc3MiKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZU5ld1dlYlByb2Nlc3MocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICB9Owog
CiAgICAgaWYgKHVzZXNTaW5nbGVXZWJQcm9jZXNzKCkpCkBAIC0yMTk5LDEyICsyMjI4LDE4IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFn
ZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih0YXJnZXRJdGVtLT5pdGVtSUQoKS5wcm9jZXNzSWRl
bnRpZmllcikpIHsKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3Mg
PSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHRhcmdldEl0ZW0tPmxhc3RQ
cm9jZXNzSWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEFyY2hpdGVjdHVy
YWxseSB3ZSBkbyBub3QgY3VycmVudGx5IHN1cHBvcnQgbXVsdGlwbGUgV2ViUGFnZSdzIHdpdGgg
dGhlIHNhbWUgSUQgaW4gYSBnaXZlbiBXZWJQcm9jZXNzLgogICAgICAgICAgICAgLy8gSW4gdGhl
IGNhc2Ugd2hlcmUgdGhpcyBXZWJQcm9jZXNzIGhhcyBhIFN1c3BlbmRlZFBhZ2VQcm94eSBmb3Ig
dGhpcyBXZWJQYWdlLCB3ZSBjYW4gdGhyb3cgaXQgYXdheSB0byBzdXBwb3J0CiAgICAgICAgICAg
ICAvLyBXZWJQcm9jZXNzIHJlLXVzZS4KICAgICAgICAgICAgIHJlbW92ZUFsbFN1c3BlbmRlZFBh
Z2VzRm9yUGFnZShwYWdlLCBwcm9jZXNzLmdldCgpKTsKIAorICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHdlIHJlbW92ZSB0aGUgcHJvY2VzcyBmcm9tIHRoZSBjYWNoZSBpZiBpdCBpcyBpbiB0aGVy
ZSBzaW5jZSB3ZSdyZSBhYm91dCB0byB1c2UgaXQuCisgICAgICAgICAgICBpZiAocHJvY2Vzcy0+
aXNJblByb2Nlc3NDYWNoZSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byByZW1vdmVkUHJvY2Vz
cyA9IHdlYlByb2Nlc3NDYWNoZSgpLnRha2VQcm9jZXNzKHByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9t
YWluKCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChyZW1vdmVkUHJvY2VzcywgcmVtb3ZlZFByb2Nlc3MuZ2V0KCkgPT0gcHJvY2Vz
cy5nZXQoKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihwcm9jZXNzLnJlbGVhc2VOb25OdWxsKCksIG51bGxwdHIsICJVc2luZyB0YXJnZXQg
YmFjay9mb3J3YXJkIGl0ZW0ncyBwcm9jZXNzIl9zKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIy
MjgsNyArMjI2Myw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9u
SW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAKICAgICBTdHJpbmcgcmVh
c29uID0gIk5hdmlnYXRpb24gaXMgY3Jvc3Mtc2l0ZSJfczsKICAgICAKLSAgICBhdXRvIHJlZ2lz
dHJhYmxlRG9tYWluID0gdG9SZWdpc3RyYWJsZURvbWFpbih0YXJnZXRVUkwpOwogICAgIGlmICht
X2NvbmZpZ3VyYXRpb24tPmFsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMoKSkgewog
ICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgQ29uc2lkZXJp
bmcgcmUtdXNlIG9mIGEgcHJldmlvdXNseSBjYWNoZWQgcHJvY2VzcyBmb3IgZG9tYWluICVzIiwg
cmVnaXN0cmFibGVEb21haW4udXRmOCgpLmRhdGEoKSk7CiAKQEAgLTIyNDcsMjIgKzIyODEsMjYg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIENo
ZWNrIGlmIHdlIGhhdmUgYSBzdXNwZW5kZWQgcGFnZSBmb3IgdGhlIGdpdmVuIHJlZ2lzdHJhYmxl
IGRvbWFpbiBhbmQgdXNlIGl0cyBwcm9jZXNzIGlmIHdlIGRvLCBmb3IgcGVyZm9ybWFuY2UgcmVh
c29ucy4KKyAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY3JlYXRlTmV3UHJvY2VzcygpLCBu
dWxscHRyLCByZWFzb24pOworfQorCitSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
UG9vbDo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoY29uc3QgU3RyaW5nJiByZWdp
c3RyYWJsZURvbWFpbiwgV2ViUGFnZVByb3h5JiBwYWdlKQorewogICAgIGF1dG8gaXQgPSBtX3N1
c3BlbmRlZFBhZ2VzLmZpbmRJZihbJl0oYXV0byYgc3VzcGVuZGVkUGFnZSkgewotICAgICAgICBy
ZXR1cm4gc3VzcGVuZGVkUGFnZS0+cmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURv
bWFpbjsKKyAgICAgICAgcmV0dXJuIHN1c3BlbmRlZFBhZ2UtPnJlZ2lzdHJhYmxlRG9tYWluKCkg
PT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRl
RGF0YVN0b3JlKCkgPT0gJnBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpOwogICAgIH0pOwotICAgIGlm
IChpdCAhPSBtX3N1c3BlbmRlZFBhZ2VzLmVuZCgpKSB7Ci0gICAgICAgIFJlZjxXZWJQcm9jZXNz
UHJveHk+IHByb2Nlc3MgPSAoKml0KS0+cHJvY2VzcygpOworICAgIGlmIChpdCA9PSBtX3N1c3Bl
bmRlZFBhZ2VzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAvLyBG
SVhNRTogSWYgdGhlIFN1c3BlbmRlZFBhZ2UgaXMgZm9yIHRoaXMgcGFnZSwgdGhlbiB3ZSBuZWVk
IHRvIGRlc3Ryb3kgdGhlIHN1c3BlbmRlZCBwYWdlIGFzIHdlIGRvIG5vdCBzdXBwb3J0IGhhdmlu
ZwotICAgICAgICAvLyBtdWx0aXBsZSBXZWJQYWdlcyB3aXRoIHRoZSBzYW1lIElEIGluIGEgZ2l2
ZW4gV2ViUHJvY2VzcyBjdXJyZW50bHkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTExNjYpLgotICAgICAgICBpZiAoJigqaXQpLT5wYWdlKCkgPT0gJnBhZ2UpCi0g
ICAgICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZShpdCk7CisgICAgUmVmPFdlYlByb2Nl
c3NQcm94eT4gcHJvY2VzcyA9ICgqaXQpLT5wcm9jZXNzKCk7CiAKLSAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocHJvY2VzcyksIG51bGxwdHIsIHJlYXNvbik7Ci0gICAg
fQorICAgIC8vIEZJWE1FOiBJZiB0aGUgU3VzcGVuZGVkUGFnZSBpcyBmb3IgdGhpcyBwYWdlLCB0
aGVuIHdlIG5lZWQgdG8gZGVzdHJveSB0aGUgc3VzcGVuZGVkIHBhZ2UgYXMgd2UgZG8gbm90IHN1
cHBvcnQgaGF2aW5nCisgICAgLy8gbXVsdGlwbGUgV2ViUGFnZXMgd2l0aCB0aGUgc2FtZSBJRCBp
biBhIGdpdmVuIFdlYlByb2Nlc3MgY3VycmVudGx5IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxMTY2KS4KKyAgICBpZiAoJigqaXQpLT5wYWdlKCkgPT0gJnBhZ2Up
CisgICAgICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlKGl0KTsKIAotICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihjcmVhdGVOZXdQcm9jZXNzKCksIG51bGxwdHIsIHJlYXNvbik7CisKKyAg
ICByZXR1cm4gV1RGTW92ZShwcm9jZXNzKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRk
U3VzcGVuZGVkUGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3Bl
bmRlZFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBl
NTc0ZTFkN2E2MmM0ZDdlY2YzMDgzZDJmODMzMGQ5ODEzN2U1ZmNkLi5lYmZmOWJmOTdmYTk2OTZk
MzI3MTY0YWI2Y2FlZTQ1NGJhYTJiMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjsKIGNsYXNzIFdlYkNvbnRleHRTdXBwbGVtZW50OwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xh
c3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJvY2Vzc0NhY2hlOwogc3RydWN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFN0YXRpc3RpY3NEYXRhOwogc3RydWN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC0xNzYsNiArMTc3LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94eSop
OwogCisgICAgV2ViUHJvY2Vzc0NhY2hlJiB3ZWJQcm9jZXNzQ2FjaGUoKSB7IHJldHVybiBtX3dl
YlByb2Nlc3NDYWNoZS5nZXQoKTsgfQorCiAgICAgLy8gRGlzY29ubmVjdCB0aGUgcHJvY2VzcyBm
cm9tIHRoZSBjb250ZXh0LgogICAgIHZvaWQgZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5Kik7CiAKQEAgLTQ2NCw2ICs0NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTdXNw
ZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYpOwogICAgIGJvb2wgaGFzU3VzcGVuZGVkUGFn
ZUZvcihXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlUHJveHkqID0gbnVsbHB0cikgY29uc3Q7CiAg
ICAgdW5zaWduZWQgbWF4U3VzcGVuZGVkUGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9tYXhT
dXNwZW5kZWRQYWdlQ291bnQ7IH0KKyAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBmaW5kUmV1
c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vzcyhjb25zdCBTdHJpbmcmLCBXZWJQYWdlUHJveHkmKTsK
IAogICAgIHZvaWQgZGlkUmVhY2hHb29kVGltZVRvUHJld2FybSgpOwogCkBAIC01NDgsNiArNTUy
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMo
KTsKICNlbmRpZgogCisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbklzQWN0aXZlKGJvb2wpOworCiAg
ICAgdm9pZCBhZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9y
aWdpbiwgdW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZv
aWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5I
YXNoLCBQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTY0OSw2ICs2NTUsOCBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBSZXRhaW5QdHI8
TlNPYmplY3Q+IG1fc2Nyb2xsZXJTdHlsZU5vdGlmaWNhdGlvbk9ic2VydmVyOwogI2VuZGlmCisg
ICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2FjdGl2YXRpb25PYnNlcnZlcjsKKyAgICBSZXRhaW5Q
dHI8TlNPYmplY3Q+IG1fZGVhY3RpdmF0aW9uT2JzZXJ2ZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+IG1faGlnaFBlcmZvcm1hbmNl
R3JhcGhpY3NVc2FnZVNhbXBsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXI+IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjsKQEAg
LTczOSw2ICs3NDcsNyBAQCBwcml2YXRlOgogICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+PiBtX3N1c3BlbmRlZFBhZ2VzOwogICAgIHVuc2lnbmVkIG1fbWF4U3Vz
cGVuZGVkUGFnZUNvdW50IHsgMCB9OwogCisgICAgVW5pcXVlUmVmPFdlYlByb2Nlc3NDYWNoZT4g
bV93ZWJQcm9jZXNzQ2FjaGU7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+PiBtX3N3YXBwZWRQcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbjsKIAogICAgIEhh
c2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9u
Pj4gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU2ODY4Mjg1OTBhNTQ4MDVk
ZjNlMzE3OTBmZjg1MDQyZWFmNTczY2UuLjYzOWIwYjJhYjA1M2Q2MmEwZTNkOGQzZmNkZDgzYzY4
NmU5MmExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94eS5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKQEAgLTE4MSw2ICsxODIsMjMgQEAgV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vz
c1Byb3h5KCkKICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nl
c3NDYWNoZShib29sIHZhbHVlKQoreworICAgIEFTU0VSVChtX2lzSW5Qcm9jZXNzQ2FjaGUgIT0g
dmFsdWUpOworICAgIG1faXNJblByb2Nlc3NDYWNoZSA9IHZhbHVlOworCisgICAgc2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6U2V0SXNJblByb2Nlc3NDYWNoZShtX2lzSW5Qcm9jZXNzQ2FjaGUp
LCAwKTsKKworICAgIGlmIChtX2lzSW5Qcm9jZXNzQ2FjaGUpIHsKKyAgICAgICAgLy8gV2ViUHJv
Y2Vzc1Byb3h5IG9iamVjdHMgbm9ybWFsbHkga2VlcCB0aGUgcHJvY2VzcyBwb29sIGFsaXZlIGJ1
dCB3ZSBkbyBub3Qgd2FudCB0aGlzIHRvIGJlIHRoZSBjYXNlCisgICAgICAgIC8vIGZvciBjYWNo
ZWQgcHJvY2Vzc2VzIG9yIGl0IHdvdWxkIGxlYWsgdGhlIHBvb2wuCisgICAgICAgIG1fcHJvY2Vz
c1Bvb2wuc2V0SXNXZWFrKElzV2Vhazo6WWVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKKyAgICAgICAgbV9wcm9jZXNzUG9vbC5zZXRJc1dl
YWsoSXNXZWFrOjpObyk7CisgICAgfQorfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1
bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMp
CiB7CiAgICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6UHJv
Y2Vzc1R5cGU6OldlYjsKQEAgLTMzMyw2ICszNTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlE
LAogewogICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJRCkpOwogICAgIEFTU0VS
VCghZ2xvYmFsUGFnZU1hcCgpLmNvbnRhaW5zKHBhZ2VJRCkpOworICAgIEFTU0VSVCghbV9pc0lu
UHJvY2Vzc0NhY2hlKTsKIAogICAgIGlmIChiZWdpbnNVc2luZ0RhdGFTdG9yZSA9PSBCZWdpbnNV
c2luZ0RhdGFTdG9yZTo6WWVzKQogICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlQmVnaW5Vc2lu
Z1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZSk7CkBAIC00ODAsMTAgKzQ5OSwzNiBAQCBib29sIFdl
YlByb2Nlc3NQcm94eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAor
Ym9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBw
YWdlSUQpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvKiBwcm92aXNpb25hbFBhZ2UgOiBtX3Byb3Zp
c2lvbmFsUGFnZXMpIHsKKyAgICAgICAgaWYgKHByb3Zpc2lvbmFsUGFnZS0+cGFnZSgpLnBhZ2VJ
RCgpID09IHBhZ2VJRCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5Ojppc0FsbG93ZWRUb1VwZGF0ZUJh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSBjb25zdAoreworICAg
IGlmIChtX3BhZ2VNYXAuY29udGFpbnMoaXRlbS5wYWdlSUQoKSkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChpdGVtLnBhZ2VJRCgpKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoaXRlbS5zdXNwZW5kZWRQYWdlKCkgJiYg
aXRlbS5zdXNwZW5kZWRQYWdlKCktPnBhZ2UoKS5wYWdlSUQoKSA9PSBpdGVtLnBhZ2VJRCgpICYm
ICZpdGVtLnN1c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpID09IHRoaXMpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
dXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRl
bVN0YXRlKQogewotICAgIGlmIChhdXRvKiBpdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
aXRlbUZvcklEKGl0ZW1TdGF0ZS5pZGVudGlmaWVyKSkKLSAgICAgICAgaXRlbS0+c2V0UGFnZVN0
YXRlKGl0ZW1TdGF0ZS5wYWdlU3RhdGUpOworICAgIGF1dG8qIGl0ZW0gPSBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOjppdGVtRm9ySUQoaXRlbVN0YXRlLmlkZW50aWZpZXIpOworICAgIGlmICghaXRl
bSB8fCAhaXNBbGxvd2VkVG9VcGRhdGVCYWNrRm9yd2FyZEl0ZW0oKml0ZW0pKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpdGVtLT5zZXRQYWdlU3RhdGUoaXRlbVN0YXRlLnBhZ2VTdGF0ZSk7CiB9
CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTU5MCw2ICs2MzUsMTEgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGVPckZhaWxlZFRvTGF1bmNo
KCkKICAgICBhdXRvIHBhZ2VzID0gY29weVRvVmVjdG9yT2Y8UmVmUHRyPFdlYlBhZ2VQcm94eT4+
KG1fcGFnZU1hcC52YWx1ZXMoKSk7CiAgICAgYXV0byBwcm92aXNpb25hbFBhZ2VzID0gV1RGOjpt
YXAobV9wcm92aXNpb25hbFBhZ2VzLCBbXShhdXRvKiBwcm92aXNpb25hbFBhZ2UpIHsgcmV0dXJu
IG1ha2VXZWFrUHRyKHByb3Zpc2lvbmFsUGFnZSk7IH0pOwogCisgICAgaWYgKG1faXNJblByb2Nl
c3NDYWNoZSkgeworICAgICAgICBhdXRvIHJlbW92ZWRQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS53
ZWJQcm9jZXNzQ2FjaGUoKS50YWtlUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbigpLCB3ZWJzaXRl
RGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQcm9jZXNzLCByZW1v
dmVkUHJvY2Vzcy5nZXQoKSA9PSB0aGlzKTsKKyAgICB9CisKICAgICBzaHV0RG93bigpOwogCiAj
aWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKQEAgLTc2OSwxNyArODE5LDM0IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95VXNlckdlc3R1cmVUb2tlbih1aW50NjRfdCBpZGVu
dGlmaWVyKQogICAgIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcC5yZW1vdmUoaWRlbnRpZmllcik7
CiB9CiAKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUo
KSBjb25zdAoreworICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbigpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKFdlYktpdDo6aXNJbnNwZWN0b3JQcm9jZXNz
UG9vbChwcm9jZXNzUG9vbCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjptYXliZVNodXREb3duKCkKIHsKICAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8fCAhY2FuVGVybWluYXRlQXV4aWxp
YXJ5UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoY2FuQmVBZGRlZFRvV2Vi
UHJvY2Vzc0NhY2hlKCkgJiYgcHJvY2Vzc1Bvb2woKS53ZWJQcm9jZXNzQ2FjaGUoKS5hZGRQcm9j
ZXNzKHJlZ2lzdHJhYmxlRG9tYWluKCksICp0aGlzKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
c2h1dERvd24oKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUF1eGls
aWFyeVByb2Nlc3MoKQogewotICAgIGlmICghbV9wYWdlTWFwLmlzRW1wdHkoKSB8fCBtX3Byb2Nl
c3NQb29sLT5oYXNTdXNwZW5kZWRQYWdlRm9yKCp0aGlzKSB8fCAhbV9wcm92aXNpb25hbFBhZ2Vz
LmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fcGFnZU1hcC5pc0VtcHR5KCkgfHwgbV9wcm9jZXNzUG9v
bC0+aGFzU3VzcGVuZGVkUGFnZUZvcigqdGhpcykgfHwgIW1fcHJvdmlzaW9uYWxQYWdlcy5pc0Vt
cHR5KCkgfHwgbV9pc0luUHJvY2Vzc0NhY2hlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoIW1fcHJvY2Vzc1Bvb2wtPnNob3VsZFRlcm1pbmF0ZSh0aGlzKSkKQEAgLTEzNDQsNiAr
MTQxMSwyMyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWN0aXZlUGFnZXNEb21haW5zRm9yVGVz
dGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcgogICAgIGNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRBY3RpdmVQYWdlc09yaWdp
bnNGb3JUZXN0aW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0
IFVSTCYgdXJsKQoreworICAgIC8vIFRoaXMgcHJvY2VzcyBoYXMgYmVlbiB1c2VkIGZvciBzZXZl
cmFsIHJlZ2lzdHJhYmxlIGRvbWFpbnMgYWxyZWFkeS4KKyAgICBpZiAobV9yZWdpc3RyYWJsZURv
bWFpbiAmJiBtX3JlZ2lzdHJhYmxlRG9tYWluLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHRvUmVnaXN0cmFibGVEb21haW4odXJsKTsK
KyAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSBy
ZWdpc3RyYWJsZURvbWFpbikgeworICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21h
aW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFp
bnMuCisgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBTdHJpbmcoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIEFzc29jaWF0ZSB0aGUgcHJvY2VzcyB3aXRoIHRoaXMgcmVn
aXN0cmFibGUgZG9tYWluLgorICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKTsKK30KKwogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAKIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp0YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlYTgwOTc5
NjIxZTgxNjJjODJkNjIwN2NjM2UyYjQ2ODFhNWYyMTZmLi4zNzZmM2Q1Nzc5M2U3YmZjNDkxYzM1
MzYzZDIwODgzMmQ3ZGY0NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaApAQCAtMTA4LDYgKzEwOCwxMCBAQCBwdWJsaWM6CiAKICAgICBXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2woKSBjb25zdCB7IEFTU0VSVChtX3Byb2Nlc3NQb29sKTsgcmV0dXJuICpt
X3Byb2Nlc3NQb29sLmdldCgpOyB9CiAKKyAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW4oKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLnZhbHVlT3IoU3RyaW5nKCkpOyB9Cisg
ICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOworICAgIGJvb2wgaXNJblByb2Nlc3ND
YWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQorCiAgICAgLy8gRklY
TUU6IFdlYnNpdGVEYXRhU3RvcmVzIHNob3VsZCBiZSBtYWRlIHBlci1XZWJQYWdlUHJveHkgdGhy
b3VnaG91dCBXZWJLaXQyCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQogCkBAIC0xMjYsNiAr
MTMwLDcgQEAgcHVibGljOgogCiAgICAgdHlwZW5hbWUgV2ViUGFnZVByb3h5TWFwOjpWYWx1ZXND
b25zdEl0ZXJhdG9yUmFuZ2UgcGFnZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAudmFsdWVz
KCk7IH0KICAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VNYXAu
c2l6ZSgpOyB9CisgICAgdW5zaWduZWQgcHJvdmlzaW9uYWxQYWdlQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3Zpc2lvbmFsUGFnZXMuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgdmlzaWJsZVBh
Z2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVBhZ2VDb3VudGVyLnZhbHVlKCk7IH0K
IAogICAgIHZvaWQgYWN0aXZlUGFnZXNEb21haW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsgLy8gVGhpcyBpcyB3aGF0IGlzIHJlcG9ydGVk
IHRvIEFjdGl2aXR5TW9uaXRvci4KQEAgLTI0OSw2ICsyNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzaHV0RG93bigpOwogICAgIHZvaWQgbWF5YmVTaHV0RG93bigpOwogCisgICAgdm9pZCBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmKTsKKwogcHJvdGVjdGVk
OgogICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFdlYlByb2Nlc3NQ
cm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBJc1ByZXdhcm1lZCk7CkBA
IC0yNzQsNiArMjgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lGcmFtZSh1aW50
NjRfdCk7CiAgICAgdm9pZCBkaWREZXN0cm95VXNlckdlc3R1cmVUb2tlbih1aW50NjRfdCk7CiAK
KyAgICBib29sIGNhbkJlQWRkZWRUb1dlYlByb2Nlc3NDYWNoZSgpIGNvbnN0OwogICAgIHZvaWQg
c2hvdWxkVGVybWluYXRlKGJvb2wmIHNob3VsZFRlcm1pbmF0ZSk7CiAKICAgICB2b2lkIGNyZWF0
ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHBvcnQxLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQyKTsK
QEAgLTI4Niw2ICsyOTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVsaXZlck1lc3NhZ2VQ
b3J0TWVzc2FnZXModWludDY0X3QgbWVzc2FnZUJhdGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBk
aWRDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eSh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIGJvb2wgaXNMb2NhbGx5UmVhY2hhYmxlKTsKIAorICAgIGJvb2wgaGFzUHJvdmlzaW9u
YWxQYWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAgYm9vbCBpc0FsbG93ZWRU
b1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CisK
ICAgICAvLyBQbHVnaW5zCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9p
ZCBnZXRQbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBw
bHVnaW5zLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIGFwcGxpY2F0aW9uUGx1Z2lucywg
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpOwpA
QCAtMzcxLDcgKzM4Miw3IEBAIHByaXZhdGU6CiAgICAgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25z
aXZlbmVzc1RpbWVyIG1fYmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXI7CiAgICAgCiAgICAg
UmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKLSAgICBX
ZWFrT3JTdHJvbmdQdHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7IC8vIFByZS13YXJt
ZWQgcHJvY2Vzc2VzIGRvIG5vdCBob2xkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGVpciBwb29s
LgorICAgIFdlYWtPclN0cm9uZ1B0cjxXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsgLy8g
UHJlLXdhcm1lZCBhbmQgY2FjaGVkIHByb2Nlc3NlcyBkbyBub3QgaG9sZCBhIHN0cm9uZyByZWZl
cmVuY2UgdG8gdGhlaXIgcG9vbC4KIAogICAgIGJvb2wgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJl
YWRTYW5kYm94RXh0ZW5zaW9uOyAvLyBUcnVlIGlmIGEgcmVhZCBleHRlbnNpb24gZm9yICIvIiB3
YXMgZXZlciBncmFudGVkIC0gd2UgZG9uJ3QgdHJhY2sgd2hldGhlciBXZWJQcm9jZXNzIHN0aWxs
IGhhcyBpdC4KICAgICBIYXNoU2V0PFN0cmluZz4gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFk
QWNjZXNzOwpAQCAtMzk0LDYgKzQwNSw5IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFN0cmlu
ZywgdWludDY0X3Q+IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwOwogCisgICAgT3B0aW9uYWw8U3Ry
aW5nPiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIGJvb2wgbV9pc0luUHJvY2Vzc0NhY2hlIHsg
ZmFsc2UgfTsKKwogICAgIGVudW0gY2xhc3MgTm9Pck1heWJlIHsgTm8sIE1heWJlIH0gbV9pc1Jl
c3BvbnNpdmU7CiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZChib29sIHdlYlByb2Nlc3NJ
c1Jlc3BvbnNpdmUpPj4gbV9pc1Jlc3BvbnNpdmVDYWxsYmFja3M7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgyMWEwNmEzZTM3YjY0
ZTU3NDlhMmExZjZlNDRhMzMwNDY5OGM4YjMuLjgyYmI1Yzc2ODk5YjFiODFhYzAwNTQ0MTg4ZmQ0
NmE1N2FlYTkzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzY4NSw2ICszNjg1LDggQEAKIAkJODMyQUUyNTExQkUyRThDRDAwRkFB
RTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkVEMTg5MUUyRkUxM0Iw
MDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzJFRDE4QTFFMkZFMTNCMDA2
QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMzk3QzY2MjIxMjRCRDEwMEI2MjM4OCAvKiBX
ZWJQcm9jZXNzQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUHJvY2Vzc0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMzOTdD
NjcyMjEyNEJEMTAwQjYyMzg4IC8qIFdlYlByb2Nlc3NDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUxMDFBODQyQzg3MDBD
RkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTAs
NiArNzQ5Miw4IEBACiAJCQkJQkM1NzRFNjExMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVu
dVByb3h5LmggKi8sCiAJCQkJQkNENTk3RkUxMTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZlcmVu
Y2VzLmNwcCAqLywKIAkJCQlCQ0Q1OTdGRDExMkI1N0JFMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5j
ZXMuaCAqLywKKwkJCQk4MzM5N0M2NjIyMTI0QkQxMDBCNjIzODggLyogV2ViUHJvY2Vzc0NhY2hl
LmNwcCAqLywKKwkJCQk4MzM5N0M2NzIyMTI0QkQxMDBCNjIzODggLyogV2ViUHJvY2Vzc0NhY2hl
LmggKi8sCiAJCQkJMUFGQTRCOEQxQTY1QTlFMjAwNkM0QUI0IC8qIFdlYlByb2Nlc3NMaWZldGlt
ZU9ic2VydmVyLmNwcCAqLywKIAkJCQkxQUZBNEI4RTFBNjVBOUUyMDA2QzRBQjQgLyogV2ViUHJv
Y2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuaCAqLywKIAkJCQkxQUZBNEI4OTFBNjVBMUQwMDA2QzRBQjQg
LyogV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMjgyMjA1MGU0YWI1MWEyODQ5MTJiZWZjNGQwM2FiMjUy
YTBlZmRjZi4uOTllOWFmYWU0OTMwNWM3YjY4ZGIzNWM4OGVmM2U3MzdiYTE3Nzc1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMjg1LDYgKzI4NSwyMCBAQCB2
b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmICghbV9zdXBwcmVzc01lbW9yeVByZXNzdXJl
SGFuZGxlcikgewogICAgICAgICBhdXRvJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpOwogICAgICAgICBtZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuc2V0TG93TWVtb3J5SGFuZGxlcihbdGhpc10gKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJv
bm91cyBzeW5jaHJvbm91cykgeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgICAgIC8vIElm
IHRoaXMgaXMgYSBwcm9jZXNzIHdlIGtlZXAgYXJvdW5kIGZvciBwZXJmb3JtYW5jZSwga2lsbCBp
dCBvbiBtZW1vcnkgcHJlc3N1cmUgaW5zdGVhZCBvZiB0cnlpbmcgdG8gZnJlZSB1cCBpdHMgbWVt
b3J5LgorICAgICAgICAgICAgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OkNhY2hl
ZFdlYkNvbnRlbnQgfHwgbV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6UHJld2FybWVkV2Vi
Q29udGVudCB8fCBhcmVBbGxQYWdlc1N1c3BlbmRlZCgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OkNhY2hlZFdlYkNvbnRlbnQpCisgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJDYWNoZWQgV2ViUHJvY2VzcyAlaSBp
cyBleGl0aW5nIGR1ZSB0byBtZW1vcnkgcHJlc3N1cmUiLCBnZXRwaWQoKSk7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6UHJld2FybWVkV2Vi
Q29udGVudCkKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIlByZXdh
cm1lZCBXZWJQcm9jZXNzICVpIGlzIGV4aXRpbmcgZHVlIHRvIG1lbW9yeSBwcmVzc3VyZSIsIGdl
dHBpZCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3MsICJTdXNwZW5kZWQgV2ViUHJvY2VzcyAlaSBpcyBleGl0aW5nIGR1ZSB0
byBtZW1vcnkgcHJlc3N1cmUiLCBnZXRwaWQoKSk7CisgICAgICAgICAgICAgICAgc3RvcFJ1bkxv
b3AoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisjZW5kaWYKKwog
ICAgICAgICAgICAgYXV0byBtYWludGFpblBhZ2VDYWNoZSA9IG1faXNTdXNwZW5kaW5nICYmIGhh
c1BhZ2VSZXF1aXJpbmdQYWdlQ2FjaGVXaGlsZVN1c3BlbmRlZCgpID8gV2ViQ29yZTo6TWFpbnRh
aW5QYWdlQ2FjaGU6OlllcyA6IFdlYkNvcmU6Ok1haW50YWluUGFnZUNhY2hlOjpObzsKICAgICAg
ICAgICAgIFdlYkNvcmU6OnJlbGVhc2VNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzLCBtYWlu
dGFpblBhZ2VDYWNoZSk7CiAgICAgICAgIH0pOwpAQCAtNDU3LDYgKzQ3MSwzMiBAQCBib29sIFdl
YlByb2Nlc3M6Omhhc1BhZ2VSZXF1aXJpbmdQYWdlQ2FjaGVXaGlsZVN1c3BlbmRlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFdlYlByb2Nlc3M6OmFyZUFsbFBhZ2VzU3Vz
cGVuZGVkKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKCFwYWdlLT5pc1N1c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJQcm9jZXNz
OjpzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wgaXNJblByb2Nlc3NDYWNoZSkKK3sKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgaWYgKGlzSW5Qcm9jZXNzQ2FjaGUpIHsKKyAgICAgICAgQVNTRVJUKG1f
cHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQpOworICAgICAgICBtX3Byb2Nl
c3NUeXBlID0gUHJvY2Vzc1R5cGU6OkNhY2hlZFdlYkNvbnRlbnQ7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgQVNTRVJUKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OkNhY2hlZFdlYkNvbnRl
bnQpOworICAgICAgICBtX3Byb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ7Cisg
ICAgfQorCisgICAgdXBkYXRlUHJvY2Vzc05hbWUoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGlzSW5Qcm9jZXNzQ2FjaGUpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUHJvY2Vzczo6bWFya0lz
Tm9Mb25nZXJQcmV3YXJtZWQoKQogewogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGI5Y2EyZWU0MTcwN2JjNWJjNjJiYjExYmQ0NjI4ZWZj
NGIyNzBjM2YuLjQ5YzRhYzEyNjJhODA2NThlZWM2NTcxOTEwMTM5NzMzNTkxYmE1MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjY3LDYgKzI2Nyw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHBsYXRmb3JtVGVybWluYXRlKCk7CiAKKyAgICB2b2lkIHNldElzSW5Q
cm9jZXNzQ2FjaGUoYm9vbCk7CiAgICAgdm9pZCBtYXJrSXNOb0xvbmdlclByZXdhcm1lZCgpOwog
CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJpbmcm
KTsKQEAgLTM0NCw2ICszNDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWN0dWFsUHJlcGFyZVRv
U3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCk7CiAKICAgICBib29s
IGhhc1BhZ2VSZXF1aXJpbmdQYWdlQ2FjaGVXaGlsZVN1c3BlbmRlZCgpIGNvbnN0OworICAgIGJv
b2wgYXJlQWxsUGFnZXNTdXNwZW5kZWQoKSBjb25zdDsKIAogICAgIHZvaWQgZW5zdXJlQXV0b21h
dGlvblNlc3Npb25Qcm94eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlmaWVyKTsKICAgICB2
b2lkIGRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7CkBAIC00NjUsNyArNDY3LDcgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q1BVTW9uaXRvcj4gbV9jcHVN
b25pdG9yOwogICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAotICAgIGVudW0gY2xh
c3MgUHJvY2Vzc1R5cGUgeyBJbnNwZWN0b3IsIFNlcnZpY2VXb3JrZXIsIFByZXdhcm1lZFdlYkNv
bnRlbnQsIFdlYkNvbnRlbnQgfTsKKyAgICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsgSW5zcGVj
dG9yLCBTZXJ2aWNlV29ya2VyLCBQcmV3YXJtZWRXZWJDb250ZW50LCBDYWNoZWRXZWJDb250ZW50
LCBXZWJDb250ZW50IH07CiAgICAgUHJvY2Vzc1R5cGUgbV9wcm9jZXNzVHlwZSB7IFByb2Nlc3NU
eXBlOjpXZWJDb250ZW50IH07CiAgICAgU3RyaW5nIG1fdWlQcm9jZXNzTmFtZTsKICAgICBTdHJp
bmcgbV9zZWN1cml0eU9yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNmY2Y2EzNjJlZmM2Mjg2ZTg5ZmY0NmRjZTgwMmRiY2Jl
ZmU4NzcyMy4uM2Q3M2YyZTljYzYyMDZiNzE3N2YyZTJkZTAxYWJlOWM4NmJkMzU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEx
OSw2ICsxMTksNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyIHBvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKICAgICBN
ZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciBwb3J0KQogCisgICAgU2V0SXNJblByb2Nlc3NDYWNoZShib29sIGlzSW5Qcm9jZXNzQ2Fj
aGUpCiAgICAgTWFya0lzTm9Mb25nZXJQcmV3YXJtZWQoKQogICAgIFVwZGF0ZUFjdGl2ZVBhZ2Vz
KCkKICAgICBHZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKCkgLT4gKFZlY3RvcjxTdHJp
bmc+IGFjdGl2ZU9yaWdpbnMpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBlNzdmNzE1NGRiOTQ4ZTZiZmQzNjk3NzY0
YzFhNGI5ZTJmZDM5NDdkLi5kMTYyNTE2NTk4YTcxODNhYWMyNGIwMGZlMjYyYzI1YmNjYTg3ZTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0KQEAgLTI0MCw2ICsyNDAsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NO
YW1lKCkKICAgICBjYXNlIFByb2Nlc3NUeXBlOjpQcmV3YXJtZWRXZWJDb250ZW50OgogICAgICAg
ICBhcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RS
SU5HKCIlQCBXZWIgQ29udGVudCAoUHJld2FybWVkKSIsICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdl
YiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0
cmluZyAqKW1fdWlQcm9jZXNzTmFtZV07CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHJvY2Vz
c1R5cGU6OkNhY2hlZFdlYkNvbnRlbnQ6CisgICAgICAgIGFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBDb250ZW50IChDYWNo
ZWQpIiwgIlZpc2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0
aGUgYXBwbGljYXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopbV91aVByb2Nlc3NOYW1lXTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcm9jZXNzVHlwZTo6V2ViQ29udGVudDoKICAgICAgICAg
YXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklO
RygiJUAgV2ViIENvbnRlbnQiLCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhl
IGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKiltX3VpUHJv
Y2Vzc05hbWVdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMmNjNmE1MTIwZDc1OGE0MjY5YjBiNGZlOWFjMzY5OTMy
NWFhNjNkLi4xZDJlODEyYzI5ZDExOGJjYzAxY2I0MmEwNGRmM2RiNzU3OTAzZmIwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTktMDItMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBbUFNPTl0gSW50cm9kdWNlIGEgV2ViQ29udGVudCBQcm9jZXNzIGNhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ1OTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ2NzkzMzk3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVu
LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMgdG8gdHVybiBvbiB0aGUgV2ViQ29udGVudCBQ
cm9jZXNzIGNhY2hlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKwogMjAxOS0wMi0xMiAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZ1cnRoZXIgcmVzdHJpY3Rpbmcgd2Vi
YXJjaGl2ZSBsb2FkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggMjJlMWNk
NTgzZjA1ZjE0ZGRkZGE0NDgxY2E4Yjc4Yzg2YjAxMTJjNC4uYzI3Nzg1MDE4NThkYmU4YjdjNWJj
NTljMWJkNDQwYzU3ODNiNjE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBA
IC00MzIsMTEgKzQzMiwxOCBAQCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCBm
dW5jdGlvbihldmVudCkgewogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi1URVNUKFByb2Nl
c3NTd2FwLCBCYXNpYykKK3N0YXRpYyBSZXRhaW5QdHI8X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uPiBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKIHsKICAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS51c2VzV2ViUHJvY2Vzc0NhY2hlID0gWUVTOwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7CisgICAgcmV0
dXJuIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKK30KKworVEVTVChQcm9jZXNzU3dhcCwgQmFz
aWMpCit7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00ODEsOSArNDg4
LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQmFzaWMpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIExvYWRB
ZnRlclBvbGljeURlY2lzaW9uKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByZXdhcm1zUHJv
Y2Vzc2VzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQ
b29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKQEAgLTUxOSw5ICs1MjQsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBMb2FkQWZ0ZXJQb2xp
Y3lEZWNpc2lvbikKIAogVEVTVChQcm9jZXNzU3dhcCwgS2lsbFdlYkNvbnRlbnRQcm9jZXNzQWZ0
ZXJTZXJ2ZXJSZWRpcmVjdFBvbGljeURlY2lzaW9uKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb24gPSBZRVM7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
LnByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBh
dXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBh
dXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKQEAgLTU3MCw5ICs1NzMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBL
aWxsV2ViQ29udGVudFByb2Nlc3NBZnRlclNlcnZlclJlZGlyZWN0UG9saWN5RGVjaXNpb24pCiAK
IFRFU1QoUHJvY2Vzc1N3YXAsIE5vU3dhcHBpbmdGb3JlVExEUGx1czIpCiB7Ci0gICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
LnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNjA3LDggKzYwOCw3IEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIE5vU3dhcHBpbmdGb3JlVExEUGx1czIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEJh
Y2spCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTcxNSw4ICs3MTUsNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciogcGFnZVdpdGhGcmFnbWVudFRlc3RCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAog
CiBURVNUKFByb2Nlc3NTd2FwLCBIaXN0b3J5TmF2aWdhdGlvblRvRnJhZ21lbnRVUkwpCiB7Ci0g
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTc2OCw4ICs3NjcsNyBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBIaXN0b3J5TmF2aWdhdGlvblRvRnJhZ21lbnRVUkwpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFN1
c3BlbmRlZFBhZ2VEaWVzQWZ0ZXJCYWNrRm9yd2FyZExpc3RJdGVtSXNHb25lKQogewotICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0
byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CkBAIC04MDEsNyArNzk5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU3Vz
cGVuZGVkUGFnZURpZXNBZnRlckJhY2tGb3J3YXJkTGlzdEl0ZW1Jc0dvbmUpCiAgICAgRVhQRUNU
X05FKHdlYmtpdFBJRCwgYXBwbGVQSUQpOwogCiAgICAgLy8gd2Via2l0Lm9yZyArIGFwcGxlLmNv
bSBwcm9jZXNzZXMuCi0gICAgRVhQRUNUX0VRKDJVLCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3ND
b3VudElnbm9yaW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDJVLCBbcHJvY2Vzc1Bvb2wg
X3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAKICAgICBbd2Vi
VmlldyBnb0JhY2tdOyAvLyBCYWNrIHRvIHdlYmtpdC5vcmcuCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKQEAgLTgxMCw3ICs4MDgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBT
dXNwZW5kZWRQYWdlRGllc0FmdGVyQmFja0ZvcndhcmRMaXN0SXRlbUlzR29uZSkKICAgICBFWFBF
Q1RfRVEod2Via2l0UElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKIAogICAg
IC8vIHdlYmtpdC5vcmcgKyBhcHBsZS5jb20gcHJvY2Vzc2VzLgotICAgIEVYUEVDVF9FUSgyVSwg
W3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVY
UEVDVF9FUSgyVSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1l
ZEFuZENhY2hlZF0pOwogCiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvbWFpbjIuaHRt
bCJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTgyMSwxNSArODE5
LDE0IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFN1c3BlbmRlZFBhZ2VEaWVzQWZ0ZXJCYWNrRm9yd2Fy
ZExpc3RJdGVtSXNHb25lKQogICAgIEVYUEVDVF9FUSh3ZWJraXRQSUQsIFt3ZWJWaWV3IF93ZWJQ
cm9jZXNzSWRlbnRpZmllcl0pOwogCiAgICAgLy8gYXBwbGUuY29tIGlzIG5vdCBsb25nZXIgcHJl
c2VudCBpbiB0aGUgYmFjay9mb3J3YXJkIGxpc3QgYW5kIHRoZXJlIHNob3VsZCB0aGVyZWZvcmUg
YmUgbm8tc3VzcGVuZGVkIHBhZ2UgZm9yIGl0LgotICAgIHdoaWxlIChbcHJvY2Vzc1Bvb2wgX3dl
YlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkXSA+IDF1KQorICAgIHdoaWxlIChbcHJvY2Vz
c1Bvb2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSA+IDF1KQog
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwogfQogCiAjaWYgUExB
VEZPUk0oTUFDKQogVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFnZXNJbkFjdGl2aXR5TW9u
aXRvcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtOTE3LDggKzkxNCw3IEBAIFRFU1Qo
UHJvY2Vzc1N3YXAsIFN1c3BlbmRlZFBhZ2VzSW5BY3Rpdml0eU1vbml0b3IpCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIEJhY2tXaXRob3V0U3VzcGVuZGVkUGFnZSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtOTc1LDggKzk3MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIEJhY2tXaXRob3V0U3Vz
cGVuZGVkUGFnZSkKIAogVEVTVChQcm9jZXNzU3dhcCwgQmFja05hdmlnYXRpb25BZnRlclNlc3Np
b25SZXN0b3JlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7
CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xMDMyLDggKzEwMjcsNyBA
QCBURVNUKFByb2Nlc3NTd2FwLCBCYWNrTmF2aWdhdGlvbkFmdGVyU2Vzc2lvblJlc3RvcmUpCiAK
IFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIHsKLSAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1
dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRo
Q29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwpAQCAtMTA3Miw4ICsxMDY2LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwg
Q3Jvc3NTaXRlV2luZG93T3Blbk5vT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc09y
aWdpbkJ1dFNhbWVTaXRlV2luZG93T3Blbk5vT3BlbmVyKQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CkBAIC0xMTEyLDggKzExMDUsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc09yaWdpbkJ1
dFNhbWVTaXRlV2luZG93T3Blbk5vT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1Np
dGVXaW5kb3dPcGVuV2l0aE9wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZp
Z2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVyID0gWUVTOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtMTE1Myw4
ICsxMTQ1LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlV2luZG93T3BlbldpdGhPcGVu
ZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVTaXRlV2luZG93T3Blbk5vT3BlbmVyKQogewot
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xMTkyLDggKzExODMsNyBAQCBURVNUKFByb2Nlc3NT
d2FwLCBTYW1lU2l0ZVdpbmRvd09wZW5Ob09wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jv
c3NTaXRlQmxhbmtUYXJnZXRXaXRoT3BlbmVyKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBw
c29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFk
b3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBA
IC0xMjMyLDggKzEyMjIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVCbGFua1Rhcmdl
dFdpdGhPcGVuZXIpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUJsYW5rVGFyZ2V0SW1w
bGljaXROb09wZW5lcikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0g
WUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTI3Miw4ICsxMjYx
LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQmxhbmtUYXJnZXRJbXBsaWNpdE5vT3Bl
bmVyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVCbGFua1RhcmdldE5vT3BlbmVyKQog
ewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xMzEyLDggKzEzMDAsNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBDcm9zc1NpdGVCbGFua1RhcmdldE5vT3BlbmVyKQogCiBURVNUKFByb2Nlc3NTd2Fw
LCBTYW1lU2l0ZUJsYW5rVGFyZ2V0Tm9PcGVuZXIpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0g
YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTEzNTQsOCArMTM0MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVTaXRlQmxhbmtUYXJn
ZXROb09wZW5lcikKIAogVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3RGcm9tTmV3V2Vi
VmlldykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTM4OCw4ICsxMzc0LDcgQEAgVEVT
VChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3RGcm9tTmV3V2ViVmlldykKIAogVEVTVChQcm9j
ZXNzU3dhcCwgU2VydmVyUmVkaXJlY3QpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Q
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHRO
UyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE0
MzUsOCArMTQyMCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFNlcnZlclJlZGlyZWN0KQogVEVTVChQ
cm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3QyKQogewogICAgIC8vIFRoaXMgdGVzdHMgYSBsb2Fk
IHRoYXQgKnN0YXJ0cyBvdXQqIHRvIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgcHJldmlvdXMgbG9h
ZCwgYnV0IHRoZW4gcmVkaXJlY3RzIHRvIGEgbmV3IG9yaWdpbi4KLSAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vz
c1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtMTQ5Myw4ICsxNDc3LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJl
Y3QyKQogCiBURVNUKFByb2Nlc3NTd2FwLCBUZXJtaW5hdGVQcm9jZXNzUmlnaHRBZnRlclN3YXAp
CiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7
CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTE1MzMsOCArMTUxNiw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBsaW5rVG9XZWJLaXRCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAogCiBURVNUKFBy
b2Nlc3NTd2FwLCBQb2xpY3lDYW5jZWxBZnRlclNlcnZlclJlZGlyZWN0KQogewotICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CkBAIC0xNTg3LDggKzE1NjksNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQb2xp
Y3lDYW5jZWxBZnRlclNlcnZlclJlZGlyZWN0KQogCiBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1Np
dGVEb3dubG9hZCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVT
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTY0OCw4ICsxNjI5LDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHN5c3RlbVByZXZpZXdDcm9zc09yaWdpblRlc3RCeXRlcyA9
IFIiUFNPTlJFU09VUkNFKAogCiBURVNUKFByb2Nlc3NTd2FwLCBTYW1lT3JpZ2luU3lzdGVtUHJl
dmlldykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMTY4NSw4ICsxNjY1LDcgQEAgVEVT
VChQcm9jZXNzU3dhcCwgU2FtZU9yaWdpblN5c3RlbVByZXZpZXcpCiAKIFRFU1QoUHJvY2Vzc1N3
YXAsIENyb3NzT3JpZ2luU3lzdGVtUHJldmlldykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBz
T25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
cHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBh
ZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpA
QCAtMTcyNSw3ICsxNzA0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NPcmlnaW5TeXN0ZW1Q
cmV2aWV3KQogZW51bSBjbGFzcyBTaG91bGRFbmFibGVQU09OIHsgTm8sIFllcyB9Owogc3RhdGlj
IHZvaWQgcnVuQ2xpZW50U2lkZVJlZGlyZWN0VGVzdChTaG91bGRFbmFibGVQU09OIHNob3VsZEVu
YWJsZVBTT04pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdh
dGlvbiA9IHNob3VsZEVuYWJsZVBTT04gPT0gU2hvdWxkRW5hYmxlUFNPTjo6WWVzID8gWUVTIDog
Tk87CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCkBAIC0xODYwLDkgKzE4MzksNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVDbGll
bnRTaWRlUmVkaXJlY3RXaXRoUFNPTikKIAogVEVTVChQcm9jZXNzU3dhcCwgQ3Jvc3NTaXRlQ2xp
ZW50U2lkZVJlZGlyZWN0RnJvbUZpbGVVUkwpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbiA9IFlFUzsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJl
d2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8g
d2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwpAQCAtMTg5MSwxNSArMTg2OCwxNCBAQCBURVNUKFByb2Nlc3NTd2FwLCBD
cm9zc1NpdGVDbGllbnRTaWRlUmVkaXJlY3RGcm9tRmlsZVVSTCkKICAgICBhdXRvIHBpZDIgPSBb
d2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogICAgIEVYUEVDVF9ORShwaWQxLCBwaWQy
KTsKIAotICAgIEVYUEVDVF9FUSgxVSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25v
cmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgxVSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9j
ZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVYUEVDVF9UUlVFKHdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOwogICAgIEVYUEVDVF9UUlVFKGRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdCk7CiB9CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQmFja0FmdGVyQ2xp
ZW50U2lkZVJlZGlyZWN0KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAg
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24g
PSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xOTczLDcgKzE5
NDksNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUJhY2tBZnRlckNsaWVudFNpZGVSZWRp
cmVjdCkKIAogc3RhdGljIHZvaWQgcnVuTmF2aWdhdGlvbldpdGhMb2NrZWRIaXN0b3J5VGVzdChT
aG91bGRFbmFibGVQU09OIHNob3VsZEVuYWJsZVBTT04pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IHNob3VsZEVuYWJsZVBTT04gPT0gU2hvdWxk
RW5hYmxlUFNPTjo6WWVzID8gWUVTIDogTk87CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCkBAIC0yMDcyLDggKzIwNDgsNyBAQCB3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oZXZ0KSB7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNlc3Npb25TdG9y
YWdlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yMTI5LDggKzIxMDQsNyBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBTZXNzaW9uU3RvcmFnZSkKIAogVEVTVChQcm9jZXNzU3dhcCwgUmV1c2VTdXNw
ZW5kZWRQcm9jZXNzKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107
CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yMTkwLDggKzIxNjQsNyBA
QCB2YXIgbXlXb3JrZXIgPSBuZXcgV29ya2VyKCd3b3JrZXIuanMnKTsKIAogVEVTVChQcm9jZXNz
U3dhcCwgUmV1c2VTdXNwZW5kZWRQcm9jZXNzRXZlbklmUGFnZUNhY2hlRmFpbHMpCiB7Ci0gICAg
YXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRv
IHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRv
IHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKQEAgLTIyNDMsOCArMjIxNiw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFJl
dXNlU3VzcGVuZGVkUHJvY2Vzc0V2ZW5JZlBhZ2VDYWNoZUZhaWxzKQogCiBURVNUKFByb2Nlc3NT
d2FwLCBSZXVzZVN1c3BlbmRlZFByb2Nlc3NPbkJhY2tFdmVuSWZQYWdlQ2FjaGVGYWlscykKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAg
IGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjI5Miw4ICsyMjY0LDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIHdpdGhTdWJmcmFtZXNUZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9j
ZXNzU3dhcCwgSGlzdG9yeUl0ZW1JRENvbmZ1c2lvbikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
cHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBh
ZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpA
QCAtMjM1OCw4ICsyMzI5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgSGlzdG9yeUl0ZW1JRENvbmZ1
c2lvbikKIAogVEVTVChQcm9jZXNzU3dhcCwgR29Ub1NlY29uZEl0ZW1JbkJhY2tIaXN0b3J5KQog
ewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAg
ICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNDQ1LDExICsyNDE1LDkgQEAgZW51bSBjbGFzcyBS
ZXRhaW5QYWdlSW5CdW5kbGUgeyBObywgWWVzIH07CiAKIHZvaWQgdGVzdFJldXNlU3VzcGVuZGVk
UHJvY2Vzc0ZvclJlZ3VsYXJOYXZpZ2F0aW9uKFJldGFpblBhZ2VJbkJ1bmRsZSByZXRhaW5QYWdl
SW5CdW5kbGUpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24oKTsKICAgICBpZiAocmV0YWluUGFnZUluQnVuZGxlID09IFJldGFpblBhZ2VJbkJ1bmRs
ZTo6WWVzKQogICAgICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEluamVjdGVkQnVu
ZGxlVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJUZXN0V2ViS2l0
QVBJIiB3aXRoRXh0ZW5zaW9uOkAid2tidW5kbGUiXV07Ci0KICAgICBhdXRvIHByb2Nlc3NQb29s
ID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgaWYgKHJldGFpblBhZ2VJbkJ1
bmRsZSA9PSBSZXRhaW5QYWdlSW5CdW5kbGU6OlllcykKICAgICAgICAgW3Byb2Nlc3NQb29sIF9z
ZXRPYmplY3Q6QCJCdW5kbGVSZXRhaW5QYWdlUGx1Z0luIiBmb3JCdW5kbGVQYXJhbWV0ZXI6VGVz
dFdlYktpdEFQSTo6VXRpbDo6VGVzdFBsdWdJbkNsYXNzTmFtZVBhcmFtZXRlcl07CkBAIC0yNTI1
LDggKzI0OTMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lc09ubHlTdWJmcmFtZTIg
PSBSIlBTT05SRVNPVVJDRSgKIAogVEVTVChQcm9jZXNzU3dhcCwgTWFpbkZyYW1lc09ubHkpCiB7
Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246WUVTXTsKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0
V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTI1NzEsOCArMjUzOCw3IEBAIG9ubG9hZCA9ICgpID0+
IHsKIAogVEVTVChQcm9jZXNzU3dhcCwgUGFnZVpvb21MZXZlbEFmdGVyU3dhcCkKIHsKLSAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8g
cHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8g
d2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwpAQCAtMjY0OCw5ICsyNjE0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG5h
dmlnYXRlQmVmb3JlUGFnZUxvYWRFbmRCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAogCiBURVNUKFBy
b2Nlc3NTd2FwLCBOYXZpZ2F0ZUNyb3NzU2l0ZUJlZm9yZVBhZ2VMb2FkRW5kKQogewotICAgIGF1
dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
c2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBzZXRQcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHk6WUVTXTsKKyAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7
CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTI2NzksOCArMjY0Myw3IEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIE5hdmlnYXRlQ3Jvc3NTaXRlQmVmb3JlUGFnZUxvYWRFbmQpCiAKIFRFU1QoUHJv
Y2Vzc1N3YXAsIERvU2FtZVNpdGVOYXZpZ2F0aW9uQWZ0ZXJDcm9zc1NpdGVQcm92aXNpb25hbExv
YWRTdGFydGVkKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107Cisg
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29s
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNzIxLDggKzI2ODQsNyBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBEb1NhbWVTaXRlTmF2aWdhdGlvbkFmdGVyQ3Jvc3NTaXRlUHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCkKIAogVEVTVChQcm9jZXNzU3dhcCwgU3VzcGVuZGVkUGFnZUxpbWl0
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yNzcxLDEzICsyNzMzLDEyIEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIFN1c3BlbmRlZFBhZ2VMaW1pdCkKICAgICBFWFBFQ1RfRVEoNXUsIHNlZW5QSURz
LnNpemUoKSk7CiAKICAgICAvLyBCdXQgbm90IGFsbCBvZiB0aG9zZSBwcm9jZXNzZXMgc2hvdWxk
IHN0aWxsIGJlIGFsaXZlICgxIHZpc2libGUsIG1heGltdW1TdXNwZW5kZWRQYWdlQ291bnQgc3Vz
cGVuZGVkKS4KLSAgICBFWFBFQ1RfRVEoW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25v
cmluZ1ByZXdhcm1lZF0sICgxVSArIG1heGltdW1TdXNwZW5kZWRQYWdlQ291bnQpKTsKKyAgICBF
WFBFQ1RfRVEoW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFu
ZENhY2hlZF0sICgxVSArIG1heGltdW1TdXNwZW5kZWRQYWdlQ291bnQpKTsKIH0KIAogVEVTVChQ
cm9jZXNzU3dhcCwgUGFnZUNhY2hlMSkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdh
dGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMjgwMiw3
ICsyNzYzLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgUGFnZUNhY2hlMSkKIAogICAgIGF1dG8gcGlk
QWZ0ZXJMb2FkMSA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CiAKLSAgICBFWFBF
Q1RfRVEoMXUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWRd
KTsKKyAgICBFWFBFQ1RfRVEoMXUsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vzc0NvdW50SWdub3Jp
bmdQcmV3YXJtZWRBbmRDYWNoZWRdKTsKIAogICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20v
bWFpbi5odG1sIl1dOwogCkBAIC0yODEyLDcgKzI3NzMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQ
YWdlQ2FjaGUxKQogCiAgICAgYXV0byBwaWRBZnRlckxvYWQyID0gW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXTsKIAotICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9j
ZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQ
b29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVY
UEVDVF9ORShwaWRBZnRlckxvYWQxLCBwaWRBZnRlckxvYWQyKTsKIAogICAgIFt3ZWJWaWV3IGdv
QmFja107CkBAIC0yODIzLDcgKzI3ODQsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdlQ2FjaGUx
KQogCiAgICAgYXV0byBwaWRBZnRlckxvYWQzID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlm
aWVyXTsKIAotICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJ
Z25vcmluZ1ByZXdhcm1lZF0pOworICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQ
cm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVYUEVDVF9FUShw
aWRBZnRlckxvYWQxLCBwaWRBZnRlckxvYWQzKTsKICAgICBFWFBFQ1RfRVEoMXUsIFtyZWNlaXZl
ZE1lc3NhZ2VzIGNvdW50XSk7CiAgICAgRVhQRUNUX1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0
KClbMF0gaXNFcXVhbFRvU3RyaW5nOkAiV2FzIHBlcnNpc3RlZCIgXSk7CkBAIC0yODM3LDcgKzI3
OTgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQYWdlQ2FjaGUxKQogCiAgICAgYXV0byBwaWRBZnRl
ckxvYWQ0ID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKIAotICAgIEVYUEVDVF9F
USgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZF0pOwor
ICAgIEVYUEVDVF9FUSgydSwgW3Byb2Nlc3NQb29sIF93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1By
ZXdhcm1lZEFuZENhY2hlZF0pOwogICAgIEVYUEVDVF9FUShwaWRBZnRlckxvYWQyLCBwaWRBZnRl
ckxvYWQ0KTsKICAgICBFWFBFQ1RfRVEoMnUsIFtyZWNlaXZlZE1lc3NhZ2VzIGNvdW50XSk7CiAg
ICAgRVhQRUNUX1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0gaXNFcXVhbFRvU3RyaW5n
OkAiV2FzIHBlcnNpc3RlZCIgXSk7CkBAIC0yODQ2LDkgKzI4MDcsNyBAQCBURVNUKFByb2Nlc3NT
d2FwLCBQYWdlQ2FjaGUxKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOdW1iZXJPZlByZXdhcm1lZFBy
b2Nlc3NlcykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwotICAg
IFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNh
bGx5OllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0yODY2LDcg
KzI4MjUsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOdW1iZXJPZlByZXdhcm1lZFByb2Nlc3NlcykK
ICAgICBkb25lID0gZmFsc2U7CiAKICAgICBFWFBFQ1RfRVEoMnUsIFtwcm9jZXNzUG9vbCBfd2Vi
UHJvY2Vzc0NvdW50XSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nl
c3NDb3VudElnbm9yaW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDF1LCBbcHJvY2Vzc1Bv
b2wgX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAgICAgRVhQ
RUNUX1RSVUUoW3Byb2Nlc3NQb29sIF9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzXSk7CiAKICAgICBy
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAInBzb246Ly93d3cuZ29vZ2xlLmNvbS9tYWluLmh0bWwiXV07CkBAIC0yODc1LDcgKzI4MzQs
NyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOdW1iZXJPZlByZXdhcm1lZFByb2Nlc3NlcykKICAgICBk
b25lID0gZmFsc2U7CiAKICAgICBFWFBFQ1RfRVEoM3UsIFtwcm9jZXNzUG9vbCBfd2ViUHJvY2Vz
c0NvdW50XSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dlYlByb2Nlc3NDb3Vu
dElnbm9yaW5nUHJld2FybWVkXSk7CisgICAgRVhQRUNUX0VRKDJ1LCBbcHJvY2Vzc1Bvb2wgX3dl
YlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkQW5kQ2FjaGVkXSk7CiAgICAgRVhQRUNUX1RS
VUUoW3Byb2Nlc3NQb29sIF9oYXNQcmV3YXJtZWRXZWJQcm9jZXNzXSk7CiB9CiAKQEAgLTI4OTcs
OCArMjg1Niw3IEBAIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIGZ1bmN0aW9u
KGV2ZW50KSB7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFBhZ2VTaG93SGlkZSkKIHsKLSAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNl
dFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJv
Y2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwpAQCAtMjk4OSw4ICsyOTQ3LDcgQEAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBmdW5jdGlvbihldmVudCkgewogCiBURVNUKFByb2Nlc3NTd2FwLCBMb2FkVW5sb2Fk
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0zMDY2LDggKzMwMjMsNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBMb2FkVW5sb2FkKQogCiBURVNUKFByb2Nlc3NTd2FwLCBXZWJJbnNwZWN0b3IpCiB7
Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsK
ICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
ICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTMxMjksOCArMzA4NSw3IEBAIGxpbmsuaHJlZiA9
IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFNhbWVPcmln
aW5CbG9iTmF2aWdhdGlvbikKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAg
ICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQ
cm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzE2NCw4ICsz
MTE5LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgU2FtZU9yaWdpbkJsb2JOYXZpZ2F0aW9uKQogCiBU
RVNUKFByb2Nlc3NTd2FwLCBDcm9zc09yaWdpbkJsb2JOYXZpZ2F0aW9uKQogewotICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CkBAIC0zMjIzLDggKzMxNzcsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDcm9z
c09yaWdpbkJsb2JOYXZpZ2F0aW9uKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvQWJv
dXRCbGFuaykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwor
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9v
bCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzI1Nyw4ICszMjEwLDcgQEAg
VEVTVChQcm9jZXNzU3dhcCwgTmF2aWdhdGVUb0Fib3V0QmxhbmspCiAKIFRFU1QoUHJvY2Vzc1N3
YXAsIE5hdmlnYXRlVG9EYXRhVVJMKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmln
YXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMo
W1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0zMjkx
LDkgKzMyNDMsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvRGF0YVVSTCkKIAogVEVT
VChQcm9jZXNzU3dhcCwgUHJvY2Vzc1JldXNlKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25O
YXZpZ2F0aW9uOllFU107Ci0gICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRBbHdheXNL
ZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzOllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBw
cm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3
ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CkBAIC0zMzM4LDkgKzMyODgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBQcm9j
ZXNzUmV1c2UpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFByb2Nlc3NSZXVzZWVUTERQbHVzMikKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOwotICAgIFtwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gc2V0QWx3YXlzS2VlcEFuZFJldXNlU3dhcHBlZFByb2Nlc3NlczpZRVNd
OworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNz
UG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzM4NSw4ICszMzMzLDcg
QEAgVEVTVChQcm9jZXNzU3dhcCwgUHJvY2Vzc1JldXNlZVRMRFBsdXMyKQogCiBURVNUKFByb2Nl
c3NTd2FwLCBDb25jdXJyZW50SGlzdG9yeU5hdmlnYXRpb25zKQogewotICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNz
UG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CkBAIC0zNDU1LDggKzM0MDIsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb25jdXJyZW50
SGlzdG9yeU5hdmlnYXRpb25zKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZVRvSW52YWxp
ZFVSTCkKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtMzUwNyw4ICszNDUzLDcgQEAgb25w
YWdlc2hvdyA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRl
VG9EYXRhVVJMVGhlbkJhY2spCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
biA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCku
cGFnZUNhY2hlRW5hYmxlZCA9IE5POwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtMzU0Myw4ICszNDg4LDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgTmF2aWdhdGVUb0RhdGFVUkxUaGVuQmFjaykKIAogVEVTVChQcm9jZXNzU3dhcCwgTmF2
aWdhdGVDcm9zc1NpdGVXaXRoUGFnZUNhY2hlRGlzYWJsZWQpCiB7Ci0gICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCkucGFnZUNhY2hlRW5hYmxlZCA9IE5POwogICAgIGF1dG8gcHJvY2Vz
c1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtMzYzNCw4ICszNTc4
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIG5hdmlnYXRlQmFja0Zyb21KU0J5dGVzID0gUiJQU09O
UkVTT1VSQ0UoCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlVG9Dcm9zc1NpdGVUaGVuQmFj
a0Zyb21KUykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwor
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwogICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wYWdlQ2FjaGVF
bmFibGVkID0gTk87CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCkBAIC0zNjc1LDggKzM2MTgsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBOYXZp
Z2F0ZVRvQ3Jvc3NTaXRlVGhlbkJhY2tGcm9tSlMpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIENsb3Nl
UGFnZUFmdGVyQ3Jvc3NTaXRlUHJvdmlzaW9uYWxMb2FkKQogewotICAgIGF1dG8gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNz
U3dhcHNPbk5hdmlnYXRpb24gPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9v
bCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CkBAIC0zNzM0LDggKzM2NzYsNyBAQCBAZW5kCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIExvYWRp
bmdTdGF0ZUFmdGVyUG9saWN5RGVjaXNpb24pCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09u
TmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBz
b25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRv
cHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAg
LTM5NDAsOSArMzg4MSw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE9wZW5lckxpbmtBZnRlckFQSUNv
bnRyb2xsZWRQcm9jZXNzU3dhcHBpbmdPZk9wZW5lZSkKIGVudW0gY2xhc3MgRXhwZWN0U3dhcCB7
IE5vLCBZZXMgfTsKIHN0YXRpYyB2b2lkIHJ1blByb2Nlc3NTd2FwRHVlVG9SZWxhdGVkV2ViVmll
d1Rlc3QoTlNVUkwqIHJlbGF0ZWRWaWV3VVJMLCBOU1VSTCogdGFyZ2V0VVJMLCBFeHBlY3RTd2Fw
IGV4cGVjdFN3YXApCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlF
UzsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNB
dXRvbWF0aWNhbGx5ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
cHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBh
ZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlldzFDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
QEAgLTM5OTgsOSArMzkzNyw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIE5vUHJvY2Vzc1N3YXBEdWVU
b1JlbGF0ZWRWaWV3KQogCiBURVNUKFByb2Nlc3NTd2FwLCBUZXJtaW5hdGVkU3VzcGVuZGVkUGFn
ZVByb2Nlc3MpCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsK
LSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkucHJld2FybXNQcm9jZXNzZXNBdXRv
bWF0aWNhbGx5ID0gWUVTOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNv
blByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAt
NDA2Myw4ICs0MDAwLDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVGVybWluYXRlZFN1c3BlbmRlZFBh
Z2VQcm9jZXNzKQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUJhY2tBbmRGb3J0aCkKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOworICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDExNSw4ICs0MDUxLDcgQEAgVEVTVChQcm9jZXNz
U3dhcCwgTmF2aWdhdGVCYWNrQW5kRm9ydGgpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIFN3YXBPbkxv
YWRIVE1MU3RyaW5nKQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24gPSBZ
RVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nl
c3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00MTU5LDkgKzQwOTQs
NyBAQCBURVNUKFByb2Nlc3NTd2FwLCBTd2FwT25Mb2FkSFRNTFN0cmluZykKIAogVEVTVChQcm9j
ZXNzU3dhcCwgVXNlUHJld2FybWVkUHJvY2Vzc0FmdGVyVGVybWluYXRpbmdOZXR3b3JrUHJvY2Vz
cykKIHsKLSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2Fs
bHkgPSBZRVM7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwpAQCAtNDE5NSw4ICs0MTI4LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgVXNlUHJld2Fy
bWVkUHJvY2Vzc0FmdGVyVGVybWluYXRpbmdOZXR3b3JrUHJvY2VzcykKIAogVEVTVChQcm9jZXNz
U3dhcCwgVXNlU2Vzc2lvbkNvb2tpZXNBZnRlclByb2Nlc3NTd2FwSW5Qcml2YXRlQnJvd3Npbmcp
CiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbiA9IFlFUzsKKyAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSk7
CiAgICAgUmV0YWluUHRyPFdLV2Vic2l0ZURhdGFTdG9yZT4gZXBoZW1lcmFsU3RvcmUgPSBbV0tX
ZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwogCkBAIC00MjU1LDggKzQx
ODcsNyBAQCBURVNUKFByb2Nlc3NTd2FwLCBVc2VTZXNzaW9uQ29va2llc0FmdGVyUHJvY2Vzc1N3
YXBJblByaXZhdGVCcm93c2luZykKIAogVEVTVChQcm9jZXNzU3dhcCwgVGVybWluYXRlUHJvY2Vz
c0FmdGVyUHJvY2Vzc1N3YXApCiB7Ci0gICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb246
WUVTXTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJv
Y2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKQEAgLTQzMDksOCArNDI0
MCw3IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFRlcm1pbmF0ZVByb2Nlc3NBZnRlclByb2Nlc3NTd2Fw
KQogCiBURVNUKFByb2Nlc3NTd2FwLCBOYXZpZ2F0ZUNyb3NzT3JpZ2luV2l0aE9wZW5lZSkKIHsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAg
IGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRX
aXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDM4Nyw4ICs0MzE3LDcgQEAgZnVuY3Rpb24gc2F2ZU9w
ZW5lZSgpCiAKIFRFU1QoUHJvY2Vzc1N3YXAsIE5hdmlnYXRlQ3Jvc3NPcmlnaW5XaXRoT3BlbmVy
KQogewotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00NTE2LDggKzQ0NDUsNyBAQCBURVNUKFByb2Nl
c3NTd2FwLCBOYXZpZ2F0ZUNyb3NzT3JpZ2luV2l0aE9wZW5lcikKIAogVEVTVChQcm9jZXNzU3dh
cCwgR29CYWNrVG9TdXNwZW5kZWRQYWdlV2l0aE1haW5GcmFtZUlEVGhhdElzTm90T25lKQogewot
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uOllFU107CisgICAgYXV0byBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAg
YXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
YXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00NjA3LDggKzQ1MzUsNyBAQCBib2R5IHsKIAogVEVTVChQ
cm9jZXNzU3dhcCwgU2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbikKIHsKLSAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKLSAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldFByb2Nl
c3NTd2Fwc09uTmF2aWdhdGlvbjpZRVNdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwogICAgIGF1dG8gcHJvY2Vzc1Bv
b2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIGF1dG8gd2ViVmlld0Nv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpAQCAtNDY4Nyw4ICs0NjE0LDcgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudEJsb2Nr
aW5nQWZ0ZXJQcm9jZXNzU3dhcCkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OwogICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwot
ICAgIFtwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
OllFU107CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCk7CiAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00ODEwLDEwICs0
NzM2LDcgQEAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVl
fSk7CiAKIFRFU1QoUHJvY2Vzc1N3YXAsIEdldFVzZXJNZWRpYUNhcHR1cmVTdGF0ZSkKIHsKLSAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZ2V0KCkucHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uID0gWUVTOwotICAgIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKS5wcmV3YXJtc1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgPSBZRVM7
Ci0KKyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKICAgICBhdXRvIHByb2Nlc3NQb29sID0gYWRvcHROUyhbW1dLUHJvY2Vz
c1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>