<?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>80660</bug_id>
          
          <creation_ts>2012-03-08 17:59:06 -0800</creation_ts>
          <short_desc>Support W3C Full Screen API proposal</short_desc>
          <delta_ts>2015-04-27 14:35:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html</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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jeremya</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>574443</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-08 17:59:06 -0800</bug_when>
    <thetext>Support W3C Full Screen API proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574447</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-08 18:00:14 -0800</bug_when>
    <thetext>The current Full Screen API proposal can be found here: &lt;http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574651</commentid>
    <comment_count>2</comment_count>
      <attachid>130986</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-08 23:10:46 -0800</bug_when>
    <thetext>Created attachment 130986
Patch

More detailed ChangeLogs to come; I just wanted to give the EWS bots a chance to chew on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574681</commentid>
    <comment_count>3</comment_count>
      <attachid>130986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-08 23:53:39 -0800</bug_when>
    <thetext>Comment on attachment 130986
Patch

Attachment 130986 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11894459</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574907</commentid>
    <comment_count>4</comment_count>
      <attachid>131041</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-09 08:36:26 -0800</bug_when>
    <thetext>Created attachment 131041
Patch

Added accessors to RuntimeEnabledFeatures for the new .idl functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574909</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 08:38:30 -0800</bug_when>
    <thetext>Attachment 131041 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/full...&quot; exit_code: 1
Source/WebCore/ChangeLog:7:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574912</commentid>
    <comment_count>6</comment_count>
      <attachid>131042</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-09 08:43:19 -0800</bug_when>
    <thetext>Created attachment 131042
Patch

Removed the (empty and extraneous) ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574961</commentid>
    <comment_count>7</comment_count>
      <attachid>131042</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 09:43:45 -0800</bug_when>
    <thetext>Comment on attachment 131042
Patch

Attachment 131042 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11892623

New failing tests:
fullscreen/full-screen-remove-ancestor-after.html
fullscreen/video-controls-override.html
fullscreen/full-screen-cancel.html
fullscreen/full-screen-zIndex-after.html
fullscreen/full-screen-remove-ancestor.html
fullscreen/full-screen-placeholder.html
fullscreen/full-screen-remove-children.html
fullscreen/full-screen-remove.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575316</commentid>
    <comment_count>8</comment_count>
      <attachid>131128</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-09 16:09:00 -0800</bug_when>
    <thetext>Created attachment 131128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575393</commentid>
    <comment_count>9</comment_count>
      <attachid>131128</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 18:14:03 -0800</bug_when>
    <thetext>Comment on attachment 131128
Patch

Attachment 131128 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11903957

New failing tests:
fullscreen/full-screen-twice.html
fullscreen/full-screen-css.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576389</commentid>
    <comment_count>10</comment_count>
      <attachid>131380</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-12 12:30:35 -0700</bug_when>
    <thetext>Created attachment 131380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576991</commentid>
    <comment_count>11</comment_count>
      <attachid>131380</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-12 21:21:09 -0700</bug_when>
    <thetext>Comment on attachment 131380
Patch

Attachment 131380 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11949241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577050</commentid>
    <comment_count>12</comment_count>
      <attachid>131548</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-12 22:39:05 -0700</bug_when>
    <thetext>Created attachment 131548
Patch

Fixed windows &apos;possible uninitialized variable use&apos; compile error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577053</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-12 22:40:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/10725086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577079</commentid>
    <comment_count>14</comment_count>
      <attachid>131548</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-12 23:16:35 -0700</bug_when>
    <thetext>Comment on attachment 131548
Patch

Attachment 131548 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11948328</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577087</commentid>
    <comment_count>15</comment_count>
      <attachid>131548</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 23:30:51 -0700</bug_when>
    <thetext>Comment on attachment 131548
Patch

Attachment 131548 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11949273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577110</commentid>
    <comment_count>16</comment_count>
      <attachid>131548</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-12 23:57:30 -0700</bug_when>
    <thetext>Comment on attachment 131548
Patch

Attachment 131548 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11948351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577124</commentid>
    <comment_count>17</comment_count>
      <attachid>131563</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-13 00:25:07 -0700</bug_when>
    <thetext>Created attachment 131563
Patch

One final compilation fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580629</commentid>
    <comment_count>18</comment_count>
      <attachid>131563</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-16 10:19:01 -0700</bug_when>
    <thetext>Comment on attachment 131563
Patch

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

&gt; Source/WebCore/dom/Document.cpp:5105
&gt; +        // 2. Let doc be element&apos;s node document. (i.e. &quot;this&quot;)
&gt; +        Document* doc = this;

We prefer to not abbreviate words in variable names.

&gt; Source/WebCore/dom/Document.cpp:5148
&gt; +        } while (++current != docs.end());

So, Deque iterator is not invalidated for any operations you do above?

&gt; Source/WebCore/dom/Document.cpp:5485
&gt; +void Document::addDocumentToEventQueue(Document* doc)

Please have &quot;fullscreen&quot; somewhere in this name. It&apos;s super confusing otherwise.

As elsewhere, &quot;doc&quot; is an unwelcome abbreviation.

&gt; Source/WebKit/mac/WebView/WebView.mm:6287
&gt;  - (BOOL)_supportsFullScreenForElement:(const WebCore::Element*)element withKeyboard:(BOOL)withKeyboard

I&apos;m not sure if I fully understand why this function no longer looks at its withKeyboard argument. But if it doesn&apos;t need to look at it, can it be just removed?

&gt; Source/WebKit2/UIProcess/WebFullScreenManagerProxy.cpp:-94
&gt;  void WebFullScreenManagerProxy::supportsFullScreen(bool withKeyboard, bool&amp; supports)
&gt;  {
&gt; -    if (withKeyboard)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580648</commentid>
    <comment_count>19</comment_count>
      <attachid>131563</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-16 10:31:05 -0700</bug_when>
    <thetext>Comment on attachment 131563
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:5105
&gt;&gt; +        Document* doc = this;
&gt; 
&gt; We prefer to not abbreviate words in variable names.

I know, I was just trying to hew to the spec.  I&apos;ll change it though. :)

&gt;&gt; Source/WebCore/dom/Document.cpp:5148
&gt;&gt; +        } while (++current != docs.end());
&gt; 
&gt; So, Deque iterator is not invalidated for any operations you do above?

Nope. the &quot;docs&quot; queue isn&apos;t modified in the loop.

&gt;&gt; Source/WebCore/dom/Document.cpp:5485
&gt;&gt; +void Document::addDocumentToEventQueue(Document* doc)
&gt; 
&gt; Please have &quot;fullscreen&quot; somewhere in this name. It&apos;s super confusing otherwise.
&gt; 
&gt; As elsewhere, &quot;doc&quot; is an unwelcome abbreviation.

Yep.  I&apos;ll fix this as well.

&gt;&gt; Source/WebKit/mac/WebView/WebView.mm:6287
&gt;&gt;  - (BOOL)_supportsFullScreenForElement:(const WebCore::Element*)element withKeyboard:(BOOL)withKeyboard
&gt; 
&gt; I&apos;m not sure if I fully understand why this function no longer looks at its withKeyboard argument. But if it doesn&apos;t need to look at it, can it be just removed?

It probably can, but I&apos;d prefer to do it in a separate patch.  It should be removed both from here and WebKit2 (as you point out below), which is a big enough change to warrant doing in a new bug. Filed bug# 81367.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580699</commentid>
    <comment_count>20</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-03-16 11:12:32 -0700</bug_when>
    <thetext>Committed r111028: &lt;http://trac.webkit.org/changeset/111028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592260</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-30 10:23:56 -0700</bug_when>
    <thetext>Perhaps it is time to factor fullscreen code out into a separate controller class?  It seems really unfortunate to clutter Document.cpp up with all of this code.  Am I crazy for thinking this way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594116</commentid>
    <comment_count>22</comment_count>
    <who name="Jeremy Apthorp">jeremya</who>
    <bug_when>2012-04-02 18:34:50 -0700</bug_when>
    <thetext>After this patch I no longer see &apos;webkitfullscreenchange&apos; events when the user exits fullscreen. Is this intentional? It breaks many websites (e.g. http://www.youtube.com/watch?v=0QRO3gKj3qw&amp;html5=1, http://vimeo.com/36258512, http://sublimevideo.net/demo).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594156</commentid>
    <comment_count>23</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-02 20:01:43 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; After this patch I no longer see &apos;webkitfullscreenchange&apos; events when the user exits fullscreen. Is this intentional? It breaks many websites (e.g. http://www.youtube.com/watch?v=0QRO3gKj3qw&amp;html5=1, http://vimeo.com/36258512, http://sublimevideo.net/demo).

Yep, there&apos;s a bug on it awaiting review: bug #82755.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089197</commentid>
    <comment_count>24</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-04-27 14:35:10 -0700</bug_when>
    <thetext>*** Bug 68817 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130986</attachid>
            <date>2012-03-08 23:10:46 -0800</date>
            <delta_ts>2012-03-09 08:36:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80660-20120308231045.patch</filename>
            <type>text/plain</type>
            <size>39552</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU4Mjk5NDhhZGI2YjA4
YzE1Yzk3ZTNlZmM3ZTIzMGVkNDhmNzk4Ni4uYjE3OGU1YjA0YmQzODZiZDMyMGQwZWRkMjMwMjE0
YTA2YTExMGFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAzLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwg
U2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0czogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0
bWwKKyAgICAgICAgICAgICAgIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCisg
ICAgICAgICAgICAgICBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlbW92ZWRMYXN0UmVmKTogQ2xlYXIgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVlbik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VE
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsZWFyRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cG9wRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHVzaEZ1bGxz
Y3JlZW5FbGVtZW50U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRhc2tGdWxs
c2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKwogMjAxMi0wMy0wOCAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVzZSBhbiBleHBsaWNp
dCBhdHRyaWJ1dGUgdG8gc2lnbmFsIHRoYXQgYSBjb250ZXh0IHByZWZlcnMgdG8gdXNlIGEgZGlz
Y3JldGUgR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNDhmNjRiYjQ5ZWQ4MDhkMzkwOWVlOGYwMTk2
NjliZjNkZTZkMjAwYi4uNjFiZTBkNGIzMzQwZTM1OGE0NTU3YWM1NTJjYmY3NTVlOTAwODJlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDEyLTAzLTA4ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwgU2NyZWVu
IEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbGxvdyBmdWxsIHNjcmVlbiBlbGVtZW50cyB0byBhY2Nlc3MgdGhlIGtleWJvYXJkLgor
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zdXBw
b3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50OldlYkNvcmU6OndpdGhLZXlib2FyZDpdKToKKworMjAx
Mi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJl
dmlld2VkIFNub3cgTGVvcGFyZCBidWlsZCBmaXguCiAKICAgICAgICAgT24gTGVvcGFyZCBhbmQg
U25vdyBMZW9wYXJkLCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIGZvciAtW05TV2luZG93IGNv
bnZlcnRSZWN0VG9TY3JlZW46XS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3YmNhY2ZhMDAzMzJkOTQzYzc0ZjNh
NGZkMGZjMDI2ZjFlZjJlN2FhLi5hYTE2MWFhNWEyNGE1YzY4NTlhNzRhZGU5Mjc5Zjk1NDQyMzIw
ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTItMDMtMDggIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKKyAgICAgICAgU3VwcG9ydCBXM0MgRnVsbCBTY3JlZW4g
QVBJIHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MDY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFsbG93IGZ1bGwgc2NyZWVuIGVsZW1lbnRzIHRvIGFjY2VzcyB0aGUga2V5Ym9hcmQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVl
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudCk6CisKKzIwMTItMDMtMDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBTbm93IExlb3BhcmQgYnVpbGQgZml4LgogCiAg
ICAgICAgIE9uIExlb3BhcmQgYW5kIFNub3cgTGVvcGFyZCwgcHJvdmlkZSBhbiBpbXBsZW1lbnRh
dGlvbiBmb3IgLVtOU1dpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOl0uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCA5MWUyYmRiZjgzY2QzNWUxMWFiNDkwZjk3ZmRjZGNmOTVjNmZlZTY4Li4w
N2VlYzlmMWRmODEwOGI3NDZjY2E0ZTI1NDAzMDIxODY0NDgzNjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTYwNyw2ICs2MDcsNyBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJl
ZigpCiAgICAgICAgIG1fZG9jdW1lbnRFbGVtZW50ID0gMDsKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiAgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOworICAgICAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50U3RhY2suY2xlYXIoKTsKICNlbmRpZgogCiAgICAgICAgIC8vIHJlbW92ZUFs
bENoaWxkcmVuKCkgZG9lc24ndCBhbHdheXMgdW5yZWdpc3RlciBJRHMsCkBAIC01MDUxLDM3ICs1
MDUyLDIyNCBAQCBib29sIERvY3VtZW50OjpmdWxsU2NyZWVuSXNBbGxvd2VkRm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogCiB2b2lkIERvY3VtZW50OjpyZXF1ZXN0RnVsbFNjcmVl
bkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgc2hvcnQgZmxhZ3MsIEZ1bGxT
Y3JlZW5DaGVja1R5cGUgY2hlY2tUeXBlKQogewotICAgIGRvIHsKLSAgICAgICAgaWYgKCFwYWdl
KCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKLSAgICAgICAg
ICAgIGJyZWFrOworICAgIC8vIFRoZSBNb3ppbGxhIEZ1bGwgU2NyZWVuIEFQSSA8aHR0cHM6Ly93
aWtpLm1vemlsbGEub3JnL0dlY2tvOkZ1bGxTY3JlZW5BUEk+IGhhcyBkaWZmZXJlbnQgcmVxdWly
ZW1lbnRzCisgICAgLy8gZm9yIGZ1bGwgc2NyZWVuIG1vZGUsIGFuZCBkbyBub3QgaGF2ZSB0aGUg
Y29uY2VwdCBvZiBhIGZ1bGwgc2NyZWVuIGVsZW1lbnQgc3RhY2suCisgICAgYm9vbCBpbkxlZ2Fj
eU1vemlsbGFNb2RlID0gKGZsYWdzICYgRWxlbWVudDo6TEVHQUNZX01PWklMTEFfUkVRVUVTVCk7
CiAKKyAgICBkbyB7CiAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgIGVsZW1lbnQg
PSBkb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgICAgCisgCisgICAgICAgIC8vIDEuIElmIGFueSBv
ZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHRydWUsIHRlcm1pbmF0ZSB0aGVzZSBzdGVw
cyBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUKKyAgICAgICAgLy8gYW4gZXZlbnQgbmFtZWQgZnVs
bHNjcmVlbmVycm9yIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRlIHNldCB0byB0cnVlIG9uIHRo
ZSBjb250ZXh0IG9iamVjdCdzIAorICAgICAgICAvLyBub2RlIGRvY3VtZW50OgorCisgICAgICAg
IC8vIFRoZSBjb250ZXh0IG9iamVjdCBpcyBub3QgaW4gYSBkb2N1bWVudC4KKyAgICAgICAgaWYg
KCFlbGVtZW50LT5pbkRvY3VtZW50KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAv
LyBUaGUgY29udGV4dCBvYmplY3QncyBub2RlIGRvY3VtZW50LCBvciBhbiBhbmNlc3RvciBicm93
c2luZyBjb250ZXh0J3MgZG9jdW1lbnQgZG9lcyBub3QgaGF2ZQorICAgICAgICAvLyB0aGUgZnVs
bHNjcmVlbiBlbmFibGVkIGZsYWcgc2V0LgogICAgICAgICBpZiAoY2hlY2tUeXBlID09IEVuZm9y
Y2VJRnJhbWVBbGxvd0Z1bFNjcmVlblJlcXVpcmVtZW50ICYmICFmdWxsU2NyZWVuSXNBbGxvd2Vk
Rm9yRWxlbWVudChlbGVtZW50KSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAg
ICAgaWYgKCFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKworICAg
ICAgICAvLyBUaGUgY29udGV4dCBvYmplY3QncyBub2RlIGRvY3VtZW50IGZ1bGxzY3JlZW4gZWxl
bWVudCBzdGFjayBpcyBub3QgZW1wdHkgYW5kIGl0cyB0b3AgZWxlbWVudAorICAgICAgICAvLyBp
cyBub3QgYW4gYW5jZXN0b3Igb2YgdGhlIGNvbnRleHQgb2JqZWN0LiAoTk9URTogSWdub3JlIHRo
aXMgcmVxdWlyZW1lbnQgaWYgdGhlIHJlcXVlc3Qgd2FzCisgICAgICAgIC8vIG1hZGUgdmlhIHRo
ZSBsZWdhY3kgTW96aWxsYS1zdHlsZSBBUEkuKQorICAgICAgICBpZiAoIW1fZnVsbFNjcmVlbkVs
ZW1lbnRTdGFjay5pc0VtcHR5KCkgJiYgIW1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5maXJzdCgp
LT5jb250YWlucyhlbGVtZW50KSAmJiAhaW5MZWdhY3lNb3ppbGxhTW9kZSkKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIC8vIEEgZGVzY2VuZGFudCBicm93c2luZyBjb250ZXh0J3MgZG9j
dW1lbnQgaGFzIGEgbm9uLWVtcHR5IGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4KKyAgICAgICAg
Ym9vbCBkZXNjZW5kZW50SGFzTm9uRW1wdHlTdGFjayA9IGZhbHNlOworICAgICAgICBmb3IgKEZy
YW1lKiBkZXNjZW5kYW50ID0gZnJhbWUoKSA/IGZyYW1lKCktPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkgOiAwOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+dHJlZSgpLT50cmF2
ZXJzZU5leHQoKSkgeworICAgICAgICAgICAgaWYgKGRlc2NlbmRhbnQtPmRvY3VtZW50KCktPndl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBkZXNjZW5kZW50SGFz
Tm9uRW1wdHlTdGFjayA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNrICYm
ICFpbkxlZ2FjeU1vemlsbGFNb2RlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8g
VGhpcyBhbGdvcml0aG0gaXMgbm90IGFsbG93ZWQgdG8gc2hvdyBhIHBvcC11cC4KKyAgICAgICAg
aWYgKCFkb21XaW5kb3coKS0+YWxsb3dQb3BVcCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgLy8gVGhlcmUgaXMgYSBwcmV2aW91c2x5LWVzdGFibGlzaGVkIHVzZXIgcHJlZmVyZW5j
ZSwgc2VjdXJpdHkgcmlzaywgb3IgcGxhdGZvcm0gbGltaXRhdGlvbi4KKyAgICAgICAgaWYgKCFw
YWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICAgICAgaWYgKCFwYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+c3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50LCBmbGFncyAmIEVs
ZW1lbnQ6OkFMTE9XX0tFWUJPQVJEX0lOUFVUKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAKKworICAgICAgICAvLyBOb3RlOiB0aGUgTW96aWxsYSBGdWxsIFNjcmVlbiBBUEkgZG9lcyBu
b3QgaGF2ZSB0aGUgY29uY2VwdCBvZiBhIGZ1bGwgc2NyZWVuIGVsZW1lbnQgc3RhY2sKKyAgICAg
ICAgLy8gc28gY2xlYXIgdGhlIHN0YWNrIGJlZm9yZSBwdXNoaW5nIHRoZSBuZXcgZWxlbWVudDoK
KyAgICAgICAgaWYgKGluTGVnYWN5TW96aWxsYU1vZGUpIHsKKyAgICAgICAgICAgIHdlYmtpdEV4
aXRGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suY2xl
YXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDIuIExldCBkb2MgYmUgZWxlbWVudCdzIG5v
ZGUgZG9jdW1lbnQuIChpLmUuICJ0aGlzIikKKyAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHRoaXM7
CisKKyAgICAgICAgLy8gMy4gTGV0IGRvY3MgYmUgYWxsIGRvYydzIGFuY2VzdG9yIGJyb3dzaW5n
IGNvbnRleHQncyBkb2N1bWVudHMgKGlmIGFueSkgYW5kIGRvYy4KKyAgICAgICAgRGVxdWU8RG9j
dW1lbnQqPiBkb2NzOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGRvY3MucHJlcGVuZChk
b2MpOworICAgICAgICAgICAgZG9jID0gZG9jLT5vd25lckVsZW1lbnQoKSA/IGRvYy0+b3duZXJF
bGVtZW50KCktPmRvY3VtZW50KCkgOiAwOworICAgICAgICB9IHdoaWxlIChkb2MpOworCisgICAg
ICAgIC8vIDQuIEZvciBlYWNoIGRvY3VtZW50IGluIGRvY3MsIHJ1biB0aGVzZSBzdWJzdGVwczoK
KyAgICAgICAgRGVxdWU8RG9jdW1lbnQqPjo6aXRlcmF0b3IgY3VycmVudCA9IGRvY3MuYmVnaW4o
KSwgZm9sbG93aW5nID0gZG9jcy5iZWdpbigpOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
ICsrZm9sbG93aW5nOworCisgICAgICAgICAgICAvLyAxLiBMZXQgZm9sbG93aW5nIGRvY3VtZW50
IGJlIHRoZSBkb2N1bWVudCBhZnRlciBkb2N1bWVudCBpbiBkb2NzLCBvciBudWxsIGlmIHRoZXJl
IGlzIG5vCisgICAgICAgICAgICAvLyBzdWNoIGRvY3VtZW50LgorICAgICAgICAgICAgRG9jdW1l
bnQqIGN1cnJlbnREb2MgPSAqY3VycmVudDsKKyAgICAgICAgICAgIERvY3VtZW50KiBmb2xsb3dp
bmdEb2MgPSBmb2xsb3dpbmcgIT0gZG9jcy5lbmQoKSA/ICpmb2xsb3dpbmcgOiAwOworCisgICAg
ICAgICAgICAvLyAyLiBJZiBmb2xsb3dpbmcgZG9jdW1lbnQgaXMgbnVsbCwgcHVzaCBjb250ZXh0
IG9iamVjdCBvbiBkb2N1bWVudCdzIGZ1bGxzY3JlZW4gZWxlbWVudAorICAgICAgICAgICAgLy8g
c3RhY2ssIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVu
Y2hhbmdlIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRlCisgICAgICAgICAgICAvLyBzZXQgdG8g
dHJ1ZSBvbiB0aGUgZG9jdW1lbnQuCisgICAgICAgICAgICBpZiAoIWZvbGxvd2luZ0RvYykgewor
ICAgICAgICAgICAgICAgIGN1cnJlbnREb2MtPnB1c2hGdWxsc2NyZWVuRWxlbWVudFN0YWNrKGVs
ZW1lbnQpOworICAgICAgICAgICAgICAgIGN1cnJlbnREb2MtPnRhc2tGdWxsc2NyZWVuQ2hhbmdl
RXZlbnQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gMy4gT3RoZXJ3aXNlLCBpZiBkb2N1bWVudCdzIGZ1bGxzY3JlZW4gZWxlbWVu
dCBzdGFjayBpcyBlaXRoZXIgZW1wdHkgb3IgaXRzIHRvcCBlbGVtZW50CisgICAgICAgICAgICAv
LyBpcyBub3QgZm9sbG93aW5nIGRvY3VtZW50J3MgYnJvd3NpbmcgY29udGV4dCBjb250YWluZXIs
CisgICAgICAgICAgICBFbGVtZW50KiB0b3BFbGVtZW50ID0gY3VycmVudERvYy0+d2Via2l0RnVs
bHNjcmVlbkVsZW1lbnQoKTsKKyAgICAgICAgICAgIGlmICghdG9wRWxlbWVudCB8fCB0b3BFbGVt
ZW50ICE9IGZvbGxvd2luZ0RvYy0+b3duZXJFbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAv
LyAuLi5wdXNoIGZvbGxvd2luZyBkb2N1bWVudCdzIGJyb3dzaW5nIGNvbnRleHQgY29udGFpbmVy
IG9uIGRvY3VtZW50J3MgZnVsbHNjcmVlbiBlbGVtZW50CisgICAgICAgICAgICAgICAgLy8gc3Rh
Y2ssIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVuY2hh
bmdlIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgLy8gc2V0IHRv
IHRydWUgb24gZG9jdW1lbnQuCisgICAgICAgICAgICAgICAgY3VycmVudERvYy0+cHVzaEZ1bGxz
Y3JlZW5FbGVtZW50U3RhY2soZm9sbG93aW5nRG9jLT5vd25lckVsZW1lbnQoKSk7CisgICAgICAg
ICAgICAgICAgY3VycmVudERvYy0+dGFza0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCgpOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyA0LiBP
dGhlcndpc2UsIGRvIG5vdGhpbmcgZm9yIHRoaXMgZG9jdW1lbnQuIEl0IHN0YXlzIHRoZSBzYW1l
LgorICAgICAgICB9IHdoaWxlICgrK2N1cnJlbnQgIT0gZG9jcy5lbmQoKSk7CisKKyAgICAgICAg
Ly8gNS4gUmV0dXJuLCBhbmQgcnVuIHRoZSByZW1haW5pbmcgc3RlcHMgYXN5bmNocm9ub3VzbHku
CisgICAgICAgIC8vIDYuIE9wdGlvbmFsbHksIHBlcmZvcm0gc29tZSBhbmltYXRpb24uCiAgICAg
ICAgIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW4gPSBmbGFncyAmIEVsZW1lbnQ6OkFMTE9X
X0tFWUJPQVJEX0lOUFVUOwogICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKKworICAgICAgICAvLyA3LiBPcHRpb25h
bGx5LCBkaXNwbGF5IGEgbWVzc2FnZSBpbmRpY2F0aW5nIGhvdyB0aGUgdXNlciBjYW4gZXhpdCBk
aXNwbGF5aW5nIHRoZSBjb250ZXh0IG9iamVjdCBmdWxsc2NyZWVuLgogICAgICAgICByZXR1cm47
CiAgICAgfSB3aGlsZSAoMCk7Ci0gICAgCisKICAgICBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFy
Z2V0UXVldWUuYXBwZW5kKGVsZW1lbnQgPyBlbGVtZW50IDogZG9jdW1lbnRFbGVtZW50KCkpOwog
ICAgIG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2
b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCkKIHsKLSAgICBpZiAoIXBhZ2Uo
KSB8fCAhbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAvLyBUaGUgTW96aWxsYSAiY2FuY2VsRnVs
bFNjcmVlbigpIiBBUEkgYmVoYXZlcyBsaWtlIHRoZSBXM0MgImZ1bGx5IGV4aXQgZnVsbHNjcmVl
biIgYmVoYXZpb3IsIHdoaWNoCisgICAgLy8gaXMgZGVmaW5lZCBhczogCisgICAgLy8gIlRvIGZ1
bGx5IGV4aXQgZnVsbHNjcmVlbiBhY3QgYXMgaWYgdGhlIGV4aXRGdWxsc2NyZWVuKCkgbWV0aG9k
IHdhcyBpbnZva2VkIG9uIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcKKyAgICAvLyBjb250ZXh0J3Mg
ZG9jdW1lbnQgYW5kIHN1YnNlcXVlbnRseSBlbXB0eSB0aGF0IGRvY3VtZW50J3MgZnVsbHNjcmVl
biBlbGVtZW50IHN0YWNrLiIKKyAgICBpZiAoIXRvcERvY3VtZW50KCktPndlYmtpdEZ1bGxzY3Jl
ZW5FbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKKworICAgIC8vIFRvIGFjaGlldmUgdGhhdCBh
aW0sIHJlbW92ZSBhbGwgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHRvcCBkb2N1bWVudCdzIHN0YWNr
IGV4Y2VwdCBmb3IgdGhlIGZpcnN0IGJlZm9yZQorICAgIC8vIGNhbGxpbmcgd2Via2l0RXhpdEZ1
bGxzY3JlZW4oKToKKyAgICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiByZXBsYWNlbWVudEZ1bGxz
Y3JlZW5FbGVtZW50U3RhY2s7CisgICAgcmVwbGFjZW1lbnRGdWxsc2NyZWVuRWxlbWVudFN0YWNr
LnByZXBlbmQodG9wRG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSk7CisgICAg
dG9wRG9jdW1lbnQoKS0+bV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLnN3YXAocmVwbGFjZW1lbnRG
dWxsc2NyZWVuRWxlbWVudFN0YWNrKTsKKworICAgIHRvcERvY3VtZW50KCktPndlYmtpdEV4aXRG
dWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRGdWxsc2NyZWVuKCkK
K3sKKyAgICAvLyBUaGUgZXhpdEZ1bGxzY3JlZW4oKSBtZXRob2QgbXVzdCBydW4gdGhlc2Ugc3Rl
cHM6CiAgICAgCi0gICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyAgICAvLyAxLiBMZXQgZG9j
IGJlIHRoZSBjb250ZXh0IG9iamVjdC4gKGkuZS4gInRoaXMiKQorICAgIERvY3VtZW50KiBkb2Mg
PSB0aGlzOworCisgICAgLy8gMi4gSWYgZG9jJ3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlz
IGVtcHR5LCB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1l
bnRTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyAzLiBMZXQg
ZGVzY2VuZGFudHMgYmUgYWxsIHRoZSBkb2MncyBkZXNjZW5kYW50IGJyb3dzaW5nIGNvbnRleHQn
cyBkb2N1bWVudHMgd2l0aCBhIG5vbi1lbXB0eSBmdWxsc2NyZWVuCisgICAgLy8gZWxlbWVudCBz
dGFjayAoaWYgYW55KSwgb3JkZXJlZCBzbyB0aGF0IHRoZSBjaGlsZCBvZiB0aGUgZG9jIGlzIGxh
c3QgYW5kIHRoZSBkb2N1bWVudCBmdXJ0aGVzdAorICAgIC8vIGF3YXkgZnJvbSB0aGUgZG9jIGlz
IGZpcnN0LgorICAgIERlcXVlPFJlZlB0cjxEb2N1bWVudD4gPiBkZXNjZW5kYW50czsKKyAgICBm
b3IgKEZyYW1lKiBkZXNjZW5kYW50ID0gZnJhbWUoKSA/IGZyYW1lKCktPnRyZWUoKS0+dHJhdmVy
c2VOZXh0KCkgOiAwOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoZGVzY2VuZGFudC0+ZG9jdW1lbnQoKS0+
d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgICAgIGRlc2NlbmRhbnRzLnByZXBl
bmQoZGVzY2VuZGFudC0+ZG9jdW1lbnQoKSk7CisgICAgfQorICAgICAgICAKKyAgICAvLyA0LiBG
b3IgZWFjaCBkZXNjZW5kYW50IGluIGRlc2NlbmRhbnRzLCBlbXB0eSBkZXNjZW5kYW50J3MgZnVs
bHNjcmVlbiBlbGVtZW50IHN0YWNrLCBhbmQgcXVldWUgYQorICAgIC8vIHRhc2sgdG8gZmlyZSBh
biBldmVudCBuYW1lZCBmdWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRl
IHNldCB0byB0cnVlIG9uIGRlc2NlbmRhbnQuCisgICAgZm9yIChEZXF1ZTxSZWZQdHI8RG9jdW1l
bnQ+ID46Oml0ZXJhdG9yIGkgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpICE9IGRlc2NlbmRhbnRz
LmVuZCgpOyArK2kpIHsKKyAgICAgICAgKCppKS0+Y2xlYXJGdWxsc2NyZWVuRWxlbWVudFN0YWNr
KCk7CisgICAgICAgICgqaSktPnRhc2tGdWxsc2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAgICB9CisK
KyAgICAvLyA1LiBXaGlsZSBkb2MgaXMgbm90IG51bGwsIHJ1biB0aGVzZSBzdWJzdGVwczoKKyAg
ICBFbGVtZW50KiBuZXdUb3A7CisgICAgd2hpbGUgKGRvYykgeworICAgICAgICAvLyAxLiBQb3Ag
dGhlIHRvcCBlbGVtZW50IG9mIGRvYydzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4KKyAgICAg
ICAgZG9jLT5wb3BGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCk7CisKKyAgICAgICAgLy8gICAgSWYg
ZG9jJ3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vbi1lbXB0eSBhbmQgdGhlIGVsZW1l
bnQgbm93IGF0IHRoZSB0b3AgaXMgZWl0aGVyCisgICAgICAgIC8vICAgIG5vdCBpbiBhIGRvY3Vt
ZW50IG9yIGl0cyBub2RlIGRvY3VtZW50IGlzIG5vdCBkb2MsIHJlcGVhdCB0aGlzIHN1YnN0ZXAu
CisgICAgICAgIG5ld1RvcCA9IGRvYy0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICAg
ICAgaWYgKG5ld1RvcCAmJiAoIW5ld1RvcC0+aW5Eb2N1bWVudCgpIHx8IG5ld1RvcC0+ZG9jdW1l
bnQoKSAhPSBkb2MpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gMi4gUXVl
dWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNoYW5nZSB3aXRoIGl0
cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZQorICAgICAgICAvLyBvbiBkb2MuCisgICAg
ICAgIGRvYy0+dGFza0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCgpOworCisgICAgICAgIC8vIDMuIElm
IGRvYydzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjayBpcyBlbXB0eSBhbmQgZG9jJ3MgYnJvd3Np
bmcgY29udGV4dCBoYXMgYSBicm93c2luZyBjb250ZXh0CisgICAgICAgIC8vIGNvbnRhaW5lciwg
c2V0IGRvYyB0byB0aGF0IGJyb3dzaW5nIGNvbnRleHQgY29udGFpbmVyJ3Mgbm9kZSBkb2N1bWVu
dC4KKyAgICAgICAgaWYgKCFuZXdUb3AgJiYgZG9jLT5vd25lckVsZW1lbnQoKSkKKyAgICAgICAg
ICAgIGRvYyA9IGRvYy0+b3duZXJFbGVtZW50KCktPmRvY3VtZW50KCk7CisKKyAgICAgICAgLy8g
NC4gT3RoZXJ3aXNlLCBzZXQgZG9jIHRvIG51bGwuCisgICAgICAgIGRvYyA9IDA7CisgICAgfQor
CisgICAgLy8gNi4gUmV0dXJuLCBhbmQgcnVuIHRoZSByZW1haW5pbmcgc3RlcHMgYXN5bmNocm9u
b3VzbHkuCisgICAgLy8gNy4gT3B0aW9uYWxseSwgcGVyZm9ybSBzb21lIGFuaW1hdGlvbi4KKwor
ICAgIC8vIE9ubHkgZXhpdCBvdXQgb2YgZnVsbCBzY3JlZW4gd2luZG93IG1vZGUgaWYgdGhlcmUg
YXJlIG5vIHJlbWFpbmluZyBlbGVtZW50cyBpbiB0aGUgCisgICAgLy8gZnVsbCBzY3JlZW4gc3Rh
Y2suCisgICAgaWYgKCFuZXdUb3ApIHsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50
KCktPmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgbm90aWZ5IHRoZSBj
aHJvbWUgb2YgdGhlIG5ldyBmdWxsIHNjcmVlbiBlbGVtZW50LgorICAgIHBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpLT5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KG5ld1RvcCk7ICAgICAgCit9
CisKK2Jvb2wgRG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29uc3QKK3sKKyAg
ICAvLyA0LiBUaGUgZnVsbHNjcmVlbkVuYWJsZWQgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRydWUg
aWYgdGhlIGNvbnRleHQgb2JqZWN0IGFuZCBhbGwgYW5jZXN0b3IKKyAgICAvLyBicm93c2luZyBj
b250ZXh0J3MgZG9jdW1lbnRzIGhhdmUgdGhlaXIgZnVsbHNjcmVlbiBlbmFibGVkIGZsYWcgc2V0
LCBvciBmYWxzZSBvdGhlcndpc2UuCisKKyAgICAvLyBUb3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4
dHMgYXJlIGltcGxpZWQgdG8gaGF2ZSB0aGVpciBhbGxvd0Z1bGxTY3JlZW4gYXR0cmlidXRlIHNl
dC4KKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gb3duZXJFbGVtZW50KCk7Cisg
ICAgaWYgKCFvd25lcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBkbyB7CisgICAgICAg
IGlmICghb3duZXItPmlzRnJhbWVFbGVtZW50QmFzZSgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG93bmVy
KS0+YWxsb3dGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSB3
aGlsZSAoKG93bmVyID0gb3duZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKSk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsgICAgICAgIAogfQogCiB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQpAQCAtNTExNywxMiArNTMw
NSwxNCBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKQogewogICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpZEJlY29tZUZ1bGxzY3Jl
ZW5FbGVtZW50KCk7CiAKLSAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmFw
cGVuZChtX2Z1bGxTY3JlZW5FbGVtZW50KTsKICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxheVRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKIHsKKyAgICBpZiAoIW1fZnVsbFNjcmVlbkVs
ZW1lbnQpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldENv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVz
KGZhbHNlKTsKICAgICAKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT53aWxsU3RvcEJlaW5nRnVs
bHNjcmVlbkVsZW1lbnQoKTsKQEAgLTUxMzUsNyArNTMyNSw3IEBAIHZvaWQgRG9jdW1lbnQ6Ondl
YmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKICAgICBpZiAobV9mdWxs
U2NyZWVuUmVuZGVyZXIpCiAgICAgICAgIG1fZnVsbFNjcmVlblJlbmRlcmVyLT51bndyYXBSZW5k
ZXJlcigpOwogCi0gICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQo
bV9mdWxsU2NyZWVuRWxlbWVudC5yZWxlYXNlKCkpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQg
PSAwOwogICAgIHNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGMoKTsKICAgICAKICAgICBtX2Z1bGxT
Y3JlZW5DaGFuZ2VEZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKQEAgLTUyMDIsMjcgKzUzOTIs
MjcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyQmFja2dyb3VuZENvbG9y
KENvbG9yIGJhY2tncm91bmRDb2xvcikKIHZvaWQgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VE
ZWxheVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKIHsKICAgICB3aGlsZSAoIW1fZnVsbFNj
cmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50ID0gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS50YWtl
Rmlyc3QoKTsKLSAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgZWxlbWVudCA9IGRv
Y3VtZW50RWxlbWVudCgpOworICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fZnVsbFNjcmVl
bkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICghbm9kZSkK
KyAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudEVsZW1lbnQoKTsKIAogICAgICAgICAvLyBJZiB0
aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIG91ciB0cmVlLCBhbHNvIG1lc3NhZ2UgdGhlIGRv
Y3VtZW50RWxlbWVudC4KLSAgICAgICAgaWYgKCFjb250YWlucyhlbGVtZW50LmdldCgpKSkKKyAg
ICAgICAgaWYgKCFjb250YWlucyhub2RlLmdldCgpKSkKICAgICAgICAgICAgIG1fZnVsbFNjcmVl
bkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKGRvY3VtZW50RWxlbWVudCgpKTsKICAgICAg
ICAgCi0gICAgICAgIGVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgICAg
ICBub2RlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKICAgICB9CiAKICAgICB3aGlsZSAo
IW1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0UXVl
dWUudGFrZUZpcnN0KCk7Ci0gICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgIGVsZW1l
bnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2Z1
bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0UXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICgh
bm9kZSkKKyAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgCi0g
ICAgICAgIC8vIElmIHRoZSBlbGVtZW50IHdhcyByZW1vdmVkIGZyb20gb3VyIHRyZWUsIGFsc28g
bWVzc2FnZSB0aGUgZG9jdW1lbnRFbGVtZW50LgotICAgICAgICBpZiAoIWNvbnRhaW5zKGVsZW1l
bnQuZ2V0KCkpKQorICAgICAgICAvLyBJZiB0aGUgbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIG91ciB0
cmVlLCBhbHNvIG1lc3NhZ2UgdGhlIGRvY3VtZW50RWxlbWVudC4KKyAgICAgICAgaWYgKCFjb250
YWlucyhub2RlLmdldCgpKSkKICAgICAgICAgICAgIG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJn
ZXRRdWV1ZS5hcHBlbmQoZG9jdW1lbnRFbGVtZW50KCkpOwogICAgICAgICAKLSAgICAgICAgZWxl
bWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxs
c2NyZWVuZXJyb3JFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgbm9kZS0+ZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuZXJyb3JFdmVu
dCwgdHJ1ZSwgZmFsc2UpKTsKICAgICB9CiB9CiAKQEAgLTUyNjMsNiArNTQ1MywzNCBAQCB2b2lk
IERvY3VtZW50OjpzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgZmxhZykKICAgICAgICAgc2No
ZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOwogICAgIH0KIH0KKwordm9pZCBEb2N1bWVudDo6Y2xl
YXJGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3Rh
Y2suY2xlYXIoKTsKK30KKwordm9pZCBEb2N1bWVudDo6cG9wRnVsbHNjcmVlbkVsZW1lbnRTdGFj
aygpCit7CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5yZW1vdmVGaXJzdCgp
OworfQorCit2b2lkIERvY3VtZW50OjpwdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhFbGVtZW50
KiBlbGVtZW50KQoreworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5wcmVwZW5kKGVsZW1l
bnQpOworfQorCit2b2lkIERvY3VtZW50Ojp0YXNrRnVsbHNjcmVlbkNoYW5nZUV2ZW50KCkKK3sK
KyAgICBOb2RlKiB0YXJnZXQgPSB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpOworICAgIGlmICgh
dGFyZ2V0KQorICAgICAgICB0YXJnZXQgPSBtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpOworICAg
IGlmICghdGFyZ2V0KQorICAgICAgICB0YXJnZXQgPSB0aGlzOworICAgIG1fZnVsbFNjcmVlbkNo
YW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKHRhcmdldCk7Cit9CiAjZW5kaWYKIAogdm9pZCBE
b2N1bWVudDo6ZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDFlMzA1ZDQ2MGJhZDY1ZWI5N2NjMGIwMjE0YjliZjJiNzg4M2Q2MjEuLmMxZjcwYzZk
YjcyOWZjMjJkZWVjZjJjZDk1ZDQ1ZTY3MWQxM2RkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0xMDc4LDYgKzEwNzgsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRnVsbFNjcmVlbkVs
ZW1lbnRPZlN1YnRyZWUoTm9kZSosIGJvb2wgYW1vbmdDaGlsZHJlbk9ubHkgPSBmYWxzZSk7CiAg
ICAgYm9vbCBpc0FuaW1hdGluZ0Z1bGxTY3JlZW4oKSBjb25zdDsKICAgICB2b2lkIHNldEFuaW1h
dGluZ0Z1bGxTY3JlZW4oYm9vbCk7CisKKyAgICAvLyBXM0MgQVBJCisgICAgYm9vbCB3ZWJraXRG
dWxsc2NyZWVuRW5hYmxlZCgpIGNvbnN0OworICAgIEVsZW1lbnQqIHdlYmtpdEZ1bGxzY3JlZW5F
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gIW1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5pc0VtcHR5
KCkgPyBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suZmlyc3QoKS5nZXQoKSA6IDA7IH0KKyAgICB2
b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgdG8gYWxs
b3cgZWxlbWVudCB0aGF0IGxvYWRzIGRhdGEgd2l0aG91dCBnb2luZyB0aHJvdWdoIGEgRnJhbWVM
b2FkZXIgdG8gZGVsYXkgdGhlICdsb2FkJyBldmVudC4KQEAgLTExODgsNiArMTE5MywxMyBAQCBw
cml2YXRlOgogCiAgICAgSFRNTENvbGxlY3Rpb24qIGNhY2hlZENvbGxlY3Rpb24oQ29sbGVjdGlv
blR5cGUpOwogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZvaWQgY2xlYXJGdWxs
c2NyZWVuRWxlbWVudFN0YWNrKCk7CisgICAgdm9pZCBwb3BGdWxsc2NyZWVuRWxlbWVudFN0YWNr
KCk7CisgICAgdm9pZCBwdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhFbGVtZW50Kik7CisgICAg
dm9pZCB0YXNrRnVsbHNjcmVlbkNoYW5nZUV2ZW50KCk7CisjZW5kaWYKKwogICAgIGludCBtX2d1
YXJkUmVmQ291bnQ7CiAKICAgICBPd25QdHI8Q1NTU3R5bGVTZWxlY3Rvcj4gbV9zdHlsZVNlbGVj
dG9yOwpAQCAtMTQyMCwxMCArMTQzMiwxMSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBib29sIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW47CiAgICAgUmVm
UHRyPEVsZW1lbnQ+IG1fZnVsbFNjcmVlbkVsZW1lbnQ7CisgICAgRGVxdWU8UmVmUHRyPEVsZW1l
bnQ+ID4gbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrOwogICAgIFJlbmRlckZ1bGxTY3JlZW4qIG1f
ZnVsbFNjcmVlblJlbmRlcmVyOwogICAgIFRpbWVyPERvY3VtZW50PiBtX2Z1bGxTY3JlZW5DaGFu
Z2VEZWxheVRpbWVyOwotICAgIERlcXVlPFJlZlB0cjxFbGVtZW50PiA+IG1fZnVsbFNjcmVlbkNo
YW5nZUV2ZW50VGFyZ2V0UXVldWU7Ci0gICAgRGVxdWU8UmVmUHRyPEVsZW1lbnQ+ID4gbV9mdWxs
U2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlOworICAgIERlcXVlPFJlZlB0cjxOb2RlPiA+IG1f
ZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWU7CisgICAgRGVxdWU8UmVmUHRyPE5vZGU+
ID4gbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlOwogICAgIGJvb2wgbV9pc0FuaW1h
dGluZ0Z1bGxTY3JlZW47CiAgICAgTGF5b3V0UmVjdCBtX3NhdmVkUGxhY2Vob2xkZXJGcmFtZVJl
Y3Q7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJTdHls
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IGIzZTBhYTNhMGJhMjkyODg4NDQyZmU1NTBj
NGRkMTUzOWRkN2QyNmUuLjRlNGI3ZTNiZmUxYjFmYzljZGIzMjRmZTlkOGI0NzE1YjFkZWJjMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMjQxLDEwICsyNDEsMTYgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICNpZiBkZWZpbmVkKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCisgICAgICAgIC8v
IE1vemlsbGEgdmVyc2lvbgogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0
UnVudGltZV0gYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW47CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBib29sZWFuIHdlYmtpdEZ1bGxTY3JlZW5LZXli
b2FyZElucHV0QWxsb3dlZDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRB
dFJ1bnRpbWVdIEVsZW1lbnQgd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50OwogICAgICAg
ICBbVjhFbmFibGVkQXRSdW50aW1lXSB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKwor
ICAgICAgICAvLyBXM0MgdmVyc2lvbgorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5h
YmxlZEF0UnVudGltZV0gYm9vbGVhbiB3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIEVsZW1lbnQgd2Via2l0RnVs
bHNjcmVlbkVsZW1lbnQ7CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIHZvaWQgd2Via2l0
RXhpdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCiAgICAgICAgIFdlYktpdE5hbWVkRmxvdyB3ZWJr
aXRHZXRGbG93QnlOYW1lKGluIERPTVN0cmluZyBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApp
bmRleCBjOTI1NzQ5YjhmM2YxYWNhM2YwNTVhM2IxM2QxZDE0NWMyNDY0Y2UzLi5hNjA0NTNkZGFh
MTYwNWU4NWU1NzhjMzE1MTY3ZjliZGI5NzBlOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBA
IC0xODU4LDkgKzE4NTgsMTQgQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnRleHQKICNlbmRpZgogICAg
IAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVz
dEZ1bGxzY3JlZW4oKQoreworICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxl
bWVudCh0aGlzLCBBTExPV19LRVlCT0FSRF9JTlBVVCwgRG9jdW1lbnQ6OkVuZm9yY2VJRnJhbWVB
bGxvd0Z1bFNjcmVlblJlcXVpcmVtZW50KTsKK30KKwogdm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbih1bnNpZ25lZCBzaG9ydCBmbGFncykKIHsKLSAgICBkb2N1bWVudCgpLT5y
ZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgZmxhZ3MsIERvY3VtZW50OjpFbmZvcmNl
SUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1aXJlbWVudCk7CisgICAgZG9jdW1lbnQoKS0+cmVxdWVz
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRoaXMsIChmbGFncyB8IExFR0FDWV9NT1pJTExBX1JFUVVF
U1QpLCBEb2N1bWVudDo6RW5mb3JjZUlGcmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1lbnQpOwog
fQogCiBib29sIEVsZW1lbnQ6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggOGM4MjUwNzNmNDA4ZGFlYzFlMzU5OTg0NTYyYWI0NTA1YjExOWVh
Ny4uZTdhM2YxYjA5ZGVhYjU2YTIyZGQyNGUyZWVkNDE3OGY0YzVhN2I4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC0zNzYsMTMgKzM3NiwxNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIGVudW0gewotICAgICAgICBBTExPV19LRVlCT0FSRF9JTlBVVCA9
IDEKKyAgICAgICAgQUxMT1dfS0VZQk9BUkRfSU5QVVQgPSAxIDw8IDAsCisgICAgICAgIExFR0FD
WV9NT1pJTExBX1JFUVVFU1QgPSAxIDw8IDEsCiAgICAgfTsKICAgICAKICAgICB2b2lkIHdlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuKHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKICAgICB2aXJ0dWFsIGJv
b2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmll
cyhib29sKTsKKworICAgIC8vIFczQyBBUEkKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2Ny
ZWVuKCk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggODcyNWJjYmMxOWNiYzJiODFhN2Ji
ZTYxZDgwODllZjk4NTk5NjgwNi4uOTU1YmQ0NzBhYTY4NjczNTcxNWJmNDYwNGI4ZGI1NmMwYmE0
MDcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMTI5LDggKzEyOSwxMiBAQCBtb2R1bGUg
Y29yZSB7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBF
TkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgLy8gTW96aWxsYSB2ZXJzaW9uCiAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IEFMTE9XX0tFWUJPQVJEX0lOUFVUID0gMTsKICAgICAgICAg
W1Y4RW5hYmxlZEF0UnVudGltZV0gdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbihpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSB1bnNpZ25lZCBzaG9ydCBmbGFncyk7CisKKyAgICAg
ICAgLy8gVzNDIHZlcnNpb24KKyAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZV0gdm9pZCB3ZWJr
aXRSZXF1ZXN0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAKICAgICAgICAgLy8gQ1NTIFJlZ2lvbnMg
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOWNmZThiMzQ4OGE3NWQ1
NjhkYTg5MDc0MzcxYjNiOTQxMDRiYjBhNi4uMzg4OGI0ZTVlYTUwOTZkZDgzNWVkMzEwMDk0YWI4
OTRhODY2MGVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjI4Niwx
NCArNjI4Niw5IEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAtIChCT09MKV9zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JF
bGVtZW50Oihjb25zdCBXZWJDb3JlOjpFbGVtZW50KillbGVtZW50IHdpdGhLZXlib2FyZDooQk9P
TCl3aXRoS2V5Ym9hcmQKIHsKLSAgICBpZiAod2l0aEtleWJvYXJkKQotICAgICAgICByZXR1cm4g
Tk87Ci0KICAgICBpZiAoIVtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gZnVs
bFNjcmVlbkVuYWJsZWRdKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICAvLyBGSVhNRTogSWYg
dGhlIGVsZW1lbnQgaXMgaW4gYW4gSUZyYW1lLCB3ZSBzaG91bGQgZW5zdXJlIGl0IGhhcyAKLSAg
ICAvLyBhbiBBbGxvd3NGdWxsU2NyZWVuPVlFUyBhdHRyaWJ1dGUgYmVmb3JlIGFsbG93aW5nIGZ1
bGxzY3JlZW4gYWNjZXNzLgogICAgIHJldHVybiBZRVM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAppbmRleCAx
N2MwNzBiNmRkYjA5MzM0YWNmNmQ1NGVlMmNhNGNhZDA1NmVhMDQwLi4yMWZlOWNkYWU0ZmQyM2Qw
NGFlMGMxODA2OTEwZTc4ZjU2Njg4MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCkBAIC05MSwxMCArOTEsNyBA
QCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEFuaW1hdGluZ0Z1bGxTY3JlZW4o
Ym9vbCBhbmltYXRpbmcpCiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9y
dHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBib29sJiBzdXBwb3J0cykKIHsKLSAgICBp
ZiAod2l0aEtleWJvYXJkKQotICAgICAgICBzdXBwb3J0cyA9IGZhbHNlOwotICAgIGVsc2UKLSAg
ICAgICAgc3VwcG9ydHMgPSB0cnVlOworICAgIHN1cHBvcnRzID0gdHJ1ZTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAppbmRleCAyOTNhZTVmYmNl
MTY1MDE3NzBiNDg1NWI2OWFiMzk5MmEzZTU1NjdjLi4wZWE4MDQzYTMwZDIyMGI1ZWUwYjU1MjZk
YWVhNjcwYTBmYzY4MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1
bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKQEAgLTk5LDggKzk5
LDYgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsK
LSAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCA9PSBlbGVtZW50KTsK
ICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudCgpLmV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudChtX3BhZ2UuZ2V0KCksIGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmU4YmQz
NTc0YmQ2MTBkYmYxMTE0NDg0MzY5N2VjZTRhYzdkMGIzZC4uNWQ4YWQ1M2MxZGYxNGJiZjY2ZDg3
NzMzZjY5ZGRkMWI3NWNkM2JhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTA4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1
bGwgU2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVu
dC1zdGFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVu
YWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLWVuYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1yZXF1ZXN0LXJlamVjdGVkLmh0bWw6CisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1yZXF1ZXN0LXJlbW92ZWQuaHRtbDoKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXJlc3RyaWN0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tdGVzdC5qczoKKwogMjAxMi0wMy0wOCAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgTlVMTCByZW5kZXJlciBwb3NzaWJsZSBpbiBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpzZXRDYW5SZWNlaXZlRHJvcHBlZEZpbGVzKCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3Rh
Y2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMDZjZTEzYjJkZGViZTk5ZGMzYzMwZjJlOWU0
MTZjZmZiMmE2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rl
c3QgZm9yIFczQyBGdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2suCisKK1RvIHRlc3QgbWFudWFsbHks
IGNsaWNrIHRoZSAiR28gZnVsbCBzY3JlZW4iIGJ1dHRvbiAtIHRoZSBwYWdlIHNob3VsZCBlbnRl
ciBmdWxsIHNjcmVlbiBtb2RlLgorCitHbyBmdWxsIHNjcmVlbiAob25lKQorR28gZnVsbCBzY3Jl
ZW4gKHR3bykKK0V4aXQgZnVsbCBzY3JlZW4gKHR3bykKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5j
aGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQuaWQgPT0g
J29uZScpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3Vt
ZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkID09ICd0d28nKSBPSworRVZFTlQod2Via2l0
ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxl
bWVudC5pZCA9PSAnb25lJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay5odG1sIGIvTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzg3NzBlZjBkNGU2MjFlM2Y3NTY4M2IzYTM1NjYwZTdiYmU0OGNjYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay5odG1s
CkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4K
KyAgICB2YXIgb25lOworICAgIHZhciB0d287CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICBvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJyk7CisgICAgICAgIHR3
byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKTsKKworICAgICAgICB2YXIgY2FsbGJh
Y2s7CisgICAgICAgIHZhciBmdWxsc2NyZWVuQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2soZXZlbnQp
CisgICAgICAgIH07CisgICAgICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVuQ2hhbmdlZCk7CisKKyAgICAgICAgdmFyIG9uZUVudGVy
ZWRGdWxsc2NyZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRv
Y3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkIiwgIm9uZSIpOworICAgICAgICAgICAg
Y2FsbGJhY2sgPSB0d29FbnRlcmVkRnVsbHNjcmVlbjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVu
Y3Rpb24oKSB7IHR3by53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOyB9KTsKKyAgICAgICAgfTsK
KworICAgICAgICB2YXIgdHdvRW50ZXJlZEZ1bGxzY3JlZW4gPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQuaWQi
LCAidHdvIik7CisgICAgICAgICAgICBjYWxsYmFjayA9IHR3b0V4aXRlZEZ1bGxzY3JlZW47Cisg
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
ICAgIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIH07CisKKyAgICAg
ICAgdmFyIHR3b0V4aXRlZEZ1bGxzY3JlZW4gPSBmdW5jdGlvbigpIHsgCisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkIiwgIm9uZSIp
OworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9OworCisgICAgICAgIGNhbGxiYWNr
ID0gb25lRW50ZXJlZEZ1bGxzY3JlZW47CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpIHsgb25lLndl
YmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7IH0pOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0IGZvciA8YSBocmVmPSJo
dHRwOi8vZHZjcy53My5vcmcvaGcvZnVsbHNjcmVlbi9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRt
bCNmdWxsc2NyZWVuLWVsZW1lbnQtc3RhY2siPlczQyBGdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2s8
L2E+LjwvcD4KKyAgICA8cD5UbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1bGwgc2Ny
ZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS48L3A+
CisgICAgPGRpdj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJvbmUud2Via2l0UmVxdWVzdEZ1
bGxzY3JlZW4oKSI+R28gZnVsbCBzY3JlZW4gKG9uZSk8L2J1dHRvbj4KKyAgICA8L2Rpdj4KKyAg
ICA8ZGl2IGlkPW9uZT4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJ0d28ud2Via2l0UmVxdWVz
dEZ1bGxzY3JlZW4oKSI+R28gZnVsbCBzY3JlZW4gKHR3byk8L2J1dHRvbj4KKyAgICAgICAgPGRp
diBpZD10d28+CisgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImRvY3VtZW50LndlYmtpdEV4
aXRGdWxsc2NyZWVuKCkiPkV4aXQgZnVsbCBzY3JlZW4gKHR3byk8L2J1dHRvbj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEyYzBkMmQ0MTU2Yjk1ZmI2NWU5ZWNjNzkzMTYxMTY0
YWM1OGJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3RzIHRo
ZSBmdWxsc2NyZWVuRW5hYmxlZCBwcm9wZXJ0eSBsYWlkIG91dCBpbiBzZWN0aW9uIDQgb2YgdGhl
IFczQyBGdWxsIFNjcmVlbiBBUEkKK0VYUEVDVEVEIChpZnJhbWUuY29udGVudERvY3VtZW50Lndl
YmtpdEZ1bGxzY3JlZW5FbmFibGVkID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChpZnJhbWUyLmNv
bnRlbnREb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCA9PSAnZmFsc2UnKSBPSworRU5E
IE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1lbmFibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVuYWJs
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZDEwYmU1MjU1MWY0ZjhlZmE2YjkyNDg5MTRmMTY4NGQ2NGM5
OTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1lbmFibGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPGJvZHk+Cis8ZGl2PlRoaXMgdGVzdHMg
dGhlIDxjb2RlPmZ1bGxzY3JlZW5FbmFibGVkPC9jb2RlPiBwcm9wZXJ0eSBsYWlkIG91dCBpbiBz
ZWN0aW9uIDQgb2YgdGhlIFczQyAKKzxhIGhyZWY9Imh0dHA6Ly9kdmNzLnczLm9yZy9oZy9mdWxs
c2NyZWVuL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sIj5GdWxsIFNjcmVlbiBBUEk8L2E+PC9k
aXY+Cis8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJykpOworICAgIGlmcmFtZS5zZXRBdHRyaWJ1
dGUoJ3dlYmtpdGFsbG93ZnVsbHNjcmVlbicsICd0cnVlJyk7CisgICAgdmFyIGlmcmFtZTIgPSBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnaWZyYW1lJykpOworICAgIHRlc3RFeHBlY3RlZCgnaWZyYW1lLmNvbnRlbnREb2N1bWVudC53
ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCcsIHRydWUpOworICAgIHRlc3RFeHBlY3RlZCgnaWZyYW1l
Mi5jb250ZW50RG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQnLCBmYWxzZSk7CisgICAg
ZW5kVGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sCmluZGV4IDc3OTgzMmE3ZjIzOGJm
M2U2YzQxZDI3MDA3YmU0MjNjZWM5NmRjMTQuLjBlNzgxOWI5YWQ1MmY4NjRmODhkMzI5ZTEyYmQ3
ZDY2YWQ5NDE5MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sCkBAIC05LDcgKzksMTAgQEAKICAgICB9IGVs
c2UgewogICAgICAgICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hh
bmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGxvZ1Jlc3VsdCgiRW50ZXJlZCBmdWxsIHNj
cmVlbi4iLCBmYWxzZSk7IAorICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgICAgIH0pOworICAg
ICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKICAgICAgICAgd2FpdEZvckV2
ZW50QW5kRW5kKGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJyk7CiAgICAgICAgIGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1y
ZW1vdmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3Qt
cmVtb3ZlZC5odG1sCmluZGV4IDkyNjQyMTljMjQ2YjZmYThiZmYzYWNhMDA2YjY1Nzc5YTI2NWNl
OGIuLjIzMzBmZmJlOTE0NzFjYWY5ZmNkZTZiMjI4ZjMyOTg3ZDNjOWRmNDggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZW1vdmVkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlbW92ZWQu
aHRtbApAQCAtMTIsNiArMTIsOSBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAgICBjb25z
b2xlV3JpdGUoIlNVQ0NFRUQgLSBkaWQgbm90IGVudGVyIGZ1bGwgc2NyZWVuISIpOwogICAgIH0p
OwogCisgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKwogICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQoZGl2KTsKICAgICBjb25zb2xlV3JpdGUoIkFkZGVkIGNoaWxkIGVsZW1l
bnQuIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVz
dHJpY3Rpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tcmVzdHJpY3Rpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDAzMGRlZmM4YTA1NTM4
NmQ0YjY0ZmEyZTkyOTRmZWIwYTc3N2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTkgQEAKK1RoaXMgdGVzdHMgdGhlIHJlc3RyaWN0aW9ucyB0byBlbnRlcmluZyBmdWxsIHNj
cmVlbiBtb2RlIGxhaWQgb3V0IGluIHNlY3Rpb24gNC4xIG9mIHRoZSBXM0MgRnVsbCBTY3JlZW4g
QVBJCisiVGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBpbiBhIGRvY3VtZW50LiIKK0VWRU5UKHdl
YmtpdGZ1bGxzY3JlZW5lcnJvcikKKyJUaGUgY29udGV4dCBvYmplY3QncyBub2RlIGRvY3VtZW50
LCBvciBhbiBhbmNlc3RvciBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnQgZG9lcyBub3QgaGF2
ZSB0aGUgZnVsbHNjcmVlbiBlbmFibGVkIGZsYWcgc2V0LiIKK0VWRU5UKHdlYmtpdGZ1bGxzY3Jl
ZW5lcnJvcikKKyJUaGUgY29udGV4dCBvYmplY3QncyBub2RlIGRvY3VtZW50IGZ1bGxzY3JlZW4g
ZWxlbWVudCBzdGFjayBpcyBub3QgZW1wdHkgYW5kIGl0cyB0b3AgZWxlbWVudCBpcyBub3QgYW4g
YW5jZXN0b3Igb2YgdGhlIGNvbnRleHQgb2JqZWN0LiIKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5j
aGFuZ2UpCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCitFVkVOVCh3ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlKQorIkEgZGVzY2VuZGFudCBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnQgaGFz
IGEgbm9uLWVtcHR5IGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4iCitFVkVOVCh3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlKQorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmVycm9yKQorRVZFTlQod2Via2l0
ZnVsbHNjcmVlbmNoYW5nZSkKKyJUaGlzIGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZCB0byBzaG93
IGEgcG9wLXVwLiIKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5lcnJvcikKK0VORCBPRiBURVNUCisK
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3Ry
aWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmlj
dGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmJlMDlhNWJjOTAwN2Q0NTRjZjgwYmNlYjNlOGUyOWIw
NGIyNDZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi1yZXN0cmljdGlvbnMuaHRtbApAQCAtMCwwICsxLDc0IEBACis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKTsiPgorPGRpdj5UaGlzIHRlc3RzIHRoZSByZXN0cmljdGlvbnMgdG8gZW50ZXJpbmcg
ZnVsbCBzY3JlZW4gbW9kZSBsYWlkIG91dCBpbiBzZWN0aW9uIDQuMSBvZiB0aGUgVzNDIAorPGEg
aHJlZj0iaHR0cDovL2R2Y3MudzMub3JnL2hnL2Z1bGxzY3JlZW4vcmF3LWZpbGUvdGlwL092ZXJ2
aWV3Lmh0bWwiPkZ1bGwgU2NyZWVuIEFQSTwvYT48L2Rpdj4KKzxzY3JpcHQgc3JjPSJmdWxsLXNj
cmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gQmFpbCBvdXQgZWFybHkg
aWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBpcyBub3QgZW5hYmxlZCBvciBpcyBtaXNzaW5nOgorICAg
IGlmIChFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmlu
ZWQpIHsKKyAgICAgICAgbG9nUmVzdWx0KGZhbHNlLCAiRWxlbWVudC5wcm90b3R5cGUud2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkIik7CisgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICB2YXIgY2FsbGJhY2s7CisKKyAgICAgICAgdmFyIHJ1blRlc3Qg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gZXJyb3JSZXN1bHQxOworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCciVGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBpbiBhIGRv
Y3VtZW50LiInKTsKKyAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2LndlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZXJyb3JS
ZXN1bHQxID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjYWxsYmFjayA9IGVycm9yUmVzdWx0
MjsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnIlRoZSBjb250ZXh0IG9iamVjdFwncyBub2Rl
IGRvY3VtZW50LCBvciBhbiBhbmNlc3RvciBicm93c2luZyBjb250ZXh0XCdzIGRvY3VtZW50IGRv
ZXMgbm90IGhhdmUgdGhlIGZ1bGxzY3JlZW4gZW5hYmxlZCBmbGFnIHNldC4iJykKKyAgICAgICAg
ICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJykpOworICAgICAgICAgICAgdmFyIGRpdiA9IGlm
cmFtZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGlmcmFtZS5j
b250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworCisgICAgICAgICAgICB3YWl0
Rm9yRXZlbnRPbmNlKGlmcmFtZS5jb250ZW50RG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuZXJy
b3InLCBmdW5jdGlvbigpIHsgY2FsbGJhY2soKTsgfSk7CisgICAgICAgICAgICBydW5XaXRoS2V5
RG93bihmdW5jdGlvbigpe2Rpdi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7CisgICAgICAg
IH07CisKKyAgICAgICAgdmFyIGVycm9yUmVzdWx0MiA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgY2FsbGJhY2sgPSBlcnJvclJlc3VsdDM7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJyJU
aGUgY29udGV4dCBvYmplY3RcJ3Mgbm9kZSBkb2N1bWVudCBmdWxsc2NyZWVuIGVsZW1lbnQgc3Rh
Y2sgaXMgbm90IGVtcHR5IGFuZCBpdHMgdG9wIGVsZW1lbnQgaXMgbm90IGFuIGFuY2VzdG9yIG9m
IHRoZSBjb250ZXh0IG9iamVjdC4iJyk7CisgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
KTsKKyAgICAgICAgICAgIHZhciBkaXYyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgICAgIHdhaXRG
b3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYyLndlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcnVu
V2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOwor
ICAgICAgICB9OworCisgICAgICAgIHZhciBlcnJvclJlc3VsdDMgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hh
bmdlJywgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGVycm9yUmVzdWx0
NDsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJyJBIGRlc2NlbmRhbnQgYnJvd3Npbmcg
Y29udGV4dFwncyBkb2N1bWVudCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVlbiBlbGVtZW50IHN0
YWNrLiInKTsKKyAgICAgICAgICAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpKTsKKyAg
ICAgICAgICAgICAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCd3ZWJraXRhbGxvd2Z1bGxzY3JlZW4n
LCAndHJ1ZScpOworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBpZnJhbWUuY29udGVudERvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChpZnJhbWUuY29udGVudERvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGRv
Y3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgZGl2MiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgICAgICAgICAgICAgIHJ1
bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2Mi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVu
Y3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpOworICAgICAgICB9
OworCisgICAgICAgIHZhciBlcnJvclJlc3VsdDQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHdhaXRGb3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVu
Y3Rpb24oKXsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGVycm9yUmVz
dWx0NTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJyJUaGlzIGFsZ29yaXRobSBpcyBu
b3QgYWxsb3dlZCB0byBzaG93IGEgcG9wLXVwLiInKTsKKyAgICAgICAgICAgICAgICB2YXIgZGl2
ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgICAgICAgICBkaXYud2Via2l0UmVxdWVzdEZ1bGxzY3Jl
ZW4oKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1
bGxzY3JlZW4oKTsgICAgICAgICAgICAgICAgCisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGVy
cm9yUmVzdWx0NSA9IGZ1bmN0aW9uKCkgeyBlbmRUZXN0KCk7IH0KKworICAgICAgICBpZiAobGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQ
b3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnQoZG9jdW1l
bnQsICd3ZWJraXRmdWxsc2NyZWVuZXJyb3InLCBmdW5jdGlvbigpIHsgY2FsbGJhY2soKTsgfSk7
CisgICAgfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRl
c3QuanMKaW5kZXggNWU1YmIxYWY3YTc4MmFjZmVjOTI1YzZkMjhiN2VmOGEyMjI0Mzc0OS4uODAx
YjViYTllM2E2MTJiYWYzNjczYzZkYTU3MThjMzU4NWJhM2Y5MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwpAQCAtOTgsMTAgKzk4LDE4IEBAIGZ1bmN0aW9u
IHdhaXRGb3JFdmVudEFuZEVuZChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcpCiAgICAg
d2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKIH0KIAot
ZnVuY3Rpb24gd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCitm
dW5jdGlvbiB3YWl0Rm9yRXZlbnRPbmNlKGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQp
Cit7CisgICAgd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQsIHRy
dWUpCit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMs
IGVuZGl0LCBvbmNlKQogewogICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQogICAg
IHsKKyAgICAgICAgaWYgKG9uY2UpCisgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7CisKICAgICAgICAgY29uc29sZVdyaXRl
KCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsKIAogICAgICAgICBpZiAoZnVuYykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131041</attachid>
            <date>2012-03-09 08:36:26 -0800</date>
            <delta_ts>2012-03-09 08:43:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80660-20120309083624.patch</filename>
            <type>text/plain</type>
            <size>41692</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU4Mjk5NDhhZGI2YjA4
YzE1Yzk3ZTNlZmM3ZTIzMGVkNDhmNzk4Ni4uNWNjOTQ2MDliZDM4ZWQ0NTQyYjg5ODAyZDMxMzE4
YTg0NmMxMGJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAzLTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNj
cmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKzIwMTItMDMtMDgg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBXM0Mg
RnVsbCBTY3JlZW4gQVBJIHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MDY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3RzOiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3Rh
Y2suaHRtbAorICAgICAgICAgICAgICAgZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLmh0
bWwKKyAgICAgICAgICAgICAgIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0
bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlZExhc3RSZWYpOiBDbGVhciBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RnVsbHNjcmVlbkVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZnVsbFNjcmVlbkNo
YW5nZURlbGF5VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xlYXJG
dWxsc2NyZWVuRWxlbWVudFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwb3BG
dWxsc2NyZWVuRWxlbWVudFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwdXNo
RnVsbHNjcmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dGFz
a0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4pOgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorCisgICAgICAgIEFkZCBu
ZXcgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBmdW5jdGlvbnMgZm9yIHRoZSBhZGRlZCBEb2N1bWVu
dCBhbmQgRWxlbWVudCBmdW5jdGlvbnMuCisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEZ1bGxzY3Jl
ZW5FbmFibGVkRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RXhpdEZ1bGxzY3JlZW5FbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFJlcXVlc3RGdWxs
c2NyZWVuRW5hYmxlZCk6CisKKwogMjAxMi0wMy0wOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVzZSBhbiBleHBsaWNpdCBhdHRyaWJ1dGUgdG8gc2ln
bmFsIHRoYXQgYSBjb250ZXh0IHByZWZlcnMgdG8gdXNlIGEgZGlzY3JldGUgR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggNDhmNjRiYjQ5ZWQ4MDhkMzkwOWVlOGYwMTk2NjliZjNkZTZkMjAwYi4uNjFi
ZTBkNGIzMzQwZTM1OGE0NTU3YWM1NTJjYmY3NTVlOTAwODJlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDE3IEBACiAyMDEyLTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwgU2NyZWVuIEFQSSBwcm9wb3NhbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBmdWxsIHNj
cmVlbiBlbGVtZW50cyB0byBhY2Nlc3MgdGhlIGtleWJvYXJkLgorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JF
bGVtZW50OldlYkNvcmU6OndpdGhLZXlib2FyZDpdKToKKworMjAxMi0wMy0wOCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkIFNub3cgTGVvcGFy
ZCBidWlsZCBmaXguCiAKICAgICAgICAgT24gTGVvcGFyZCBhbmQgU25vdyBMZW9wYXJkLCBwcm92
aWRlIGFuIGltcGxlbWVudGF0aW9uIGZvciAtW05TV2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46
XS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA3YmNhY2ZhMDAzMzJkOTQzYzc0ZjNhNGZkMGZjMDI2ZjFlZjJlN2Fh
Li5hYTE2MWFhNWEyNGE1YzY4NTlhNzRhZGU5Mjc5Zjk1NDQyMzIwZmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMTkgQEAKIDIwMTItMDMtMDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CiAKKyAgICAgICAgU3VwcG9ydCBXM0MgRnVsbCBTY3JlZW4gQVBJIHByb3Bvc2FsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDY2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGZ1bGwgc2Ny
ZWVuIGVsZW1lbnRzIHRvIGFjY2VzcyB0aGUga2V5Ym9hcmQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisK
KzIwMTItMDMtMDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAg
VW5yZXZpZXdlZCBTbm93IExlb3BhcmQgYnVpbGQgZml4LgogCiAgICAgICAgIE9uIExlb3BhcmQg
YW5kIFNub3cgTGVvcGFyZCwgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgLVtOU1dpbmRv
dyBjb252ZXJ0UmVjdFRvU2NyZWVuOl0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDQ1M2IxMjE0MTJh
ZTdjNThhMGZmNTViODY4NDA2ZDkyYzdhMjAzMmEuLmYwNDk4YzRjNWYzODVmYjg1YTI2NjUyODA2
ZmI5MjdmN2NiNzIwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC03MSw2ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCB3ZWJraXRJREJUcmFuc2FjdGlvbkVuYWJsZWQoKSB7IHJldHVy
biBpc0luZGV4ZWREQkVuYWJsZWQ7IH0KIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAg
ICAvLyBNb3ppbGxhIHZlcnNpb24KICAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2NyZWVuQVBJ
RW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICAgICBzdGF0aWMg
dm9pZCBzZXRXZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0Z1
bGxTY3JlZW5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgd2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxl
ZDsgfQpAQCAtNzgsNiArNzksMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHdlYmtpdEZ1
bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5F
bGVtZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICAgICBz
dGF0aWMgYm9vbCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVs
bFNjcmVlbkFQSUVuYWJsZWQ7IH0KKworICAgIC8vIFczQyB2ZXJzaW9uCisgICAgc3RhdGljIGJv
b2wgd2Via2l0RnVsbHNjcmVlbkVuYWJsZWRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVu
QVBJRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50RW5h
YmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9v
bCB3ZWJraXRFeGl0RnVsbHNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW5FbmFibGVk
KCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTFlMmJkYmY4M2Nk
MzVlMTFhYjQ5MGY5N2ZkY2RjZjk1YzZmZWU2OC4uMDdlZWM5ZjFkZjgxMDhiNzQ2Y2NhNGUyNTQw
MzAyMTg2NDQ4MzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02MDcsNiArNjA3LDcg
QEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogICAgICAgICBtX2RvY3VtZW50RWxl
bWVudCA9IDA7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICBtX2Z1bGxTY3Jl
ZW5FbGVtZW50ID0gMDsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmNsZWFyKCk7
CiAjZW5kaWYKIAogICAgICAgICAvLyByZW1vdmVBbGxDaGlsZHJlbigpIGRvZXNuJ3QgYWx3YXlz
IHVucmVnaXN0ZXIgSURzLApAQCAtNTA1MSwzNyArNTA1MiwyMjQgQEAgYm9vbCBEb2N1bWVudDo6
ZnVsbFNjcmVlbklzQWxsb3dlZEZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKIAog
dm9pZCBEb2N1bWVudDo6cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQsIHVuc2lnbmVkIHNob3J0IGZsYWdzLCBGdWxsU2NyZWVuQ2hlY2tUeXBlIGNoZWNrVHlwZSkK
IHsKLSAgICBkbyB7Ci0gICAgICAgIGlmICghcGFnZSgpIHx8ICFwYWdlKCktPnNldHRpbmdzKCkt
PmZ1bGxTY3JlZW5FbmFibGVkKCkpCi0gICAgICAgICAgICBicmVhazsKKyAgICAvLyBUaGUgTW96
aWxsYSBGdWxsIFNjcmVlbiBBUEkgPGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9HZWNrbzpGdWxs
U2NyZWVuQVBJPiBoYXMgZGlmZmVyZW50IHJlcXVpcmVtZW50cworICAgIC8vIGZvciBmdWxsIHNj
cmVlbiBtb2RlLCBhbmQgZG8gbm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgYSBmdWxsIHNjcmVlbiBl
bGVtZW50IHN0YWNrLgorICAgIGJvb2wgaW5MZWdhY3lNb3ppbGxhTW9kZSA9IChmbGFncyAmIEVs
ZW1lbnQ6OkxFR0FDWV9NT1pJTExBX1JFUVVFU1QpOwogCisgICAgZG8gewogICAgICAgICBpZiAo
IWVsZW1lbnQpCiAgICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAg
ICAgIAorIAorICAgICAgICAvLyAxLiBJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSB0cnVlLCB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMgYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJl
CisgICAgICAgIC8vIGFuIGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5lcnJvciB3aXRoIGl0cyBidWJi
bGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSBvbiB0aGUgY29udGV4dCBvYmplY3QncyAKKyAgICAg
ICAgLy8gbm9kZSBkb2N1bWVudDoKKworICAgICAgICAvLyBUaGUgY29udGV4dCBvYmplY3QgaXMg
bm90IGluIGEgZG9jdW1lbnQuCisgICAgICAgIGlmICghZWxlbWVudC0+aW5Eb2N1bWVudCgpKQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gVGhlIGNvbnRleHQgb2JqZWN0J3Mgbm9k
ZSBkb2N1bWVudCwgb3IgYW4gYW5jZXN0b3IgYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50IGRv
ZXMgbm90IGhhdmUKKyAgICAgICAgLy8gdGhlIGZ1bGxzY3JlZW4gZW5hYmxlZCBmbGFnIHNldC4K
ICAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBFbmZvcmNlSUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1
aXJlbWVudCAmJiAhZnVsbFNjcmVlbklzQWxsb3dlZEZvckVsZW1lbnQoZWxlbWVudCkpCiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIGlmICghU2NyaXB0Q29udHJvbGxlcjo6
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisKKyAgICAgICAgLy8gVGhlIGNvbnRleHQgb2JqZWN0
J3Mgbm9kZSBkb2N1bWVudCBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sgaXMgbm90IGVtcHR5IGFu
ZCBpdHMgdG9wIGVsZW1lbnQKKyAgICAgICAgLy8gaXMgbm90IGFuIGFuY2VzdG9yIG9mIHRoZSBj
b250ZXh0IG9iamVjdC4gKE5PVEU6IElnbm9yZSB0aGlzIHJlcXVpcmVtZW50IGlmIHRoZSByZXF1
ZXN0IHdhcworICAgICAgICAvLyBtYWRlIHZpYSB0aGUgbGVnYWN5IE1vemlsbGEtc3R5bGUgQVBJ
LikKKyAgICAgICAgaWYgKCFtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpICYmICFt
X2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suZmlyc3QoKS0+Y29udGFpbnMoZWxlbWVudCkgJiYgIWlu
TGVnYWN5TW96aWxsYU1vZGUpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBBIGRl
c2NlbmRhbnQgYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50IGhhcyBhIG5vbi1lbXB0eSBmdWxs
c2NyZWVuIGVsZW1lbnQgc3RhY2suCisgICAgICAgIGJvb2wgZGVzY2VuZGVudEhhc05vbkVtcHR5
U3RhY2sgPSBmYWxzZTsKKyAgICAgICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9IGZyYW1lKCkg
PyBmcmFtZSgpLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpIDogMDsgZGVzY2VuZGFudDsgZGVzY2Vu
ZGFudCA9IGRlc2NlbmRhbnQtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgICAg
IGlmIChkZXNjZW5kYW50LT5kb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKSB7
CisgICAgICAgICAgICAgICAgZGVzY2VuZGVudEhhc05vbkVtcHR5U3RhY2sgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlm
IChkZXNjZW5kZW50SGFzTm9uRW1wdHlTdGFjayAmJiAhaW5MZWdhY3lNb3ppbGxhTW9kZSkKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFRoaXMgYWxnb3JpdGhtIGlzIG5vdCBhbGxv
d2VkIHRvIHNob3cgYSBwb3AtdXAuCisgICAgICAgIGlmICghZG9tV2luZG93KCktPmFsbG93UG9w
VXAoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFRoZXJlIGlzIGEgcHJldmlv
dXNseS1lc3RhYmxpc2hlZCB1c2VyIHByZWZlcmVuY2UsIHNlY3VyaXR5IHJpc2ssIG9yIHBsYXRm
b3JtIGxpbWl0YXRpb24uCisgICAgICAgIGlmICghcGFnZSgpIHx8ICFwYWdlKCktPnNldHRpbmdz
KCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgICAgIGlmICghcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbFNjcmVl
bkZvckVsZW1lbnQoZWxlbWVudCwgZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBV
VCkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgCisKKyAgICAgICAgLy8gTm90ZTogdGhl
IE1vemlsbGEgRnVsbCBTY3JlZW4gQVBJIGRvZXMgbm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgYSBm
dWxsIHNjcmVlbiBlbGVtZW50IHN0YWNrCisgICAgICAgIC8vIHNvIGNsZWFyIHRoZSBzdGFjayBi
ZWZvcmUgcHVzaGluZyB0aGUgbmV3IGVsZW1lbnQ6CisgICAgICAgIGlmIChpbkxlZ2FjeU1vemls
bGFNb2RlKSB7CisgICAgICAgICAgICB3ZWJraXRFeGl0RnVsbHNjcmVlbigpOworICAgICAgICAg
ICAgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmNsZWFyKCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyAyLiBMZXQgZG9jIGJlIGVsZW1lbnQncyBub2RlIGRvY3VtZW50LiAoaS5lLiAidGhpcyIp
CisgICAgICAgIERvY3VtZW50KiBkb2MgPSB0aGlzOworCisgICAgICAgIC8vIDMuIExldCBkb2Nz
IGJlIGFsbCBkb2MncyBhbmNlc3RvciBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnRzIChpZiBh
bnkpIGFuZCBkb2MuCisgICAgICAgIERlcXVlPERvY3VtZW50Kj4gZG9jczsKKworICAgICAgICBk
byB7CisgICAgICAgICAgICBkb2NzLnByZXBlbmQoZG9jKTsKKyAgICAgICAgICAgIGRvYyA9IGRv
Yy0+b3duZXJFbGVtZW50KCkgPyBkb2MtPm93bmVyRWxlbWVudCgpLT5kb2N1bWVudCgpIDogMDsK
KyAgICAgICAgfSB3aGlsZSAoZG9jKTsKKworICAgICAgICAvLyA0LiBGb3IgZWFjaCBkb2N1bWVu
dCBpbiBkb2NzLCBydW4gdGhlc2Ugc3Vic3RlcHM6CisgICAgICAgIERlcXVlPERvY3VtZW50Kj46
Oml0ZXJhdG9yIGN1cnJlbnQgPSBkb2NzLmJlZ2luKCksIGZvbGxvd2luZyA9IGRvY3MuYmVnaW4o
KTsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICArK2ZvbGxvd2luZzsKKworICAgICAgICAg
ICAgLy8gMS4gTGV0IGZvbGxvd2luZyBkb2N1bWVudCBiZSB0aGUgZG9jdW1lbnQgYWZ0ZXIgZG9j
dW1lbnQgaW4gZG9jcywgb3IgbnVsbCBpZiB0aGVyZSBpcyBubworICAgICAgICAgICAgLy8gc3Vj
aCBkb2N1bWVudC4KKyAgICAgICAgICAgIERvY3VtZW50KiBjdXJyZW50RG9jID0gKmN1cnJlbnQ7
CisgICAgICAgICAgICBEb2N1bWVudCogZm9sbG93aW5nRG9jID0gZm9sbG93aW5nICE9IGRvY3Mu
ZW5kKCkgPyAqZm9sbG93aW5nIDogMDsKKworICAgICAgICAgICAgLy8gMi4gSWYgZm9sbG93aW5n
IGRvY3VtZW50IGlzIG51bGwsIHB1c2ggY29udGV4dCBvYmplY3Qgb24gZG9jdW1lbnQncyBmdWxs
c2NyZWVuIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIHN0YWNrLCBhbmQgcXVldWUgYSB0YXNrIHRv
IGZpcmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNoYW5nZSB3aXRoIGl0cyBidWJibGVzIGF0
dHJpYnV0ZQorICAgICAgICAgICAgLy8gc2V0IHRvIHRydWUgb24gdGhlIGRvY3VtZW50LgorICAg
ICAgICAgICAgaWYgKCFmb2xsb3dpbmdEb2MpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50RG9j
LT5wdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBj
dXJyZW50RG9jLT50YXNrRnVsbHNjcmVlbkNoYW5nZUV2ZW50KCk7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDMuIE90aGVyd2lzZSwg
aWYgZG9jdW1lbnQncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sgaXMgZWl0aGVyIGVtcHR5IG9y
IGl0cyB0b3AgZWxlbWVudAorICAgICAgICAgICAgLy8gaXMgbm90IGZvbGxvd2luZyBkb2N1bWVu
dCdzIGJyb3dzaW5nIGNvbnRleHQgY29udGFpbmVyLAorICAgICAgICAgICAgRWxlbWVudCogdG9w
RWxlbWVudCA9IGN1cnJlbnREb2MtPndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KCk7CisgICAgICAg
ICAgICBpZiAoIXRvcEVsZW1lbnQgfHwgdG9wRWxlbWVudCAhPSBmb2xsb3dpbmdEb2MtPm93bmVy
RWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgLy8gLi4ucHVzaCBmb2xsb3dpbmcgZG9jdW1l
bnQncyBicm93c2luZyBjb250ZXh0IGNvbnRhaW5lciBvbiBkb2N1bWVudCdzIGZ1bGxzY3JlZW4g
ZWxlbWVudAorICAgICAgICAgICAgICAgIC8vIHN0YWNrLCBhbmQgcXVldWUgYSB0YXNrIHRvIGZp
cmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNoYW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJp
YnV0ZQorICAgICAgICAgICAgICAgIC8vIHNldCB0byB0cnVlIG9uIGRvY3VtZW50LgorICAgICAg
ICAgICAgICAgIGN1cnJlbnREb2MtPnB1c2hGdWxsc2NyZWVuRWxlbWVudFN0YWNrKGZvbGxvd2lu
Z0RvYy0+b3duZXJFbGVtZW50KCkpOworICAgICAgICAgICAgICAgIGN1cnJlbnREb2MtPnRhc2tG
dWxsc2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gNC4gT3RoZXJ3aXNlLCBkbyBub3RoaW5nIGZvciB0
aGlzIGRvY3VtZW50LiBJdCBzdGF5cyB0aGUgc2FtZS4KKyAgICAgICAgfSB3aGlsZSAoKytjdXJy
ZW50ICE9IGRvY3MuZW5kKCkpOworCisgICAgICAgIC8vIDUuIFJldHVybiwgYW5kIHJ1biB0aGUg
cmVtYWluaW5nIHN0ZXBzIGFzeW5jaHJvbm91c2x5LgorICAgICAgICAvLyA2LiBPcHRpb25hbGx5
LCBwZXJmb3JtIHNvbWUgYW5pbWF0aW9uLgogICAgICAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxs
U2NyZWVuID0gZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVDsKICAgICAgICAg
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxl
bWVudCk7CisKKyAgICAgICAgLy8gNy4gT3B0aW9uYWxseSwgZGlzcGxheSBhIG1lc3NhZ2UgaW5k
aWNhdGluZyBob3cgdGhlIHVzZXIgY2FuIGV4aXQgZGlzcGxheWluZyB0aGUgY29udGV4dCBvYmpl
Y3QgZnVsbHNjcmVlbi4KICAgICAgICAgcmV0dXJuOwogICAgIH0gd2hpbGUgKDApOwotICAgIAor
CiAgICAgbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLmFwcGVuZChlbGVtZW50ID8g
ZWxlbWVudCA6IGRvY3VtZW50RWxlbWVudCgpKTsKICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxh
eVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6d2Via2l0Q2FuY2Vs
RnVsbFNjcmVlbigpCiB7Ci0gICAgaWYgKCFwYWdlKCkgfHwgIW1fZnVsbFNjcmVlbkVsZW1lbnQp
CisgICAgLy8gVGhlIE1vemlsbGEgImNhbmNlbEZ1bGxTY3JlZW4oKSIgQVBJIGJlaGF2ZXMgbGlr
ZSB0aGUgVzNDICJmdWxseSBleGl0IGZ1bGxzY3JlZW4iIGJlaGF2aW9yLCB3aGljaAorICAgIC8v
IGlzIGRlZmluZWQgYXM6IAorICAgIC8vICJUbyBmdWxseSBleGl0IGZ1bGxzY3JlZW4gYWN0IGFz
IGlmIHRoZSBleGl0RnVsbHNjcmVlbigpIG1ldGhvZCB3YXMgaW52b2tlZCBvbiB0aGUgdG9wLWxl
dmVsIGJyb3dzaW5nCisgICAgLy8gY29udGV4dCdzIGRvY3VtZW50IGFuZCBzdWJzZXF1ZW50bHkg
ZW1wdHkgdGhhdCBkb2N1bWVudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4iCisgICAgaWYg
KCF0b3BEb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKQogICAgICAgICByZXR1
cm47CisKKyAgICAvLyBUbyBhY2hpZXZlIHRoYXQgYWltLCByZW1vdmUgYWxsIHRoZSBlbGVtZW50
cyBmcm9tIHRoZSB0b3AgZG9jdW1lbnQncyBzdGFjayBleGNlcHQgZm9yIHRoZSBmaXJzdCBiZWZv
cmUKKyAgICAvLyBjYWxsaW5nIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk6CisgICAgRGVxdWU8UmVm
UHRyPEVsZW1lbnQ+ID4gcmVwbGFjZW1lbnRGdWxsc2NyZWVuRWxlbWVudFN0YWNrOworICAgIHJl
cGxhY2VtZW50RnVsbHNjcmVlbkVsZW1lbnRTdGFjay5wcmVwZW5kKHRvcERvY3VtZW50KCktPndl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkpOworICAgIHRvcERvY3VtZW50KCktPm1fZnVsbFNjcmVl
bkVsZW1lbnRTdGFjay5zd2FwKHJlcGxhY2VtZW50RnVsbHNjcmVlbkVsZW1lbnRTdGFjayk7CisK
KyAgICB0b3BEb2N1bWVudCgpLT53ZWJraXRFeGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIERv
Y3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbigpCit7CisgICAgLy8gVGhlIGV4aXRGdWxsc2Ny
ZWVuKCkgbWV0aG9kIG11c3QgcnVuIHRoZXNlIHN0ZXBzOgogICAgIAotICAgIHBhZ2UoKS0+Y2hy
b21lKCktPmNsaWVudCgpLT5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxl
bWVudC5nZXQoKSk7CisgICAgLy8gMS4gTGV0IGRvYyBiZSB0aGUgY29udGV4dCBvYmplY3QuIChp
LmUuICJ0aGlzIikKKyAgICBEb2N1bWVudCogZG9jID0gdGhpczsKKworICAgIC8vIDIuIElmIGRv
YydzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjayBpcyBlbXB0eSwgdGVybWluYXRlIHRoZXNlIHN0
ZXBzLgorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgLy8gMy4gTGV0IGRlc2NlbmRhbnRzIGJlIGFsbCB0aGUgZG9j
J3MgZGVzY2VuZGFudCBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnRzIHdpdGggYSBub24tZW1w
dHkgZnVsbHNjcmVlbgorICAgIC8vIGVsZW1lbnQgc3RhY2sgKGlmIGFueSksIG9yZGVyZWQgc28g
dGhhdCB0aGUgY2hpbGQgb2YgdGhlIGRvYyBpcyBsYXN0IGFuZCB0aGUgZG9jdW1lbnQgZnVydGhl
c3QKKyAgICAvLyBhd2F5IGZyb20gdGhlIGRvYyBpcyBmaXJzdC4KKyAgICBEZXF1ZTxSZWZQdHI8
RG9jdW1lbnQ+ID4gZGVzY2VuZGFudHM7CisgICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9IGZy
YW1lKCkgPyBmcmFtZSgpLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpIDogMDsgZGVzY2VuZGFudDsg
ZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAg
ICAgaWYgKGRlc2NlbmRhbnQtPmRvY3VtZW50KCktPndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkp
CisgICAgICAgICAgICBkZXNjZW5kYW50cy5wcmVwZW5kKGRlc2NlbmRhbnQtPmRvY3VtZW50KCkp
OworICAgIH0KKyAgICAgICAgCisgICAgLy8gNC4gRm9yIGVhY2ggZGVzY2VuZGFudCBpbiBkZXNj
ZW5kYW50cywgZW1wdHkgZGVzY2VuZGFudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjaywgYW5k
IHF1ZXVlIGEKKyAgICAvLyB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNo
YW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSBvbiBkZXNjZW5kYW50
LgorICAgIGZvciAoRGVxdWU8UmVmUHRyPERvY3VtZW50PiA+OjppdGVyYXRvciBpID0gZGVzY2Vu
ZGFudHMuYmVnaW4oKTsgaSAhPSBkZXNjZW5kYW50cy5lbmQoKTsgKytpKSB7CisgICAgICAgICgq
aSktPmNsZWFyRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpOworICAgICAgICAoKmkpLT50YXNrRnVs
bHNjcmVlbkNoYW5nZUV2ZW50KCk7CisgICAgfQorCisgICAgLy8gNS4gV2hpbGUgZG9jIGlzIG5v
dCBudWxsLCBydW4gdGhlc2Ugc3Vic3RlcHM6CisgICAgRWxlbWVudCogbmV3VG9wOworICAgIHdo
aWxlIChkb2MpIHsKKyAgICAgICAgLy8gMS4gUG9wIHRoZSB0b3AgZWxlbWVudCBvZiBkb2MncyBm
dWxsc2NyZWVuIGVsZW1lbnQgc3RhY2suCisgICAgICAgIGRvYy0+cG9wRnVsbHNjcmVlbkVsZW1l
bnRTdGFjaygpOworCisgICAgICAgIC8vICAgIElmIGRvYydzIGZ1bGxzY3JlZW4gZWxlbWVudCBz
dGFjayBpcyBub24tZW1wdHkgYW5kIHRoZSBlbGVtZW50IG5vdyBhdCB0aGUgdG9wIGlzIGVpdGhl
cgorICAgICAgICAvLyAgICBub3QgaW4gYSBkb2N1bWVudCBvciBpdHMgbm9kZSBkb2N1bWVudCBp
cyBub3QgZG9jLCByZXBlYXQgdGhpcyBzdWJzdGVwLgorICAgICAgICBuZXdUb3AgPSBkb2MtPndl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50KCk7CisgICAgICAgIGlmIChuZXdUb3AgJiYgKCFuZXdUb3At
PmluRG9jdW1lbnQoKSB8fCBuZXdUb3AtPmRvY3VtZW50KCkgIT0gZG9jKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIC8vIDIuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGFuIGV2ZW50
IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ugd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUgc2V0IHRv
IHRydWUKKyAgICAgICAgLy8gb24gZG9jLgorICAgICAgICBkb2MtPnRhc2tGdWxsc2NyZWVuQ2hh
bmdlRXZlbnQoKTsKKworICAgICAgICAvLyAzLiBJZiBkb2MncyBmdWxsc2NyZWVuIGVsZW1lbnQg
c3RhY2sgaXMgZW1wdHkgYW5kIGRvYydzIGJyb3dzaW5nIGNvbnRleHQgaGFzIGEgYnJvd3Npbmcg
Y29udGV4dAorICAgICAgICAvLyBjb250YWluZXIsIHNldCBkb2MgdG8gdGhhdCBicm93c2luZyBj
b250ZXh0IGNvbnRhaW5lcidzIG5vZGUgZG9jdW1lbnQuCisgICAgICAgIGlmICghbmV3VG9wICYm
IGRvYy0+b3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICBkb2MgPSBkb2MtPm93bmVyRWxlbWVu
dCgpLT5kb2N1bWVudCgpOworCisgICAgICAgIC8vIDQuIE90aGVyd2lzZSwgc2V0IGRvYyB0byBu
dWxsLgorICAgICAgICBkb2MgPSAwOworICAgIH0KKworICAgIC8vIDYuIFJldHVybiwgYW5kIHJ1
biB0aGUgcmVtYWluaW5nIHN0ZXBzIGFzeW5jaHJvbm91c2x5LgorICAgIC8vIDcuIE9wdGlvbmFs
bHksIHBlcmZvcm0gc29tZSBhbmltYXRpb24uCisKKyAgICAvLyBPbmx5IGV4aXQgb3V0IG9mIGZ1
bGwgc2NyZWVuIHdpbmRvdyBtb2RlIGlmIHRoZXJlIGFyZSBubyByZW1haW5pbmcgZWxlbWVudHMg
aW4gdGhlIAorICAgIC8vIGZ1bGwgc2NyZWVuIHN0YWNrLgorICAgIGlmICghbmV3VG9wKSB7Cisg
ICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbFNjcmVlbkZvckVsZW1l
bnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBPdGhlcndpc2UsIG5vdGlmeSB0aGUgY2hyb21lIG9mIHRoZSBuZXcgZnVsbCBzY3Jl
ZW4gZWxlbWVudC4KKyAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudChuZXdUb3ApOyAgICAgIAorfQorCitib29sIERvY3VtZW50Ojp3ZWJraXRG
dWxsc2NyZWVuRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgLy8gNC4gVGhlIGZ1bGxzY3JlZW5FbmFi
bGVkIGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IG9iamVjdCBhbmQg
YWxsIGFuY2VzdG9yCisgICAgLy8gYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50cyBoYXZlIHRo
ZWlyIGZ1bGxzY3JlZW4gZW5hYmxlZCBmbGFnIHNldCwgb3IgZmFsc2Ugb3RoZXJ3aXNlLgorCisg
ICAgLy8gVG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzIGFyZSBpbXBsaWVkIHRvIGhhdmUgdGhl
aXIgYWxsb3dGdWxsU2NyZWVuIGF0dHJpYnV0ZSBzZXQuCisgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lciA9IG93bmVyRWxlbWVudCgpOworICAgIGlmICghb3duZXIpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgZG8geworICAgICAgICBpZiAoIW93bmVyLT5pc0ZyYW1lRWxlbWVu
dEJhc2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghc3RhdGljX2Nh
c3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihvd25lciktPmFsbG93RnVsbFNjcmVlbigpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gd2hpbGUgKChvd25lciA9IG93bmVyLT5kb2N1
bWVudCgpLT5vd25lckVsZW1lbnQoKSkpOworCisgICAgcmV0dXJuIHRydWU7ICAgICAgICAKIH0K
IAogdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxl
bWVudCogZWxlbWVudCkKQEAgLTUxMTcsMTIgKzUzMDUsMTQgQEAgdm9pZCBEb2N1bWVudDo6d2Vi
a2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKIHsKICAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOwogCi0gICAgbV9mdWxs
U2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQobV9mdWxsU2NyZWVuRWxlbWVudCk7
CiAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVu
dCopCiB7CisgICAgaWYgKCFtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICByZXR1cm47CisK
ICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5zZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50T25B
bmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhmYWxzZSk7CiAgICAgCiAgICAgbV9mdWxs
U2NyZWVuRWxlbWVudC0+d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCk7CkBAIC01MTM1
LDcgKzUzMjUsNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVs
ZW1lbnQoRWxlbWVudCopCiAgICAgaWYgKG1fZnVsbFNjcmVlblJlbmRlcmVyKQogICAgICAgICBt
X2Z1bGxTY3JlZW5SZW5kZXJlci0+dW53cmFwUmVuZGVyZXIoKTsKIAotICAgIG1fZnVsbFNjcmVl
bkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKG1fZnVsbFNjcmVlbkVsZW1lbnQucmVsZWFz
ZSgpKTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKICAgICBzY2hlZHVsZUZvcmNlZFN0
eWxlUmVjYWxjKCk7CiAgICAgCiAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lci5zdGFy
dE9uZVNob3QoMCk7CkBAIC01MjAyLDI3ICs1MzkyLDI3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEZ1
bGxTY3JlZW5SZW5kZXJlckJhY2tncm91bmRDb2xvcihDb2xvciBiYWNrZ3JvdW5kQ29sb3IpCiB2
b2lkIERvY3VtZW50OjpmdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lckZpcmVkKFRpbWVyPERvY3Vt
ZW50PiopCiB7CiAgICAgd2hpbGUgKCFtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVl
LmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IG1fZnVsbFNj
cmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgIGlmICghZWxl
bWVudCkKLSAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAgICAg
UmVmUHRyPE5vZGU+IG5vZGUgPSBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLnRh
a2VGaXJzdCgpOworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICBub2RlID0gZG9jdW1l
bnRFbGVtZW50KCk7CiAKICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgd2FzIHJlbW92ZWQgZnJv
bSBvdXIgdHJlZSwgYWxzbyBtZXNzYWdlIHRoZSBkb2N1bWVudEVsZW1lbnQuCi0gICAgICAgIGlm
ICghY29udGFpbnMoZWxlbWVudC5nZXQoKSkpCisgICAgICAgIGlmICghY29udGFpbnMobm9kZS5n
ZXQoKSkpCiAgICAgICAgICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmFw
cGVuZChkb2N1bWVudEVsZW1lbnQoKSk7CiAgICAgICAgIAotICAgICAgICBlbGVtZW50LT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIHRydWUs
IGZhbHNlKSk7CiAgICAgfQogCiAgICAgd2hpbGUgKCFtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFy
Z2V0UXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0g
bV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7Cisg
ICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1
ZXVlLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICBub2RlID0g
ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIAotICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCB3
YXMgcmVtb3ZlZCBmcm9tIG91ciB0cmVlLCBhbHNvIG1lc3NhZ2UgdGhlIGRvY3VtZW50RWxlbWVu
dC4KLSAgICAgICAgaWYgKCFjb250YWlucyhlbGVtZW50LmdldCgpKSkKKyAgICAgICAgLy8gSWYg
dGhlIG5vZGUgd2FzIHJlbW92ZWQgZnJvbSBvdXIgdHJlZSwgYWxzbyBtZXNzYWdlIHRoZSBkb2N1
bWVudEVsZW1lbnQuCisgICAgICAgIGlmICghY29udGFpbnMobm9kZS5nZXQoKSkpCiAgICAgICAg
ICAgICBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKGRvY3VtZW50RWxl
bWVudCgpKTsKICAgICAgICAgCi0gICAgICAgIGVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmVycm9yRXZlbnQsIHRydWUsIGZh
bHNlKSk7CisgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkud2Via2l0ZnVsbHNjcmVlbmVycm9yRXZlbnQsIHRydWUsIGZhbHNlKSk7CiAgICAgfQog
fQogCkBAIC01MjYzLDYgKzU0NTMsMzQgQEAgdm9pZCBEb2N1bWVudDo6c2V0QW5pbWF0aW5nRnVs
bFNjcmVlbihib29sIGZsYWcpCiAgICAgICAgIHNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGMoKTsK
ICAgICB9CiB9CisKK3ZvaWQgRG9jdW1lbnQ6OmNsZWFyRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygp
Cit7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmNsZWFyKCk7Cit9CisKK3ZvaWQgRG9j
dW1lbnQ6OnBvcEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKQoreworICAgIGlmIChtX2Z1bGxTY3Jl
ZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50U3RhY2sucmVtb3ZlRmlyc3QoKTsKK30KKwordm9pZCBEb2N1bWVudDo6cHVz
aEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50U3RhY2sucHJlcGVuZChlbGVtZW50KTsKK30KKwordm9pZCBEb2N1bWVudDo6
dGFza0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCgpCit7CisgICAgTm9kZSogdGFyZ2V0ID0gd2Via2l0
RnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgdGFyZ2V0ID0g
bV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgdGFy
Z2V0ID0gdGhpczsKKyAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmFwcGVu
ZCh0YXJnZXQpOworfQogI2VuZGlmCiAKIHZvaWQgRG9jdW1lbnQ6OmRlY3JlbWVudExvYWRFdmVu
dERlbGF5Q291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxZTMwNWQ0NjBiYWQ2NWViOTdj
YzBiMDIxNGI5YmYyYjc4ODNkNjIxLi5jMWY3MGM2ZGI3MjlmYzIyZGVlY2YyY2Q5NWQ0NWU2NzFk
MTNkZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTA3OCw2ICsxMDc4LDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUZ1bGxTY3JlZW5FbGVtZW50T2ZTdWJ0cmVlKE5vZGUqLCBib29s
IGFtb25nQ2hpbGRyZW5Pbmx5ID0gZmFsc2UpOwogICAgIGJvb2wgaXNBbmltYXRpbmdGdWxsU2Ny
ZWVuKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wpOworCisg
ICAgLy8gVzNDIEFQSQorICAgIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdDsK
KyAgICBFbGVtZW50KiB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuICFt
X2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpID8gbV9mdWxsU2NyZWVuRWxlbWVudFN0
YWNrLmZpcnN0KCkuZ2V0KCkgOiAwOyB9CisgICAgdm9pZCB3ZWJraXRFeGl0RnVsbHNjcmVlbigp
OwogI2VuZGlmCiAKICAgICAvLyBVc2VkIHRvIGFsbG93IGVsZW1lbnQgdGhhdCBsb2FkcyBkYXRh
IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBhIEZyYW1lTG9hZGVyIHRvIGRlbGF5IHRoZSAnbG9hZCcg
ZXZlbnQuCkBAIC0xMTg4LDYgKzExOTMsMTMgQEAgcHJpdmF0ZToKIAogICAgIEhUTUxDb2xsZWN0
aW9uKiBjYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKIAorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICB2b2lkIGNsZWFyRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpOworICAg
IHZvaWQgcG9wRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpOworICAgIHZvaWQgcHVzaEZ1bGxzY3Jl
ZW5FbGVtZW50U3RhY2soRWxlbWVudCopOworICAgIHZvaWQgdGFza0Z1bGxzY3JlZW5DaGFuZ2VF
dmVudCgpOworI2VuZGlmCisKICAgICBpbnQgbV9ndWFyZFJlZkNvdW50OwogCiAgICAgT3duUHRy
PENTU1N0eWxlU2VsZWN0b3I+IG1fc3R5bGVTZWxlY3RvcjsKQEAgLTE0MjAsMTAgKzE0MzIsMTEg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2FyZUtl
eXNFbmFibGVkSW5GdWxsU2NyZWVuOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1bGxTY3JlZW5F
bGVtZW50OworICAgIERlcXVlPFJlZlB0cjxFbGVtZW50PiA+IG1fZnVsbFNjcmVlbkVsZW1lbnRT
dGFjazsKICAgICBSZW5kZXJGdWxsU2NyZWVuKiBtX2Z1bGxTY3JlZW5SZW5kZXJlcjsKICAgICBU
aW1lcjxEb2N1bWVudD4gbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lcjsKLSAgICBEZXF1ZTxS
ZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlOwotICAg
IERlcXVlPFJlZlB0cjxFbGVtZW50PiA+IG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1
ZTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdl
dFF1ZXVlOworICAgIERlcXVlPFJlZlB0cjxOb2RlPiA+IG1fZnVsbFNjcmVlbkVycm9yRXZlbnRU
YXJnZXRRdWV1ZTsKICAgICBib29sIG1faXNBbmltYXRpbmdGdWxsU2NyZWVuOwogICAgIExheW91
dFJlY3QgbV9zYXZlZFBsYWNlaG9sZGVyRnJhbWVSZWN0OwogICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApp
bmRleCBiM2UwYWEzYTBiYTI5Mjg4ODQ0MmZlNTUwYzRkZDE1MzlkZDdkMjZlLi40ZTRiN2UzYmZl
MWIxZmM5Y2RiMzI0ZmU5ZDhiNDcxNWIxZGViYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwK
QEAgLTI0MSwxMCArMjQxLDE2IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVO
QUJMRV9GVUxMU0NSRUVOX0FQSQorICAgICAgICAvLyBNb3ppbGxhIHZlcnNpb24KICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIGJvb2xlYW4gd2Via2l0SXNG
dWxsU2NyZWVuOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGlt
ZV0gYm9vbGVhbiB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWQ7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBFbGVtZW50IHdlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudDsKICAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZV0gdm9p
ZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisKKyAgICAgICAgLy8gVzNDIHZlcnNpb24KKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIGJvb2xlYW4gd2Vi
a2l0RnVsbHNjcmVlbkVuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFi
bGVkQXRSdW50aW1lXSBFbGVtZW50IHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50OworICAgICAgICBb
VjhFbmFibGVkQXRSdW50aW1lXSB2b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CiAjZW5kaWYK
IAogICAgICAgICBXZWJLaXROYW1lZEZsb3cgd2Via2l0R2V0Rmxvd0J5TmFtZShpbiBET01TdHJp
bmcgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzkyNTc0OWI4ZjNmMWFjYTNmMDU1
YTNiMTNkMWQxNDVjMjQ2NGNlMy4uYTYwNDUzZGRhYTE2MDVlODVlNTc4YzMxNTE2N2Y5YmRiOTcw
ZTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTg1OCw5ICsxODU4LDE0IEBAIGJvb2wg
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYgY2hpbGRDb250ZXh0CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCit2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKK3sKKyAgICBkb2N1
bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgQUxMT1dfS0VZQk9BUkRf
SU5QVVQsIERvY3VtZW50OjpFbmZvcmNlSUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1aXJlbWVudCk7
Cit9CisKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4odW5zaWduZWQgc2hv
cnQgZmxhZ3MpCiB7Ci0gICAgZG9jdW1lbnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KHRoaXMsIGZsYWdzLCBEb2N1bWVudDo6RW5mb3JjZUlGcmFtZUFsbG93RnVsU2NyZWVuUmVxdWly
ZW1lbnQpOworICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCh0aGlz
LCAoZmxhZ3MgfCBMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUKSwgRG9jdW1lbnQ6OkVuZm9yY2VJRnJh
bWVBbGxvd0Z1bFNjcmVlblJlcXVpcmVtZW50KTsKIH0KIAogYm9vbCBFbGVtZW50Ojpjb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDhjODI1MDcz
ZjQwOGRhZWMxZTM1OTk4NDU2MmFiNDUwNWIxMTllYTcuLmU3YTNmMWIwOWRlYWI1NmEyMmRkMjRl
MmVlZDQxNzhmNGM1YTdiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzc2LDEzICszNzYsMTcg
QEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBlbnVtIHsK
LSAgICAgICAgQUxMT1dfS0VZQk9BUkRfSU5QVVQgPSAxCisgICAgICAgIEFMTE9XX0tFWUJPQVJE
X0lOUFVUID0gMSA8PCAwLAorICAgICAgICBMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUID0gMSA8PCAx
LAogICAgIH07CiAgICAgCiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbih1bnNpZ25l
ZCBzaG9ydCBmbGFncyk7CiAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9u
QW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoYm9vbCk7CisKKyAgICAvLyBXM0MgQVBJ
CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCmluZGV4IDg3MjViY2JjMTljYmMyYjgxYTdiYmU2MWQ4MDg5ZWY5ODU5OTY4MDYuLjk1NWJk
NDcwYWE2ODY3MzU3MTViZjQ2MDRiOGRiNTZjMGJhNDA3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwKQEAgLTEyOSw4ICsxMjksMTIgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAKICNpZiBkZWZp
bmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCisgICAg
ICAgIC8vIE1vemlsbGEgdmVyc2lvbgogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBBTExP
V19LRVlCT0FSRF9JTlBVVCA9IDE7CiAgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIHZvaWQg
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0g
dW5zaWduZWQgc2hvcnQgZmxhZ3MpOworCisgICAgICAgIC8vIFczQyB2ZXJzaW9uCisgICAgICAg
IFtWOEVuYWJsZWRBdFJ1bnRpbWVdIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNl
bmRpZgogCiAgICAgICAgIC8vIENTUyBSZWdpb25zIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCmluZGV4IDljZmU4YjM0ODhhNzVkNTY4ZGE4OTA3NDM3MWIzYjk0MTA0YmIwYTYu
LjM4ODhiNGU1ZWE1MDk2ZGQ4MzVlZDMxMDA5NGFiODk0YTg2NjBlYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTYyODYsMTQgKzYyODYsOSBAQCBib29sIExheWVyRmx1
c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQog
LSAoQk9PTClfc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudDooY29uc3QgV2ViQ29yZTo6RWxl
bWVudCopZWxlbWVudCB3aXRoS2V5Ym9hcmQ6KEJPT0wpd2l0aEtleWJvYXJkCiB7Ci0gICAgaWYg
KHdpdGhLZXlib2FyZCkKLSAgICAgICAgcmV0dXJuIE5POwotCiAgICAgaWYgKCFbW1dlYlByZWZl
cmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIGZ1bGxTY3JlZW5FbmFibGVkXSkKICAgICAgICAg
cmV0dXJuIE5POwogCi0gICAgLy8gRklYTUU6IElmIHRoZSBlbGVtZW50IGlzIGluIGFuIElGcmFt
ZSwgd2Ugc2hvdWxkIGVuc3VyZSBpdCBoYXMgCi0gICAgLy8gYW4gQWxsb3dzRnVsbFNjcmVlbj1Z
RVMgYXR0cmlidXRlIGJlZm9yZSBhbGxvd2luZyBmdWxsc2NyZWVuIGFjY2Vzcy4KICAgICByZXR1
cm4gWUVTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMTdjMDcwYjZkZGIwOTMzNGFjZjZkNTRlZTJj
YTRjYWQwNTZlYTA0MC4uMjFmZTljZGFlNGZkMjNkMDRhZTBjMTgwNjkxMGU3OGY1NjY4ODFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmNwcApAQCAtOTEsMTAgKzkxLDcgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5OjpzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgYW5pbWF0aW5nKQogCiB2b2lkIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXli
b2FyZCwgYm9vbCYgc3VwcG9ydHMpCiB7Ci0gICAgaWYgKHdpdGhLZXlib2FyZCkKLSAgICAgICAg
c3VwcG9ydHMgPSBmYWxzZTsKLSAgICBlbHNlCi0gICAgICAgIHN1cHBvcnRzID0gdHJ1ZTsKKyAg
ICBzdXBwb3J0cyA9IHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlci5jcHAKaW5kZXggMjkzYWU1ZmJjZTE2NTAxNzcwYjQ4NTViNjlhYjM5OTJhM2U1
NTY3Yy4uMGVhODA0M2EzMGQyMjBiNWVlMGI1NTI2ZGFlYTY3MGEwZmM2ODA2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVs
bFNjcmVlbk1hbmFnZXIuY3BwCkBAIC05OSw4ICs5OSw2IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXI6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVu
dCkKIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotICAg
IEFTU0VSVChtX2VsZW1lbnQgPT0gZWxlbWVudCk7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRs
ZUZ1bGxTY3JlZW5DbGllbnQoKS5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9wYWdlLmdldCgp
LCBlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJlOGJkMzU3NGJkNjEwZGJmMTExNDQ4NDM2OTdlY2U0
YWM3ZDBiM2QuLjVkOGFkNTNjMWRmMTRiYmY2NmQ4NzczM2Y2OWRkZDFiNzVjZDNiYWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IFczQyBGdWxsIFNjcmVlbiBBUEkgcHJvcG9zYWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjYwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2suaHRtbDogQWRkZWQuCisgICAg
ICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sOgor
ICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZW1vdmVkLmh0bWw6Cisg
ICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanM6CisK
IDIwMTItMDMtMDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE5V
TEwgcmVuZGVyZXIgcG9zc2libGUgaW4gV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0Q2Fu
UmVjZWl2ZURyb3BwZWRGaWxlcygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YTA2Y2UxM2IyZGRlYmU5OWRjM2MzMGYyZTllNDE2Y2ZmYjJhNjZkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0IGZvciBXM0MgRnVsbHNjcmVlbiBlbGVt
ZW50IHN0YWNrLgorCitUbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1bGwgc2NyZWVu
IiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4KKworR28g
ZnVsbCBzY3JlZW4gKG9uZSkKK0dvIGZ1bGwgc2NyZWVuICh0d28pCitFeGl0IGZ1bGwgc2NyZWVu
ICh0d28pCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50
LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkID09ICdvbmUnKSBPSworRVZFTlQod2Via2l0ZnVs
bHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVu
dC5pZCA9PSAndHdvJykgT0sKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RF
RCAoZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQuaWQgPT0gJ29uZScpIE9LCitFTkQg
T0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LWVsZW1lbnQtc3RhY2suaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
ZWxlbWVudC1zdGFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NzcwZWYwZDRlNjIxZTNmNzU2ODNiM2Ez
NTY2MGU3YmJlNDhjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2suaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIG9uZTsKKyAgICB2YXIgdHdv
OworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgb25lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ29uZScpOworICAgICAgICB0d28gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndHdvJyk7CisKKyAgICAgICAgdmFyIGNhbGxiYWNrOworICAgICAgICB2YXIgZnVsbHNjcmVl
bkNoYW5nZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGV2ZW50KQorICAgICAgICB9OworICAgICAgICB3YWl0
Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNo
YW5nZWQpOworCisgICAgICAgIHZhciBvbmVFbnRlcmVkRnVsbHNjcmVlbiA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxl
bWVudC5pZCIsICJvbmUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gdHdvRW50ZXJlZEZ1bGxz
Y3JlZW47CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCkgeyB0d28ud2Via2l0UmVxdWVz
dEZ1bGxzY3JlZW4oKTsgfSk7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIHR3b0VudGVyZWRG
dWxsc2NyZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3Vt
ZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkIiwgInR3byIpOworICAgICAgICAgICAgY2Fs
bGJhY2sgPSB0d29FeGl0ZWRGdWxsc2NyZWVuOworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRFeGl0RnVs
bHNjcmVlbigpOworICAgICAgICB9OworCisgICAgICAgIHZhciB0d29FeGl0ZWRGdWxsc2NyZWVu
ID0gZnVuY3Rpb24oKSB7IAorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudC5pZCIsICJvbmUiKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsK
KyAgICAgICAgfTsKKworICAgICAgICBjYWxsYmFjayA9IG9uZUVudGVyZWRGdWxsc2NyZWVuOwor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgcnVu
V2l0aEtleURvd24oZnVuY3Rpb24oKSB7IG9uZS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOyB9
KTsKKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CisgICAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2R2Y3MudzMub3JnL2hnL2Z1bGxz
Y3JlZW4vcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwjZnVsbHNjcmVlbi1lbGVtZW50LXN0YWNr
Ij5XM0MgRnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrPC9hPi48L3A+CisgICAgPHA+VG8gdGVzdCBt
YW51YWxseSwgY2xpY2sgdGhlICJHbyBmdWxsIHNjcmVlbiIgYnV0dG9uIC0gdGhlIHBhZ2Ugc2hv
dWxkIGVudGVyIGZ1bGwgc2NyZWVuIG1vZGUuPC9wPgorICAgIDxkaXY+CisgICAgICAgIDxidXR0
b24gb25jbGljaz0ib25lLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkiPkdvIGZ1bGwgc2NyZWVu
IChvbmUpPC9idXR0b24+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD1vbmU+CisgICAgICAgIDxi
dXR0b24gb25jbGljaz0idHdvLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkiPkdvIGZ1bGwgc2Ny
ZWVuICh0d28pPC9idXR0b24+CisgICAgICAgIDxkaXYgaWQ9dHdvPgorICAgICAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpIj5FeGl0IGZ1bGwg
c2NyZWVuICh0d28pPC9idXR0b24+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAx
MmMwZDJkNDE1NmI5NWZiNjVlOWVjYzc5MzE2MTE2NGFjNThiZGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVuYWJsZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0aGUgZnVsbHNjcmVlbkVuYWJsZWQgcHJvcGVy
dHkgbGFpZCBvdXQgaW4gc2VjdGlvbiA0IG9mIHRoZSBXM0MgRnVsbCBTY3JlZW4gQVBJCitFWFBF
Q1RFRCAoaWZyYW1lLmNvbnRlbnREb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCA9PSAn
dHJ1ZScpIE9LCitFWFBFQ1RFRCAoaWZyYW1lMi5jb250ZW50RG9jdW1lbnQud2Via2l0RnVsbHNj
cmVlbkVuYWJsZWQgPT0gJ2ZhbHNlJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQxMGJl
NTI1NTFmNGY4ZWZhNmI5MjQ4OTE0ZjE2ODRkNjRjOTkyYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEs
MTIgQEAKKzxib2R5PgorPGRpdj5UaGlzIHRlc3RzIHRoZSA8Y29kZT5mdWxsc2NyZWVuRW5hYmxl
ZDwvY29kZT4gcHJvcGVydHkgbGFpZCBvdXQgaW4gc2VjdGlvbiA0IG9mIHRoZSBXM0MgCis8YSBo
cmVmPSJodHRwOi8vZHZjcy53My5vcmcvaGcvZnVsbHNjcmVlbi9yYXctZmlsZS90aXAvT3ZlcnZp
ZXcuaHRtbCI+RnVsbCBTY3JlZW4gQVBJPC9hPjwvZGl2PgorPHNjcmlwdCBzcmM9ImZ1bGwtc2Ny
ZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICB2YXIgaWZyYW1lID0gZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lm
cmFtZScpKTsKKyAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCd3ZWJraXRhbGxvd2Z1bGxzY3JlZW4n
LCAndHJ1ZScpOworICAgIHZhciBpZnJhbWUyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpKTsKKyAgICB0ZXN0RXhw
ZWN0ZWQoJ2lmcmFtZS5jb250ZW50RG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQnLCB0
cnVlKTsKKyAgICB0ZXN0RXhwZWN0ZWQoJ2lmcmFtZTIuY29udGVudERvY3VtZW50LndlYmtpdEZ1
bGxzY3JlZW5FbmFibGVkJywgZmFsc2UpOworICAgIGVuZFRlc3QoKTsKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVq
ZWN0ZWQuaHRtbAppbmRleCA3Nzk4MzJhN2YyMzhiZjNlNmM0MWQyNzAwN2JlNDIzY2VjOTZkYzE0
Li4wZTc4MTliOWFkNTJmODY0Zjg4ZDMyOWUxMmJkN2Q2NmFkOTQxOTM0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQu
aHRtbApAQCAtOSw3ICs5LDEwIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgd2FpdEZvckV2ZW50
KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICBsb2dSZXN1bHQoIkVudGVyZWQgZnVsbCBzY3JlZW4uIiwgZmFsc2UpOyAKKyAgICAgICAg
ICAgZW5kVGVzdCgpOwogICAgICAgICB9KTsKKyAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0Vu
YWJsZWQodHJ1ZSk7CiAgICAgICAgIHdhaXRGb3JFdmVudEFuZEVuZChkb2N1bWVudCwgJ3dlYmtp
dGZ1bGxzY3JlZW5lcnJvcicpOwogICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQud2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVtb3ZlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlbW92ZWQuaHRtbAppbmRleCA5MjY0MjE5
YzI0NmI2ZmE4YmZmM2FjYTAwNmI2NTc3OWEyNjVjZThiLi4yMzMwZmZiZTkxNDcxY2FmOWZjZGU2
YjIyOGYzMjk4N2QzYzlkZjQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXJlcXVlc3QtcmVtb3ZlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZW1vdmVkLmh0bWwKQEAgLTEyLDYgKzEyLDkgQEAgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKICAgICAgICAgY29uc29sZVdyaXRlKCJTVUNDRUVEIC0gZGlkIG5v
dCBlbnRlciBmdWxsIHNjcmVlbiEiKTsKICAgICB9KTsKIAorICAgIGlmIChsYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0Vu
YWJsZWQodHJ1ZSk7CisKICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CiAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRpdik7CiAgICAg
Y29uc29sZVdyaXRlKCJBZGRlZCBjaGlsZCBlbGVtZW50LiIpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODQwMzBkZWZjOGEwNTUzODZkNGI2NGZhMmU5Mjk0ZmViMGE3NzdmNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVz
dHJpY3Rpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoZSBy
ZXN0cmljdGlvbnMgdG8gZW50ZXJpbmcgZnVsbCBzY3JlZW4gbW9kZSBsYWlkIG91dCBpbiBzZWN0
aW9uIDQuMSBvZiB0aGUgVzNDIEZ1bGwgU2NyZWVuIEFQSQorIlRoZSBjb250ZXh0IG9iamVjdCBp
cyBub3QgaW4gYSBkb2N1bWVudC4iCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCisiVGhl
IGNvbnRleHQgb2JqZWN0J3Mgbm9kZSBkb2N1bWVudCwgb3IgYW4gYW5jZXN0b3IgYnJvd3Npbmcg
Y29udGV4dCdzIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIGZ1bGxzY3JlZW4gZW5hYmxlZCBm
bGFnIHNldC4iCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCisiVGhlIGNvbnRleHQgb2Jq
ZWN0J3Mgbm9kZSBkb2N1bWVudCBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sgaXMgbm90IGVtcHR5
IGFuZCBpdHMgdG9wIGVsZW1lbnQgaXMgbm90IGFuIGFuY2VzdG9yIG9mIHRoZSBjb250ZXh0IG9i
amVjdC4iCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVZFTlQod2Via2l0ZnVsbHNj
cmVlbmVycm9yKQorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKKyJBIGRlc2NlbmRhbnQg
YnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50IGhhcyBhIG5vbi1lbXB0eSBmdWxsc2NyZWVuIGVs
ZW1lbnQgc3RhY2suIgorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VWRU5UKHdlYmtp
dGZ1bGxzY3JlZW5lcnJvcikKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCisiVGhpcyBh
bGdvcml0aG0gaXMgbm90IGFsbG93ZWQgdG8gc2hvdyBhIHBvcC11cC4iCitFVkVOVCh3ZWJraXRm
dWxsc2NyZWVuZXJyb3IpCitFTkQgT0YgVEVTVAorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMuaHRtbCBiL0xheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZi
ZTA5YTViYzkwMDdkNDU0Y2Y4MGJjZWIzZThlMjliMDRiMjQ2ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0bWwKQEAg
LTAsMCArMSw3NCBAQAorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxkaXY+VGhpcyB0ZXN0
cyB0aGUgcmVzdHJpY3Rpb25zIHRvIGVudGVyaW5nIGZ1bGwgc2NyZWVuIG1vZGUgbGFpZCBvdXQg
aW4gc2VjdGlvbiA0LjEgb2YgdGhlIFczQyAKKzxhIGhyZWY9Imh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy9mdWxsc2NyZWVuL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sIj5GdWxsIFNjcmVlbiBBUEk8
L2E+PC9kaXY+Cis8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMg
bm90IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUud2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGxvZ1Jlc3VsdChm
YWxzZSwgIkVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVuZGVm
aW5lZCIpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGNh
bGxiYWNrOworCisgICAgICAgIHZhciBydW5UZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayA9IGVycm9yUmVzdWx0MTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnIlRo
ZSBjb250ZXh0IG9iamVjdCBpcyBub3QgaW4gYSBkb2N1bWVudC4iJyk7CisgICAgICAgICAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBydW5X
aXRoS2V5RG93bihmdW5jdGlvbigpe2Rpdi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7Cisg
ICAgICAgIH07CisKKyAgICAgICAgdmFyIGVycm9yUmVzdWx0MSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgY2FsbGJhY2sgPSBlcnJvclJlc3VsdDI7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoJyJUaGUgY29udGV4dCBvYmplY3RcJ3Mgbm9kZSBkb2N1bWVudCwgb3IgYW4gYW5jZXN0b3Ig
YnJvd3NpbmcgY29udGV4dFwncyBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBmdWxsc2NyZWVu
IGVuYWJsZWQgZmxhZyBzZXQuIicpCisgICAgICAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpKTsKKyAgICAgICAgICAgIHZhciBkaXYgPSBpZnJhbWUuY29udGVudERvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5hcHBlbmRDaGlsZChpZnJhbWUuY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpKTsKKworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShpZnJhbWUuY29udGVu
dERvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJywgZnVuY3Rpb24oKSB7IGNhbGxiYWNr
KCk7IH0pOworICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0
UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAgICB9OworCisgICAgICAgIHZhciBlcnJvclJl
c3VsdDIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gZXJyb3JSZXN1bHQz
OworICAgICAgICAgICAgY29uc29sZVdyaXRlKCciVGhlIGNvbnRleHQgb2JqZWN0XCdzIG5vZGUg
ZG9jdW1lbnQgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQgaXRzIHRv
cCBlbGVtZW50IGlzIG5vdCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4dCBvYmplY3QuIicpOwor
ICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgICAgICB2YXIgZGl2MiA9
IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKSk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGRvY3VtZW50LCAnd2Vi
a2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJ1bldp
dGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2Mi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2
LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIg
ZXJyb3JSZXN1bHQzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNl
KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bmN0aW9uKCl7CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2sgPSBlcnJvclJlc3VsdDQ7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCciQSBkZXNjZW5kYW50IGJyb3dzaW5nIGNvbnRleHRcJ3MgZG9jdW1lbnQgaGFzIGEg
bm9uLWVtcHR5IGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4iJyk7CisgICAgICAgICAgICAgICAg
dmFyIGlmcmFtZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKSk7CisgICAgICAgICAgICAgICAgaWZyYW1lLnNldEF0
dHJpYnV0ZSgnd2Via2l0YWxsb3dmdWxsc2NyZWVuJywgJ3RydWUnKTsKKyAgICAgICAgICAgICAg
ICB2YXIgZGl2ID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoaWZyYW1lLmNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAg
ICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5j
aGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGRpdjIgPSBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2JykpOworICAgICAgICAgICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpe2Rp
djIud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2LndlYmtpdFJlcXVlc3RG
dWxsc2NyZWVuKCl9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQud2Vi
a2l0RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZXJyb3JSZXN1
bHQ0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGRvY3VtZW50
LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bmN0aW9uKCl7ICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgY2FsbGJhY2sgPSBlcnJvclJlc3VsdDU7CisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCciVGhpcyBhbGdvcml0aG0gaXMgbm90IGFsbG93ZWQgdG8gc2hvdyBhIHBvcC11
cC4iJyk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgICAg
ICAgICAgZGl2LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7ICAgICAgICAgICAgICAg
IAorICAgICAgICB9OworCisgICAgICAgIHZhciBlcnJvclJlc3VsdDUgPSBmdW5jdGlvbigpIHsg
ZW5kVGVzdCgpOyB9CisKKyAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7
CisKKyAgICAgICAgd2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9y
JywgZnVuY3Rpb24oKSB7IGNhbGxiYWNrKCk7IH0pOworICAgIH0KKzwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCmluZGV4IDVlNWJiMWFmN2E3ODJh
Y2ZlYzkyNWM2ZDI4YjdlZjhhMjIyNDM3NDkuLjgwMWI1YmE5ZTNhNjEyYmFmMzY3M2M2ZGE1NzE4
YzM1ODViYTNmOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3Qu
anMKQEAgLTk4LDEwICs5OCwxOCBAQCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRFbmQoZWxlbWVu
dCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQogICAgIHdhaXRGb3JFdmVudChlbGVtZW50LCBldmVu
dE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCiB9CiAKLWZ1bmN0aW9uIHdhaXRGb3JFdmVudChlbGVt
ZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQorZnVuY3Rpb24gd2FpdEZvckV2ZW50T25jZShl
bGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQoreworICAgIHdhaXRGb3JFdmVudChlbGVt
ZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0LCB0cnVlKQorfQorCitmdW5jdGlvbiB3YWl0Rm9y
RXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jLCBlbmRpdCwgb25jZSkKIHsKICAgICBmdW5j
dGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKICAgICB7CisgICAgICAgIGlmIChvbmNlKQorICAg
ICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2Fs
bGJhY2spOworCiAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIp
Iik7CiAKICAgICAgICAgaWYgKGZ1bmMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131042</attachid>
            <date>2012-03-09 08:43:19 -0800</date>
            <delta_ts>2012-03-09 16:08:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80660-20120309084318.patch</filename>
            <type>text/plain</type>
            <size>41516</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU4Mjk5NDhhZGI2YjA4
YzE1Yzk3ZTNlZmM3ZTIzMGVkNDhmNzk4Ni4uZmY3ODAxYzM0ODliYzM0ZjIzZjFmZTY2NDQxNTNl
ZGIwNGQzYjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTAzLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwg
U2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0czogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0
bWwKKyAgICAgICAgICAgICAgIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCisg
ICAgICAgICAgICAgICBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlbW92ZWRMYXN0UmVmKTogQ2xlYXIgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVlbik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VE
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsZWFyRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cG9wRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHVzaEZ1bGxz
Y3JlZW5FbGVtZW50U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRhc2tGdWxs
c2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKworICAgICAgICBBZGQgbmV3IFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMgZnVuY3Rpb25zIGZvciB0aGUgYWRkZWQgRG9jdW1lbnQgYW5k
IEVsZW1lbnQgZnVuY3Rpb25zLgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoUnVudGltZUVuYWJsZWRGZWF0dXJlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRW5h
YmxlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVl
bkVuYWJsZWQpOgorCisKIDIwMTItMDMtMDggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVc2UgYW4gZXhwbGljaXQgYXR0cmlidXRlIHRvIHNpZ25hbCB0
aGF0IGEgY29udGV4dCBwcmVmZXJzIHRvIHVzZSBhIGRpc2NyZXRlIEdQVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDQ4ZjY0YmI0OWVkODA4ZDM5MDllZThmMDE5NjY5YmYzZGU2ZDIwMGIuLjYxYmUwZDRi
MzM0MGUzNThhNDU1N2FjNTUyY2JmNzU1ZTkwMDgyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNyBAQAogMjAxMi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAorICAgICAgICBTdXBwb3J0IFczQyBGdWxsIFNjcmVlbiBBUEkgcHJvcG9zYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgZnVsbCBzY3JlZW4g
ZWxlbWVudHMgdG8gYWNjZXNzIHRoZSBrZXlib2FyZC4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVu
dDpXZWJDb3JlOjp3aXRoS2V5Ym9hcmQ6XSk6CisKKzIwMTItMDMtMDggIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBTbm93IExlb3BhcmQgYnVp
bGQgZml4LgogCiAgICAgICAgIE9uIExlb3BhcmQgYW5kIFNub3cgTGVvcGFyZCwgcHJvdmlkZSBh
biBpbXBsZW1lbnRhdGlvbiBmb3IgLVtOU1dpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOl0uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggN2JjYWNmYTAwMzMyZDk0M2M3NGYzYTRmZDBmYzAyNmYxZWYyZTdhYS4uYWEx
NjFhYTVhMjRhNWM2ODU5YTc0YWRlOTI3OWY5NTQ0MjMyMGZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE5IEBACiAyMDEyLTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwgU2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBmdWxsIHNjcmVlbiBl
bGVtZW50cyB0byBhY2Nlc3MgdGhlIGtleWJvYXJkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorCisyMDEy
LTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2
aWV3ZWQgU25vdyBMZW9wYXJkIGJ1aWxkIGZpeC4KIAogICAgICAgICBPbiBMZW9wYXJkIGFuZCBT
bm93IExlb3BhcmQsIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZm9yIC1bTlNXaW5kb3cgY29u
dmVydFJlY3RUb1NjcmVlbjpdLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCA0NTNiMTIxNDEyYWU3YzU4
YTBmZjU1Yjg2ODQwNmQ5MmM3YTIwMzJhLi5mMDQ5OGM0YzVmMzg1ZmI4NWEyNjY1MjgwNmZiOTI3
ZjdjYjcyMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgd2Via2l0SURCVHJhbnNhY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNJ
bmRleGVkREJFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8g
TW96aWxsYSB2ZXJzaW9uCiAgICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJs
ZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQg
c2V0V2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0K
QEAgLTc4LDYgKzc5LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2Ny
ZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJ
RW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGlj
IGJvb2wgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOyB9CisKKyAgICAvLyBXM0MgdmVyc2lvbgorICAgIHN0YXRpYyBib29sIHdl
YmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVu
YWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQo
KSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Vi
a2l0RXhpdEZ1bGxzY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxl
ZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuRW5hYmxlZCgpIHsg
cmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkxZTJiZGJmODNjZDM1ZTEx
YWI0OTBmOTdmZGNkY2Y5NWM2ZmVlNjguLjA3ZWVjOWYxZGY4MTA4Yjc0NmNjYTRlMjU0MDMwMjE4
NjQ0ODM2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjA3LDYgKzYwNyw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnQg
PSAwOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgbV9mdWxsU2NyZWVuRWxl
bWVudCA9IDA7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVhcigpOwogI2Vu
ZGlmCiAKICAgICAgICAgLy8gcmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJl
Z2lzdGVyIElEcywKQEAgLTUwNTEsMzcgKzUwNTIsMjI0IEBAIGJvb2wgRG9jdW1lbnQ6OmZ1bGxT
Y3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAKIHZvaWQg
RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1
bnNpZ25lZCBzaG9ydCBmbGFncywgRnVsbFNjcmVlbkNoZWNrVHlwZSBjaGVja1R5cGUpCiB7Ci0g
ICAgZG8gewotICAgICAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKQotICAgICAgICAgICAgYnJlYWs7CisgICAgLy8gVGhlIE1vemlsbGEg
RnVsbCBTY3JlZW4gQVBJIDxodHRwczovL3dpa2kubW96aWxsYS5vcmcvR2Vja286RnVsbFNjcmVl
bkFQST4gaGFzIGRpZmZlcmVudCByZXF1aXJlbWVudHMKKyAgICAvLyBmb3IgZnVsbCBzY3JlZW4g
bW9kZSwgYW5kIGRvIG5vdCBoYXZlIHRoZSBjb25jZXB0IG9mIGEgZnVsbCBzY3JlZW4gZWxlbWVu
dCBzdGFjay4KKyAgICBib29sIGluTGVnYWN5TW96aWxsYU1vZGUgPSAoZmxhZ3MgJiBFbGVtZW50
OjpMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUKTsKIAorICAgIGRvIHsKICAgICAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOwotICAgICAgICAK
KyAKKyAgICAgICAgLy8gMS4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
dHJ1ZSwgdGVybWluYXRlIHRoZXNlIHN0ZXBzIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZQorICAg
ICAgICAvLyBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVuZXJyb3Igd2l0aCBpdHMgYnViYmxlcyBh
dHRyaWJ1dGUgc2V0IHRvIHRydWUgb24gdGhlIGNvbnRleHQgb2JqZWN0J3MgCisgICAgICAgIC8v
IG5vZGUgZG9jdW1lbnQ6CisKKyAgICAgICAgLy8gVGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBp
biBhIGRvY3VtZW50LgorICAgICAgICBpZiAoIWVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFRoZSBjb250ZXh0IG9iamVjdCdzIG5vZGUgZG9j
dW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudCBkb2VzIG5v
dCBoYXZlCisgICAgICAgIC8vIHRoZSBmdWxsc2NyZWVuIGVuYWJsZWQgZmxhZyBzZXQuCiAgICAg
ICAgIGlmIChjaGVja1R5cGUgPT0gRW5mb3JjZUlGcmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1l
bnQgJiYgIWZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KGVsZW1lbnQpKQogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKQorCisgICAgICAgIC8vIFRoZSBjb250ZXh0IG9iamVjdCdzIG5v
ZGUgZG9jdW1lbnQgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQgaXRz
IHRvcCBlbGVtZW50CisgICAgICAgIC8vIGlzIG5vdCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4
dCBvYmplY3QuIChOT1RFOiBJZ25vcmUgdGhpcyByZXF1aXJlbWVudCBpZiB0aGUgcmVxdWVzdCB3
YXMKKyAgICAgICAgLy8gbWFkZSB2aWEgdGhlIGxlZ2FjeSBNb3ppbGxhLXN0eWxlIEFQSS4pCisg
ICAgICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHkoKSAmJiAhbV9mdWxs
U2NyZWVuRWxlbWVudFN0YWNrLmZpcnN0KCktPmNvbnRhaW5zKGVsZW1lbnQpICYmICFpbkxlZ2Fj
eU1vemlsbGFNb2RlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gQSBkZXNjZW5k
YW50IGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVl
biBlbGVtZW50IHN0YWNrLgorICAgICAgICBib29sIGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNr
ID0gZmFsc2U7CisgICAgICAgIGZvciAoRnJhbWUqIGRlc2NlbmRhbnQgPSBmcmFtZSgpID8gZnJh
bWUoKS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSA6IDA7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQg
PSBkZXNjZW5kYW50LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgICAgICBpZiAo
ZGVzY2VuZGFudC0+ZG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSkgeworICAg
ICAgICAgICAgICAgIGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNrID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZGVz
Y2VuZGVudEhhc05vbkVtcHR5U3RhY2sgJiYgIWluTGVnYWN5TW96aWxsYU1vZGUpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAvLyBUaGlzIGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZCB0
byBzaG93IGEgcG9wLXVwLgorICAgICAgICBpZiAoIWRvbVdpbmRvdygpLT5hbGxvd1BvcFVwKCkp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBUaGVyZSBpcyBhIHByZXZpb3VzbHkt
ZXN0YWJsaXNoZWQgdXNlciBwcmVmZXJlbmNlLCBzZWN1cml0eSByaXNrLCBvciBwbGF0Zm9ybSBs
aW1pdGF0aW9uLgorICAgICAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5m
dWxsU2NyZWVuRW5hYmxlZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAg
ICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JF
bGVtZW50KGVsZW1lbnQsIGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpKQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgICAgIC8vIE5vdGU6IHRoZSBNb3pp
bGxhIEZ1bGwgU2NyZWVuIEFQSSBkb2VzIG5vdCBoYXZlIHRoZSBjb25jZXB0IG9mIGEgZnVsbCBz
Y3JlZW4gZWxlbWVudCBzdGFjaworICAgICAgICAvLyBzbyBjbGVhciB0aGUgc3RhY2sgYmVmb3Jl
IHB1c2hpbmcgdGhlIG5ldyBlbGVtZW50OgorICAgICAgICBpZiAoaW5MZWdhY3lNb3ppbGxhTW9k
ZSkgeworICAgICAgICAgICAgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVhcigpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Mi4gTGV0IGRvYyBiZSBlbGVtZW50J3Mgbm9kZSBkb2N1bWVudC4gKGkuZS4gInRoaXMiKQorICAg
ICAgICBEb2N1bWVudCogZG9jID0gdGhpczsKKworICAgICAgICAvLyAzLiBMZXQgZG9jcyBiZSBh
bGwgZG9jJ3MgYW5jZXN0b3IgYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50cyAoaWYgYW55KSBh
bmQgZG9jLgorICAgICAgICBEZXF1ZTxEb2N1bWVudCo+IGRvY3M7CisKKyAgICAgICAgZG8gewor
ICAgICAgICAgICAgZG9jcy5wcmVwZW5kKGRvYyk7CisgICAgICAgICAgICBkb2MgPSBkb2MtPm93
bmVyRWxlbWVudCgpID8gZG9jLT5vd25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IDA7CisgICAg
ICAgIH0gd2hpbGUgKGRvYyk7CisKKyAgICAgICAgLy8gNC4gRm9yIGVhY2ggZG9jdW1lbnQgaW4g
ZG9jcywgcnVuIHRoZXNlIHN1YnN0ZXBzOgorICAgICAgICBEZXF1ZTxEb2N1bWVudCo+OjppdGVy
YXRvciBjdXJyZW50ID0gZG9jcy5iZWdpbigpLCBmb2xsb3dpbmcgPSBkb2NzLmJlZ2luKCk7CisK
KyAgICAgICAgZG8geworICAgICAgICAgICAgKytmb2xsb3dpbmc7CisKKyAgICAgICAgICAgIC8v
IDEuIExldCBmb2xsb3dpbmcgZG9jdW1lbnQgYmUgdGhlIGRvY3VtZW50IGFmdGVyIGRvY3VtZW50
IGluIGRvY3MsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8KKyAgICAgICAgICAgIC8vIHN1Y2ggZG9j
dW1lbnQuCisgICAgICAgICAgICBEb2N1bWVudCogY3VycmVudERvYyA9ICpjdXJyZW50OworICAg
ICAgICAgICAgRG9jdW1lbnQqIGZvbGxvd2luZ0RvYyA9IGZvbGxvd2luZyAhPSBkb2NzLmVuZCgp
ID8gKmZvbGxvd2luZyA6IDA7CisKKyAgICAgICAgICAgIC8vIDIuIElmIGZvbGxvd2luZyBkb2N1
bWVudCBpcyBudWxsLCBwdXNoIGNvbnRleHQgb2JqZWN0IG9uIGRvY3VtZW50J3MgZnVsbHNjcmVl
biBlbGVtZW50CisgICAgICAgICAgICAvLyBzdGFjaywgYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJl
IGFuIGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ugd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1
dGUKKyAgICAgICAgICAgIC8vIHNldCB0byB0cnVlIG9uIHRoZSBkb2N1bWVudC4KKyAgICAgICAg
ICAgIGlmICghZm9sbG93aW5nRG9jKSB7CisgICAgICAgICAgICAgICAgY3VycmVudERvYy0+cHVz
aEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soZWxlbWVudCk7CisgICAgICAgICAgICAgICAgY3VycmVu
dERvYy0+dGFza0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCgpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyAzLiBPdGhlcndpc2UsIGlmIGRv
Y3VtZW50J3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIGVpdGhlciBlbXB0eSBvciBpdHMg
dG9wIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGlzIG5vdCBmb2xsb3dpbmcgZG9jdW1lbnQncyBi
cm93c2luZyBjb250ZXh0IGNvbnRhaW5lciwKKyAgICAgICAgICAgIEVsZW1lbnQqIHRvcEVsZW1l
bnQgPSBjdXJyZW50RG9jLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpOworICAgICAgICAgICAg
aWYgKCF0b3BFbGVtZW50IHx8IHRvcEVsZW1lbnQgIT0gZm9sbG93aW5nRG9jLT5vd25lckVsZW1l
bnQoKSkgeworICAgICAgICAgICAgICAgIC8vIC4uLnB1c2ggZm9sbG93aW5nIGRvY3VtZW50J3Mg
YnJvd3NpbmcgY29udGV4dCBjb250YWluZXIgb24gZG9jdW1lbnQncyBmdWxsc2NyZWVuIGVsZW1l
bnQKKyAgICAgICAgICAgICAgICAvLyBzdGFjaywgYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJlIGFu
IGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ugd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUK
KyAgICAgICAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSBvbiBkb2N1bWVudC4KKyAgICAgICAgICAg
ICAgICBjdXJyZW50RG9jLT5wdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhmb2xsb3dpbmdEb2Mt
Pm93bmVyRWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50RG9jLT50YXNrRnVsbHNj
cmVlbkNoYW5nZUV2ZW50KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIDQuIE90aGVyd2lzZSwgZG8gbm90aGluZyBmb3IgdGhpcyBk
b2N1bWVudC4gSXQgc3RheXMgdGhlIHNhbWUuCisgICAgICAgIH0gd2hpbGUgKCsrY3VycmVudCAh
PSBkb2NzLmVuZCgpKTsKKworICAgICAgICAvLyA1LiBSZXR1cm4sIGFuZCBydW4gdGhlIHJlbWFp
bmluZyBzdGVwcyBhc3luY2hyb25vdXNseS4KKyAgICAgICAgLy8gNi4gT3B0aW9uYWxseSwgcGVy
Zm9ybSBzb21lIGFuaW1hdGlvbi4KICAgICAgICAgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVl
biA9IGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQ7CiAgICAgICAgIHBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQp
OworCisgICAgICAgIC8vIDcuIE9wdGlvbmFsbHksIGRpc3BsYXkgYSBtZXNzYWdlIGluZGljYXRp
bmcgaG93IHRoZSB1c2VyIGNhbiBleGl0IGRpc3BsYXlpbmcgdGhlIGNvbnRleHQgb2JqZWN0IGZ1
bGxzY3JlZW4uCiAgICAgICAgIHJldHVybjsKICAgICB9IHdoaWxlICgwKTsKLSAgICAKKwogICAg
IG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQoZWxlbWVudCA/IGVsZW1l
bnQgOiBkb2N1bWVudEVsZW1lbnQoKSk7CiAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1l
ci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxT
Y3JlZW4oKQogewotICAgIGlmICghcGFnZSgpIHx8ICFtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAg
IC8vIFRoZSBNb3ppbGxhICJjYW5jZWxGdWxsU2NyZWVuKCkiIEFQSSBiZWhhdmVzIGxpa2UgdGhl
IFczQyAiZnVsbHkgZXhpdCBmdWxsc2NyZWVuIiBiZWhhdmlvciwgd2hpY2gKKyAgICAvLyBpcyBk
ZWZpbmVkIGFzOiAKKyAgICAvLyAiVG8gZnVsbHkgZXhpdCBmdWxsc2NyZWVuIGFjdCBhcyBpZiB0
aGUgZXhpdEZ1bGxzY3JlZW4oKSBtZXRob2Qgd2FzIGludm9rZWQgb24gdGhlIHRvcC1sZXZlbCBi
cm93c2luZworICAgIC8vIGNvbnRleHQncyBkb2N1bWVudCBhbmQgc3Vic2VxdWVudGx5IGVtcHR5
IHRoYXQgZG9jdW1lbnQncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2suIgorICAgIGlmICghdG9w
RG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gVG8gYWNoaWV2ZSB0aGF0IGFpbSwgcmVtb3ZlIGFsbCB0aGUgZWxlbWVudHMgZnJv
bSB0aGUgdG9wIGRvY3VtZW50J3Mgc3RhY2sgZXhjZXB0IGZvciB0aGUgZmlyc3QgYmVmb3JlCisg
ICAgLy8gY2FsbGluZyB3ZWJraXRFeGl0RnVsbHNjcmVlbigpOgorICAgIERlcXVlPFJlZlB0cjxF
bGVtZW50PiA+IHJlcGxhY2VtZW50RnVsbHNjcmVlbkVsZW1lbnRTdGFjazsKKyAgICByZXBsYWNl
bWVudEZ1bGxzY3JlZW5FbGVtZW50U3RhY2sucHJlcGVuZCh0b3BEb2N1bWVudCgpLT53ZWJraXRG
dWxsc2NyZWVuRWxlbWVudCgpKTsKKyAgICB0b3BEb2N1bWVudCgpLT5tX2Z1bGxTY3JlZW5FbGVt
ZW50U3RhY2suc3dhcChyZXBsYWNlbWVudEZ1bGxzY3JlZW5FbGVtZW50U3RhY2spOworCisgICAg
dG9wRG9jdW1lbnQoKS0+d2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBEb2N1bWVu
dDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4oKQoreworICAgIC8vIFRoZSBleGl0RnVsbHNjcmVlbigp
IG1ldGhvZCBtdXN0IHJ1biB0aGVzZSBzdGVwczoKICAgICAKLSAgICBwYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQu
Z2V0KCkpOworICAgIC8vIDEuIExldCBkb2MgYmUgdGhlIGNvbnRleHQgb2JqZWN0LiAoaS5lLiAi
dGhpcyIpCisgICAgRG9jdW1lbnQqIGRvYyA9IHRoaXM7CisKKyAgICAvLyAyLiBJZiBkb2MncyBm
dWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sgaXMgZW1wdHksIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4K
KyAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIC8vIDMuIExldCBkZXNjZW5kYW50cyBiZSBhbGwgdGhlIGRvYydzIGRl
c2NlbmRhbnQgYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50cyB3aXRoIGEgbm9uLWVtcHR5IGZ1
bGxzY3JlZW4KKyAgICAvLyBlbGVtZW50IHN0YWNrIChpZiBhbnkpLCBvcmRlcmVkIHNvIHRoYXQg
dGhlIGNoaWxkIG9mIHRoZSBkb2MgaXMgbGFzdCBhbmQgdGhlIGRvY3VtZW50IGZ1cnRoZXN0Cisg
ICAgLy8gYXdheSBmcm9tIHRoZSBkb2MgaXMgZmlyc3QuCisgICAgRGVxdWU8UmVmUHRyPERvY3Vt
ZW50PiA+IGRlc2NlbmRhbnRzOworICAgIGZvciAoRnJhbWUqIGRlc2NlbmRhbnQgPSBmcmFtZSgp
ID8gZnJhbWUoKS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSA6IDA7IGRlc2NlbmRhbnQ7IGRlc2Nl
bmRhbnQgPSBkZXNjZW5kYW50LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlm
IChkZXNjZW5kYW50LT5kb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKQorICAg
ICAgICAgICAgZGVzY2VuZGFudHMucHJlcGVuZChkZXNjZW5kYW50LT5kb2N1bWVudCgpKTsKKyAg
ICB9CisgICAgICAgIAorICAgIC8vIDQuIEZvciBlYWNoIGRlc2NlbmRhbnQgaW4gZGVzY2VuZGFu
dHMsIGVtcHR5IGRlc2NlbmRhbnQncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2ssIGFuZCBxdWV1
ZSBhCisgICAgLy8gdGFzayB0byBmaXJlIGFuIGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ug
d2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUgc2V0IHRvIHRydWUgb24gZGVzY2VuZGFudC4KKyAg
ICBmb3IgKERlcXVlPFJlZlB0cjxEb2N1bWVudD4gPjo6aXRlcmF0b3IgaSA9IGRlc2NlbmRhbnRz
LmJlZ2luKCk7IGkgIT0gZGVzY2VuZGFudHMuZW5kKCk7ICsraSkgeworICAgICAgICAoKmkpLT5j
bGVhckZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKTsKKyAgICAgICAgKCppKS0+dGFza0Z1bGxzY3Jl
ZW5DaGFuZ2VFdmVudCgpOworICAgIH0KKworICAgIC8vIDUuIFdoaWxlIGRvYyBpcyBub3QgbnVs
bCwgcnVuIHRoZXNlIHN1YnN0ZXBzOgorICAgIEVsZW1lbnQqIG5ld1RvcDsKKyAgICB3aGlsZSAo
ZG9jKSB7CisgICAgICAgIC8vIDEuIFBvcCB0aGUgdG9wIGVsZW1lbnQgb2YgZG9jJ3MgZnVsbHNj
cmVlbiBlbGVtZW50IHN0YWNrLgorICAgICAgICBkb2MtPnBvcEZ1bGxzY3JlZW5FbGVtZW50U3Rh
Y2soKTsKKworICAgICAgICAvLyAgICBJZiBkb2MncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sg
aXMgbm9uLWVtcHR5IGFuZCB0aGUgZWxlbWVudCBub3cgYXQgdGhlIHRvcCBpcyBlaXRoZXIKKyAg
ICAgICAgLy8gICAgbm90IGluIGEgZG9jdW1lbnQgb3IgaXRzIG5vZGUgZG9jdW1lbnQgaXMgbm90
IGRvYywgcmVwZWF0IHRoaXMgc3Vic3RlcC4KKyAgICAgICAgbmV3VG9wID0gZG9jLT53ZWJraXRG
dWxsc2NyZWVuRWxlbWVudCgpOworICAgICAgICBpZiAobmV3VG9wICYmICghbmV3VG9wLT5pbkRv
Y3VtZW50KCkgfHwgbmV3VG9wLT5kb2N1bWVudCgpICE9IGRvYykpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAvLyAyLiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1l
ZCBmdWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRlIHNldCB0byB0cnVl
CisgICAgICAgIC8vIG9uIGRvYy4KKyAgICAgICAgZG9jLT50YXNrRnVsbHNjcmVlbkNoYW5nZUV2
ZW50KCk7CisKKyAgICAgICAgLy8gMy4gSWYgZG9jJ3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNr
IGlzIGVtcHR5IGFuZCBkb2MncyBicm93c2luZyBjb250ZXh0IGhhcyBhIGJyb3dzaW5nIGNvbnRl
eHQKKyAgICAgICAgLy8gY29udGFpbmVyLCBzZXQgZG9jIHRvIHRoYXQgYnJvd3NpbmcgY29udGV4
dCBjb250YWluZXIncyBub2RlIGRvY3VtZW50LgorICAgICAgICBpZiAoIW5ld1RvcCAmJiBkb2Mt
Pm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgZG9jID0gZG9jLT5vd25lckVsZW1lbnQoKS0+
ZG9jdW1lbnQoKTsKKworICAgICAgICAvLyA0LiBPdGhlcndpc2UsIHNldCBkb2MgdG8gbnVsbC4K
KyAgICAgICAgZG9jID0gMDsKKyAgICB9CisKKyAgICAvLyA2LiBSZXR1cm4sIGFuZCBydW4gdGhl
IHJlbWFpbmluZyBzdGVwcyBhc3luY2hyb25vdXNseS4KKyAgICAvLyA3LiBPcHRpb25hbGx5LCBw
ZXJmb3JtIHNvbWUgYW5pbWF0aW9uLgorCisgICAgLy8gT25seSBleGl0IG91dCBvZiBmdWxsIHNj
cmVlbiB3aW5kb3cgbW9kZSBpZiB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGVsZW1lbnRzIGluIHRo
ZSAKKyAgICAvLyBmdWxsIHNjcmVlbiBzdGFjay4KKyAgICBpZiAoIW5ld1RvcCkgeworICAgICAg
ICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1f
ZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gT3RoZXJ3aXNlLCBub3RpZnkgdGhlIGNocm9tZSBvZiB0aGUgbmV3IGZ1bGwgc2NyZWVuIGVs
ZW1lbnQuCisgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZv
ckVsZW1lbnQobmV3VG9wKTsgICAgICAKK30KKworYm9vbCBEb2N1bWVudDo6d2Via2l0RnVsbHNj
cmVlbkVuYWJsZWQoKSBjb25zdAoreworICAgIC8vIDQuIFRoZSBmdWxsc2NyZWVuRW5hYmxlZCBh
dHRyaWJ1dGUgbXVzdCByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBvYmplY3QgYW5kIGFsbCBh
bmNlc3RvcgorICAgIC8vIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudHMgaGF2ZSB0aGVpciBm
dWxsc2NyZWVuIGVuYWJsZWQgZmxhZyBzZXQsIG9yIGZhbHNlIG90aGVyd2lzZS4KKworICAgIC8v
IFRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0cyBhcmUgaW1wbGllZCB0byBoYXZlIHRoZWlyIGFs
bG93RnVsbFNjcmVlbiBhdHRyaWJ1dGUgc2V0LgorICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXIgPSBvd25lckVsZW1lbnQoKTsKKyAgICBpZiAoIW93bmVyKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKCFvd25lci0+aXNGcmFtZUVsZW1lbnRCYXNl
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXN0YXRpY19jYXN0PEhU
TUxGcmFtZUVsZW1lbnRCYXNlKj4ob3duZXIpLT5hbGxvd0Z1bGxTY3JlZW4oKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlICgob3duZXIgPSBvd25lci0+ZG9jdW1lbnQo
KS0+b3duZXJFbGVtZW50KCkpKTsKKworICAgIHJldHVybiB0cnVlOyAgICAgICAgCiB9CiAKIHZv
aWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQq
IGVsZW1lbnQpCkBAIC01MTE3LDEyICs1MzA1LDE0IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdERp
ZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCiB7CiAgICAgbV9mdWxsU2NyZWVu
RWxlbWVudC0+ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKIAotICAgIG1fZnVsbFNjcmVl
bkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKG1fZnVsbFNjcmVlbkVsZW1lbnQpOwogICAg
IG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lk
IERvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQog
eworICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
bV9mdWxsU2NyZWVuRWxlbWVudC0+c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0
b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoZmFsc2UpOwogICAgIAogICAgIG1fZnVsbFNjcmVl
bkVsZW1lbnQtPndpbGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpOwpAQCAtNTEzNSw3ICs1
MzI1LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKQogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikKICAgICAgICAgbV9mdWxs
U2NyZWVuUmVuZGVyZXItPnVud3JhcFJlbmRlcmVyKCk7CiAKLSAgICBtX2Z1bGxTY3JlZW5DaGFu
Z2VFdmVudFRhcmdldFF1ZXVlLmFwcGVuZChtX2Z1bGxTY3JlZW5FbGVtZW50LnJlbGVhc2UoKSk7
CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CiAgICAgc2NoZWR1bGVGb3JjZWRTdHlsZVJl
Y2FsYygpOwogICAgIAogICAgIG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXIuc3RhcnRPbmVT
aG90KDApOwpAQCAtNTIwMiwyNyArNTM5MiwyNyBAQCB2b2lkIERvY3VtZW50OjpzZXRGdWxsU2Ny
ZWVuUmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoQ29sb3IgYmFja2dyb3VuZENvbG9yKQogdm9pZCBE
b2N1bWVudDo6ZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4q
KQogewogICAgIHdoaWxlICghbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBtX2Z1bGxTY3JlZW5D
aGFuZ2VFdmVudFRhcmdldFF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICBpZiAoIWVsZW1lbnQp
Ci0gICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIFJlZlB0
cjxOb2RlPiBub2RlID0gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS50YWtlRmly
c3QoKTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgbm9kZSA9IGRvY3VtZW50RWxl
bWVudCgpOwogCiAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IHdhcyByZW1vdmVkIGZyb20gb3Vy
IHRyZWUsIGFsc28gbWVzc2FnZSB0aGUgZG9jdW1lbnRFbGVtZW50LgotICAgICAgICBpZiAoIWNv
bnRhaW5zKGVsZW1lbnQuZ2V0KCkpKQorICAgICAgICBpZiAoIWNvbnRhaW5zKG5vZGUuZ2V0KCkp
KQogICAgICAgICAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQo
ZG9jdW1lbnRFbGVtZW50KCkpOwogICAgICAgICAKLSAgICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZl
bnQsIHRydWUsIGZhbHNlKSk7CisgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCB0cnVlLCBmYWxz
ZSkpOwogICAgIH0KIAogICAgIHdoaWxlICghbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1
ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IG1fZnVs
bFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgaWYgKCFl
bGVtZW50KQotICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOworICAgICAg
ICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS50
YWtlRmlyc3QoKTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgbm9kZSA9IGRvY3Vt
ZW50RWxlbWVudCgpOwogICAgICAgICAKLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgd2FzIHJl
bW92ZWQgZnJvbSBvdXIgdHJlZSwgYWxzbyBtZXNzYWdlIHRoZSBkb2N1bWVudEVsZW1lbnQuCi0g
ICAgICAgIGlmICghY29udGFpbnMoZWxlbWVudC5nZXQoKSkpCisgICAgICAgIC8vIElmIHRoZSBu
b2RlIHdhcyByZW1vdmVkIGZyb20gb3VyIHRyZWUsIGFsc28gbWVzc2FnZSB0aGUgZG9jdW1lbnRF
bGVtZW50LgorICAgICAgICBpZiAoIWNvbnRhaW5zKG5vZGUuZ2V0KCkpKQogICAgICAgICAgICAg
bV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLmFwcGVuZChkb2N1bWVudEVsZW1lbnQo
KSk7CiAgICAgICAgIAotICAgICAgICBlbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5lcnJvckV2ZW50LCB0cnVlLCBmYWxzZSkp
OworICAgICAgICBub2RlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LndlYmtpdGZ1bGxzY3JlZW5lcnJvckV2ZW50LCB0cnVlLCBmYWxzZSkpOwogICAgIH0KIH0KIApA
QCAtNTI2Myw2ICs1NDUzLDM0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEFuaW1hdGluZ0Z1bGxTY3Jl
ZW4oYm9vbCBmbGFnKQogICAgICAgICBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAg
fQogfQorCit2b2lkIERvY3VtZW50OjpjbGVhckZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKQorewor
ICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVhcigpOworfQorCit2b2lkIERvY3VtZW50
Ojpwb3BGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCkKK3sKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxl
bWVudFN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mdWxsU2NyZWVu
RWxlbWVudFN0YWNrLnJlbW92ZUZpcnN0KCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnB1c2hGdWxs
c2NyZWVuRWxlbWVudFN0YWNrKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9mdWxsU2NyZWVu
RWxlbWVudFN0YWNrLnByZXBlbmQoZWxlbWVudCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnRhc2tG
dWxsc2NyZWVuQ2hhbmdlRXZlbnQoKQoreworICAgIE5vZGUqIHRhcmdldCA9IHdlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHRhcmdldCA9IG1fZnVs
bFNjcmVlbkVsZW1lbnQuZ2V0KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHRhcmdldCA9
IHRoaXM7CisgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQodGFy
Z2V0KTsKK30KICNlbmRpZgogCiB2b2lkIERvY3VtZW50OjpkZWNyZW1lbnRMb2FkRXZlbnREZWxh
eUNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMWUzMDVkNDYwYmFkNjVlYjk3Y2MwYjAy
MTRiOWJmMmI3ODgzZDYyMS4uYzFmNzBjNmRiNzI5ZmMyMmRlZWNmMmNkOTVkNDVlNjcxZDEzZGRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwNzgsNiArMTA3OCwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW1vdmVGdWxsU2NyZWVuRWxlbWVudE9mU3VidHJlZShOb2RlKiwgYm9vbCBhbW9u
Z0NoaWxkcmVuT25seSA9IGZhbHNlKTsKICAgICBib29sIGlzQW5pbWF0aW5nRnVsbFNjcmVlbigp
IGNvbnN0OwogICAgIHZvaWQgc2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sKTsKKworICAgIC8v
IFczQyBBUEkKKyAgICBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29uc3Q7CisgICAg
RWxlbWVudCogd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiAhbV9mdWxs
U2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHkoKSA/IG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5m
aXJzdCgpLmdldCgpIDogMDsgfQorICAgIHZvaWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKICNl
bmRpZgogCiAgICAgLy8gVXNlZCB0byBhbGxvdyBlbGVtZW50IHRoYXQgbG9hZHMgZGF0YSB3aXRo
b3V0IGdvaW5nIHRocm91Z2ggYSBGcmFtZUxvYWRlciB0byBkZWxheSB0aGUgJ2xvYWQnIGV2ZW50
LgpAQCAtMTE4OCw2ICsxMTkzLDEzIEBAIHByaXZhdGU6CiAKICAgICBIVE1MQ29sbGVjdGlvbiog
Y2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSk7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCisgICAgdm9pZCBjbGVhckZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKTsKKyAgICB2b2lk
IHBvcEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKTsKKyAgICB2b2lkIHB1c2hGdWxsc2NyZWVuRWxl
bWVudFN0YWNrKEVsZW1lbnQqKTsKKyAgICB2b2lkIHRhc2tGdWxsc2NyZWVuQ2hhbmdlRXZlbnQo
KTsKKyNlbmRpZgorCiAgICAgaW50IG1fZ3VhcmRSZWZDb3VudDsKIAogICAgIE93blB0cjxDU1NT
dHlsZVNlbGVjdG9yPiBtX3N0eWxlU2VsZWN0b3I7CkBAIC0xNDIwLDEwICsxNDMyLDExIEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgbV9hcmVLZXlzRW5h
YmxlZEluRnVsbFNjcmVlbjsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9mdWxsU2NyZWVuRWxlbWVu
dDsKKyAgICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2s7
CiAgICAgUmVuZGVyRnVsbFNjcmVlbiogbV9mdWxsU2NyZWVuUmVuZGVyZXI7CiAgICAgVGltZXI8
RG9jdW1lbnQ+IG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXI7Ci0gICAgRGVxdWU8UmVmUHRy
PEVsZW1lbnQ+ID4gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZTsKLSAgICBEZXF1
ZTxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0UXVldWU7Cisg
ICAgRGVxdWU8UmVmUHRyPE5vZGU+ID4gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1
ZTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0
UXVldWU7CiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nRnVsbFNjcmVlbjsKICAgICBMYXlvdXRSZWN0
IG1fc2F2ZWRQbGFjZWhvbGRlckZyYW1lUmVjdDsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1f
c2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXgg
YjNlMGFhM2EwYmEyOTI4ODg0NDJmZTU1MGM0ZGQxNTM5ZGQ3ZDI2ZS4uNGU0YjdlM2JmZTFiMWZj
OWNkYjMyNGZlOWQ4YjQ3MTViMWRlYmMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0y
NDEsMTAgKzI0MSwxNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVf
RlVMTFNDUkVFTl9BUEkKKyAgICAgICAgLy8gTW96aWxsYSB2ZXJzaW9uCiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBib29sZWFuIHdlYmtpdElzRnVsbFNj
cmVlbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIGJv
b2xlYW4gd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2VkOwogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gRWxlbWVudCB3ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQ7CiAgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIHZvaWQgd2Vi
a2l0Q2FuY2VsRnVsbFNjcmVlbigpOworCisgICAgICAgIC8vIFczQyB2ZXJzaW9uCisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBib29sZWFuIHdlYmtpdEZ1
bGxzY3JlZW5FbmFibGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0
UnVudGltZV0gRWxlbWVudCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudDsKKyAgICAgICAgW1Y4RW5h
YmxlZEF0UnVudGltZV0gdm9pZCB3ZWJraXRFeGl0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAKICAg
ICAgICAgV2ViS2l0TmFtZWRGbG93IHdlYmtpdEdldEZsb3dCeU5hbWUoaW4gRE9NU3RyaW5nIG5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGM5MjU3NDliOGYzZjFhY2EzZjA1NWEzYjEz
ZDFkMTQ1YzI0NjRjZTMuLmE2MDQ1M2RkYWExNjA1ZTg1ZTU3OGMzMTUxNjdmOWJkYjk3MGU5MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE4NTgsOSArMTg1OCwxNCBAQCBib29sIEVsZW1l
bnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
IGNoaWxkQ29udGV4dAogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
dm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpCit7CisgICAgZG9jdW1lbnQo
KS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRoaXMsIEFMTE9XX0tFWUJPQVJEX0lOUFVU
LCBEb2N1bWVudDo6RW5mb3JjZUlGcmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1lbnQpOworfQor
CiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKHVuc2lnbmVkIHNob3J0IGZs
YWdzKQogewotICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCh0aGlz
LCBmbGFncywgRG9jdW1lbnQ6OkVuZm9yY2VJRnJhbWVBbGxvd0Z1bFNjcmVlblJlcXVpcmVtZW50
KTsKKyAgICBkb2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgKGZs
YWdzIHwgTEVHQUNZX01PWklMTEFfUkVRVUVTVCksIERvY3VtZW50OjpFbmZvcmNlSUZyYW1lQWxs
b3dGdWxTY3JlZW5SZXF1aXJlbWVudCk7CiB9CiAKIGJvb2wgRWxlbWVudDo6Y29udGFpbnNGdWxs
U2NyZWVuRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA4YzgyNTA3M2Y0MDhk
YWVjMWUzNTk5ODQ1NjJhYjQ1MDViMTE5ZWE3Li5lN2EzZjFiMDlkZWFiNTZhMjJkZDI0ZTJlZWQ0
MTc4ZjRjNWE3Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM3NiwxMyArMzc2LDE3IEBAIHB1
YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgZW51bSB7Ci0gICAg
ICAgIEFMTE9XX0tFWUJPQVJEX0lOUFVUID0gMQorICAgICAgICBBTExPV19LRVlCT0FSRF9JTlBV
VCA9IDEgPDwgMCwKKyAgICAgICAgTEVHQUNZX01PWklMTEFfUkVRVUVTVCA9IDEgPDwgMSwKICAg
ICB9OwogICAgIAogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4odW5zaWduZWQgc2hv
cnQgZmxhZ3MpOwogICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFuY2Vz
dG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvb2wpOworCisgICAgLy8gVzNDIEFQSQorICAg
IHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBi
b29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApp
bmRleCA4NzI1YmNiYzE5Y2JjMmI4MWE3YmJlNjFkODA4OWVmOTg1OTk2ODA2Li45NTViZDQ3MGFh
Njg2NzM1NzE1YmY0NjA0YjhkYjU2YzBiYTQwNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBA
IC0xMjksOCArMTI5LDEyIEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChF
TkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorICAgICAgICAv
LyBNb3ppbGxhIHZlcnNpb24KICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUxMT1dfS0VZ
Qk9BUkRfSU5QVVQgPSAxOwogICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lXSB2b2lkIHdlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIHVuc2ln
bmVkIHNob3J0IGZsYWdzKTsKKworICAgICAgICAvLyBXM0MgdmVyc2lvbgorICAgICAgICBbVjhF
bmFibGVkQXRSdW50aW1lXSB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7CiAjZW5kaWYK
IAogICAgICAgICAvLyBDU1MgUmVnaW9ucyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCA5Y2ZlOGIzNDg4YTc1ZDU2OGRhODkwNzQzNzFiM2I5NDEwNGJiMGE2Li4zODg4
YjRlNWVhNTA5NmRkODM1ZWQzMTAwOTRhYjg5NGE4NjYwZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC02Mjg2LDE0ICs2Mjg2LDkgQEAgYm9vbCBMYXllckZsdXNoQ29u
dHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIC0gKEJP
T0wpX3N1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQ6KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQq
KWVsZW1lbnQgd2l0aEtleWJvYXJkOihCT09MKXdpdGhLZXlib2FyZAogewotICAgIGlmICh3aXRo
S2V5Ym9hcmQpCi0gICAgICAgIHJldHVybiBOTzsKLQogICAgIGlmICghW1tXZWJQcmVmZXJlbmNl
cyBzdGFuZGFyZFByZWZlcmVuY2VzXSBmdWxsU2NyZWVuRW5hYmxlZF0pCiAgICAgICAgIHJldHVy
biBOTzsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGUgZWxlbWVudCBpcyBpbiBhbiBJRnJhbWUsIHdl
IHNob3VsZCBlbnN1cmUgaXQgaGFzIAotICAgIC8vIGFuIEFsbG93c0Z1bGxTY3JlZW49WUVTIGF0
dHJpYnV0ZSBiZWZvcmUgYWxsb3dpbmcgZnVsbHNjcmVlbiBhY2Nlc3MuCiAgICAgcmV0dXJuIFlF
UzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDE3YzA3MGI2ZGRiMDkzMzRhY2Y2ZDU0ZWUyY2E0Y2Fk
MDU2ZWEwNDAuLjIxZmU5Y2RhZTRmZDIzZDA0YWUwYzE4MDY5MTBlNzhmNTY2ODgxZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5jcHAKQEAgLTkxLDEwICs5MSw3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sIGFuaW1hdGluZykKIAogdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQs
IGJvb2wmIHN1cHBvcnRzKQogewotICAgIGlmICh3aXRoS2V5Ym9hcmQpCi0gICAgICAgIHN1cHBv
cnRzID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBzdXBwb3J0cyA9IHRydWU7CisgICAgc3Vw
cG9ydHMgPSB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1h
bmFnZXIuY3BwCmluZGV4IDI5M2FlNWZiY2UxNjUwMTc3MGI0ODU1YjY5YWIzOTkyYTNlNTU2N2Mu
LjBlYTgwNDNhMzBkMjIwYjVlZTBiNTUyNmRhZWE2NzBhMGZjNjgwNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcApAQCAtOTksOCArOTksNiBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiAK
IHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50KiBlbGVtZW50KQogewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBBU1NF
UlQobV9lbGVtZW50ID09IGVsZW1lbnQpOwogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVGdWxs
U2NyZWVuQ2xpZW50KCkuZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fcGFnZS5nZXQoKSwgZWxl
bWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBiZThiZDM1NzRiZDYxMGRiZjExMTQ0ODQzNjk3ZWNlNGFjN2Qw
YjNkLi41ZDhhZDUzYzFkZjE0YmJmNjZkODc3MzNmNjlkZGQxYjc1Y2QzYmFhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTItMDMtMDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgU3VwcG9ydCBXM0MgRnVsbCBTY3JlZW4gQVBJIHByb3Bvc2FsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDY2MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1lbGVtZW50LXN0YWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbDoKKyAgICAg
ICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVtb3ZlZC5odG1sOgorICAgICAg
ICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMuaHRtbDog
QWRkZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzOgorCiAyMDEy
LTAzLTA4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBOVUxMIHJl
bmRlcmVyIHBvc3NpYmxlIGluIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENhblJlY2Vp
dmVEcm9wcGVkRmlsZXMoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1lbGVtZW50LXN0YWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWEw
NmNlMTNiMmRkZWJlOTlkYzNjMzBmMmU5ZTQxNmNmZmIyYTY2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdCBmb3IgVzNDIEZ1bGxzY3JlZW4gZWxlbWVudCBz
dGFjay4KKworVG8gdGVzdCBtYW51YWxseSwgY2xpY2sgdGhlICJHbyBmdWxsIHNjcmVlbiIgYnV0
dG9uIC0gdGhlIHBhZ2Ugc2hvdWxkIGVudGVyIGZ1bGwgc2NyZWVuIG1vZGUuCisKK0dvIGZ1bGwg
c2NyZWVuIChvbmUpCitHbyBmdWxsIHNjcmVlbiAodHdvKQorRXhpdCBmdWxsIHNjcmVlbiAodHdv
KQorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudC5pZCA9PSAnb25lJykgT0sKK0VWRU5UKHdlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQuaWQg
PT0gJ3R3bycpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRv
Y3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkID09ICdvbmUnKSBPSworRU5EIE9GIFRF
U1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVt
ZW50LXN0YWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1l
bnQtc3RhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODc3MGVmMGQ0ZTYyMWUzZjc1NjgzYjNhMzU2NjBl
N2JiZTQ4Y2NjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBvbmU7CisgICAgdmFyIHR3bzsKKwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIG9uZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdvbmUnKTsKKyAgICAgICAgdHdvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3
bycpOworCisgICAgICAgIHZhciBjYWxsYmFjazsKKyAgICAgICAgdmFyIGZ1bGxzY3JlZW5DaGFu
Z2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhldmVudCkKKyAgICAgICAgfTsKKyAgICAgICAgd2FpdEZvckV2
ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bGxzY3JlZW5DaGFuZ2Vk
KTsKKworICAgICAgICB2YXIgb25lRW50ZXJlZEZ1bGxzY3JlZW4gPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQu
aWQiLCAib25lIik7CisgICAgICAgICAgICBjYWxsYmFjayA9IHR3b0VudGVyZWRGdWxsc2NyZWVu
OworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpIHsgdHdvLndlYmtpdFJlcXVlc3RGdWxs
c2NyZWVuKCk7IH0pOworICAgICAgICB9OworCisgICAgICAgIHZhciB0d29FbnRlcmVkRnVsbHNj
cmVlbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53
ZWJraXRGdWxsc2NyZWVuRWxlbWVudC5pZCIsICJ0d28iKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
ID0gdHdvRXhpdGVkRnVsbHNjcmVlbjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3Jl
ZW4oKTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgdHdvRXhpdGVkRnVsbHNjcmVlbiA9IGZ1
bmN0aW9uKCkgeyAKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0RnVs
bHNjcmVlbkVsZW1lbnQuaWQiLCAib25lIik7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAg
ICAgIH07CisKKyAgICAgICAgY2FsbGJhY2sgPSBvbmVFbnRlcmVkRnVsbHNjcmVlbjsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIHJ1bldpdGhL
ZXlEb3duKGZ1bmN0aW9uKCkgeyBvbmUud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsgfSk7Cisg
ICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
ICAgIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHA6Ly9kdmNzLnczLm9yZy9oZy9mdWxsc2NyZWVu
L3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sI2Z1bGxzY3JlZW4tZWxlbWVudC1zdGFjayI+VzND
IEZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjazwvYT4uPC9wPgorICAgIDxwPlRvIHRlc3QgbWFudWFs
bHksIGNsaWNrIHRoZSAiR28gZnVsbCBzY3JlZW4iIGJ1dHRvbiAtIHRoZSBwYWdlIHNob3VsZCBl
bnRlciBmdWxsIHNjcmVlbiBtb2RlLjwvcD4KKyAgICA8ZGl2PgorICAgICAgICA8YnV0dG9uIG9u
Y2xpY2s9Im9uZS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpIj5HbyBmdWxsIHNjcmVlbiAob25l
KTwvYnV0dG9uPgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9b25lPgorICAgICAgICA8YnV0dG9u
IG9uY2xpY2s9InR3by53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpIj5HbyBmdWxsIHNjcmVlbiAo
dHdvKTwvYnV0dG9uPgorICAgICAgICA8ZGl2IGlkPXR3bz4KKyAgICAgICAgICAgIDxidXR0b24g
b25jbGljaz0iZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKSI+RXhpdCBmdWxsIHNjcmVl
biAodHdvKTwvYnV0dG9uPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTJjMGQy
ZDQxNTZiOTVmYjY1ZTllY2M3OTMxNjExNjRhYzU4YmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDUgQEAKK1RoaXMgdGVzdHMgdGhlIGZ1bGxzY3JlZW5FbmFibGVkIHByb3BlcnR5IGxh
aWQgb3V0IGluIHNlY3Rpb24gNCBvZiB0aGUgVzNDIEZ1bGwgU2NyZWVuIEFQSQorRVhQRUNURUQg
KGlmcmFtZS5jb250ZW50RG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQgPT0gJ3RydWUn
KSBPSworRVhQRUNURUQgKGlmcmFtZTIuY29udGVudERvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5F
bmFibGVkID09ICdmYWxzZScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkMTBiZTUyNTUx
ZjRmOGVmYTZiOTI0ODkxNGYxNjg0ZDY0Yzk5MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDEyIEBA
Cis8Ym9keT4KKzxkaXY+VGhpcyB0ZXN0cyB0aGUgPGNvZGU+ZnVsbHNjcmVlbkVuYWJsZWQ8L2Nv
ZGU+IHByb3BlcnR5IGxhaWQgb3V0IGluIHNlY3Rpb24gNCBvZiB0aGUgVzNDIAorPGEgaHJlZj0i
aHR0cDovL2R2Y3MudzMub3JnL2hnL2Z1bGxzY3JlZW4vcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0
bWwiPkZ1bGwgU2NyZWVuIEFQSTwvYT48L2Rpdj4KKzxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUn
KSk7CisgICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnd2Via2l0YWxsb3dmdWxsc2NyZWVuJywgJ3Ry
dWUnKTsKKyAgICB2YXIgaWZyYW1lMiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKSk7CisgICAgdGVzdEV4cGVjdGVk
KCdpZnJhbWUuY29udGVudERvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkJywgdHJ1ZSk7
CisgICAgdGVzdEV4cGVjdGVkKCdpZnJhbWUyLmNvbnRlbnREb2N1bWVudC53ZWJraXRGdWxsc2Ny
ZWVuRW5hYmxlZCcsIGZhbHNlKTsKKyAgICBlbmRUZXN0KCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVk
Lmh0bWwKaW5kZXggNzc5ODMyYTdmMjM4YmYzZTZjNDFkMjcwMDdiZTQyM2NlYzk2ZGMxNC4uMGU3
ODE5YjlhZDUyZjg2NGY4OGQzMjllMTJiZDdkNjZhZDk0MTkzNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVkLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVkLmh0bWwK
QEAgLTksNyArOSwxMCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHdhaXRGb3JFdmVudChkb2N1
bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
bG9nUmVzdWx0KCJFbnRlcmVkIGZ1bGwgc2NyZWVuLiIsIGZhbHNlKTsgCisgICAgICAgICAgIGVu
ZFRlc3QoKTsKICAgICAgICAgfSk7CisgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVk
KHRydWUpOwogICAgICAgICB3YWl0Rm9yRXZlbnRBbmRFbmQoZG9jdW1lbnQsICd3ZWJraXRmdWxs
c2NyZWVuZXJyb3InKTsKICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlbW92ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZW1vdmVkLmh0bWwKaW5kZXggOTI2NDIxOWMyNDZi
NmZhOGJmZjNhY2EwMDZiNjU3NzlhMjY1Y2U4Yi4uMjMzMGZmYmU5MTQ3MWNhZjlmY2RlNmIyMjhm
MzI5ODdkM2M5ZGY0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi1yZXF1ZXN0LXJlbW92ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXJlcXVlc3QtcmVtb3ZlZC5odG1sCkBAIC0xMiw2ICsxMiw5IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CiAgICAgICAgIGNvbnNvbGVXcml0ZSgiU1VDQ0VFRCAtIGRpZCBub3QgZW50
ZXIgZnVsbCBzY3JlZW4hIik7CiAgICAgfSk7CiAKKyAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVk
KHRydWUpOworCiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwog
ICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkaXYpOwogICAgIGNvbnNv
bGVXcml0ZSgiQWRkZWQgY2hpbGQgZWxlbWVudC4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg0MDMwZGVmYzhhMDU1Mzg2ZDRiNjRmYTJlOTI5NGZlYjBhNzc3ZjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0
aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhpcyB0ZXN0cyB0aGUgcmVzdHJp
Y3Rpb25zIHRvIGVudGVyaW5nIGZ1bGwgc2NyZWVuIG1vZGUgbGFpZCBvdXQgaW4gc2VjdGlvbiA0
LjEgb2YgdGhlIFczQyBGdWxsIFNjcmVlbiBBUEkKKyJUaGUgY29udGV4dCBvYmplY3QgaXMgbm90
IGluIGEgZG9jdW1lbnQuIgorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmVycm9yKQorIlRoZSBjb250
ZXh0IG9iamVjdCdzIG5vZGUgZG9jdW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRl
eHQncyBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBmdWxsc2NyZWVuIGVuYWJsZWQgZmxhZyBz
ZXQuIgorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmVycm9yKQorIlRoZSBjb250ZXh0IG9iamVjdCdz
IG5vZGUgZG9jdW1lbnQgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQg
aXRzIHRvcCBlbGVtZW50IGlzIG5vdCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4dCBvYmplY3Qu
IgorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5l
cnJvcikKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCisiQSBkZXNjZW5kYW50IGJyb3dz
aW5nIGNvbnRleHQncyBkb2N1bWVudCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVlbiBlbGVtZW50
IHN0YWNrLiIKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFVkVOVCh3ZWJraXRmdWxs
c2NyZWVuZXJyb3IpCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorIlRoaXMgYWxnb3Jp
dGhtIGlzIG5vdCBhbGxvd2VkIHRvIHNob3cgYSBwb3AtdXAuIgorRVZFTlQod2Via2l0ZnVsbHNj
cmVlbmVycm9yKQorRU5EIE9GIFRFU1QKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYmUwOWE1
YmM5MDA3ZDQ1NGNmODBiY2ViM2U4ZTI5YjA0YjI0NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCkBAIC0wLDAg
KzEsNzQgQEAKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2PlRoaXMgdGVzdHMgdGhl
IHJlc3RyaWN0aW9ucyB0byBlbnRlcmluZyBmdWxsIHNjcmVlbiBtb2RlIGxhaWQgb3V0IGluIHNl
Y3Rpb24gNC4xIG9mIHRoZSBXM0MgCis8YSBocmVmPSJodHRwOi8vZHZjcy53My5vcmcvaGcvZnVs
bHNjcmVlbi9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCI+RnVsbCBTY3JlZW4gQVBJPC9hPjwv
ZGl2PgorPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKyAgICAvLyBCYWlsIG91dCBlYXJseSBpZiB0aGUgZnVsbCBzY3JlZW4gQVBJIGlzIG5vdCBl
bmFibGVkIG9yIGlzIG1pc3Npbmc6CisgICAgaWYgKEVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuID09IHVuZGVmaW5lZCkgeworICAgICAgICBsb2dSZXN1bHQoZmFsc2Us
ICJFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQi
KTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBjYWxsYmFj
azsKKworICAgICAgICB2YXIgcnVuVGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY2Fs
bGJhY2sgPSBlcnJvclJlc3VsdDE7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJyJUaGUgY29u
dGV4dCBvYmplY3QgaXMgbm90IGluIGEgZG9jdW1lbnQuIicpOworICAgICAgICAgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgICAgcnVuV2l0aEtl
eURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAg
ICB9OworCisgICAgICAgIHZhciBlcnJvclJlc3VsdDEgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrID0gZXJyb3JSZXN1bHQyOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCci
VGhlIGNvbnRleHQgb2JqZWN0XCdzIG5vZGUgZG9jdW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dz
aW5nIGNvbnRleHRcJ3MgZG9jdW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgZnVsbHNjcmVlbiBlbmFi
bGVkIGZsYWcgc2V0LiInKQorICAgICAgICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKSk7
CisgICAgICAgICAgICB2YXIgZGl2ID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lLmNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKSk7CisKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoaWZyYW1lLmNvbnRlbnREb2N1
bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5lcnJvcicsIGZ1bmN0aW9uKCkgeyBjYWxsYmFjaygpOyB9
KTsKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2LndlYmtpdFJlcXVl
c3RGdWxsc2NyZWVuKCl9KTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZXJyb3JSZXN1bHQy
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjYWxsYmFjayA9IGVycm9yUmVzdWx0MzsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgnIlRoZSBjb250ZXh0IG9iamVjdFwncyBub2RlIGRvY3Vt
ZW50IGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjayBpcyBub3QgZW1wdHkgYW5kIGl0cyB0b3AgZWxl
bWVudCBpcyBub3QgYW4gYW5jZXN0b3Igb2YgdGhlIGNvbnRleHQgb2JqZWN0LiInKTsKKyAgICAg
ICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICAgICAgdmFyIGRpdjIgPSBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2JykpOworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBydW5XaXRoS2V5
RG93bihmdW5jdGlvbigpe2RpdjIud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpe2Rpdi53ZWJr
aXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGVycm9y
UmVzdWx0MyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1
bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdW5jdGlvbigpeworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrID0gZXJyb3JSZXN1bHQ0OworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgnIkEgZGVzY2VuZGFudCBicm93c2luZyBjb250ZXh0XCdzIGRvY3VtZW50IGhhcyBhIG5vbi1l
bXB0eSBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2suIicpOworICAgICAgICAgICAgICAgIHZhciBp
ZnJhbWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaWZyYW1lJykpOworICAgICAgICAgICAgICAgIGlmcmFtZS5zZXRBdHRyaWJ1
dGUoJ3dlYmtpdGFsbG93ZnVsbHNjcmVlbicsICd0cnVlJyk7CisgICAgICAgICAgICAgICAgdmFy
IGRpdiA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxk
KGlmcmFtZS5jb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICAg
ICAgICAgIHdhaXRGb3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdl
JywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBkaXYyID0gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
KTsKKyAgICAgICAgICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYyLndl
YmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpe2Rpdi53ZWJraXRSZXF1ZXN0RnVsbHNj
cmVlbigpfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRvY3VtZW50LndlYmtpdEV4
aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGVycm9yUmVzdWx0NCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdW5jdGlvbigpeyAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrID0gZXJyb3JSZXN1bHQ1OworICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgnIlRoaXMgYWxnb3JpdGhtIGlzIG5vdCBhbGxvd2VkIHRvIHNob3cgYSBwb3AtdXAuIicp
OworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICAgICAgICAg
IGRpdi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpOyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgfTsKKworICAgICAgICB2YXIgZXJyb3JSZXN1bHQ1ID0gZnVuY3Rpb24oKSB7IGVuZFRl
c3QoKTsgfQorCisgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOworCisg
ICAgICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5lcnJvcicsIGZ1
bmN0aW9uKCkgeyBjYWxsYmFjaygpOyB9KTsKKyAgICB9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwppbmRleCA1ZTViYjFhZjdhNzgyYWNmZWM5
MjVjNmQyOGI3ZWY4YTIyMjQzNzQ5Li44MDFiNWJhOWUzYTYxMmJhZjM2NzNjNmRhNTcxOGMzNTg1
YmEzZjkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRl
c3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCkBA
IC05OCwxMCArOTgsMTggQEAgZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kRW5kKGVsZW1lbnQsIGV2
ZW50TmFtZSwgZnVuY1N0cmluZykKICAgICB3YWl0Rm9yRXZlbnQoZWxlbWVudCwgZXZlbnROYW1l
LCBmdW5jU3RyaW5nLCB0cnVlKQogfQogCi1mdW5jdGlvbiB3YWl0Rm9yRXZlbnQoZWxlbWVudCwg
ZXZlbnROYW1lLCBmdW5jLCBlbmRpdCkKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudE9uY2UoZWxlbWVu
dCwgZXZlbnROYW1lLCBmdW5jLCBlbmRpdCkKK3sKKyAgICB3YWl0Rm9yRXZlbnQoZWxlbWVudCwg
ZXZlbnROYW1lLCBmdW5jLCBlbmRpdCwgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50
KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQsIG9uY2UpCiB7CiAgICAgZnVuY3Rpb24g
X2V2ZW50Q2FsbGJhY2soZXZlbnQpCiAgICAgeworICAgICAgICBpZiAob25jZSkKKyAgICAgICAg
ICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNr
KTsKKwogICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSIpOwog
CiAgICAgICAgIGlmIChmdW5jKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131128</attachid>
            <date>2012-03-09 16:09:00 -0800</date>
            <delta_ts>2012-03-12 12:30:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80660-20120309160859.patch</filename>
            <type>text/plain</type>
            <size>43875</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU4Mjk5NDhhZGI2YjA4
YzE1Yzk3ZTNlZmM3ZTIzMGVkNDhmNzk4Ni4uZmY3ODAxYzM0ODliYzM0ZjIzZjFmZTY2NDQxNTNl
ZGIwNGQzYjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTAzLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwg
U2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0czogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0
bWwKKyAgICAgICAgICAgICAgIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCisg
ICAgICAgICAgICAgICBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlbW92ZWRMYXN0UmVmKTogQ2xlYXIgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVlbik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VE
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsZWFyRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cG9wRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHVzaEZ1bGxz
Y3JlZW5FbGVtZW50U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRhc2tGdWxs
c2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKworICAgICAgICBBZGQgbmV3IFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMgZnVuY3Rpb25zIGZvciB0aGUgYWRkZWQgRG9jdW1lbnQgYW5k
IEVsZW1lbnQgZnVuY3Rpb25zLgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoUnVudGltZUVuYWJsZWRGZWF0dXJlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRW5h
YmxlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVl
bkVuYWJsZWQpOgorCisKIDIwMTItMDMtMDggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVc2UgYW4gZXhwbGljaXQgYXR0cmlidXRlIHRvIHNpZ25hbCB0
aGF0IGEgY29udGV4dCBwcmVmZXJzIHRvIHVzZSBhIGRpc2NyZXRlIEdQVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDQ4ZjY0YmI0OWVkODA4ZDM5MDllZThmMDE5NjY5YmYzZGU2ZDIwMGIuLjYxYmUwZDRi
MzM0MGUzNThhNDU1N2FjNTUyY2JmNzU1ZTkwMDgyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNyBAQAogMjAxMi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAorICAgICAgICBTdXBwb3J0IFczQyBGdWxsIFNjcmVlbiBBUEkgcHJvcG9zYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgZnVsbCBzY3JlZW4g
ZWxlbWVudHMgdG8gYWNjZXNzIHRoZSBrZXlib2FyZC4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVu
dDpXZWJDb3JlOjp3aXRoS2V5Ym9hcmQ6XSk6CisKKzIwMTItMDMtMDggIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBTbm93IExlb3BhcmQgYnVp
bGQgZml4LgogCiAgICAgICAgIE9uIExlb3BhcmQgYW5kIFNub3cgTGVvcGFyZCwgcHJvdmlkZSBh
biBpbXBsZW1lbnRhdGlvbiBmb3IgLVtOU1dpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOl0uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggN2JjYWNmYTAwMzMyZDk0M2M3NGYzYTRmZDBmYzAyNmYxZWYyZTdhYS4uYWEx
NjFhYTVhMjRhNWM2ODU5YTc0YWRlOTI3OWY5NTQ0MjMyMGZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE5IEBACiAyMDEyLTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwgU2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBmdWxsIHNjcmVlbiBl
bGVtZW50cyB0byBhY2Nlc3MgdGhlIGtleWJvYXJkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorCisyMDEy
LTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2
aWV3ZWQgU25vdyBMZW9wYXJkIGJ1aWxkIGZpeC4KIAogICAgICAgICBPbiBMZW9wYXJkIGFuZCBT
bm93IExlb3BhcmQsIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZm9yIC1bTlNXaW5kb3cgY29u
dmVydFJlY3RUb1NjcmVlbjpdLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCA0NTNiMTIxNDEyYWU3YzU4
YTBmZjU1Yjg2ODQwNmQ5MmM3YTIwMzJhLi5mMDQ5OGM0YzVmMzg1ZmI4NWEyNjY1MjgwNmZiOTI3
ZjdjYjcyMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgd2Via2l0SURCVHJhbnNhY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNJ
bmRleGVkREJFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8g
TW96aWxsYSB2ZXJzaW9uCiAgICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJs
ZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQg
c2V0V2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0K
QEAgLTc4LDYgKzc5LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2Ny
ZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJ
RW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGlj
IGJvb2wgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOyB9CisKKyAgICAvLyBXM0MgdmVyc2lvbgorICAgIHN0YXRpYyBib29sIHdl
YmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVu
YWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQo
KSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Vi
a2l0RXhpdEZ1bGxzY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxl
ZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuRW5hYmxlZCgpIHsg
cmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkxZTJiZGJmODNjZDM1ZTEx
YWI0OTBmOTdmZGNkY2Y5NWM2ZmVlNjguLjllNDc3YjRhYTYyZDc5Y2EzMTBmNjEwYmI5NjBlMzQ0
NTA2NGZlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjA3LDYgKzYwNyw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnQg
PSAwOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgbV9mdWxsU2NyZWVuRWxl
bWVudCA9IDA7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVhcigpOwogI2Vu
ZGlmCiAKICAgICAgICAgLy8gcmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJl
Z2lzdGVyIElEcywKQEAgLTUwNTEsNDMgKzUwNTIsMjM1IEBAIGJvb2wgRG9jdW1lbnQ6OmZ1bGxT
Y3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAKIHZvaWQg
RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1
bnNpZ25lZCBzaG9ydCBmbGFncywgRnVsbFNjcmVlbkNoZWNrVHlwZSBjaGVja1R5cGUpCiB7Ci0g
ICAgZG8gewotICAgICAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKQotICAgICAgICAgICAgYnJlYWs7CisgICAgLy8gVGhlIE1vemlsbGEg
RnVsbCBTY3JlZW4gQVBJIDxodHRwczovL3dpa2kubW96aWxsYS5vcmcvR2Vja286RnVsbFNjcmVl
bkFQST4gaGFzIGRpZmZlcmVudCByZXF1aXJlbWVudHMKKyAgICAvLyBmb3IgZnVsbCBzY3JlZW4g
bW9kZSwgYW5kIGRvIG5vdCBoYXZlIHRoZSBjb25jZXB0IG9mIGEgZnVsbCBzY3JlZW4gZWxlbWVu
dCBzdGFjay4KKyAgICBib29sIGluTGVnYWN5TW96aWxsYU1vZGUgPSAoZmxhZ3MgJiBFbGVtZW50
OjpMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUKTsKIAorICAgIGRvIHsKICAgICAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOwotICAgICAgICAK
KyAKKyAgICAgICAgLy8gMS4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
dHJ1ZSwgdGVybWluYXRlIHRoZXNlIHN0ZXBzIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZQorICAg
ICAgICAvLyBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVuZXJyb3Igd2l0aCBpdHMgYnViYmxlcyBh
dHRyaWJ1dGUgc2V0IHRvIHRydWUgb24gdGhlIGNvbnRleHQgb2JqZWN0J3MgCisgICAgICAgIC8v
IG5vZGUgZG9jdW1lbnQ6CisKKyAgICAgICAgLy8gVGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBp
biBhIGRvY3VtZW50LgorICAgICAgICBpZiAoIWVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFRoZSBjb250ZXh0IG9iamVjdCdzIG5vZGUgZG9j
dW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudCBkb2VzIG5v
dCBoYXZlCisgICAgICAgIC8vIHRoZSBmdWxsc2NyZWVuIGVuYWJsZWQgZmxhZyBzZXQuCiAgICAg
ICAgIGlmIChjaGVja1R5cGUgPT0gRW5mb3JjZUlGcmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1l
bnQgJiYgIWZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KGVsZW1lbnQpKQogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKQorCisgICAgICAgIC8vIFRoZSBjb250ZXh0IG9iamVjdCdzIG5v
ZGUgZG9jdW1lbnQgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQgaXRz
IHRvcCBlbGVtZW50CisgICAgICAgIC8vIGlzIG5vdCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4
dCBvYmplY3QuIChOT1RFOiBJZ25vcmUgdGhpcyByZXF1aXJlbWVudCBpZiB0aGUgcmVxdWVzdCB3
YXMKKyAgICAgICAgLy8gbWFkZSB2aWEgdGhlIGxlZ2FjeSBNb3ppbGxhLXN0eWxlIEFQSS4pCisg
ICAgICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHkoKSAmJiAhbV9mdWxs
U2NyZWVuRWxlbWVudFN0YWNrLmZpcnN0KCktPmNvbnRhaW5zKGVsZW1lbnQpICYmICFpbkxlZ2Fj
eU1vemlsbGFNb2RlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gQSBkZXNjZW5k
YW50IGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVl
biBlbGVtZW50IHN0YWNrLgorICAgICAgICBib29sIGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNr
ID0gZmFsc2U7CisgICAgICAgIGZvciAoRnJhbWUqIGRlc2NlbmRhbnQgPSBmcmFtZSgpID8gZnJh
bWUoKS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSA6IDA7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQg
PSBkZXNjZW5kYW50LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgICAgICBpZiAo
ZGVzY2VuZGFudC0+ZG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSkgeworICAg
ICAgICAgICAgICAgIGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNrID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZGVz
Y2VuZGVudEhhc05vbkVtcHR5U3RhY2sgJiYgIWluTGVnYWN5TW96aWxsYU1vZGUpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAvLyBUaGlzIGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZCB0
byBzaG93IGEgcG9wLXVwLgorICAgICAgICBpZiAoIWRvbVdpbmRvdygpLT5hbGxvd1BvcFVwKCkp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBUaGVyZSBpcyBhIHByZXZpb3VzbHkt
ZXN0YWJsaXNoZWQgdXNlciBwcmVmZXJlbmNlLCBzZWN1cml0eSByaXNrLCBvciBwbGF0Zm9ybSBs
aW1pdGF0aW9uLgorICAgICAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5m
dWxsU2NyZWVuRW5hYmxlZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAg
ICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JF
bGVtZW50KGVsZW1lbnQsIGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpKQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgICAgIC8vIE5vdGU6IHRoZSBNb3pp
bGxhIEZ1bGwgU2NyZWVuIEFQSSBkb2VzIG5vdCBoYXZlIHRoZSBjb25jZXB0IG9mIGEgZnVsbCBz
Y3JlZW4gZWxlbWVudCBzdGFjaworICAgICAgICAvLyBzbyBjbGVhciB0aGUgc3RhY2sgYmVmb3Jl
IHB1c2hpbmcgdGhlIG5ldyBlbGVtZW50OgorICAgICAgICBpZiAoaW5MZWdhY3lNb3ppbGxhTW9k
ZSkgeworICAgICAgICAgICAgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVhcigpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
Mi4gTGV0IGRvYyBiZSBlbGVtZW50J3Mgbm9kZSBkb2N1bWVudC4gKGkuZS4gInRoaXMiKQorICAg
ICAgICBEb2N1bWVudCogZG9jID0gdGhpczsKKworICAgICAgICAvLyAzLiBMZXQgZG9jcyBiZSBh
bGwgZG9jJ3MgYW5jZXN0b3IgYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50cyAoaWYgYW55KSBh
bmQgZG9jLgorICAgICAgICBEZXF1ZTxEb2N1bWVudCo+IGRvY3M7CisKKyAgICAgICAgZG8gewor
ICAgICAgICAgICAgZG9jcy5wcmVwZW5kKGRvYyk7CisgICAgICAgICAgICBkb2MgPSBkb2MtPm93
bmVyRWxlbWVudCgpID8gZG9jLT5vd25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IDA7CisgICAg
ICAgIH0gd2hpbGUgKGRvYyk7CisKKyAgICAgICAgLy8gNC4gRm9yIGVhY2ggZG9jdW1lbnQgaW4g
ZG9jcywgcnVuIHRoZXNlIHN1YnN0ZXBzOgorICAgICAgICBEZXF1ZTxEb2N1bWVudCo+OjppdGVy
YXRvciBjdXJyZW50ID0gZG9jcy5iZWdpbigpLCBmb2xsb3dpbmcgPSBkb2NzLmJlZ2luKCk7CisK
KyAgICAgICAgZG8geworICAgICAgICAgICAgKytmb2xsb3dpbmc7CisKKyAgICAgICAgICAgIC8v
IDEuIExldCBmb2xsb3dpbmcgZG9jdW1lbnQgYmUgdGhlIGRvY3VtZW50IGFmdGVyIGRvY3VtZW50
IGluIGRvY3MsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8KKyAgICAgICAgICAgIC8vIHN1Y2ggZG9j
dW1lbnQuCisgICAgICAgICAgICBEb2N1bWVudCogY3VycmVudERvYyA9ICpjdXJyZW50OworICAg
ICAgICAgICAgRG9jdW1lbnQqIGZvbGxvd2luZ0RvYyA9IGZvbGxvd2luZyAhPSBkb2NzLmVuZCgp
ID8gKmZvbGxvd2luZyA6IDA7CisKKyAgICAgICAgICAgIC8vIDIuIElmIGZvbGxvd2luZyBkb2N1
bWVudCBpcyBudWxsLCBwdXNoIGNvbnRleHQgb2JqZWN0IG9uIGRvY3VtZW50J3MgZnVsbHNjcmVl
biBlbGVtZW50CisgICAgICAgICAgICAvLyBzdGFjaywgYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJl
IGFuIGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ugd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1
dGUKKyAgICAgICAgICAgIC8vIHNldCB0byB0cnVlIG9uIHRoZSBkb2N1bWVudC4KKyAgICAgICAg
ICAgIGlmICghZm9sbG93aW5nRG9jKSB7CisgICAgICAgICAgICAgICAgY3VycmVudERvYy0+cHVz
aEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soZWxlbWVudCk7CisgICAgICAgICAgICAgICAgY3VycmVu
dERvYy0+dGFza0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCgpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyAzLiBPdGhlcndpc2UsIGlmIGRv
Y3VtZW50J3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIGVpdGhlciBlbXB0eSBvciBpdHMg
dG9wIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGlzIG5vdCBmb2xsb3dpbmcgZG9jdW1lbnQncyBi
cm93c2luZyBjb250ZXh0IGNvbnRhaW5lciwKKyAgICAgICAgICAgIEVsZW1lbnQqIHRvcEVsZW1l
bnQgPSBjdXJyZW50RG9jLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpOworICAgICAgICAgICAg
aWYgKCF0b3BFbGVtZW50IHx8IHRvcEVsZW1lbnQgIT0gZm9sbG93aW5nRG9jLT5vd25lckVsZW1l
bnQoKSkgeworICAgICAgICAgICAgICAgIC8vIC4uLnB1c2ggZm9sbG93aW5nIGRvY3VtZW50J3Mg
YnJvd3NpbmcgY29udGV4dCBjb250YWluZXIgb24gZG9jdW1lbnQncyBmdWxsc2NyZWVuIGVsZW1l
bnQKKyAgICAgICAgICAgICAgICAvLyBzdGFjaywgYW5kIHF1ZXVlIGEgdGFzayB0byBmaXJlIGFu
IGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ugd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUK
KyAgICAgICAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSBvbiBkb2N1bWVudC4KKyAgICAgICAgICAg
ICAgICBjdXJyZW50RG9jLT5wdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhmb2xsb3dpbmdEb2Mt
Pm93bmVyRWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50RG9jLT50YXNrRnVsbHNj
cmVlbkNoYW5nZUV2ZW50KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIDQuIE90aGVyd2lzZSwgZG8gbm90aGluZyBmb3IgdGhpcyBk
b2N1bWVudC4gSXQgc3RheXMgdGhlIHNhbWUuCisgICAgICAgIH0gd2hpbGUgKCsrY3VycmVudCAh
PSBkb2NzLmVuZCgpKTsKKworICAgICAgICAvLyA1LiBSZXR1cm4sIGFuZCBydW4gdGhlIHJlbWFp
bmluZyBzdGVwcyBhc3luY2hyb25vdXNseS4KKyAgICAgICAgLy8gNi4gT3B0aW9uYWxseSwgcGVy
Zm9ybSBzb21lIGFuaW1hdGlvbi4KICAgICAgICAgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVl
biA9IGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQ7CiAgICAgICAgIHBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQp
OworCisgICAgICAgIC8vIDcuIE9wdGlvbmFsbHksIGRpc3BsYXkgYSBtZXNzYWdlIGluZGljYXRp
bmcgaG93IHRoZSB1c2VyIGNhbiBleGl0IGRpc3BsYXlpbmcgdGhlIGNvbnRleHQgb2JqZWN0IGZ1
bGxzY3JlZW4uCiAgICAgICAgIHJldHVybjsKICAgICB9IHdoaWxlICgwKTsKLSAgICAKKwogICAg
IG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQoZWxlbWVudCA/IGVsZW1l
bnQgOiBkb2N1bWVudEVsZW1lbnQoKSk7CiAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1l
ci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxT
Y3JlZW4oKQogewotICAgIGlmICghcGFnZSgpIHx8ICFtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAg
IC8vIFRoZSBNb3ppbGxhICJjYW5jZWxGdWxsU2NyZWVuKCkiIEFQSSBiZWhhdmVzIGxpa2UgdGhl
IFczQyAiZnVsbHkgZXhpdCBmdWxsc2NyZWVuIiBiZWhhdmlvciwgd2hpY2gKKyAgICAvLyBpcyBk
ZWZpbmVkIGFzOiAKKyAgICAvLyAiVG8gZnVsbHkgZXhpdCBmdWxsc2NyZWVuIGFjdCBhcyBpZiB0
aGUgZXhpdEZ1bGxzY3JlZW4oKSBtZXRob2Qgd2FzIGludm9rZWQgb24gdGhlIHRvcC1sZXZlbCBi
cm93c2luZworICAgIC8vIGNvbnRleHQncyBkb2N1bWVudCBhbmQgc3Vic2VxdWVudGx5IGVtcHR5
IHRoYXQgZG9jdW1lbnQncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2suIgorICAgIGlmICghdG9w
RG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gVG8gYWNoaWV2ZSB0aGF0IGFpbSwgcmVtb3ZlIGFsbCB0aGUgZWxlbWVudHMgZnJv
bSB0aGUgdG9wIGRvY3VtZW50J3Mgc3RhY2sgZXhjZXB0IGZvciB0aGUgZmlyc3QgYmVmb3JlCisg
ICAgLy8gY2FsbGluZyB3ZWJraXRFeGl0RnVsbHNjcmVlbigpOgorICAgIERlcXVlPFJlZlB0cjxF
bGVtZW50PiA+IHJlcGxhY2VtZW50RnVsbHNjcmVlbkVsZW1lbnRTdGFjazsKKyAgICByZXBsYWNl
bWVudEZ1bGxzY3JlZW5FbGVtZW50U3RhY2sucHJlcGVuZCh0b3BEb2N1bWVudCgpLT53ZWJraXRG
dWxsc2NyZWVuRWxlbWVudCgpKTsKKyAgICB0b3BEb2N1bWVudCgpLT5tX2Z1bGxTY3JlZW5FbGVt
ZW50U3RhY2suc3dhcChyZXBsYWNlbWVudEZ1bGxzY3JlZW5FbGVtZW50U3RhY2spOworCisgICAg
dG9wRG9jdW1lbnQoKS0+d2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBEb2N1bWVu
dDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4oKQoreworICAgIC8vIFRoZSBleGl0RnVsbHNjcmVlbigp
IG1ldGhvZCBtdXN0IHJ1biB0aGVzZSBzdGVwczoKKyAgICAKKyAgICAvLyAxLiBMZXQgZG9jIGJl
IHRoZSBjb250ZXh0IG9iamVjdC4gKGkuZS4gInRoaXMiKQorICAgIERvY3VtZW50KiBkb2MgPSB0
aGlzOworCisgICAgLy8gMi4gSWYgZG9jJ3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIGVt
cHR5LCB0ZXJtaW5hdGUgdGhlc2Ugc3RlcHMuCisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnRT
dGFjay5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwYWdlKCktPmNocm9t
ZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1l
bnQuZ2V0KCkpOworICAgIC8vIDMuIExldCBkZXNjZW5kYW50cyBiZSBhbGwgdGhlIGRvYydzIGRl
c2NlbmRhbnQgYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50cyB3aXRoIGEgbm9uLWVtcHR5IGZ1
bGxzY3JlZW4KKyAgICAvLyBlbGVtZW50IHN0YWNrIChpZiBhbnkpLCBvcmRlcmVkIHNvIHRoYXQg
dGhlIGNoaWxkIG9mIHRoZSBkb2MgaXMgbGFzdCBhbmQgdGhlIGRvY3VtZW50IGZ1cnRoZXN0Cisg
ICAgLy8gYXdheSBmcm9tIHRoZSBkb2MgaXMgZmlyc3QuCisgICAgRGVxdWU8UmVmUHRyPERvY3Vt
ZW50PiA+IGRlc2NlbmRhbnRzOworICAgIGZvciAoRnJhbWUqIGRlc2NlbmRhbnQgPSBmcmFtZSgp
ID8gZnJhbWUoKS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSA6IDA7IGRlc2NlbmRhbnQ7IGRlc2Nl
bmRhbnQgPSBkZXNjZW5kYW50LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlm
IChkZXNjZW5kYW50LT5kb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKQorICAg
ICAgICAgICAgZGVzY2VuZGFudHMucHJlcGVuZChkZXNjZW5kYW50LT5kb2N1bWVudCgpKTsKKyAg
ICB9CisgICAgICAgIAorICAgIC8vIDQuIEZvciBlYWNoIGRlc2NlbmRhbnQgaW4gZGVzY2VuZGFu
dHMsIGVtcHR5IGRlc2NlbmRhbnQncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2ssIGFuZCBxdWV1
ZSBhCisgICAgLy8gdGFzayB0byBmaXJlIGFuIGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ug
d2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUgc2V0IHRvIHRydWUgb24gZGVzY2VuZGFudC4KKyAg
ICBmb3IgKERlcXVlPFJlZlB0cjxEb2N1bWVudD4gPjo6aXRlcmF0b3IgaSA9IGRlc2NlbmRhbnRz
LmJlZ2luKCk7IGkgIT0gZGVzY2VuZGFudHMuZW5kKCk7ICsraSkgeworICAgICAgICAoKmkpLT5j
bGVhckZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKTsKKyAgICAgICAgKCppKS0+dGFza0Z1bGxzY3Jl
ZW5DaGFuZ2VFdmVudCgpOworICAgIH0KKworICAgIC8vIDUuIFdoaWxlIGRvYyBpcyBub3QgbnVs
bCwgcnVuIHRoZXNlIHN1YnN0ZXBzOgorICAgIEVsZW1lbnQqIG5ld1RvcDsKKyAgICB3aGlsZSAo
ZG9jKSB7CisgICAgICAgIC8vIDEuIFBvcCB0aGUgdG9wIGVsZW1lbnQgb2YgZG9jJ3MgZnVsbHNj
cmVlbiBlbGVtZW50IHN0YWNrLgorICAgICAgICBkb2MtPnBvcEZ1bGxzY3JlZW5FbGVtZW50U3Rh
Y2soKTsKKworICAgICAgICAvLyAgICBJZiBkb2MncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sg
aXMgbm9uLWVtcHR5IGFuZCB0aGUgZWxlbWVudCBub3cgYXQgdGhlIHRvcCBpcyBlaXRoZXIKKyAg
ICAgICAgLy8gICAgbm90IGluIGEgZG9jdW1lbnQgb3IgaXRzIG5vZGUgZG9jdW1lbnQgaXMgbm90
IGRvYywgcmVwZWF0IHRoaXMgc3Vic3RlcC4KKyAgICAgICAgbmV3VG9wID0gZG9jLT53ZWJraXRG
dWxsc2NyZWVuRWxlbWVudCgpOworICAgICAgICBpZiAobmV3VG9wICYmICghbmV3VG9wLT5pbkRv
Y3VtZW50KCkgfHwgbmV3VG9wLT5kb2N1bWVudCgpICE9IGRvYykpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAvLyAyLiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1l
ZCBmdWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRlIHNldCB0byB0cnVl
CisgICAgICAgIC8vIG9uIGRvYy4KKyAgICAgICAgZG9jLT50YXNrRnVsbHNjcmVlbkNoYW5nZUV2
ZW50KCk7CisKKyAgICAgICAgLy8gMy4gSWYgZG9jJ3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNr
IGlzIGVtcHR5IGFuZCBkb2MncyBicm93c2luZyBjb250ZXh0IGhhcyBhIGJyb3dzaW5nIGNvbnRl
eHQKKyAgICAgICAgLy8gY29udGFpbmVyLCBzZXQgZG9jIHRvIHRoYXQgYnJvd3NpbmcgY29udGV4
dCBjb250YWluZXIncyBub2RlIGRvY3VtZW50LgorICAgICAgICBpZiAoIW5ld1RvcCAmJiBkb2Mt
Pm93bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgZG9jID0gZG9jLT5vd25lckVsZW1lbnQoKS0+
ZG9jdW1lbnQoKTsKKworICAgICAgICAvLyA0LiBPdGhlcndpc2UsIHNldCBkb2MgdG8gbnVsbC4K
KyAgICAgICAgZG9jID0gMDsKKyAgICB9CisKKyAgICAvLyA2LiBSZXR1cm4sIGFuZCBydW4gdGhl
IHJlbWFpbmluZyBzdGVwcyBhc3luY2hyb25vdXNseS4KKyAgICAvLyA3LiBPcHRpb25hbGx5LCBw
ZXJmb3JtIHNvbWUgYW5pbWF0aW9uLgorCisgICAgLy8gT25seSBleGl0IG91dCBvZiBmdWxsIHNj
cmVlbiB3aW5kb3cgbW9kZSBpZiB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGVsZW1lbnRzIGluIHRo
ZSAKKyAgICAvLyBmdWxsIHNjcmVlbiBzdGFjay4KKyAgICBpZiAoIW5ld1RvcCkgeworICAgICAg
ICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1f
ZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gT3RoZXJ3aXNlLCBub3RpZnkgdGhlIGNocm9tZSBvZiB0aGUgbmV3IGZ1bGwgc2NyZWVuIGVs
ZW1lbnQuCisgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZv
ckVsZW1lbnQobmV3VG9wKTsgICAgICAKK30KKworYm9vbCBEb2N1bWVudDo6d2Via2l0RnVsbHNj
cmVlbkVuYWJsZWQoKSBjb25zdAoreworICAgIC8vIDQuIFRoZSBmdWxsc2NyZWVuRW5hYmxlZCBh
dHRyaWJ1dGUgbXVzdCByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBvYmplY3QgYW5kIGFsbCBh
bmNlc3RvcgorICAgIC8vIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudHMgaGF2ZSB0aGVpciBm
dWxsc2NyZWVuIGVuYWJsZWQgZmxhZyBzZXQsIG9yIGZhbHNlIG90aGVyd2lzZS4KKworICAgIC8v
IFRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0cyBhcmUgaW1wbGllZCB0byBoYXZlIHRoZWlyIGFs
bG93RnVsbFNjcmVlbiBhdHRyaWJ1dGUgc2V0LgorICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXIgPSBvd25lckVsZW1lbnQoKTsKKyAgICBpZiAoIW93bmVyKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKCFvd25lci0+aXNGcmFtZUVsZW1lbnRCYXNl
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXN0YXRpY19jYXN0PEhU
TUxGcmFtZUVsZW1lbnRCYXNlKj4ob3duZXIpLT5hbGxvd0Z1bGxTY3JlZW4oKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlICgob3duZXIgPSBvd25lci0+ZG9jdW1lbnQo
KS0+b3duZXJFbGVtZW50KCkpKTsKKworICAgIHJldHVybiB0cnVlOyAgICAgICAgCiB9CiAKIHZv
aWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIEFTU0VSVChwYWdlKCkgJiYg
cGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKKworICAgIC8vIFByb3Rl
Y3QgYWdhaW5zdCBiZWluZyBjYWxsZWQgYWZ0ZXIgdGhlIGRvY3VtZW50IGhhcyBiZWVuIHJlbW92
ZWQgZnJvbSB0aGUgcGFnZS4KKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQVNTRVJUKHBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSk7CiAKICAg
ICBpZiAobV9mdWxsU2NyZWVuUmVuZGVyZXIpCiAgICAgICAgIG1fZnVsbFNjcmVlblJlbmRlcmVy
LT51bndyYXBSZW5kZXJlcigpOwpAQCAtNTExNSwxNCArNTMwOCwxOSBAQCB2b2lkIERvY3VtZW50
Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQog
ICAgIAogdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50KikKIHsKKyAgICBpZiAoIW1fZnVsbFNjcmVlbkVsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKyAgICAKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2NyZWVuRWxl
bWVudCgpOwogCi0gICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQo
bV9mdWxsU2NyZWVuRWxlbWVudCk7CiAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lci5z
dGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQoRWxlbWVudCopCiB7CisgICAgaWYgKCFtX2Z1bGxTY3JlZW5FbGVtZW50
KQorICAgICAgICByZXR1cm47CisKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5zZXRDb250YWlu
c0Z1bGxTY3JlZW5FbGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhmYWxz
ZSk7CiAgICAgCiAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+d2lsbFN0b3BCZWluZ0Z1bGxzY3Jl
ZW5FbGVtZW50KCk7CkBAIC01MTM1LDcgKzUzMzMsNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCiAgICAgaWYgKG1fZnVsbFNjcmVl
blJlbmRlcmVyKQogICAgICAgICBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+dW53cmFwUmVuZGVyZXIo
KTsKIAotICAgIG1fZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKG1fZnVs
bFNjcmVlbkVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsK
ICAgICBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgCiAgICAgbV9mdWxsU2NyZWVu
Q2hhbmdlRGVsYXlUaW1lci5zdGFydE9uZVNob3QoMCk7CkBAIC01MjAxLDI4ICs1Mzk5LDM0IEBA
IHZvaWQgRG9jdW1lbnQ6OnNldEZ1bGxTY3JlZW5SZW5kZXJlckJhY2tncm91bmRDb2xvcihDb2xv
ciBiYWNrZ3JvdW5kQ29sb3IpCiAgICAgCiB2b2lkIERvY3VtZW50OjpmdWxsU2NyZWVuQ2hhbmdl
RGVsYXlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopCiB7Ci0gICAgd2hpbGUgKCFtX2Z1bGxT
Y3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8
RWxlbWVudD4gZWxlbWVudCA9IG1fZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUudGFr
ZUZpcnN0KCk7Ci0gICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgIGVsZW1lbnQgPSBk
b2N1bWVudEVsZW1lbnQoKTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBjaGFuZ2VRdWV1ZTsK
KyAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLnN3YXAoY2hhbmdlUXVldWUp
OworCisgICAgd2hpbGUgKCFjaGFuZ2VRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRy
PE5vZGU+IG5vZGUgPSBjaGFuZ2VRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYgKCFub2Rl
KQorICAgICAgICAgICAgbm9kZSA9IGRvY3VtZW50RWxlbWVudCgpOwogCiAgICAgICAgIC8vIElm
IHRoZSBlbGVtZW50IHdhcyByZW1vdmVkIGZyb20gb3VyIHRyZWUsIGFsc28gbWVzc2FnZSB0aGUg
ZG9jdW1lbnRFbGVtZW50LgotICAgICAgICBpZiAoIWNvbnRhaW5zKGVsZW1lbnQuZ2V0KCkpKQot
ICAgICAgICAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQoZG9j
dW1lbnRFbGVtZW50KCkpOworICAgICAgICBpZiAoIWNvbnRhaW5zKG5vZGUuZ2V0KCkpKQorICAg
ICAgICAgICAgY2hhbmdlUXVldWUuYXBwZW5kKGRvY3VtZW50RWxlbWVudCgpKTsKICAgICAgICAg
Ci0gICAgICAgIGVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgICAgICBu
b2RlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKICAgICB9CiAKLSAgICB3aGlsZSAoIW1f
ZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0UXVldWUu
dGFrZUZpcnN0KCk7Ci0gICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgIGVsZW1lbnQg
PSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBlcnJvclF1ZXVl
OworICAgIG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5zd2FwKGVycm9yUXVldWUp
OworICAgIAorICAgIHdoaWxlICghZXJyb3JRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVm
UHRyPE5vZGU+IG5vZGUgPSBlcnJvclF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoIW5v
ZGUpCisgICAgICAgICAgICBub2RlID0gZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIAotICAg
ICAgICAvLyBJZiB0aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIG91ciB0cmVlLCBhbHNvIG1l
c3NhZ2UgdGhlIGRvY3VtZW50RWxlbWVudC4KLSAgICAgICAgaWYgKCFjb250YWlucyhlbGVtZW50
LmdldCgpKSkKLSAgICAgICAgICAgIG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5h
cHBlbmQoZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICAvLyBJZiB0aGUgbm9kZSB3YXMgcmVt
b3ZlZCBmcm9tIG91ciB0cmVlLCBhbHNvIG1lc3NhZ2UgdGhlIGRvY3VtZW50RWxlbWVudC4KKyAg
ICAgICAgaWYgKCFjb250YWlucyhub2RlLmdldCgpKSkKKyAgICAgICAgICAgIGVycm9yUXVldWUu
YXBwZW5kKGRvY3VtZW50RWxlbWVudCgpKTsKICAgICAgICAgCi0gICAgICAgIGVsZW1lbnQtPmRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmVy
cm9yRXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmVycm9yRXZlbnQsIHRydWUs
IGZhbHNlKSk7CiAgICAgfQogfQogCkBAIC01MjYzLDYgKzU0NjcsMzQgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sIGZsYWcpCiAgICAgICAgIHNjaGVkdWxlRm9y
Y2VkU3R5bGVSZWNhbGMoKTsKICAgICB9CiB9CisKK3ZvaWQgRG9jdW1lbnQ6OmNsZWFyRnVsbHNj
cmVlbkVsZW1lbnRTdGFjaygpCit7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmNsZWFy
KCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBvcEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKQorewor
ICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2sucmVtb3ZlRmlyc3QoKTsKK30KKwor
dm9pZCBEb2N1bWVudDo6cHVzaEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soRWxlbWVudCogZWxlbWVu
dCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2sucHJlcGVuZChlbGVtZW50KTsKK30K
Kwordm9pZCBEb2N1bWVudDo6dGFza0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCgpCit7CisgICAgTm9k
ZSogdGFyZ2V0ID0gd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICBpZiAoIXRhcmdldCkK
KyAgICAgICAgdGFyZ2V0ID0gbV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKTsKKyAgICBpZiAoIXRh
cmdldCkKKyAgICAgICAgdGFyZ2V0ID0gdGhpczsKKyAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVu
dFRhcmdldFF1ZXVlLmFwcGVuZCh0YXJnZXQpOworfQogI2VuZGlmCiAKIHZvaWQgRG9jdW1lbnQ6
OmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAx
ZTMwNWQ0NjBiYWQ2NWViOTdjYzBiMDIxNGI5YmYyYjc4ODNkNjIxLi5jMWY3MGM2ZGI3MjlmYzIy
ZGVlY2YyY2Q5NWQ0NWU2NzFkMTNkZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTA3OCw2
ICsxMDc4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUZ1bGxTY3JlZW5FbGVtZW50T2ZT
dWJ0cmVlKE5vZGUqLCBib29sIGFtb25nQ2hpbGRyZW5Pbmx5ID0gZmFsc2UpOwogICAgIGJvb2wg
aXNBbmltYXRpbmdGdWxsU2NyZWVuKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbmltYXRpbmdGdWxs
U2NyZWVuKGJvb2wpOworCisgICAgLy8gVzNDIEFQSQorICAgIGJvb2wgd2Via2l0RnVsbHNjcmVl
bkVuYWJsZWQoKSBjb25zdDsKKyAgICBFbGVtZW50KiB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuICFtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpID8gbV9m
dWxsU2NyZWVuRWxlbWVudFN0YWNrLmZpcnN0KCkuZ2V0KCkgOiAwOyB9CisgICAgdm9pZCB3ZWJr
aXRFeGl0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAKICAgICAvLyBVc2VkIHRvIGFsbG93IGVsZW1l
bnQgdGhhdCBsb2FkcyBkYXRhIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBhIEZyYW1lTG9hZGVyIHRv
IGRlbGF5IHRoZSAnbG9hZCcgZXZlbnQuCkBAIC0xMTg4LDYgKzExOTMsMTMgQEAgcHJpdmF0ZToK
IAogICAgIEhUTUxDb2xsZWN0aW9uKiBjYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsK
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICB2b2lkIGNsZWFyRnVsbHNjcmVlbkVs
ZW1lbnRTdGFjaygpOworICAgIHZvaWQgcG9wRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpOworICAg
IHZvaWQgcHVzaEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soRWxlbWVudCopOworICAgIHZvaWQgdGFz
a0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCgpOworI2VuZGlmCisKICAgICBpbnQgbV9ndWFyZFJlZkNv
dW50OwogCiAgICAgT3duUHRyPENTU1N0eWxlU2VsZWN0b3I+IG1fc3R5bGVTZWxlY3RvcjsKQEAg
LTE0MjAsMTAgKzE0MzIsMTEgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAgICAgYm9vbCBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuOwogICAgIFJlZlB0cjxFbGVt
ZW50PiBtX2Z1bGxTY3JlZW5FbGVtZW50OworICAgIERlcXVlPFJlZlB0cjxFbGVtZW50PiA+IG1f
ZnVsbFNjcmVlbkVsZW1lbnRTdGFjazsKICAgICBSZW5kZXJGdWxsU2NyZWVuKiBtX2Z1bGxTY3Jl
ZW5SZW5kZXJlcjsKICAgICBUaW1lcjxEb2N1bWVudD4gbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlU
aW1lcjsKLSAgICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVu
dFRhcmdldFF1ZXVlOwotICAgIERlcXVlPFJlZlB0cjxFbGVtZW50PiA+IG1fZnVsbFNjcmVlbkVy
cm9yRXZlbnRUYXJnZXRRdWV1ZTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBtX2Z1bGxTY3Jl
ZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlOworICAgIERlcXVlPFJlZlB0cjxOb2RlPiA+IG1fZnVs
bFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZTsKICAgICBib29sIG1faXNBbmltYXRpbmdGdWxs
U2NyZWVuOwogICAgIExheW91dFJlY3QgbV9zYXZlZFBsYWNlaG9sZGVyRnJhbWVSZWN0OwogICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmlkbAppbmRleCBiM2UwYWEzYTBiYTI5Mjg4ODQ0MmZlNTUwYzRkZDE1Mzlk
ZDdkMjZlLi40ZTRiN2UzYmZlMWIxZmM5Y2RiMzI0ZmU5ZDhiNDcxNWIxZGViYzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwKQEAgLTI0MSwxMCArMjQxLDE2IEBAIG1vZHVsZSBjb3JlIHsKICAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorICAgICAgICAvLyBNb3ppbGxh
IHZlcnNpb24KICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVd
IGJvb2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W1Y4RW5hYmxlZEF0UnVudGltZV0gYm9vbGVhbiB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1
dEFsbG93ZWQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1l
XSBFbGVtZW50IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudDsKICAgICAgICAgW1Y4RW5h
YmxlZEF0UnVudGltZV0gdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisKKyAgICAgICAg
Ly8gVzNDIHZlcnNpb24KKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWVdIGJvb2xlYW4gd2Via2l0RnVsbHNjcmVlbkVuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBFbGVtZW50IHdlYmtpdEZ1bGxzY3JlZW5F
bGVtZW50OworICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lXSB2b2lkIHdlYmtpdEV4aXRGdWxs
c2NyZWVuKCk7CiAjZW5kaWYKIAogICAgICAgICBXZWJLaXROYW1lZEZsb3cgd2Via2l0R2V0Rmxv
d0J5TmFtZShpbiBET01TdHJpbmcgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzky
NTc0OWI4ZjNmMWFjYTNmMDU1YTNiMTNkMWQxNDVjMjQ2NGNlMy4uYTYwNDUzZGRhYTE2MDVlODVl
NTc4YzMxNTE2N2Y5YmRiOTcwZTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTg1OCw5
ICsxODU4LDE0IEBAIGJvb2wgRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY2hpbGRDb250ZXh0CiAjZW5kaWYKICAgICAKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCit2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2Ny
ZWVuKCkKK3sKKyAgICBkb2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhp
cywgQUxMT1dfS0VZQk9BUkRfSU5QVVQsIERvY3VtZW50OjpFbmZvcmNlSUZyYW1lQWxsb3dGdWxT
Y3JlZW5SZXF1aXJlbWVudCk7Cit9CisKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW4odW5zaWduZWQgc2hvcnQgZmxhZ3MpCiB7Ci0gICAgZG9jdW1lbnQoKS0+cmVxdWVzdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KHRoaXMsIGZsYWdzLCBEb2N1bWVudDo6RW5mb3JjZUlGcmFtZUFs
bG93RnVsU2NyZWVuUmVxdWlyZW1lbnQpOworICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2Ny
ZWVuRm9yRWxlbWVudCh0aGlzLCAoZmxhZ3MgfCBMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUKSwgRG9j
dW1lbnQ6OkVuZm9yY2VJRnJhbWVBbGxvd0Z1bFNjcmVlblJlcXVpcmVtZW50KTsKIH0KIAogYm9v
bCBFbGVtZW50Ojpjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCmluZGV4IDhjODI1MDczZjQwOGRhZWMxZTM1OTk4NDU2MmFiNDUwNWIxMTllYTcuLmU3YTNm
MWIwOWRlYWI1NmEyMmRkMjRlMmVlZDQxNzhmNGM1YTdiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApA
QCAtMzc2LDEzICszNzYsMTcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBlbnVtIHsKLSAgICAgICAgQUxMT1dfS0VZQk9BUkRfSU5QVVQgPSAxCisgICAg
ICAgIEFMTE9XX0tFWUJPQVJEX0lOUFVUID0gMSA8PCAwLAorICAgICAgICBMRUdBQ1lfTU9aSUxM
QV9SRVFVRVNUID0gMSA8PCAxLAogICAgIH07CiAgICAgCiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbih1bnNpZ25lZCBzaG9ydCBmbGFncyk7CiAgICAgdmlydHVhbCBib29sIGNvbnRh
aW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoYm9vbCk7
CisKKyAgICAvLyBXM0MgQVBJCisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOwog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDg3MjViY2JjMTljYmMyYjgxYTdiYmU2MWQ4MDg5
ZWY5ODU5OTY4MDYuLjk1NWJkNDcwYWE2ODY3MzU3MTViZjQ2MDRiOGRiNTZjMGJhNDA3MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTEyOSw4ICsxMjksMTIgQEAgbW9kdWxlIGNvcmUgewog
I2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJCisgICAgICAgIC8vIE1vemlsbGEgdmVyc2lvbgogICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBBTExPV19LRVlCT0FSRF9JTlBVVCA9IDE7CiAgICAgICAgIFtWOEVuYWJs
ZWRBdFJ1bnRpbWVdIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpOworCisgICAgICAgIC8vIFcz
QyB2ZXJzaW9uCisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIHZvaWQgd2Via2l0UmVxdWVz
dEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCiAgICAgICAgIC8vIENTUyBSZWdpb25zIEFQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDljZmU4YjM0ODhhNzVkNTY4ZGE4OTA3
NDM3MWIzYjk0MTA0YmIwYTYuLjM4ODhiNGU1ZWE1MDk2ZGQ4MzVlZDMxMDA5NGFiODk0YTg2NjBl
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTYyODYsMTQgKzYyODYs
OSBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogLSAoQk9PTClfc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudDoo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudCopZWxlbWVudCB3aXRoS2V5Ym9hcmQ6KEJPT0wpd2l0aEtl
eWJvYXJkCiB7Ci0gICAgaWYgKHdpdGhLZXlib2FyZCkKLSAgICAgICAgcmV0dXJuIE5POwotCiAg
ICAgaWYgKCFbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIGZ1bGxTY3JlZW5F
bmFibGVkXSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgLy8gRklYTUU6IElmIHRoZSBlbGVt
ZW50IGlzIGluIGFuIElGcmFtZSwgd2Ugc2hvdWxkIGVuc3VyZSBpdCBoYXMgCi0gICAgLy8gYW4g
QWxsb3dzRnVsbFNjcmVlbj1ZRVMgYXR0cmlidXRlIGJlZm9yZSBhbGxvd2luZyBmdWxsc2NyZWVu
IGFjY2Vzcy4KICAgICByZXR1cm4gWUVTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMTdjMDcwYjZk
ZGIwOTMzNGFjZjZkNTRlZTJjYTRjYWQwNTZlYTA0MC4uMjFmZTljZGFlNGZkMjNkMDRhZTBjMTgw
NjkxMGU3OGY1NjY4ODFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcApAQCAtOTEsMTAgKzkxLDcgQEAgdm9pZCBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgYW5p
bWF0aW5nKQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNj
cmVlbihib29sIHdpdGhLZXlib2FyZCwgYm9vbCYgc3VwcG9ydHMpCiB7Ci0gICAgaWYgKHdpdGhL
ZXlib2FyZCkKLSAgICAgICAgc3VwcG9ydHMgPSBmYWxzZTsKLSAgICBlbHNlCi0gICAgICAgIHN1
cHBvcnRzID0gdHJ1ZTsKKyAgICBzdXBwb3J0cyA9IHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVs
bFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKaW5kZXggMjkzYWU1ZmJjZTE2NTAxNzcw
YjQ4NTViNjlhYjM5OTJhM2U1NTY3Yy4uMGVhODA0M2EzMGQyMjBiNWVlMGI1NTI2ZGFlYTY3MGEw
ZmM2ODA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVu
L1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCkBAIC05OSw4ICs5OSw2IEBAIHZv
aWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29y
ZTo6RWxlbWVudCogZWxlbWVudCkKIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNT
RVJUKGVsZW1lbnQpOwotICAgIEFTU0VSVChtX2VsZW1lbnQgPT0gZWxlbWVudCk7CiAgICAgbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKS5leGl0RnVsbFNjcmVlbkZvckVs
ZW1lbnQobV9wYWdlLmdldCgpLCBlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlEZWxlZ2F0ZS5tbQppbmRleCA4N2VlY2U0NDFhOTE4ZDg5MTlhZjdjMzNiNDE2NjBkMDAxYmY0
ODI0Li5lODU1NzkxZGIzZjcxYmJhYjNjZmVmMjM4MTA4MTgzZTZhYjZlOTEwIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtMjUyLDE4ICsyNTIsMjggQEAgRHVtcFJl
bmRlclRyZWVEcmFnZ2luZ0luZm8gKmRyYWdnaW5nSW5mbyA9IG5pbDsKICAgICByZXR1cm4gWUVT
OwogfQogCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQgbGlzdGVuZXI6KE5TT2JqZWN0PFdlYktp
dEZ1bGxTY3JlZW5MaXN0ZW5lcj4qKWxpc3RlbmVyCistICh2b2lkKWVudGVyRnVsbFNjcmVlbldp
dGhMaXN0ZW5lcjooTlNPYmplY3Q8V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyPiopbGlzdGVuZXIK
IHsKICAgICBbbGlzdGVuZXIgd2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbl07CiAgICAgW2xpc3Rl
bmVyIHdlYmtpdERpZEVudGVyRnVsbFNjcmVlbl07CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXdlYlZpZXcgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50OihET01FbGVtZW50KillbGVt
ZW50IGxpc3RlbmVyOihOU09iamVjdDxXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI+KilsaXN0ZW5l
cgorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBlbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50OihET01FbGVtZW50KillbGVtZW50IGxpc3RlbmVyOihOU09iamVjdDxXZWJLaXRGdWxs
U2NyZWVuTGlzdGVuZXI+KilsaXN0ZW5lcgoreworICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpA
c2VsZWN0b3IoZW50ZXJGdWxsU2NyZWVuV2l0aExpc3RlbmVyOikgd2l0aE9iamVjdDpsaXN0ZW5l
ciBhZnRlckRlbGF5OjBdOworfQorCistICh2b2lkKWV4aXRGdWxsU2NyZWVuV2l0aExpc3RlbmVy
OihOU09iamVjdDxXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI+KilsaXN0ZW5lcgogewogICAgIFts
aXN0ZW5lciB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5dOwogICAgIFtsaXN0ZW5lciB3ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbl07CiB9CiAKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZp
ZXcgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50IGxpc3RlbmVy
OihOU09iamVjdDxXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI+KilsaXN0ZW5lcgoreworICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZXhpdEZ1bGxTY3JlZW5XaXRoTGlzdGVuZXI6
KSB3aXRoT2JqZWN0Omxpc3RlbmVyIGFmdGVyRGVsYXk6MF07Cit9CisKIC0gKEJPT0wpd2ViVmll
dzooV2ViVmlldyAqKXdlYlZpZXcgZGlkUHJlc3NNaXNzaW5nUGx1Z2luQnV0dG9uOihET01FbGVt
ZW50ICopZWxlbWVudAogewogICAgIHByaW50ZigiTUlTU0lORyBQTFVHSU4gQlVUVE9OIFBSRVNT
RURcbiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGJlOGJkMzU3NGJkNjEwZGJmMTExNDQ4NDM2OTdlY2U0YWM3ZDBiM2Qu
LjVkOGFkNTNjMWRmMTRiYmY2NmQ4NzczM2Y2OWRkZDFiNzVjZDNiYWEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IFczQyBGdWxsIFNjcmVlbiBBUEkgcHJvcG9zYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLWVsZW1lbnQtc3RhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sOgorICAgICAgICAq
IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZW1vdmVkLmh0bWw6CisgICAgICAgICog
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanM6CisKIDIwMTItMDMt
MDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE5VTEwgcmVuZGVy
ZXIgcG9zc2libGUgaW4gV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0Q2FuUmVjZWl2ZURy
b3BwZWRGaWxlcygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLWVsZW1lbnQtc3RhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTA2Y2Ux
M2IyZGRlYmU5OWRjM2MzMGYyZTllNDE2Y2ZmYjJhNjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE1IEBACitUZXN0IGZvciBXM0MgRnVsbHNjcmVlbiBlbGVtZW50IHN0YWNr
LgorCitUbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1bGwgc2NyZWVuIiBidXR0b24g
LSB0aGUgcGFnZSBzaG91bGQgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4KKworR28gZnVsbCBzY3Jl
ZW4gKG9uZSkKK0dvIGZ1bGwgc2NyZWVuICh0d28pCitFeGl0IGZ1bGwgc2NyZWVuICh0d28pCitF
VkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEZ1
bGxzY3JlZW5FbGVtZW50LmlkID09ICdvbmUnKSBPSworRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNo
YW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudC5pZCA9PSAn
dHdvJykgT0sKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1l
bnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQuaWQgPT0gJ29uZScpIE9LCitFTkQgT0YgVEVTVAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQt
c3RhY2suaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1z
dGFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NzcwZWYwZDRlNjIxZTNmNzU2ODNiM2EzNTY2MGU3YmJl
NDhjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLWVsZW1lbnQtc3RhY2suaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIG9uZTsKKyAgICB2YXIgdHdvOworCisgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgb25lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ29uZScpOworICAgICAgICB0d28gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJyk7
CisKKyAgICAgICAgdmFyIGNhbGxiYWNrOworICAgICAgICB2YXIgZnVsbHNjcmVlbkNoYW5nZWQg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKGV2ZW50KQorICAgICAgICB9OworICAgICAgICB3YWl0Rm9yRXZlbnQo
ZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOwor
CisgICAgICAgIHZhciBvbmVFbnRlcmVkRnVsbHNjcmVlbiA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudC5pZCIs
ICJvbmUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gdHdvRW50ZXJlZEZ1bGxzY3JlZW47Cisg
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
ICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCkgeyB0d28ud2Via2l0UmVxdWVzdEZ1bGxzY3Jl
ZW4oKTsgfSk7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIHR3b0VudGVyZWRGdWxsc2NyZWVu
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtp
dEZ1bGxzY3JlZW5FbGVtZW50LmlkIiwgInR3byIpOworICAgICAgICAgICAgY2FsbGJhY2sgPSB0
d29FeGl0ZWRGdWxsc2NyZWVuOworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigp
OworICAgICAgICB9OworCisgICAgICAgIHZhciB0d29FeGl0ZWRGdWxsc2NyZWVuID0gZnVuY3Rp
b24oKSB7IAorICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRGdWxsc2Ny
ZWVuRWxlbWVudC5pZCIsICJvbmUiKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAg
fTsKKworICAgICAgICBjYWxsYmFjayA9IG9uZUVudGVyZWRGdWxsc2NyZWVuOworICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgcnVuV2l0aEtleURv
d24oZnVuY3Rpb24oKSB7IG9uZS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOyB9KTsKKyAgICB9
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAg
PHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cDovL2R2Y3MudzMub3JnL2hnL2Z1bGxzY3JlZW4vcmF3
LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwjZnVsbHNjcmVlbi1lbGVtZW50LXN0YWNrIj5XM0MgRnVs
bHNjcmVlbiBlbGVtZW50IHN0YWNrPC9hPi48L3A+CisgICAgPHA+VG8gdGVzdCBtYW51YWxseSwg
Y2xpY2sgdGhlICJHbyBmdWxsIHNjcmVlbiIgYnV0dG9uIC0gdGhlIHBhZ2Ugc2hvdWxkIGVudGVy
IGZ1bGwgc2NyZWVuIG1vZGUuPC9wPgorICAgIDxkaXY+CisgICAgICAgIDxidXR0b24gb25jbGlj
az0ib25lLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkiPkdvIGZ1bGwgc2NyZWVuIChvbmUpPC9i
dXR0b24+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD1vbmU+CisgICAgICAgIDxidXR0b24gb25j
bGljaz0idHdvLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkiPkdvIGZ1bGwgc2NyZWVuICh0d28p
PC9idXR0b24+CisgICAgICAgIDxkaXYgaWQ9dHdvPgorICAgICAgICAgICAgPGJ1dHRvbiBvbmNs
aWNrPSJkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpIj5FeGl0IGZ1bGwgc2NyZWVuICh0
d28pPC9idXR0b24+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tZW5hYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMmMwZDJkNDE1
NmI5NWZiNjVlOWVjYzc5MzE2MTE2NGFjNThiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNSBAQAorVGhpcyB0ZXN0cyB0aGUgZnVsbHNjcmVlbkVuYWJsZWQgcHJvcGVydHkgbGFpZCBv
dXQgaW4gc2VjdGlvbiA0IG9mIHRoZSBXM0MgRnVsbCBTY3JlZW4gQVBJCitFWFBFQ1RFRCAoaWZy
YW1lLmNvbnRlbnREb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCA9PSAndHJ1ZScpIE9L
CitFWFBFQ1RFRCAoaWZyYW1lMi5jb250ZW50RG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJs
ZWQgPT0gJ2ZhbHNlJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQxMGJlNTI1NTFmNGY4
ZWZhNmI5MjQ4OTE0ZjE2ODRkNjRjOTkyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxi
b2R5PgorPGRpdj5UaGlzIHRlc3RzIHRoZSA8Y29kZT5mdWxsc2NyZWVuRW5hYmxlZDwvY29kZT4g
cHJvcGVydHkgbGFpZCBvdXQgaW4gc2VjdGlvbiA0IG9mIHRoZSBXM0MgCis8YSBocmVmPSJodHRw
Oi8vZHZjcy53My5vcmcvaGcvZnVsbHNjcmVlbi9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCI+
RnVsbCBTY3JlZW4gQVBJPC9hPjwvZGl2PgorPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpKTsK
KyAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCd3ZWJraXRhbGxvd2Z1bGxzY3JlZW4nLCAndHJ1ZScp
OworICAgIHZhciBpZnJhbWUyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpKTsKKyAgICB0ZXN0RXhwZWN0ZWQoJ2lm
cmFtZS5jb250ZW50RG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQnLCB0cnVlKTsKKyAg
ICB0ZXN0RXhwZWN0ZWQoJ2lmcmFtZTIuY29udGVudERvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5F
bmFibGVkJywgZmFsc2UpOworICAgIGVuZFRlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRt
bAppbmRleCA3Nzk4MzJhN2YyMzhiZjNlNmM0MWQyNzAwN2JlNDIzY2VjOTZkYzE0Li4wZTc4MTli
OWFkNTJmODY0Zjg4ZDMyOWUxMmJkN2Q2NmFkOTQxOTM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbApAQCAt
OSw3ICs5LDEwIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgd2FpdEZvckV2ZW50KGRvY3VtZW50
LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBsb2dS
ZXN1bHQoIkVudGVyZWQgZnVsbCBzY3JlZW4uIiwgZmFsc2UpOyAKKyAgICAgICAgICAgZW5kVGVz
dCgpOwogICAgICAgICB9KTsKKyAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1
ZSk7CiAgICAgICAgIHdhaXRGb3JFdmVudEFuZEVuZChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3Jl
ZW5lcnJvcicpOwogICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQud2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW4oKTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVtb3ZlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlbW92ZWQuaHRtbAppbmRleCA5MjY0MjE5YzI0NmI2ZmE4
YmZmM2FjYTAwNmI2NTc3OWEyNjVjZThiLi4yMzMwZmZiZTkxNDcxY2FmOWZjZGU2YjIyOGYzMjk4
N2QzYzlkZjQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXJlcXVlc3QtcmVtb3ZlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tcmVxdWVzdC1yZW1vdmVkLmh0bWwKQEAgLTEyLDYgKzEyLDkgQEAgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKICAgICAgICAgY29uc29sZVdyaXRlKCJTVUNDRUVEIC0gZGlkIG5vdCBlbnRlciBm
dWxsIHNjcmVlbiEiKTsKICAgICB9KTsKIAorICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1
ZSk7CisKICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAg
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRpdik7CiAgICAgY29uc29sZVdy
aXRlKCJBZGRlZCBjaGlsZCBlbGVtZW50LiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODQwMzBkZWZjOGEwNTUzODZkNGI2NGZhMmU5Mjk0ZmViMGE3NzdmNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25z
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoZSByZXN0cmljdGlv
bnMgdG8gZW50ZXJpbmcgZnVsbCBzY3JlZW4gbW9kZSBsYWlkIG91dCBpbiBzZWN0aW9uIDQuMSBv
ZiB0aGUgVzNDIEZ1bGwgU2NyZWVuIEFQSQorIlRoZSBjb250ZXh0IG9iamVjdCBpcyBub3QgaW4g
YSBkb2N1bWVudC4iCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCisiVGhlIGNvbnRleHQg
b2JqZWN0J3Mgbm9kZSBkb2N1bWVudCwgb3IgYW4gYW5jZXN0b3IgYnJvd3NpbmcgY29udGV4dCdz
IGRvY3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIGZ1bGxzY3JlZW4gZW5hYmxlZCBmbGFnIHNldC4i
CitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCisiVGhlIGNvbnRleHQgb2JqZWN0J3Mgbm9k
ZSBkb2N1bWVudCBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sgaXMgbm90IGVtcHR5IGFuZCBpdHMg
dG9wIGVsZW1lbnQgaXMgbm90IGFuIGFuY2VzdG9yIG9mIHRoZSBjb250ZXh0IG9iamVjdC4iCitF
VkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmVycm9y
KQorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKKyJBIGRlc2NlbmRhbnQgYnJvd3Npbmcg
Y29udGV4dCdzIGRvY3VtZW50IGhhcyBhIG5vbi1lbXB0eSBmdWxsc2NyZWVuIGVsZW1lbnQgc3Rh
Y2suIgorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VWRU5UKHdlYmtpdGZ1bGxzY3Jl
ZW5lcnJvcikKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCisiVGhpcyBhbGdvcml0aG0g
aXMgbm90IGFsbG93ZWQgdG8gc2hvdyBhIHBvcC11cC4iCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVu
ZXJyb3IpCitFTkQgT0YgVEVTVAorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkyNGIwMzU0ODkx
YjAzNjM5MDA3MTRhZWZmZDUwYWJjNTA5NDJjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0bWwKQEAgLTAsMCArMSw2
NyBAQAorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxkaXY+VGhpcyB0ZXN0cyB0aGUgcmVz
dHJpY3Rpb25zIHRvIGVudGVyaW5nIGZ1bGwgc2NyZWVuIG1vZGUgbGFpZCBvdXQgaW4gc2VjdGlv
biA0LjEgb2YgdGhlIFczQyAKKzxhIGhyZWY9Imh0dHA6Ly9kdmNzLnczLm9yZy9oZy9mdWxsc2Ny
ZWVuL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sIj5GdWxsIFNjcmVlbiBBUEk8L2E+PC9kaXY+
Cis8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMgbm90IGVuYWJs
ZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUud2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGxvZ1Jlc3VsdChmYWxzZSwgIkVs
ZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVuZGVmaW5lZCIpOwor
ICAgICAgICBlbmRUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHJ1blRlc3QgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnIlRoZSBjb250ZXh0IG9iamVj
dCBpcyBub3QgaW4gYSBkb2N1bWVudC4iJyk7CisgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGRv
Y3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJywgc3RlcDIpOworICAgICAgICAgICAgcnVu
V2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOwor
ICAgICAgICB9OworCisgICAgICAgIHZhciBzdGVwMiA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCciVGhlIGNvbnRleHQgb2JqZWN0XCdzIG5vZGUgZG9jdW1lbnQsIG9y
IGFuIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHRcJ3MgZG9jdW1lbnQgZG9lcyBub3QgaGF2ZSB0
aGUgZnVsbHNjcmVlbiBlbmFibGVkIGZsYWcgc2V0LiInKQorICAgICAgICAgICAgdmFyIGlmcmFt
ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpZnJhbWUnKSk7CisgICAgICAgICAgICB2YXIgZGl2ID0gaWZyYW1lLmNvbnRlbnRE
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lLmNvbnRlbnREb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2Uo
aWZyYW1lLmNvbnRlbnREb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5lcnJvcicsIHN0ZXAzKTsK
KyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2LndlYmtpdFJlcXVlc3RG
dWxsc2NyZWVuKCl9KTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgc3RlcDMgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnIlRoZSBjb250ZXh0IG9iamVjdFwncyBu
b2RlIGRvY3VtZW50IGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjayBpcyBub3QgZW1wdHkgYW5kIGl0
cyB0b3AgZWxlbWVudCBpcyBub3QgYW4gYW5jZXN0b3Igb2YgdGhlIGNvbnRleHQgb2JqZWN0LiIn
KTsKKyAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICAgICAgdmFyIGRp
djIgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JykpOworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwg
J3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB3
YWl0Rm9yRXZlbnRPbmNlKGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJywgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBzdGVwNCk7CisgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsgCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYyLndlYmtpdFJlcXVlc3RGdWxs
c2NyZWVuKCl9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcnVuV2l0aEtleURvd24o
ZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAgICB9Owor
CisgICAgICAgIHZhciBzdGVwNCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29uc29sZVdy
aXRlKCciQSBkZXNjZW5kYW50IGJyb3dzaW5nIGNvbnRleHRcJ3MgZG9jdW1lbnQgaGFzIGEgbm9u
LWVtcHR5IGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4iJyk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lmcmFtZScpKTsKKyAgICAgICAgICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3dl
YmtpdGFsbG93ZnVsbHNjcmVlbicsICd0cnVlJyk7CisgICAgICAgICAgICB2YXIgZGl2ID0gaWZy
YW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lLmNv
bnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgICAgICB2YXIgZGl2
MiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKSk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGlmcmFtZS5jb250
ZW50RG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5l
cnJvcicsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2Uo
aWZyYW1lLmNvbnRlbnREb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBzdGVwNSk7
CisgICAgICAgICAgICAgICAgICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQud2Via2l0RXhpdEZ1
bGxzY3JlZW4oKTsgCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcnVuV2l0
aEtleURvd24oZnVuY3Rpb24oKXtkaXYyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYu
d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAgICB9OworCisgICAgICAgIHZhciBz
dGVwNSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCciVGhpcyBhbGdv
cml0aG0gaXMgbm90IGFsbG93ZWQgdG8gc2hvdyBhIHBvcC11cC4iJyk7CisgICAgICAgICAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoZG9jdW1l
bnQsICd3ZWJraXRmdWxsc2NyZWVuZXJyb3InLCBlbmRUZXN0KTsKKyAgICAgICAgICAgIGRpdi53
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOworICAgICAgICB9OworCisgICAgICAgIGlmICh0eXBl
b2YobGF5b3V0VGVzdENvbnRyb2xsZXIpICE9ICd1bmRlZmluZWQnKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgfQor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKaW5k
ZXggNWU1YmIxYWY3YTc4MmFjZmVjOTI1YzZkMjhiN2VmOGEyMjI0Mzc0OS4uODAxYjViYTllM2E2
MTJiYWYzNjczYzZkYTU3MThjMzU4NWJhM2Y5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tdGVzdC5qcwpAQCAtOTgsMTAgKzk4LDE4IEBAIGZ1bmN0aW9uIHdhaXRGb3JF
dmVudEFuZEVuZChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcpCiAgICAgd2FpdEZvckV2
ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKIH0KIAotZnVuY3Rpb24g
d2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCitmdW5jdGlvbiB3
YWl0Rm9yRXZlbnRPbmNlKGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCit7CisgICAg
d2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQsIHRydWUpCit9CisK
K2Z1bmN0aW9uIHdhaXRGb3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0LCBv
bmNlKQogewogICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQogICAgIHsKKyAgICAg
ICAgaWYgKG9uY2UpCisgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCBfZXZlbnRDYWxsYmFjayk7CisKICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgi
ICsgZXZlbnROYW1lICsgIikiKTsKIAogICAgICAgICBpZiAoZnVuYykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131380</attachid>
            <date>2012-03-12 12:30:35 -0700</date>
            <delta_ts>2012-03-12 22:39:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80660-20120312123034.patch</filename>
            <type>text/plain</type>
            <size>43576</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU4Mjk5NDhhZGI2YjA4
YzE1Yzk3ZTNlZmM3ZTIzMGVkNDhmNzk4Ni4uZmY3ODAxYzM0ODliYzM0ZjIzZjFmZTY2NDQxNTNl
ZGIwNGQzYjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTAzLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwg
U2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0czogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0
bWwKKyAgICAgICAgICAgICAgIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCisg
ICAgICAgICAgICAgICBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlbW92ZWRMYXN0UmVmKTogQ2xlYXIgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVlbik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VE
ZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsZWFyRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cG9wRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHVzaEZ1bGxz
Y3JlZW5FbGVtZW50U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRhc2tGdWxs
c2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKworICAgICAgICBBZGQgbmV3IFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMgZnVuY3Rpb25zIGZvciB0aGUgYWRkZWQgRG9jdW1lbnQgYW5k
IEVsZW1lbnQgZnVuY3Rpb25zLgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoUnVudGltZUVuYWJsZWRGZWF0dXJlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRW5h
YmxlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVl
bkVuYWJsZWQpOgorCisKIDIwMTItMDMtMDggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVc2UgYW4gZXhwbGljaXQgYXR0cmlidXRlIHRvIHNpZ25hbCB0
aGF0IGEgY29udGV4dCBwcmVmZXJzIHRvIHVzZSBhIGRpc2NyZXRlIEdQVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDQ4ZjY0YmI0OWVkODA4ZDM5MDllZThmMDE5NjY5YmYzZGU2ZDIwMGIuLjYxYmUwZDRi
MzM0MGUzNThhNDU1N2FjNTUyY2JmNzU1ZTkwMDgyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNyBAQAogMjAxMi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAorICAgICAgICBTdXBwb3J0IFczQyBGdWxsIFNjcmVlbiBBUEkgcHJvcG9zYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgZnVsbCBzY3JlZW4g
ZWxlbWVudHMgdG8gYWNjZXNzIHRoZSBrZXlib2FyZC4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVu
dDpXZWJDb3JlOjp3aXRoS2V5Ym9hcmQ6XSk6CisKKzIwMTItMDMtMDggIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCBTbm93IExlb3BhcmQgYnVp
bGQgZml4LgogCiAgICAgICAgIE9uIExlb3BhcmQgYW5kIFNub3cgTGVvcGFyZCwgcHJvdmlkZSBh
biBpbXBsZW1lbnRhdGlvbiBmb3IgLVtOU1dpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOl0uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggN2JjYWNmYTAwMzMyZDk0M2M3NGYzYTRmZDBmYzAyNmYxZWYyZTdhYS4uYWEx
NjFhYTVhMjRhNWM2ODU5YTc0YWRlOTI3OWY5NTQ0MjMyMGZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE5IEBACiAyMDEyLTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwgU2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBmdWxsIHNjcmVlbiBl
bGVtZW50cyB0byBhY2Nlc3MgdGhlIGtleWJvYXJkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorCisyMDEy
LTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2
aWV3ZWQgU25vdyBMZW9wYXJkIGJ1aWxkIGZpeC4KIAogICAgICAgICBPbiBMZW9wYXJkIGFuZCBT
bm93IExlb3BhcmQsIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gZm9yIC1bTlNXaW5kb3cgY29u
dmVydFJlY3RUb1NjcmVlbjpdLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCA0NTNiMTIxNDEyYWU3YzU4
YTBmZjU1Yjg2ODQwNmQ5MmM3YTIwMzJhLi5mMDQ5OGM0YzVmMzg1ZmI4NWEyNjY1MjgwNmZiOTI3
ZjdjYjcyMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgd2Via2l0SURCVHJhbnNhY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNJ
bmRleGVkREJFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8g
TW96aWxsYSB2ZXJzaW9uCiAgICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJs
ZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQg
c2V0V2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0K
QEAgLTc4LDYgKzc5LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2Ny
ZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJ
RW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGlj
IGJvb2wgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOyB9CisKKyAgICAvLyBXM0MgdmVyc2lvbgorICAgIHN0YXRpYyBib29sIHdl
YmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVu
YWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQo
KSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Vi
a2l0RXhpdEZ1bGxzY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxl
ZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuRW5hYmxlZCgpIHsg
cmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkxZTJiZGJmODNjZDM1ZTEx
YWI0OTBmOTdmZGNkY2Y5NWM2ZmVlNjguLmUzMzgwMTRlZTM5MjFjMWY0ZjEyYWMwMjE5MWZlZjli
NjBjYTIwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjA3LDYgKzYwNyw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnQg
PSAwOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgbV9mdWxsU2NyZWVuRWxl
bWVudCA9IDA7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVhcigpOwogI2Vu
ZGlmCiAKICAgICAgICAgLy8gcmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJl
Z2lzdGVyIElEcywKQEAgLTUwNTEsNDMgKzUwNTIsMjI4IEBAIGJvb2wgRG9jdW1lbnQ6OmZ1bGxT
Y3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAKIHZvaWQg
RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1
bnNpZ25lZCBzaG9ydCBmbGFncywgRnVsbFNjcmVlbkNoZWNrVHlwZSBjaGVja1R5cGUpCiB7Ci0g
ICAgZG8gewotICAgICAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKQotICAgICAgICAgICAgYnJlYWs7CisgICAgLy8gVGhlIE1vemlsbGEg
RnVsbCBTY3JlZW4gQVBJIDxodHRwczovL3dpa2kubW96aWxsYS5vcmcvR2Vja286RnVsbFNjcmVl
bkFQST4gaGFzIGRpZmZlcmVudCByZXF1aXJlbWVudHMKKyAgICAvLyBmb3IgZnVsbCBzY3JlZW4g
bW9kZSwgYW5kIGRvIG5vdCBoYXZlIHRoZSBjb25jZXB0IG9mIGEgZnVsbCBzY3JlZW4gZWxlbWVu
dCBzdGFjay4KKyAgICBib29sIGluTGVnYWN5TW96aWxsYU1vZGUgPSAoZmxhZ3MgJiBFbGVtZW50
OjpMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUKTsKIAorICAgIGRvIHsKICAgICAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOwotICAgICAgICAK
KyAKKyAgICAgICAgLy8gMS4gSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
dHJ1ZSwgdGVybWluYXRlIHRoZXNlIHN0ZXBzIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZQorICAg
ICAgICAvLyBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVuZXJyb3Igd2l0aCBpdHMgYnViYmxlcyBh
dHRyaWJ1dGUgc2V0IHRvIHRydWUgb24gdGhlIGNvbnRleHQgb2JqZWN0J3MgCisgICAgICAgIC8v
IG5vZGUgZG9jdW1lbnQ6CisKKyAgICAgICAgLy8gVGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBp
biBhIGRvY3VtZW50LgorICAgICAgICBpZiAoIWVsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFRoZSBjb250ZXh0IG9iamVjdCdzIG5vZGUgZG9j
dW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudCBkb2VzIG5v
dCBoYXZlCisgICAgICAgIC8vIHRoZSBmdWxsc2NyZWVuIGVuYWJsZWQgZmxhZyBzZXQuCiAgICAg
ICAgIGlmIChjaGVja1R5cGUgPT0gRW5mb3JjZUlGcmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1l
bnQgJiYgIWZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KGVsZW1lbnQpKQogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBpZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKQorCisgICAgICAgIC8vIFRoZSBjb250ZXh0IG9iamVjdCdzIG5v
ZGUgZG9jdW1lbnQgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQgaXRz
IHRvcCBlbGVtZW50CisgICAgICAgIC8vIGlzIG5vdCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4
dCBvYmplY3QuIChOT1RFOiBJZ25vcmUgdGhpcyByZXF1aXJlbWVudCBpZiB0aGUgcmVxdWVzdCB3
YXMKKyAgICAgICAgLy8gbWFkZSB2aWEgdGhlIGxlZ2FjeSBNb3ppbGxhLXN0eWxlIEFQSS4pCisg
ICAgICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHkoKSAmJiAhbV9mdWxs
U2NyZWVuRWxlbWVudFN0YWNrLmZpcnN0KCktPmNvbnRhaW5zKGVsZW1lbnQpICYmICFpbkxlZ2Fj
eU1vemlsbGFNb2RlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gQSBkZXNjZW5k
YW50IGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVl
biBlbGVtZW50IHN0YWNrLgorICAgICAgICBib29sIGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNr
ID0gZmFsc2U7CisgICAgICAgIGZvciAoRnJhbWUqIGRlc2NlbmRhbnQgPSBmcmFtZSgpID8gZnJh
bWUoKS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSA6IDA7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQg
PSBkZXNjZW5kYW50LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgICAgICBpZiAo
ZGVzY2VuZGFudC0+ZG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSkgeworICAg
ICAgICAgICAgICAgIGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNrID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZGVz
Y2VuZGVudEhhc05vbkVtcHR5U3RhY2sgJiYgIWluTGVnYWN5TW96aWxsYU1vZGUpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAvLyBUaGlzIGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZCB0
byBzaG93IGEgcG9wLXVwLgorICAgICAgICBpZiAoIWRvbVdpbmRvdygpLT5hbGxvd1BvcFVwKCkp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBUaGVyZSBpcyBhIHByZXZpb3VzbHkt
ZXN0YWJsaXNoZWQgdXNlciBwcmVmZXJlbmNlLCBzZWN1cml0eSByaXNrLCBvciBwbGF0Zm9ybSBs
aW1pdGF0aW9uLgorICAgICAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5m
dWxsU2NyZWVuRW5hYmxlZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICAg
ICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JF
bGVtZW50KGVsZW1lbnQsIGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpKQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgICAgIC8vIDIuIExldCBkb2MgYmUg
ZWxlbWVudCdzIG5vZGUgZG9jdW1lbnQuIChpLmUuICJ0aGlzIikKKyAgICAgICAgRG9jdW1lbnQq
IGRvYyA9IHRoaXM7CisKKyAgICAgICAgLy8gMy4gTGV0IGRvY3MgYmUgYWxsIGRvYydzIGFuY2Vz
dG9yIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudHMgKGlmIGFueSkgYW5kIGRvYy4KKyAgICAg
ICAgRGVxdWU8RG9jdW1lbnQqPiBkb2NzOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGRv
Y3MucHJlcGVuZChkb2MpOworICAgICAgICAgICAgZG9jID0gZG9jLT5vd25lckVsZW1lbnQoKSA/
IGRvYy0+b3duZXJFbGVtZW50KCktPmRvY3VtZW50KCkgOiAwOworICAgICAgICB9IHdoaWxlIChk
b2MpOworCisgICAgICAgIC8vIDQuIEZvciBlYWNoIGRvY3VtZW50IGluIGRvY3MsIHJ1biB0aGVz
ZSBzdWJzdGVwczoKKyAgICAgICAgRGVxdWU8RG9jdW1lbnQqPjo6aXRlcmF0b3IgY3VycmVudCA9
IGRvY3MuYmVnaW4oKSwgZm9sbG93aW5nID0gZG9jcy5iZWdpbigpOworCisgICAgICAgIGRvIHsK
KyAgICAgICAgICAgICsrZm9sbG93aW5nOworCisgICAgICAgICAgICAvLyAxLiBMZXQgZm9sbG93
aW5nIGRvY3VtZW50IGJlIHRoZSBkb2N1bWVudCBhZnRlciBkb2N1bWVudCBpbiBkb2NzLCBvciBu
dWxsIGlmIHRoZXJlIGlzIG5vCisgICAgICAgICAgICAvLyBzdWNoIGRvY3VtZW50LgorICAgICAg
ICAgICAgRG9jdW1lbnQqIGN1cnJlbnREb2MgPSAqY3VycmVudDsKKyAgICAgICAgICAgIERvY3Vt
ZW50KiBmb2xsb3dpbmdEb2MgPSBmb2xsb3dpbmcgIT0gZG9jcy5lbmQoKSA/ICpmb2xsb3dpbmcg
OiAwOworCisgICAgICAgICAgICAvLyAyLiBJZiBmb2xsb3dpbmcgZG9jdW1lbnQgaXMgbnVsbCwg
cHVzaCBjb250ZXh0IG9iamVjdCBvbiBkb2N1bWVudCdzIGZ1bGxzY3JlZW4gZWxlbWVudAorICAg
ICAgICAgICAgLy8gc3RhY2ssIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1l
ZCBmdWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRlCisgICAgICAgICAg
ICAvLyBzZXQgdG8gdHJ1ZSBvbiB0aGUgZG9jdW1lbnQuCisgICAgICAgICAgICBpZiAoIWZvbGxv
d2luZ0RvYykgeworICAgICAgICAgICAgICAgIGN1cnJlbnREb2MtPnB1c2hGdWxsc2NyZWVuRWxl
bWVudFN0YWNrKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGN1cnJlbnREb2MtPnRhc2tGdWxs
c2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gMy4gT3RoZXJ3aXNlLCBpZiBkb2N1bWVudCdzIGZ1bGxz
Y3JlZW4gZWxlbWVudCBzdGFjayBpcyBlaXRoZXIgZW1wdHkgb3IgaXRzIHRvcCBlbGVtZW50Cisg
ICAgICAgICAgICAvLyBpcyBub3QgZm9sbG93aW5nIGRvY3VtZW50J3MgYnJvd3NpbmcgY29udGV4
dCBjb250YWluZXIsCisgICAgICAgICAgICBFbGVtZW50KiB0b3BFbGVtZW50ID0gY3VycmVudERv
Yy0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICAgICAgICAgIGlmICghdG9wRWxlbWVu
dCB8fCB0b3BFbGVtZW50ICE9IGZvbGxvd2luZ0RvYy0+b3duZXJFbGVtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyAuLi5wdXNoIGZvbGxvd2luZyBkb2N1bWVudCdzIGJyb3dzaW5nIGNvbnRl
eHQgY29udGFpbmVyIG9uIGRvY3VtZW50J3MgZnVsbHNjcmVlbiBlbGVtZW50CisgICAgICAgICAg
ICAgICAgLy8gc3RhY2ssIGFuZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1lZCBm
dWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRlCisgICAgICAgICAgICAg
ICAgLy8gc2V0IHRvIHRydWUgb24gZG9jdW1lbnQuCisgICAgICAgICAgICAgICAgY3VycmVudERv
Yy0+cHVzaEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soZm9sbG93aW5nRG9jLT5vd25lckVsZW1lbnQo
KSk7CisgICAgICAgICAgICAgICAgY3VycmVudERvYy0+dGFza0Z1bGxzY3JlZW5DaGFuZ2VFdmVu
dCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyA0LiBPdGhlcndpc2UsIGRvIG5vdGhpbmcgZm9yIHRoaXMgZG9jdW1lbnQuIEl0IHN0
YXlzIHRoZSBzYW1lLgorICAgICAgICB9IHdoaWxlICgrK2N1cnJlbnQgIT0gZG9jcy5lbmQoKSk7
CisKKyAgICAgICAgLy8gNS4gUmV0dXJuLCBhbmQgcnVuIHRoZSByZW1haW5pbmcgc3RlcHMgYXN5
bmNocm9ub3VzbHkuCisgICAgICAgIC8vIDYuIE9wdGlvbmFsbHksIHBlcmZvcm0gc29tZSBhbmlt
YXRpb24uCiAgICAgICAgIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW4gPSBmbGFncyAmIEVs
ZW1lbnQ6OkFMTE9XX0tFWUJPQVJEX0lOUFVUOwogICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKKworICAgICAgICAv
LyA3LiBPcHRpb25hbGx5LCBkaXNwbGF5IGEgbWVzc2FnZSBpbmRpY2F0aW5nIGhvdyB0aGUgdXNl
ciBjYW4gZXhpdCBkaXNwbGF5aW5nIHRoZSBjb250ZXh0IG9iamVjdCBmdWxsc2NyZWVuLgogICAg
ICAgICByZXR1cm47CiAgICAgfSB3aGlsZSAoMCk7Ci0gICAgCisKICAgICBtX2Z1bGxTY3JlZW5F
cnJvckV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKGVsZW1lbnQgPyBlbGVtZW50IDogZG9jdW1lbnRF
bGVtZW50KCkpOwogICAgIG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXIuc3RhcnRPbmVTaG90
KDApOwogfQogCiB2b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCkKIHsKLSAg
ICBpZiAoIXBhZ2UoKSB8fCAhbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAvLyBUaGUgTW96aWxs
YSAiY2FuY2VsRnVsbFNjcmVlbigpIiBBUEkgYmVoYXZlcyBsaWtlIHRoZSBXM0MgImZ1bGx5IGV4
aXQgZnVsbHNjcmVlbiIgYmVoYXZpb3IsIHdoaWNoCisgICAgLy8gaXMgZGVmaW5lZCBhczogCisg
ICAgLy8gIlRvIGZ1bGx5IGV4aXQgZnVsbHNjcmVlbiBhY3QgYXMgaWYgdGhlIGV4aXRGdWxsc2Ny
ZWVuKCkgbWV0aG9kIHdhcyBpbnZva2VkIG9uIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcKKyAgICAv
LyBjb250ZXh0J3MgZG9jdW1lbnQgYW5kIHN1YnNlcXVlbnRseSBlbXB0eSB0aGF0IGRvY3VtZW50
J3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrLiIKKyAgICBpZiAoIXRvcERvY3VtZW50KCktPndl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRvIGFj
aGlldmUgdGhhdCBhaW0sIHJlbW92ZSBhbGwgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHRvcCBkb2N1
bWVudCdzIHN0YWNrIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IGJlZm9yZQorICAgIC8vIGNhbGxpbmcg
d2Via2l0RXhpdEZ1bGxzY3JlZW4oKToKKyAgICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiByZXBs
YWNlbWVudEZ1bGxzY3JlZW5FbGVtZW50U3RhY2s7CisgICAgcmVwbGFjZW1lbnRGdWxsc2NyZWVu
RWxlbWVudFN0YWNrLnByZXBlbmQodG9wRG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1l
bnQoKSk7CisgICAgdG9wRG9jdW1lbnQoKS0+bV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLnN3YXAo
cmVwbGFjZW1lbnRGdWxsc2NyZWVuRWxlbWVudFN0YWNrKTsKKworICAgIHRvcERvY3VtZW50KCkt
PndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRG
dWxsc2NyZWVuKCkKK3sKKyAgICAvLyBUaGUgZXhpdEZ1bGxzY3JlZW4oKSBtZXRob2QgbXVzdCBy
dW4gdGhlc2Ugc3RlcHM6CisgICAgCisgICAgLy8gMS4gTGV0IGRvYyBiZSB0aGUgY29udGV4dCBv
YmplY3QuIChpLmUuICJ0aGlzIikKKyAgICBEb2N1bWVudCogZG9jID0gdGhpczsKKworICAgIC8v
IDIuIElmIGRvYydzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjayBpcyBlbXB0eSwgdGVybWluYXRl
IHRoZXNlIHN0ZXBzLgorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyAg
ICAvLyAzLiBMZXQgZGVzY2VuZGFudHMgYmUgYWxsIHRoZSBkb2MncyBkZXNjZW5kYW50IGJyb3dz
aW5nIGNvbnRleHQncyBkb2N1bWVudHMgd2l0aCBhIG5vbi1lbXB0eSBmdWxsc2NyZWVuCisgICAg
Ly8gZWxlbWVudCBzdGFjayAoaWYgYW55KSwgb3JkZXJlZCBzbyB0aGF0IHRoZSBjaGlsZCBvZiB0
aGUgZG9jIGlzIGxhc3QgYW5kIHRoZSBkb2N1bWVudCBmdXJ0aGVzdAorICAgIC8vIGF3YXkgZnJv
bSB0aGUgZG9jIGlzIGZpcnN0LgorICAgIERlcXVlPFJlZlB0cjxEb2N1bWVudD4gPiBkZXNjZW5k
YW50czsKKyAgICBmb3IgKEZyYW1lKiBkZXNjZW5kYW50ID0gZnJhbWUoKSA/IGZyYW1lKCktPnRy
ZWUoKS0+dHJhdmVyc2VOZXh0KCkgOiAwOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2Vu
ZGFudC0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoZGVzY2VuZGFudC0+
ZG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgICAgIGRlc2Nl
bmRhbnRzLnByZXBlbmQoZGVzY2VuZGFudC0+ZG9jdW1lbnQoKSk7CisgICAgfQorICAgICAgICAK
KyAgICAvLyA0LiBGb3IgZWFjaCBkZXNjZW5kYW50IGluIGRlc2NlbmRhbnRzLCBlbXB0eSBkZXNj
ZW5kYW50J3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrLCBhbmQgcXVldWUgYQorICAgIC8vIHRh
c2sgdG8gZmlyZSBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1YmJs
ZXMgYXR0cmlidXRlIHNldCB0byB0cnVlIG9uIGRlc2NlbmRhbnQuCisgICAgZm9yIChEZXF1ZTxS
ZWZQdHI8RG9jdW1lbnQ+ID46Oml0ZXJhdG9yIGkgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpICE9
IGRlc2NlbmRhbnRzLmVuZCgpOyArK2kpIHsKKyAgICAgICAgKCppKS0+Y2xlYXJGdWxsc2NyZWVu
RWxlbWVudFN0YWNrKCk7CisgICAgICAgICgqaSktPnRhc2tGdWxsc2NyZWVuQ2hhbmdlRXZlbnQo
KTsKKyAgICB9CisKKyAgICAvLyA1LiBXaGlsZSBkb2MgaXMgbm90IG51bGwsIHJ1biB0aGVzZSBz
dWJzdGVwczoKKyAgICBFbGVtZW50KiBuZXdUb3A7CisgICAgd2hpbGUgKGRvYykgeworICAgICAg
ICAvLyAxLiBQb3AgdGhlIHRvcCBlbGVtZW50IG9mIGRvYydzIGZ1bGxzY3JlZW4gZWxlbWVudCBz
dGFjay4KKyAgICAgICAgZG9jLT5wb3BGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCk7CisKKyAgICAg
ICAgLy8gICAgSWYgZG9jJ3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vbi1lbXB0eSBh
bmQgdGhlIGVsZW1lbnQgbm93IGF0IHRoZSB0b3AgaXMgZWl0aGVyCisgICAgICAgIC8vICAgIG5v
dCBpbiBhIGRvY3VtZW50IG9yIGl0cyBub2RlIGRvY3VtZW50IGlzIG5vdCBkb2MsIHJlcGVhdCB0
aGlzIHN1YnN0ZXAuCisgICAgICAgIG5ld1RvcCA9IGRvYy0+d2Via2l0RnVsbHNjcmVlbkVsZW1l
bnQoKTsKKyAgICAgICAgaWYgKG5ld1RvcCAmJiAoIW5ld1RvcC0+aW5Eb2N1bWVudCgpIHx8IG5l
d1RvcC0+ZG9jdW1lbnQoKSAhPSBkb2MpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNo
YW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZQorICAgICAgICAvLyBv
biBkb2MuCisgICAgICAgIGRvYy0+dGFza0Z1bGxzY3JlZW5DaGFuZ2VFdmVudCgpOworCisgICAg
ICAgIC8vIDMuIElmIGRvYydzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjayBpcyBlbXB0eSBhbmQg
ZG9jJ3MgYnJvd3NpbmcgY29udGV4dCBoYXMgYSBicm93c2luZyBjb250ZXh0CisgICAgICAgIC8v
IGNvbnRhaW5lciwgc2V0IGRvYyB0byB0aGF0IGJyb3dzaW5nIGNvbnRleHQgY29udGFpbmVyJ3Mg
bm9kZSBkb2N1bWVudC4KKyAgICAgICAgaWYgKCFuZXdUb3AgJiYgZG9jLT5vd25lckVsZW1lbnQo
KSkKKyAgICAgICAgICAgIGRvYyA9IGRvYy0+b3duZXJFbGVtZW50KCktPmRvY3VtZW50KCk7CisK
KyAgICAgICAgLy8gNC4gT3RoZXJ3aXNlLCBzZXQgZG9jIHRvIG51bGwuCisgICAgICAgIGRvYyA9
IDA7CisgICAgfQorCisgICAgLy8gNi4gUmV0dXJuLCBhbmQgcnVuIHRoZSByZW1haW5pbmcgc3Rl
cHMgYXN5bmNocm9ub3VzbHkuCisgICAgLy8gNy4gT3B0aW9uYWxseSwgcGVyZm9ybSBzb21lIGFu
aW1hdGlvbi4KKworICAgIC8vIE9ubHkgZXhpdCBvdXQgb2YgZnVsbCBzY3JlZW4gd2luZG93IG1v
ZGUgaWYgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBlbGVtZW50cyBpbiB0aGUgCisgICAgLy8gZnVs
bCBzY3JlZW4gc3RhY2suCisgICAgaWYgKCFuZXdUb3ApIHsKKyAgICAgICAgcGFnZSgpLT5jaHJv
bWUoKS0+Y2xpZW50KCktPmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVt
ZW50LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwg
bm90aWZ5IHRoZSBjaHJvbWUgb2YgdGhlIG5ldyBmdWxsIHNjcmVlbiBlbGVtZW50LgorICAgIHBh
Z2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KG5ld1Rv
cCk7ICAgICAgCit9CisKK2Jvb2wgRG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKCkg
Y29uc3QKK3sKKyAgICAvLyA0LiBUaGUgZnVsbHNjcmVlbkVuYWJsZWQgYXR0cmlidXRlIG11c3Qg
cmV0dXJuIHRydWUgaWYgdGhlIGNvbnRleHQgb2JqZWN0IGFuZCBhbGwgYW5jZXN0b3IKKyAgICAv
LyBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnRzIGhhdmUgdGhlaXIgZnVsbHNjcmVlbiBlbmFi
bGVkIGZsYWcgc2V0LCBvciBmYWxzZSBvdGhlcndpc2UuCisKKyAgICAvLyBUb3AtbGV2ZWwgYnJv
d3NpbmcgY29udGV4dHMgYXJlIGltcGxpZWQgdG8gaGF2ZSB0aGVpciBhbGxvd0Z1bGxTY3JlZW4g
YXR0cmlidXRlIHNldC4KKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gb3duZXJF
bGVtZW50KCk7CisgICAgaWYgKCFvd25lcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBk
byB7CisgICAgICAgIGlmICghb3duZXItPmlzRnJhbWVFbGVtZW50QmFzZSgpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50
QmFzZSo+KG93bmVyKS0+YWxsb3dGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfSB3aGlsZSAoKG93bmVyID0gb3duZXItPmRvY3VtZW50KCktPm93bmVyRWxlbWVu
dCgpKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsgICAgICAgIAogfQogCiB2b2lkIERvY3VtZW50Ojp3
ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewog
ICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBBU1NFUlQocGFnZSgpICYmIHBhZ2UoKS0+c2V0dGlu
Z3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSk7CisKKyAgICAvLyBQcm90ZWN0IGFnYWluc3QgYmVp
bmcgY2FsbGVkIGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHBh
Z2UuCisgICAgaWYgKCFwYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChwYWdl
KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpOwogCiAgICAgaWYgKG1fZnVsbFNj
cmVlblJlbmRlcmVyKQogICAgICAgICBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+dW53cmFwUmVuZGVy
ZXIoKTsKQEAgLTUxMTUsMTQgKzUzMDEsMTkgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKICAgICAKIHZvaWQgRG9j
dW1lbnQ6OndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCiB7Cisg
ICAgaWYgKCFtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgCiAgICAg
bV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKIAotICAg
IG1fZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKG1fZnVsbFNjcmVlbkVs
ZW1lbnQpOwogICAgIG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXIuc3RhcnRPbmVTaG90KDAp
OwogfQogCiB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKQogeworICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoZmFsc2UpOwogICAgIAogICAg
IG1fZnVsbFNjcmVlbkVsZW1lbnQtPndpbGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpOwpA
QCAtNTEzNSw3ICs1MzI2LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikKICAg
ICAgICAgbV9mdWxsU2NyZWVuUmVuZGVyZXItPnVud3JhcFJlbmRlcmVyKCk7CiAKLSAgICBtX2Z1
bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmFwcGVuZChtX2Z1bGxTY3JlZW5FbGVtZW50
LnJlbGVhc2UoKSk7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CiAgICAgc2NoZWR1bGVG
b3JjZWRTdHlsZVJlY2FsYygpOwogICAgIAogICAgIG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGlt
ZXIuc3RhcnRPbmVTaG90KDApOwpAQCAtNTIwMSwyOCArNTM5MiwzNCBAQCB2b2lkIERvY3VtZW50
OjpzZXRGdWxsU2NyZWVuUmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoQ29sb3IgYmFja2dyb3VuZENv
bG9yKQogICAgIAogdm9pZCBEb2N1bWVudDo6ZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXJGaXJl
ZChUaW1lcjxEb2N1bWVudD4qKQogewotICAgIHdoaWxlICghbV9mdWxsU2NyZWVuQ2hhbmdlRXZl
bnRUYXJnZXRRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQgPSBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLnRha2VGaXJzdCgpOwotICAg
ICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50
KCk7CisgICAgRGVxdWU8UmVmUHRyPE5vZGU+ID4gY2hhbmdlUXVldWU7CisgICAgbV9mdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5zd2FwKGNoYW5nZVF1ZXVlKTsKKworICAgIHdoaWxl
ICghY2hhbmdlUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
Y2hhbmdlUXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAg
IG5vZGUgPSBkb2N1bWVudEVsZW1lbnQoKTsKIAogICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCB3
YXMgcmVtb3ZlZCBmcm9tIG91ciB0cmVlLCBhbHNvIG1lc3NhZ2UgdGhlIGRvY3VtZW50RWxlbWVu
dC4KLSAgICAgICAgaWYgKCFjb250YWlucyhlbGVtZW50LmdldCgpKSkKLSAgICAgICAgICAgIG1f
ZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKGRvY3VtZW50RWxlbWVudCgp
KTsKKyAgICAgICAgaWYgKCFjb250YWlucyhub2RlLmdldCgpKSkKKyAgICAgICAgICAgIGNoYW5n
ZVF1ZXVlLmFwcGVuZChkb2N1bWVudEVsZW1lbnQoKSk7CiAgICAgICAgIAotICAgICAgICBlbGVt
ZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgbm9kZS0+ZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZl
bnQsIHRydWUsIGZhbHNlKSk7CiAgICAgfQogCi0gICAgd2hpbGUgKCFtX2Z1bGxTY3JlZW5FcnJv
ckV2ZW50VGFyZ2V0UXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBl
bGVtZW50ID0gbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLnRha2VGaXJzdCgpOwot
ICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRFbGVt
ZW50KCk7CisgICAgRGVxdWU8UmVmUHRyPE5vZGU+ID4gZXJyb3JRdWV1ZTsKKyAgICBtX2Z1bGxT
Y3JlZW5FcnJvckV2ZW50VGFyZ2V0UXVldWUuc3dhcChlcnJvclF1ZXVlKTsKKyAgICAKKyAgICB3
aGlsZSAoIWVycm9yUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxOb2RlPiBub2Rl
ID0gZXJyb3JRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAg
ICAgbm9kZSA9IGRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICAKLSAgICAgICAgLy8gSWYgdGhl
IGVsZW1lbnQgd2FzIHJlbW92ZWQgZnJvbSBvdXIgdHJlZSwgYWxzbyBtZXNzYWdlIHRoZSBkb2N1
bWVudEVsZW1lbnQuCi0gICAgICAgIGlmICghY29udGFpbnMoZWxlbWVudC5nZXQoKSkpCi0gICAg
ICAgICAgICBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKGRvY3VtZW50
RWxlbWVudCgpKTsKKyAgICAgICAgLy8gSWYgdGhlIG5vZGUgd2FzIHJlbW92ZWQgZnJvbSBvdXIg
dHJlZSwgYWxzbyBtZXNzYWdlIHRoZSBkb2N1bWVudEVsZW1lbnQuCisgICAgICAgIGlmICghY29u
dGFpbnMobm9kZS5nZXQoKSkpCisgICAgICAgICAgICBlcnJvclF1ZXVlLmFwcGVuZChkb2N1bWVu
dEVsZW1lbnQoKSk7CiAgICAgICAgIAotICAgICAgICBlbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5lcnJvckV2ZW50LCB0cnVl
LCBmYWxzZSkpOworICAgICAgICBub2RlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5lcnJvckV2ZW50LCB0cnVlLCBmYWxzZSkpOwogICAg
IH0KIH0KIApAQCAtNTI2Myw2ICs1NDYwLDM0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEFuaW1hdGlu
Z0Z1bGxTY3JlZW4oYm9vbCBmbGFnKQogICAgICAgICBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxj
KCk7CiAgICAgfQogfQorCit2b2lkIERvY3VtZW50OjpjbGVhckZ1bGxzY3JlZW5FbGVtZW50U3Rh
Y2soKQoreworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVhcigpOworfQorCit2b2lk
IERvY3VtZW50Ojpwb3BGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCkKK3sKKyAgICBpZiAobV9mdWxs
U2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9m
dWxsU2NyZWVuRWxlbWVudFN0YWNrLnJlbW92ZUZpcnN0KCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OnB1c2hGdWxsc2NyZWVuRWxlbWVudFN0YWNrKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9m
dWxsU2NyZWVuRWxlbWVudFN0YWNrLnByZXBlbmQoZWxlbWVudCk7Cit9CisKK3ZvaWQgRG9jdW1l
bnQ6OnRhc2tGdWxsc2NyZWVuQ2hhbmdlRXZlbnQoKQoreworICAgIE5vZGUqIHRhcmdldCA9IHdl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHRhcmdl
dCA9IG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAg
IHRhcmdldCA9IHRoaXM7CisgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5h
cHBlbmQodGFyZ2V0KTsKK30KICNlbmRpZgogCiB2b2lkIERvY3VtZW50OjpkZWNyZW1lbnRMb2Fk
RXZlbnREZWxheUNvdW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMWUzMDVkNDYwYmFkNjVl
Yjk3Y2MwYjAyMTRiOWJmMmI3ODgzZDYyMS4uYzFmNzBjNmRiNzI5ZmMyMmRlZWNmMmNkOTVkNDVl
NjcxZDEzZGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwNzgsNiArMTA3OCwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVGdWxsU2NyZWVuRWxlbWVudE9mU3VidHJlZShOb2RlKiwg
Ym9vbCBhbW9uZ0NoaWxkcmVuT25seSA9IGZhbHNlKTsKICAgICBib29sIGlzQW5pbWF0aW5nRnVs
bFNjcmVlbigpIGNvbnN0OwogICAgIHZvaWQgc2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sKTsK
KworICAgIC8vIFczQyBBUEkKKyAgICBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29u
c3Q7CisgICAgRWxlbWVudCogd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biAhbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmlzRW1wdHkoKSA/IG1fZnVsbFNjcmVlbkVsZW1l
bnRTdGFjay5maXJzdCgpLmdldCgpIDogMDsgfQorICAgIHZvaWQgd2Via2l0RXhpdEZ1bGxzY3Jl
ZW4oKTsKICNlbmRpZgogCiAgICAgLy8gVXNlZCB0byBhbGxvdyBlbGVtZW50IHRoYXQgbG9hZHMg
ZGF0YSB3aXRob3V0IGdvaW5nIHRocm91Z2ggYSBGcmFtZUxvYWRlciB0byBkZWxheSB0aGUgJ2xv
YWQnIGV2ZW50LgpAQCAtMTE4OCw2ICsxMTkzLDEzIEBAIHByaXZhdGU6CiAKICAgICBIVE1MQ29s
bGVjdGlvbiogY2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSk7CiAKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCisgICAgdm9pZCBjbGVhckZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKTsK
KyAgICB2b2lkIHBvcEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKTsKKyAgICB2b2lkIHB1c2hGdWxs
c2NyZWVuRWxlbWVudFN0YWNrKEVsZW1lbnQqKTsKKyAgICB2b2lkIHRhc2tGdWxsc2NyZWVuQ2hh
bmdlRXZlbnQoKTsKKyNlbmRpZgorCiAgICAgaW50IG1fZ3VhcmRSZWZDb3VudDsKIAogICAgIE93
blB0cjxDU1NTdHlsZVNlbGVjdG9yPiBtX3N0eWxlU2VsZWN0b3I7CkBAIC0xNDIwLDEwICsxNDMy
LDExIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgbV9h
cmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbjsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9mdWxsU2Ny
ZWVuRWxlbWVudDsKKyAgICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5FbGVt
ZW50U3RhY2s7CiAgICAgUmVuZGVyRnVsbFNjcmVlbiogbV9mdWxsU2NyZWVuUmVuZGVyZXI7CiAg
ICAgVGltZXI8RG9jdW1lbnQ+IG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXI7Ci0gICAgRGVx
dWU8UmVmUHRyPEVsZW1lbnQ+ID4gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZTsK
LSAgICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0
UXVldWU7CisgICAgRGVxdWU8UmVmUHRyPE5vZGU+ID4gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRU
YXJnZXRRdWV1ZTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBtX2Z1bGxTY3JlZW5FcnJvckV2
ZW50VGFyZ2V0UXVldWU7CiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nRnVsbFNjcmVlbjsKICAgICBM
YXlvdXRSZWN0IG1fc2F2ZWRQbGFjZWhvbGRlckZyYW1lUmVjdDsKICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5p
ZGwKaW5kZXggYjNlMGFhM2EwYmEyOTI4ODg0NDJmZTU1MGM0ZGQxNTM5ZGQ3ZDI2ZS4uNGU0Yjdl
M2JmZTFiMWZjOWNkYjMyNGZlOWQ4YjQ3MTViMWRlYmMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCkBAIC0yNDEsMTAgKzI0MSwxNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAm
JiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgLy8gTW96aWxsYSB2ZXJzaW9uCiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBib29sZWFuIHdlYmtp
dElzRnVsbFNjcmVlbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1
bnRpbWVdIGJvb2xlYW4gd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2VkOwogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gRWxlbWVudCB3ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQ7CiAgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWVd
IHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworCisgICAgICAgIC8vIFczQyB2ZXJzaW9u
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBib29sZWFu
IHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4
RW5hYmxlZEF0UnVudGltZV0gRWxlbWVudCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudDsKKyAgICAg
ICAgW1Y4RW5hYmxlZEF0UnVudGltZV0gdm9pZCB3ZWJraXRFeGl0RnVsbHNjcmVlbigpOwogI2Vu
ZGlmCiAKICAgICAgICAgV2ViS2l0TmFtZWRGbG93IHdlYmtpdEdldEZsb3dCeU5hbWUoaW4gRE9N
U3RyaW5nIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGM5MjU3NDliOGYzZjFhY2Ez
ZjA1NWEzYjEzZDFkMTQ1YzI0NjRjZTMuLmE2MDQ1M2RkYWExNjA1ZTg1ZTU3OGMzMTUxNjdmOWJk
Yjk3MGU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE4NTgsOSArMTg1OCwxNCBAQCBi
b29sIEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmIGNoaWxkQ29udGV4dAogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpCit7CisgICAg
ZG9jdW1lbnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRoaXMsIEFMTE9XX0tFWUJP
QVJEX0lOUFVULCBEb2N1bWVudDo6RW5mb3JjZUlGcmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1l
bnQpOworfQorCiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKHVuc2lnbmVk
IHNob3J0IGZsYWdzKQogewotICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxl
bWVudCh0aGlzLCBmbGFncywgRG9jdW1lbnQ6OkVuZm9yY2VJRnJhbWVBbGxvd0Z1bFNjcmVlblJl
cXVpcmVtZW50KTsKKyAgICBkb2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQo
dGhpcywgKGZsYWdzIHwgTEVHQUNZX01PWklMTEFfUkVRVUVTVCksIERvY3VtZW50OjpFbmZvcmNl
SUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1aXJlbWVudCk7CiB9CiAKIGJvb2wgRWxlbWVudDo6Y29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA4Yzgy
NTA3M2Y0MDhkYWVjMWUzNTk5ODQ1NjJhYjQ1MDViMTE5ZWE3Li5lN2EzZjFiMDlkZWFiNTZhMjJk
ZDI0ZTJlZWQ0MTc4ZjRjNWE3Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM3NiwxMyArMzc2
LDE3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgZW51
bSB7Ci0gICAgICAgIEFMTE9XX0tFWUJPQVJEX0lOUFVUID0gMQorICAgICAgICBBTExPV19LRVlC
T0FSRF9JTlBVVCA9IDEgPDwgMCwKKyAgICAgICAgTEVHQUNZX01PWklMTEFfUkVRVUVTVCA9IDEg
PDwgMSwKICAgICB9OwogICAgIAogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4odW5z
aWduZWQgc2hvcnQgZmxhZ3MpOwogICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVs
ZW1lbnQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvb2wpOworCisgICAgLy8gVzND
IEFQSQorICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogCiAgICAg
dmlydHVhbCBib29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbAppbmRleCA4NzI1YmNiYzE5Y2JjMmI4MWE3YmJlNjFkODA4OWVmOTg1OTk2ODA2Li45
NTViZDQ3MGFhNjg2NzM1NzE1YmY0NjA0YjhkYjU2YzBiYTQwNzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCkBAIC0xMjksOCArMTI5LDEyIEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgogCiAjaWYg
ZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQor
ICAgICAgICAvLyBNb3ppbGxhIHZlcnNpb24KICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
QUxMT1dfS0VZQk9BUkRfSU5QVVQgPSAxOwogICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lXSB2
b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmlu
ZWRdIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKKworICAgICAgICAvLyBXM0MgdmVyc2lvbgorICAg
ICAgICBbVjhFbmFibGVkQXRSdW50aW1lXSB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7
CiAjZW5kaWYKIAogICAgICAgICAvLyBDU1MgUmVnaW9ucyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCA5Y2ZlOGIzNDg4YTc1ZDU2OGRhODkwNzQzNzFiM2I5NDEwNGJi
MGE2Li4zODg4YjRlNWVhNTA5NmRkODM1ZWQzMTAwOTRhYjg5NGE4NjYwZWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02Mjg2LDE0ICs2Mjg2LDkgQEAgYm9vbCBMYXll
ckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKIC0gKEJPT0wpX3N1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQ6KGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnQqKWVsZW1lbnQgd2l0aEtleWJvYXJkOihCT09MKXdpdGhLZXlib2FyZAogewotICAg
IGlmICh3aXRoS2V5Ym9hcmQpCi0gICAgICAgIHJldHVybiBOTzsKLQogICAgIGlmICghW1tXZWJQ
cmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBmdWxsU2NyZWVuRW5hYmxlZF0pCiAgICAg
ICAgIHJldHVybiBOTzsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGUgZWxlbWVudCBpcyBpbiBhbiBJ
RnJhbWUsIHdlIHNob3VsZCBlbnN1cmUgaXQgaGFzIAotICAgIC8vIGFuIEFsbG93c0Z1bGxTY3Jl
ZW49WUVTIGF0dHJpYnV0ZSBiZWZvcmUgYWxsb3dpbmcgZnVsbHNjcmVlbiBhY2Nlc3MuCiAgICAg
cmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDE3YzA3MGI2ZGRiMDkzMzRhY2Y2ZDU0
ZWUyY2E0Y2FkMDU2ZWEwNDAuLjIxZmU5Y2RhZTRmZDIzZDA0YWUwYzE4MDY5MTBlNzhmNTY2ODgx
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5jcHAKQEAgLTkxLDEwICs5MSw3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sIGFuaW1hdGluZykKIAogdm9p
ZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRo
S2V5Ym9hcmQsIGJvb2wmIHN1cHBvcnRzKQogewotICAgIGlmICh3aXRoS2V5Ym9hcmQpCi0gICAg
ICAgIHN1cHBvcnRzID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBzdXBwb3J0cyA9IHRydWU7
CisgICAgc3VwcG9ydHMgPSB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVs
bFNjcmVlbk1hbmFnZXIuY3BwCmluZGV4IDI5M2FlNWZiY2UxNjUwMTc3MGI0ODU1YjY5YWIzOTky
YTNlNTU2N2MuLjBlYTgwNDNhMzBkMjIwYjVlZTBiNTUyNmRhZWE2NzBhMGZjNjgwNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcApAQCAtOTksOCArOTksNiBAQCB2b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVs
ZW1lbnQpCiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OmV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogewotICAgIEFTU0VSVChlbGVtZW50KTsK
LSAgICBBU1NFUlQobV9lbGVtZW50ID09IGVsZW1lbnQpOwogICAgIG1fcGFnZS0+aW5qZWN0ZWRC
dW5kbGVGdWxsU2NyZWVuQ2xpZW50KCkuZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fcGFnZS5n
ZXQoKSwgZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSURlbGVnYXRlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0K
aW5kZXggODdlZWNlNDQxYTkxOGQ4OTE5YWY3YzMzYjQxNjYwZDAwMWJmNDgyNC4uZTg1NTc5MWRi
M2Y3MWJiYWIzY2ZlZjIzODEwODE4M2U2YWI2ZTkxMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0KQEAgLTI1MiwxOCArMjUyLDI4IEBAIER1bXBSZW5kZXJUcmVlRHJhZ2dp
bmdJbmZvICpkcmFnZ2luZ0luZm8gPSBuaWw7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAotLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50OihE
T01FbGVtZW50KillbGVtZW50IGxpc3RlbmVyOihOU09iamVjdDxXZWJLaXRGdWxsU2NyZWVuTGlz
dGVuZXI+KilsaXN0ZW5lcgorLSAodm9pZCllbnRlckZ1bGxTY3JlZW5XaXRoTGlzdGVuZXI6KE5T
T2JqZWN0PFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lcj4qKWxpc3RlbmVyCiB7CiAgICAgW2xpc3Rl
bmVyIHdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5dOwogICAgIFtsaXN0ZW5lciB3ZWJraXREaWRF
bnRlckZ1bGxTY3JlZW5dOwogfQogCi0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3
IGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudCBsaXN0ZW5lcjoo
TlNPYmplY3Q8V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyPiopbGlzdGVuZXIKKy0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXdlYlZpZXcgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudDooRE9NRWxl
bWVudCopZWxlbWVudCBsaXN0ZW5lcjooTlNPYmplY3Q8V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVy
PiopbGlzdGVuZXIKK3sKKyAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGVudGVy
RnVsbFNjcmVlbldpdGhMaXN0ZW5lcjopIHdpdGhPYmplY3Q6bGlzdGVuZXIgYWZ0ZXJEZWxheTow
XTsKK30KKworLSAodm9pZClleGl0RnVsbFNjcmVlbldpdGhMaXN0ZW5lcjooTlNPYmplY3Q8V2Vi
S2l0RnVsbFNjcmVlbkxpc3RlbmVyPiopbGlzdGVuZXIKIHsKICAgICBbbGlzdGVuZXIgd2Via2l0
V2lsbEV4aXRGdWxsU2NyZWVuXTsKICAgICBbbGlzdGVuZXIgd2Via2l0RGlkRXhpdEZ1bGxTY3Jl
ZW5dOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGV4aXRGdWxsU2Ny
ZWVuRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudCBsaXN0ZW5lcjooTlNPYmplY3Q8V2Vi
S2l0RnVsbFNjcmVlbkxpc3RlbmVyPiopbGlzdGVuZXIKK3sKKyAgICBbc2VsZiBwZXJmb3JtU2Vs
ZWN0b3I6QHNlbGVjdG9yKGV4aXRGdWxsU2NyZWVuV2l0aExpc3RlbmVyOikgd2l0aE9iamVjdDps
aXN0ZW5lciBhZnRlckRlbGF5OjBdOworfQorCiAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKil3
ZWJWaWV3IGRpZFByZXNzTWlzc2luZ1BsdWdpbkJ1dHRvbjooRE9NRWxlbWVudCAqKWVsZW1lbnQK
IHsKICAgICBwcmludGYoIk1JU1NJTkcgUExVR0lOIEJVVFRPTiBQUkVTU0VEXG4iKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBiZThiZDM1NzRiZDYxMGRiZjExMTQ0ODQzNjk3ZWNlNGFjN2QwYjNkLi41ZDhhZDUzYzFkZjE0
YmJmNjZkODc3MzNmNjlkZGQxYjc1Y2QzYmFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTIt
MDMtMDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCBXM0MgRnVsbCBTY3JlZW4gQVBJIHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0
YWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1lbGVtZW50LXN0YWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tZW5hYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXJlcXVlc3QtcmVtb3ZlZC5odG1sOgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVzdHJpY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzOgorCiAyMDEyLTAzLTA4ICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBOVUxMIHJlbmRlcmVyIHBvc3NpYmxlIGlu
IFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENhblJlY2VpdmVEcm9wcGVkRmlsZXMoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0
YWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxl
bWVudC1zdGFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWEwNmNlMTNiMmRkZWJlOTlkYzNj
MzBmMmU5ZTQxNmNmZmIyYTY2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NSBAQAorVGVzdCBmb3IgVzNDIEZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4KKworVG8gdGVzdCBt
YW51YWxseSwgY2xpY2sgdGhlICJHbyBmdWxsIHNjcmVlbiIgYnV0dG9uIC0gdGhlIHBhZ2Ugc2hv
dWxkIGVudGVyIGZ1bGwgc2NyZWVuIG1vZGUuCisKK0dvIGZ1bGwgc2NyZWVuIChvbmUpCitHbyBm
dWxsIHNjcmVlbiAodHdvKQorRXhpdCBmdWxsIHNjcmVlbiAodHdvKQorRVZFTlQod2Via2l0ZnVs
bHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVu
dC5pZCA9PSAnb25lJykgT0sKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RF
RCAoZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQuaWQgPT0gJ3R3bycpIE9LCitFVkVO
VCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEZ1bGxz
Y3JlZW5FbGVtZW50LmlkID09ICdvbmUnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0bWwgYi9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2suaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ODc3MGVmMGQ0ZTYyMWUzZjc1NjgzYjNhMzU2NjBlN2JiZTQ4Y2NjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0
YWNrLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PgorICAgIHZhciBvbmU7CisgICAgdmFyIHR3bzsKKworICAgIGZ1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgICAgIG9uZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmUnKTsKKyAg
ICAgICAgdHdvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpOworCisgICAgICAgIHZh
ciBjYWxsYmFjazsKKyAgICAgICAgdmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFj
ayhldmVudCkKKyAgICAgICAgfTsKKyAgICAgICAgd2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Vi
a2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bGxzY3JlZW5DaGFuZ2VkKTsKKworICAgICAgICB2YXIg
b25lRW50ZXJlZEZ1bGxzY3JlZW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgiZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQuaWQiLCAib25lIik7CisgICAg
ICAgICAgICBjYWxsYmFjayA9IHR3b0VudGVyZWRGdWxsc2NyZWVuOworICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBydW5XaXRoS2V5
RG93bihmdW5jdGlvbigpIHsgdHdvLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7IH0pOworICAg
ICAgICB9OworCisgICAgICAgIHZhciB0d29FbnRlcmVkRnVsbHNjcmVlbiA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxl
bWVudC5pZCIsICJ0d28iKTsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gdHdvRXhpdGVkRnVsbHNj
cmVlbjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgfTsK
KworICAgICAgICB2YXIgdHdvRXhpdGVkRnVsbHNjcmVlbiA9IGZ1bmN0aW9uKCkgeyAKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQuaWQi
LCAib25lIik7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH07CisKKyAgICAgICAg
Y2FsbGJhY2sgPSBvbmVFbnRlcmVkRnVsbHNjcmVlbjsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCkg
eyBvbmUud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsgfSk7CisgICAgfQorICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3QgZm9yIDxh
IGhyZWY9Imh0dHA6Ly9kdmNzLnczLm9yZy9oZy9mdWxsc2NyZWVuL3Jhdy1maWxlL3RpcC9PdmVy
dmlldy5odG1sI2Z1bGxzY3JlZW4tZWxlbWVudC1zdGFjayI+VzNDIEZ1bGxzY3JlZW4gZWxlbWVu
dCBzdGFjazwvYT4uPC9wPgorICAgIDxwPlRvIHRlc3QgbWFudWFsbHksIGNsaWNrIHRoZSAiR28g
ZnVsbCBzY3JlZW4iIGJ1dHRvbiAtIHRoZSBwYWdlIHNob3VsZCBlbnRlciBmdWxsIHNjcmVlbiBt
b2RlLjwvcD4KKyAgICA8ZGl2PgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9Im9uZS53ZWJraXRS
ZXF1ZXN0RnVsbHNjcmVlbigpIj5HbyBmdWxsIHNjcmVlbiAob25lKTwvYnV0dG9uPgorICAgIDwv
ZGl2PgorICAgIDxkaXYgaWQ9b25lPgorICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InR3by53ZWJr
aXRSZXF1ZXN0RnVsbHNjcmVlbigpIj5HbyBmdWxsIHNjcmVlbiAodHdvKTwvYnV0dG9uPgorICAg
ICAgICA8ZGl2IGlkPXR3bz4KKyAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1lbnQu
d2Via2l0RXhpdEZ1bGxzY3JlZW4oKSI+RXhpdCBmdWxsIHNjcmVlbiAodHdvKTwvYnV0dG9uPgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVu
YWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1l
bmFibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTJjMGQyZDQxNTZiOTVmYjY1ZTllY2M3
OTMxNjExNjRhYzU4YmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1lbmFibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMg
dGVzdHMgdGhlIGZ1bGxzY3JlZW5FbmFibGVkIHByb3BlcnR5IGxhaWQgb3V0IGluIHNlY3Rpb24g
NCBvZiB0aGUgVzNDIEZ1bGwgU2NyZWVuIEFQSQorRVhQRUNURUQgKGlmcmFtZS5jb250ZW50RG9j
dW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQgPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKGlm
cmFtZTIuY29udGVudERvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkID09ICdmYWxzZScp
IE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkMTBiZTUyNTUxZjRmOGVmYTZiOTI0ODkxNGYx
Njg0ZDY0Yzk5MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8Ym9keT4KKzxkaXY+VGhp
cyB0ZXN0cyB0aGUgPGNvZGU+ZnVsbHNjcmVlbkVuYWJsZWQ8L2NvZGU+IHByb3BlcnR5IGxhaWQg
b3V0IGluIHNlY3Rpb24gNCBvZiB0aGUgVzNDIAorPGEgaHJlZj0iaHR0cDovL2R2Y3MudzMub3Jn
L2hnL2Z1bGxzY3JlZW4vcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwiPkZ1bGwgU2NyZWVuIEFQ
STwvYT48L2Rpdj4KKzxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKSk7CisgICAgaWZyYW1lLnNl
dEF0dHJpYnV0ZSgnd2Via2l0YWxsb3dmdWxsc2NyZWVuJywgJ3RydWUnKTsKKyAgICB2YXIgaWZy
YW1lMiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpZnJhbWUnKSk7CisgICAgdGVzdEV4cGVjdGVkKCdpZnJhbWUuY29udGVudERv
Y3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkJywgdHJ1ZSk7CisgICAgdGVzdEV4cGVjdGVk
KCdpZnJhbWUyLmNvbnRlbnREb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCcsIGZhbHNl
KTsKKyAgICBlbmRUZXN0KCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVkLmh0bWwKaW5kZXggNzc5ODMy
YTdmMjM4YmYzZTZjNDFkMjcwMDdiZTQyM2NlYzk2ZGMxNC4uMGU3ODE5YjlhZDUyZjg2NGY4OGQz
MjllMTJiZDdkNjZhZDk0MTkzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVkLmh0bWwKQEAgLTksNyArOSwxMCBAQAog
ICAgIH0gZWxzZSB7CiAgICAgICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgbG9nUmVzdWx0KCJFbnRlcmVk
IGZ1bGwgc2NyZWVuLiIsIGZhbHNlKTsgCisgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAg
fSk7CisgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOwogICAgICAgICB3
YWl0Rm9yRXZlbnRBbmRFbmQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuZXJyb3InKTsKICAg
ICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1y
ZXF1ZXN0LXJlbW92ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
cmVxdWVzdC1yZW1vdmVkLmh0bWwKaW5kZXggOTI2NDIxOWMyNDZiNmZhOGJmZjNhY2EwMDZiNjU3
NzlhMjY1Y2U4Yi4uMjMzMGZmYmU5MTQ3MWNhZjlmY2RlNmIyMjhmMzI5ODdkM2M5ZGY0OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlbW92
ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3Qt
cmVtb3ZlZC5odG1sCkBAIC0xMiw2ICsxMiw5IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiU1VDQ0VFRCAtIGRpZCBub3QgZW50ZXIgZnVsbCBzY3JlZW4hIik7
CiAgICAgfSk7CiAKKyAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOworCiAgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5hcHBlbmRDaGlsZChkaXYpOwogICAgIGNvbnNvbGVXcml0ZSgiQWRkZWQgY2hp
bGQgZWxlbWVudC4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MDMwZGVm
YzhhMDU1Mzg2ZDRiNjRmYTJlOTI5NGZlYjBhNzc3ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOSBAQAorVGhpcyB0ZXN0cyB0aGUgcmVzdHJpY3Rpb25zIHRvIGVudGVyaW5n
IGZ1bGwgc2NyZWVuIG1vZGUgbGFpZCBvdXQgaW4gc2VjdGlvbiA0LjEgb2YgdGhlIFczQyBGdWxs
IFNjcmVlbiBBUEkKKyJUaGUgY29udGV4dCBvYmplY3QgaXMgbm90IGluIGEgZG9jdW1lbnQuIgor
RVZFTlQod2Via2l0ZnVsbHNjcmVlbmVycm9yKQorIlRoZSBjb250ZXh0IG9iamVjdCdzIG5vZGUg
ZG9jdW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudCBkb2Vz
IG5vdCBoYXZlIHRoZSBmdWxsc2NyZWVuIGVuYWJsZWQgZmxhZyBzZXQuIgorRVZFTlQod2Via2l0
ZnVsbHNjcmVlbmVycm9yKQorIlRoZSBjb250ZXh0IG9iamVjdCdzIG5vZGUgZG9jdW1lbnQgZnVs
bHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQgaXRzIHRvcCBlbGVtZW50IGlz
IG5vdCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4dCBvYmplY3QuIgorRVZFTlQod2Via2l0ZnVs
bHNjcmVlbmNoYW5nZSkKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5lcnJvcikKK0VWRU5UKHdlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2UpCisiQSBkZXNjZW5kYW50IGJyb3dzaW5nIGNvbnRleHQncyBkb2N1
bWVudCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrLiIKK0VWRU5UKHdl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCitFVkVO
VCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorIlRoaXMgYWxnb3JpdGhtIGlzIG5vdCBhbGxvd2Vk
IHRvIHNob3cgYSBwb3AtdXAuIgorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmVycm9yKQorRU5EIE9G
IFRFU1QKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tcmVzdHJpY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXJlc3RyaWN0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MjRiMDM1NDg5MWIwMzYzOTAwNzE0YWVm
ZmQ1MGFiYzUwOTQyYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2PlRoaXMgdGVzdHMgdGhlIHJlc3RyaWN0aW9ucyB0byBl
bnRlcmluZyBmdWxsIHNjcmVlbiBtb2RlIGxhaWQgb3V0IGluIHNlY3Rpb24gNC4xIG9mIHRoZSBX
M0MgCis8YSBocmVmPSJodHRwOi8vZHZjcy53My5vcmcvaGcvZnVsbHNjcmVlbi9yYXctZmlsZS90
aXAvT3ZlcnZpZXcuaHRtbCI+RnVsbCBTY3JlZW4gQVBJPC9hPjwvZGl2PgorPHNjcmlwdCBzcmM9
ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICAvLyBCYWlsIG91
dCBlYXJseSBpZiB0aGUgZnVsbCBzY3JlZW4gQVBJIGlzIG5vdCBlbmFibGVkIG9yIGlzIG1pc3Np
bmc6CisgICAgaWYgKEVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09
IHVuZGVmaW5lZCkgeworICAgICAgICBsb2dSZXN1bHQoZmFsc2UsICJFbGVtZW50LnByb3RvdHlw
ZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQiKTsKKyAgICAgICAgZW5kVGVz
dCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBydW5UZXN0ID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoJyJUaGUgY29udGV4dCBvYmplY3QgaXMgbm90IGluIGEg
ZG9jdW1lbnQuIicpOworICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dlYmtp
dGZ1bGxzY3JlZW5lcnJvcicsIHN0ZXAyKTsKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1
bmN0aW9uKCl7ZGl2LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAgICAgICAgfTsKKwor
ICAgICAgICB2YXIgc3RlcDIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgnIlRoZSBjb250ZXh0IG9iamVjdFwncyBub2RlIGRvY3VtZW50LCBvciBhbiBhbmNlc3RvciBi
cm93c2luZyBjb250ZXh0XCdzIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIGZ1bGxzY3JlZW4g
ZW5hYmxlZCBmbGFnIHNldC4iJykKKyAgICAgICAgICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1l
JykpOworICAgICAgICAgICAgdmFyIGRpdiA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LmFwcGVuZENoaWxkKGlmcmFtZS5jb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2JykpOworCisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGlmcmFtZS5jb250ZW50
RG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuZXJyb3InLCBzdGVwMyk7CisgICAgICAgICAgICBy
dW5XaXRoS2V5RG93bihmdW5jdGlvbigpe2Rpdi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7
CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIHN0ZXAzID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoJyJUaGUgY29udGV4dCBvYmplY3RcJ3Mgbm9kZSBkb2N1bWVudCBm
dWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sgaXMgbm90IGVtcHR5IGFuZCBpdHMgdG9wIGVsZW1lbnQg
aXMgbm90IGFuIGFuY2VzdG9yIG9mIHRoZSBjb250ZXh0IG9iamVjdC4iJyk7CisgICAgICAgICAg
ICB2YXIgZGl2ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgICAgIHZhciBkaXYyID0gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
KTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50T25j
ZShkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5lcnJvcicsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlJywgc3RlcDQpOworICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRG
dWxsc2NyZWVuKCk7IAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJ1bldp
dGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2Mi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2
LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIg
c3RlcDQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnIkEgZGVzY2Vu
ZGFudCBicm93c2luZyBjb250ZXh0XCdzIGRvY3VtZW50IGhhcyBhIG5vbi1lbXB0eSBmdWxsc2Ny
ZWVuIGVsZW1lbnQgc3RhY2suIicpOworICAgICAgICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJh
bWUnKSk7CisgICAgICAgICAgICBpZnJhbWUuc2V0QXR0cmlidXRlKCd3ZWJraXRhbGxvd2Z1bGxz
Y3JlZW4nLCAndHJ1ZScpOworICAgICAgICAgICAgdmFyIGRpdiA9IGlmcmFtZS5jb250ZW50RG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGlmcmFtZS5jb250ZW50RG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICAgICAgdmFyIGRpdjIgPSBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShpZnJhbWUuY29udGVudERvY3VtZW50LCAn
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHdh
aXRGb3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuZXJyb3InLCBmdW5jdGlv
bigpeworICAgICAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGlmcmFtZS5jb250ZW50
RG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgc3RlcDUpOworICAgICAgICAgICAg
ICAgICAgICBpZnJhbWUuY29udGVudERvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7IAor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0
aW9uKCl7ZGl2Mi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2LndlYmtpdFJlcXVlc3RG
dWxsc2NyZWVuKCl9KTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgc3RlcDUgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnIlRoaXMgYWxnb3JpdGhtIGlzIG5vdCBh
bGxvd2VkIHRvIHNob3cgYSBwb3AtdXAuIicpOworICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKSk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGRvY3VtZW50LCAnd2Via2l0ZnVs
bHNjcmVlbmVycm9yJywgZW5kVGVzdCk7CisgICAgICAgICAgICBkaXYud2Via2l0UmVxdWVzdEZ1
bGxzY3JlZW4oKTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAodHlwZW9mKGxheW91dFRlc3RD
b250cm9sbGVyKSAhPSAndW5kZWZpbmVkJykKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKHRydWUpOworICAgIH0KKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzIGIvTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCmluZGV4IDVlNWJiMWFmN2E3
ODJhY2ZlYzkyNWM2ZDI4YjdlZjhhMjIyNDM3NDkuLjgwMWI1YmE5ZTNhNjEyYmFmMzY3M2M2ZGE1
NzE4YzM1ODViYTNmOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRl
c3QuanMKQEAgLTk4LDEwICs5OCwxOCBAQCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRFbmQoZWxl
bWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQogICAgIHdhaXRGb3JFdmVudChlbGVtZW50LCBl
dmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCiB9CiAKLWZ1bmN0aW9uIHdhaXRGb3JFdmVudChl
bGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQorZnVuY3Rpb24gd2FpdEZvckV2ZW50T25j
ZShlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQoreworICAgIHdhaXRGb3JFdmVudChl
bGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0LCB0cnVlKQorfQorCitmdW5jdGlvbiB3YWl0
Rm9yRXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jLCBlbmRpdCwgb25jZSkKIHsKICAgICBm
dW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKICAgICB7CisgICAgICAgIGlmIChvbmNlKQor
ICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50
Q2FsbGJhY2spOworCiAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSAr
ICIpIik7CiAKICAgICAgICAgaWYgKGZ1bmMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131548</attachid>
            <date>2012-03-12 22:39:05 -0700</date>
            <delta_ts>2012-03-13 00:25:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80660-20120312223904.patch</filename>
            <type>text/plain</type>
            <size>44715</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ3ZTU2Y2E0MzUxYjc5
NDNlMTliNTEwYThkNjJjZWQ5MTYzMGQ0ZS4uODkyMzVhZTQxMzBjMDhhODA5ZGVkOGFkNzc2MTc1
MDkzZGI4YzgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAzLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwg
U2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0czogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0
bWwKKyAgICAgICAgICAgICAgIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCisg
ICAgICAgICAgICAgICBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCisK
KyAgICAgICAgVGhlIFczQyBwcm9wb3NhbCBmb3IgdGFraW5nIGFyYml0cmFyeSBlbGVtZW50cyBp
bnRvIGZ1bGwtc2NyZWVuIG1vZGUgaXMgc2lnbmlmaWNhbnRseQorICAgICAgICBkaWZmZXJlbnQg
dGhhbiB0aGUgTW96aWxsYSBwcm9wb3NhbC4gRm9yIGV4YW1wbGUsIHRoZSBXM0MgaGFzIHByb3Bv
c2VkIGEgbG93ZXItY2FzZSAicyIKKyAgICAgICAgaW4gIkZ1bGxzY3JlZW4iLCB3aGljaCBtZWFu
cyB0aGUgVzNDIGFuZCBNb3ppbGxhICJyZXF1ZXN0RnVsbHNjcmVlbiIgQVBJcyBkaWZmZXIgb25s
eSBieQorICAgICAgICBpbiB0aGF0IGxvd2VyLWNhc2UgInMiLiBBbm5veWluZyBhcyB0aGlzIGlz
LCBpdCBkb2VzIGFsbG93IHVzIHRvIHJldGFpbiB0aGUgc2VtYW50aWNzIGZvcgorICAgICAgICB0
aGUgTW96aWxsYSBjYXNlIChoYXIhKS4KKworICAgICAgICBBIHNpZ25pZmljYW50IGRpZmZpY3Vs
dHkgaXMgb2JleWluZyB0aGUgbmV3IFczQyBzcGVjIHJ1bGVzIGlzIHRoYXQgd2Ugd291bGQgbGlr
ZSB0byBhcHBseSB0aGUKKyAgICAgICAgZnVsbHNjcmVlbiBDU1MgcnVsZXMgd2hpbGUgZXhpdGlu
ZyBmdWxsc2NyZWVuIG1vZGUsIHRob3VnaCB0aGUgVzNDIHNwZWMgaW5zaXN0cyB0aGF0IHRoZQor
ICAgICAgICB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCByZXR1cm5zIHRoZSBuZXcgdmFsdWUgaW1t
ZWRpYXRlbHkuICBBcyBzdWNoLCB3ZSByZXRhaW4gdGhlIG1fZnVsbFNjcmVlbkVsZW1lbnQKKyAg
ICAgICAgdmFyaWFibGUgKGRpc3RpbmN0IGZyb20gdGhlIHRvcCBvZiB0aGUgbV9mdWxsU2NyZWVu
RWxlbWVudHMgc3RhY2spIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgIHdlYmtp
dHtXaWxsLERpZH17RW50ZXIsRXhpdH1GdWxsU2NyZWVuIGZ1bmN0aW9ucy4KKworICAgICAgICBO
ZXcgQVBJcyBmb3IgdGhlIFczQyBGdWxsc2NyZWVuIHNwZWM6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RnVsbHNjcmVlbkVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbmFibGVk
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cmVtb3ZlZExhc3RSZWYpOiBDbGVhciBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogSW1wbGVt
ZW50IHRoZSBXM0MgcmVxdWlyZW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdEV4aXRGdWxsc2NyZWVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d2Via2l0Q2FuY2VsRnVsbFNjcmVlbik6IEltcGxlbWVudCBpbiB0ZXJtcyBvZiB3ZWJraXRDYW5j
ZWxGdWxsc2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQpOiAKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJr
aXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyRmlyZWQpOiBQcm90ZWN0IGFn
YWluc3QgaXRlbXMgYmVpbmcKKyAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBldmVudCBhbmQgZXJy
b3IgcXVldWUgYnkgc3dhcHBpbmcgb3V0IGVtcHR5IHF1ZXVlcyBiZWZvcmUgc3RhcnRpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xlYXJGdWxsc2NyZWVuRWxlbWVudFN0YWNrKTog
U2ltcGxlIGFjY2Vzc29yLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBvcEZ1bGxzY3Jl
ZW5FbGVtZW50U3RhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwdXNo
RnVsbHNjcmVlbkVsZW1lbnRTdGFjayk6IERpdHRvLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToK
KworICAgICAgICBBZGQgbmV3IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgZnVuY3Rpb25zIGZvciB0
aGUgYWRkZWQgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVuY3Rpb25zLgorICAgICAgICAqIGJpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoUnVudGltZUVu
YWJsZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEV4aXRGdWxsc2Ny
ZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQpOgorCisKIDIwMTItMDMtMTIgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29yZTogQWRkIHN1cHBvcnQg
Zm9yIEF1ZGlvTm9kZSAidGFpbFRpbWUoKSIgYW5kICJsYXRlbmN5VGltZSgpIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IGNkZWY4ZjkwM2MyZTcxNWZmYWRjMTQ4MTNjOWZkNzIxMWFhMzA2NGEuLjYxM2Fj
OGFiYzkwYTkxZDAyMDJhYmQ0MjZiYjRjOTg2ZGZlNjNjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBTdXBwb3J0IFczQyBGdWxsIFNjcmVlbiBBUEkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgZnVsbCBzY3Jl
ZW4gZWxlbWVudHMgdG8gYWNjZXNzIHRoZSBrZXlib2FyZC4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxl
bWVudDpXZWJDb3JlOjp3aXRoS2V5Ym9hcmQ6XSk6CisKIDIwMTItMDMtMTEgIFRpbW90aHkgSGF0
Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBob3cgdGhlIFdlYiBJ
bnNwZWN0b3IgcmVzb3VyY2VzIGFyZSBsb2FkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRjNjRkNTRhYjc5
MjYzYzgzZDIxZGEzYzM1YTkxMjQ3MzU1ZjUzOS4uNzMyMWY4MWU3ODdjY2YwZTAyZDE5NGRiMjEw
OWQyZmM1NzA5MTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTA4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1
bGwgU2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbGxvdyBmdWxsIHNjcmVlbiBlbGVtZW50cyB0byBhY2Nlc3MgdGhlIGtl
eWJvYXJkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0
c0Z1bGxTY3JlZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpl
eGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorCiAyMDEyLTAzLTEyICBFbnJpY2EgQ2FzdWNjaSAg
PGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MjogcmVtb3ZlIE5TUGFzdGVib2Fy
ZCBhY2Nlc3MgZm9yIHByb21pc2VkIGRhdGEgZnJvbSB0aGUgV2ViUHJvY2VzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaAppbmRleCBlZTM4ZDA0ZTI0NjJkZjhlYjIyZTU5ZWM0MTI5YTg5ZGQ2NGVlMDdmLi40Mzcz
NjU1MzBhMjNlMTg1MDk4MGI0OTZkNWQ1NzRlZmZiZmZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApA
QCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgd2Via2l0SURCVHJhbnNh
Y3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNJbmRleGVkREJFbmFibGVkOyB9CiAKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8gTW96aWxsYSB2ZXJzaW9uCiAgICAgc3RhdGljIGJv
b2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0V2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNGdWxsU2NyZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQog
ICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJu
IGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KQEAgLTc4LDYgKzc5LDEyIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWRFbmFibGVk
KCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbkVu
YWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisKKyAgICAvLyBXM0Mg
dmVyc2lvbgorICAgIHN0YXRpYyBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCgp
IHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCB3ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFi
bGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Via2l0RXhpdEZ1bGxzY3JlZW5FbmFibGVkKCkgeyBy
ZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdFJl
cXVlc3RGdWxsc2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7
IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDgwOWY5OTA0MTBiMmRmOGE3YTFlMzBkMjFjYWIxMzE4Y2ExMDE0NmEuLjVjYTQw
MmFlZjZiZTU0OWZiY2I2NjI4NGUzNmIxN2E2NWM4ZWFmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtNjA3LDYgKzYwNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkK
ICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnQgPSAwOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisgICAgICAgIG1fZnVsbFNjcmVl
bkVsZW1lbnRTdGFjay5jbGVhcigpOwogI2VuZGlmCiAKICAgICAgICAgLy8gcmVtb3ZlQWxsQ2hp
bGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywKQEAgLTUwNTEsNDMgKzUwNTIs
MjMxIEBAIGJvb2wgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9y
RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBzaG9ydCBmbGFncywgRnVsbFNjcmVl
bkNoZWNrVHlwZSBjaGVja1R5cGUpCiB7Ci0gICAgZG8gewotICAgICAgICBpZiAoIXBhZ2UoKSB8
fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQotICAgICAgICAgICAg
YnJlYWs7CisgICAgLy8gVGhlIE1vemlsbGEgRnVsbCBTY3JlZW4gQVBJIDxodHRwczovL3dpa2ku
bW96aWxsYS5vcmcvR2Vja286RnVsbFNjcmVlbkFQST4gaGFzIGRpZmZlcmVudCByZXF1aXJlbWVu
dHMKKyAgICAvLyBmb3IgZnVsbCBzY3JlZW4gbW9kZSwgYW5kIGRvIG5vdCBoYXZlIHRoZSBjb25j
ZXB0IG9mIGEgZnVsbCBzY3JlZW4gZWxlbWVudCBzdGFjay4KKyAgICBib29sIGluTGVnYWN5TW96
aWxsYU1vZGUgPSAoZmxhZ3MgJiBFbGVtZW50OjpMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUKTsKIAor
ICAgIGRvIHsKICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgZWxlbWVudCA9IGRv
Y3VtZW50RWxlbWVudCgpOwotICAgICAgICAKKyAKKyAgICAgICAgLy8gMS4gSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZSwgdGVybWluYXRlIHRoZXNlIHN0ZXBzIGFu
ZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZQorICAgICAgICAvLyBhbiBldmVudCBuYW1lZCBmdWxsc2Ny
ZWVuZXJyb3Igd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUgc2V0IHRvIHRydWUgb24gdGhlIGNv
bnRleHQgb2JqZWN0J3MgCisgICAgICAgIC8vIG5vZGUgZG9jdW1lbnQ6CisKKyAgICAgICAgLy8g
VGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBpbiBhIGRvY3VtZW50LgorICAgICAgICBpZiAoIWVs
ZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFRo
ZSBjb250ZXh0IG9iamVjdCdzIG5vZGUgZG9jdW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5n
IGNvbnRleHQncyBkb2N1bWVudCBkb2VzIG5vdCBoYXZlCisgICAgICAgIC8vIHRoZSBmdWxsc2Ny
ZWVuIGVuYWJsZWQgZmxhZyBzZXQuCiAgICAgICAgIGlmIChjaGVja1R5cGUgPT0gRW5mb3JjZUlG
cmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1lbnQgJiYgIWZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JF
bGVtZW50KGVsZW1lbnQpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorCisgICAgICAg
IC8vIFRoZSBjb250ZXh0IG9iamVjdCdzIG5vZGUgZG9jdW1lbnQgZnVsbHNjcmVlbiBlbGVtZW50
IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQgaXRzIHRvcCBlbGVtZW50CisgICAgICAgIC8vIGlzIG5v
dCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4dCBvYmplY3QuIChOT1RFOiBJZ25vcmUgdGhpcyBy
ZXF1aXJlbWVudCBpZiB0aGUgcmVxdWVzdCB3YXMKKyAgICAgICAgLy8gbWFkZSB2aWEgdGhlIGxl
Z2FjeSBNb3ppbGxhLXN0eWxlIEFQSS4pCisgICAgICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVu
dFN0YWNrLmlzRW1wdHkoKSAmJiAhbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmZpcnN0KCktPmNv
bnRhaW5zKGVsZW1lbnQpICYmICFpbkxlZ2FjeU1vemlsbGFNb2RlKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgLy8gQSBkZXNjZW5kYW50IGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVu
dCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrLgorICAgICAgICBib29s
IGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNrID0gZmFsc2U7CisgICAgICAgIGZvciAoRnJhbWUq
IGRlc2NlbmRhbnQgPSBmcmFtZSgpID8gZnJhbWUoKS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSA6
IDA7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoZGVzY2VuZGFudC0+ZG9jdW1lbnQoKS0+d2Via2l0
RnVsbHNjcmVlbkVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGRlc2NlbmRlbnRIYXNOb25F
bXB0eVN0YWNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBpZiAoZGVzY2VuZGVudEhhc05vbkVtcHR5U3RhY2sgJiYgIWlu
TGVnYWN5TW96aWxsYU1vZGUpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBUaGlz
IGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZCB0byBzaG93IGEgcG9wLXVwLgorICAgICAgICBpZiAo
IWRvbVdpbmRvdygpLT5hbGxvd1BvcFVwKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAvLyBUaGVyZSBpcyBhIHByZXZpb3VzbHktZXN0YWJsaXNoZWQgdXNlciBwcmVmZXJlbmNlLCBz
ZWN1cml0eSByaXNrLCBvciBwbGF0Zm9ybSBsaW1pdGF0aW9uLgorICAgICAgICBpZiAoIXBhZ2Uo
KSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQsIGZsYWdzICYgRWxlbWVu
dDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAor
CisgICAgICAgIC8vIDIuIExldCBkb2MgYmUgZWxlbWVudCdzIG5vZGUgZG9jdW1lbnQuIChpLmUu
ICJ0aGlzIikKKyAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHRoaXM7CisKKyAgICAgICAgLy8gMy4g
TGV0IGRvY3MgYmUgYWxsIGRvYydzIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVu
dHMgKGlmIGFueSkgYW5kIGRvYy4KKyAgICAgICAgRGVxdWU8RG9jdW1lbnQqPiBkb2NzOworCisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgIGRvY3MucHJlcGVuZChkb2MpOworICAgICAgICAgICAg
ZG9jID0gZG9jLT5vd25lckVsZW1lbnQoKSA/IGRvYy0+b3duZXJFbGVtZW50KCktPmRvY3VtZW50
KCkgOiAwOworICAgICAgICB9IHdoaWxlIChkb2MpOworCisgICAgICAgIC8vIDQuIEZvciBlYWNo
IGRvY3VtZW50IGluIGRvY3MsIHJ1biB0aGVzZSBzdWJzdGVwczoKKyAgICAgICAgRGVxdWU8RG9j
dW1lbnQqPjo6aXRlcmF0b3IgY3VycmVudCA9IGRvY3MuYmVnaW4oKSwgZm9sbG93aW5nID0gZG9j
cy5iZWdpbigpOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICsrZm9sbG93aW5nOworCisg
ICAgICAgICAgICAvLyAxLiBMZXQgZm9sbG93aW5nIGRvY3VtZW50IGJlIHRoZSBkb2N1bWVudCBh
ZnRlciBkb2N1bWVudCBpbiBkb2NzLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vCisgICAgICAgICAg
ICAvLyBzdWNoIGRvY3VtZW50LgorICAgICAgICAgICAgRG9jdW1lbnQqIGN1cnJlbnREb2MgPSAq
Y3VycmVudDsKKyAgICAgICAgICAgIERvY3VtZW50KiBmb2xsb3dpbmdEb2MgPSBmb2xsb3dpbmcg
IT0gZG9jcy5lbmQoKSA/ICpmb2xsb3dpbmcgOiAwOworCisgICAgICAgICAgICAvLyAyLiBJZiBm
b2xsb3dpbmcgZG9jdW1lbnQgaXMgbnVsbCwgcHVzaCBjb250ZXh0IG9iamVjdCBvbiBkb2N1bWVu
dCdzIGZ1bGxzY3JlZW4gZWxlbWVudAorICAgICAgICAgICAgLy8gc3RhY2ssIGFuZCBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1
YmJsZXMgYXR0cmlidXRlCisgICAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSBvbiB0aGUgZG9jdW1l
bnQuCisgICAgICAgICAgICBpZiAoIWZvbGxvd2luZ0RvYykgeworICAgICAgICAgICAgICAgIGN1
cnJlbnREb2MtPnB1c2hGdWxsc2NyZWVuRWxlbWVudFN0YWNrKGVsZW1lbnQpOworICAgICAgICAg
ICAgICAgIGFkZERvY3VtZW50VG9FdmVudFF1ZXVlKGN1cnJlbnREb2MpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyAzLiBPdGhlcndp
c2UsIGlmIGRvY3VtZW50J3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIGVpdGhlciBlbXB0
eSBvciBpdHMgdG9wIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGlzIG5vdCBmb2xsb3dpbmcgZG9j
dW1lbnQncyBicm93c2luZyBjb250ZXh0IGNvbnRhaW5lciwKKyAgICAgICAgICAgIEVsZW1lbnQq
IHRvcEVsZW1lbnQgPSBjdXJyZW50RG9jLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpOworICAg
ICAgICAgICAgaWYgKCF0b3BFbGVtZW50IHx8IHRvcEVsZW1lbnQgIT0gZm9sbG93aW5nRG9jLT5v
d25lckVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIC4uLnB1c2ggZm9sbG93aW5nIGRv
Y3VtZW50J3MgYnJvd3NpbmcgY29udGV4dCBjb250YWluZXIgb24gZG9jdW1lbnQncyBmdWxsc2Ny
ZWVuIGVsZW1lbnQKKyAgICAgICAgICAgICAgICAvLyBzdGFjaywgYW5kIHF1ZXVlIGEgdGFzayB0
byBmaXJlIGFuIGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ugd2l0aCBpdHMgYnViYmxlcyBh
dHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSBvbiBkb2N1bWVudC4KKyAg
ICAgICAgICAgICAgICBjdXJyZW50RG9jLT5wdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhmb2xs
b3dpbmdEb2MtPm93bmVyRWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBhZGREb2N1bWVudFRv
RXZlbnRRdWV1ZShjdXJyZW50RG9jKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gNC4gT3RoZXJ3aXNlLCBkbyBub3RoaW5nIGZvciB0
aGlzIGRvY3VtZW50LiBJdCBzdGF5cyB0aGUgc2FtZS4KKyAgICAgICAgfSB3aGlsZSAoKytjdXJy
ZW50ICE9IGRvY3MuZW5kKCkpOworCisgICAgICAgIC8vIDUuIFJldHVybiwgYW5kIHJ1biB0aGUg
cmVtYWluaW5nIHN0ZXBzIGFzeW5jaHJvbm91c2x5LgorICAgICAgICAvLyA2LiBPcHRpb25hbGx5
LCBwZXJmb3JtIHNvbWUgYW5pbWF0aW9uLgogICAgICAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxs
U2NyZWVuID0gZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVDsKICAgICAgICAg
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxl
bWVudCk7CisKKyAgICAgICAgLy8gNy4gT3B0aW9uYWxseSwgZGlzcGxheSBhIG1lc3NhZ2UgaW5k
aWNhdGluZyBob3cgdGhlIHVzZXIgY2FuIGV4aXQgZGlzcGxheWluZyB0aGUgY29udGV4dCBvYmpl
Y3QgZnVsbHNjcmVlbi4KICAgICAgICAgcmV0dXJuOwogICAgIH0gd2hpbGUgKDApOwotICAgIAor
CiAgICAgbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLmFwcGVuZChlbGVtZW50ID8g
ZWxlbWVudCA6IGRvY3VtZW50RWxlbWVudCgpKTsKICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxh
eVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6d2Via2l0Q2FuY2Vs
RnVsbFNjcmVlbigpCiB7Ci0gICAgaWYgKCFwYWdlKCkgfHwgIW1fZnVsbFNjcmVlbkVsZW1lbnQp
CisgICAgLy8gVGhlIE1vemlsbGEgImNhbmNlbEZ1bGxTY3JlZW4oKSIgQVBJIGJlaGF2ZXMgbGlr
ZSB0aGUgVzNDICJmdWxseSBleGl0IGZ1bGxzY3JlZW4iIGJlaGF2aW9yLCB3aGljaAorICAgIC8v
IGlzIGRlZmluZWQgYXM6IAorICAgIC8vICJUbyBmdWxseSBleGl0IGZ1bGxzY3JlZW4gYWN0IGFz
IGlmIHRoZSBleGl0RnVsbHNjcmVlbigpIG1ldGhvZCB3YXMgaW52b2tlZCBvbiB0aGUgdG9wLWxl
dmVsIGJyb3dzaW5nCisgICAgLy8gY29udGV4dCdzIGRvY3VtZW50IGFuZCBzdWJzZXF1ZW50bHkg
ZW1wdHkgdGhhdCBkb2N1bWVudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4iCisgICAgaWYg
KCF0b3BEb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBUbyBhY2hpZXZlIHRoYXQgYWltLCByZW1vdmUgYWxsIHRoZSBlbGVtZW50
cyBmcm9tIHRoZSB0b3AgZG9jdW1lbnQncyBzdGFjayBleGNlcHQgZm9yIHRoZSBmaXJzdCBiZWZv
cmUKKyAgICAvLyBjYWxsaW5nIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk6CisgICAgRGVxdWU8UmVm
UHRyPEVsZW1lbnQ+ID4gcmVwbGFjZW1lbnRGdWxsc2NyZWVuRWxlbWVudFN0YWNrOworICAgIHJl
cGxhY2VtZW50RnVsbHNjcmVlbkVsZW1lbnRTdGFjay5wcmVwZW5kKHRvcERvY3VtZW50KCktPndl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkpOworICAgIHRvcERvY3VtZW50KCktPm1fZnVsbFNjcmVl
bkVsZW1lbnRTdGFjay5zd2FwKHJlcGxhY2VtZW50RnVsbHNjcmVlbkVsZW1lbnRTdGFjayk7CisK
KyAgICB0b3BEb2N1bWVudCgpLT53ZWJraXRFeGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIERv
Y3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbigpCit7CisgICAgLy8gVGhlIGV4aXRGdWxsc2Ny
ZWVuKCkgbWV0aG9kIG11c3QgcnVuIHRoZXNlIHN0ZXBzOgorICAgIAorICAgIC8vIDEuIExldCBk
b2MgYmUgdGhlIGNvbnRleHQgb2JqZWN0LiAoaS5lLiAidGhpcyIpCisgICAgRG9jdW1lbnQqIGRv
YyA9IHRoaXM7CisKKyAgICAvLyAyLiBJZiBkb2MncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sg
aXMgZW1wdHksIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4KKyAgICBpZiAobV9mdWxsU2NyZWVuRWxl
bWVudFN0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVu
RWxlbWVudC5nZXQoKSk7CisgICAgLy8gMy4gTGV0IGRlc2NlbmRhbnRzIGJlIGFsbCB0aGUgZG9j
J3MgZGVzY2VuZGFudCBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnRzIHdpdGggYSBub24tZW1w
dHkgZnVsbHNjcmVlbgorICAgIC8vIGVsZW1lbnQgc3RhY2sgKGlmIGFueSksIG9yZGVyZWQgc28g
dGhhdCB0aGUgY2hpbGQgb2YgdGhlIGRvYyBpcyBsYXN0IGFuZCB0aGUgZG9jdW1lbnQgZnVydGhl
c3QKKyAgICAvLyBhd2F5IGZyb20gdGhlIGRvYyBpcyBmaXJzdC4KKyAgICBEZXF1ZTxSZWZQdHI8
RG9jdW1lbnQ+ID4gZGVzY2VuZGFudHM7CisgICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9IGZy
YW1lKCkgPyBmcmFtZSgpLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpIDogMDsgZGVzY2VuZGFudDsg
ZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAg
ICAgaWYgKGRlc2NlbmRhbnQtPmRvY3VtZW50KCktPndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkp
CisgICAgICAgICAgICBkZXNjZW5kYW50cy5wcmVwZW5kKGRlc2NlbmRhbnQtPmRvY3VtZW50KCkp
OworICAgIH0KKyAgICAgICAgCisgICAgLy8gNC4gRm9yIGVhY2ggZGVzY2VuZGFudCBpbiBkZXNj
ZW5kYW50cywgZW1wdHkgZGVzY2VuZGFudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjaywgYW5k
IHF1ZXVlIGEKKyAgICAvLyB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNo
YW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSBvbiBkZXNjZW5kYW50
LgorICAgIGZvciAoRGVxdWU8UmVmUHRyPERvY3VtZW50PiA+OjppdGVyYXRvciBpID0gZGVzY2Vu
ZGFudHMuYmVnaW4oKTsgaSAhPSBkZXNjZW5kYW50cy5lbmQoKTsgKytpKSB7CisgICAgICAgICgq
aSktPmNsZWFyRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpOworICAgICAgICBhZGREb2N1bWVudFRv
RXZlbnRRdWV1ZSgoaS0+Z2V0KCkpOworICAgIH0KKworICAgIC8vIDUuIFdoaWxlIGRvYyBpcyBu
b3QgbnVsbCwgcnVuIHRoZXNlIHN1YnN0ZXBzOgorICAgIEVsZW1lbnQqIG5ld1RvcCA9IDA7Cisg
ICAgd2hpbGUgKGRvYykgeworICAgICAgICAvLyAxLiBQb3AgdGhlIHRvcCBlbGVtZW50IG9mIGRv
YydzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4KKyAgICAgICAgZG9jLT5wb3BGdWxsc2NyZWVu
RWxlbWVudFN0YWNrKCk7CisKKyAgICAgICAgLy8gICAgSWYgZG9jJ3MgZnVsbHNjcmVlbiBlbGVt
ZW50IHN0YWNrIGlzIG5vbi1lbXB0eSBhbmQgdGhlIGVsZW1lbnQgbm93IGF0IHRoZSB0b3AgaXMg
ZWl0aGVyCisgICAgICAgIC8vICAgIG5vdCBpbiBhIGRvY3VtZW50IG9yIGl0cyBub2RlIGRvY3Vt
ZW50IGlzIG5vdCBkb2MsIHJlcGVhdCB0aGlzIHN1YnN0ZXAuCisgICAgICAgIG5ld1RvcCA9IGRv
Yy0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICAgICAgaWYgKG5ld1RvcCAmJiAoIW5l
d1RvcC0+aW5Eb2N1bWVudCgpIHx8IG5ld1RvcC0+ZG9jdW1lbnQoKSAhPSBkb2MpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYW4g
ZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNoYW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBz
ZXQgdG8gdHJ1ZQorICAgICAgICAvLyBvbiBkb2MuCisgICAgICAgIE5vZGUqIHRhcmdldCA9IGRv
Yy0+bV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAg
ICAgICAgICB0YXJnZXQgPSBkb2M7CisgICAgICAgIGFkZERvY3VtZW50VG9FdmVudFF1ZXVlKGRv
Yyk7CisKKyAgICAgICAgLy8gMy4gSWYgZG9jJ3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlz
IGVtcHR5IGFuZCBkb2MncyBicm93c2luZyBjb250ZXh0IGhhcyBhIGJyb3dzaW5nIGNvbnRleHQK
KyAgICAgICAgLy8gY29udGFpbmVyLCBzZXQgZG9jIHRvIHRoYXQgYnJvd3NpbmcgY29udGV4dCBj
b250YWluZXIncyBub2RlIGRvY3VtZW50LgorICAgICAgICBpZiAoIW5ld1RvcCAmJiBkb2MtPm93
bmVyRWxlbWVudCgpKQorICAgICAgICAgICAgZG9jID0gZG9jLT5vd25lckVsZW1lbnQoKS0+ZG9j
dW1lbnQoKTsKKworICAgICAgICAvLyA0LiBPdGhlcndpc2UsIHNldCBkb2MgdG8gbnVsbC4KKyAg
ICAgICAgZG9jID0gMDsKKyAgICB9CisKKyAgICAvLyA2LiBSZXR1cm4sIGFuZCBydW4gdGhlIHJl
bWFpbmluZyBzdGVwcyBhc3luY2hyb25vdXNseS4KKyAgICAvLyA3LiBPcHRpb25hbGx5LCBwZXJm
b3JtIHNvbWUgYW5pbWF0aW9uLgorCisgICAgLy8gT25seSBleGl0IG91dCBvZiBmdWxsIHNjcmVl
biB3aW5kb3cgbW9kZSBpZiB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGVsZW1lbnRzIGluIHRoZSAK
KyAgICAvLyBmdWxsIHNjcmVlbiBzdGFjay4KKyAgICBpZiAoIW5ld1RvcCkgeworICAgICAgICBw
YWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVs
bFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
T3RoZXJ3aXNlLCBub3RpZnkgdGhlIGNocm9tZSBvZiB0aGUgbmV3IGZ1bGwgc2NyZWVuIGVsZW1l
bnQuCisgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZvckVs
ZW1lbnQobmV3VG9wKTsgICAgICAKK30KKworYm9vbCBEb2N1bWVudDo6d2Via2l0RnVsbHNjcmVl
bkVuYWJsZWQoKSBjb25zdAoreworICAgIC8vIDQuIFRoZSBmdWxsc2NyZWVuRW5hYmxlZCBhdHRy
aWJ1dGUgbXVzdCByZXR1cm4gdHJ1ZSBpZiB0aGUgY29udGV4dCBvYmplY3QgYW5kIGFsbCBhbmNl
c3RvcgorICAgIC8vIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudHMgaGF2ZSB0aGVpciBmdWxs
c2NyZWVuIGVuYWJsZWQgZmxhZyBzZXQsIG9yIGZhbHNlIG90aGVyd2lzZS4KKworICAgIC8vIFRv
cC1sZXZlbCBicm93c2luZyBjb250ZXh0cyBhcmUgaW1wbGllZCB0byBoYXZlIHRoZWlyIGFsbG93
RnVsbFNjcmVlbiBhdHRyaWJ1dGUgc2V0LgorICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXIgPSBvd25lckVsZW1lbnQoKTsKKyAgICBpZiAoIW93bmVyKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKCFvd25lci0+aXNGcmFtZUVsZW1lbnRCYXNlKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIXN0YXRpY19jYXN0PEhUTUxG
cmFtZUVsZW1lbnRCYXNlKj4ob3duZXIpLT5hbGxvd0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9IHdoaWxlICgob3duZXIgPSBvd25lci0+ZG9jdW1lbnQoKS0+
b3duZXJFbGVtZW50KCkpKTsKKworICAgIHJldHVybiB0cnVlOyAgICAgICAgCiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVs
ZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIEFTU0VSVChwYWdlKCkgJiYgcGFn
ZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKKworICAgIC8vIFByb3RlY3Qg
YWdhaW5zdCBiZWluZyBjYWxsZWQgYWZ0ZXIgdGhlIGRvY3VtZW50IGhhcyBiZWVuIHJlbW92ZWQg
ZnJvbSB0aGUgcGFnZS4KKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
QVNTRVJUKHBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSk7CiAKICAgICBp
ZiAobV9mdWxsU2NyZWVuUmVuZGVyZXIpCiAgICAgICAgIG1fZnVsbFNjcmVlblJlbmRlcmVyLT51
bndyYXBSZW5kZXJlcigpOwpAQCAtNTExNSwxNCArNTMwNCwxOSBAQCB2b2lkIERvY3VtZW50Ojp3
ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogICAg
IAogdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50KikKIHsKKyAgICBpZiAoIW1fZnVsbFNjcmVlbkVsZW1lbnQpCisgICAgICAgIHJldHVybjsK
KyAgICAKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVu
dCgpOwogCi0gICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQobV9m
dWxsU2NyZWVuRWxlbWVudCk7CiAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lci5zdGFy
dE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVl
bkZvckVsZW1lbnQoRWxlbWVudCopCiB7CisgICAgaWYgKCFtX2Z1bGxTY3JlZW5FbGVtZW50KQor
ICAgICAgICByZXR1cm47CisKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5zZXRDb250YWluc0Z1
bGxTY3JlZW5FbGVtZW50T25BbmNlc3RvcnNDcm9zc2luZ0ZyYW1lQm91bmRhcmllcyhmYWxzZSk7
CiAgICAgCiAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5F
bGVtZW50KCk7CkBAIC01MTM1LDcgKzUzMjksNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRF
eGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCiAgICAgaWYgKG1fZnVsbFNjcmVlblJl
bmRlcmVyKQogICAgICAgICBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+dW53cmFwUmVuZGVyZXIoKTsK
IAotICAgIG1fZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBwZW5kKG1fZnVsbFNj
cmVlbkVsZW1lbnQucmVsZWFzZSgpKTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKICAg
ICBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgCiAgICAgbV9mdWxsU2NyZWVuQ2hh
bmdlRGVsYXlUaW1lci5zdGFydE9uZVNob3QoMCk7CkBAIC01MjAxLDI4ICs1Mzk1LDM0IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldEZ1bGxTY3JlZW5SZW5kZXJlckJhY2tncm91bmRDb2xvcihDb2xvciBi
YWNrZ3JvdW5kQ29sb3IpCiAgICAgCiB2b2lkIERvY3VtZW50OjpmdWxsU2NyZWVuQ2hhbmdlRGVs
YXlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopCiB7Ci0gICAgd2hpbGUgKCFtX2Z1bGxTY3Jl
ZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IG1fZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUudGFrZUZp
cnN0KCk7Ci0gICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1
bWVudEVsZW1lbnQoKTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBjaGFuZ2VRdWV1ZTsKKyAg
ICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLnN3YXAoY2hhbmdlUXVldWUpOwor
CisgICAgd2hpbGUgKCFjaGFuZ2VRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPE5v
ZGU+IG5vZGUgPSBjaGFuZ2VRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgaWYgKCFub2RlKQor
ICAgICAgICAgICAgbm9kZSA9IGRvY3VtZW50RWxlbWVudCgpOwogCiAgICAgICAgIC8vIElmIHRo
ZSBlbGVtZW50IHdhcyByZW1vdmVkIGZyb20gb3VyIHRyZWUsIGFsc28gbWVzc2FnZSB0aGUgZG9j
dW1lbnRFbGVtZW50LgotICAgICAgICBpZiAoIWNvbnRhaW5zKGVsZW1lbnQuZ2V0KCkpKQotICAg
ICAgICAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQoZG9jdW1l
bnRFbGVtZW50KCkpOworICAgICAgICBpZiAoIWNvbnRhaW5zKG5vZGUuZ2V0KCkpKQorICAgICAg
ICAgICAgY2hhbmdlUXVldWUuYXBwZW5kKGRvY3VtZW50RWxlbWVudCgpKTsKICAgICAgICAgCi0g
ICAgICAgIGVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgICAgICBub2Rl
LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKICAgICB9CiAKLSAgICB3aGlsZSAoIW1fZnVs
bFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRy
PEVsZW1lbnQ+IGVsZW1lbnQgPSBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50VGFyZ2V0UXVldWUudGFr
ZUZpcnN0KCk7Ci0gICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgIGVsZW1lbnQgPSBk
b2N1bWVudEVsZW1lbnQoKTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBlcnJvclF1ZXVlOwor
ICAgIG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5zd2FwKGVycm9yUXVldWUpOwor
ICAgIAorICAgIHdoaWxlICghZXJyb3JRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRy
PE5vZGU+IG5vZGUgPSBlcnJvclF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoIW5vZGUp
CisgICAgICAgICAgICBub2RlID0gZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIAotICAgICAg
ICAvLyBJZiB0aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIG91ciB0cmVlLCBhbHNvIG1lc3Nh
Z2UgdGhlIGRvY3VtZW50RWxlbWVudC4KLSAgICAgICAgaWYgKCFjb250YWlucyhlbGVtZW50Lmdl
dCgpKSkKLSAgICAgICAgICAgIG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS5hcHBl
bmQoZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICAvLyBJZiB0aGUgbm9kZSB3YXMgcmVtb3Zl
ZCBmcm9tIG91ciB0cmVlLCBhbHNvIG1lc3NhZ2UgdGhlIGRvY3VtZW50RWxlbWVudC4KKyAgICAg
ICAgaWYgKCFjb250YWlucyhub2RlLmdldCgpKSkKKyAgICAgICAgICAgIGVycm9yUXVldWUuYXBw
ZW5kKGRvY3VtZW50RWxlbWVudCgpKTsKICAgICAgICAgCi0gICAgICAgIGVsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmVycm9y
RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmVycm9yRXZlbnQsIHRydWUsIGZh
bHNlKSk7CiAgICAgfQogfQogCkBAIC01MjYzLDYgKzU0NjMsMzUgQEAgdm9pZCBEb2N1bWVudDo6
c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sIGZsYWcpCiAgICAgICAgIHNjaGVkdWxlRm9yY2Vk
U3R5bGVSZWNhbGMoKTsKICAgICB9CiB9CisKK3ZvaWQgRG9jdW1lbnQ6OmNsZWFyRnVsbHNjcmVl
bkVsZW1lbnRTdGFjaygpCit7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmNsZWFyKCk7
Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBvcEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soKQoreworICAg
IGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2sucmVtb3ZlRmlyc3QoKTsKK30KKwordm9p
ZCBEb2N1bWVudDo6cHVzaEZ1bGxzY3JlZW5FbGVtZW50U3RhY2soRWxlbWVudCogZWxlbWVudCkK
K3sKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2sucHJlcGVuZChlbGVtZW50KTsKK30KKwor
dm9pZCBEb2N1bWVudDo6YWRkRG9jdW1lbnRUb0V2ZW50UXVldWUoRG9jdW1lbnQqIGRvYykKK3sK
KyAgICBBU1NFUlQoZG9jKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBkb2MtPndlYmtpdEZ1bGxzY3Jl
ZW5FbGVtZW50KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHRhcmdldCA9IGRvYy0+d2Vi
a2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAg
IHRhcmdldCA9IGRvYzsKKyAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmFw
cGVuZCh0YXJnZXQpOworfQogI2VuZGlmCiAKIHZvaWQgRG9jdW1lbnQ6OmRlY3JlbWVudExvYWRF
dmVudERlbGF5Q291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxZTMwNWQ0NjBiYWQ2NWVi
OTdjYzBiMDIxNGI5YmYyYjc4ODNkNjIxLi40MTdkM2IxNmM0ZTg5MTU4MjcyNmY1YTUxNTY1MTgx
MmY2ZWQ4YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTA3OCw2ICsxMDc4LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZUZ1bGxTY3JlZW5FbGVtZW50T2ZTdWJ0cmVlKE5vZGUqLCBi
b29sIGFtb25nQ2hpbGRyZW5Pbmx5ID0gZmFsc2UpOwogICAgIGJvb2wgaXNBbmltYXRpbmdGdWxs
U2NyZWVuKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wpOwor
CisgICAgLy8gVzNDIEFQSQorICAgIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25z
dDsKKyAgICBFbGVtZW50KiB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suaXNFbXB0eSgpID8gbV9mdWxsU2NyZWVuRWxlbWVu
dFN0YWNrLmZpcnN0KCkuZ2V0KCkgOiAwOyB9CisgICAgdm9pZCB3ZWJraXRFeGl0RnVsbHNjcmVl
bigpOwogI2VuZGlmCiAKICAgICAvLyBVc2VkIHRvIGFsbG93IGVsZW1lbnQgdGhhdCBsb2FkcyBk
YXRhIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBhIEZyYW1lTG9hZGVyIHRvIGRlbGF5IHRoZSAnbG9h
ZCcgZXZlbnQuCkBAIC0xMTg4LDYgKzExOTMsMTMgQEAgcHJpdmF0ZToKIAogICAgIEhUTUxDb2xs
ZWN0aW9uKiBjYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKIAorI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKyAgICB2b2lkIGNsZWFyRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpOwor
ICAgIHZvaWQgcG9wRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpOworICAgIHZvaWQgcHVzaEZ1bGxz
Y3JlZW5FbGVtZW50U3RhY2soRWxlbWVudCopOworICAgIHZvaWQgYWRkRG9jdW1lbnRUb0V2ZW50
UXVldWUoRG9jdW1lbnQqKTsKKyNlbmRpZgorCiAgICAgaW50IG1fZ3VhcmRSZWZDb3VudDsKIAog
ICAgIE93blB0cjxDU1NTdHlsZVNlbGVjdG9yPiBtX3N0eWxlU2VsZWN0b3I7CkBAIC0xNDIwLDEw
ICsxNDMyLDExIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJv
b2wgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbjsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9m
dWxsU2NyZWVuRWxlbWVudDsKKyAgICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3Jl
ZW5FbGVtZW50U3RhY2s7CiAgICAgUmVuZGVyRnVsbFNjcmVlbiogbV9mdWxsU2NyZWVuUmVuZGVy
ZXI7CiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXI7Ci0g
ICAgRGVxdWU8UmVmUHRyPEVsZW1lbnQ+ID4gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRR
dWV1ZTsKLSAgICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5FcnJvckV2ZW50
VGFyZ2V0UXVldWU7CisgICAgRGVxdWU8UmVmUHRyPE5vZGU+ID4gbV9mdWxsU2NyZWVuQ2hhbmdl
RXZlbnRUYXJnZXRRdWV1ZTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBtX2Z1bGxTY3JlZW5F
cnJvckV2ZW50VGFyZ2V0UXVldWU7CiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nRnVsbFNjcmVlbjsK
ICAgICBMYXlvdXRSZWN0IG1fc2F2ZWRQbGFjZWhvbGRlckZyYW1lUmVjdDsKICAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKaW5kZXggYjNlMGFhM2EwYmEyOTI4ODg0NDJmZTU1MGM0ZGQxNTM5ZGQ3ZDI2ZS4u
NGU0YjdlM2JmZTFiMWZjOWNkYjMyNGZlOWQ4YjQ3MTViMWRlYmMwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsCkBAIC0yNDEsMTAgKzI0MSwxNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgLy8gTW96aWxsYSB2ZXJzaW9u
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBib29sZWFu
IHdlYmtpdElzRnVsbFNjcmVlbjsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJs
ZWRBdFJ1bnRpbWVdIGJvb2xlYW4gd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2Vk
OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gRWxlbWVu
dCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQ7CiAgICAgICAgIFtWOEVuYWJsZWRBdFJ1
bnRpbWVdIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworCisgICAgICAgIC8vIFczQyB2
ZXJzaW9uCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBi
b29sZWFuIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gRWxlbWVudCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudDsK
KyAgICAgICAgW1Y4RW5hYmxlZEF0UnVudGltZV0gdm9pZCB3ZWJraXRFeGl0RnVsbHNjcmVlbigp
OwogI2VuZGlmCiAKICAgICAgICAgV2ViS2l0TmFtZWRGbG93IHdlYmtpdEdldEZsb3dCeU5hbWUo
aW4gRE9NU3RyaW5nIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGM2OTdmMDA5NDA4
ZWE2OTMzOWMyZDYzZDBjY2FhMmQxYmUxYWJjYjYuLmMxYzJhY2I4ZjUzNTZkNmUxMjc2ZWE1MmJm
YTA3OTIzNjMyZTk3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE4NTgsOSArMTg1OCwx
NCBAQCBib29sIEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIGNoaWxkQ29udGV4dAogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpCit7
CisgICAgZG9jdW1lbnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRoaXMsIEFMTE9X
X0tFWUJPQVJEX0lOUFVULCBEb2N1bWVudDo6RW5mb3JjZUlGcmFtZUFsbG93RnVsU2NyZWVuUmVx
dWlyZW1lbnQpOworfQorCiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKHVu
c2lnbmVkIHNob3J0IGZsYWdzKQogewotICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVu
Rm9yRWxlbWVudCh0aGlzLCBmbGFncywgRG9jdW1lbnQ6OkVuZm9yY2VJRnJhbWVBbGxvd0Z1bFNj
cmVlblJlcXVpcmVtZW50KTsKKyAgICBkb2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZvckVs
ZW1lbnQodGhpcywgKGZsYWdzIHwgTEVHQUNZX01PWklMTEFfUkVRVUVTVCksIERvY3VtZW50OjpF
bmZvcmNlSUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1aXJlbWVudCk7CiB9CiAKIGJvb2wgRWxlbWVu
dDo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRl
eCA3MzU1MDk4NTJiYWU2ZjQ2YzU0YTllYzNlMWE1YzIwYzI1YTcyMzdkLi40MTI4ODAzNTRmYWE5
ZDMzOGVlOGFkZDA1MjJmNTU2MTQxNWMxZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM3Niwx
MyArMzc2LDE3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgZW51bSB7Ci0gICAgICAgIEFMTE9XX0tFWUJPQVJEX0lOUFVUID0gMQorICAgICAgICBBTExP
V19LRVlCT0FSRF9JTlBVVCA9IDEgPDwgMCwKKyAgICAgICAgTEVHQUNZX01PWklMTEFfUkVRVUVT
VCA9IDEgPDwgMSwKICAgICB9OwogICAgIAogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW4odW5zaWduZWQgc2hvcnQgZmxhZ3MpOwogICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGJvb2wpOworCisgICAg
Ly8gVzNDIEFQSQorICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKICNlbmRpZgog
CiAgICAgdmlydHVhbCBib29sIGlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAppbmRleCA4NzI1YmNiYzE5Y2JjMmI4MWE3YmJlNjFkODA4OWVmOTg1OTk2
ODA2Li45NTViZDQ3MGFhNjg2NzM1NzE1YmY0NjA0YjhkYjU2YzBiYTQwNzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCkBAIC0xMjksOCArMTI5LDEyIEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgog
CiAjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVO
X0FQSQorICAgICAgICAvLyBNb3ppbGxhIHZlcnNpb24KICAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgQUxMT1dfS0VZQk9BUkRfSU5QVVQgPSAxOwogICAgICAgICBbVjhFbmFibGVkQXRSdW50
aW1lXSB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKGluIFtPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKKworICAgICAgICAvLyBXM0MgdmVyc2lv
bgorICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lXSB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2Ny
ZWVuKCk7CiAjZW5kaWYKIAogICAgICAgICAvLyBDU1MgUmVnaW9ucyBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5Y2ZlOGIzNDg4YTc1ZDU2OGRhODkwNzQzNzFiM2I5
NDEwNGJiMGE2Li4zODg4YjRlNWVhNTA5NmRkODM1ZWQzMTAwOTRhYjg5NGE4NjYwZWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02Mjg2LDE0ICs2Mjg2LDkgQEAgYm9v
bCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKIC0gKEJPT0wpX3N1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQ6KGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnQqKWVsZW1lbnQgd2l0aEtleWJvYXJkOihCT09MKXdpdGhLZXlib2FyZAog
ewotICAgIGlmICh3aXRoS2V5Ym9hcmQpCi0gICAgICAgIHJldHVybiBOTzsKLQogICAgIGlmICgh
W1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBmdWxsU2NyZWVuRW5hYmxlZF0p
CiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGUgZWxlbWVudCBpcyBp
biBhbiBJRnJhbWUsIHdlIHNob3VsZCBlbnN1cmUgaXQgaGFzIAotICAgIC8vIGFuIEFsbG93c0Z1
bGxTY3JlZW49WUVTIGF0dHJpYnV0ZSBiZWZvcmUgYWxsb3dpbmcgZnVsbHNjcmVlbiBhY2Nlc3Mu
CiAgICAgcmV0dXJuIFlFUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDE3YzA3MGI2ZGRiMDkzMzRh
Y2Y2ZDU0ZWUyY2E0Y2FkMDU2ZWEwNDAuLjIxZmU5Y2RhZTRmZDIzZDA0YWUwYzE4MDY5MTBlNzhm
NTY2ODgxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKQEAgLTkxLDEwICs5MSw3IEBAIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sIGFuaW1hdGluZykK
IAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9v
bCB3aXRoS2V5Ym9hcmQsIGJvb2wmIHN1cHBvcnRzKQogewotICAgIGlmICh3aXRoS2V5Ym9hcmQp
Ci0gICAgICAgIHN1cHBvcnRzID0gZmFsc2U7Ci0gICAgZWxzZQotICAgICAgICBzdXBwb3J0cyA9
IHRydWU7CisgICAgc3VwcG9ydHMgPSB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxs
U2NyZWVuTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4v
V2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCmluZGV4IDdlNGE0ZTNjMjYyMzA0NjZkMTI0ZTBiMWI4
ODVjZmIzMjE0MmI0YWIuLmJjOWY2MTYzMzI2OGFmZGU2MzZkNmZkYWI3M2I5ZGYzOTYxNGUwZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxs
U2NyZWVuTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2Ny
ZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcApAQCAtMTAxLDggKzEwMSw2IEBAIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxl
bWVudCogZWxlbWVudCkKIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlcjo6ZXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGVs
ZW1lbnQpOwotICAgIEFTU0VSVChtX2VsZW1lbnQgPT0gZWxlbWVudCk7CiAgICAgbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKS5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
bV9wYWdlLmdldCgpLCBlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbQppbmRleCA4N2VlY2U0NDFhOTE4ZDg5MTlhZjdjMzNiNDE2NjBkMDAxYmY0ODI0Li5l
ODU1NzkxZGIzZjcxYmJhYjNjZmVmMjM4MTA4MTgzZTZhYjZlOTEwIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtMjUyLDE4ICsyNTIsMjggQEAgRHVtcFJlbmRlclRy
ZWVEcmFnZ2luZ0luZm8gKmRyYWdnaW5nSW5mbyA9IG5pbDsKICAgICByZXR1cm4gWUVTOwogfQog
Ci0tICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGVudGVyRnVsbFNjcmVlbkZvckVs
ZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQgbGlzdGVuZXI6KE5TT2JqZWN0PFdlYktpdEZ1bGxT
Y3JlZW5MaXN0ZW5lcj4qKWxpc3RlbmVyCistICh2b2lkKWVudGVyRnVsbFNjcmVlbldpdGhMaXN0
ZW5lcjooTlNPYmplY3Q8V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyPiopbGlzdGVuZXIKIHsKICAg
ICBbbGlzdGVuZXIgd2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbl07CiAgICAgW2xpc3RlbmVyIHdl
YmtpdERpZEVudGVyRnVsbFNjcmVlbl07CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXdlYlZpZXcgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50IGxp
c3RlbmVyOihOU09iamVjdDxXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI+KilsaXN0ZW5lcgorLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
OihET01FbGVtZW50KillbGVtZW50IGxpc3RlbmVyOihOU09iamVjdDxXZWJLaXRGdWxsU2NyZWVu
TGlzdGVuZXI+KilsaXN0ZW5lcgoreworICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0
b3IoZW50ZXJGdWxsU2NyZWVuV2l0aExpc3RlbmVyOikgd2l0aE9iamVjdDpsaXN0ZW5lciBhZnRl
ckRlbGF5OjBdOworfQorCistICh2b2lkKWV4aXRGdWxsU2NyZWVuV2l0aExpc3RlbmVyOihOU09i
amVjdDxXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI+KilsaXN0ZW5lcgogewogICAgIFtsaXN0ZW5l
ciB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5dOwogICAgIFtsaXN0ZW5lciB3ZWJraXREaWRFeGl0
RnVsbFNjcmVlbl07CiB9CiAKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50IGxpc3RlbmVyOihOU09i
amVjdDxXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI+KilsaXN0ZW5lcgoreworICAgIFtzZWxmIHBl
cmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZXhpdEZ1bGxTY3JlZW5XaXRoTGlzdGVuZXI6KSB3aXRo
T2JqZWN0Omxpc3RlbmVyIGFmdGVyRGVsYXk6MF07Cit9CisKIC0gKEJPT0wpd2ViVmlldzooV2Vi
VmlldyAqKXdlYlZpZXcgZGlkUHJlc3NNaXNzaW5nUGx1Z2luQnV0dG9uOihET01FbGVtZW50ICop
ZWxlbWVudAogewogICAgIHByaW50ZigiTUlTU0lORyBQTFVHSU4gQlVUVE9OIFBSRVNTRURcbiIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDMwZGY3ZGY1NWNlNjJhZDQyYTc1OWI2YjhjZTYwMTcyY2FlYWE1YTYuLjcwYzVl
YTQ1ZjFhMDM5NTI3Y2ZiYjJjMjkzOTBiNWFmZmRhY2JhMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IFczQyBGdWxsIFNjcmVlbiBBUEkgcHJvcG9zYWwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjYwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVs
ZW1lbnQtc3RhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFibGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sOgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZW1vdmVkLmh0bWw6CisgICAgICAgICogZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanM6CisKIDIwMTItMDMtMTIgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBUaGlzIGJhc2VsaW5lIGFs
c28gYXBwbGllcyB0byBjaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQsIHNvIHdlIGNhbiBtb3ZlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3Rh
Y2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVt
ZW50LXN0YWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTA2Y2UxM2IyZGRlYmU5OWRjM2Mz
MGYyZTllNDE2Y2ZmYjJhNjZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1
IEBACitUZXN0IGZvciBXM0MgRnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrLgorCitUbyB0ZXN0IG1h
bnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1bGwgc2NyZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91
bGQgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4KKworR28gZnVsbCBzY3JlZW4gKG9uZSkKK0dvIGZ1
bGwgc2NyZWVuICh0d28pCitFeGl0IGZ1bGwgc2NyZWVuICh0d28pCitFVkVOVCh3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50
LmlkID09ICdvbmUnKSBPSworRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVE
IChkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudC5pZCA9PSAndHdvJykgT0sKK0VWRU5U
KHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0RnVsbHNj
cmVlbkVsZW1lbnQuaWQgPT0gJ29uZScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2suaHRtbCBiL0xh
eW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc4NzcwZWYwZDRlNjIxZTNmNzU2ODNiM2EzNTY2MGU3YmJlNDhjY2MKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3Rh
Y2suaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQ+CisgICAgdmFyIG9uZTsKKyAgICB2YXIgdHdvOworCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgb25lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpOworICAg
ICAgICB0d28gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJyk7CisKKyAgICAgICAgdmFy
IGNhbGxiYWNrOworICAgICAgICB2YXIgZnVsbHNjcmVlbkNoYW5nZWQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNr
KGV2ZW50KQorICAgICAgICB9OworICAgICAgICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOworCisgICAgICAgIHZhciBv
bmVFbnRlcmVkRnVsbHNjcmVlbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudC5pZCIsICJvbmUiKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrID0gdHdvRW50ZXJlZEZ1bGxzY3JlZW47CisgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIHJ1bldpdGhLZXlE
b3duKGZ1bmN0aW9uKCkgeyB0d28ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsgfSk7CisgICAg
ICAgIH07CisKKyAgICAgICAgdmFyIHR3b0VudGVyZWRGdWxsc2NyZWVuID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVt
ZW50LmlkIiwgInR3byIpOworICAgICAgICAgICAgY2FsbGJhY2sgPSB0d29FeGl0ZWRGdWxsc2Ny
ZWVuOworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpOworICAgICAgICB9Owor
CisgICAgICAgIHZhciB0d29FeGl0ZWRGdWxsc2NyZWVuID0gZnVuY3Rpb24oKSB7IAorICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudC5pZCIs
ICJvbmUiKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfTsKKworICAgICAgICBj
YWxsYmFjayA9IG9uZUVudGVyZWRGdWxsc2NyZWVuOworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKSB7
IG9uZS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOyB9KTsKKyAgICB9CisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdCBmb3IgPGEg
aHJlZj0iaHR0cDovL2R2Y3MudzMub3JnL2hnL2Z1bGxzY3JlZW4vcmF3LWZpbGUvdGlwL092ZXJ2
aWV3Lmh0bWwjZnVsbHNjcmVlbi1lbGVtZW50LXN0YWNrIj5XM0MgRnVsbHNjcmVlbiBlbGVtZW50
IHN0YWNrPC9hPi48L3A+CisgICAgPHA+VG8gdGVzdCBtYW51YWxseSwgY2xpY2sgdGhlICJHbyBm
dWxsIHNjcmVlbiIgYnV0dG9uIC0gdGhlIHBhZ2Ugc2hvdWxkIGVudGVyIGZ1bGwgc2NyZWVuIG1v
ZGUuPC9wPgorICAgIDxkaXY+CisgICAgICAgIDxidXR0b24gb25jbGljaz0ib25lLndlYmtpdFJl
cXVlc3RGdWxsc2NyZWVuKCkiPkdvIGZ1bGwgc2NyZWVuIChvbmUpPC9idXR0b24+CisgICAgPC9k
aXY+CisgICAgPGRpdiBpZD1vbmU+CisgICAgICAgIDxidXR0b24gb25jbGljaz0idHdvLndlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuKCkiPkdvIGZ1bGwgc2NyZWVuICh0d28pPC9idXR0b24+CisgICAg
ICAgIDxkaXYgaWQ9dHdvPgorICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC53
ZWJraXRFeGl0RnVsbHNjcmVlbigpIj5FeGl0IGZ1bGwgc2NyZWVuICh0d28pPC9idXR0b24+Cisg
ICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5h
YmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVu
YWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMmMwZDJkNDE1NmI5NWZiNjVlOWVjYzc5
MzE2MTE2NGFjNThiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0
ZXN0cyB0aGUgZnVsbHNjcmVlbkVuYWJsZWQgcHJvcGVydHkgbGFpZCBvdXQgaW4gc2VjdGlvbiA0
IG9mIHRoZSBXM0MgRnVsbCBTY3JlZW4gQVBJCitFWFBFQ1RFRCAoaWZyYW1lLmNvbnRlbnREb2N1
bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCA9PSAndHJ1ZScpIE9LCitFWFBFQ1RFRCAoaWZy
YW1lMi5jb250ZW50RG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQgPT0gJ2ZhbHNlJykg
T0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQxMGJlNTI1NTFmNGY4ZWZhNmI5MjQ4OTE0ZjE2
ODRkNjRjOTkyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxib2R5PgorPGRpdj5UaGlz
IHRlc3RzIHRoZSA8Y29kZT5mdWxsc2NyZWVuRW5hYmxlZDwvY29kZT4gcHJvcGVydHkgbGFpZCBv
dXQgaW4gc2VjdGlvbiA0IG9mIHRoZSBXM0MgCis8YSBocmVmPSJodHRwOi8vZHZjcy53My5vcmcv
aGcvZnVsbHNjcmVlbi9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbCI+RnVsbCBTY3JlZW4gQVBJ
PC9hPjwvZGl2PgorPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpKTsKKyAgICBpZnJhbWUuc2V0
QXR0cmlidXRlKCd3ZWJraXRhbGxvd2Z1bGxzY3JlZW4nLCAndHJ1ZScpOworICAgIHZhciBpZnJh
bWUyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lmcmFtZScpKTsKKyAgICB0ZXN0RXhwZWN0ZWQoJ2lmcmFtZS5jb250ZW50RG9j
dW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQnLCB0cnVlKTsKKyAgICB0ZXN0RXhwZWN0ZWQo
J2lmcmFtZTIuY29udGVudERvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkJywgZmFsc2Up
OworICAgIGVuZFRlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbAppbmRleCA3Nzk4MzJh
N2YyMzhiZjNlNmM0MWQyNzAwN2JlNDIzY2VjOTZkYzE0Li4wZTc4MTliOWFkNTJmODY0Zjg4ZDMy
OWUxMmJkN2Q2NmFkOTQxOTM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbApAQCAtOSw3ICs5LDEwIEBACiAg
ICAgfSBlbHNlIHsKICAgICAgICAgd2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNj
cmVlbmNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBsb2dSZXN1bHQoIkVudGVyZWQg
ZnVsbCBzY3JlZW4uIiwgZmFsc2UpOyAKKyAgICAgICAgICAgZW5kVGVzdCgpOwogICAgICAgICB9
KTsKKyAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7CiAgICAgICAgIHdh
aXRGb3JFdmVudEFuZEVuZChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5lcnJvcicpOwogICAg
ICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJl
cXVlc3QtcmVtb3ZlZC5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1y
ZXF1ZXN0LXJlbW92ZWQuaHRtbAppbmRleCA5MjY0MjE5YzI0NmI2ZmE4YmZmM2FjYTAwNmI2NTc3
OWEyNjVjZThiLi4yMzMwZmZiZTkxNDcxY2FmOWZjZGU2YjIyOGYzMjk4N2QzYzlkZjQ4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVtb3Zl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1y
ZW1vdmVkLmh0bWwKQEAgLTEyLDYgKzEyLDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAg
ICAgY29uc29sZVdyaXRlKCJTVUNDRUVEIC0gZGlkIG5vdCBlbnRlciBmdWxsIHNjcmVlbiEiKTsK
ICAgICB9KTsKIAorICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7CisKICAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LmFwcGVuZENoaWxkKGRpdik7CiAgICAgY29uc29sZVdyaXRlKCJBZGRlZCBjaGls
ZCBlbGVtZW50LiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXJlc3RyaWN0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQwMzBkZWZj
OGEwNTUzODZkNGI2NGZhMmU5Mjk0ZmViMGE3NzdmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoZSByZXN0cmljdGlvbnMgdG8gZW50ZXJpbmcg
ZnVsbCBzY3JlZW4gbW9kZSBsYWlkIG91dCBpbiBzZWN0aW9uIDQuMSBvZiB0aGUgVzNDIEZ1bGwg
U2NyZWVuIEFQSQorIlRoZSBjb250ZXh0IG9iamVjdCBpcyBub3QgaW4gYSBkb2N1bWVudC4iCitF
VkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCisiVGhlIGNvbnRleHQgb2JqZWN0J3Mgbm9kZSBk
b2N1bWVudCwgb3IgYW4gYW5jZXN0b3IgYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50IGRvZXMg
bm90IGhhdmUgdGhlIGZ1bGxzY3JlZW4gZW5hYmxlZCBmbGFnIHNldC4iCitFVkVOVCh3ZWJraXRm
dWxsc2NyZWVuZXJyb3IpCisiVGhlIGNvbnRleHQgb2JqZWN0J3Mgbm9kZSBkb2N1bWVudCBmdWxs
c2NyZWVuIGVsZW1lbnQgc3RhY2sgaXMgbm90IGVtcHR5IGFuZCBpdHMgdG9wIGVsZW1lbnQgaXMg
bm90IGFuIGFuY2VzdG9yIG9mIHRoZSBjb250ZXh0IG9iamVjdC4iCitFVkVOVCh3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlKQorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmVycm9yKQorRVZFTlQod2Via2l0
ZnVsbHNjcmVlbmNoYW5nZSkKKyJBIGRlc2NlbmRhbnQgYnJvd3NpbmcgY29udGV4dCdzIGRvY3Vt
ZW50IGhhcyBhIG5vbi1lbXB0eSBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2suIgorRVZFTlQod2Vi
a2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5lcnJvcikKK0VWRU5U
KHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCisiVGhpcyBhbGdvcml0aG0gaXMgbm90IGFsbG93ZWQg
dG8gc2hvdyBhIHBvcC11cC4iCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCitFTkQgT0Yg
VEVTVAorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1yZXN0cmljdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
cmVzdHJpY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkyNGIwMzU0ODkxYjAzNjM5MDA3MTRhZWZm
ZDUwYWJjNTA5NDJjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0bWwKQEAgLTAsMCArMSw2NyBAQAorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCk7Ij4KKzxkaXY+VGhpcyB0ZXN0cyB0aGUgcmVzdHJpY3Rpb25zIHRvIGVu
dGVyaW5nIGZ1bGwgc2NyZWVuIG1vZGUgbGFpZCBvdXQgaW4gc2VjdGlvbiA0LjEgb2YgdGhlIFcz
QyAKKzxhIGhyZWY9Imh0dHA6Ly9kdmNzLnczLm9yZy9oZy9mdWxsc2NyZWVuL3Jhdy1maWxlL3Rp
cC9PdmVydmlldy5odG1sIj5GdWxsIFNjcmVlbiBBUEk8L2E+PC9kaXY+Cis8c2NyaXB0IHNyYz0i
ZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIC8vIEJhaWwgb3V0
IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMgbm90IGVuYWJsZWQgb3IgaXMgbWlzc2lu
ZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0g
dW5kZWZpbmVkKSB7CisgICAgICAgIGxvZ1Jlc3VsdChmYWxzZSwgIkVsZW1lbnQucHJvdG90eXBl
LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVuZGVmaW5lZCIpOworICAgICAgICBlbmRUZXN0
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHJ1blRlc3QgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgnIlRoZSBjb250ZXh0IG9iamVjdCBpcyBub3QgaW4gYSBk
b2N1bWVudC4iJyk7CisgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGRvY3VtZW50LCAnd2Via2l0
ZnVsbHNjcmVlbmVycm9yJywgc3RlcDIpOworICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVu
Y3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAgICB9OworCisg
ICAgICAgIHZhciBzdGVwMiA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRl
KCciVGhlIGNvbnRleHQgb2JqZWN0XCdzIG5vZGUgZG9jdW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJy
b3dzaW5nIGNvbnRleHRcJ3MgZG9jdW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgZnVsbHNjcmVlbiBl
bmFibGVkIGZsYWcgc2V0LiInKQorICAgICAgICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUn
KSk7CisgICAgICAgICAgICB2YXIgZGl2ID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lLmNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKSk7CisKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoaWZyYW1lLmNvbnRlbnRE
b2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5lcnJvcicsIHN0ZXAzKTsKKyAgICAgICAgICAgIHJ1
bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZGl2LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsK
KyAgICAgICAgfTsKKworICAgICAgICB2YXIgc3RlcDMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnIlRoZSBjb250ZXh0IG9iamVjdFwncyBub2RlIGRvY3VtZW50IGZ1
bGxzY3JlZW4gZWxlbWVudCBzdGFjayBpcyBub3QgZW1wdHkgYW5kIGl0cyB0b3AgZWxlbWVudCBp
cyBub3QgYW4gYW5jZXN0b3Igb2YgdGhlIGNvbnRleHQgb2JqZWN0LiInKTsKKyAgICAgICAgICAg
IHZhciBkaXYgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICAgICAgdmFyIGRpdjIgPSBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNl
KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5j
aGFuZ2UnLCBzdGVwNCk7CisgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQud2Via2l0RXhpdEZ1
bGxzY3JlZW4oKTsgCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcnVuV2l0
aEtleURvd24oZnVuY3Rpb24oKXtkaXYyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYu
d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAgICB9OworCisgICAgICAgIHZhciBz
dGVwNCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCciQSBkZXNjZW5k
YW50IGJyb3dzaW5nIGNvbnRleHRcJ3MgZG9jdW1lbnQgaGFzIGEgbm9uLWVtcHR5IGZ1bGxzY3Jl
ZW4gZWxlbWVudCBzdGFjay4iJyk7CisgICAgICAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpKTsKKyAgICAgICAgICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3dlYmtpdGFsbG93ZnVsbHNj
cmVlbicsICd0cnVlJyk7CisgICAgICAgICAgICB2YXIgZGl2ID0gaWZyYW1lLmNvbnRlbnREb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaWZyYW1lLmNvbnRlbnREb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgICAgICB2YXIgZGl2MiA9IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7
CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGlmcmFtZS5jb250ZW50RG9jdW1lbnQsICd3
ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgd2Fp
dEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5lcnJvcicsIGZ1bmN0aW9u
KCl7CisgICAgICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoaWZyYW1lLmNvbnRlbnRE
b2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBzdGVwNSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsgCisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rp
b24oKXtkaXYyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCl9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1
bGxzY3JlZW4oKX0pOworICAgICAgICB9OworCisgICAgICAgIHZhciBzdGVwNSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCciVGhpcyBhbGdvcml0aG0gaXMgbm90IGFs
bG93ZWQgdG8gc2hvdyBhIHBvcC11cC4iJyk7CisgICAgICAgICAgICB2YXIgZGl2ID0gZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpKTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRmdWxs
c2NyZWVuZXJyb3InLCBlbmRUZXN0KTsKKyAgICAgICAgICAgIGRpdi53ZWJraXRSZXF1ZXN0RnVs
bHNjcmVlbigpOworICAgICAgICB9OworCisgICAgICAgIGlmICh0eXBlb2YobGF5b3V0VGVzdENv
bnRyb2xsZXIpICE9ICd1bmRlZmluZWQnKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgfQorPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKaW5kZXggNWU1YmIxYWY3YTc4
MmFjZmVjOTI1YzZkMjhiN2VmOGEyMjI0Mzc0OS4uODAxYjViYTllM2E2MTJiYWYzNjczYzZkYTU3
MThjMzU4NWJhM2Y5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVz
dC5qcwpAQCAtOTgsMTAgKzk4LDE4IEBAIGZ1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEVuZChlbGVt
ZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcpCiAgICAgd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2
ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKIH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50KGVs
ZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRPbmNl
KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCit7CisgICAgd2FpdEZvckV2ZW50KGVs
ZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQsIHRydWUpCit9CisKK2Z1bmN0aW9uIHdhaXRG
b3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0LCBvbmNlKQogewogICAgIGZ1
bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQogICAgIHsKKyAgICAgICAgaWYgKG9uY2UpCisg
ICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRD
YWxsYmFjayk7CisKICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsg
IikiKTsKIAogICAgICAgICBpZiAoZnVuYykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131563</attachid>
            <date>2012-03-13 00:25:07 -0700</date>
            <delta_ts>2012-03-16 10:31:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80660-20120313002506.patch</filename>
            <type>text/plain</type>
            <size>44714</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ3ZTU2Y2E0MzUxYjc5
NDNlMTliNTEwYThkNjJjZWQ5MTYzMGQ0ZS4uODkyMzVhZTQxMzBjMDhhODA5ZGVkOGFkNzc2MTc1
MDkzZGI4YzgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAzLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1bGwg
U2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0czogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0
bWwKKyAgICAgICAgICAgICAgIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5hYmxlZC5odG1sCisg
ICAgICAgICAgICAgICBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy5odG1sCisK
KyAgICAgICAgVGhlIFczQyBwcm9wb3NhbCBmb3IgdGFraW5nIGFyYml0cmFyeSBlbGVtZW50cyBp
bnRvIGZ1bGwtc2NyZWVuIG1vZGUgaXMgc2lnbmlmaWNhbnRseQorICAgICAgICBkaWZmZXJlbnQg
dGhhbiB0aGUgTW96aWxsYSBwcm9wb3NhbC4gRm9yIGV4YW1wbGUsIHRoZSBXM0MgaGFzIHByb3Bv
c2VkIGEgbG93ZXItY2FzZSAicyIKKyAgICAgICAgaW4gIkZ1bGxzY3JlZW4iLCB3aGljaCBtZWFu
cyB0aGUgVzNDIGFuZCBNb3ppbGxhICJyZXF1ZXN0RnVsbHNjcmVlbiIgQVBJcyBkaWZmZXIgb25s
eSBieQorICAgICAgICBpbiB0aGF0IGxvd2VyLWNhc2UgInMiLiBBbm5veWluZyBhcyB0aGlzIGlz
LCBpdCBkb2VzIGFsbG93IHVzIHRvIHJldGFpbiB0aGUgc2VtYW50aWNzIGZvcgorICAgICAgICB0
aGUgTW96aWxsYSBjYXNlIChoYXIhKS4KKworICAgICAgICBBIHNpZ25pZmljYW50IGRpZmZpY3Vs
dHkgaXMgb2JleWluZyB0aGUgbmV3IFczQyBzcGVjIHJ1bGVzIGlzIHRoYXQgd2Ugd291bGQgbGlr
ZSB0byBhcHBseSB0aGUKKyAgICAgICAgZnVsbHNjcmVlbiBDU1MgcnVsZXMgd2hpbGUgZXhpdGlu
ZyBmdWxsc2NyZWVuIG1vZGUsIHRob3VnaCB0aGUgVzNDIHNwZWMgaW5zaXN0cyB0aGF0IHRoZQor
ICAgICAgICB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudCByZXR1cm5zIHRoZSBuZXcgdmFsdWUgaW1t
ZWRpYXRlbHkuICBBcyBzdWNoLCB3ZSByZXRhaW4gdGhlIG1fZnVsbFNjcmVlbkVsZW1lbnQKKyAg
ICAgICAgdmFyaWFibGUgKGRpc3RpbmN0IGZyb20gdGhlIHRvcCBvZiB0aGUgbV9mdWxsU2NyZWVu
RWxlbWVudHMgc3RhY2spIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgIHdlYmtp
dHtXaWxsLERpZH17RW50ZXIsRXhpdH1GdWxsU2NyZWVuIGZ1bmN0aW9ucy4KKworICAgICAgICBO
ZXcgQVBJcyBmb3IgdGhlIFczQyBGdWxsc2NyZWVuIHNwZWM6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RnVsbHNjcmVlbkVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEZ1bGxzY3JlZW5FbmFibGVk
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cmVtb3ZlZExhc3RSZWYpOiBDbGVhciBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogSW1wbGVt
ZW50IHRoZSBXM0MgcmVxdWlyZW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdEV4aXRGdWxsc2NyZWVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d2Via2l0Q2FuY2VsRnVsbFNjcmVlbik6IEltcGxlbWVudCBpbiB0ZXJtcyBvZiB3ZWJraXRDYW5j
ZWxGdWxsc2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQpOiAKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJr
aXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyRmlyZWQpOiBQcm90ZWN0IGFn
YWluc3QgaXRlbXMgYmVpbmcKKyAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBldmVudCBhbmQgZXJy
b3IgcXVldWUgYnkgc3dhcHBpbmcgb3V0IGVtcHR5IHF1ZXVlcyBiZWZvcmUgc3RhcnRpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xlYXJGdWxsc2NyZWVuRWxlbWVudFN0YWNrKTog
U2ltcGxlIGFjY2Vzc29yLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBvcEZ1bGxzY3Jl
ZW5FbGVtZW50U3RhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwdXNo
RnVsbHNjcmVlbkVsZW1lbnRTdGFjayk6IERpdHRvLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToK
KworICAgICAgICBBZGQgbmV3IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgZnVuY3Rpb25zIGZvciB0
aGUgYWRkZWQgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVuY3Rpb25zLgorICAgICAgICAqIGJpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoUnVudGltZUVu
YWJsZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEV4aXRGdWxsc2Ny
ZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQpOgorCisKIDIwMTItMDMtMTIgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29yZTogQWRkIHN1cHBvcnQg
Zm9yIEF1ZGlvTm9kZSAidGFpbFRpbWUoKSIgYW5kICJsYXRlbmN5VGltZSgpIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IGNkZWY4ZjkwM2MyZTcxNWZmYWRjMTQ4MTNjOWZkNzIxMWFhMzA2NGEuLjYxM2Fj
OGFiYzkwYTkxZDAyMDJhYmQ0MjZiYjRjOTg2ZGZlNjNjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMi0wMy0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBTdXBwb3J0IFczQyBGdWxsIFNjcmVlbiBBUEkgcHJvcG9zYWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgZnVsbCBzY3Jl
ZW4gZWxlbWVudHMgdG8gYWNjZXNzIHRoZSBrZXlib2FyZC4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxl
bWVudDpXZWJDb3JlOjp3aXRoS2V5Ym9hcmQ6XSk6CisKIDIwMTItMDMtMTEgIFRpbW90aHkgSGF0
Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBob3cgdGhlIFdlYiBJ
bnNwZWN0b3IgcmVzb3VyY2VzIGFyZSBsb2FkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRjNjRkNTRhYjc5
MjYzYzgzZDIxZGEzYzM1YTkxMjQ3MzU1ZjUzOS4uNzMyMWY4MWU3ODdjY2YwZTAyZDE5NGRiMjEw
OWQyZmM1NzA5MTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTA4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgVzNDIEZ1
bGwgU2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbGxvdyBmdWxsIHNjcmVlbiBlbGVtZW50cyB0byBhY2Nlc3MgdGhlIGtl
eWJvYXJkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0
c0Z1bGxTY3JlZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2Ny
ZWVuTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpl
eGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorCiAyMDEyLTAzLTEyICBFbnJpY2EgQ2FzdWNjaSAg
PGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MjogcmVtb3ZlIE5TUGFzdGVib2Fy
ZCBhY2Nlc3MgZm9yIHByb21pc2VkIGRhdGEgZnJvbSB0aGUgV2ViUHJvY2VzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaAppbmRleCBlZTM4ZDA0ZTI0NjJkZjhlYjIyZTU5ZWM0MTI5YTg5ZGQ2NGVlMDdmLi40Mzcz
NjU1MzBhMjNlMTg1MDk4MGI0OTZkNWQ1NzRlZmZiZmZiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApA
QCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgd2Via2l0SURCVHJhbnNh
Y3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNJbmRleGVkREJFbmFibGVkOyB9CiAKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8gTW96aWxsYSB2ZXJzaW9uCiAgICAgc3RhdGljIGJv
b2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0V2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNGdWxsU2NyZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQog
ICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJu
IGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KQEAgLTc4LDYgKzc5LDEyIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWRFbmFibGVk
KCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbkVu
YWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisKKyAgICAvLyBXM0Mg
dmVyc2lvbgorICAgIHN0YXRpYyBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCgp
IHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCB3ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFi
bGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Via2l0RXhpdEZ1bGxzY3JlZW5FbmFibGVkKCkgeyBy
ZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdFJl
cXVlc3RGdWxsc2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7
IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDgwOWY5OTA0MTBiMmRmOGE3YTFlMzBkMjFjYWIxMzE4Y2ExMDE0NmEuLmQ0NGVl
ZmY4ZjZhOTMwYWI4NGZiNDk2MTRlYWRmNzI2YmNkZWNkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtNjA3LDYgKzYwNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkK
ICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnQgPSAwOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisgICAgICAgIG1fZnVsbFNjcmVl
bkVsZW1lbnRTdGFjay5jbGVhcigpOwogI2VuZGlmCiAKICAgICAgICAgLy8gcmVtb3ZlQWxsQ2hp
bGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywKQEAgLTUwNTEsNDMgKzUwNTIs
MjMxIEBAIGJvb2wgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9y
RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBzaG9ydCBmbGFncywgRnVsbFNjcmVl
bkNoZWNrVHlwZSBjaGVja1R5cGUpCiB7Ci0gICAgZG8gewotICAgICAgICBpZiAoIXBhZ2UoKSB8
fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQotICAgICAgICAgICAg
YnJlYWs7CisgICAgLy8gVGhlIE1vemlsbGEgRnVsbCBTY3JlZW4gQVBJIDxodHRwczovL3dpa2ku
bW96aWxsYS5vcmcvR2Vja286RnVsbFNjcmVlbkFQST4gaGFzIGRpZmZlcmVudCByZXF1aXJlbWVu
dHMKKyAgICAvLyBmb3IgZnVsbCBzY3JlZW4gbW9kZSwgYW5kIGRvIG5vdCBoYXZlIHRoZSBjb25j
ZXB0IG9mIGEgZnVsbCBzY3JlZW4gZWxlbWVudCBzdGFjay4KKyAgICBib29sIGluTGVnYWN5TW96
aWxsYU1vZGUgPSAoZmxhZ3MgJiBFbGVtZW50OjpMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUKTsKIAor
ICAgIGRvIHsKICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgZWxlbWVudCA9IGRv
Y3VtZW50RWxlbWVudCgpOwotICAgICAgICAKKyAKKyAgICAgICAgLy8gMS4gSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZSwgdGVybWluYXRlIHRoZXNlIHN0ZXBzIGFu
ZCBxdWV1ZSBhIHRhc2sgdG8gZmlyZQorICAgICAgICAvLyBhbiBldmVudCBuYW1lZCBmdWxsc2Ny
ZWVuZXJyb3Igd2l0aCBpdHMgYnViYmxlcyBhdHRyaWJ1dGUgc2V0IHRvIHRydWUgb24gdGhlIGNv
bnRleHQgb2JqZWN0J3MgCisgICAgICAgIC8vIG5vZGUgZG9jdW1lbnQ6CisKKyAgICAgICAgLy8g
VGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBpbiBhIGRvY3VtZW50LgorICAgICAgICBpZiAoIWVs
ZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIFRo
ZSBjb250ZXh0IG9iamVjdCdzIG5vZGUgZG9jdW1lbnQsIG9yIGFuIGFuY2VzdG9yIGJyb3dzaW5n
IGNvbnRleHQncyBkb2N1bWVudCBkb2VzIG5vdCBoYXZlCisgICAgICAgIC8vIHRoZSBmdWxsc2Ny
ZWVuIGVuYWJsZWQgZmxhZyBzZXQuCiAgICAgICAgIGlmIChjaGVja1R5cGUgPT0gRW5mb3JjZUlG
cmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1lbnQgJiYgIWZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JF
bGVtZW50KGVsZW1lbnQpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorCisgICAgICAg
IC8vIFRoZSBjb250ZXh0IG9iamVjdCdzIG5vZGUgZG9jdW1lbnQgZnVsbHNjcmVlbiBlbGVtZW50
IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQgaXRzIHRvcCBlbGVtZW50CisgICAgICAgIC8vIGlzIG5v
dCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4dCBvYmplY3QuIChOT1RFOiBJZ25vcmUgdGhpcyBy
ZXF1aXJlbWVudCBpZiB0aGUgcmVxdWVzdCB3YXMKKyAgICAgICAgLy8gbWFkZSB2aWEgdGhlIGxl
Z2FjeSBNb3ppbGxhLXN0eWxlIEFQSS4pCisgICAgICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVu
dFN0YWNrLmlzRW1wdHkoKSAmJiAhbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmZpcnN0KCktPmNv
bnRhaW5zKGVsZW1lbnQpICYmICFpbkxlZ2FjeU1vemlsbGFNb2RlKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgLy8gQSBkZXNjZW5kYW50IGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVu
dCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrLgorICAgICAgICBib29s
IGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNrID0gZmFsc2U7CisgICAgICAgIGZvciAoRnJhbWUq
IGRlc2NlbmRhbnQgPSBmcmFtZSgpID8gZnJhbWUoKS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSA6
IDA7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoZGVzY2VuZGFudC0+ZG9jdW1lbnQoKS0+d2Via2l0
RnVsbHNjcmVlbkVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGRlc2NlbmRlbnRIYXNOb25F
bXB0eVN0YWNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBpZiAoZGVzY2VuZGVudEhhc05vbkVtcHR5U3RhY2sgJiYgIWlu
TGVnYWN5TW96aWxsYU1vZGUpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBUaGlz
IGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZCB0byBzaG93IGEgcG9wLXVwLgorICAgICAgICBpZiAo
IWRvbVdpbmRvdygpLT5hbGxvd1BvcFVwKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAvLyBUaGVyZSBpcyBhIHByZXZpb3VzbHktZXN0YWJsaXNoZWQgdXNlciBwcmVmZXJlbmNlLCBz
ZWN1cml0eSByaXNrLCBvciBwbGF0Zm9ybSBsaW1pdGF0aW9uLgorICAgICAgICBpZiAoIXBhZ2Uo
KSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQsIGZsYWdzICYgRWxlbWVu
dDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAor
CisgICAgICAgIC8vIDIuIExldCBkb2MgYmUgZWxlbWVudCdzIG5vZGUgZG9jdW1lbnQuIChpLmUu
ICJ0aGlzIikKKyAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHRoaXM7CisKKyAgICAgICAgLy8gMy4g
TGV0IGRvY3MgYmUgYWxsIGRvYydzIGFuY2VzdG9yIGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVu
dHMgKGlmIGFueSkgYW5kIGRvYy4KKyAgICAgICAgRGVxdWU8RG9jdW1lbnQqPiBkb2NzOworCisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgIGRvY3MucHJlcGVuZChkb2MpOworICAgICAgICAgICAg
ZG9jID0gZG9jLT5vd25lckVsZW1lbnQoKSA/IGRvYy0+b3duZXJFbGVtZW50KCktPmRvY3VtZW50
KCkgOiAwOworICAgICAgICB9IHdoaWxlIChkb2MpOworCisgICAgICAgIC8vIDQuIEZvciBlYWNo
IGRvY3VtZW50IGluIGRvY3MsIHJ1biB0aGVzZSBzdWJzdGVwczoKKyAgICAgICAgRGVxdWU8RG9j
dW1lbnQqPjo6aXRlcmF0b3IgY3VycmVudCA9IGRvY3MuYmVnaW4oKSwgZm9sbG93aW5nID0gZG9j
cy5iZWdpbigpOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICsrZm9sbG93aW5nOworCisg
ICAgICAgICAgICAvLyAxLiBMZXQgZm9sbG93aW5nIGRvY3VtZW50IGJlIHRoZSBkb2N1bWVudCBh
ZnRlciBkb2N1bWVudCBpbiBkb2NzLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vCisgICAgICAgICAg
ICAvLyBzdWNoIGRvY3VtZW50LgorICAgICAgICAgICAgRG9jdW1lbnQqIGN1cnJlbnREb2MgPSAq
Y3VycmVudDsKKyAgICAgICAgICAgIERvY3VtZW50KiBmb2xsb3dpbmdEb2MgPSBmb2xsb3dpbmcg
IT0gZG9jcy5lbmQoKSA/ICpmb2xsb3dpbmcgOiAwOworCisgICAgICAgICAgICAvLyAyLiBJZiBm
b2xsb3dpbmcgZG9jdW1lbnQgaXMgbnVsbCwgcHVzaCBjb250ZXh0IG9iamVjdCBvbiBkb2N1bWVu
dCdzIGZ1bGxzY3JlZW4gZWxlbWVudAorICAgICAgICAgICAgLy8gc3RhY2ssIGFuZCBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhbiBldmVudCBuYW1lZCBmdWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1
YmJsZXMgYXR0cmlidXRlCisgICAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSBvbiB0aGUgZG9jdW1l
bnQuCisgICAgICAgICAgICBpZiAoIWZvbGxvd2luZ0RvYykgeworICAgICAgICAgICAgICAgIGN1
cnJlbnREb2MtPnB1c2hGdWxsc2NyZWVuRWxlbWVudFN0YWNrKGVsZW1lbnQpOworICAgICAgICAg
ICAgICAgIGFkZERvY3VtZW50VG9FdmVudFF1ZXVlKGN1cnJlbnREb2MpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyAzLiBPdGhlcndp
c2UsIGlmIGRvY3VtZW50J3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIGVpdGhlciBlbXB0
eSBvciBpdHMgdG9wIGVsZW1lbnQKKyAgICAgICAgICAgIC8vIGlzIG5vdCBmb2xsb3dpbmcgZG9j
dW1lbnQncyBicm93c2luZyBjb250ZXh0IGNvbnRhaW5lciwKKyAgICAgICAgICAgIEVsZW1lbnQq
IHRvcEVsZW1lbnQgPSBjdXJyZW50RG9jLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpOworICAg
ICAgICAgICAgaWYgKCF0b3BFbGVtZW50IHx8IHRvcEVsZW1lbnQgIT0gZm9sbG93aW5nRG9jLT5v
d25lckVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIC4uLnB1c2ggZm9sbG93aW5nIGRv
Y3VtZW50J3MgYnJvd3NpbmcgY29udGV4dCBjb250YWluZXIgb24gZG9jdW1lbnQncyBmdWxsc2Ny
ZWVuIGVsZW1lbnQKKyAgICAgICAgICAgICAgICAvLyBzdGFjaywgYW5kIHF1ZXVlIGEgdGFzayB0
byBmaXJlIGFuIGV2ZW50IG5hbWVkIGZ1bGxzY3JlZW5jaGFuZ2Ugd2l0aCBpdHMgYnViYmxlcyBh
dHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSBvbiBkb2N1bWVudC4KKyAg
ICAgICAgICAgICAgICBjdXJyZW50RG9jLT5wdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhmb2xs
b3dpbmdEb2MtPm93bmVyRWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBhZGREb2N1bWVudFRv
RXZlbnRRdWV1ZShjdXJyZW50RG9jKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gNC4gT3RoZXJ3aXNlLCBkbyBub3RoaW5nIGZvciB0
aGlzIGRvY3VtZW50LiBJdCBzdGF5cyB0aGUgc2FtZS4KKyAgICAgICAgfSB3aGlsZSAoKytjdXJy
ZW50ICE9IGRvY3MuZW5kKCkpOworCisgICAgICAgIC8vIDUuIFJldHVybiwgYW5kIHJ1biB0aGUg
cmVtYWluaW5nIHN0ZXBzIGFzeW5jaHJvbm91c2x5LgorICAgICAgICAvLyA2LiBPcHRpb25hbGx5
LCBwZXJmb3JtIHNvbWUgYW5pbWF0aW9uLgogICAgICAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxs
U2NyZWVuID0gZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVDsKICAgICAgICAg
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxl
bWVudCk7CisKKyAgICAgICAgLy8gNy4gT3B0aW9uYWxseSwgZGlzcGxheSBhIG1lc3NhZ2UgaW5k
aWNhdGluZyBob3cgdGhlIHVzZXIgY2FuIGV4aXQgZGlzcGxheWluZyB0aGUgY29udGV4dCBvYmpl
Y3QgZnVsbHNjcmVlbi4KICAgICAgICAgcmV0dXJuOwogICAgIH0gd2hpbGUgKDApOwotICAgIAor
CiAgICAgbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLmFwcGVuZChlbGVtZW50ID8g
ZWxlbWVudCA6IGRvY3VtZW50RWxlbWVudCgpKTsKICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxh
eVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6d2Via2l0Q2FuY2Vs
RnVsbFNjcmVlbigpCiB7Ci0gICAgaWYgKCFwYWdlKCkgfHwgIW1fZnVsbFNjcmVlbkVsZW1lbnQp
CisgICAgLy8gVGhlIE1vemlsbGEgImNhbmNlbEZ1bGxTY3JlZW4oKSIgQVBJIGJlaGF2ZXMgbGlr
ZSB0aGUgVzNDICJmdWxseSBleGl0IGZ1bGxzY3JlZW4iIGJlaGF2aW9yLCB3aGljaAorICAgIC8v
IGlzIGRlZmluZWQgYXM6IAorICAgIC8vICJUbyBmdWxseSBleGl0IGZ1bGxzY3JlZW4gYWN0IGFz
IGlmIHRoZSBleGl0RnVsbHNjcmVlbigpIG1ldGhvZCB3YXMgaW52b2tlZCBvbiB0aGUgdG9wLWxl
dmVsIGJyb3dzaW5nCisgICAgLy8gY29udGV4dCdzIGRvY3VtZW50IGFuZCBzdWJzZXF1ZW50bHkg
ZW1wdHkgdGhhdCBkb2N1bWVudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4iCisgICAgaWYg
KCF0b3BEb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBUbyBhY2hpZXZlIHRoYXQgYWltLCByZW1vdmUgYWxsIHRoZSBlbGVtZW50
cyBmcm9tIHRoZSB0b3AgZG9jdW1lbnQncyBzdGFjayBleGNlcHQgZm9yIHRoZSBmaXJzdCBiZWZv
cmUKKyAgICAvLyBjYWxsaW5nIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk6CisgICAgRGVxdWU8UmVm
UHRyPEVsZW1lbnQ+ID4gcmVwbGFjZW1lbnRGdWxsc2NyZWVuRWxlbWVudFN0YWNrOworICAgIHJl
cGxhY2VtZW50RnVsbHNjcmVlbkVsZW1lbnRTdGFjay5wcmVwZW5kKHRvcERvY3VtZW50KCktPndl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkpOworICAgIHRvcERvY3VtZW50KCktPm1fZnVsbFNjcmVl
bkVsZW1lbnRTdGFjay5zd2FwKHJlcGxhY2VtZW50RnVsbHNjcmVlbkVsZW1lbnRTdGFjayk7CisK
KyAgICB0b3BEb2N1bWVudCgpLT53ZWJraXRFeGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIERv
Y3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbigpCit7CisgICAgLy8gVGhlIGV4aXRGdWxsc2Ny
ZWVuKCkgbWV0aG9kIG11c3QgcnVuIHRoZXNlIHN0ZXBzOgorICAgIAorICAgIC8vIDEuIExldCBk
b2MgYmUgdGhlIGNvbnRleHQgb2JqZWN0LiAoaS5lLiAidGhpcyIpCisgICAgRG9jdW1lbnQqIGRv
YyA9IHRoaXM7CisKKyAgICAvLyAyLiBJZiBkb2MncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sg
aXMgZW1wdHksIHRlcm1pbmF0ZSB0aGVzZSBzdGVwcy4KKyAgICBpZiAobV9mdWxsU2NyZWVuRWxl
bWVudFN0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVu
RWxlbWVudC5nZXQoKSk7CisgICAgLy8gMy4gTGV0IGRlc2NlbmRhbnRzIGJlIGFsbCB0aGUgZG9j
J3MgZGVzY2VuZGFudCBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnRzIHdpdGggYSBub24tZW1w
dHkgZnVsbHNjcmVlbgorICAgIC8vIGVsZW1lbnQgc3RhY2sgKGlmIGFueSksIG9yZGVyZWQgc28g
dGhhdCB0aGUgY2hpbGQgb2YgdGhlIGRvYyBpcyBsYXN0IGFuZCB0aGUgZG9jdW1lbnQgZnVydGhl
c3QKKyAgICAvLyBhd2F5IGZyb20gdGhlIGRvYyBpcyBmaXJzdC4KKyAgICBEZXF1ZTxSZWZQdHI8
RG9jdW1lbnQ+ID4gZGVzY2VuZGFudHM7CisgICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9IGZy
YW1lKCkgPyBmcmFtZSgpLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpIDogMDsgZGVzY2VuZGFudDsg
ZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAg
ICAgaWYgKGRlc2NlbmRhbnQtPmRvY3VtZW50KCktPndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkp
CisgICAgICAgICAgICBkZXNjZW5kYW50cy5wcmVwZW5kKGRlc2NlbmRhbnQtPmRvY3VtZW50KCkp
OworICAgIH0KKyAgICAgICAgCisgICAgLy8gNC4gRm9yIGVhY2ggZGVzY2VuZGFudCBpbiBkZXNj
ZW5kYW50cywgZW1wdHkgZGVzY2VuZGFudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjaywgYW5k
IHF1ZXVlIGEKKyAgICAvLyB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNo
YW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSBvbiBkZXNjZW5kYW50
LgorICAgIGZvciAoRGVxdWU8UmVmUHRyPERvY3VtZW50PiA+OjppdGVyYXRvciBpID0gZGVzY2Vu
ZGFudHMuYmVnaW4oKTsgaSAhPSBkZXNjZW5kYW50cy5lbmQoKTsgKytpKSB7CisgICAgICAgICgq
aSktPmNsZWFyRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpOworICAgICAgICBhZGREb2N1bWVudFRv
RXZlbnRRdWV1ZShpLT5nZXQoKSk7CisgICAgfQorCisgICAgLy8gNS4gV2hpbGUgZG9jIGlzIG5v
dCBudWxsLCBydW4gdGhlc2Ugc3Vic3RlcHM6CisgICAgRWxlbWVudCogbmV3VG9wID0gMDsKKyAg
ICB3aGlsZSAoZG9jKSB7CisgICAgICAgIC8vIDEuIFBvcCB0aGUgdG9wIGVsZW1lbnQgb2YgZG9j
J3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrLgorICAgICAgICBkb2MtPnBvcEZ1bGxzY3JlZW5F
bGVtZW50U3RhY2soKTsKKworICAgICAgICAvLyAgICBJZiBkb2MncyBmdWxsc2NyZWVuIGVsZW1l
bnQgc3RhY2sgaXMgbm9uLWVtcHR5IGFuZCB0aGUgZWxlbWVudCBub3cgYXQgdGhlIHRvcCBpcyBl
aXRoZXIKKyAgICAgICAgLy8gICAgbm90IGluIGEgZG9jdW1lbnQgb3IgaXRzIG5vZGUgZG9jdW1l
bnQgaXMgbm90IGRvYywgcmVwZWF0IHRoaXMgc3Vic3RlcC4KKyAgICAgICAgbmV3VG9wID0gZG9j
LT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpOworICAgICAgICBpZiAobmV3VG9wICYmICghbmV3
VG9wLT5pbkRvY3VtZW50KCkgfHwgbmV3VG9wLT5kb2N1bWVudCgpICE9IGRvYykpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAvLyAyLiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhbiBl
dmVudCBuYW1lZCBmdWxsc2NyZWVuY2hhbmdlIHdpdGggaXRzIGJ1YmJsZXMgYXR0cmlidXRlIHNl
dCB0byB0cnVlCisgICAgICAgIC8vIG9uIGRvYy4KKyAgICAgICAgTm9kZSogdGFyZ2V0ID0gZG9j
LT5tX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpOworICAgICAgICBpZiAoIXRhcmdldCkKKyAgICAg
ICAgICAgIHRhcmdldCA9IGRvYzsKKyAgICAgICAgYWRkRG9jdW1lbnRUb0V2ZW50UXVldWUoZG9j
KTsKKworICAgICAgICAvLyAzLiBJZiBkb2MncyBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2sgaXMg
ZW1wdHkgYW5kIGRvYydzIGJyb3dzaW5nIGNvbnRleHQgaGFzIGEgYnJvd3NpbmcgY29udGV4dAor
ICAgICAgICAvLyBjb250YWluZXIsIHNldCBkb2MgdG8gdGhhdCBicm93c2luZyBjb250ZXh0IGNv
bnRhaW5lcidzIG5vZGUgZG9jdW1lbnQuCisgICAgICAgIGlmICghbmV3VG9wICYmIGRvYy0+b3du
ZXJFbGVtZW50KCkpCisgICAgICAgICAgICBkb2MgPSBkb2MtPm93bmVyRWxlbWVudCgpLT5kb2N1
bWVudCgpOworCisgICAgICAgIC8vIDQuIE90aGVyd2lzZSwgc2V0IGRvYyB0byBudWxsLgorICAg
ICAgICBkb2MgPSAwOworICAgIH0KKworICAgIC8vIDYuIFJldHVybiwgYW5kIHJ1biB0aGUgcmVt
YWluaW5nIHN0ZXBzIGFzeW5jaHJvbm91c2x5LgorICAgIC8vIDcuIE9wdGlvbmFsbHksIHBlcmZv
cm0gc29tZSBhbmltYXRpb24uCisKKyAgICAvLyBPbmx5IGV4aXQgb3V0IG9mIGZ1bGwgc2NyZWVu
IHdpbmRvdyBtb2RlIGlmIHRoZXJlIGFyZSBubyByZW1haW5pbmcgZWxlbWVudHMgaW4gdGhlIAor
ICAgIC8vIGZ1bGwgc2NyZWVuIHN0YWNrLgorICAgIGlmICghbmV3VG9wKSB7CisgICAgICAgIHBh
Z2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxs
U2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBP
dGhlcndpc2UsIG5vdGlmeSB0aGUgY2hyb21lIG9mIHRoZSBuZXcgZnVsbCBzY3JlZW4gZWxlbWVu
dC4KKyAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudChuZXdUb3ApOyAgICAgIAorfQorCitib29sIERvY3VtZW50Ojp3ZWJraXRGdWxsc2NyZWVu
RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgLy8gNC4gVGhlIGZ1bGxzY3JlZW5FbmFibGVkIGF0dHJp
YnV0ZSBtdXN0IHJldHVybiB0cnVlIGlmIHRoZSBjb250ZXh0IG9iamVjdCBhbmQgYWxsIGFuY2Vz
dG9yCisgICAgLy8gYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50cyBoYXZlIHRoZWlyIGZ1bGxz
Y3JlZW4gZW5hYmxlZCBmbGFnIHNldCwgb3IgZmFsc2Ugb3RoZXJ3aXNlLgorCisgICAgLy8gVG9w
LWxldmVsIGJyb3dzaW5nIGNvbnRleHRzIGFyZSBpbXBsaWVkIHRvIGhhdmUgdGhlaXIgYWxsb3dG
dWxsU2NyZWVuIGF0dHJpYnV0ZSBzZXQuCisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ciA9IG93bmVyRWxlbWVudCgpOworICAgIGlmICghb3duZXIpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgZG8geworICAgICAgICBpZiAoIW93bmVyLT5pc0ZyYW1lRWxlbWVudEJhc2UoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghc3RhdGljX2Nhc3Q8SFRNTEZy
YW1lRWxlbWVudEJhc2UqPihvd25lciktPmFsbG93RnVsbFNjcmVlbigpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0gd2hpbGUgKChvd25lciA9IG93bmVyLT5kb2N1bWVudCgpLT5v
d25lckVsZW1lbnQoKSkpOworCisgICAgcmV0dXJuIHRydWU7ICAgICAgICAKIH0KIAogdm9pZCBE
b2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAgQVNTRVJUKHBhZ2UoKSAmJiBwYWdl
KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpOworCisgICAgLy8gUHJvdGVjdCBh
Z2FpbnN0IGJlaW5nIGNhbGxlZCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCBm
cm9tIHRoZSBwYWdlLgorICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQocGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKIAogICAgIGlm
IChtX2Z1bGxTY3JlZW5SZW5kZXJlcikKICAgICAgICAgbV9mdWxsU2NyZWVuUmVuZGVyZXItPnVu
d3JhcFJlbmRlcmVyKCk7CkBAIC01MTE1LDE0ICs1MzA0LDE5IEBAIHZvaWQgRG9jdW1lbnQ6Ondl
YmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
CiB2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1l
bnQqKQogeworICAgIGlmICghbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAogICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50
KCk7CiAKLSAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmFwcGVuZChtX2Z1
bGxTY3JlZW5FbGVtZW50KTsKICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudChFbGVtZW50KikKIHsKKyAgICBpZiAoIW1fZnVsbFNjcmVlbkVsZW1lbnQpCisg
ICAgICAgIHJldHVybjsKKwogICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldENvbnRhaW5zRnVs
bFNjcmVlbkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKGZhbHNlKTsK
ICAgICAKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT53aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVs
ZW1lbnQoKTsKQEAgLTUxMzUsNyArNTMyOSw3IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdERpZEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKICAgICBpZiAobV9mdWxsU2NyZWVuUmVu
ZGVyZXIpCiAgICAgICAgIG1fZnVsbFNjcmVlblJlbmRlcmVyLT51bndyYXBSZW5kZXJlcigpOwog
Ci0gICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5hcHBlbmQobV9mdWxsU2Ny
ZWVuRWxlbWVudC5yZWxlYXNlKCkpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOwogICAg
IHNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGMoKTsKICAgICAKICAgICBtX2Z1bGxTY3JlZW5DaGFu
Z2VEZWxheVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKQEAgLTUyMDEsMjggKzUzOTUsMzQgQEAgdm9p
ZCBEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyQmFja2dyb3VuZENvbG9yKENvbG9yIGJh
Y2tncm91bmRDb2xvcikKICAgICAKIHZvaWQgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VEZWxh
eVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKIHsKLSAgICB3aGlsZSAoIW1fZnVsbFNjcmVl
bkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBlbGVtZW50ID0gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS50YWtlRmly
c3QoKTsKLSAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgZWxlbWVudCA9IGRvY3Vt
ZW50RWxlbWVudCgpOworICAgIERlcXVlPFJlZlB0cjxOb2RlPiA+IGNoYW5nZVF1ZXVlOworICAg
IG1fZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuc3dhcChjaGFuZ2VRdWV1ZSk7CisK
KyAgICB3aGlsZSAoIWNoYW5nZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8Tm9k
ZT4gbm9kZSA9IGNoYW5nZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICBpZiAoIW5vZGUpCisg
ICAgICAgICAgICBub2RlID0gZG9jdW1lbnRFbGVtZW50KCk7CiAKICAgICAgICAgLy8gSWYgdGhl
IGVsZW1lbnQgd2FzIHJlbW92ZWQgZnJvbSBvdXIgdHJlZSwgYWxzbyBtZXNzYWdlIHRoZSBkb2N1
bWVudEVsZW1lbnQuCi0gICAgICAgIGlmICghY29udGFpbnMoZWxlbWVudC5nZXQoKSkpCi0gICAg
ICAgICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLmFwcGVuZChkb2N1bWVu
dEVsZW1lbnQoKSk7CisgICAgICAgIGlmICghY29udGFpbnMobm9kZS5nZXQoKSkpCisgICAgICAg
ICAgICBjaGFuZ2VRdWV1ZS5hcHBlbmQoZG9jdW1lbnRFbGVtZW50KCkpOwogICAgICAgICAKLSAg
ICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53
ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgICAgIG5vZGUt
PmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVl
bmNoYW5nZUV2ZW50LCB0cnVlLCBmYWxzZSkpOwogICAgIH0KIAotICAgIHdoaWxlICghbV9mdWxs
U2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8
RWxlbWVudD4gZWxlbWVudCA9IG1fZnVsbFNjcmVlbkVycm9yRXZlbnRUYXJnZXRRdWV1ZS50YWtl
Rmlyc3QoKTsKLSAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgZWxlbWVudCA9IGRv
Y3VtZW50RWxlbWVudCgpOworICAgIERlcXVlPFJlZlB0cjxOb2RlPiA+IGVycm9yUXVldWU7Cisg
ICAgbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLnN3YXAoZXJyb3JRdWV1ZSk7Cisg
ICAgCisgICAgd2hpbGUgKCFlcnJvclF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8
Tm9kZT4gbm9kZSA9IGVycm9yUXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICghbm9kZSkK
KyAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgCi0gICAgICAg
IC8vIElmIHRoZSBlbGVtZW50IHdhcyByZW1vdmVkIGZyb20gb3VyIHRyZWUsIGFsc28gbWVzc2Fn
ZSB0aGUgZG9jdW1lbnRFbGVtZW50LgotICAgICAgICBpZiAoIWNvbnRhaW5zKGVsZW1lbnQuZ2V0
KCkpKQotICAgICAgICAgICAgbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlLmFwcGVu
ZChkb2N1bWVudEVsZW1lbnQoKSk7CisgICAgICAgIC8vIElmIHRoZSBub2RlIHdhcyByZW1vdmVk
IGZyb20gb3VyIHRyZWUsIGFsc28gbWVzc2FnZSB0aGUgZG9jdW1lbnRFbGVtZW50LgorICAgICAg
ICBpZiAoIWNvbnRhaW5zKG5vZGUuZ2V0KCkpKQorICAgICAgICAgICAgZXJyb3JRdWV1ZS5hcHBl
bmQoZG9jdW1lbnRFbGVtZW50KCkpOwogICAgICAgICAKLSAgICAgICAgZWxlbWVudC0+ZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuZXJyb3JF
dmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuZXJyb3JFdmVudCwgdHJ1ZSwgZmFs
c2UpKTsKICAgICB9CiB9CiAKQEAgLTUyNjMsNiArNTQ2MywzNSBAQCB2b2lkIERvY3VtZW50Ojpz
ZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgZmxhZykKICAgICAgICAgc2NoZWR1bGVGb3JjZWRT
dHlsZVJlY2FsYygpOwogICAgIH0KIH0KKwordm9pZCBEb2N1bWVudDo6Y2xlYXJGdWxsc2NyZWVu
RWxlbWVudFN0YWNrKCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suY2xlYXIoKTsK
K30KKwordm9pZCBEb2N1bWVudDo6cG9wRnVsbHNjcmVlbkVsZW1lbnRTdGFjaygpCit7CisgICAg
aWYgKG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5yZW1vdmVGaXJzdCgpOworfQorCit2b2lk
IERvY3VtZW50OjpwdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhFbGVtZW50KiBlbGVtZW50KQor
eworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5wcmVwZW5kKGVsZW1lbnQpOworfQorCit2
b2lkIERvY3VtZW50OjphZGREb2N1bWVudFRvRXZlbnRRdWV1ZShEb2N1bWVudCogZG9jKQorewor
ICAgIEFTU0VSVChkb2MpOworICAgIE5vZGUqIHRhcmdldCA9IGRvYy0+d2Via2l0RnVsbHNjcmVl
bkVsZW1lbnQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgdGFyZ2V0ID0gZG9jLT53ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAg
dGFyZ2V0ID0gZG9jOworICAgIG1fZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUuYXBw
ZW5kKHRhcmdldCk7Cit9CiAjZW5kaWYKIAogdm9pZCBEb2N1bWVudDo6ZGVjcmVtZW50TG9hZEV2
ZW50RGVsYXlDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDFlMzA1ZDQ2MGJhZDY1ZWI5
N2NjMGIwMjE0YjliZjJiNzg4M2Q2MjEuLjQxN2QzYjE2YzRlODkxNTgyNzI2ZjVhNTE1NjUxODEy
ZjZlZDhjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMDc4LDYgKzEwNzgsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVtb3ZlRnVsbFNjcmVlbkVsZW1lbnRPZlN1YnRyZWUoTm9kZSosIGJv
b2wgYW1vbmdDaGlsZHJlbk9ubHkgPSBmYWxzZSk7CiAgICAgYm9vbCBpc0FuaW1hdGluZ0Z1bGxT
Y3JlZW4oKSBjb25zdDsKICAgICB2b2lkIHNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCk7CisK
KyAgICAvLyBXM0MgQVBJCisgICAgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCgpIGNvbnN0
OworICAgIEVsZW1lbnQqIHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
IW1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5pc0VtcHR5KCkgPyBtX2Z1bGxTY3JlZW5FbGVtZW50
U3RhY2suZmlyc3QoKS5nZXQoKSA6IDA7IH0KKyAgICB2b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVu
KCk7CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgdG8gYWxsb3cgZWxlbWVudCB0aGF0IGxvYWRzIGRh
dGEgd2l0aG91dCBnb2luZyB0aHJvdWdoIGEgRnJhbWVMb2FkZXIgdG8gZGVsYXkgdGhlICdsb2Fk
JyBldmVudC4KQEAgLTExODgsNiArMTE5MywxMyBAQCBwcml2YXRlOgogCiAgICAgSFRNTENvbGxl
Y3Rpb24qIGNhY2hlZENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUpOwogCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorICAgIHZvaWQgY2xlYXJGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCk7Cisg
ICAgdm9pZCBwb3BGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCk7CisgICAgdm9pZCBwdXNoRnVsbHNj
cmVlbkVsZW1lbnRTdGFjayhFbGVtZW50Kik7CisgICAgdm9pZCBhZGREb2N1bWVudFRvRXZlbnRR
dWV1ZShEb2N1bWVudCopOworI2VuZGlmCisKICAgICBpbnQgbV9ndWFyZFJlZkNvdW50OwogCiAg
ICAgT3duUHRyPENTU1N0eWxlU2VsZWN0b3I+IG1fc3R5bGVTZWxlY3RvcjsKQEAgLTE0MjAsMTAg
KzE0MzIsMTEgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9v
bCBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1
bGxTY3JlZW5FbGVtZW50OworICAgIERlcXVlPFJlZlB0cjxFbGVtZW50PiA+IG1fZnVsbFNjcmVl
bkVsZW1lbnRTdGFjazsKICAgICBSZW5kZXJGdWxsU2NyZWVuKiBtX2Z1bGxTY3JlZW5SZW5kZXJl
cjsKICAgICBUaW1lcjxEb2N1bWVudD4gbV9mdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lcjsKLSAg
ICBEZXF1ZTxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1
ZXVlOwotICAgIERlcXVlPFJlZlB0cjxFbGVtZW50PiA+IG1fZnVsbFNjcmVlbkVycm9yRXZlbnRU
YXJnZXRRdWV1ZTsKKyAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBtX2Z1bGxTY3JlZW5DaGFuZ2VF
dmVudFRhcmdldFF1ZXVlOworICAgIERlcXVlPFJlZlB0cjxOb2RlPiA+IG1fZnVsbFNjcmVlbkVy
cm9yRXZlbnRUYXJnZXRRdWV1ZTsKICAgICBib29sIG1faXNBbmltYXRpbmdGdWxsU2NyZWVuOwog
ICAgIExheW91dFJlY3QgbV9zYXZlZFBsYWNlaG9sZGVyRnJhbWVSZWN0OwogICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVyU3R5bGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAppbmRleCBiM2UwYWEzYTBiYTI5Mjg4ODQ0MmZlNTUwYzRkZDE1MzlkZDdkMjZlLi40
ZTRiN2UzYmZlMWIxZmM5Y2RiMzI0ZmU5ZDhiNDcxNWIxZGViYzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKQEAgLTI0MSwxMCArMjQxLDE2IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9B
UEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorICAgICAgICAvLyBNb3ppbGxhIHZlcnNpb24K
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIGJvb2xlYW4g
d2Via2l0SXNGdWxsU2NyZWVuOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4RW5hYmxl
ZEF0UnVudGltZV0gYm9vbGVhbiB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWQ7
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBFbGVtZW50
IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudDsKICAgICAgICAgW1Y4RW5hYmxlZEF0UnVu
dGltZV0gdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisKKyAgICAgICAgLy8gVzNDIHZl
cnNpb24KKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIGJv
b2xlYW4gd2Via2l0RnVsbHNjcmVlbkVuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBFbGVtZW50IHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50Owor
ICAgICAgICBbVjhFbmFibGVkQXRSdW50aW1lXSB2b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7
CiAjZW5kaWYKIAogICAgICAgICBXZWJLaXROYW1lZEZsb3cgd2Via2l0R2V0Rmxvd0J5TmFtZShp
biBET01TdHJpbmcgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzY5N2YwMDk0MDhl
YTY5MzM5YzJkNjNkMGNjYWEyZDFiZTFhYmNiNi4uYzFjMmFjYjhmNTM1NmQ2ZTEyNzZlYTUyYmZh
MDc5MjM2MzJlOTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTg1OCw5ICsxODU4LDE0
IEBAIGJvb2wgRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgY2hpbGRDb250ZXh0CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCit2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKK3sK
KyAgICBkb2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgQUxMT1df
S0VZQk9BUkRfSU5QVVQsIERvY3VtZW50OjpFbmZvcmNlSUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1
aXJlbWVudCk7Cit9CisKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4odW5z
aWduZWQgc2hvcnQgZmxhZ3MpCiB7Ci0gICAgZG9jdW1lbnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5G
b3JFbGVtZW50KHRoaXMsIGZsYWdzLCBEb2N1bWVudDo6RW5mb3JjZUlGcmFtZUFsbG93RnVsU2Ny
ZWVuUmVxdWlyZW1lbnQpOworICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxl
bWVudCh0aGlzLCAoZmxhZ3MgfCBMRUdBQ1lfTU9aSUxMQV9SRVFVRVNUKSwgRG9jdW1lbnQ6OkVu
Zm9yY2VJRnJhbWVBbGxvd0Z1bFNjcmVlblJlcXVpcmVtZW50KTsKIH0KIAogYm9vbCBFbGVtZW50
Ojpjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IDczNTUwOTg1MmJhZTZmNDZjNTRhOWVjM2UxYTVjMjBjMjVhNzIzN2QuLjQxMjg4MDM1NGZhYTlk
MzM4ZWU4YWRkMDUyMmY1NTYxNDE1YzFlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzc2LDEz
ICszNzYsMTcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBlbnVtIHsKLSAgICAgICAgQUxMT1dfS0VZQk9BUkRfSU5QVVQgPSAxCisgICAgICAgIEFMTE9X
X0tFWUJPQVJEX0lOUFVUID0gMSA8PCAwLAorICAgICAgICBMRUdBQ1lfTU9aSUxMQV9SRVFVRVNU
ID0gMSA8PCAxLAogICAgIH07CiAgICAgCiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bih1bnNpZ25lZCBzaG9ydCBmbGFncyk7CiAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoYm9vbCk7CisKKyAgICAv
LyBXM0MgQVBJCisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCmluZGV4IDg3MjViY2JjMTljYmMyYjgxYTdiYmU2MWQ4MDg5ZWY5ODU5OTY4
MDYuLjk1NWJkNDcwYWE2ODY3MzU3MTViZjQ2MDRiOGRiNTZjMGJhNDA3MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKQEAgLTEyOSw4ICsxMjksMTIgQEAgbW9kdWxlIGNvcmUgewogI2VuZGlmCiAK
ICNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJCisgICAgICAgIC8vIE1vemlsbGEgdmVyc2lvbgogICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBBTExPV19LRVlCT0FSRF9JTlBVVCA9IDE7CiAgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRp
bWVdIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oaW4gW09wdGlvbmFsPURlZmF1bHRJc1Vu
ZGVmaW5lZF0gdW5zaWduZWQgc2hvcnQgZmxhZ3MpOworCisgICAgICAgIC8vIFczQyB2ZXJzaW9u
CisgICAgICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWVdIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3Jl
ZW4oKTsKICNlbmRpZgogCiAgICAgICAgIC8vIENTUyBSZWdpb25zIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDljZmU4YjM0ODhhNzVkNTY4ZGE4OTA3NDM3MWIzYjk0
MTA0YmIwYTYuLjM4ODhiNGU1ZWE1MDk2ZGQ4MzVlZDMxMDA5NGFiODk0YTg2NjBlYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTYyODYsMTQgKzYyODYsOSBAQCBib29s
IExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogLSAoQk9PTClfc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudDooY29uc3QgV2Vi
Q29yZTo6RWxlbWVudCopZWxlbWVudCB3aXRoS2V5Ym9hcmQ6KEJPT0wpd2l0aEtleWJvYXJkCiB7
Ci0gICAgaWYgKHdpdGhLZXlib2FyZCkKLSAgICAgICAgcmV0dXJuIE5POwotCiAgICAgaWYgKCFb
W1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIGZ1bGxTY3JlZW5FbmFibGVkXSkK
ICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgLy8gRklYTUU6IElmIHRoZSBlbGVtZW50IGlzIGlu
IGFuIElGcmFtZSwgd2Ugc2hvdWxkIGVuc3VyZSBpdCBoYXMgCi0gICAgLy8gYW4gQWxsb3dzRnVs
bFNjcmVlbj1ZRVMgYXR0cmlidXRlIGJlZm9yZSBhbGxvd2luZyBmdWxsc2NyZWVuIGFjY2Vzcy4K
ICAgICByZXR1cm4gWUVTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMTdjMDcwYjZkZGIwOTMzNGFj
ZjZkNTRlZTJjYTRjYWQwNTZlYTA0MC4uMjFmZTljZGFlNGZkMjNkMDRhZTBjMTgwNjkxMGU3OGY1
NjY4ODFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5LmNwcApAQCAtOTEsMTAgKzkxLDcgQEAgdm9pZCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgYW5pbWF0aW5nKQog
CiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29s
IHdpdGhLZXlib2FyZCwgYm9vbCYgc3VwcG9ydHMpCiB7Ci0gICAgaWYgKHdpdGhLZXlib2FyZCkK
LSAgICAgICAgc3VwcG9ydHMgPSBmYWxzZTsKLSAgICBlbHNlCi0gICAgICAgIHN1cHBvcnRzID0g
dHJ1ZTsKKyAgICBzdXBwb3J0cyA9IHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9X
ZWJGdWxsU2NyZWVuTWFuYWdlci5jcHAKaW5kZXggN2U0YTRlM2MyNjIzMDQ2NmQxMjRlMGIxYjg4
NWNmYjMyMTQyYjRhYi4uYmM5ZjYxNjMzMjY4YWZkZTYzNmQ2ZmRhYjczYjlkZjM5NjE0ZTBmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3Jl
ZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCkBAIC0xMDEsOCArMTAxLDYgQEAgdm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVt
ZW50KiBlbGVtZW50KQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpleGl0RnVsbFNjcmVl
bkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoZWxl
bWVudCk7Ci0gICAgQVNTRVJUKG1fZWxlbWVudCA9PSBlbGVtZW50KTsKICAgICBtX3BhZ2UtPmlu
amVjdGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudCgpLmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCht
X3BhZ2UuZ2V0KCksIGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVn
YXRlLm1tCmluZGV4IDg3ZWVjZTQ0MWE5MThkODkxOWFmN2MzM2I0MTY2MGQwMDFiZjQ4MjQuLmU4
NTU3OTFkYjNmNzFiYmFiM2NmZWYyMzgxMDgxODNlNmFiNmU5MTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9VSURlbGVnYXRlLm1tCkBAIC0yNTIsMTggKzI1MiwyOCBAQCBEdW1wUmVuZGVyVHJl
ZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvID0gbmlsOwogICAgIHJldHVybiBZRVM7CiB9CiAK
LS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudDooRE9NRWxlbWVudCopZWxlbWVudCBsaXN0ZW5lcjooTlNPYmplY3Q8V2ViS2l0RnVsbFNj
cmVlbkxpc3RlbmVyPiopbGlzdGVuZXIKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuV2l0aExpc3Rl
bmVyOihOU09iamVjdDxXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI+KilsaXN0ZW5lcgogewogICAg
IFtsaXN0ZW5lciB3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuXTsKICAgICBbbGlzdGVuZXIgd2Vi
a2l0RGlkRW50ZXJGdWxsU2NyZWVuXTsKIH0KIAotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
d2ViVmlldyBleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQgbGlz
dGVuZXI6KE5TT2JqZWN0PFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lcj4qKWxpc3RlbmVyCistICh2
b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQ6
KERPTUVsZW1lbnQqKWVsZW1lbnQgbGlzdGVuZXI6KE5TT2JqZWN0PFdlYktpdEZ1bGxTY3JlZW5M
aXN0ZW5lcj4qKWxpc3RlbmVyCit7CisgICAgW3NlbGYgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rv
cihlbnRlckZ1bGxTY3JlZW5XaXRoTGlzdGVuZXI6KSB3aXRoT2JqZWN0Omxpc3RlbmVyIGFmdGVy
RGVsYXk6MF07Cit9CisKKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5XaXRoTGlzdGVuZXI6KE5TT2Jq
ZWN0PFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lcj4qKWxpc3RlbmVyCiB7CiAgICAgW2xpc3RlbmVy
IHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbl07CiAgICAgW2xpc3RlbmVyIHdlYmtpdERpZEV4aXRG
dWxsU2NyZWVuXTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBleGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQgbGlzdGVuZXI6KE5TT2Jq
ZWN0PFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lcj4qKWxpc3RlbmVyCit7CisgICAgW3NlbGYgcGVy
Zm9ybVNlbGVjdG9yOkBzZWxlY3RvcihleGl0RnVsbFNjcmVlbldpdGhMaXN0ZW5lcjopIHdpdGhP
YmplY3Q6bGlzdGVuZXIgYWZ0ZXJEZWxheTowXTsKK30KKwogLSAoQk9PTCl3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBkaWRQcmVzc01pc3NpbmdQbHVnaW5CdXR0b246KERPTUVsZW1lbnQgKill
bGVtZW50CiB7CiAgICAgcHJpbnRmKCJNSVNTSU5HIFBMVUdJTiBCVVRUT04gUFJFU1NFRFxuIik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMzBkZjdkZjU1Y2U2MmFkNDJhNzU5YjZiOGNlNjAxNzJjYWVhYTVhNi4uNzBjNWVh
NDVmMWEwMzk1MjdjZmJiMmMyOTM5MGI1YWZmZGFjYmEwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgVzNDIEZ1bGwgU2NyZWVuIEFQSSBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2NjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxl
bWVudC1zdGFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tZWxlbWVudC1zdGFjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWVuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLWVuYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlamVjdGVkLmh0bWw6CisgICAgICAgICogZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJlbW92ZWQuaHRtbDoKKyAgICAgICAgKiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXJlc3RyaWN0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVzdHJpY3Rpb25zLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qczoKKwogMjAxMi0wMy0xMiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFRoaXMgYmFzZWxpbmUgYWxz
byBhcHBsaWVzIHRvIGNocm9taXVtLW1hYy1zbm93bGVvcGFyZCwgc28gd2UgY2FuIG1vdmUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFj
ay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVsZW1l
bnQtc3RhY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMDZjZTEzYjJkZGViZTk5ZGMzYzMw
ZjJlOWU0MTZjZmZiMmE2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWVsZW1lbnQtc3RhY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1Rlc3QgZm9yIFczQyBGdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2suCisKK1RvIHRlc3QgbWFu
dWFsbHksIGNsaWNrIHRoZSAiR28gZnVsbCBzY3JlZW4iIGJ1dHRvbiAtIHRoZSBwYWdlIHNob3Vs
ZCBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLgorCitHbyBmdWxsIHNjcmVlbiAob25lKQorR28gZnVs
bCBzY3JlZW4gKHR3bykKK0V4aXQgZnVsbCBzY3JlZW4gKHR3bykKK0VWRU5UKHdlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQu
aWQgPT0gJ29uZScpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQg
KGRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkID09ICd0d28nKSBPSworRVZFTlQo
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRGdWxsc2Ny
ZWVuRWxlbWVudC5pZCA9PSAnb25lJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFjay5odG1sIGIvTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbGVtZW50LXN0YWNrLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzg3NzBlZjBkNGU2MjFlM2Y3NTY4M2IzYTM1NjYwZTdiYmU0OGNjYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZWxlbWVudC1zdGFj
ay5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdD4KKyAgICB2YXIgb25lOworICAgIHZhciB0d287CisKKyAgICBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgICAgICBvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJyk7CisgICAg
ICAgIHR3byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKTsKKworICAgICAgICB2YXIg
Y2FsbGJhY2s7CisgICAgICAgIHZhciBmdWxsc2NyZWVuQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2so
ZXZlbnQpCisgICAgICAgIH07CisgICAgICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwgJ3dlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVuQ2hhbmdlZCk7CisKKyAgICAgICAgdmFyIG9u
ZUVudGVyZWRGdWxsc2NyZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoImRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkIiwgIm9uZSIpOworICAgICAg
ICAgICAgY2FsbGJhY2sgPSB0d29FbnRlcmVkRnVsbHNjcmVlbjsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgcnVuV2l0aEtleURv
d24oZnVuY3Rpb24oKSB7IHR3by53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOyB9KTsKKyAgICAg
ICAgfTsKKworICAgICAgICB2YXIgdHdvRW50ZXJlZEZ1bGxzY3JlZW4gPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1l
bnQuaWQiLCAidHdvIik7CisgICAgICAgICAgICBjYWxsYmFjayA9IHR3b0V4aXRlZEZ1bGxzY3Jl
ZW47CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIH07CisK
KyAgICAgICAgdmFyIHR3b0V4aXRlZEZ1bGxzY3JlZW4gPSBmdW5jdGlvbigpIHsgCisgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50LmlkIiwg
Im9uZSIpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9OworCisgICAgICAgIGNh
bGxiYWNrID0gb25lRW50ZXJlZEZ1bGxzY3JlZW47CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpIHsg
b25lLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7IH0pOworICAgIH0KKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0IGZvciA8YSBo
cmVmPSJodHRwOi8vZHZjcy53My5vcmcvaGcvZnVsbHNjcmVlbi9yYXctZmlsZS90aXAvT3ZlcnZp
ZXcuaHRtbCNmdWxsc2NyZWVuLWVsZW1lbnQtc3RhY2siPlczQyBGdWxsc2NyZWVuIGVsZW1lbnQg
c3RhY2s8L2E+LjwvcD4KKyAgICA8cD5UbyB0ZXN0IG1hbnVhbGx5LCBjbGljayB0aGUgIkdvIGZ1
bGwgc2NyZWVuIiBidXR0b24gLSB0aGUgcGFnZSBzaG91bGQgZW50ZXIgZnVsbCBzY3JlZW4gbW9k
ZS48L3A+CisgICAgPGRpdj4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJvbmUud2Via2l0UmVx
dWVzdEZ1bGxzY3JlZW4oKSI+R28gZnVsbCBzY3JlZW4gKG9uZSk8L2J1dHRvbj4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2IGlkPW9uZT4KKyAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJ0d28ud2Via2l0
UmVxdWVzdEZ1bGxzY3JlZW4oKSI+R28gZnVsbCBzY3JlZW4gKHR3byk8L2J1dHRvbj4KKyAgICAg
ICAgPGRpdiBpZD10d28+CisgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImRvY3VtZW50Lndl
YmtpdEV4aXRGdWxsc2NyZWVuKCkiPkV4aXQgZnVsbCBzY3JlZW4gKHR3byk8L2J1dHRvbj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbmFi
bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW5h
YmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEyYzBkMmQ0MTU2Yjk1ZmI2NWU5ZWNjNzkz
MTYxMTY0YWM1OGJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRl
c3RzIHRoZSBmdWxsc2NyZWVuRW5hYmxlZCBwcm9wZXJ0eSBsYWlkIG91dCBpbiBzZWN0aW9uIDQg
b2YgdGhlIFczQyBGdWxsIFNjcmVlbiBBUEkKK0VYUEVDVEVEIChpZnJhbWUuY29udGVudERvY3Vt
ZW50LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChpZnJh
bWUyLmNvbnRlbnREb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCA9PSAnZmFsc2UnKSBP
SworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1lbmFibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LWVuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDEwYmU1MjU1MWY0ZjhlZmE2YjkyNDg5MTRmMTY4
NGQ2NGM5OTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1lbmFibGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPGJvZHk+Cis8ZGl2PlRoaXMg
dGVzdHMgdGhlIDxjb2RlPmZ1bGxzY3JlZW5FbmFibGVkPC9jb2RlPiBwcm9wZXJ0eSBsYWlkIG91
dCBpbiBzZWN0aW9uIDQgb2YgdGhlIFczQyAKKzxhIGhyZWY9Imh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy9mdWxsc2NyZWVuL3Jhdy1maWxlL3RpcC9PdmVydmlldy5odG1sIj5GdWxsIFNjcmVlbiBBUEk8
L2E+PC9kaXY+Cis8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJykpOworICAgIGlmcmFtZS5zZXRB
dHRyaWJ1dGUoJ3dlYmtpdGFsbG93ZnVsbHNjcmVlbicsICd0cnVlJyk7CisgICAgdmFyIGlmcmFt
ZTIgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaWZyYW1lJykpOworICAgIHRlc3RFeHBlY3RlZCgnaWZyYW1lLmNvbnRlbnREb2N1
bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCcsIHRydWUpOworICAgIHRlc3RFeHBlY3RlZCgn
aWZyYW1lMi5jb250ZW50RG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQnLCBmYWxzZSk7
CisgICAgZW5kVGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtcmVqZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sCmluZGV4IDc3OTgzMmE3
ZjIzOGJmM2U2YzQxZDI3MDA3YmU0MjNjZWM5NmRjMTQuLjBlNzgxOWI5YWQ1MmY4NjRmODhkMzI5
ZTEyYmQ3ZDY2YWQ5NDE5MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZWplY3RlZC5odG1sCkBAIC05LDcgKzksMTAgQEAKICAg
ICB9IGVsc2UgewogICAgICAgICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGxvZ1Jlc3VsdCgiRW50ZXJlZCBm
dWxsIHNjcmVlbi4iLCBmYWxzZSk7IAorICAgICAgICAgICBlbmRUZXN0KCk7CiAgICAgICAgIH0p
OworICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKICAgICAgICAgd2Fp
dEZvckV2ZW50QW5kRW5kKGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJyk7CiAgICAg
ICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVx
dWVzdC1yZW1vdmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJl
cXVlc3QtcmVtb3ZlZC5odG1sCmluZGV4IDkyNjQyMTljMjQ2YjZmYThiZmYzYWNhMDA2YjY1Nzc5
YTI2NWNlOGIuLjIzMzBmZmJlOTE0NzFjYWY5ZmNkZTZiMjI4ZjMyOTg3ZDNjOWRmNDggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1yZW1vdmVk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LXJl
bW92ZWQuaHRtbApAQCAtMTIsNiArMTIsOSBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAg
ICBjb25zb2xlV3JpdGUoIlNVQ0NFRUQgLSBkaWQgbm90IGVudGVyIGZ1bGwgc2NyZWVuISIpOwog
ICAgIH0pOwogCisgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKwogICAgIHZhciBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2KTsKICAgICBjb25zb2xlV3JpdGUoIkFkZGVkIGNoaWxk
IGVsZW1lbnQuIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tcmVzdHJpY3Rpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVzdHJpY3Rpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDAzMGRlZmM4
YTA1NTM4NmQ0YjY0ZmEyZTkyOTRmZWIwYTc3N2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXN0cmljdGlvbnMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTkgQEAKK1RoaXMgdGVzdHMgdGhlIHJlc3RyaWN0aW9ucyB0byBlbnRlcmluZyBm
dWxsIHNjcmVlbiBtb2RlIGxhaWQgb3V0IGluIHNlY3Rpb24gNC4xIG9mIHRoZSBXM0MgRnVsbCBT
Y3JlZW4gQVBJCisiVGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBpbiBhIGRvY3VtZW50LiIKK0VW
RU5UKHdlYmtpdGZ1bGxzY3JlZW5lcnJvcikKKyJUaGUgY29udGV4dCBvYmplY3QncyBub2RlIGRv
Y3VtZW50LCBvciBhbiBhbmNlc3RvciBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnQgZG9lcyBu
b3QgaGF2ZSB0aGUgZnVsbHNjcmVlbiBlbmFibGVkIGZsYWcgc2V0LiIKK0VWRU5UKHdlYmtpdGZ1
bGxzY3JlZW5lcnJvcikKKyJUaGUgY29udGV4dCBvYmplY3QncyBub2RlIGRvY3VtZW50IGZ1bGxz
Y3JlZW4gZWxlbWVudCBzdGFjayBpcyBub3QgZW1wdHkgYW5kIGl0cyB0b3AgZWxlbWVudCBpcyBu
b3QgYW4gYW5jZXN0b3Igb2YgdGhlIGNvbnRleHQgb2JqZWN0LiIKK0VWRU5UKHdlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UpCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuZXJyb3IpCitFVkVOVCh3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlKQorIkEgZGVzY2VuZGFudCBicm93c2luZyBjb250ZXh0J3MgZG9jdW1l
bnQgaGFzIGEgbm9uLWVtcHR5IGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjay4iCitFVkVOVCh3ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlKQorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmVycm9yKQorRVZFTlQo
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKKyJUaGlzIGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZCB0
byBzaG93IGEgcG9wLXVwLiIKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5lcnJvcikKK0VORCBPRiBU
RVNUCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXJlc3RyaWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1y
ZXN0cmljdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTI0YjAzNTQ4OTFiMDM2MzkwMDcxNGFlZmZk
NTBhYmM1MDk0MmM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1yZXN0cmljdGlvbnMuaHRtbApAQCAtMCwwICsxLDY3IEBACis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKTsiPgorPGRpdj5UaGlzIHRlc3RzIHRoZSByZXN0cmljdGlvbnMgdG8gZW50
ZXJpbmcgZnVsbCBzY3JlZW4gbW9kZSBsYWlkIG91dCBpbiBzZWN0aW9uIDQuMSBvZiB0aGUgVzND
IAorPGEgaHJlZj0iaHR0cDovL2R2Y3MudzMub3JnL2hnL2Z1bGxzY3JlZW4vcmF3LWZpbGUvdGlw
L092ZXJ2aWV3Lmh0bWwiPkZ1bGwgU2NyZWVuIEFQSTwvYT48L2Rpdj4KKzxzY3JpcHQgc3JjPSJm
dWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgLy8gQmFpbCBvdXQg
ZWFybHkgaWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBpcyBub3QgZW5hYmxlZCBvciBpcyBtaXNzaW5n
OgorICAgIGlmIChFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1
bmRlZmluZWQpIHsKKyAgICAgICAgbG9nUmVzdWx0KGZhbHNlLCAiRWxlbWVudC5wcm90b3R5cGUu
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkIik7CisgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICB2YXIgcnVuVGVzdCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCciVGhlIGNvbnRleHQgb2JqZWN0IGlzIG5vdCBpbiBhIGRv
Y3VtZW50LiInKTsKKyAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoZG9jdW1lbnQsICd3ZWJraXRm
dWxsc2NyZWVuZXJyb3InLCBzdGVwMik7CisgICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5j
dGlvbigpe2Rpdi53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7CisgICAgICAgIH07CisKKyAg
ICAgICAgdmFyIHN0ZXAyID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
JyJUaGUgY29udGV4dCBvYmplY3RcJ3Mgbm9kZSBkb2N1bWVudCwgb3IgYW4gYW5jZXN0b3IgYnJv
d3NpbmcgY29udGV4dFwncyBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBmdWxsc2NyZWVuIGVu
YWJsZWQgZmxhZyBzZXQuIicpCisgICAgICAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScp
KTsKKyAgICAgICAgICAgIHZhciBkaXYgPSBpZnJhbWUuY29udGVudERvY3VtZW50LmRvY3VtZW50
RWxlbWVudC5hcHBlbmRDaGlsZChpZnJhbWUuY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpKTsKKworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShpZnJhbWUuY29udGVudERv
Y3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJywgc3RlcDMpOworICAgICAgICAgICAgcnVu
V2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOwor
ICAgICAgICB9OworCisgICAgICAgIHZhciBzdGVwMyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCciVGhlIGNvbnRleHQgb2JqZWN0XCdzIG5vZGUgZG9jdW1lbnQgZnVs
bHNjcmVlbiBlbGVtZW50IHN0YWNrIGlzIG5vdCBlbXB0eSBhbmQgaXRzIHRvcCBlbGVtZW50IGlz
IG5vdCBhbiBhbmNlc3RvciBvZiB0aGUgY29udGV4dCBvYmplY3QuIicpOworICAgICAgICAgICAg
dmFyIGRpdiA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgICAgICB2YXIgZGl2MiA9IGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7
CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVl
bmNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2Uo
ZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuZXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICB3YWl0Rm9yRXZlbnRPbmNlKGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNo
YW5nZScsIHN0ZXA0KTsKKyAgICAgICAgICAgICAgICAgICBkb2N1bWVudC53ZWJraXRFeGl0RnVs
bHNjcmVlbigpOyAKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBydW5XaXRo
S2V5RG93bihmdW5jdGlvbigpe2RpdjIud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpe2Rpdi53
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpfSk7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIHN0
ZXA0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJyJBIGRlc2NlbmRh
bnQgYnJvd3NpbmcgY29udGV4dFwncyBkb2N1bWVudCBoYXMgYSBub24tZW1wdHkgZnVsbHNjcmVl
biBlbGVtZW50IHN0YWNrLiInKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1l
JykpOworICAgICAgICAgICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnd2Via2l0YWxsb3dmdWxsc2Ny
ZWVuJywgJ3RydWUnKTsKKyAgICAgICAgICAgIHZhciBkaXYgPSBpZnJhbWUuY29udGVudERvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChpZnJhbWUuY29udGVudERvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgICAgIHZhciBkaXYyID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsK
KyAgICAgICAgICAgIHdhaXRGb3JFdmVudE9uY2UoaWZyYW1lLmNvbnRlbnREb2N1bWVudCwgJ3dl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB3YWl0
Rm9yRXZlbnRPbmNlKGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJywgZnVuY3Rpb24o
KXsKKyAgICAgICAgICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShpZnJhbWUuY29udGVudERv
Y3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIHN0ZXA1KTsKKyAgICAgICAgICAgICAg
ICAgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC53ZWJraXRFeGl0RnVsbHNjcmVlbigpOyAKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlv
bigpe2RpdjIud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKX0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpe2Rpdi53ZWJraXRSZXF1ZXN0RnVs
bHNjcmVlbigpfSk7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIHN0ZXA1ID0gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJyJUaGlzIGFsZ29yaXRobSBpcyBub3QgYWxs
b3dlZCB0byBzaG93IGEgcG9wLXVwLiInKTsKKyAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JykpOworICAgICAgICAgICAgd2FpdEZvckV2ZW50T25jZShkb2N1bWVudCwgJ3dlYmtpdGZ1bGxz
Y3JlZW5lcnJvcicsIGVuZFRlc3QpOworICAgICAgICAgICAgZGl2LndlYmtpdFJlcXVlc3RGdWxs
c2NyZWVuKCk7CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHR5cGVvZihsYXlvdXRUZXN0Q29u
dHJvbGxlcikgIT0gJ3VuZGVmaW5lZCcpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRQb3B1cEJsb2NraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB9Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcyBiL0xheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwppbmRleCA1ZTViYjFhZjdhNzgy
YWNmZWM5MjVjNmQyOGI3ZWY4YTIyMjQzNzQ5Li44MDFiNWJhOWUzYTYxMmJhZjM2NzNjNmRhNTcx
OGMzNTg1YmEzZjkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0
LmpzCkBAIC05OCwxMCArOTgsMTggQEAgZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kRW5kKGVsZW1l
bnQsIGV2ZW50TmFtZSwgZnVuY1N0cmluZykKICAgICB3YWl0Rm9yRXZlbnQoZWxlbWVudCwgZXZl
bnROYW1lLCBmdW5jU3RyaW5nLCB0cnVlKQogfQogCi1mdW5jdGlvbiB3YWl0Rm9yRXZlbnQoZWxl
bWVudCwgZXZlbnROYW1lLCBmdW5jLCBlbmRpdCkKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudE9uY2Uo
ZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jLCBlbmRpdCkKK3sKKyAgICB3YWl0Rm9yRXZlbnQoZWxl
bWVudCwgZXZlbnROYW1lLCBmdW5jLCBlbmRpdCwgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZv
ckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQsIG9uY2UpCiB7CiAgICAgZnVu
Y3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCiAgICAgeworICAgICAgICBpZiAob25jZSkKKyAg
ICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENh
bGxiYWNrKTsKKwogICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudE5hbWUgKyAi
KSIpOwogCiAgICAgICAgIGlmIChmdW5jKQo=
</data>
<flag name="review"
          id="134919"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>