<?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>24604</bug_id>
          
          <creation_ts>2009-03-14 21:58:23 -0700</creation_ts>
          <short_desc>WebKit profiler reports incorrect total times</short_desc>
          <delta_ts>2009-04-29 15:28:24 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.quicksnapper.com/boucher/image/untitled-0005</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="boucher">rboucher</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>emacemac7</cc>
    
    <cc>kmccullough</cc>
    
    <cc>timothy</cc>
    
    <cc>tolmasky</cc>
    
    <cc>tom</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>113797</commentid>
    <comment_count>0</comment_count>
    <who name="boucher">rboucher</who>
    <bug_when>2009-03-14 21:58:23 -0700</bug_when>
    <thetext>See linked screenshot. The reported total time of calls to objj_msgSend is over 3000% of execution time, which doesn&apos;t seem to make any logical sense (am I missing something here).

Separately, I believe the actual reported percentage of objj_msgSend in &quot;self&quot; is also incorrect, but I don&apos;t have a simple way to verify this, so when I get more information I will update the ticket. Here&apos;s a link to the test app I was running, which just runs a profile and prints the total time of execution of a test:

http://cappuccino.org/edgy/TDParseKit/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117506</commentid>
    <comment_count>1</comment_count>
      <attachid>29478</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2009-04-14 12:44:40 -0700</bug_when>
    <thetext>Created attachment 29478
Reduction

I&apos;ve come up with a very simple reduction: this behavior is caused by any recursive function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118487</commentid>
    <comment_count>2</comment_count>
      <attachid>29707</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2009-04-23 03:56:53 -0700</bug_when>
    <thetext>Created attachment 29707
Fixes heavy view.

Made it so that most the functions now match the behavior of Shark. Most notably, in the heavy view, child nodes now represent the statistics of the root node, but in the callstack originating at that node. Also added a number of performance improvements, making it so the heavy tree is not calculated until its nodes are revealed. Moved a lot out of C++ and into JS, allowing for more representations and easier manipulations in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118517</commentid>
    <comment_count>3</comment_count>
      <attachid>29707</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-23 11:06:20 -0700</bug_when>
    <thetext>Comment on attachment 29707
Fixes heavy view.

+2009-04-23  Francisco Tolmasky  &lt;set EMAIL_ADDRESS environment variable&gt;

Make sure to include your email address in the ChangeLogs.

+         { &quot;callUID&quot;, getCallUID, 0, kJSPropertyAttributeNone },

I think &quot;identifier&quot; or &quot;callIdentifier&quot; would be better names.

+    var profileNodeUIDs = 0,
+        profileNodeGroupIndex = 0,
+        profileNodeGroups = [[], [aProfileNode]],
+        visitedProfileNodesForCallUID = {};

I think this would look better having var on each line and not chained.

+    for (; profileNodeGroupIndex &lt; profileNodeGroups.length; ++profileNodeGroupIndex)
+    {

Our coding style puts the &quot;{&quot; on the same line with the for.

+            if (profileNode.head &amp;&amp; profileNode !== profileNode.head)
+            {

Same for if statements.

+                }
+                else {

The &quot;}&quot; should be on the same line as the &quot;else {&quot;.

+                    var parentIndex = 0,
+                        parentCount = parentProfileNodes.length;

Same comment about the var from earlier.

+                    for (; parentIndex &lt; parentCount; ++parentIndex)
+                        if (visitedNodes[parentProfileNodes[parentIndex].UID]) {
+                            totalTimeAccountedFor = true;
+                            break;
+                        }

The for loop should have braces since is is multiline, even if it isn&apos;t needed.

+            if (children.length)
+            {

Put the &quot;{&quot; on the same line with the if.

+        while (currentNode.parent &amp;&amp; (currentNode instanceof WebInspector.ProfileDataGridNode))
+        {

Same.

+            }
+            
+            // If not, add it as a true ancestor.
+            else {

The &quot;else {&quot; should be on the same line as &quot;}&quot; with the command inside the else block.

+                if (ancestor !== focusNode)
+                {                    

Put the &quot;{&quot; on the same line with the if.

+            // only

What does this comment mean?

+            if (parent &amp;&amp; parent.parent)
+            {

Same.

+        if (this.children.length &lt;= 0)
+            this.hasChildren = false;

The concept for hasChildren was to allow it to be expandable and empty at the same time. But I&apos;m not sure we ever used that feature in DataGrid, but we do in TreeOutline.

+        if (this._hasChildren)
+        {

Put the &quot;{&quot; on the same line with the if.

+        }
+        else
+        {

Should all be on the same line.

+++ WebCore/inspector/front-end/ProfileDataGridNode.js	(revision 0)

This file is missing the license.

+WebInspector.XProfileDataGridNode = function(aProfileView, aProfileNode, aTree, hasChildren)

XProfileDataGridNode should be named something better.

+    if (aProfileNode)
+    {

Put the &quot;{&quot; on the same line with the if.

+    }
+    else
+    {

Should all be on the same line.

+    appendChild: function(/*ProfileDataGridNode*/ aProfileDataGridNode)
+    findChild: function(/*Node*/ aNode)

We don&apos;t use this naming technique for parameters. Just drop the &quot;a&quot;.

+WebInspector.ProfileDataGridNode = function(aProfileView, aProfileNode, aTree, hasChildren)

ProfileDataGridNode and XProfileDataGridNode should share code. Why did XProfileDataGridNode get it&apos;s own file and ProfileDataGridNode stay with ProfileDataGridTree? They could both live in ProfileDataGridNode.js and share code.

I&apos;ve given up on the style review at this point. Please correct all the style formatting according to our style guidelines (including separate var statements and no &quot;a&quot; prefix for parameters.)

+//        this.children.forEach(function(node) { node._exclude(excludedCallUID); });

We don&apos;t commit commented out code. We also like to avoid forEach, since it is pretty expensive compared to a normal for loop.

You also need to add all the new files to WebKit.qrc and WebCore.vcproj.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118518</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-23 11:07:08 -0700</bug_when>
    <thetext>I am leaving the bulk of the review for Kevin McCullough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118519</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-23 11:09:40 -0700</bug_when>
    <thetext>+    for (; profileNodeGroupIndex &lt; profileNodeGroups.length; ++profileNodeGroupIndex)

Also please move the var statement for profileNodeGroupIndex to the for loop instead of leaving it blank, since you don&apos;t use profileNodeGroupIndex outside the loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118520</commentid>
    <comment_count>6</comment_count>
      <attachid>29707</attachid>
    <who name="Kevin McCullough">kmccullough</who>
    <bug_when>2009-04-23 11:14:39 -0700</bug_when>
    <thetext>Comment on attachment 29707
Fixes heavy view.

&gt; Index: JavaScriptCore/ChangeLog
&gt; ===================================================================
&gt; --- JavaScriptCore/ChangeLog	(revision 42775)
&gt; +++ JavaScriptCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,33 @@
&gt; +        Made it so that most the functions now match the behavior of Shark. Most notably, in the heavy view,
&gt; +        child nodes now represent the statistics of the root node, but in the callstack originating at that node.

Missing &quot;of&quot; in the first sentence.  I&apos;m not sure what you mean in the second.


&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 42775)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; +        Made it so that most the functions now match the behavior of Shark. Most notably, in the heavy view,
&gt; +        child nodes now represent the statistics of the root node, but in the callstack originating at that node.

Same comment


&gt; Index: WebCore/inspector/front-end/ProfileView.js
&gt; ===================================================================
&gt; --- WebCore/inspector/front-end/ProfileView.js	(revision 42746)
&gt; +++ WebCore/inspector/front-end/ProfileView.js	(working copy)
&gt; @@ -115,28 +163,34 @@ WebInspector.ProfileView.prototype = {
&gt;          var selectedProfileNode = this.dataGrid.selectedNode ? this.dataGrid.selectedNode.profileNode : null;
&gt;  
&gt;          this.dataGrid.removeChildren();
&gt; +        
&gt; +        var children = this.profileDataGridTree.children,
&gt; +            index = 0,
&gt; +            count = children.length;

Our style is to declare each variable with &quot;var&quot; on it&apos;s own line.  And this will allow you to declare &apos;index&apos; in the &apos;for&apos; statement later.

&gt;  
&gt; -        var children = this.profile.head.children;
&gt; -        var childrenLength = children.length;
&gt; -        for (var i = 0; i &lt; childrenLength; ++i)
&gt; -            if (children[i].visible)
&gt; -                this.dataGrid.appendChild(new WebInspector.ProfileDataGridNode(this, children[i]));
&gt; +        for (; index &lt; count; ++index)
&gt; +            this.dataGrid.appendChild(children[index]);
&gt;  

Here is where you can declare the &apos;index&apos;, since it&apos;s not used earlier

&gt; @@ -191,71 +245,90 @@ WebInspector.ProfileView.prototype = {
&gt;          if (!isNaN(queryNumber) &amp;&amp; !(greaterThan || lessThan))
&gt;              equalTo = true;
&gt;  
&gt; -        function matchesQuery(profileNode)
&gt; +        function matchesQuery(/*ProfileDataGridNode*/ aProfileDataGridNode)

no need to put &apos;a&apos; in front of arguments, just name this &apos;profileDataGridNode&apos;.

&gt; @@ -461,37 +542,21 @@ WebInspector.ProfileView.prototype = {
&gt;          this._sortProfile(this.profile);
&gt;      },
&gt;  
&gt; -    _sortProfile: function(profile)
&gt; +    _sortProfile: function()
&gt;      {
&gt; -        if (!profile)
&gt; -            return;
&gt; -
&gt; -        var sortOrder = this.dataGrid.sortOrder;
&gt; -        var sortColumnIdentifier = this.dataGrid.sortColumnIdentifier;
&gt; -
&gt; -        var sortingFunctionName = &quot;sort&quot;;
&gt; -
&gt; -        if (sortColumnIdentifier === &quot;self&quot;)
&gt; -            sortingFunctionName += &quot;SelfTime&quot;;
&gt; -        else if (sortColumnIdentifier === &quot;total&quot;)
&gt; -            sortingFunctionName += &quot;TotalTime&quot;;
&gt; -        else if (sortColumnIdentifier === &quot;calls&quot;)
&gt; -            sortingFunctionName += &quot;Calls&quot;;
&gt; -        else if (sortColumnIdentifier === &quot;function&quot;)
&gt; -            sortingFunctionName += &quot;FunctionName&quot;;
&gt; -
&gt; -        if (sortOrder === &quot;ascending&quot;)
&gt; -            sortingFunctionName += &quot;Ascending&quot;;
&gt; -        else
&gt; -            sortingFunctionName += &quot;Descending&quot;;
&gt; +        var sortAscending = this.dataGrid.sortOrder === &quot;ascending&quot;,
&gt; +            sortColumnIdentifier = this.dataGrid.sortColumnIdentifier,
&gt; +            sortProperty = { 
&gt; +                &quot;average&quot;: &quot;averageTime&quot;, 
&gt; +                &quot;self&quot;: &quot;selfTime&quot;, 
&gt; +                &quot;total&quot;: &quot;totalTime&quot;, 
&gt; +                &quot;calls&quot;: &quot;numberOfCalls&quot;, 
&gt; +                &quot;function&quot;: &quot;functionName&quot;
&gt; +            }[sortColumnIdentifier];
&gt; +        

Same comment here about declaring each variable on its own line.

&gt; Index: WebCore/inspector/front-end/inspector.html
&gt; ===================================================================
&gt; --- WebCore/inspector/front-end/inspector.html	(revision 42746)
&gt; +++ WebCore/inspector/front-end/inspector.html	(working copy)
&gt; @@ -73,6 +73,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE PO
&gt;      &lt;script type=&quot;text/javascript&quot; src=&quot;DatabaseTableView.js&quot;&gt;&lt;/script&gt;
&gt;      &lt;script type=&quot;text/javascript&quot; src=&quot;DatabaseQueryView.js&quot;&gt;&lt;/script&gt;
&gt;      &lt;script type=&quot;text/javascript&quot; src=&quot;ScriptView.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;script type=&quot;text/javascript&quot; src=&quot;ProfileDataGridTree.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;script type=&quot;text/javascript&quot; src=&quot;BottomUpProfileDataGridTree.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;script type=&quot;text/javascript&quot; src=&quot;TopDownProfileDataGridTree.js&quot;&gt;&lt;/script&gt;-

I don&apos;t think you need the &apos;-&apos; at the end of this line

&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================
&gt; --- LayoutTests/ChangeLog	(revision 42775)
&gt; +++ LayoutTests/ChangeLog	(working copy)
&gt; @@ -1,3 +1,19 @@
&gt; +2009-04-23  Francisco Tolmasky  &lt;set EMAIL_ADDRESS environment variable&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        BUG 24604: WebKit profiler reports incorrect total times
&gt; +        &lt;https://bugs.webkit.org/show_bug.cgi?id=24604&gt;
&gt; +
&gt; +        Changed profile.treeProfile to just profile, since these aren&apos;t generated in C++ anymore.
&gt; +        Removed heavy-view test since heavy-view isn&apos;t an actual tree that is generated in C++ land anymore,
&gt; +        but rather just a different display of the normal treeProfile in the JS data grid.
&gt; +
&gt; +        * fast/profiler/heavy-view-expected.txt: Removed.
&gt; +        * fast/profiler/heavy-view.html: Removed.
&gt; +        * fast/profiler/resources/profiler-test-JS-resources.js: profiles[i].treeProfile -&gt; profiles[i].treeProfile
&gt; +        (printProfilesDataWithoutTime):
&gt; +
&gt;  2009-04-23  Brady Eidson  &lt;beidson@apple.com&gt;

If we are going to take this test out we should find a way to make a test so that we can tell if we regress in the heavy-view.

&gt;  
&gt; Index: WebCore/English.lproj/localizedStrings.js
&gt; ===================================================================
&gt; Cannot display: file marked as a binary type.
&gt; svn:mime-type = application/octet-stream
&gt; 
&gt; //52AGEAcgAgAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAIAA9ACAAbgBlAHcAIABP
&gt; AGIAagBlAGMAdAA7AAoACgBsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgAgACgA

It looks like this file is marked binary, please make it human readable for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118521</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-23 11:21:02 -0700</bug_when>
    <thetext>localizedStrings.js has to be binary since it is UTF-16.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118523</commentid>
    <comment_count>8</comment_count>
    <who name="boucher">rboucher</who>
    <bug_when>2009-04-23 12:14:32 -0700</bug_when>
    <thetext>&gt; Our style is to declare each variable with &quot;var&quot; on it&apos;s own line.  And this
&gt; will allow you to declare &apos;index&apos; in the &apos;for&apos; statement later.

This style is not listed in the coding style guidelines for the project. It should either be listed there, or it should not be considered for patches.

&gt; no need to put &apos;a&apos; in front of arguments, just name this &apos;profileDataGridNode&apos;.

Another style guideline not listed anywhere (and which seems overly specific).



</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118526</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-23 12:33:17 -0700</bug_when>
    <thetext>Our style guidelines don&apos;t really cover JavaScript currently. I plan to fix that at some point.

&gt;&gt; no need to put &apos;a&apos; in front of arguments, just name this &apos;profileDataGridNode&apos;.

&gt; Another style guideline not listed anywhere (and which seems overly specific).

I didn&apos;t realize this wasn&apos;t in the style guidelines. But in general none of the WebKit code base uses &quot;a&quot; or &quot;an&quot; parameter prefixes since they don&apos;t add anything. We will update the style guide to include this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118534</commentid>
    <comment_count>10</comment_count>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2009-04-23 14:07:22 -0700</bug_when>
    <thetext>ProfileDataGridNode.js with the XProfileDataGridNode class accidentally got added to the commit, it was just test code, which is why it doesn&apos;t show up in inspector.html, I&apos;ll fix up these style issues and remove the file and resubmit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118547</commentid>
    <comment_count>11</comment_count>
      <attachid>29716</attachid>
    <who name="Francisco Tolmasky">tolmasky</who>
    <bug_when>2009-04-23 15:03:04 -0700</bug_when>
    <thetext>Created attachment 29716
style/comment changes

I believe I covered all the style comments. I also added a lengthier explanation in the ChangeLogs detailing the way Heavy View should work and why it was that we were getting 40,000%, etc. previously. As I mentioned in the earlier comment, I also took out ProfileDataGridNode.js which got committed by accident.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118582</commentid>
    <comment_count>12</comment_count>
      <attachid>29716</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-23 19:30:18 -0700</bug_when>
    <thetext>Comment on attachment 29716
style/comment changes

Still some style issues in a couple of places, but I will fix them before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119355</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-29 14:50:03 -0700</bug_when>
    <thetext>Assigning this to Timothy since he said he would land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119376</commentid>
    <comment_count>14</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-29 15:28:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/42808</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>29478</attachid>
            <date>2009-04-14 12:44:40 -0700</date>
            <delta_ts>2009-04-14 12:44:40 -0700</delta_ts>
            <desc>Reduction</desc>
            <filename>24604.html</filename>
            <type>text/html</type>
            <size>180</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KCmZ1bmN0aW9uIHJlY3Vyc2UodGltZXMpCnsKICAgIGlmICh0aW1lcyA8PSAwKQog
ICAgICAgIHJldHVybjsKICAgIAogICAgcmVjdXJzZSh0aW1lcy0xKTsKfQoKY29uc29sZS5wcm9m
aWxlKCJyZWN1cnNpdmUhIik7CnJlY3Vyc2UoMTAwMCk7CmNvbnNvbGUucHJvZmlsZUVuZCgpOwoK
PC9zY3JpcHQ+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29707</attachid>
            <date>2009-04-23 03:56:53 -0700</date>
            <delta_ts>2009-04-23 15:03:04 -0700</delta_ts>
            <desc>Fixes heavy view.</desc>
            <filename>the_patch.patch</filename>
            <type>text/plain</type>
            <size>140029</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyNzc1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDktMDQtMjMgIEZyYW5jaXNj
byBUb2xtYXNreSAgPGZyYW5jaXNjb0AyODBub3J0aC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQlVHIDI0NjA0OiBXZWJLaXQgcHJvZmlsZXIg
cmVwb3J0cyBpbmNvcnJlY3QgdG90YWwgdGltZXMKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDYwND4KKworICAgICAgICBNYWRlIGl0IHNvIHRoYXQg
bW9zdCB0aGUgZnVuY3Rpb25zIG5vdyBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgU2hhcmsuIE1vc3Qg
bm90YWJseSwgaW4gdGhlIGhlYXZ5IHZpZXcsCisgICAgICAgIGNoaWxkIG5vZGVzIG5vdyByZXBy
ZXNlbnQgdGhlIHN0YXRpc3RpY3Mgb2YgdGhlIHJvb3Qgbm9kZSwgYnV0IGluIHRoZSBjYWxsc3Rh
Y2sgb3JpZ2luYXRpbmcgYXQgdGhhdCBub2RlLgorICAgICAgICBBbHNvIGFkZGVkIGEgbnVtYmVy
IG9mIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cywgbWFraW5nIGl0IHNvIHRoZSBoZWF2eSB0cmVl
IGlzIG5vdCBjYWxjdWxhdGVkIHVudGlsIAorICAgICAgICBpdHMgbm9kZXMgYXJlIHJldmVhbGVk
LiBNb3ZlZCBhIGxvdCBvdXQgb2YgQysrIGFuZCBpbnRvIEpTLCBhbGxvd2luZyBmb3IgbW9yZSBy
ZXByZXNlbnRhdGlvbnMgYW5kIGVhc2llciAKKyAgICAgICAgbWFuaXB1bGF0aW9ucyBpbiB0aGUg
ZnV0dXJlLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcHJvZmlsZXIv
Q2FsbElkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6Q2FsbElkZW50aWZpZXI6Okhhc2g6Omhh
c2gpOgorICAgICAgICAoSlNDOjpDYWxsSWRlbnRpZmllcjo6SGFzaDo6ZXF1YWwpOgorICAgICAg
ICAoSlNDOjpDYWxsSWRlbnRpZmllcjo6aGFzaCk6CisgICAgICAgIChXVEY6Oik6CisgICAgICAg
ICogcHJvZmlsZXIvSGVhdnlQcm9maWxlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwcm9maWxl
ci9IZWF2eVByb2ZpbGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmNw
cDogTm8gbW9yZSBuZWVkIGZvciBUcmVlUHJvZmlsZS9IZWF2eVByb2ZpbGUKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmg6CisgICAg
ICAgICogcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGVOb2RlLmg6CisgICAgICAgICogcHJvZmlsZXIvVHJlZVByb2ZpbGUuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHByb2ZpbGVyL1RyZWVQcm9maWxlLmg6IFJlbW92ZWQuCisKIDIwMDktMDQtMjIg
IE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBi
eSBHYXZpbiBCYXJyYWNsb3VnaC4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJl
dmlzaW9uIDQyNzQ2KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDYgQEAgX19aTjNKU0MxMUpTSW1tZWRpYXRlMTJub25J
bmxpbmVOYU5FdgogX19aTjNKU0MxMUpTSW1tZWRpYXRlOHRvT2JqZWN0RU5TXzEwSlNWYWx1ZVB0
ckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMTFKU0ltbWVkaWF0ZTh0b1N0cmluZ0VOU18xMEpT
VmFsdWVQdHJFCiBfX1pOM0pTQzExSlNJbW1lZGlhdGU5cHJvdG90eXBlRU5TXzEwSlNWYWx1ZVB0
ckVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk4zSlNDMTFQcm9maWxlTm9kZTRzb3J0RVBGYlJLTjNXVEY2
UmVmUHRySVMwX0VFUzVfRQogX19aTjNKU0MxMWNoZWNrU3ludGF4RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBTb3VyY2VDb2RlRQogX19aTjNKU0MxMkRhdGVJbnN0YW5jZTRpbmZvRQogX19aTjNKU0Mx
MkpTR2xvYmFsRGF0YTEwQ2xpZW50RGF0YUQyRXYKQEAgLTIxMiw2ICsyMTEsNyBAQCBfX1pOM0pT
QzdQcm9maWxlMTByZXN0b3JlQWxsRXYKIF9fWk4zSlNDN1Byb2ZpbGU1Zm9jdXNFUEtOU18xMVBy
b2ZpbGVOb2RlRQogX19aTjNKU0M3UHJvZmlsZTdleGNsdWRlRVBLTlNfMTFQcm9maWxlTm9kZUUK
IF9fWk4zSlNDN1Byb2ZpbGU3Zm9yRWFjaEVNTlNfMTFQcm9maWxlTm9kZUVGdnZFCitfX1pOM0pT
QzdVU3RyaW5nM1JlcDExY29tcHV0ZUhhc2hFUEtjaQogX19aTjNKU0M3VVN0cmluZzNSZXAxMWNv
bXB1dGVIYXNoRVBLdGkKIF9fWk4zSlNDN1VTdHJpbmczUmVwMTRudWxsQmFzZVN0cmluZ0UKIF9f
Wk4zSlNDN1VTdHJpbmczUmVwN2Rlc3Ryb3lFdgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA0Mjc0NikKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxNCArMTU0LDEwIEBACiAJCTk1NzQy
RjY1MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1NzQyRjYzMEREMTFGNUEwMDA5MTdGQiAvKiBQcm9m
aWxlLmNwcCAqLzsgfTsKIAkJOTVBQjgzNDIwREE0MzIyNTAwQkM4M0YzIC8qIFByb2ZpbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUI4MzJF
MERBNDJDQUQwMEJDODNGMyAvKiBQcm9maWxlci5jcHAgKi87IH07CiAJCTk1QUI4MzU2MERBNDND
MzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFCODM1NDBEQTQzQjQ0MDBCQzgzRjMgLyogUHJvZmlsZU5v
ZGUuY3BwICovOyB9OwotCQk5NUNENDFCMzBFMUJGNjU2MDA4NTM1OEUgLyogVHJlZVByb2ZpbGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVDRDQx
QjEwRTFCRjY1NjAwODUzNThFIC8qIFRyZWVQcm9maWxlLmNwcCAqLzsgfTsKLQkJOTVDRDQxQjQw
RTFCRjY1NjAwODUzNThFIC8qIFRyZWVQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUNENDFCMjBFMUJGNjU2MDA4NTM1OEUgLyogVHJlZVBy
b2ZpbGUuaCAqLzsgfTsKIAkJOTVDRDQ1NzYwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5l
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTVDRDQ1NzQwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwICovOyB9Owog
CQk5NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVDRDQ1NzUwRTFDNEZERDAw
ODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
ICgpOyB9OyB9OwogCQk5NUUzQkMwNTBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1RTNCQzA0
MEUxQUU2ODIwMEIyRDFDMSAvKiBDYWxsSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAv
KiBKU1Byb2ZpbGVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NTk4OEJBOTBFNDc3QkVDMDBEMjhENEQgLyogSlNQcm9maWxlclByaXZh
dGUuY3BwICovOyB9OwotCQk5NUZERkExNDBFMjI5OThGMDAwNkZCMDAgLyogSGVhdnlQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1RkRG
QTEzMEUyMjk5OEYwMDA2RkIwMCAvKiBIZWF2eVByb2ZpbGUuY3BwICovOyB9OwotCQk5NUZERkEx
NjBFMjI5OTk4MDAwNkZCMDAgLyogSGVhdnlQcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUZERkExNTBFMjI5OTk4MDAwNkZCMDAgLyogSGVh
dnlQcm9maWxlLmggKi87IH07CiAJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjAw
OTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovOyB9OwogCQk5Njg4Q0IxNTBF
RDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNz
ZW1ibGVyQnVmZmVyLmggKi87IH07CiAJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTY3
MiwxMyArNjY4LDkgQEAKIAkJOTVBQjgzNTQwREE0M0I0NDAwQkM4M0YzIC8qIFByb2ZpbGVOb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFByb2ZpbGVOb2RlLmNw
cDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTVBQjgzNTUwREE0M0I0NDAwQkM4M0YzIC8qIFByb2ZpbGVOb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVOb2RlLmg7IHBhdGggPSBwcm9maWxl
ci9Qcm9maWxlTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUMxOEQzRTBD
OTBFN0VGMDBFNzJGNzMgLyogSlNSZXRhaW5QdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNSZXRhaW5QdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTVD
RDQxQjEwRTFCRjY1NjAwODUzNThFIC8qIFRyZWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRyZWVQcm9maWxlLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Ry
ZWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTVDRDQxQjIwRTFC
RjY1NjAwODUzNThFIC8qIFRyZWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFRyZWVQcm9maWxlLmg7IHBhdGggPSBwcm9maWxlci9UcmVlUHJvZmlsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUNENDU3NDBFMUM0RkREMDA4NTM1OEUgLyogUHJv
ZmlsZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQ
cm9maWxlR2VuZXJhdG9yLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUNENDU3NTBFMUM0RkREMDA4NTM1OEUg
LyogUHJvZmlsZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQ
cm9maWxlR2VuZXJhdG9yLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1RTNCQzA0MEUxQUU2ODIwMEIyRDFDMSAvKiBD
YWxsSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDYWxsSWRl
bnRpZmllci5oOyBwYXRoID0gcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOTVGREZBMTMwRTIyOTk4RjAwMDZGQjAwIC8qIEhlYXZ5UHJvZmls
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIZWF2eVByb2ZpbGUu
Y3BwOyBwYXRoID0gcHJvZmlsZXIvSGVhdnlQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOTVGREZBMTUwRTIyOTk5ODAwMDZGQjAwIC8qIEhlYXZ5UHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIZWF2eVByb2ZpbGUuaDsgcGF0aCA9IHBy
b2ZpbGVyL0hlYXZ5UHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NjAw
OTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYWJlbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk2ODhDQjEzMEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibGVyQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk2ODhDQjE0MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWDg2QXNzZW1ibGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgxLDggKzE0NzMsNiBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5NUUzQkMwNDBFMUFFNjgyMDBCMkQxQzEgLyog
Q2FsbElkZW50aWZpZXIuaCAqLywKLQkJCQk5NUZERkExMzBFMjI5OThGMDAwNkZCMDAgLyogSGVh
dnlQcm9maWxlLmNwcCAqLywKLQkJCQk5NUZERkExNTBFMjI5OTk4MDAwNkZCMDAgLyogSGVhdnlQ
cm9maWxlLmggKi8sCiAJCQkJOTU3NDJGNjMwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3Bw
ICovLAogCQkJCTk1NzQyRjY0MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmggKi8sCiAJCQkJ
OTVDRDQ1NzQwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwICovLApAQCAt
MTQ5Myw4ICsxNDgzLDYgQEAKIAkJCQk5NUFCODMyRjBEQTQyQ0FEMDBCQzgzRjMgLyogUHJvZmls
ZXIuaCAqLywKIAkJCQkxQzYxNTE2QjBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIu
aCAqLywKIAkJCQkxQzYxNTE2QTBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIubW0g
Ki8sCi0JCQkJOTVDRDQxQjEwRTFCRjY1NjAwODUzNThFIC8qIFRyZWVQcm9maWxlLmNwcCAqLywK
LQkJCQk5NUNENDFCMjBFMUJGNjU2MDA4NTM1OEUgLyogVHJlZVByb2ZpbGUuaCAqLywKIAkJCSk7
CiAJCQluYW1lID0gcHJvZmlsZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTYz
Myw3ICsxNjIxLDYgQEAKIAkJCQlCQzE4QzQwQzBFMTZGNUNEMDBCMzQ0NjAgLyogSGFzaFNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MEQwRTE2RjVDRDAwQjM0NDYwIC8qIEhhc2hUYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MEUwRTE2RjVDRDAwQjM0NDYwIC8qIEhhc2hU
cmFpdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTk1RkRGQTE2MEUyMjk5OTgwMDA2RkIwMCAvKiBI
ZWF2eVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxMDBFMTZGNUNEMDBC
MzQ0NjAgLyogSW5pdGlhbGl6ZVRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3
OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE3
NjUsNyArMTc1Miw2IEBACiAJCQkJQkMxOEM0NzEwRTE2RjVDRDAwQjM0NDYwIC8qIFRocmVhZFNw
ZWNpZmljLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3MDBFMTZGNUNEMDBCMzQ0NjAgLyog
VGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkg
LyogVHJhY2luZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTVDRDQxQjQwRTFCRjY1NjAwODUzNThF
IC8qIFRyZWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTA3RDI5RTBFODcxRTVFMDBE
N0Q4OTYgLyogVHlwZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBCNEQ3RTYzMEYzMTlBQzgw
MEFEN0U1OCAvKiBUeXBlVHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3NjBFMTZG
NUNEMDBCMzQ0NjAgLyogVVN0cmluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTAxLDcgKzIwODcs
NiBAQAogCQkJCUE3QjQ4RjQ5MEVFODkzNkYwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3ODJGMUE1MEVFQzlGQTIwMDM2MjczRiAvKiBFeGVj
dXRhYmxlQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERkM5MzMwOEVB
MTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NUZERkEx
NDBFMjI5OThGMDAwNkZCMDAgLyogSGVhdnlQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxNzg2MzZEMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0MjlEN0Q0MEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI5RDkyRjBFRDIyRDcwMDBCODk2MTkgLyogSklULmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjE0NCw3ICsyMTI5LDYgQEAKIAkJCQlCQ0NGMEQwQzBFRjBC
OEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUQ2QTU2NkIwRjA1OTk1NTAwMjY2MTQ1IC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUVFNzkzRDBENkM5QjkyMDBGRUEzQkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJOTVDRDQxQjMwRTFCRjY1NjAwODUzNThFIC8qIFRyZWVQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUY3OUFBMENFOTdCQTYwMDg4RDUwMCAvKiBVVEY4
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2OTA4MzE1MEU2NTE4RDcwMDBEMzZFRCAvKiBXUkVD
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlEQTgyMEVEMjQ4MjkwMEI4OTYxOSAvKiBXUkVD
RnVuY3RvcnMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9DYWxsSWRlbnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L0NhbGxJZGVudGlmaWVyLmgJKHJldmlzaW9uIDQyNzQ2KQorKysgSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvQ2FsbElkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsMjMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
YWxsSWRlbnRpZmllciYgY2kpIGNvbnN0IHsgcmV0dXJuIGNpLm1fbGluZU51bWJlciA9PSBtX2xp
bmVOdW1iZXIgJiYgY2kubV9uYW1lID09IG1fbmFtZSAmJiBjaS5tX3VybCA9PSBtX3VybDsgfQog
ICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhbGxJZGVudGlmaWVyJiBjaSkg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBjaSk7IH0KKyAgICAgIAorICAgICAgICBzdHJ1Y3Qg
SGFzaCB7CisgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDYWxsSWRlbnRp
ZmllciYga2V5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGhhc2hD
b2Rlc1szXSA9IHsKKyAgICAgICAgICAgICAgICAgICAga2V5Lm1fbmFtZS5yZXAoKS0+aGFzaCgp
LAorICAgICAgICAgICAgICAgICAgICBrZXkubV91cmwucmVwKCktPmhhc2goKSwKKyAgICAgICAg
ICAgICAgICAgICAga2V5Lm1fbGluZU51bWJlcgorICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgcmV0dXJuIFVTdHJpbmc6OlJlcDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oaGFzaENvZGVzKSwgc2l6ZW9mKGhhc2hDb2RlcykpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDYWxsSWRl
bnRpZmllciYgYSwgY29uc3QgQ2FsbElkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0IHsgcmV0dXJuIEhhc2g6Omhhc2goKnRoaXMpOyB9CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgY29uc3QgeyByZXR1cm4gY19zdHIoKTsgfQpA
QCAtNTcsMjYgKzc0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgfTsKIAotICAg
IHN0cnVjdCBDYWxsSWRlbnRpZmllckhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBDYWxsSWRlbnRpZmllciYga2V5KQotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBoYXNoQ29kZXNbM10gPSB7Ci0gICAgICAgICAgICAgICAga2V5Lm1fbmFtZS5yZXAoKS0+
aGFzaCgpLAotICAgICAgICAgICAgICAgIGtleS5tX3VybC5yZXAoKS0+aGFzaCgpLAotICAgICAg
ICAgICAgICAgIGtleS5tX2xpbmVOdW1iZXIKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBy
ZXR1cm4gVVN0cmluZzo6UmVwOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PGNoYXIqPiho
YXNoQ29kZXMpLCBzaXplb2YoaGFzaENvZGVzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBDYWxsSWRlbnRpZmllciYgYSwgY29uc3QgQ2FsbElkZW50aWZp
ZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci0gICAgfTsKLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVs
dEhhc2g8SlNDOjpDYWxsSWRlbnRpZmllcj4geyB0eXBlZGVmIEpTQzo6Q2FsbElkZW50aWZpZXJI
YXNoIEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpDYWxs
SWRlbnRpZmllcj4geyB0eXBlZGVmIEpTQzo6Q2FsbElkZW50aWZpZXI6Okhhc2ggSGFzaDsgfTsK
IAogICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpDYWxsSWRlbnRpZmllcj4g
OiBHZW5lcmljSGFzaFRyYWl0czxKU0M6OkNhbGxJZGVudGlmaWVyPiB7CiAgICAgICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShKU0M6OkNhbGxJZGVudGlmaWVyJiBzbG90KQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9IZWF2eVByb2ZpbGUuY3BwCShyZXZpc2lvbiA0
Mjc0NikKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hlYXZ5UHJvZmlsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSGVhdnlQcm9m
aWxlLmgiCi0KLSNpbmNsdWRlICJUcmVlUHJvZmlsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
SGVhdnlQcm9maWxlOjpIZWF2eVByb2ZpbGUoVHJlZVByb2ZpbGUqIHRyZWVQcm9maWxlKQotICAg
IDogUHJvZmlsZSh0cmVlUHJvZmlsZS0+dGl0bGUoKSwgdHJlZVByb2ZpbGUtPnVpZCgpKQotewot
ICAgIG1fdHJlZVByb2ZpbGUgPSB0cmVlUHJvZmlsZTsKLSAgICBoZWFkKCktPnNldFRvdGFsVGlt
ZShtX3RyZWVQcm9maWxlLT5oZWFkKCktPmFjdHVhbFRvdGFsVGltZSgpKTsKLSAgICBoZWFkKCkt
PnNldFNlbGZUaW1lKG1fdHJlZVByb2ZpbGUtPmhlYWQoKS0+YWN0dWFsU2VsZlRpbWUoKSk7Ci0g
ICAgZ2VuZXJhdGVIZWF2eVN0cnVjdHVyZSgpOwotfQotCi12b2lkIEhlYXZ5UHJvZmlsZTo6Z2Vu
ZXJhdGVIZWF2eVN0cnVjdHVyZSgpCi17Ci0gICAgUHJvZmlsZU5vZGUqIHRyZWVIZWFkID0gbV90
cmVlUHJvZmlsZS0+aGVhZCgpOwotICAgIFByb2ZpbGVOb2RlKiBjdXJyZW50Tm9kZSA9IHRyZWVI
ZWFkLT5maXJzdENoaWxkKCk7Ci0gICAgZm9yIChQcm9maWxlTm9kZSogbmV4dE5vZGUgPSBjdXJy
ZW50Tm9kZTsgbmV4dE5vZGU7IG5leHROb2RlID0gbmV4dE5vZGUtPmZpcnN0Q2hpbGQoKSkKLSAg
ICAgICAgY3VycmVudE5vZGUgPSBuZXh0Tm9kZTsKLQotICAgIC8vIEZvciBlYWNoIG5vZGUKLSAg
ICBIYXNoTWFwPENhbGxJZGVudGlmaWVyLCBQcm9maWxlTm9kZSo+IGZvdW5kQ2hpbGRyZW47Ci0g
ICAgd2hpbGUgKGN1cnJlbnROb2RlICYmIGN1cnJlbnROb2RlICE9IHRyZWVIZWFkKSB7Ci0gICAg
ICAgIFByb2ZpbGVOb2RlKiBjaGlsZCA9IGZvdW5kQ2hpbGRyZW4uZ2V0KGN1cnJlbnROb2RlLT5j
YWxsSWRlbnRpZmllcigpKTsKLSAgICAgICAgaWYgKGNoaWxkKSAvLyBjdXJyZW50Tm9kZSBpcyBp
biB0aGUgc2V0IGFscmVhZHkKLSAgICAgICAgICAgIG1lcmdlUHJvZmlsZXMoY2hpbGQsIGN1cnJl
bnROb2RlKTsKLSAgICAgICAgZWxzZSB7IC8vIGN1cnJlbnROb2RlIGlzIG5vdCBpbiB0aGUgc2V0
Ci0gICAgICAgICAgICBjaGlsZCA9IGFkZE5vZGUoY3VycmVudE5vZGUpOwotICAgICAgICAgICAg
Zm91bmRDaGlsZHJlbi5zZXQoY3VycmVudE5vZGUtPmNhbGxJZGVudGlmaWVyKCksIGNoaWxkKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNl
TmV4dE5vZGVQb3N0T3JkZXIoKTsKLSAgICB9Ci19Ci0KLVByb2ZpbGVOb2RlKiBIZWF2eVByb2Zp
bGU6OmFkZE5vZGUoUHJvZmlsZU5vZGUqIGN1cnJlbnROb2RlKQotewotICAgIFJlZlB0cjxQcm9m
aWxlTm9kZT4gbm9kZSA9IFByb2ZpbGVOb2RlOjpjcmVhdGUoaGVhZCgpLCBjdXJyZW50Tm9kZSk7
Ci0gICAgaGVhZCgpLT5hZGRDaGlsZChub2RlKTsKLQotICAgIGFkZEFuY2VzdG9yc0FzQ2hpbGRy
ZW4oY3VycmVudE5vZGUtPnBhcmVudCgpLCBub2RlLmdldCgpKTsKLSAgICByZXR1cm4gbm9kZS5n
ZXQoKTsKLX0KLQotdm9pZCBIZWF2eVByb2ZpbGU6Om1lcmdlUHJvZmlsZXMoUHJvZmlsZU5vZGUq
IGhlYXZ5UHJvZmlsZUhlYWQsIFByb2ZpbGVOb2RlKiB0cmVlUHJvZmlsZUhlYWQpCi17Ci0gICAg
QVNTRVJUX0FSRyhoZWF2eVByb2ZpbGVIZWFkLCBoZWF2eVByb2ZpbGVIZWFkKTsKLSAgICBBU1NF
UlRfQVJHKHRyZWVQcm9maWxlSGVhZCwgdHJlZVByb2ZpbGVIZWFkKTsKLQotICAgIFByb2ZpbGVO
b2RlKiBjdXJyZW50VHJlZU5vZGUgPSB0cmVlUHJvZmlsZUhlYWQ7Ci0gICAgUHJvZmlsZU5vZGUq
IGN1cnJlbnRIZWF2eU5vZGUgPSBoZWF2eVByb2ZpbGVIZWFkOwotICAgIFByb2ZpbGVOb2RlKiBw
cmV2aW91c0hlYXZ5Tm9kZSA9IDA7Ci0gICAgCi0gICAgd2hpbGUgKGN1cnJlbnRIZWF2eU5vZGUp
IHsKLSAgICAgICAgcHJldmlvdXNIZWF2eU5vZGUgPSBjdXJyZW50SGVhdnlOb2RlOwotCi0gICAg
ICAgIGN1cnJlbnRIZWF2eU5vZGUtPnNldFRvdGFsVGltZShjdXJyZW50SGVhdnlOb2RlLT5hY3R1
YWxUb3RhbFRpbWUoKSArIGN1cnJlbnRUcmVlTm9kZS0+YWN0dWFsVG90YWxUaW1lKCkpOwotICAg
ICAgICBjdXJyZW50SGVhdnlOb2RlLT5zZXRTZWxmVGltZShjdXJyZW50SGVhdnlOb2RlLT5hY3R1
YWxTZWxmVGltZSgpICsgY3VycmVudFRyZWVOb2RlLT5hY3R1YWxTZWxmVGltZSgpKTsKLSAgICAg
ICAgY3VycmVudEhlYXZ5Tm9kZS0+c2V0TnVtYmVyT2ZDYWxscyhjdXJyZW50SGVhdnlOb2RlLT5u
dW1iZXJPZkNhbGxzKCkgKyBjdXJyZW50VHJlZU5vZGUtPm51bWJlck9mQ2FsbHMoKSk7Ci0KLSAg
ICAgICAgY3VycmVudFRyZWVOb2RlID0gY3VycmVudFRyZWVOb2RlLT5wYXJlbnQoKTsKLSAgICAg
ICAgY3VycmVudEhlYXZ5Tm9kZSA9IGN1cnJlbnRIZWF2eU5vZGUtPmZpbmRDaGlsZChjdXJyZW50
VHJlZU5vZGUpOwotICAgIH0KLQotICAgIC8vIElmIGN1cnJlbnRUcmVlTm9kZSBpcyBudWxsIHRo
ZW4gd2UgYWxyZWFkeSBoYXZlIHRoZSB3aG9sZSB0cmVlIHdlIHdhbnRlZCB0byBjb3B5LgotICAg
IC8vIElmIG5vdCB3ZSBuZWVkIHRvIGNvcHkgdGhlIHN1YnNldCBvZiB0aGUgdHJlZSB0aGF0IHJl
bWFpbnMgZGlmZmVyZW50IGJldHdlZW4gdGhlIHR3by4KLSAgICBpZiAoY3VycmVudFRyZWVOb2Rl
KQotICAgICAgICBhZGRBbmNlc3RvcnNBc0NoaWxkcmVuKGN1cnJlbnRUcmVlTm9kZSwgcHJldmlv
dXNIZWF2eU5vZGUpOwotfQotCi12b2lkIEhlYXZ5UHJvZmlsZTo6YWRkQW5jZXN0b3JzQXNDaGls
ZHJlbihQcm9maWxlTm9kZSogZ2V0RnJvbSwgUHJvZmlsZU5vZGUqIGFkZFRvKQotewotICAgIEFT
U0VSVF9BUkcoZ2V0RnJvbSwgZ2V0RnJvbSk7Ci0gICAgQVNTRVJUX0FSRyhhZGRUbywgYWRkVG8p
OwotCi0gICAgaWYgKCFnZXRGcm9tLT5oZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJl
ZlB0cjxQcm9maWxlTm9kZT4gY3VycmVudE5vZGUgPSBhZGRUbzsKLSAgICBmb3IgKFByb2ZpbGVO
b2RlKiB0cmVlQW5jZXN0b3IgPSBnZXRGcm9tOyB0cmVlQW5jZXN0b3IgJiYgdHJlZUFuY2VzdG9y
ICE9IGdldEZyb20tPmhlYWQoKTsgdHJlZUFuY2VzdG9yID0gdHJlZUFuY2VzdG9yLT5wYXJlbnQo
KSkgewotICAgICAgICBSZWZQdHI8UHJvZmlsZU5vZGU+IG5ld0NoaWxkID0gUHJvZmlsZU5vZGU6
OmNyZWF0ZShjdXJyZW50Tm9kZS0+aGVhZCgpLCB0cmVlQW5jZXN0b3IpOwotICAgICAgICBjdXJy
ZW50Tm9kZS0+YWRkQ2hpbGQobmV3Q2hpbGQpOwotICAgICAgICBjdXJyZW50Tm9kZSA9IG5ld0No
aWxkLnJlbGVhc2UoKTsKLSAgICB9Ci19Ci0KLX0gICAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9IZWF2eVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9IZWF2eVByb2ZpbGUuaAkocmV2aXNpb24gNDI3NDYpCisrKyBK
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9IZWF2eVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LSAKLSNpZm5kZWYgSGVhdnlQcm9maWxlX2gKLSNkZWZpbmUgSGVhdnlQcm9maWxlX2gKLQotI2lu
Y2x1ZGUgIlByb2ZpbGUuaCIKLSNpbmNsdWRlICJQcm9maWxlTm9kZS5oIgotI2luY2x1ZGUgIlRy
ZWVQcm9maWxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgY2xhc3MgVVN0cmluZzsKLQot
ICAgIGNsYXNzIEhlYXZ5UHJvZmlsZSA6IHB1YmxpYyBQcm9maWxlIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhlYXZ5UHJvZmlsZT4gY3JlYXRlKFRyZWVQcm9maWxl
KiB0cmVlUHJvZmlsZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIZWF2eVByb2ZpbGUodHJlZVByb2ZpbGUpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1
YWwgUHJvZmlsZSogaGVhdnlQcm9maWxlKCkgeyByZXR1cm4gdGhpczsgfQotICAgICAgICB2aXJ0
dWFsIFByb2ZpbGUqIHRyZWVQcm9maWxlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG1fdHJlZVByb2ZpbGU7Ci0gICAgICAgIH0KLQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSGVh
dnlQcm9maWxlKFRyZWVQcm9maWxlKik7Ci0gICAgICAgIHZvaWQgZ2VuZXJhdGVIZWF2eVN0cnVj
dHVyZSgpOwotICAgICAgICBQcm9maWxlTm9kZSogYWRkTm9kZShQcm9maWxlTm9kZSopOwotICAg
ICAgICB2b2lkIG1lcmdlUHJvZmlsZXMoUHJvZmlsZU5vZGUqIGhlYXZ5UHJvZmlsZUhlYWQsIFBy
b2ZpbGVOb2RlKiB0cmVlUHJvZmlsZUhlYWQpOwotICAgICAgICB2b2lkIGFkZEFuY2VzdG9yc0Fz
Q2hpbGRyZW4oUHJvZmlsZU5vZGUqIGdldEZyb20sIFByb2ZpbGVOb2RlKiBhZGRUbyk7Ci0KLSAg
ICAgICAgVHJlZVByb2ZpbGUqIG1fdHJlZVByb2ZpbGU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCi0KLSNlbmRpZiAvLyBIZWF2eVByb2ZpbGVfaApJbmRleDogSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZS5jcHAJKHJldmlzaW9uIDQyNzQ2KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE0ICsyNywxMyBAQAogI2luY2x1
ZGUgIlByb2ZpbGUuaCIKIAogI2luY2x1ZGUgIlByb2ZpbGVOb2RlLmgiCi0jaW5jbHVkZSAiVHJl
ZVByb2ZpbGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogUGFz
c1JlZlB0cjxQcm9maWxlPiBQcm9maWxlOjpjcmVhdGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVu
c2lnbmVkIHVpZCkKIHsKLSAgICByZXR1cm4gVHJlZVByb2ZpbGU6OmNyZWF0ZSh0aXRsZSwgdWlk
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2ZpbGUodGl0bGUsIHVpZCkpOwogfQogCiBQ
cm9maWxlOjpQcm9maWxlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCShyZXZpc2lvbiA0Mjc0NikKKysrIEphdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjIgKzQ1LDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBpbnQgdWlkKCkgY29uc3QgeyBy
ZXR1cm4gbV91aWQ7IH0KIAogICAgICAgICB2b2lkIGZvckVhY2godm9pZCAoUHJvZmlsZU5vZGU6
OiopKCkpOwotICAgICAgICB2b2lkIHNvcnRUb3RhbFRpbWVEZXNjZW5kaW5nKCkgeyBmb3JFYWNo
KCZQcm9maWxlTm9kZTo6c29ydFRvdGFsVGltZURlc2NlbmRpbmcpOyB9Ci0gICAgICAgIHZvaWQg
c29ydFRvdGFsVGltZUFzY2VuZGluZygpIHsgZm9yRWFjaCgmUHJvZmlsZU5vZGU6OnNvcnRUb3Rh
bFRpbWVBc2NlbmRpbmcpOyB9Ci0gICAgICAgIHZvaWQgc29ydFNlbGZUaW1lRGVzY2VuZGluZygp
IHsgZm9yRWFjaCgmUHJvZmlsZU5vZGU6OnNvcnRTZWxmVGltZURlc2NlbmRpbmcpOyB9Ci0gICAg
ICAgIHZvaWQgc29ydFNlbGZUaW1lQXNjZW5kaW5nKCkgeyBmb3JFYWNoKCZQcm9maWxlTm9kZTo6
c29ydFNlbGZUaW1lQXNjZW5kaW5nKTsgfQotICAgICAgICB2b2lkIHNvcnRDYWxsc0Rlc2NlbmRp
bmcoKSB7IGZvckVhY2goJlByb2ZpbGVOb2RlOjpzb3J0Q2FsbHNEZXNjZW5kaW5nKTsgfQotICAg
ICAgICB2b2lkIHNvcnRDYWxsc0FzY2VuZGluZygpIHsgZm9yRWFjaCgmUHJvZmlsZU5vZGU6OnNv
cnRDYWxsc0FzY2VuZGluZyk7IH0KLSAgICAgICAgdm9pZCBzb3J0RnVuY3Rpb25OYW1lRGVzY2Vu
ZGluZygpIHsgZm9yRWFjaCgmUHJvZmlsZU5vZGU6OnNvcnRGdW5jdGlvbk5hbWVEZXNjZW5kaW5n
KTsgfQotICAgICAgICB2b2lkIHNvcnRGdW5jdGlvbk5hbWVBc2NlbmRpbmcoKSB7IGZvckVhY2go
JlByb2ZpbGVOb2RlOjpzb3J0RnVuY3Rpb25OYW1lQXNjZW5kaW5nKTsgfQogCiAgICAgICAgIHZv
aWQgZm9jdXMoY29uc3QgUHJvZmlsZU5vZGUqKTsKICAgICAgICAgdm9pZCBleGNsdWRlKGNvbnN0
IFByb2ZpbGVOb2RlKik7CiAgICAgICAgIHZvaWQgcmVzdG9yZUFsbCgpOwogCi0gICAgICAgIHZp
cnR1YWwgUHJvZmlsZSogaGVhdnlQcm9maWxlKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIFByb2Zp
bGUqIHRyZWVQcm9maWxlKCkgPSAwOyAKLQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgdm9pZCBk
ZWJ1Z1ByaW50RGF0YSgpIGNvbnN0OwogICAgICAgICB2b2lkIGRlYnVnUHJpbnREYXRhU2FtcGxl
U3R5bGUoKSBjb25zdDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5j
cHAJKHJldmlzaW9uIDQyNzQ2KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsMTIgKzIwNCw2IEBAIFByb2ZpbGVOb2RlKiBQ
cm9maWxlTm9kZTo6dHJhdmVyc2VOZXh0Tm8KICAgICByZXR1cm4gbmV4dDsKIH0KIAotdm9pZCBQ
cm9maWxlTm9kZTo6c29ydChib29sIGNvbXBhcmF0b3IoY29uc3QgUmVmUHRyPFByb2ZpbGVOb2Rl
PiYgLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiApKQotewotICAgIHN0ZDo6c29ydChjaGls
ZHJlbkJlZ2luKCksIGNoaWxkcmVuRW5kKCksIGNvbXBhcmF0b3IpOyAgICAKLSAgICByZXNldENo
aWxkcmVuc1NpYmxpbmdzKCk7Ci19Ci0KIHZvaWQgUHJvZmlsZU5vZGU6OnNldFRyZWVWaXNpYmxl
KFByb2ZpbGVOb2RlKiBub2RlLCBib29sIHZpc2libGUpCiB7CiAgICAgUHJvZmlsZU5vZGUqIG5v
ZGVQYXJlbnQgPSBub2RlLT5wYXJlbnQoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZU5vZGUuaAkocmV2aXNpb24gNDI3NDYpCisrKyBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTYgKzExMiw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBQcm9maWxlTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVBvc3RPcmRlcigp
IGNvbnN0OwogICAgICAgICBQcm9maWxlTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVByZU9yZGVyKGJv
b2wgcHJvY2Vzc0NoaWxkcmVuID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBzb3J0KGJv
b2wgKCopKGNvbnN0IFJlZlB0cjxQcm9maWxlTm9kZT4mLCBjb25zdCBSZWZQdHI8UHJvZmlsZU5v
ZGU+JikpOwotICAgICAgICB2b2lkIHNvcnRUb3RhbFRpbWVEZXNjZW5kaW5nKCkgeyBzb3J0KHRv
dGFsVGltZURlc2NlbmRpbmdDb21wYXJhdG9yKTsgfQotICAgICAgICB2b2lkIHNvcnRUb3RhbFRp
bWVBc2NlbmRpbmcoKSB7IHNvcnQodG90YWxUaW1lQXNjZW5kaW5nQ29tcGFyYXRvcik7IH0KLSAg
ICAgICAgdm9pZCBzb3J0U2VsZlRpbWVEZXNjZW5kaW5nKCkgeyBzb3J0KHNlbGZUaW1lRGVzY2Vu
ZGluZ0NvbXBhcmF0b3IpOyB9Ci0gICAgICAgIHZvaWQgc29ydFNlbGZUaW1lQXNjZW5kaW5nKCkg
eyBzb3J0KHNlbGZUaW1lQXNjZW5kaW5nQ29tcGFyYXRvcik7IH0KLSAgICAgICAgdm9pZCBzb3J0
Q2FsbHNEZXNjZW5kaW5nKCkgeyBzb3J0KGNhbGxzRGVzY2VuZGluZ0NvbXBhcmF0b3IpOyB9Ci0g
ICAgICAgIHZvaWQgc29ydENhbGxzQXNjZW5kaW5nKCkgeyBzb3J0KGNhbGxzQXNjZW5kaW5nQ29t
cGFyYXRvcik7IH0KLSAgICAgICAgdm9pZCBzb3J0RnVuY3Rpb25OYW1lRGVzY2VuZGluZygpIHsg
c29ydChmdW5jdGlvbk5hbWVEZXNjZW5kaW5nQ29tcGFyYXRvcik7IH0KLSAgICAgICAgdm9pZCBz
b3J0RnVuY3Rpb25OYW1lQXNjZW5kaW5nKCkgeyBzb3J0KGZ1bmN0aW9uTmFtZUFzY2VuZGluZ0Nv
bXBhcmF0b3IpOyB9Ci0KICAgICAgICAgLy8gVmlld3MKICAgICAgICAgdm9pZCBjYWxjdWxhdGVW
aXNpYmxlVG90YWxUaW1lKCk7CiAgICAgICAgIGJvb2wgZm9jdXMoY29uc3QgQ2FsbElkZW50aWZp
ZXImKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1RyZWVQcm9maWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UcmVlUHJvZmlsZS5jcHAJKHJldmlz
aW9uIDQyNzQ2KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvVHJlZVByb2ZpbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVHJlZVBy
b2ZpbGUuaCIKLQotI2luY2x1ZGUgIkhlYXZ5UHJvZmlsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotUGFzc1JlZlB0cjxUcmVlUHJvZmlsZT4gVHJlZVByb2ZpbGU6OmNyZWF0ZShjb25zdCBVU3Ry
aW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHJl
ZVByb2ZpbGUodGl0bGUsIHVpZCkpOwotfQotCi1UcmVlUHJvZmlsZTo6VHJlZVByb2ZpbGUoY29u
c3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKLSAgICA6IFByb2ZpbGUodGl0bGUsIHVp
ZCkKLXsKLX0KLQotUHJvZmlsZSogVHJlZVByb2ZpbGU6OmhlYXZ5UHJvZmlsZSgpCi17Ci0gICAg
aWYgKCFtX2hlYXZ5UHJvZmlsZSkKLSAgICAgICAgbV9oZWF2eVByb2ZpbGUgPSBIZWF2eVByb2Zp
bGU6OmNyZWF0ZSh0aGlzKTsKLQotICAgIHJldHVybiBtX2hlYXZ5UHJvZmlsZS5nZXQoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UcmVl
UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1RyZWVQcm9m
aWxlLmgJKHJldmlzaW9uIDQyNzQ2KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvVHJlZVBy
b2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSNpZm5kZWYgVHJlZVByb2ZpbGVfaAotI2Rl
ZmluZSBUcmVlUHJvZmlsZV9oCi0KLSNpbmNsdWRlICJQcm9maWxlLmgiCi0KLW5hbWVzcGFjZSBK
U0MgewotCi0gICAgY2xhc3MgRXhlY1N0YXRlOwotICAgIGNsYXNzIEhlYXZ5UHJvZmlsZTsKLSAg
ICBjbGFzcyBVU3RyaW5nOwotCi0gICAgY2xhc3MgVHJlZVByb2ZpbGUgOiBwdWJsaWMgUHJvZmls
ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmVlUHJvZmlsZT4g
Y3JlYXRlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpOwotCi0gICAgICAgIHZp
cnR1YWwgUHJvZmlsZSogaGVhdnlQcm9maWxlKCk7Ci0gICAgICAgIHZpcnR1YWwgUHJvZmlsZSog
dHJlZVByb2ZpbGUoKSB7IHJldHVybiB0aGlzOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBU
cmVlUHJvZmlsZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKLSAgICAgICAg
UmVmUHRyPEhlYXZ5UHJvZmlsZT4gbV9oZWF2eVByb2ZpbGU7Ci0gICAgfTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBUcmVlUHJvZmlsZXJfaApJbmRleDogV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyNzc1KQor
KysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTYgQEAKKzIw
MDktMDQtMjMgIEZyYW5jaXNjbyBUb2xtYXNreSAgPHNldCBFTUFJTF9BRERSRVNTIGVudmlyb25t
ZW50IHZhcmlhYmxlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJVRyAyNDYwNDogV2ViS2l0IHByb2ZpbGVyIHJlcG9ydHMgaW5jb3JyZWN0IHRvdGFs
IHRpbWVzCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjQ2MDQ+CisKKyAgICAgICAgTWFkZSBpdCBzbyB0aGF0IG1vc3QgdGhlIGZ1bmN0aW9ucyBub3cg
bWF0Y2ggdGhlIGJlaGF2aW9yIG9mIFNoYXJrLiBNb3N0IG5vdGFibHksIGluIHRoZSBoZWF2eSB2
aWV3LAorICAgICAgICBjaGlsZCBub2RlcyBub3cgcmVwcmVzZW50IHRoZSBzdGF0aXN0aWNzIG9m
IHRoZSByb290IG5vZGUsIGJ1dCBpbiB0aGUgY2FsbHN0YWNrIG9yaWdpbmF0aW5nIGF0IHRoYXQg
bm9kZS4KKyAgICAgICAgQWxzbyBhZGRlZCBhIG51bWJlciBvZiBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMsIG1ha2luZyBpdCBzbyB0aGUgaGVhdnkgdHJlZSBpcyBub3QgY2FsY3VsYXRlZCB1bnRp
bCAKKyAgICAgICAgaXRzIG5vZGVzIGFyZSByZXZlYWxlZC4gTW92ZWQgYSBsb3Qgb3V0IG9mIEMr
KyBhbmQgaW50byBKUywgYWxsb3dpbmcgZm9yIG1vcmUgcmVwcmVzZW50YXRpb25zIGFuZCBlYXNp
ZXIgCisgICAgICAgIG1hbmlwdWxhdGlvbnMgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIEVu
Z2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczogQWRkZWQgIkF2ZXJhZ2UiIGZvciBhdmVy
YWdlIHRpbWVzIGluIHRoZSBwcm9maWxlLgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0
UHJvZmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9maWxlQ2xhc3MpOgorICAgICAgICAq
IGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEhlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0Q2FsbFVJRCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9maWxlTm9kZUNsYXNzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5q
czogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRU
cmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUu
cHJvdG90eXBlLmZvY3VzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVE
YXRhR3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUuX3Rha2VQcm9wZXJ0aWVzRnJvbVByb2ZpbGVEYXRhR3JpZE5vZGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90
b3R5cGUuX2tlZXBPbmx5Q2hpbGQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJv
ZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2V4Y2x1ZGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX21lcmdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9w
b3B1bGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnNldCBoYXNDaGlsZHJl
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5nZXQgaGFz
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUu
YXBwZW5kQ2hpbGQuV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5hcHBlbmRDaGlsZC5p
bnNlcnRDaGlsZC5XZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmluc2VydENoaWxkLnJl
bW92ZUNoaWxkLldlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQucmVt
b3ZlQ2hpbGRyZW4uV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJl
bi5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZS5XZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
LnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlLl9yZWNhbGN1bGF0ZVNpYmxpbmdzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZE5vZGUuanM6IEFkZGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlhQcm9maWxlRGF0YUdyaWROb2RlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5YUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IGRhdGEuZm9ybWF0TWls
bGlzZWNvbmRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5YUHJvZmlsZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUuZ2V0IGRhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhQcm9maWxlRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5YUHJv
ZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5YUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuZGVzZWxlY3QpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlhQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5leHBhbmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlhQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5hcHBlbmRDaGls
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuWFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBl
LmZpbmRDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuWFByb2ZpbGVEYXRhR3JpZE5vZGUu
cHJvdG90eXBlLmdldCBhdmVyYWdlVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuWFByb2Zp
bGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBhdmVyYWdlUGVyY2VudCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuWFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBzZWxmUGVyY2Vu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuWFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBl
LmdldCB0b3RhbFBlcmNlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZURhdGFHcmlkVHJlZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURh
dGFHcmlkTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUuZ2V0IGRhdGEuZm9ybWF0TWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5nZXQgZGF0YSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuc2VsZWN0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5k
ZXNlbGVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90
b3R5cGUuZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5pbnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5maW5kQ2hpbGQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBh
dmVyYWdlVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUuZ2V0IGF2ZXJhZ2VQZXJjZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5nZXQgc2VsZlBlcmNlbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCB0b3RhbFBlcmNlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9z
YXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5fcmVzdG9yZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUuX21lcmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRU
cmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlw
ZS5nZXQgZXhwYW5kZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRy
ZWUucHJvdG90eXBlLmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
RGF0YUdyaWRUcmVlLnByb3RvdHlwZS5pbnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlLmZpbmRDaGlsZC5X
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuZmluZENoaWxkLnNvcnQu
V2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnNvcnQuX3NhdmUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJh
dG9yLmNvbXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRy
ZWUucHJvcGVydHlDb21wYXJhdG9yLmVsc2UuY29tcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5wcm9wZXJ0eUNvbXBhcmF0b3IpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5zZXQgcHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJv
dG90eXBlLmdldCBib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5nZXQgdG9wRG93blByb2ZpbGVEYXRhR3JpZFRy
ZWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5nZXQgY3Vy
cmVudFRyZWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5z
ZXQgY3VycmVudFRyZWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5nZXQgdG9wRG93blRyZWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3
LnByb3RvdHlwZS5nZXQgYm90dG9tVXBUcmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlVmlldy5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZVZpZXcucHJvdG90eXBlLnJlZnJlc2hWaXNpYmxlRGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLnJlZnJlc2hTaG93QXNQZXJjZW50cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gubWF0Y2hl
c1F1ZXJ5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5cGUucGVy
Zm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBl
Ll9jaGFuZ2VWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5
cGUuX2ZvY3VzQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJv
dG90eXBlLl9leGNsdWRlQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZp
ZXcucHJvdG90eXBlLl9yZXNldENsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2Zp
bGVWaWV3LnByb3RvdHlwZS5fc29ydFByb2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLnByb3RvdHlwZS5zaG93UHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbC5wcm90b3R5cGUuc2hvd1ZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2Zp
bGVzUGFuZWwucHJvdG90eXBlLnNlYXJjaE1hdGNoRm91bmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWROb2RlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3BvcHVsYXRl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90
b3R5cGUuX2V4Y2x1ZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0
YUdyaWRUcmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZS5wcm90b3R5cGUuZm9jdXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9m
aWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5leGNsdWRlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6
CisKIDIwMDktMDQtMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rv
ci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3Iv
SmF2YVNjcmlwdFByb2ZpbGUuY3BwCShyZXZpc2lvbiA0Mjc0NikKKysrIFdlYkNvcmUvaW5zcGVj
dG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsMjQgKzcyLDYg
QEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0SGVhZENhbGxiYWNrKEpTQ29udAogICAgIHJldHVybiB0
b1JlZih0b0pTKHRvSlMoY3R4KSwgcHJvZmlsZS0+aGVhZCgpKSk7CiB9CiAKLXN0YXRpYyBKU1Zh
bHVlUmVmIGdldEhlYXZ5UHJvZmlsZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKLXsKLSAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZSog
cHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwotICAgIHJldHVybiB0b1JlZih0b0pTKHRvSlMoY3R4KSwgcHJvZmlsZS0+aGVhdnlQ
cm9maWxlKCkpKTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgZ2V0VHJlZVByb2ZpbGVDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwg
SlNWYWx1ZVJlZiopCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhp
c09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxl
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICByZXR1cm4gdG9SZWYodG9K
Uyh0b0pTKGN0eCksIHByb2ZpbGUtPnRyZWVQcm9maWxlKCkpKTsKLX0KLQogc3RhdGljIEpTVmFs
dWVSZWYgZ2V0VW5pcXVlSWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCiB7CiAgICAgaWYgKCFKU1ZhbHVl
SXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQpAQCAtMTQ2
LDk0ICsxMjgsNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiByZXN0b3JlQWxsKEpTQ29udGV4dFJlCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVl
UmVmIHNvcnRUb3RhbFRpbWVEZXNjZW5kaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
IC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IC8qYXJndW1lbnRD
b3VudCovLCBjb25zdCBKU1ZhbHVlUmVmW10gLyphcmd1bWVudHMqLywgSlNWYWx1ZVJlZiogLypl
eGNlcHRpb24qLykKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlz
T2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjdHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUq
PihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHByb2ZpbGUtPnNvcnRUb3Rh
bFRpbWVEZXNjZW5kaW5nKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4
KTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgc29ydFRvdGFsVGltZUFzY2VuZGluZyhKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCAvKmFyZ3VtZW50Q291bnQqLywgY29uc3QgSlNWYWx1ZVJlZltdIC8qYXJndW1l
bnRzKi8sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8pCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNP
YmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUg
PSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
LSAgICBwcm9maWxlLT5zb3J0VG90YWxUaW1lQXNjZW5kaW5nKCk7Ci0KLSAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLX0KLQotc3RhdGljIEpTVmFsdWVSZWYgc29ydFNlbGZU
aW1lRGVzY2VuZGluZyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCAvKmFyZ3VtZW50Q291bnQqLywgY29uc3Qg
SlNWYWx1ZVJlZltdIC8qYXJndW1lbnRzKi8sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8pCi17
Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmls
ZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQot
ICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBwcm9maWxlLT5zb3J0U2VsZlRpbWVEZXNjZW5kaW5n
KCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLX0KLQotc3RhdGlj
IEpTVmFsdWVSZWYgc29ydFNlbGZUaW1lQXNjZW5kaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IC8qYXJn
dW1lbnRDb3VudCovLCBjb25zdCBKU1ZhbHVlUmVmW10gLyphcmd1bWVudHMqLywgSlNWYWx1ZVJl
ZiogLypleGNlcHRpb24qLykKLXsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4
LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRpY19jYXN0PFBy
b2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHByb2ZpbGUtPnNv
cnRTZWxmVGltZUFzY2VuZGluZygpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGN0eCk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIHNvcnRDYWxsc0Rlc2NlbmRpbmcoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWZbXSAvKmFyZ3Vt
ZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQotewotICAgIGlmICghSlNWYWx1ZUlz
T2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxl
ID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
Ci0gICAgcHJvZmlsZS0+c29ydENhbGxzRGVzY2VuZGluZygpOwotCi0gICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIHNvcnRDYWxsc0Fz
Y2VuZGluZyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCAvKmFyZ3VtZW50Q291bnQqLywgY29uc3QgSlNWYWx1
ZVJlZltdIC8qYXJndW1lbnRzKi8sIEpTVmFsdWVSZWYqIC8qZXhjZXB0aW9uKi8pCi17Ci0gICAg
aWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNz
KCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFBy
b2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKLSAgICBwcm9maWxlLT5zb3J0Q2FsbHNBc2NlbmRpbmcoKTsKLQotICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJl
ZiBzb3J0RnVuY3Rpb25OYW1lRGVzY2VuZGluZyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCAvKmFyZ3VtZW50
Q291bnQqLywgY29uc3QgSlNWYWx1ZVJlZltdIC8qYXJndW1lbnRzKi8sIEpTVmFsdWVSZWYqIC8q
ZXhjZXB0aW9uKi8pCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhp
c09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxl
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBwcm9maWxlLT5zb3J0RnVu
Y3Rpb25OYW1lRGVzY2VuZGluZygpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGN0eCk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIHNvcnRGdW5jdGlvbk5hbWVBc2NlbmRpbmco
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWZbXSAv
KmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQotewotICAgIGlmICghSlNW
YWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBw
cm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7Ci0gICAgcHJvZmlsZS0+c29ydEZ1bmN0aW9uTmFtZUFzY2VuZGluZygpOwotCi0gICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGZpbmFs
aXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsKICAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGlj
X2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKQEAgLTI0Niw4ICsx
NDAsNiBAQCBKU0NsYXNzUmVmIFByb2ZpbGVDbGFzcygpCiAgICAgc3RhdGljIEpTU3RhdGljVmFs
dWUgc3RhdGljVmFsdWVzW10gPSB7CiAgICAgICAgIHsgInRpdGxlIiwgZ2V0VGl0bGVDYWxsYmFj
aywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgImhlYWQiLCBnZXRI
ZWFkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJo
ZWF2eVByb2ZpbGUiLCBnZXRIZWF2eVByb2ZpbGVDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInRyZWVQcm9maWxlIiwgZ2V0VHJlZVByb2ZpbGVDYWxs
YmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgInVpZCIsIGdl
dFVuaXF1ZUlkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAg
ICB7IDAsIDAsIDAsIDAgfQogICAgIH07CkBAIC0yNTYsMTQgKzE0OCw2IEBAIEpTQ2xhc3NSZWYg
UHJvZmlsZUNsYXNzKCkKICAgICAgICAgeyAiZm9jdXMiLCBmb2N1cywga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lIH0sCiAgICAgICAgIHsgImV4Y2x1ZGUiLCBleGNsdWRlLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAicmVzdG9yZUFsbCIsIHJlc3RvcmVBbGwsIGtKU1By
b3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJzb3J0VG90YWxUaW1lRGVzY2VuZGlu
ZyIsIHNvcnRUb3RhbFRpbWVEZXNjZW5kaW5nLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwK
LSAgICAgICAgeyAic29ydFRvdGFsVGltZUFzY2VuZGluZyIsIHNvcnRUb3RhbFRpbWVBc2NlbmRp
bmcsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJzb3J0U2VsZlRpbWVE
ZXNjZW5kaW5nIiwgc29ydFNlbGZUaW1lRGVzY2VuZGluZywga0pTUHJvcGVydHlBdHRyaWJ1dGVO
b25lIH0sCi0gICAgICAgIHsgInNvcnRTZWxmVGltZUFzY2VuZGluZyIsIHNvcnRTZWxmVGltZUFz
Y2VuZGluZywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInNvcnRDYWxs
c0Rlc2NlbmRpbmciLCBzb3J0Q2FsbHNEZXNjZW5kaW5nLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5v
bmUgfSwKLSAgICAgICAgeyAic29ydENhbGxzQXNjZW5kaW5nIiwgc29ydENhbGxzQXNjZW5kaW5n
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAic29ydEZ1bmN0aW9uTmFt
ZURlc2NlbmRpbmciLCBzb3J0RnVuY3Rpb25OYW1lRGVzY2VuZGluZywga0pTUHJvcGVydHlBdHRy
aWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInNvcnRGdW5jdGlvbk5hbWVBc2NlbmRpbmciLCBzb3J0
RnVuY3Rpb25OYW1lQXNjZW5kaW5nLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAg
ICAgeyAwLCAwLCAwIH0KICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0UHJvZmlsZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFT
Y3JpcHRQcm9maWxlTm9kZS5jcHAJKHJldmlzaW9uIDQyNzQ2KQorKysgV2ViQ29yZS9pbnNwZWN0
b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4
MSwyOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRDaGlsZHJlbihKU0NvbnRleHRSCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZ2V0UGFyZW50KEpTQ29udGV4dFJl
ZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikK
K3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICAKKyAgICBpZiAoIUpTVmFsdWVJ
c09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKyAgICAKKyAgICBQcm9maWxl
Tm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0dXJuIHRvUmVmKHRvSlModG9KUyhjdHgpLCBw
cm9maWxlTm9kZS0+cGFyZW50KCkpCisgICAgKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0
SGVhZChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1Jl
ZiwgSlNWYWx1ZVJlZiopCit7CisgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgCisg
ICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5v
ZGVDbGFzcygpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cisg
ICAgCisgICAgUHJvZmlsZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5v
ZGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVybiB0b1JlZih0
b0pTKHRvSlMoY3R4KSwgcHJvZmlsZU5vZGUtPmhlYWQoKSkpOworfQorICAgIAogc3RhdGljIEpT
VmFsdWVSZWYgZ2V0VmlzaWJsZShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCiB7CiAgICAgSlNDOjpKU0xvY2sgbG9jayhm
YWxzZSk7CkBAIC0xOTIsNiArMjE1LDE3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldFZpc2libGUo
SlNDb250ZXh0UmUKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGN0eCwgcHJvZmlsZU5v
ZGUtPnZpc2libGUoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldENhbGxVSUQoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVS
ZWYqKQoreworICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIAorICAgIGlmICghSlNW
YWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVOb2RlQ2xhc3MoKSkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgIAorICAgIFBy
b2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIo
Y3R4LCBwcm9maWxlTm9kZS0+Y2FsbElkZW50aWZpZXIoKS5oYXNoKCkpOworfQorCiBzdGF0aWMg
dm9pZCBmaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAgUHJvZmlsZU5vZGUqIHBy
b2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdldFByaXZhdGUo
b2JqZWN0KSk7CkBAIC0yMTEsNyArMjQ1LDEwIEBAIEpTQ2xhc3NSZWYgUHJvZmlsZU5vZGVDbGFz
cygpCiAgICAgICAgIHsgInNlbGZQZXJjZW50IiwgZ2V0U2VsZlBlcmNlbnQsIDAsIGtKU1Byb3Bl
cnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJudW1iZXJPZkNhbGxzIiwgZ2V0TnVtYmVy
T2ZDYWxscywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgImNoaWxk
cmVuIiwgZ2V0Q2hpbGRyZW4sIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAorICAgICAg
ICB7ICJwYXJlbnQiLCBnZXRQYXJlbnQsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAor
ICAgICAgICB7ICJoZWFkIiwgZ2V0SGVhZCwgMCwga0pTQ2xhc3NBdHRyaWJ1dGVOb25lIH0sCiAg
ICAgICAgIHsgInZpc2libGUiLCBnZXRWaXNpYmxlLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5v
bmUgfSwKKyAgICAgICAgeyAiY2FsbFVJRCIsIGdldENhbGxVSUQsIDAsIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAogICAgICAgICB7IDAsIDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFdl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JvdHRvbVVwUHJvZmls
ZURhdGFHcmlkVHJlZS5qcwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IDI4MCBOb3J0aCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKy8vIEJvdHRvbSBVcCBQcm9maWxpbmcgc2hvd3MgdGhlIGVudGlyZSBjYWxsc3RhY2sgYmFj
a3dhcmRzOgorLy8gVGhlIHJvb3Qgbm9kZSBpcyBhIHJlcHJlc2VudGF0aW9uIG9mIGVhY2ggaW5k
aXZpZHVhbCBmdW5jdGlvbiBjYWxsZWQsIGFuZCBlYWNoIGNoaWxkIG9mIHRoYXQgbm9kZSByZXBy
ZXNlbnRzCisvLyBhIHJldmVyc2UtY2FsbHN0YWNrIHNob3dpbmcgaG93IG1hbnkgb2YgdGhvc2Ug
Y2FsbHMgY2FtZSBmcm9tIGl0LiBTbywgdW5saWNrIHRvcC1kb3duLCB0aGUgc3RhdGlzdGljcyBp
biAKKy8vIGVhY2ggY2hpbGQgc3RpbGwgcmVwcmVzZW50IHRoZSByb290IG5vZGUuIFdlIGhhdmUg
dG8gYmUgcGFydGljdWxhcmx5IGNhcmVmdWwgb2YgcmVjdXJzaW9uIHdpdGggdGhpcyBtb2RlIAor
Ly8gYmVjYXVzZSBhIHJvb3Qgbm9kZSBjYW4gcmVwcmVzZW50IGl0c2VsZiBBTkQgYW4gYW5jZXN0
b3IuCisKK1dlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUgPSBmdW5jdGlv
bihhUHJvZmlsZVZpZXcsIGFQcm9maWxlTm9kZSwgZXhjbHVkZWQpCit7CisgICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUuY2FsbCh0aGlzLCBhUHJvZmlsZVZpZXcsIGFQcm9maWxl
Tm9kZSk7CisgICAgCisgICAgLy8gSXRlcmF0ZSBlYWNoIG5vZGUgaW4gcHJlLW9yZGVyLgorICAg
IHZhciBwcm9maWxlTm9kZVVJRHMgPSAwLAorICAgICAgICBwcm9maWxlTm9kZUdyb3VwSW5kZXgg
PSAwLAorICAgICAgICBwcm9maWxlTm9kZUdyb3VwcyA9IFtbXSwgW2FQcm9maWxlTm9kZV1dLAor
ICAgICAgICB2aXNpdGVkUHJvZmlsZU5vZGVzRm9yQ2FsbFVJRCA9IHt9OworICAgIAorICAgIHRo
aXMuX3JlbWFpbmluZ05vZGVJbmZvcyA9IFtdOworICAgIAorICAgIGZvciAoOyBwcm9maWxlTm9k
ZUdyb3VwSW5kZXggPCBwcm9maWxlTm9kZUdyb3Vwcy5sZW5ndGg7ICsrcHJvZmlsZU5vZGVHcm91
cEluZGV4KQorICAgIHsKKyAgICAgICAgdmFyIHBhcmVudFByb2ZpbGVOb2RlcyA9IHByb2ZpbGVO
b2RlR3JvdXBzW3Byb2ZpbGVOb2RlR3JvdXBJbmRleF0sCisgICAgICAgICAgICBwcm9maWxlTm9k
ZXMgPSBwcm9maWxlTm9kZUdyb3Vwc1srK3Byb2ZpbGVOb2RlR3JvdXBJbmRleF0sCisgICAgICAg
ICAgICBpbmRleCA9IDAsCisgICAgICAgICAgICBjb3VudCA9IHByb2ZpbGVOb2Rlcy5sZW5ndGg7
CisgICAgICAgICAgICAKKyAgICAgICAgZm9yICg7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsK
KyAgICAgICAgCisgICAgICAgICAgICB2YXIgcHJvZmlsZU5vZGUgPSBwcm9maWxlTm9kZXNbaW5k
ZXhdOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXByb2ZpbGVO
b2RlLlVJRCkKKyAgICAgICAgICAgICAgICBwcm9maWxlTm9kZS5VSUQgPSArK3Byb2ZpbGVOb2Rl
VUlEczsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHByb2ZpbGVOb2RlLmhlYWQgJiYg
cHJvZmlsZU5vZGUgIT09IHByb2ZpbGVOb2RlLmhlYWQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gVGhlIHRvdGFsIHRpbWUgb2YgdGhpcyBhbmNlc3RvciBpcyBhY2NvdW50ZWQg
Zm9yIGlmIHdlJ3JlIGluIGFueSBmb3JtIG9mIHJlY3Vyc2l2ZSBjeWNsZS4KKyAgICAgICAgICAg
ICAgICB2YXIgdmlzaXRlZE5vZGVzID0gdmlzaXRlZFByb2ZpbGVOb2Rlc0ZvckNhbGxVSURbcHJv
ZmlsZU5vZGUuY2FsbFVJRF0sCisgICAgICAgICAgICAgICAgICAgIHRvdGFsVGltZUFjY291bnRl
ZEZvciA9IGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghdmlz
aXRlZE5vZGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWROb2RlcyA9IHt9CisgICAg
ICAgICAgICAgICAgICAgIHZpc2l0ZWRQcm9maWxlTm9kZXNGb3JDYWxsVUlEW3Byb2ZpbGVOb2Rl
LmNhbGxVSURdID0gdmlzaXRlZE5vZGVzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8v
IFRoZSB0b3RhbCB0aW1lIGZvciB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiBhY2NvdW50ZWQg
Zm9yIGlmZiBvbmUgb2YgaXQncyBwYXJlbnRzIGhhcyBhbHJlYWR5IGJlZW4gdmlzaXRlZC4KKyAg
ICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuIGRvIHRoaXMgY2hlY2sgaW4gdGhpcyBzdHlsZSBi
ZWNhdXNlIHdlIGFyZSB0cmF2ZXJzaW5nIHRoZSB0cmVlIGluIHByZS1vcmRlci4KKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHBhcmVudEluZGV4ID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmVudENvdW50ID0gcGFyZW50UHJvZmlsZU5vZGVzLmxlbmd0aDsKKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAoOyBwYXJlbnRJbmRleCA8IHBhcmVudENv
dW50OyArK3BhcmVudEluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRO
b2Rlc1twYXJlbnRQcm9maWxlTm9kZXNbcGFyZW50SW5kZXhdLlVJRF0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b3RhbFRpbWVBY2NvdW50ZWRGb3IgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2aXNpdGVk
Tm9kZXNbcHJvZmlsZU5vZGUuVUlEXSA9IHRydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgdGhpcy5fcmVtYWluaW5nTm9kZUluZm9zLnB1c2goeyBhbmNlc3Rvcjpwcm9maWxl
Tm9kZSwgZm9jdXNOb2RlOnByb2ZpbGVOb2RlLCB0b3RhbFRpbWVBY2NvdW50ZWRGb3I6dG90YWxU
aW1lQWNjb3VudGVkRm9yIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgY2hp
bGRyZW4gPSBwcm9maWxlTm9kZS5jaGlsZHJlbjsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAo
Y2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHByb2ZpbGVO
b2RlR3JvdXBzLnB1c2gocGFyZW50UHJvZmlsZU5vZGVzLmNvbmNhdChbcHJvZmlsZU5vZGVdKSkK
KyAgICAgICAgICAgICAgICBwcm9maWxlTm9kZUdyb3Vwcy5wdXNoKGNoaWxkcmVuKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBvcHVsYXRlIHRoZSB0b3AgbGV2
ZWwgbm9kZXMuCisgICAgV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUuX3BvcHVsYXRlLmNhbGwodGhpcyk7CisgICAgCisgICAgcmV0dXJuIHRoaXM7Cit9
CisKK1dlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlID0g
eworCisgICAgLy8gV2hlbiBmb2N1c2luZywgd2Uga2VlcCB0aGUgZW50aXJlIGNhbGxzdGFjayB1
cCB0byB0aGlzIGFuY2VzdG9yLgorICAgIGZvY3VzOiBmdW5jdGlvbigvKlByb2ZpbGVEYXRhR3Jp
ZE5vZGUqLyBhUHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7CisgICAgICAgIGlmICghYVByb2Zp
bGVEYXRhR3JpZE5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2F2
ZSgpOworICAgICAgICAKKyAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gYVByb2ZpbGVEYXRhR3Jp
ZE5vZGUsCisgICAgICAgICAgICBmb2N1c05vZGUgPSBhUHJvZmlsZURhdGFHcmlkTm9kZTsKKyAg
ICAgICAgCisgICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZS5wYXJlbnQgJiYgKGN1cnJlbnROb2Rl
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUpKQorICAgICAgICB7
CisgICAgICAgICAgICBjdXJyZW50Tm9kZS5fdGFrZVByb3BlcnRpZXNGcm9tUHJvZmlsZURhdGFH
cmlkTm9kZShhUHJvZmlsZURhdGFHcmlkTm9kZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZvY3VzTm9kZSA9IGN1cnJlbnROb2RlOworICAgICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJy
ZW50Tm9kZS5wYXJlbnQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChjdXJyZW50Tm9k
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlKQorICAgICAgICAg
ICAgICAgIGN1cnJlbnROb2RlLl9rZWVwT25seUNoaWxkKGZvY3VzTm9kZSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbZm9jdXNOb2RlXTsKKyAgICAgICAg
dGhpcy50b3RhbFRpbWUgPSBhUHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRpbWU7CisgICAgfSwK
KyAgICAKKyAgICBleGNsdWRlOiBmdW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBhUHJv
ZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7CisgICAgICAgIGlmICghYVByb2ZpbGVEYXRhR3JpZE5v
ZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2F2ZSgpOworICAgICAg
ICAKKyAgICAgICAgdmFyIGV4Y2x1ZGVkQ2FsbFVJRCA9IGFQcm9maWxlRGF0YUdyaWROb2RlLmNh
bGxVSUQsCisgICAgICAgICAgICBleGNsdWRlZFRvcExldmVsQ2hpbGQgPSB0aGlzLmNoaWxkcmVu
QnlDYWxsVUlEW2V4Y2x1ZGVkQ2FsbFVJRF07CisgICAgICAgIAorICAgICAgICAvLyBJZiB3ZSBo
YXZlIGEgdG9wIGxldmVsIG5vZGUgdGhhdCBpcyBleGNsdWRlZCwgZ2V0IHJpZCBvZiBpdCBjb21w
bGV0ZWx5IChub3Qga2VlcGluZyBjaGlsZHJlbiksCisgICAgICAgIC8vIHNpbmNlIGJvdHRvbSB1
cCBkYXRhIHJlbGllcyBlbnRpcmVseSBvbiB0aGUgcm9vdCBub2RlLgorICAgICAgICBpZiAoZXhj
bHVkZWRUb3BMZXZlbENoaWxkKQorICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5yZW1vdmUoZXhj
bHVkZWRUb3BMZXZlbENoaWxkKTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlzLmNoaWxkcmVu
LmZvckVhY2goZnVuY3Rpb24obm9kZSkgeyBub2RlLl9leGNsdWRlKGV4Y2x1ZGVkQ2FsbFVJRCk7
IH0pOworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMubGFzdENvbXBhcmF0b3IpCisgICAgICAg
ICAgICB0aGlzLnNvcnQodGhpcy5sYXN0Q29tcGFyYXRvciwgdHJ1ZSk7CisgICAgfQorfQorCitX
ZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGU7CisKK1dlYklu
c3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihhUHJvZmlsZVZp
ZXcsIGFQcm9maWxlTm9kZSwgYVRyZWUpCit7CisgICAgLy8gSW4gYm90dG9tIHVwIG1vZGUsIG91
ciBwYXJlbnQncyBhcmUgb3VyIGNoaWxkcmVuIHNpbmNlIHdlIGRpc3BsYXkgYW4gaW52ZXJ0ZWQg
dHJlZS4KKyAgICAvLyBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRvIHNob3cgdGhlIHZlcnkgdG9w
IHBhcmVudCBzaW5jZSBpdCBpcyByZWR1bmRhbnQuCisgICAgdmFyIGhhc0NoaWxkcmVuID0gISEo
YVByb2ZpbGVOb2RlLnBhcmVudCAmJiBhUHJvZmlsZU5vZGUucGFyZW50LnBhcmVudCk7CisKKyAg
ICBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGFQcm9maWxlVmll
dywgYVByb2ZpbGVOb2RlLCBhVHJlZSwgaGFzQ2hpbGRyZW4pOworCisgICAgdGhpcy5fcmVtYWlu
aW5nTm9kZUluZm9zID0gW107Cit9CisKK1dlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRh
R3JpZE5vZGUucHJvdG90eXBlID0geworICAgIAorICAgIF90YWtlUHJvcGVydGllc0Zyb21Qcm9m
aWxlRGF0YUdyaWROb2RlOiBmdW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBhUHJvZmls
ZURhdGFHcmlkTm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NhdmUoKTsKKworICAgICAgICB0
aGlzLnNlbGZUaW1lID0gYVByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlRpbWU7CisgICAgICAgIHRo
aXMudG90YWxUaW1lID0gYVByb2ZpbGVEYXRhR3JpZE5vZGUudG90YWxUaW1lOworICAgICAgICB0
aGlzLm51bWJlck9mQ2FsbHMgPSBhUHJvZmlsZURhdGFHcmlkTm9kZS5udW1iZXJPZkNhbGxzOwor
ICAgIH0sCisgICAgCisgICAgLy8gV2hlbiBmb2N1c2luZywgd2Uga2VlcCBqdXN0IHRoZSBtZW1i
ZXJzIG9mIHRoZSBjYWxsc3RhY2suCisgICAgX2tlZXBPbmx5Q2hpbGQ6IGZ1bmN0aW9uKGFDaGls
ZCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NhdmUoKTsKKworICAgICAgICB0aGlzLnJlbW92ZUNo
aWxkcmVuKCk7CisgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoYUNoaWxkKTsKKyAgICB9LAorCisg
ICAgX2V4Y2x1ZGU6IGZ1bmN0aW9uKGFDYWxsVUlEKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X3JlbWFpbmluZ05vZGVJbmZvcykKKyAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlKCk7CisgICAg
ICAgIAorICAgICAgICB0aGlzLl9zYXZlKCk7CisgICAgICAgIAorICAgICAgICB2YXIgY2hpbGRy
ZW4gPSB0aGlzLmNoaWxkcmVuLAorICAgICAgICAgICAgaW5kZXggPSB0aGlzLmNoaWxkcmVuLmxl
bmd0aDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChpbmRleC0tKQorICAgICAgICAgICAgY2hp
bGRyZW5baW5kZXhdLl9leGNsdWRlKGFDYWxsVUlEKTsKKyAgICAgICAgCisgICAgICAgIHZhciBj
aGlsZCA9IHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbYUNhbGxVSURdOworICAgICAgICAKKyAgICAg
ICAgaWYgKGNoaWxkKQorICAgICAgICAgICAgdGhpcy5fbWVyZ2UoY2hpbGQsIHRydWUpOworICAg
IH0sCisgICAgCisgICAgX21lcmdlOiBmdW5jdGlvbihhQ2hpbGQsIHNob3VsZEFic29yYikKKyAg
ICB7CisgICAgICAgIHRoaXMuc2VsZlRpbWUgLT0gYUNoaWxkLnNlbGZUaW1lOworICAgICAgICAK
KyAgICAgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9tZXJn
ZS5jYWxsKHRoaXMsIGFDaGlsZCwgc2hvdWxkQWJzb3JiKTsKKyAgICB9LAorICAgIAorICAgIF9w
b3B1bGF0ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgcmVtYWluaW5nTm9k
ZUluZm9zID0gdGhpcy5fcmVtYWluaW5nTm9kZUluZm9zLAorICAgICAgICAgICAgaW5kZXggPSAw
LAorICAgICAgICAgICAgY291bnQgPSByZW1haW5pbmdOb2RlSW5mb3MubGVuZ3RoOworICAgICAg
ICAKKyAgICAgICAgZm9yICg7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAg
IHZhciBub2RlSW5mbyA9IHJlbWFpbmluZ05vZGVJbmZvc1tpbmRleF0sCisgICAgICAgICAgICAg
ICAgYW5jZXN0b3IgPSBub2RlSW5mby5hbmNlc3RvciwKKyAgICAgICAgICAgICAgICBmb2N1c05v
ZGUgPSBub2RlSW5mby5mb2N1c05vZGUsCisgICAgICAgICAgICAgICAgY2hpbGQgPSB0aGlzLmZp
bmRDaGlsZChhbmNlc3Rvcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIElmIHdlIGFs
cmVhZHkgaGF2ZSB0aGlzIGNoaWxkLCB0aGVuIG1lcmdlIHRoZSBkYXRhIHRvZ2V0aGVyLgorICAg
ICAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgCisgICAgICAgICAgICAgICAgdmFyIHRvdGFsVGlt
ZUFjY291bnRlZEZvciA9IG5vZGVJbmZvLnRvdGFsVGltZUFjY291bnRlZEZvcjsKKyAgICAKKyAg
ICAgICAgICAgICAgICBjaGlsZC5zZWxmVGltZSArPSBmb2N1c05vZGUuc2VsZlRpbWU7CisgICAg
ICAgICAgICAgICAgY2hpbGQubnVtYmVyT2ZDYWxscyArPSBmb2N1c05vZGUubnVtYmVyT2ZDYWxs
czsKKyAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXRvdGFsVGltZUFjY291bnRlZEZvcikKKyAg
ICAgICAgICAgICAgICAgICAgY2hpbGQudG90YWxUaW1lICs9IGZvY3VzTm9kZS50b3RhbFRpbWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIElmIG5vdCwgYWRk
IGl0IGFzIGEgdHJ1ZSBhbmNlc3Rvci4KKyAgICAgICAgICAgIGVsc2UgeworICAgIAorICAgICAg
ICAgICAgICAgIC8vIEluIGhlYXZ5IG1vZGUsIHdlIHRha2Ugb3VyIHZpc3VhbCBpZGVudGl0eSBm
cm9tIGFuY2VzdG9yIG5vZGUuLi4KKyAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBuZXcgV2Vi
SW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZSh0aGlzLnByb2ZpbGVWaWV3LCBh
bmNlc3RvciwgdGhpcy50cmVlKTsKKworICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvciAhPT0g
Zm9jdXNOb2RlKQorICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICAvLyBidXQgdGhlIGFjdHVhbCBzdGF0aXN0aWNzIGZyb20gdGhlICJyb290
IiBub2RlIChib3R0b20gb2YgdGhlIGNhbGxzdGFjaykuCisgICAgICAgICAgICAgICAgICAgIGNo
aWxkLnNlbGZUaW1lID0gZm9jdXNOb2RlLnNlbGZUaW1lOworICAgICAgICAgICAgICAgICAgICBj
aGlsZC50b3RhbFRpbWUgPSBmb2N1c05vZGUudG90YWxUaW1lOworICAgICAgICAgICAgICAgICAg
ICBjaGlsZC5udW1iZXJPZkNhbGxzID0gZm9jdXNOb2RlLm51bWJlck9mQ2FsbHM7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjaGlsZCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBwYXJlbnQgPSBhbmNlc3Rvci5wYXJlbnQ7
CisKKyAgICAgICAgICAgIC8vIG9ubHkKKyAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50
LnBhcmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBub2RlSW5mby5hbmNlc3Rv
ciA9IHBhcmVudDsKKyAgICAgICAgICAgICAgICBjaGlsZC5fcmVtYWluaW5nTm9kZUluZm9zLnB1
c2gobm9kZUluZm8pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBkZWxldGUgdGhpcy5fcmVtYWluaW5nTm9kZUluZm9zOworICAgIAorICAgICAgICBpZiAodGhp
cy5yZW1vdmVFdmVudExpc3RlbmVyKQorICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKKyAgICB9Cit9CisKKworV2Vi
SW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlOwpJbmRleDogV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcwkocmV2aXNpb24gNDI3NDYpCisrKyBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanMJKHdvcmtpbmcgY29weSkKQEAg
LTE2OSwzMiArMTY5LDE5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAg
ICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCkKICAgICB7CiAgICAgICAgIGlm
ICghY2hpbGQpCi0gICAgICAgICAgICB0aHJvdygiTm9kZSBjYW4ndCBiZSB1bmRlZmluZWQgb3Ig
bnVsbC4iKTsKKyAgICAgICAgICAgIHRocm93KCJpbnNlcnRDaGlsZDogTm9kZSBjYW4ndCBiZSB1
bmRlZmluZWQgb3IgbnVsbC4iKTsKICAgICAgICAgaWYgKGNoaWxkLnBhcmVudCA9PT0gdGhpcykK
LSAgICAgICAgICAgIHRocm93KCJOb2RlIGlzIGFscmVhZHkgYSBjaGlsZCBvZiB0aGlzIG5vZGUu
Iik7CisgICAgICAgICAgICB0aHJvdygiaW5zZXJ0Q2hpbGQ6IE5vZGUgaXMgYWxyZWFkeSBhIGNo
aWxkIG9mIHRoaXMgbm9kZS4iKTsKIAogICAgICAgICBpZiAoY2hpbGQucGFyZW50KQogICAgICAg
ICAgICAgY2hpbGQucGFyZW50LnJlbW92ZUNoaWxkKGNoaWxkKTsKIAotICAgICAgICB2YXIgcHJl
dmlvdXNDaGlsZCA9IChpbmRleCA+IDAgPyB0aGlzLmNoaWxkcmVuW2luZGV4IC0gMV0gOiBudWxs
KTsKLSAgICAgICAgaWYgKHByZXZpb3VzQ2hpbGQpIHsKLSAgICAgICAgICAgIHByZXZpb3VzQ2hp
bGQubmV4dFNpYmxpbmcgPSBjaGlsZDsKLSAgICAgICAgICAgIGNoaWxkLnByZXZpb3VzU2libGlu
ZyA9IHByZXZpb3VzQ2hpbGQ7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2hpbGQucHJl
dmlvdXNTaWJsaW5nID0gbnVsbDsKLQotICAgICAgICB2YXIgbmV4dENoaWxkID0gdGhpcy5jaGls
ZHJlbltpbmRleF07Ci0gICAgICAgIGlmIChuZXh0Q2hpbGQpIHsKLSAgICAgICAgICAgIG5leHRD
aGlsZC5wcmV2aW91c1NpYmxpbmcgPSBjaGlsZDsKLSAgICAgICAgICAgIGNoaWxkLm5leHRTaWJs
aW5nID0gbmV4dENoaWxkOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNoaWxkLm5leHRT
aWJsaW5nID0gbnVsbDsKLQogICAgICAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpbmRleCwgMCwg
Y2hpbGQpOwogICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1ZTsKIAogICAgICAgICBjaGls
ZC5wYXJlbnQgPSB0aGlzOwogICAgICAgICBjaGlsZC5kYXRhR3JpZCA9IHRoaXMuZGF0YUdyaWQ7
CisgICAgICAgIGNoaWxkLl9yZWNhbGN1bGF0ZVNpYmxpbmdzKGluZGV4KTsKIAogICAgICAgICBk
ZWxldGUgY2hpbGQuX2RlcHRoOwogICAgICAgICBkZWxldGUgY2hpbGQuX3JldmVhbGVkOwpAQCAt
MjE2LDkgKzIwMyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAg
cmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKQogICAgIHsKICAgICAgICAgaWYgKCFjaGlsZCkK
LSAgICAgICAgICAgIHRocm93KCJOb2RlIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxsLiIpOwor
ICAgICAgICAgICAgdGhyb3coInJlbW92ZUNoaWxkOiBOb2RlIGNhbid0IGJlIHVuZGVmaW5lZCBv
ciBudWxsLiIpOwogICAgICAgICBpZiAoY2hpbGQucGFyZW50ICE9PSB0aGlzKQotICAgICAgICAg
ICAgdGhyb3coIk5vZGUgaXMgbm90IGEgY2hpbGQgb2YgdGhpcyBub2RlLiIpOworICAgICAgICAg
ICAgdGhyb3coInJlbW92ZUNoaWxkOiBOb2RlIGlzIG5vdCBhIGNoaWxkIG9mIHRoaXMgbm9kZS4i
KTsKIAogICAgICAgICBjaGlsZC5kZXNlbGVjdCgpOwogCkBAIC0yMzMsNiArMjIwLDkgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgY2hpbGQucGFyZW50ID0g
bnVsbDsKICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxsOwogICAgICAgICBjaGlsZC5w
cmV2aW91c1NpYmxpbmcgPSBudWxsOworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoIDw9IDApCisgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CiAg
ICAgfSwKIAogICAgIHJlbW92ZUNoaWxkcmVuOiBmdW5jdGlvbigpCkBAIC0yNDksNiArMjM5LDcg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNl
OwogICAgIH0sCiAKICAgICByZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZTogZnVuY3Rpb24oKQpAQCAt
NTE5LDYgKzUxMCwzNCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAorICAgIHNldCBoYXNDaGlsZHJlbih4KQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2hhc0NoaWxkcmVuID09PSB4KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX2hhc0NoaWxkcmVuID0geDsKKworICAgICAgICBpZiAo
IXRoaXMuX2VsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAg
ICAgaWYgKHRoaXMuX2hhc0NoaWxkcmVuKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9l
bGVtZW50LmFkZFN0eWxlQ2xhc3MoInBhcmVudCIpOworICAgICAgICAgICAgaWYgKHRoaXMuZXhw
YW5kZWQpCisgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJleHBh
bmRlZCIpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJwYXJlbnQiKTsKKyAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiZXhwYW5kZWQiKTsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICBnZXQgaGFzQ2hpbGRyZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2hhc0NoaWxkcmVuOworICAgIH0sCisKICAgICBzZXQgcmV2ZWFsZWQoeCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9yZXZlYWxlZCA9PT0geCkKQEAgLTYyNCw2ICs2NDMsMjggQEAgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgcmVtb3ZlQ2hpbGRyZW46IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4sCiAgICAgcmVtb3Zl
Q2hpbGRyZW5SZWN1cnNpdmU6IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3Zl
Q2hpbGRyZW5SZWN1cnNpdmUsCiAKKyAgICBfcmVjYWxjdWxhdGVTaWJsaW5nczogZnVuY3Rpb24o
bXlJbmRleCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5wYXJlbnQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdmFyIHByZXZpb3VzQ2hpbGQgPSAobXlJbmRleCA+IDAgPyB0aGlz
LnBhcmVudC5jaGlsZHJlbltteUluZGV4IC0gMV0gOiBudWxsKTsKKyAgICAgICAgCisgICAgICAg
IGlmIChwcmV2aW91c0NoaWxkKSB7CisgICAgICAgICAgICBwcmV2aW91c0NoaWxkLm5leHRTaWJs
aW5nID0gdGhpczsKKyAgICAgICAgICAgIHRoaXMucHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXND
aGlsZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLnByZXZpb3VzU2libGluZyA9
IG51bGw7CisKKyAgICAgICAgdmFyIG5leHRDaGlsZCA9IHRoaXMucGFyZW50LmNoaWxkcmVuW215
SW5kZXggKyAxXTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXh0Q2hpbGQpIHsKKyAgICAgICAg
ICAgIG5leHRDaGlsZC5wcmV2aW91c1NpYmxpbmcgPSB0aGlzOworICAgICAgICAgICAgdGhpcy5u
ZXh0U2libGluZyA9IG5leHRDaGlsZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlz
Lm5leHRTaWJsaW5nID0gbnVsbDsKKyAgICB9LAorCiAgICAgY29sbGFwc2U6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KQpJbmRleDogV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZE5vZGUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZE5vZGUuanMJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkTm9kZS5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDEgQEAKKworCitXZWJJbnNwZWN0b3IuWFByb2ZpbGVE
YXRhR3JpZE5vZGUgPSBmdW5jdGlvbihhUHJvZmlsZVZpZXcsIGFQcm9maWxlTm9kZSwgYVRyZWUs
IGhhc0NoaWxkcmVuKQoreworICAgIHRoaXMucHJvZmlsZVZpZXcgPSBhUHJvZmlsZVZpZXc7Cisg
ICAgdGhpcy5wcm9maWxlTm9kZSA9IGFQcm9maWxlTm9kZTsKKworICAgIFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBudWxsLCBoYXNDaGlsZHJlbik7CisKKyAgICB0aGlzLmFk
ZEV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9wdWxhdGUsIHRoaXMpOworICAgIAor
ICAgIHRoaXMudHJlZSA9IGFUcmVlOworICAgIAorICAgIHRoaXMuY2hpbGRyZW5CeUNhbGxVSUQg
PSB7fTsKKyAgICB0aGlzLmxhc3RDb21wYXJhdG9yID0gbnVsbDsKKworICAgIGlmIChhUHJvZmls
ZU5vZGUpCisgICAgeworICAgICAgICB0aGlzLmNhbGxVSUQgPSBhUHJvZmlsZU5vZGUuY2FsbFVJ
RDsKKyAgICAgICAgdGhpcy5taW5UaW1lID0gYVByb2ZpbGVOb2RlLnNlbGZUaW1lOworICAgICAg
ICB0aGlzLm1heFRpbWUgPSBhUHJvZmlsZU5vZGUuc2VsZlRpbWU7CisgICAgICAgIHRoaXMuc2Vs
ZlRpbWUgPSBhUHJvZmlsZU5vZGUuc2VsZlRpbWU7CisgICAgICAgIHRoaXMudG90YWxUaW1lID0g
YVByb2ZpbGVOb2RlLnRvdGFsVGltZTsKKyAgICAgICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBhUHJv
ZmlsZU5vZGUuZnVuY3Rpb25OYW1lOworICAgICAgICB0aGlzLm51bWJlck9mQ2FsbHMgPSBhUHJv
ZmlsZU5vZGUubnVtYmVyT2ZDYWxsczsKKyAgICAgICAgdGhpcy51cmwgPSBhUHJvZmlsZU5vZGUu
dXJsOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB0aGlzLm51bWJlck9mQ2FsbHMg
PSAxOworICAgICAgICB0aGlzLnVybCA9ICIiOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlhQ
cm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgZGF0YSgpCisgICAgewor
ICAgICAgICBmdW5jdGlvbiBmb3JtYXRNaWxsaXNlY29uZHModGltZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGltZSAvIDEwMDAsIFdlYklu
c3BlY3Rvci5VSVN0cmluZy5iaW5kKFdlYkluc3BlY3RvciksIHRydWUpOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGRhdGEgPSB7fTsKKyAgICAgICAgCisgICAgICAgIGRhdGFbImZ1bmN0aW9u
Il0gPSB0aGlzLmZ1bmN0aW9uTmFtZTsKKyAgICAgICAgZGF0YVsiY2FsbHMiXSA9IHRoaXMubnVt
YmVyT2ZDYWxsczsKKworICAgICAgICBpZiAodGhpcy5wcm9maWxlVmlldy5zaG93U2VsZlRpbWVB
c1BlcmNlbnQpCisgICAgICAgICAgICBkYXRhWyJzZWxmIl0gPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIiUuMmYlJSIsIHRoaXMuc2VsZlBlcmNlbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBkYXRhWyJzZWxmIl0gPSBmb3JtYXRNaWxsaXNlY29uZHModGhpcy5zZWxmVGltZSk7CisKKyAg
ICAgICAgaWYgKHRoaXMucHJvZmlsZVZpZXcuc2hvd1RvdGFsVGltZUFzUGVyY2VudCkKKyAgICAg
ICAgICAgIGRhdGFbInRvdGFsIl0gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiUuMmYlJSIsIHRo
aXMudG90YWxQZXJjZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YVsidG90YWwi
XSA9IGZvcm1hdE1pbGxpc2Vjb25kcyh0aGlzLnRvdGFsVGltZSk7CisKKyAgICAgICAgaWYgKHRo
aXMucHJvZmlsZVZpZXcuc2hvd1RvdGFsVGltZUFzUGVyY2VudCkKKyAgICAgICAgICAgIGRhdGFb
ImF2ZXJhZ2UiXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4yZiUlIiwgdGhpcy5hdmVyYWdl
UGVyY2VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGFbImF2ZXJhZ2UiXSA9IGZv
cm1hdE1pbGxpc2Vjb25kcyh0aGlzLmF2ZXJhZ2VUaW1lKTsKKworICAgICAgICByZXR1cm4gZGF0
YTsKKyAgICB9LAorCisgICAgY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHZhciBjZWxsID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGUuY3JlYXRlQ2VsbC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIpOworCisgICAgICAg
IGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAic2VsZiIgJiYgdGhpcy5wcm9maWxlTm9kZS5fc2Vh
cmNoTWF0Y2hlZFNlbGZDb2x1bW4pCisgICAgICAgICAgICBjZWxsLmFkZFN0eWxlQ2xhc3MoImhp
Z2hsaWdodCIpOworICAgICAgICBlbHNlIGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAidG90YWwi
ICYmIHRoaXMucHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbikKKyAgICAgICAg
ICAgIGNlbGwuYWRkU3R5bGVDbGFzcygiaGlnaGxpZ2h0Iik7CisgICAgICAgIGVsc2UgaWYgKGNv
bHVtbklkZW50aWZpZXIgPT09ICJjYWxscyIgJiYgdGhpcy5wcm9maWxlTm9kZS5fc2VhcmNoTWF0
Y2hlZENhbGxzQ29sdW1uKQorICAgICAgICAgICAgY2VsbC5hZGRTdHlsZUNsYXNzKCJoaWdobGln
aHQiKTsKKworICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciAhPT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgICAgIHJldHVybiBjZWxsOworCisgICAgICAgIGlmICh0aGlzLnByb2ZpbGVOb2RlLl9z
ZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW4pCisgICAgICAgICAgICBjZWxsLmFkZFN0eWxlQ2xh
c3MoImhpZ2hsaWdodCIpOworCisgICAgICAgIGlmICh0aGlzLnByb2ZpbGVOb2RlLnVybCkgewor
ICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJM
KHRoaXMucHJvZmlsZU5vZGUudXJsKTsKKworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CisgICAgICAgICAgICB1cmxFbGVtZW50LmNsYXNz
TmFtZSA9ICJwcm9maWxlLW5vZGUtZmlsZSB3ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5rIjsKKyAg
ICAgICAgICAgIHVybEVsZW1lbnQuaHJlZiA9IHRoaXMucHJvZmlsZU5vZGUudXJsOworICAgICAg
ICAgICAgdXJsRWxlbWVudC5saW5lTnVtYmVyID0gdGhpcy5wcm9maWxlTm9kZS5saW5lTnVtYmVy
OworCisgICAgICAgICAgICBpZiAodGhpcy5wcm9maWxlTm9kZS5saW5lTnVtYmVyID4gMCkKKyAg
ICAgICAgICAgICAgICB1cmxFbGVtZW50LnRleHRDb250ZW50ID0gZmlsZU5hbWUgKyAiOiIgKyB0
aGlzLnByb2ZpbGVOb2RlLmxpbmVOdW1iZXI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdXJsRWxlbWVudC50ZXh0Q29udGVudCA9IGZpbGVOYW1lOworCisgICAgICAgICAgICBj
ZWxsLmluc2VydEJlZm9yZSh1cmxFbGVtZW50LCBjZWxsLmZpcnN0Q2hpbGQpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfSwKKworICAgIHNlbGVjdDogZnVuY3Rpb24o
c3VwcmVzc1NlbGVjdGVkRXZlbnQpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5zZWxlY3QuY2FsbCh0aGlzLCBzdXByZXNzU2VsZWN0ZWRFdmVudCk7
CisgICAgICAgIHRoaXMucHJvZmlsZVZpZXcuX2RhdGFHcmlkTm9kZVNlbGVjdGVkKHRoaXMpOwor
ICAgIH0sCisKKyAgICBkZXNlbGVjdDogZnVuY3Rpb24oc3VwcmVzc0Rlc2VsZWN0ZWRFdmVudCkK
KyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmRlc2Vs
ZWN0LmNhbGwodGhpcywgc3VwcmVzc0Rlc2VsZWN0ZWRFdmVudCk7CisgICAgICAgIHRoaXMucHJv
ZmlsZVZpZXcuX2RhdGFHcmlkTm9kZURlc2VsZWN0ZWQodGhpcyk7CisgICAgfSwKKworICAgIGV4
cGFuZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkKKyAgICAg
ICAgeyAgICAgICAgCisgICAgICAgICAgICB2YXIgY3VycmVudENvbXBhcmF0b3IgPSB0aGlzLnBh
cmVudC5sYXN0Q29tcGFyYXRvcjsKKyAgICAKKyAgICAgICAgICAgIGlmICghY3VycmVudENvbXBh
cmF0b3IgfHwgKGN1cnJlbnRDb21wYXJhdG9yID09PSB0aGlzLmxhc3RDb21wYXJhdG9yKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgCisgICAgICAgICAgICB0aGlzLnNvcnQoY3VycmVu
dENvbXBhcmF0b3IpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLnByb3RvdHlwZS5leHBhbmQuY2FsbCh0aGlzKTsKKyAgICB9LAorCisgICAg
c29ydDogZnVuY3Rpb24oLypGdW5jdGlvbiovIGNvbXBhcmF0b3IpCisgICAgeworICAgICAgICB2
YXIgZ3JpZE5vZGVHcm91cEluZGV4ID0gMCwKKyAgICAgICAgICAgIGdyaWROb2RlR3JvdXBzID0g
W1t0aGlzXV07CisgICAgICAgIAorICAgICAgICBmb3IgKDsgZ3JpZE5vZGVHcm91cEluZGV4IDwg
Z3JpZE5vZGVHcm91cHMubGVuZ3RoOyArK2dyaWROb2RlR3JvdXBJbmRleCkgeworICAgICAgICAK
KyAgICAgICAgICAgIHZhciBncmlkTm9kZXMgPSBncmlkTm9kZUdyb3Vwc1tncmlkTm9kZUdyb3Vw
SW5kZXhdLAorICAgICAgICAgICAgICAgIGluZGV4ID0gMCwKKyAgICAgICAgICAgICAgICBjb3Vu
dCA9IGdyaWROb2Rlcy5sZW5ndGg7CisgCisgICAgICAgICAgICBmb3IgKDsgaW5kZXggPCBjb3Vu
dDsgKytpbmRleCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGdyaWROb2Rl
ID0gZ3JpZE5vZGVzW2luZGV4XTsKKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBncmlkIG5v
ZGUgaXMgY29sbGFwc2VkLCB0aGVuIGRvbid0IHNvcnQgY2hpbGRyZW4gKHNhdmUgb3BlcmF0aW9u
IGZvciBsYXRlcikuCisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGdyaWQgbm9kZSBoYXMgdGhl
IHNhbWUgc29ydGluZyBhcyBwcmV2aW91c2x5LCB0aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIHNv
cnRpbmcgCisgICAgICAgICAgICAgICAgLy8gaXQgYWdhaW4uCisgICAgICAgICAgICAgICAgaWYg
KCFncmlkTm9kZS5leHBhbmRlZCB8fCBncmlkTm9kZS5sYXN0Q29tcGFyYXRvciA9PT0gY29tcGFy
YXRvcikKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBn
cmlkTm9kZS5sYXN0Q29tcGFyYXRvciA9IGNvbXBhcmF0b3I7CisKKyAgICAgICAgICAgICAgICB2
YXIgY2hpbGRyZW4gPSBncmlkTm9kZS5jaGlsZHJlbjsKKworICAgICAgICAgICAgICAgIGlmIChj
aGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
Y2hpbGRyZW4uc29ydChjb21wYXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4u
Zm9yRWFjaChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7IGNoaWxkLl9yZWNhbGN1bGF0ZVNpYmxp
bmdzKGluZGV4KTsgfSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBncmlkTm9kZUdyb3Vwcy5wdXNoKGNoaWxkcmVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorICAgIAorICAgIGFwcGVuZENoaWxkOiBmdW5j
dGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBhUHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7
CisgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxk
LmNhbGwodGhpcywgYVByb2ZpbGVEYXRhR3JpZE5vZGUpOworICAgICAgICAKKyAgICAgICAgdGhp
cy5jaGlsZHJlbkJ5Q2FsbFVJRFthUHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsVUlEXSA9IGFQcm9m
aWxlRGF0YUdyaWROb2RlOworICAgIH0sCisKKyAgICBmaW5kQ2hpbGQ6IGZ1bmN0aW9uKC8qTm9k
ZSovIGFOb2RlKQorICAgIHsKKyAgICAgICAgaWYgKCFhTm9kZSkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEW2FOb2RlLmNh
bGxVSURdOworICAgIH0sCisgICAgCisgICAgZ2V0IGF2ZXJhZ2VUaW1lKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLnNlbGZUaW1lIC8gTWF0aC5tYXgoMSwgdGhpcy5udW1iZXJPZkNhbGxz
KTsKKyAgICB9LAorCisgICAgZ2V0IGF2ZXJhZ2VQZXJjZW50KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLmF2ZXJhZ2VUaW1lIC8gdGhpcy50cmVlLnRvdGFsVGltZSAqIDEwMC4wOworICAg
IH0sCisKKyAgICBnZXQgc2VsZlBlcmNlbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
c2VsZlRpbWUgLyB0aGlzLnRyZWUudG90YWxUaW1lICogMTAwLjA7CisgICAgfSwKKworICAgIGdl
dCB0b3RhbFBlcmNlbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudG90YWxUaW1lIC8g
dGhpcy50cmVlLnRvdGFsVGltZSAqIDEwMC4wOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlhQ
cm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGF0
YUdyaWROb2RlLnByb3RvdHlwZTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlRGF0YUdyaWRUcmVlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IDI4MCBOb3J0aCBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oYVBy
b2ZpbGVWaWV3LCBhUHJvZmlsZU5vZGUsIGFUcmVlLCBoYXNDaGlsZHJlbikKK3sKKyAgICB0aGlz
LnByb2ZpbGVWaWV3ID0gYVByb2ZpbGVWaWV3OworICAgIHRoaXMucHJvZmlsZU5vZGUgPSBhUHJv
ZmlsZU5vZGU7CisKKyAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywgbnVs
bCwgaGFzQ2hpbGRyZW4pOworCisgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCJwb3B1bGF0ZSIs
IHRoaXMuX3BvcHVsYXRlLCB0aGlzKTsKKyAgICAKKyAgICB0aGlzLnRyZWUgPSBhVHJlZTsKKyAg
ICAKKyAgICB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEID0ge307CisgICAgdGhpcy5sYXN0Q29tcGFy
YXRvciA9IG51bGw7CisKKyAgICB0aGlzLmNhbGxVSUQgPSBhUHJvZmlsZU5vZGUuY2FsbFVJRDsK
KyAgICB0aGlzLnNlbGZUaW1lID0gYVByb2ZpbGVOb2RlLnNlbGZUaW1lOworICAgIHRoaXMudG90
YWxUaW1lID0gYVByb2ZpbGVOb2RlLnRvdGFsVGltZTsKKyAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9
IGFQcm9maWxlTm9kZS5mdW5jdGlvbk5hbWU7CisgICAgdGhpcy5udW1iZXJPZkNhbGxzID0gYVBy
b2ZpbGVOb2RlLm51bWJlck9mQ2FsbHM7CisgICAgdGhpcy51cmwgPSBhUHJvZmlsZU5vZGUudXJs
OworfQorCitXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Cisg
ICAgZ2V0IGRhdGEoKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZm9ybWF0TWlsbGlzZWNvbmRz
KHRpbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBOdW1iZXIuc2Vjb25kc1RvU3Ry
aW5nKHRpbWUgLyAxMDAwLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcuYmluZChXZWJJbnNwZWN0b3Ip
LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBkYXRhID0ge307CisgICAgICAgIAor
ICAgICAgICBkYXRhWyJmdW5jdGlvbiJdID0gdGhpcy5mdW5jdGlvbk5hbWU7CisgICAgICAgIGRh
dGFbImNhbGxzIl0gPSB0aGlzLm51bWJlck9mQ2FsbHM7CisKKyAgICAgICAgaWYgKHRoaXMucHJv
ZmlsZVZpZXcuc2hvd1NlbGZUaW1lQXNQZXJjZW50KQorICAgICAgICAgICAgZGF0YVsic2VsZiJd
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmJSUiLCB0aGlzLnNlbGZQZXJjZW50KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YVsic2VsZiJdID0gZm9ybWF0TWlsbGlzZWNvbmRz
KHRoaXMuc2VsZlRpbWUpOworCisgICAgICAgIGlmICh0aGlzLnByb2ZpbGVWaWV3LnNob3dUb3Rh
bFRpbWVBc1BlcmNlbnQpCisgICAgICAgICAgICBkYXRhWyJ0b3RhbCJdID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIlLjJmJSUiLCB0aGlzLnRvdGFsUGVyY2VudCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGRhdGFbInRvdGFsIl0gPSBmb3JtYXRNaWxsaXNlY29uZHModGhpcy50b3RhbFRp
bWUpOworCisgICAgICAgIGlmICh0aGlzLnByb2ZpbGVWaWV3LnNob3dUb3RhbFRpbWVBc1BlcmNl
bnQpCisgICAgICAgICAgICBkYXRhWyJhdmVyYWdlIl0gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IiUuMmYlJSIsIHRoaXMuYXZlcmFnZVBlcmNlbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBkYXRhWyJhdmVyYWdlIl0gPSBmb3JtYXRNaWxsaXNlY29uZHModGhpcy5hdmVyYWdlVGltZSk7
CisKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfSwKKworICAgIGNyZWF0ZUNlbGw6IGZ1bmN0
aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgeworICAgICAgICB2YXIgY2VsbCA9IFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwuY2FsbCh0aGlzLCBjb2x1bW5J
ZGVudGlmaWVyKTsKKworICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gInNlbGYiICYm
IHRoaXMuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uKQorICAgICAgICAgICAgY2VsbC5hZGRTdHls
ZUNsYXNzKCJoaWdobGlnaHQiKTsKKyAgICAgICAgZWxzZSBpZiAoY29sdW1uSWRlbnRpZmllciA9
PT0gInRvdGFsIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4pCisgICAgICAgICAg
ICBjZWxsLmFkZFN0eWxlQ2xhc3MoImhpZ2hsaWdodCIpOworICAgICAgICBlbHNlIGlmIChjb2x1
bW5JZGVudGlmaWVyID09PSAiYXZlcmFnZSIgJiYgdGhpcy5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VD
b2x1bW4pCisgICAgICAgICAgICBjZWxsLmFkZFN0eWxlQ2xhc3MoImhpZ2hsaWdodCIpOworICAg
ICAgICBlbHNlIGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAiY2FsbHMiICYmIHRoaXMuX3NlYXJj
aE1hdGNoZWRDYWxsc0NvbHVtbikKKyAgICAgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFzcygiaGln
aGxpZ2h0Iik7CisKKyAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgIT09ICJmdW5jdGlvbiIp
CisgICAgICAgICAgICByZXR1cm4gY2VsbDsKKworICAgICAgICBpZiAodGhpcy5wcm9maWxlTm9k
ZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uKQorICAgICAgICAgICAgY2VsbC5hZGRTdHls
ZUNsYXNzKCJoaWdobGlnaHQiKTsKKworICAgICAgICBpZiAodGhpcy5wcm9maWxlTm9kZS51cmwp
IHsKKyAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZv
clVSTCh0aGlzLnByb2ZpbGVOb2RlLnVybCk7CisKKyAgICAgICAgICAgIHZhciB1cmxFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOworICAgICAgICAgICAgdXJsRWxlbWVudC5j
bGFzc05hbWUgPSAicHJvZmlsZS1ub2RlLWZpbGUgd2Via2l0LWh0bWwtcmVzb3VyY2UtbGluayI7
CisgICAgICAgICAgICB1cmxFbGVtZW50LmhyZWYgPSB0aGlzLnByb2ZpbGVOb2RlLnVybDsKKyAg
ICAgICAgICAgIHVybEVsZW1lbnQubGluZU51bWJlciA9IHRoaXMucHJvZmlsZU5vZGUubGluZU51
bWJlcjsKKworICAgICAgICAgICAgaWYgKHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlciA+IDAp
CisgICAgICAgICAgICAgICAgdXJsRWxlbWVudC50ZXh0Q29udGVudCA9IGZpbGVOYW1lICsgIjoi
ICsgdGhpcy5wcm9maWxlTm9kZS5saW5lTnVtYmVyOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRlbnQgPSBmaWxlTmFtZTsKKworICAgICAgICAg
ICAgY2VsbC5pbnNlcnRCZWZvcmUodXJsRWxlbWVudCwgY2VsbC5maXJzdENoaWxkKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBjZWxsOworICAgIH0sCisKKyAgICBzZWxlY3Q6IGZ1bmN0
aW9uKHN1cHJlc3NTZWxlY3RlZEV2ZW50KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5wcm90b3R5cGUuc2VsZWN0LmNhbGwodGhpcywgc3VwcmVzc1NlbGVjdGVkRXZl
bnQpOworICAgICAgICB0aGlzLnByb2ZpbGVWaWV3Ll9kYXRhR3JpZE5vZGVTZWxlY3RlZCh0aGlz
KTsKKyAgICB9LAorCisgICAgZGVzZWxlY3Q6IGZ1bmN0aW9uKHN1cHJlc3NEZXNlbGVjdGVkRXZl
bnQpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5k
ZXNlbGVjdC5jYWxsKHRoaXMsIHN1cHJlc3NEZXNlbGVjdGVkRXZlbnQpOworICAgICAgICB0aGlz
LnByb2ZpbGVWaWV3Ll9kYXRhR3JpZE5vZGVEZXNlbGVjdGVkKHRoaXMpOworICAgIH0sCisKKyAg
ICBleHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5wYXJlbnQpCisg
ICAgICAgIHsgICAgICAgIAorICAgICAgICAgICAgdmFyIGN1cnJlbnRDb21wYXJhdG9yID0gdGhp
cy5wYXJlbnQubGFzdENvbXBhcmF0b3I7CisgICAgCisgICAgICAgICAgICBpZiAoIWN1cnJlbnRD
b21wYXJhdG9yIHx8IChjdXJyZW50Q29tcGFyYXRvciA9PT0gdGhpcy5sYXN0Q29tcGFyYXRvcikp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgIAorICAgICAgICAgICAgdGhpcy5zb3J0KGN1
cnJlbnRDb21wYXJhdG9yKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZXhwYW5kLmNhbGwodGhpcyk7CisgICAgfSwKKwor
ICAgIHNvcnQ6IGZ1bmN0aW9uKC8qRnVuY3Rpb24qLyBjb21wYXJhdG9yLCAvKkJvb2xlYW4qLyBm
b3JjZSkKKyAgICB7CisgICAgICAgIHZhciBncmlkTm9kZUdyb3VwSW5kZXggPSAwLAorICAgICAg
ICAgICAgZ3JpZE5vZGVHcm91cHMgPSBbW3RoaXNdXTsKKyAgICAgICAgCisgICAgICAgIGZvciAo
OyBncmlkTm9kZUdyb3VwSW5kZXggPCBncmlkTm9kZUdyb3Vwcy5sZW5ndGg7ICsrZ3JpZE5vZGVH
cm91cEluZGV4KSB7CisgICAgICAgIAorICAgICAgICAgICAgdmFyIGdyaWROb2RlcyA9IGdyaWRO
b2RlR3JvdXBzW2dyaWROb2RlR3JvdXBJbmRleF0sCisgICAgICAgICAgICAgICAgaW5kZXggPSAw
LAorICAgICAgICAgICAgICAgIGNvdW50ID0gZ3JpZE5vZGVzLmxlbmd0aDsKKyAKKyAgICAgICAg
ICAgIGZvciAoOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICB2YXIgZ3JpZE5vZGUgPSBncmlkTm9kZXNbaW5kZXhdOworCisgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIGdyaWQgbm9kZSBpcyBjb2xsYXBzZWQsIHRoZW4gZG9uJ3Qgc29ydCBj
aGlsZHJlbiAoc2F2ZSBvcGVyYXRpb24gZm9yIGxhdGVyKS4KKyAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGUgZ3JpZCBub2RlIGhhcyB0aGUgc2FtZSBzb3J0aW5nIGFzIHByZXZpb3VzbHksIHRoZW4g
dGhlcmUgaXMgbm8gcG9pbnQgaW4gc29ydGluZyAKKyAgICAgICAgICAgICAgICAvLyBpdCBhZ2Fp
bi4KKyAgICAgICAgICAgICAgICBpZiAoIWZvcmNlICYmICFncmlkTm9kZS5leHBhbmRlZCB8fCBn
cmlkTm9kZS5sYXN0Q29tcGFyYXRvciA9PT0gY29tcGFyYXRvcikKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBncmlkTm9kZS5sYXN0Q29tcGFyYXRvciA9
IGNvbXBhcmF0b3I7CisKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBncmlkTm9kZS5j
aGlsZHJlbjsKKworICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uc29ydChjb21wYXJhdG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQs
IGluZGV4KSB7IGNoaWxkLl9yZWNhbGN1bGF0ZVNpYmxpbmdzKGluZGV4KTsgfSk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBncmlkTm9kZUdyb3Vwcy5wdXNoKGNo
aWxkcmVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9LAorICAgIAorICAgIGluc2VydENoaWxkOiBmdW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5v
ZGUqLyBhUHJvZmlsZURhdGFHcmlkTm9kZSwgYW5JbmRleCkKKyAgICB7CisgICAgICAgIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmluc2VydENoaWxkLmNhbGwodGhpcywgYVBy
b2ZpbGVEYXRhR3JpZE5vZGUsIGFuSW5kZXgpOworICAgICAgICAKKyAgICAgICAgdGhpcy5jaGls
ZHJlbkJ5Q2FsbFVJRFthUHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsVUlEXSA9IGFQcm9maWxlRGF0
YUdyaWROb2RlOworICAgIH0sCisgICAgCisgICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uKC8qUHJv
ZmlsZURhdGFHcmlkTm9kZSovIGFQcm9maWxlRGF0YUdyaWROb2RlKQorICAgIHsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQuY2FsbCh0aGlz
LCBhUHJvZmlsZURhdGFHcmlkTm9kZSk7CisgICAgICAgIAorICAgICAgICBkZWxldGUgdGhpcy5j
aGlsZHJlbkJ5Q2FsbFVJRFthUHJvZmlsZURhdGFHcmlkTm9kZS5jYWxsVUlEXTsKKyAgICB9LAor
ICAgIAorICAgIHJlbW92ZUNoaWxkcmVuOiBmdW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUq
LyBhUHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLmNhbGwodGhpcyk7CisgICAgICAgIAor
ICAgICAgICB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEID0geyB9OworICAgIH0sCisgICAgCisgICAg
ZmluZENoaWxkOiBmdW5jdGlvbigvKk5vZGUqLyBhTm9kZSkKKyAgICB7CisgICAgICAgIGlmICgh
YU5vZGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gdGhpcy5j
aGlsZHJlbkJ5Q2FsbFVJRFthTm9kZS5jYWxsVUlEXTsKKyAgICB9LAorICAgIAorICAgIGdldCBh
dmVyYWdlVGltZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5zZWxmVGltZSAvIE1hdGgu
bWF4KDEsIHRoaXMubnVtYmVyT2ZDYWxscyk7CisgICAgfSwKKworICAgIGdldCBhdmVyYWdlUGVy
Y2VudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5hdmVyYWdlVGltZSAvIHRoaXMudHJl
ZS50b3RhbFRpbWUgKiAxMDAuMDsKKyAgICB9LAorCisgICAgZ2V0IHNlbGZQZXJjZW50KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLnNlbGZUaW1lIC8gdGhpcy50cmVlLnRvdGFsVGltZSAq
IDEwMC4wOworICAgIH0sCisKKyAgICBnZXQgdG90YWxQZXJjZW50KCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLnRvdGFsVGltZSAvIHRoaXMudHJlZS50b3RhbFRpbWUgKiAxMDAuMDsKKyAg
ICB9LAorICAgIAorICAgIC8vIFdoZW4gZm9jdXNpbmcgYW5kIGNvbGxhcHNpbmcgd2UgbW9kaWZ5
IGxvdHMgb2Ygbm9kZXMgaW4gdGhlIHRyZWUuCisgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVz
dG9yZSB0aGVtIGFsbCB0byB0aGVpciBvcmlnaW5hbCBzdGF0ZSB3aGVuIHdlIHJldmVydC4KKyAg
ICBfc2F2ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NhdmVkQ2hpbGRy
ZW4pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5fc2F2
ZWRTZWxmVGltZSA9IHRoaXMuc2VsZlRpbWU7CisgICAgICAgIHRoaXMuX3NhdmVkVG90YWxUaW1l
ID0gdGhpcy50b3RhbFRpbWU7CisgICAgICAgIHRoaXMuX3NhdmVkTnVtYmVyT2ZDYWxscyA9IHRo
aXMubnVtYmVyT2ZDYWxsczsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3NhdmVkQ2hpbGRyZW4g
PSB0aGlzLmNoaWxkcmVuLnNsaWNlKCk7CisgICAgfSwKKyAgICAKKyAgICAvLyBXaGVuIGZvY3Vz
aW5nIGFuZCBjb2xsYXBzaW5nIHdlIG1vZGlmeSBsb3RzIG9mIG5vZGVzIGluIHRoZSB0cmVlLgor
ICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHJlc3RvcmUgdGhlbSBhbGwgdG8gdGhlaXIgb3JpZ2lu
YWwgc3RhdGUgd2hlbiB3ZSByZXZlcnQuCisgICAgX3Jlc3RvcmU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fc2F2ZWRDaGlsZHJlbikKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgCisgICAgICAgIHRoaXMuc2VsZlRpbWUgPSB0aGlzLl9zYXZlZFNlbGZUaW1lOwor
ICAgICAgICB0aGlzLnRvdGFsVGltZSA9IHRoaXMuX3NhdmVkVG90YWxUaW1lOworICAgICAgICB0
aGlzLm51bWJlck9mQ2FsbHMgPSB0aGlzLl9zYXZlZE51bWJlck9mQ2FsbHM7CisgICAgICAgIAor
ICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIAorICAgICAgICB2YXIgY2hp
bGRyZW4gPSB0aGlzLl9zYXZlZENoaWxkcmVuLAorICAgICAgICAgICAgaW5kZXggPSAwLAorICAg
ICAgICAgICAgY291bnQgPSBjaGlsZHJlbi5sZW5ndGg7CisgICAgICAgICAgICAKKyAgICAgICAg
Zm9yICg7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNo
aWxkcmVuW2luZGV4XS5fcmVzdG9yZSgpOworICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChj
aGlsZHJlbltpbmRleF0pOworICAgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfbWVyZ2U6IGZ1
bmN0aW9uKGFDaGlsZCwgc2hvdWxkQWJzb3JiKQorICAgIHsKKyAgICAgICAgdGhpcy5zZWxmVGlt
ZSArPSBhQ2hpbGQuc2VsZlRpbWU7CisgICAgICAgIAorICAgICAgICBpZiAoIXNob3VsZEFic29y
YikKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy50b3RhbFRpbWUgKz0gYUNoaWxkLnRvdGFs
VGltZTsKKyAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZDYWxscyArPSBhQ2hpbGQubnVtYmVyT2ZD
YWxsczsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5j
aGlsZHJlbi5zbGljZSgpOworICAgICAgICAKKyAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigp
OworICAgICAgICAKKyAgICAgICAgdmFyIGluZGV4ID0gMCwKKyAgICAgICAgICAgIGNvdW50ID0g
Y2hpbGRyZW4ubGVuZ3RoOworICAgICAgICAKKyAgICAgICAgZm9yICg7IGluZGV4IDwgY291bnQ7
ICsraW5kZXgpCisgICAgICAgICAgICBpZiAoIXNob3VsZEFic29yYiB8fCBjaGlsZHJlbltpbmRl
eF0gIT09IGFDaGlsZCkKKyAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxkcmVu
W2luZGV4XSk7CisgICAgICAgIAorICAgICAgICBjaGlsZHJlbiA9IGFDaGlsZC5jaGlsZHJlbi5z
bGljZSgpOworICAgICAgICBpbmRleCA9IDAsCisgICAgICAgIGNvdW50ID0gY2hpbGRyZW4ubGVu
Z3RoOworICAgICAgICAKKyAgICAgICAgZm9yICg7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBvcnBoYW5lZENoaWxkID0gY2hpbGRyZW5baW5kZXhd
LAorICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2hpbGQgPSB0aGlzLmNoaWxkcmVuQnlDYWxsVUlE
W29ycGhhbmVkQ2hpbGQuY2FsbFVJRF07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChl
eGlzdGluZ0NoaWxkKQorICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2hpbGQuX21lcmdlKG9ycGhh
bmVkQ2hpbGQsIGZhbHNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlz
LmFwcGVuZENoaWxkKG9ycGhhbmVkQ2hpbGQpOyAgCisgICAgICAgIH0KKyAgICB9Cit9CisKK1dl
Ykluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLlByb2ZpbGVE
YXRhR3JpZFRyZWUgPSBmdW5jdGlvbihhUHJvZmlsZVZpZXcsIGFQcm9maWxlTm9kZSkKK3sKKyAg
ICB0aGlzLnRyZWUgPSB0aGlzOworICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKworICAgIHRoaXMu
cHJvZmlsZVZpZXcgPSBhUHJvZmlsZVZpZXc7CisgICAgCisgICAgdGhpcy50b3RhbFRpbWUgPSBh
UHJvZmlsZU5vZGUudG90YWxUaW1lOworICAgIHRoaXMubGFzdENvbXBhcmF0b3IgPSBudWxsOwor
ICAgIAorICAgIHRoaXMuY2hpbGRyZW5CeUNhbGxVSUQgPSB7IH07Cit9CisKK1dlYkluc3BlY3Rv
ci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZSA9IHsKKyAgICAKKyAgICBnZXQgZXhwYW5k
ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKyAgICAKKyAgICBhcHBl
bmRDaGlsZDogZnVuY3Rpb24oYUNoaWxkKQorICAgIHsKKyAgICAgICAgdGhpcy5pbnNlcnRDaGls
ZChhQ2hpbGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsKKyAgICB9LAorICAgIAorICAgIGluc2Vy
dENoaWxkOiBmdW5jdGlvbihhQ2hpbGQsIGFuSW5kZXgpCisgICAgeworICAgICAgICB0aGlzLmNo
aWxkcmVuLnNwbGljZShhbkluZGV4LCAwLCBhQ2hpbGQpOworICAgICAgICB0aGlzLmNoaWxkcmVu
QnlDYWxsVUlEW2FDaGlsZC5jYWxsVUlEXSA9IGFDaGlsZDsKKyAgICB9LAorICAgIAorICAgIHJl
bW92ZUNoaWxkcmVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmNoaWxkcmVuID0g
W107CisgICAgICAgIHRoaXMuY2hpbGRyZW5CeUNhbGxVSUQgPSB7IH07CisgICAgfSwKKworICAg
IGZpbmRDaGlsZDogV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmZp
bmRDaGlsZCwKKyAgICBzb3J0OiBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90
b3R5cGUuc29ydCwKKyAgICAKKyAgICBfc2F2ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX3NhdmVkQ2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgICAgICB0aGlzLl9zYXZlZFRvdGFsVGltZSA9IHRoaXMudG90YWxUaW1lOworICAgICAgICB0
aGlzLl9zYXZlZENoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5zbGljZSgpOworICAgIH0sCisgICAg
ICAgIAorICAgIHJlc3RvcmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5f
c2F2ZWRDaGlsZHJlbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmNoaWxk
cmVuID0gdGhpcy5fc2F2ZWRDaGlsZHJlbjsKKyAgICAgICAgdGhpcy50b3RhbFRpbWUgPSB0aGlz
Ll9zYXZlZFRvdGFsVGltZTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFj
aChmdW5jdGlvbihub2RlKSB7IG5vZGUuX3Jlc3RvcmUoKTsgfSk7CisgICAgICAgIAorICAgICAg
ICB0aGlzLl9zYXZlZENoaWxkcmVuID0gbnVsbDsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5Q
cm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFyYXRvcnMgPSBbe30sIHt9XTsKKworV2Vi
SW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9yID0gZnVuY3Rp
b24oLypTdHJpbmcqLyBwcm9wZXJ0eSwgLypCb29sZWFuKi8gaXNBc2NlbmRpbmcpCit7CisgICAg
dmFyIGNvbXBhcmF0b3IgPSB0aGlzLnByb3BlcnR5Q29tcGFyYXRvcnNbISFpc0FzY2VuZGluZyA/
IDEgOiAwXVtwcm9wZXJ0eV07CisgICAgCisgICAgaWYgKCFjb21wYXJhdG9yKQorICAgIHsKKyAg
ICAgICAgaWYgKGlzQXNjZW5kaW5nKQorICAgICAgICAgICAgY29tcGFyYXRvciA9IGZ1bmN0aW9u
KGxocywgcmhzKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobGhzW3Byb3Bl
cnR5XSA8IHJoc1twcm9wZXJ0eV0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAobGhzW3Byb3BlcnR5XSA+IHJoc1tw
cm9wZXJ0eV0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBmdW5jdGlvbihsaHMsIHJo
cykgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGxoc1twcm9wZXJ0eV0gPiBy
aHNbcHJvcGVydHldKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGxoc1twcm9wZXJ0eV0gPCByaHNbcHJvcGVydHld
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgdGhpcy5w
cm9wZXJ0eUNvbXBhcmF0b3JzWyEhaXNBc2NlbmRpbmcgPyAxIDogMF1bcHJvcGVydHldID0gY29t
cGFyYXRvcjsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbXBhcmF0b3I7Cit9CisKSW5kZXg6
IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMJKHJldmlzaW9uIDQy
NzQ2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw5ICszMSwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcgPSBm
dW5jdGlvbihwcm9mCiAKICAgICB0aGlzLnNob3dTZWxmVGltZUFzUGVyY2VudCA9IHRydWU7CiAg
ICAgdGhpcy5zaG93VG90YWxUaW1lQXNQZXJjZW50ID0gdHJ1ZTsKKyAgICB0aGlzLnNob3dBdmVy
YWdlVGltZUFzUGVyY2VudCA9IHRydWU7CiAKICAgICB2YXIgY29sdW1ucyA9IHsgInNlbGYiOiB7
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYiKSwgd2lkdGg6ICI3MnB4Iiwgc29y
dDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICAi
dG90YWwiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIiksIHdpZHRoOiAi
NzJweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAgICAgICAgICAgICJhdmVyYWdlIjog
eyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdmVyYWdlIiksIHdpZHRoOiAiNzJweCIs
IHNvcnRhYmxlOiB0cnVlIH0sCiAgICAgICAgICAgICAgICAgICAgICJjYWxscyI6IHsgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbHMiKSwgd2lkdGg6ICI1NHB4Iiwgc29ydGFibGU6
IHRydWUgfSwKICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIjogeyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiIpLCBkaXNjbG9zdXJlOiB0cnVlLCBzb3J0YWJsZTog
dHJ1ZSB9IH07CiAKQEAgLTc1LDE2ICs3NywxNCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcg
PSBmdW5jdGlvbihwcm9mCiAgICAgdGhpcy5yZXNldEJ1dHRvbi5jbGFzc05hbWUgPSAicmVzZXQt
cHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIGhpZGRlbiI7CiAgICAgdGhp
cy5yZXNldEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3Jlc2V0Q2xpY2tl
ZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKLSAgICAvLyBEZWZhdWx0IHRvIHRoZSBoZWF2eSBwcm9m
aWxlLgotICAgIHByb2ZpbGUgPSBwcm9maWxlLmhlYXZ5UHJvZmlsZTsKKyAgICB0aGlzLnByb2Zp
bGUgPSBwcm9maWxlOwogCi0gICAgLy8gQnkgZGVmYXVsdCB0aGUgcHJvZmlsZSBpc24ndCBzb3J0
ZWQsIHNvIHNvcnQgYmFzZWQgb24gb3VyIGRlZmF1bHQgc29ydAotICAgIC8vIGNvbHVtbiBhbmQg
ZGlyZWN0aW9uIGFkZGVkIHRvIHRoZSBEYXRhR3JpZCBjb2x1bW5zIGFib3ZlLgotICAgIHByb2Zp
bGUuc29ydFNlbGZUaW1lRGVzY2VuZGluZygpOworICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJl
ZSA9IHRoaXMuYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlOworICAgIHRoaXMucHJvZmlsZURh
dGFHcmlkVHJlZS5zb3J0KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5
Q29tcGFyYXRvcigic2VsZlRpbWUiLCBmYWxzZSkpOwogCisgICAgdGhpcy5yZWZyZXNoKCk7Cisg
ICAgCiAgICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOwotCi0gICAgdGhpcy5wcm9maWxl
ID0gcHJvZmlsZTsKIH0KIAogV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsK
QEAgLTEwMSw5ICsxMDEsNTcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICBzZXQgcHJvZmlsZShwcm9maWxlKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJvZmls
ZSA9IHByb2ZpbGU7CisgICAgfSwKKyAgICAKKyAgICBnZXQgYm90dG9tVXBQcm9maWxlRGF0YUdy
aWRUcmVlKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fYm90dG9tVXBQcm9maWxlRGF0YUdy
aWRUcmVlKQorICAgICAgICAgICAgdGhpcy5fYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlID0g
bmV3IFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUodGhpcywgdGhpcy5w
cm9maWxlLmhlYWQpOworCisgICAgICAgIHJldHVybiB0aGlzLl9ib3R0b21VcFByb2ZpbGVEYXRh
R3JpZFRyZWU7CisgICAgfSwKKworICAgIGdldCB0b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZSgp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKQor
ICAgICAgICAgICAgdGhpcy5fdG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUgPSBuZXcgV2ViSW5z
cGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKHRoaXMsIHRoaXMucHJvZmlsZS5oZWFk
KTsKKworICAgICAgICByZXR1cm4gdGhpcy5fdG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWU7Cisg
ICAgfSwKKyAgICAKKyAgICBnZXQgY3VycmVudFRyZWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2N1cnJlbnRUcmVlOworICAgIH0sCisgICAgCisgICAgc2V0IGN1cnJlbnRUcmVlKGFU
cmVlTm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUcmVlID0gYVRyZWVOb2RlOwog
ICAgICAgICB0aGlzLnJlZnJlc2goKTsKICAgICB9LAorICAgIAorICAgIGdldCB0b3BEb3duVHJl
ZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RvcERvd25UcmVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICB0aGlzLl90b3BEb3duVHJlZSA9IFdlYkluc3BlY3Rvci5Ub3BEb3duVHJlZUZh
Y3RvcnkuY3JlYXRlKHRoaXMucHJvZmlsZS5oZWFkKTsKKyAgICAgICAgICAgIHRoaXMuX3NvcnRQ
cm9maWxlKHRoaXMuX3RvcERvd25UcmVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3RvcERvd25UcmVlOworICAgIH0sCiAKKyAgICBnZXQgYm90dG9tVXBUcmVl
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fYm90dG9tVXBUcmVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICB0aGlzLl9ib3R0b21VcFRyZWUgPSBXZWJJbnNwZWN0b3IuQm90dG9tVXBUcmVl
RmFjdG9yeS5jcmVhdGUodGhpcy5wcm9maWxlLmhlYWQpOworICAgICAgICAgICAgdGhpcy5fc29y
dFByb2ZpbGUodGhpcy5fYm90dG9tVXBUcmVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2JvdHRvbVVwVHJlZTsKKyAgICB9LAorICAgIAogICAgIGhpZGU6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5oaWRl
LmNhbGwodGhpcyk7CkBAIC0xMTUsMjggKzE2MywzNCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc2VsZWN0ZWRQcm9maWxlTm9kZSA9IHRoaXMu
ZGF0YUdyaWQuc2VsZWN0ZWROb2RlID8gdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUucHJvZmls
ZU5vZGUgOiBudWxsOwogCiAgICAgICAgIHRoaXMuZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsK
KyAgICAgICAgCisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvZmlsZURhdGFHcmlkVHJl
ZS5jaGlsZHJlbiwKKyAgICAgICAgICAgIGluZGV4ID0gMCwKKyAgICAgICAgICAgIGNvdW50ID0g
Y2hpbGRyZW4ubGVuZ3RoOwogCi0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvZmlsZS5o
ZWFkLmNoaWxkcmVuOwotICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5n
dGg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIGlmIChjaGlsZHJlbltpXS52aXNpYmxlKQotICAgICAgICAgICAgICAgIHRoaXMu
ZGF0YUdyaWQuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2Rl
KHRoaXMsIGNoaWxkcmVuW2ldKSk7CisgICAgICAgIGZvciAoOyBpbmRleCA8IGNvdW50OyArK2lu
ZGV4KQorICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5hcHBlbmRDaGlsZChjaGlsZHJlbltpbmRl
eF0pOwogCiAgICAgICAgIGlmIChzZWxlY3RlZFByb2ZpbGVOb2RlICYmIHNlbGVjdGVkUHJvZmls
ZU5vZGUuX2RhdGFHcmlkTm9kZSkKICAgICAgICAgICAgIHNlbGVjdGVkUHJvZmlsZU5vZGUuX2Rh
dGFHcmlkTm9kZS5zZWxlY3RlZCA9IHRydWU7CiAgICAgfSwKIAotICAgIHJlZnJlc2hTaG93QXNQ
ZXJjZW50czogZnVuY3Rpb24oKQorICAgIHJlZnJlc2hWaXNpYmxlRGF0YTogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOwotCiAgICAgICAgIHZh
ciBjaGlsZCA9IHRoaXMuZGF0YUdyaWQuY2hpbGRyZW5bMF07CisgICAgICAgIAogICAgICAgICB3
aGlsZSAoY2hpbGQpIHsKICAgICAgICAgICAgIGNoaWxkLnJlZnJlc2goKTsKICAgICAgICAgICAg
IGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgbnVsbCwgdHJ1ZSk7CiAgICAg
ICAgIH0KICAgICB9LAogCisgICAgcmVmcmVzaFNob3dBc1BlcmNlbnRzOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB0aGlzLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7CisgICAgICAgIHRoaXMu
cmVmcmVzaFZpc2libGVEYXRhKCk7CisgICAgfSwKKwogICAgIHNlYXJjaENhbmNlbGVkOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUmVzdWx0cykgewpAQCAtMTkx
LDcxICsyNDUsOTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKCFpc05hTihxdWVyeU51bWJlcikgJiYgIShncmVhdGVyVGhhbiB8fCBsZXNzVGhh
bikpCiAgICAgICAgICAgICBlcXVhbFRvID0gdHJ1ZTsKIAotICAgICAgICBmdW5jdGlvbiBtYXRj
aGVzUXVlcnkocHJvZmlsZU5vZGUpCisgICAgICAgIGZ1bmN0aW9uIG1hdGNoZXNRdWVyeSgvKlBy
b2ZpbGVEYXRhR3JpZE5vZGUqLyBhUHJvZmlsZURhdGFHcmlkTm9kZSkKICAgICAgICAgewotICAg
ICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbjsKLSAg
ICAgICAgICAgIGRlbGV0ZSBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uOwot
ICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW47
Ci0gICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNv
bHVtbjsKKyAgICAgICAgICAgIGRlbGV0ZSBhUHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0
Y2hlZFNlbGZDb2x1bW47CisgICAgICAgICAgICBkZWxldGUgYVByb2ZpbGVEYXRhR3JpZE5vZGUu
X3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbjsKKyAgICAgICAgICAgIGRlbGV0ZSBhUHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW47CisgICAgICAgICAgICBkZWxl
dGUgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbjsKKyAgICAg
ICAgICAgIGRlbGV0ZSBhUHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9u
Q29sdW1uOwogCiAgICAgICAgICAgICBpZiAocGVyY2VudFVuaXRzKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGxlc3NUaGFuKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlTm9kZS5z
ZWxmUGVyY2VudCA8IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZU5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHByb2ZpbGVOb2RlLnRvdGFsUGVyY2VudCA8IHF1ZXJ5TnVtYmVyKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhUHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVy
Y2VudCA8IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRh
R3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGFQcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsUGVyY2VudCA8IHF1ZXJ5TnVtYmVy
KQorICAgICAgICAgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1h
dGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhUHJvZmls
ZURhdGFHcmlkTm9kZS5hdmVyYWdlUGVyY2VudCA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNo
ZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdyZWF0
ZXJUaGFuKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlTm9kZS5zZWxmUGVyY2Vu
dCA+IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuX3Nl
YXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBy
b2ZpbGVOb2RlLnRvdGFsUGVyY2VudCA+IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChhUHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVyY2VudCA+IHF1
ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUu
X3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGFQcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsUGVyY2VudCA+IHF1ZXJ5TnVtYmVyKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3Rh
bENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhUHJvZmlsZURhdGFHcmlk
Tm9kZS5hdmVyYWdlUGVyY2VudCA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdl
Q29sdW1uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAo
ZXF1YWxUbykgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZU5vZGUuc2VsZlBlcmNl
bnQgPT0gcXVlcnlOdW1iZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlTm9kZS5f
c2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAo
cHJvZmlsZU5vZGUudG90YWxQZXJjZW50ID09IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChhUHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVyY2VudCA9
PSBxdWVyeU51bWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGFQcm9maWxlRGF0YUdyaWRO
b2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IGlmIChhUHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPT0gcXVlcnlOdW1iZXIpCisg
ICAgICAgICAgICAgICAgICAgICAgICBhUHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZFRvdGFsQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFQcm9maWxlRGF0
YUdyaWROb2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAg
ICAgICAgICAgICAgICAgICAgICBhUHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2
ZXJhZ2VDb2x1bW4gPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxz
ZSBpZiAobWlsbGlzZWNvbmRzVW5pdHMgfHwgc2Vjb25kc1VuaXRzKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGxlc3NUaGFuKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlTm9kZS5z
ZWxmVGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb2ZpbGVOb2RlLnRvdGFsVGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlz
ZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNo
ZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhUHJvZmlsZURh
dGFHcmlkTm9kZS5zZWxmVGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29s
dW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFQcm9maWxlRGF0YUdyaWROb2Rl
LnRvdGFsVGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhUHJvZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdl
VGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAg
YVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdyZWF0ZXJUaGFuKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChwcm9maWxlTm9kZS5zZWxmVGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRz
KQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRTZWxm
Q29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVOb2RlLnRvdGFs
VGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAg
cHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChhUHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmVGltZSA+IHF1ZXJ5TnVtYmVy
TWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5v
ZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGFQcm9maWxlRGF0YUdyaWROb2RlLnRvdGFsVGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNv
bmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJj
aE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhUHJv
ZmlsZURhdGFHcmlkTm9kZS5hdmVyYWdlVGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNo
ZWRBdmVyYWdlQ29sdW1uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBpZiAoZXF1YWxUbykgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZU5vZGUu
c2VsZlRpbWUgPT0gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICBpZiAocHJvZmlsZU5vZGUudG90YWxUaW1lID09IHF1ZXJ5TnVtYmVyTWls
bGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1h
dGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhUHJvZmls
ZURhdGFHcmlkTm9kZS5zZWxmVGltZSA9PSBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFQcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkU2Vs
ZkNvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChhUHJvZmlsZURhdGFHcmlk
Tm9kZS50b3RhbFRpbWUgPT0gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICBhUHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1u
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFQcm9maWxlRGF0YUdyaWROb2RlLmF2
ZXJhZ2VUaW1lID09IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGlmIChlcXVhbFRvICYmIHByb2ZpbGVOb2RlLm51bWJlck9mQ2FsbHMgPT0gcXVlcnlO
dW1iZXIpCi0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkQ2Fs
bHNDb2x1bW4gPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChncmVhdGVyVGhhbiAmJiBwcm9m
aWxlTm9kZS5udW1iZXJPZkNhbGxzID4gcXVlcnlOdW1iZXIpCi0gICAgICAgICAgICAgICAgICAg
IHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gPSB0cnVlOwotICAgICAgICAg
ICAgICAgIGlmIChsZXNzVGhhbiAmJiBwcm9maWxlTm9kZS5udW1iZXJPZkNhbGxzIDwgcXVlcnlO
dW1iZXIpCi0gICAgICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkQ2Fs
bHNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChlcXVhbFRvICYmIGFQcm9maWxl
RGF0YUdyaWROb2RlLm51bWJlck9mQ2FsbHMgPT0gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAg
ICAgICAgIGFQcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gPSB0
cnVlOworICAgICAgICAgICAgICAgIGlmIChncmVhdGVyVGhhbiAmJiBhUHJvZmlsZURhdGFHcmlk
Tm9kZS5udW1iZXJPZkNhbGxzID4gcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgIGFQ
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgIGlmIChsZXNzVGhhbiAmJiBhUHJvZmlsZURhdGFHcmlkTm9kZS5udW1iZXJP
ZkNhbGxzIDwgcXVlcnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgIGFQcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gPSB0cnVlOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAocHJvZmlsZU5vZGUuZnVuY3Rpb25OYW1lLmhhc1N1YnN0cmluZyhx
dWVyeSwgdHJ1ZSkgfHwgcHJvZmlsZU5vZGUudXJsLmhhc1N1YnN0cmluZyhxdWVyeSwgdHJ1ZSkp
Ci0gICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVt
biA9IHRydWU7Ci0KLSAgICAgICAgICAgIHZhciBtYXRjaGVkID0gKHByb2ZpbGVOb2RlLl9zZWFy
Y2hNYXRjaGVkU2VsZkNvbHVtbiB8fCBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29s
dW1uIHx8IHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4gfHwgcHJvZmlsZU5v
ZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbik7Ci0gICAgICAgICAgICBpZiAobWF0Y2hl
ZCAmJiBwcm9maWxlTm9kZS5fZGF0YUdyaWROb2RlKQotICAgICAgICAgICAgICAgIHByb2ZpbGVO
b2RlLl9kYXRhR3JpZE5vZGUucmVmcmVzaCgpOworICAgICAgICAgICAgaWYgKGFQcm9maWxlRGF0
YUdyaWROb2RlLmZ1bmN0aW9uTmFtZS5oYXNTdWJzdHJpbmcocXVlcnksIHRydWUpIHx8IGFQcm9m
aWxlRGF0YUdyaWROb2RlLnVybC5oYXNTdWJzdHJpbmcocXVlcnksIHRydWUpKQorICAgICAgICAg
ICAgICAgIGFQcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW4g
PSB0cnVlOwogCi0gICAgICAgICAgICByZXR1cm4gbWF0Y2hlZDsKKyAgICAgICAgICAgIGlmIChh
UHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gfHwgCisgICAgICAg
ICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiB8
fCAKKyAgICAgICAgICAgICAgICBhUHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2
ZXJhZ2VDb2x1bW4gfHwgCisgICAgICAgICAgICAgICAgYVByb2ZpbGVEYXRhR3JpZE5vZGUuX3Nl
YXJjaE1hdGNoZWRDYWxsc0NvbHVtbiB8fCAKKyAgICAgICAgICAgICAgICBhUHJvZmlsZURhdGFH
cmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uKTsKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBhUHJvZmlsZURhdGFHcmlkTm9kZS5yZWZyZXNoKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotCi0gICAgICAgIHZhciBjdXJyZW50ID0gdGhp
cy5wcm9maWxlLmhlYWQ7CisgICAgICAgIAorICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMuZGF0
YUdyaWQ7CiAgICAgICAgIHZhciBhbmNlc3RvcnMgPSBbXTsKICAgICAgICAgdmFyIG5leHRJbmRl
eGVzID0gW107CiAgICAgICAgIHZhciBzdGFydEluZGV4ID0gMDsKQEAgLTM4MCwxMiArNDUzLDEy
IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5zZWxlY3RlZEluZGV4ID09IDEgJiYg
dGhpcy52aWV3ID09ICJIZWF2eSIpIHsKLSAgICAgICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKHRo
aXMucHJvZmlsZS50cmVlUHJvZmlsZSk7Ci0gICAgICAgICAgICB0aGlzLnByb2ZpbGUgPSB0aGlz
LnByb2ZpbGUudHJlZVByb2ZpbGU7CisgICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRy
ZWUgPSB0aGlzLnRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlOworICAgICAgICAgICAgdGhpcy5f
c29ydFByb2ZpbGUoKTsKICAgICAgICAgICAgIHRoaXMudmlldyA9ICJUcmVlIjsKICAgICAgICAg
fSBlbHNlIGlmIChldmVudC50YXJnZXQuc2VsZWN0ZWRJbmRleCA9PSAwICYmIHRoaXMudmlldyA9
PSAiVHJlZSIpIHsKLSAgICAgICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKHRoaXMucHJvZmlsZS5o
ZWF2eVByb2ZpbGUpOwotICAgICAgICAgICAgdGhpcy5wcm9maWxlID0gdGhpcy5wcm9maWxlLmhl
YXZ5UHJvZmlsZTsKKyAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZSA9IHRoaXMu
Ym90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlOworICAgICAgICAgICAgdGhpcy5fc29ydFByb2Zp
bGUoKTsKICAgICAgICAgICAgIHRoaXMudmlldyA9ICJIZWF2eSI7CiAgICAgICAgIH0KIApAQCAt
NDIwLDI4ICs0OTMsMzYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsK
IAogICAgIF9mb2N1c0NsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYg
KCF0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZSB8fCAhdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5v
ZGUucHJvZmlsZU5vZGUpCisgICAgICAgIGlmICghdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUp
CiAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgdGhpcy5yZXNldEJ1dHRvbi5yZW1vdmVT
dHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAgICAgdGhpcy5wcm9maWxlLmZvY3VzKHRoaXMuZGF0
YUdyaWQuc2VsZWN0ZWROb2RlLnByb2ZpbGVOb2RlKTsKKyAgICAgICAgdGhpcy5wcm9maWxlRGF0
YUdyaWRUcmVlLmZvY3VzKHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlKTsKICAgICAgICAgdGhp
cy5yZWZyZXNoKCk7CisgICAgICAgIHRoaXMucmVmcmVzaFZpc2libGVEYXRhKCk7CiAgICAgfSwK
IAogICAgIF9leGNsdWRlQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBp
ZiAoIXRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlIHx8ICF0aGlzLmRhdGFHcmlkLnNlbGVjdGVk
Tm9kZS5wcm9maWxlTm9kZSkKKyAgICAgICAgdmFyIHNlbGVjdGVkTm9kZSA9IHRoaXMuZGF0YUdy
aWQuc2VsZWN0ZWROb2RlCisgICAgCisgICAgICAgIGlmICghc2VsZWN0ZWROb2RlKQogICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHNlbGVjdGVkTm9kZS5kZXNlbGVjdCgpOworCiAgICAg
ICAgIHRoaXMucmVzZXRCdXR0b24ucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAg
IHRoaXMucHJvZmlsZS5leGNsdWRlKHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlLnByb2ZpbGVO
b2RlKTsKLSAgICAgICAgdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUuZGVzZWxlY3QoKTsKKyAg
ICAgICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLmV4Y2x1ZGUoc2VsZWN0ZWROb2RlKTsKICAg
ICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAgICAgIHRoaXMucmVmcmVzaFZpc2libGVEYXRhKCk7
CiAgICAgfSwKIAogICAgIF9yZXNldENsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5yZXNldEJ1dHRvbi5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAgICAg
dGhpcy5wcm9maWxlLnJlc3RvcmVBbGwoKTsKKyAgICAgICAgdGhpcy5wcm9maWxlRGF0YUdyaWRU
cmVlLnJlc3RvcmUoKTsKICAgICAgICAgdGhpcy5yZWZyZXNoKCk7CisgICAgICAgIHRoaXMucmVm
cmVzaFZpc2libGVEYXRhKCk7CiAgICAgfSwKIAogICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZDog
ZnVuY3Rpb24obm9kZSkKQEAgLTQ2MSwzNyArNTQyLDIxIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKHRoaXMucHJvZmls
ZSk7CiAgICAgfSwKIAotICAgIF9zb3J0UHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICBf
c29ydFByb2ZpbGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICghcHJvZmlsZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgc29ydE9yZGVyID0gdGhpcy5kYXRhR3Jp
ZC5zb3J0T3JkZXI7Ci0gICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMuZGF0
YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7Ci0KLSAgICAgICAgdmFyIHNvcnRpbmdGdW5jdGlv
bk5hbWUgPSAic29ydCI7Ci0KLSAgICAgICAgaWYgKHNvcnRDb2x1bW5JZGVudGlmaWVyID09PSAi
c2VsZiIpCi0gICAgICAgICAgICBzb3J0aW5nRnVuY3Rpb25OYW1lICs9ICJTZWxmVGltZSI7Ci0g
ICAgICAgIGVsc2UgaWYgKHNvcnRDb2x1bW5JZGVudGlmaWVyID09PSAidG90YWwiKQotICAgICAg
ICAgICAgc29ydGluZ0Z1bmN0aW9uTmFtZSArPSAiVG90YWxUaW1lIjsKLSAgICAgICAgZWxzZSBp
ZiAoc29ydENvbHVtbklkZW50aWZpZXIgPT09ICJjYWxscyIpCi0gICAgICAgICAgICBzb3J0aW5n
RnVuY3Rpb25OYW1lICs9ICJDYWxscyI7Ci0gICAgICAgIGVsc2UgaWYgKHNvcnRDb2x1bW5JZGVu
dGlmaWVyID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgc29ydGluZ0Z1bmN0aW9uTmFtZSAr
PSAiRnVuY3Rpb25OYW1lIjsKLQotICAgICAgICBpZiAoc29ydE9yZGVyID09PSAiYXNjZW5kaW5n
IikKLSAgICAgICAgICAgIHNvcnRpbmdGdW5jdGlvbk5hbWUgKz0gIkFzY2VuZGluZyI7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNvcnRpbmdGdW5jdGlvbk5hbWUgKz0gIkRlc2NlbmRpbmci
OworICAgICAgICB2YXIgc29ydEFzY2VuZGluZyA9IHRoaXMuZGF0YUdyaWQuc29ydE9yZGVyID09
PSAiYXNjZW5kaW5nIiwKKyAgICAgICAgICAgIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5k
YXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciwKKyAgICAgICAgICAgIHNvcnRQcm9wZXJ0eSA9
IHsgCisgICAgICAgICAgICAgICAgImF2ZXJhZ2UiOiAiYXZlcmFnZVRpbWUiLCAKKyAgICAgICAg
ICAgICAgICAic2VsZiI6ICJzZWxmVGltZSIsIAorICAgICAgICAgICAgICAgICJ0b3RhbCI6ICJ0
b3RhbFRpbWUiLCAKKyAgICAgICAgICAgICAgICAiY2FsbHMiOiAibnVtYmVyT2ZDYWxscyIsIAor
ICAgICAgICAgICAgICAgICJmdW5jdGlvbiI6ICJmdW5jdGlvbk5hbWUiCisgICAgICAgICAgICB9
W3NvcnRDb2x1bW5JZGVudGlmaWVyXTsKKyAgICAgICAgCisgICAgICAgIHRoaXMucHJvZmlsZURh
dGFHcmlkVHJlZS5zb3J0KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5
Q29tcGFyYXRvcihzb3J0UHJvcGVydHksIHNvcnRBc2NlbmRpbmcpKTsKIAotICAgICAgICBpZiAo
IShzb3J0aW5nRnVuY3Rpb25OYW1lIGluIHRoaXMucHJvZmlsZSkpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgcHJvZmlsZVtzb3J0aW5nRnVuY3Rpb25OYW1lXSgpOwotCi0gICAgICAg
IGlmIChwcm9maWxlID09PSB0aGlzLnByb2ZpbGUpCi0gICAgICAgICAgICB0aGlzLnJlZnJlc2go
KTsKKyAgICAgICAgdGhpcy5yZWZyZXNoKCk7CiAgICAgfSwKIAogICAgIF9tb3VzZURvd25JbkRh
dGFHcmlkOiBmdW5jdGlvbihldmVudCkKQEAgLTUxNiwxMjcgKzU4MSwzIEBAIFdlYkluc3BlY3Rv
ci5Qcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5Qcm9maWxlVmll
dy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOwotCi1X
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHByb2ZpbGVWaWV3LCBw
cm9maWxlTm9kZSkKLXsKLSAgICB0aGlzLnByb2ZpbGVWaWV3ID0gcHJvZmlsZVZpZXc7Ci0KLSAg
ICB0aGlzLnByb2ZpbGVOb2RlID0gcHJvZmlsZU5vZGU7Ci0gICAgcHJvZmlsZU5vZGUuX2RhdGFH
cmlkTm9kZSA9IHRoaXM7Ci0KLSAgICAvLyBGaW5kIHRoZSBmaXJzdCBjaGlsZCB0aGF0IGlzIHZp
c2libGUuIFNpbmNlIHdlIGRvbid0IHdhbnQgdG8gY2xhaW0KLSAgICAvLyB3ZSBoYXZlIGNoaWxk
cmVuIGlmIGFsbCB0aGUgY2hpbGRyZW4gYXJlIGludmlzaWJsZS4KLSAgICB2YXIgaGFzQ2hpbGRy
ZW4gPSBmYWxzZTsKLSAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb2ZpbGVOb2RlLmNoaWxkcmVu
OwotICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGNoaWxkcmVu
W2ldLnZpc2libGUpIHsKLSAgICAgICAgICAgIGhhc0NoaWxkcmVuID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5jYWxsKHRoaXMsIG51bGwsIGhhc0NoaWxkcmVuKTsKLQotICAgIHRoaXMuYWRkRXZlbnRM
aXN0ZW5lcigicG9wdWxhdGUiLCB0aGlzLl9wb3B1bGF0ZSwgdGhpcyk7Ci0KLSAgICB0aGlzLmV4
cGFuZGVkID0gcHJvZmlsZU5vZGUuX2V4cGFuZGVkOwotfQotCi1XZWJJbnNwZWN0b3IuUHJvZmls
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGRhdGEoKQotICAgIHsKLSAgICAg
ICAgZnVuY3Rpb24gZm9ybWF0TWlsbGlzZWNvbmRzKHRpbWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRpbWUgLyAxMDAwLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcuYmluZChXZWJJbnNwZWN0b3IpLCB0cnVlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZhciBkYXRhID0ge307Ci0gICAgICAgIGRhdGFbImZ1bmN0aW9uIl0gPSB0aGlzLnByb2Zp
bGVOb2RlLmZ1bmN0aW9uTmFtZTsKLSAgICAgICAgZGF0YVsiY2FsbHMiXSA9IHRoaXMucHJvZmls
ZU5vZGUubnVtYmVyT2ZDYWxsczsKLQotICAgICAgICBpZiAodGhpcy5wcm9maWxlVmlldy5zaG93
U2VsZlRpbWVBc1BlcmNlbnQpCi0gICAgICAgICAgICBkYXRhWyJzZWxmIl0gPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIiUuMmYlJSIsIHRoaXMucHJvZmlsZU5vZGUuc2VsZlBlcmNlbnQpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBkYXRhWyJzZWxmIl0gPSBmb3JtYXRNaWxsaXNlY29uZHMo
dGhpcy5wcm9maWxlTm9kZS5zZWxmVGltZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMucHJvZmlsZVZp
ZXcuc2hvd1RvdGFsVGltZUFzUGVyY2VudCkKLSAgICAgICAgICAgIGRhdGFbInRvdGFsIl0gPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiUuMmYlJSIsIHRoaXMucHJvZmlsZU5vZGUudG90YWxQZXJj
ZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YVsidG90YWwiXSA9IGZvcm1hdE1p
bGxpc2Vjb25kcyh0aGlzLnByb2ZpbGVOb2RlLnRvdGFsVGltZSk7Ci0KLSAgICAgICAgcmV0dXJu
IGRhdGE7Ci0gICAgfSwKLQotICAgIGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZp
ZXIpCi0gICAgewotICAgICAgICB2YXIgY2VsbCA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUu
cHJvdG90eXBlLmNyZWF0ZUNlbGwuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyKTsKLQotICAg
ICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gInNlbGYiICYmIHRoaXMucHJvZmlsZU5vZGUu
X3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uKQotICAgICAgICAgICAgY2VsbC5hZGRTdHlsZUNsYXNz
KCJoaWdobGlnaHQiKTsKLSAgICAgICAgZWxzZSBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gInRv
dGFsIiAmJiB0aGlzLnByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4pCi0gICAg
ICAgICAgICBjZWxsLmFkZFN0eWxlQ2xhc3MoImhpZ2hsaWdodCIpOwotICAgICAgICBlbHNlIGlm
IChjb2x1bW5JZGVudGlmaWVyID09PSAiY2FsbHMiICYmIHRoaXMucHJvZmlsZU5vZGUuX3NlYXJj
aE1hdGNoZWRDYWxsc0NvbHVtbikKLSAgICAgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFzcygiaGln
aGxpZ2h0Iik7Ci0KLSAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgIT09ICJmdW5jdGlvbiIp
Ci0gICAgICAgICAgICByZXR1cm4gY2VsbDsKLQotICAgICAgICBpZiAodGhpcy5wcm9maWxlTm9k
ZS5fc2VhcmNoTWF0Y2hlZEZ1bmN0aW9uQ29sdW1uKQotICAgICAgICAgICAgY2VsbC5hZGRTdHls
ZUNsYXNzKCJoaWdobGlnaHQiKTsKLQotICAgICAgICBpZiAodGhpcy5wcm9maWxlTm9kZS51cmwp
IHsKLSAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZv
clVSTCh0aGlzLnByb2ZpbGVOb2RlLnVybCk7Ci0KLSAgICAgICAgICAgIHZhciB1cmxFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgdXJsRWxlbWVudC5j
bGFzc05hbWUgPSAicHJvZmlsZS1ub2RlLWZpbGUgd2Via2l0LWh0bWwtcmVzb3VyY2UtbGluayI7
Ci0gICAgICAgICAgICB1cmxFbGVtZW50LmhyZWYgPSB0aGlzLnByb2ZpbGVOb2RlLnVybDsKLSAg
ICAgICAgICAgIHVybEVsZW1lbnQubGluZU51bWJlciA9IHRoaXMucHJvZmlsZU5vZGUubGluZU51
bWJlcjsKLQotICAgICAgICAgICAgaWYgKHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlciA+IDAp
Ci0gICAgICAgICAgICAgICAgdXJsRWxlbWVudC50ZXh0Q29udGVudCA9IGZpbGVOYW1lICsgIjoi
ICsgdGhpcy5wcm9maWxlTm9kZS5saW5lTnVtYmVyOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRlbnQgPSBmaWxlTmFtZTsKLQotICAgICAgICAg
ICAgY2VsbC5pbnNlcnRCZWZvcmUodXJsRWxlbWVudCwgY2VsbC5maXJzdENoaWxkKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiBjZWxsOwotICAgIH0sCi0KLSAgICBzZWxlY3Q6IGZ1bmN0
aW9uKHN1cHJlc3NTZWxlY3RlZEV2ZW50KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5wcm90b3R5cGUuc2VsZWN0LmNhbGwodGhpcywgc3VwcmVzc1NlbGVjdGVkRXZl
bnQpOwotICAgICAgICB0aGlzLnByb2ZpbGVWaWV3Ll9kYXRhR3JpZE5vZGVTZWxlY3RlZCh0aGlz
KTsKLSAgICB9LAotCi0gICAgZGVzZWxlY3Q6IGZ1bmN0aW9uKHN1cHJlc3NEZXNlbGVjdGVkRXZl
bnQpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5k
ZXNlbGVjdC5jYWxsKHRoaXMsIHN1cHJlc3NEZXNlbGVjdGVkRXZlbnQpOwotICAgICAgICB0aGlz
LnByb2ZpbGVWaWV3Ll9kYXRhR3JpZE5vZGVEZXNlbGVjdGVkKHRoaXMpOwotICAgIH0sCi0KLSAg
ICBleHBhbmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLmV4cGFuZC5jYWxsKHRoaXMpOwotICAgICAgICB0aGlzLnByb2ZpbGVO
b2RlLl9leHBhbmRlZCA9IHRydWU7Ci0gICAgfSwKLQotICAgIGNvbGxhcHNlOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jb2xs
YXBzZS5jYWxsKHRoaXMpOwotICAgICAgICB0aGlzLnByb2ZpbGVOb2RlLl9leHBhbmRlZCA9IGZh
bHNlOwotICAgIH0sCi0KLSAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAg
ICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9maWxlTm9kZS5jaGlsZHJlbjsKLSAgICAgICAg
dmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoOwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBpZiAoY2hpbGRyZW5b
aV0udmlzaWJsZSkKLSAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNw
ZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZSh0aGlzLnByb2ZpbGVWaWV3LCBjaGlsZHJlbltpXSkp
OwotICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9w
dWxhdGUsIHRoaXMpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5v
ZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90
eXBlOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwu
anMJKHJldmlzaW9uIDQyNzQ2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVzUGFuZWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw3ICsyMTgsNyBAQCBXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZpZXcuc2hvdyh0aGlzLnBy
b2ZpbGVWaWV3cyk7CiAKICAgICAgICAgcHJvZmlsZS5fcHJvZmlsZXNUcmVlRWxlbWVudC5zZWxl
Y3QodHJ1ZSk7Ci0gICAgICAgIHByb2ZpbGUuX3Byb2ZpbGVzVHJlZUVsZW1lbnQucmV2ZWFsKCkK
KyAgICAgICAgcHJvZmlsZS5fcHJvZmlsZXNUcmVlRWxlbWVudC5yZXZlYWwoKTsKIAogICAgICAg
ICB0aGlzLnZpc2libGVWaWV3ID0gdmlldzsKIApAQCAtMjMxLDggKzIzMSw3IEBAIFdlYkluc3Bl
Y3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHNob3dWaWV3OiBmdW5jdGlv
bih2aWV3KQogICAgIHsKLSAgICAgICAgLy8gQWx3YXlzIHVzZSB0aGUgdHJlZVByb2ZpbGUsIHNp
bmNlIHRoZSBoZWF2eSBwcm9maWxlIG1pZ2h0IGJlIHNob3dpbmcuCi0gICAgICAgIHRoaXMuc2hv
d1Byb2ZpbGUodmlldy5wcm9maWxlLnRyZWVQcm9maWxlKTsKKyAgICAgICAgdGhpcy5zaG93UHJv
ZmlsZSh2aWV3LnByb2ZpbGUpOwogICAgIH0sCiAKICAgICBwcm9maWxlVmlld0ZvclByb2ZpbGU6
IGZ1bmN0aW9uKHByb2ZpbGUpCkBAIC0yOTUsOCArMjk0LDcgQEAgV2ViSW5zcGVjdG9yLlByb2Zp
bGVzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgc2VhcmNoTWF0Y2hGb3VuZDogZnVuY3Rpb24o
dmlldywgbWF0Y2hlcykKICAgICB7Ci0gICAgICAgIC8vIEFsd2F5cyB1c2UgdGhlIHRyZWVQcm9m
aWxlLCBzaW5jZSB0aGUgaGVhdnkgcHJvZmlsZSBtaWdodCBiZSBzaG93aW5nLgotICAgICAgICB2
aWV3LnByb2ZpbGUudHJlZVByb2ZpbGUuX3Byb2ZpbGVzVHJlZUVsZW1lbnQuc2VhcmNoTWF0Y2hl
cyA9IG1hdGNoZXM7CisgICAgICAgIHZpZXcucHJvZmlsZS5fcHJvZmlsZXNUcmVlRWxlbWVudC5z
ZWFyY2hNYXRjaGVzID0gbWF0Y2hlczsKICAgICB9LAogCiAgICAgc2VhcmNoQ2FuY2VsZWQ6IGZ1
bmN0aW9uKHN0YXJ0aW5nTmV3U2VhcmNoKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcwkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub3BEb3duUHJvZmlsZURhdGFH
cmlkVHJlZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggMjgwIE5vcnRoIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlRvcERvd25Q
cm9maWxlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oYVByb2ZpbGVWaWV3LCBhUHJvZmlsZU5vZGUs
IGFUcmVlKQoreworICAgIHZhciBoYXNDaGlsZHJlbiA9ICEhKGFQcm9maWxlTm9kZS5jaGlsZHJl
biAmJiBhUHJvZmlsZU5vZGUuY2hpbGRyZW4ubGVuZ3RoKTsKKworICAgIFdlYkluc3BlY3Rvci5Q
cm9maWxlRGF0YUdyaWROb2RlLmNhbGwodGhpcywgYVByb2ZpbGVWaWV3LCBhUHJvZmlsZU5vZGUs
IGFUcmVlLCBoYXNDaGlsZHJlbik7CisKKyAgICB0aGlzLl9yZW1haW5pbmdDaGlsZHJlbiA9IGFQ
cm9maWxlTm9kZS5jaGlsZHJlbjsKK30KKworV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0
YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKKyAgICAKKyAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fcmVtYWluaW5nQ2hpbGRy
ZW4sCisgICAgICAgICAgICBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDsKKyAgICAg
ICAgCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmls
ZURhdGFHcmlkTm9kZSh0aGlzLnByb2ZpbGVWaWV3LCBjaGlsZHJlbltpXSwgdGhpcy50cmVlKSk7
CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKQorICAgICAg
ICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRl
LCB0aGlzKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuID0gbnVs
bDsKKyAgICB9LAorCisgICAgX2V4Y2x1ZGU6IGZ1bmN0aW9uKGFDYWxsVUlEKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVuKQorICAgICAgICAgICAgdGhpcy5fcG9w
dWxhdGUoKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3NhdmUoKTsKKyAgICAgICAgCisgICAg
ICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4sCisgICAgICAgICAgICBpbmRleCA9IHRo
aXMuY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pCisg
ICAgICAgICAgICBjaGlsZHJlbltpbmRleF0uX2V4Y2x1ZGUoYUNhbGxVSUQpOworICAgICAgICAK
KyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFthQ2FsbFVJRF07Cisg
ICAgICAgIAorICAgICAgICBpZiAoY2hpbGQpCisgICAgICAgICAgICB0aGlzLl9tZXJnZShjaGls
ZCwgdHJ1ZSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuVG9wRG93blByb2ZpbGVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRO
b2RlLnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVl
ID0gZnVuY3Rpb24oYVByb2ZpbGVWaWV3LCBhUHJvZmlsZU5vZGUpCit7CisgICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUuY2FsbCh0aGlzLCBhUHJvZmlsZVZpZXcsIGFQcm9maWxl
Tm9kZSk7CisgICAgCisgICAgdGhpcy5fcmVtYWluaW5nQ2hpbGRyZW4gPSBhUHJvZmlsZU5vZGUu
Y2hpbGRyZW47CisgICAgCisgICAgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5fcG9wdWxhdGUuY2FsbCh0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLlRv
cERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZSA9IHsKKworICAgIGZvY3VzOiBmdW5j
dGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBhUHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7
CisgICAgICAgIGlmICghYVByb2ZpbGVEYXRhR3JpZE5vZGUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy5fc2F2ZSgpOworCisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbYVBy
b2ZpbGVEYXRhR3JpZE5vZGVdOworICAgICAgICB0aGlzLnRvdGFsVGltZSA9IGFQcm9maWxlRGF0
YUdyaWROb2RlLnRvdGFsVGltZTsKKyAgICB9LAorICAgIAorICAgIGV4Y2x1ZGU6IGZ1bmN0aW9u
KC8qUHJvZmlsZURhdGFHcmlkTm9kZSovIGFQcm9maWxlRGF0YUdyaWROb2RlKQorICAgIHsKKyAg
ICAgICAgaWYgKCFhUHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLl9zYXZlKCk7CisgICAgICAgIAorICAgICAgICB2YXIgZXhjbHVkZWRDYWxs
VUlEID0gYVByb2ZpbGVEYXRhR3JpZE5vZGUuY2FsbFVJRDsKKyAgICAgICAgCisgICAgICAgIFdl
Ykluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2V4Y2x1ZGUu
Y2FsbCh0aGlzLCBleGNsdWRlZENhbGxVSUQpOworICAgICAgICAKKy8vICAgICAgICB0aGlzLmNo
aWxkcmVuLmZvckVhY2goZnVuY3Rpb24obm9kZSkgeyBub2RlLl9leGNsdWRlKGV4Y2x1ZGVkQ2Fs
bFVJRCk7IH0pOworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMubGFzdENvbXBhcmF0b3IpCisg
ICAgICAgICAgICB0aGlzLnNvcnQodGhpcy5sYXN0Q29tcGFyYXRvciwgdHJ1ZSk7CisgICAgfSwK
KyAgICAKKyAgICBfbWVyZ2U6IFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9k
ZS5wcm90b3R5cGUuX21lcmdlCit9CisKK1dlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFH
cmlkVHJlZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3Jp
ZFRyZWUucHJvdG90eXBlOworCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYwkocmV2aXNpb24gNDI3NDYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogICAgIDxmaWxlPlNvdXJj
ZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+U3R5bGVzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+VGV4dFByb21wdC5qczwvZmlsZT4KKyAgICA8ZmlsZT5UcmVlTm9kZS5qczwvZmls
ZT4KICAgICA8ZmlsZT50cmVlb3V0bGluZS5qczwvZmlsZT4KICAgICA8ZmlsZT51dGlsaXRpZXMu
anM8L2ZpbGU+CiAgICAgPGZpbGU+Vmlldy5qczwvZmlsZT4KSW5kZXg6IFdlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCShyZXZpc2lvbiA0Mjc0NikKKysrIFdlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMw
LDYgKzI5MzAsMTQgQEAgYm9keS5pbmFjdGl2ZSAuc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZQog
ICAgIGhlaWdodDogMTAwJTsKIH0KIAorLnByb2ZpbGUtdmlldyAuZGF0YS1ncmlkIHRoLmF2ZXJh
Z2UtY29sdW1uIHsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5wcm9maWxlLXZpZXcg
LmRhdGEtZ3JpZCB0ZC5hdmVyYWdlLWNvbHVtbiB7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9
CisKIC5wcm9maWxlLXZpZXcgLmRhdGEtZ3JpZCB0aC5zZWxmLWNvbHVtbiB7CiAgICAgdGV4dC1h
bGlnbjogY2VudGVyOwogfQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbAkocmV2aXNpb24gNDI3NDYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDkgQEAgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQTwogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFiYXNlVGFibGVWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZVF1ZXJ5Vmlldy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0
Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJv
ZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+LQogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlByb2ZpbGVWaWV3LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
IGNsYXNzPSJkZXRhY2hlZCI+CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0Mjc3NSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTA0LTIz
ICBGcmFuY2lzY28gVG9sbWFza3kgIDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJp
YWJsZT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
VUcgMjQ2MDQ6IFdlYktpdCBwcm9maWxlciByZXBvcnRzIGluY29ycmVjdCB0b3RhbCB0aW1lcwor
ICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NjA0Pgor
CisgICAgICAgIENoYW5nZWQgcHJvZmlsZS50cmVlUHJvZmlsZSB0byBqdXN0IHByb2ZpbGUsIHNp
bmNlIHRoZXNlIGFyZW4ndCBnZW5lcmF0ZWQgaW4gQysrIGFueW1vcmUuCisgICAgICAgIFJlbW92
ZWQgaGVhdnktdmlldyB0ZXN0IHNpbmNlIGhlYXZ5LXZpZXcgaXNuJ3QgYW4gYWN0dWFsIHRyZWUg
dGhhdCBpcyBnZW5lcmF0ZWQgaW4gQysrIGxhbmQgYW55bW9yZSwKKyAgICAgICAgYnV0IHJhdGhl
ciBqdXN0IGEgZGlmZmVyZW50IGRpc3BsYXkgb2YgdGhlIG5vcm1hbCB0cmVlUHJvZmlsZSBpbiB0
aGUgSlMgZGF0YSBncmlkLgorCisgICAgICAgICogZmFzdC9wcm9maWxlci9oZWF2eS12aWV3LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2hlYXZ5LXZpZXcu
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qczogcHJvZmlsZXNbaV0udHJlZVByb2ZpbGUgLT4gcHJvZmls
ZXNbaV0udHJlZVByb2ZpbGUKKyAgICAgICAgKHByaW50UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUp
OgorCiAyMDA5LTA0LTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVcGRhdGUgbXkganVzdC1sYW5kZWQgbGF5b3V0IHRlc3QgdG8gYWdyZWUgd2l0aCBUaWdl
cidzIENGTmV0d29yawpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9oZWF2eS12aWV3
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2hl
YXZ5LXZpZXctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0Mjc0NikKKysrIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvaGVhdnktdmlldy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTAgKzAsMCBAQAotVGhpcyBwYWdlIGhhcyBzZXZlcmFsIGZ1bmN0aW9ucyBjYWxsaW5nIGVhY2gg
b3RoZXIgaW4gYSB3YXkgdGhhdCBleHBvc2VzIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgcmVsYXRl
ZCB0byB0aGUgSGVhdnkgdmlldyBpbiB0aGUgcHJvZmlsZXIuIAotCi1UbyBydW4gdGhpcyB0ZXN0
IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoZSBicm93c2VyIHRoZW4gbG9hZCB0aGUgV2ViSW5zcGVj
dG9yIGFuZCBsb29rIGF0IHRoZSBwcm9maWxlIGluIEhlYXZ5IHZpZXcuCi0KLVByb2ZpbGUgdGl0
bGU6IEhlYXZ5IFZpZXcgVGVzdAotVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDApCi0gICBmb28g
aGVhdnktdmlldy5odG1sIChsaW5lIDU3KQotICAgICAgYyBoZWF2eS12aWV3Lmh0bWwgKGxpbmUg
MzYpCi0gICAgICAgICBmb28gaGVhdnktdmlldy5odG1sIChsaW5lIDU3KQotICAgICAgICAgICAg
YiBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMzApCi0gICAgICAgICAgICAgICBhIGhlYXZ5LXZpZXcu
aHRtbCAobGluZSAyMSkKLSAgICAgICAgICAgICAgICAgIHN0YXJ0VGVzdCBoZWF2eS12aWV3Lmh0
bWwgKGxpbmUgMTEpCi0gICAgICBiIGhlYXZ5LXZpZXcuaHRtbCAobGluZSAzMCkKLSAgICAgICAg
IGEgaGVhdnktdmlldy5odG1sIChsaW5lIDIxKQotICAgICAgICAgICAgc3RhcnRUZXN0IGhlYXZ5
LXZpZXcuaHRtbCAobGluZSAxMSkKLSAgICAgICAgIGcgaGVhdnktdmlldy5odG1sIChsaW5lIDUx
KQotICAgICAgICAgICAgYSBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMjEpCi0gICAgICAgICAgICAg
ICBzdGFydFRlc3QgaGVhdnktdmlldy5odG1sIChsaW5lIDExKQotICAgICAgYSBoZWF2eS12aWV3
Lmh0bWwgKGxpbmUgMjEpCi0gICAgICAgICBzdGFydFRlc3QgaGVhdnktdmlldy5odG1sIChsaW5l
IDExKQotICAgICAgZSBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgNDYpCi0gICAgICAgICBkIGhlYXZ5
LXZpZXcuaHRtbCAobGluZSA0MSkKLSAgICAgICAgICAgIGEgaGVhdnktdmlldy5odG1sIChsaW5l
IDIxKQotICAgICAgICAgICAgICAgc3RhcnRUZXN0IGhlYXZ5LXZpZXcuaHRtbCAobGluZSAxMSkK
LSAgIGMgaGVhdnktdmlldy5odG1sIChsaW5lIDM2KQotICAgICAgZm9vIGhlYXZ5LXZpZXcuaHRt
bCAobGluZSA1NykKLSAgICAgICAgIGIgaGVhdnktdmlldy5odG1sIChsaW5lIDMwKQotICAgICAg
ICAgICAgYSBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMjEpCi0gICAgICAgICAgICAgICBzdGFydFRl
c3QgaGVhdnktdmlldy5odG1sIChsaW5lIDExKQotICAgYiBoZWF2eS12aWV3Lmh0bWwgKGxpbmUg
MzApCi0gICAgICBhIGhlYXZ5LXZpZXcuaHRtbCAobGluZSAyMSkKLSAgICAgICAgIHN0YXJ0VGVz
dCBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMTEpCi0gICAgICBnIGhlYXZ5LXZpZXcuaHRtbCAobGlu
ZSA1MSkKLSAgICAgICAgIGEgaGVhdnktdmlldy5odG1sIChsaW5lIDIxKQotICAgICAgICAgICAg
c3RhcnRUZXN0IGhlYXZ5LXZpZXcuaHRtbCAobGluZSAxMSkKLSAgIGUgaGVhdnktdmlldy5odG1s
IChsaW5lIDQ2KQotICAgICAgZCBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgNDEpCi0gICAgICAgICBh
IGhlYXZ5LXZpZXcuaHRtbCAobGluZSAyMSkKLSAgICAgICAgICAgIHN0YXJ0VGVzdCBoZWF2eS12
aWV3Lmh0bWwgKGxpbmUgMTEpCi0gICBkIGhlYXZ5LXZpZXcuaHRtbCAobGluZSA0MSkKLSAgICAg
IGEgaGVhdnktdmlldy5odG1sIChsaW5lIDIxKQotICAgICAgICAgc3RhcnRUZXN0IGhlYXZ5LXZp
ZXcuaHRtbCAobGluZSAxMSkKLSAgIGcgaGVhdnktdmlldy5odG1sIChsaW5lIDUxKQotICAgICAg
YSBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMjEpCi0gICAgICAgICBzdGFydFRlc3QgaGVhdnktdmll
dy5odG1sIChsaW5lIDExKQotICAgYSBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMjEpCi0gICAgICBz
dGFydFRlc3QgaGVhdnktdmlldy5odG1sIChsaW5lIDExKQotICAgc3RhcnRUZXN0IGhlYXZ5LXZp
ZXcuaHRtbCAobGluZSAxMSkKLQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2hl
YXZ5LXZpZXcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2hl
YXZ5LXZpZXcuaHRtbAkocmV2aXNpb24gNDI3NDYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL2hlYXZ5LXZpZXcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3NiArMCwwIEBACi08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCh0cnVlKTsKLX0K
LQotZnVuY3Rpb24gc3RhcnRUZXN0KCkKLXsKLSAgICBjb25zb2xlLnByb2ZpbGUoIkhlYXZ5IFZp
ZXcgVGVzdCIpOwotCi0gICAgYSgpOwotCi0gICAgY29uc29sZS5wcm9maWxlRW5kKCk7Ci0gICAg
cHJpbnRIZWF2eVByb2ZpbGVzRGF0YVdpdGhvdXRUaW1lKCk7Ci19Ci0KLWZ1bmN0aW9uIGEoKQot
ewotICAgIGIoKTsKLSAgICBmb28oKTsKLSAgICBkKCk7Ci0gICAgZCgpOwotICAgIGcoKTsKLX0K
LQotZnVuY3Rpb24gYigpCi17Ci0gICAgZm9vKCk7Ci0gICAgZm9vKCk7Ci19Ci0KLWZ1bmN0aW9u
IGMoKQotewotICAgIGZvbygpOwotfQotCi1mdW5jdGlvbiBkKCkKLXsKLSAgICBlKCk7Ci19Ci0K
LWZ1bmN0aW9uIGUoKQotewotICAgIGZvbygpOwotfQotCi1mdW5jdGlvbiBnKCkKLXsKLSAgICBi
KCk7Ci19Ci0KLXZhciBmaXJzdFRpbWUgPSB0cnVlOwotZnVuY3Rpb24gZm9vKCkKLXsKLSAgICBp
ZiAoZmlyc3RUaW1lKSB7Ci0gICAgICAgIGZpcnN0VGltZSA9IGZhbHNlOwotICAgICAgICBjKCk7
Ci0gICAgfQotfQotCi08L3NjcmlwdD4KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJzdGFydFRl
c3QoKSI+Ci1UaGlzIHBhZ2UgaGFzIHNldmVyYWwgZnVuY3Rpb25zIGNhbGxpbmcgZWFjaCBvdGhl
ciBpbiBhIHdheSB0aGF0IGV4cG9zZXMgaW50ZXJlc3RpbmcKLWVkZ2UgY2FzZXMgcmVsYXRlZCB0
byB0aGUgSGVhdnkgdmlldyBpbiB0aGUgcHJvZmlsZXIuCi08YnI+Ci08YnI+Ci1UbyBydW4gdGhp
cyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoZSBicm93c2VyIHRoZW4gbG9hZCB0aGUgV2Vi
SW5zcGVjdG9yIGFuZCBsb29rIGF0Ci10aGUgcHJvZmlsZSBpbiBIZWF2eSB2aWV3LgotPGRpdiBp
ZD0ib3V0cHV0Ij48L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvcmVzb3VyY2VzL3Byb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcmVzb3VyY2VzL3Byb2ZpbGVyLXRl
c3QtSlMtcmVzb3VyY2VzLmpzCShyZXZpc2lvbiA0Mjc0NikKKysrIExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvcmVzb3VyY2VzL3Byb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIGZ1bmN0aW9uIHByaW50UHJvZmlsZXNEYXRhV2l0aG91
dFRpbWUoKQogICAgIHZhciBwcm9maWxlcyA9IGNvbnNvbGUucHJvZmlsZXM7CiAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwcm9maWxlcy5sZW5ndGg7ICsraSkgewogICAgICAgICBwcmVFbGVtZW50
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQcm9maWxlIHRpdGxlOiAiICsg
cHJvZmlsZXNbaV0udGl0bGUgKyAiXG4iKSk7Ci0gICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRo
b3V0VGltZShwcmVFbGVtZW50LCBwcm9maWxlc1tpXS50cmVlUHJvZmlsZS5oZWFkLCAwKTsKKyAg
ICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lKHByZUVsZW1lbnQsIHByb2ZpbGVzW2ld
LmhlYWQsIDApOwogICAgICAgICBwcmVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCJcbiIpKTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvRW5nbGlzaC5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0KCi8vNTJBR0VBY2dBZ0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5B
SE1BSUFBOUFDQUFiZ0JsQUhjQUlBQlAKQUdJQWFnQmxBR01BZEFBN0FBb0FDZ0JzQUc4QVl3QmhB
R3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0FnQUNnQQpKUUJrQUNrQUlnQmRB
Q0FBUFFBZ0FDSUFJQUFvQUNVQVpBQXBBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FG
TUFkQUJ5CkFHa0FiZ0JuQUhNQVd3QWlBQ0FBS0FCeUFHVUFjQUJsQUdFQWRBQmxBR1FBSUFBbEFH
UUFJQUIwQUdrQWJRQmxBSE1BS1FBaUFGMEEKSUFBOUFDQUFJZ0FnQUNnQWNnQmxBSEFBWlFCaEFI
UUFaUUJrQUNBQUpRQmtBQ0FBZEFCcEFHMEFaUUJ6QUNrQUlnQTdBQW9BYkFCdgpBR01BWVFCc0FH
a0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQUpRQXVBREFBWmdCQ0FDSUFYUUFnQUQw
QUlBQWlBQ1VBCkxnQXdBR1lBUWdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhR
QWNnQnBBRzRBWndCekFGc0FJZ0FsQUM0QU1BQm0KQUcwQWN3QWlBRjBBSUFBOUFDQUFJZ0FsQUM0
QU1BQm1BRzBBY3dBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQQpjZ0JwQUc0
QVp3QnpBRnNBSWdBbEFDNEFNUUJtQUNBQVpBQmhBSGtBY3dBaUFGMEFJQUE5QUNBQUlnQWxBQzRB
TVFCbUFDQUFaQUJoCkFIa0Fjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFB
Y2dCcEFHNEFad0J6QUZzQUlnQWxBQzRBTVFCbUFHZ0EKY2dCekFDSUFYUUFnQUQwQUlBQWlBQ1VB
TGdBeEFHWUFhQUJ5QUhNQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMApBSElB
YVFCdUFHY0Fjd0JiQUNJQUpRQXVBREVBWmdCdEFHa0FiZ0FpQUYwQUlBQTlBQ0FBSWdBbEFDNEFN
UUJtQUcwQWFRQnVBQ0lBCk93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0Fi
Z0JuQUhNQVd3QWlBQ1VBTGdBeUFHWUFKUUFsQUNJQVhRQWcKQUQwQUlBQWlBQ1VBTGdBeUFHWUFK
UUFsQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQQpX
d0FpQUNVQUxnQXlBR1lBU3dCQ0FDSUFYUUFnQUQwQUlBQWlBQ1VBTGdBeUFHWUFTd0JDQUNJQU93
QUtBR3dBYndCakFHRUFiQUJwCkFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUNVQUxn
QXlBR1lBY3dBaUFGMEFJQUE5QUNBQUlnQWxBQzRBTWdCbUFITUEKSWdBN0FBb0FiQUJ2QUdNQVlR
QnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFKUUF1QURNQVpnQk5BRUlBSWdC
ZApBQ0FBUFFBZ0FDSUFKUUF1QURNQVpnQk5BRUlBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdC
bEFHUUFVd0IwQUhJQWFRQnVBR2NBCmN3QmJBQ0lBSlFBdUFETUFaZ0J0QUhNQUlnQmRBQ0FBUFFB
Z0FDSUFKUUF1QURNQVpnQnRBSE1BSWdBN0FBb0FiQUJ2QUdNQVlRQnMKQUdrQWVnQmxBR1FBVXdC
MEFISUFhUUJ1QUdjQWN3QmJBQ0lBSlFCa0FDQUFaUUJ5QUhJQWJ3QnlBQ0lBWFFBZ0FEMEFJQUFp
QUNVQQpaQUFnQUdVQWNnQnlBRzhBY2dBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJU
QUhRQWNnQnBBRzRBWndCekFGc0FJZ0FsCkFHUUFJQUJsQUhJQWNnQnZBSElBTEFBZ0FDVUFaQUFn
QUhjQVlRQnlBRzRBYVFCdUFHY0FJZ0JkQUNBQVBRQWdBQ0lBSlFBeEFDUUEKWkFBZ0FHVUFjZ0J5
QUc4QWNnQXNBQ0FBSlFBeUFDUUFaQUFnQUhjQVlRQnlBRzRBYVFCdUFHY0FJZ0E3QUFvQWJBQnZB
R01BWVFCcwpBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFKUUJrQUNBQVpRQnlB
SElBYndCeUFDd0FJQUFsQUdRQUlBQjNBR0VBCmNnQnVBR2tBYmdCbkFITUFJZ0JkQUNBQVBRQWdB
Q0lBSlFBeEFDUUFaQUFnQUdVQWNnQnlBRzhBY2dBc0FDQUFKUUF5QUNRQVpBQWcKQUhjQVlRQnlB
RzRBYVFCdUFHY0Fjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFH
NEFad0J6QUZzQQpJZ0FsQUdRQUlBQmxBSElBY2dCdkFISUFjd0FpQUYwQUlBQTlBQ0FBSWdBbEFH
UUFJQUJsQUhJQWNnQnZBSElBY3dBaUFEc0FDZ0JzCkFHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFI
UUFjZ0JwQUc0QVp3QnpBRnNBSWdBbEFHUUFJQUJsQUhJQWNnQnZBSElBY3dBc0FDQUEKSlFCa0FD
QUFkd0JoQUhJQWJnQnBBRzRBWndBaUFGMEFJQUE5QUNBQUlnQWxBREVBSkFCa0FDQUFaUUJ5QUhJ
QWJ3QnlBSE1BTEFBZwpBQ1VBTWdBa0FHUUFJQUIzQUdFQWNnQnVBR2tBYmdCbkFDSUFPd0FLQUd3
QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBCmJnQm5BSE1BV3dBaUFDVUFaQUFnQUdV
QWNnQnlBRzhBY2dCekFDd0FJQUFsQUdRQUlBQjNBR0VBY2dCdUFHa0FiZ0JuQUhNQUlnQmQKQUNB
QVBRQWdBQ0lBSlFBeEFDUUFaQUFnQUdVQWNnQnlBRzhBY2dCekFDd0FJQUFsQURJQUpBQmtBQ0FB
ZHdCaEFISUFiZ0JwQUc0QQpad0J6QUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1B
ZEFCeUFHa0FiZ0JuQUhNQVd3QWlBQ1VBWkFBZ0FHMEFZUUIwCkFHTUFhQUJsQUhNQUlnQmRBQ0FB
UFFBZ0FDSUFKUUJrQUNBQWJRQmhBSFFBWXdCb0FHVUFjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0EK
YVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0FsQUdRQUlBQjNBR0VBY2dCdUFHa0Fi
Z0JuQUNJQVhRQWdBRDBBSUFBaQpBQ1VBWkFBZ0FIY0FZUUJ5QUc0QWFRQnVBR2NBSWdBN0FBb0Fi
QUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBCmN3QmJBQ0lBSlFCa0FDQUFk
d0JoQUhJQWJnQnBBRzRBWndCekFDSUFYUUFnQUQwQUlBQWlBQ1VBWkFBZ0FIY0FZUUJ5QUc0QWFR
QnUKQUdjQWN3QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3
QnpBRnNBSWdBbEFHUUFJQURYQUNBQQpKUUJrQUNJQVhRQWdBRDBBSUFBaUFDVUFNUUFrQUdRQUlB
RFhBQ0FBSlFBeUFDUUFaQUFpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2CkFHVUFaQUJUQUhRQWNn
QnBBRzRBWndCekFGc0FJZ0FsQUhNQUlBQW9BR1lBY2dCdkFHMEFJQUJqQUdFQVl3Qm9BR1VBS1FB
aUFGMEEKSUFBOUFDQUFJZ0FsQUhNQUlBQW9BR1lBY2dCdkFHMEFJQUJqQUdFQVl3Qm9BR1VBS1FB
aUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNgpBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdB
bEFITUFJQUJrQUc4QWR3QnVBR3dBYndCaEFHUUFJZ0JkQUNBQVBRQWdBQ0lBCkpRQnpBQ0FBWkFC
dkFIY0FiZ0JzQUc4QVlRQmtBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5
QUdrQWJnQm4KQUhNQVd3QWlBQ1VBY3dBZ0FHd0FZUUIwQUdVQWJnQmpBSGtBSWdCZEFDQUFQUUFn
QUNJQUpRQnpBQ0FBYkFCaEFIUUFaUUJ1QUdNQQplUUFpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2
QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQWxBSE1BSUFCc0FHRUFkQUJsCkFHNEFZd0I1
QUN3QUlBQWxBSE1BSUFCa0FHOEFkd0J1QUd3QWJ3QmhBR1FBSUFBb0FDVUFjd0FnQUhRQWJ3QjBB
R0VBYkFBcEFDSUEKWFFBZ0FEMEFJQUFpQUNVQU1RQWtBSE1BSUFCc0FHRUFkQUJsQUc0QVl3QjVB
Q3dBSUFBbEFESUFKQUJ6QUNBQVpBQnZBSGNBYmdCcwpBRzhBWVFCa0FDQUFLQUFsQURNQUpBQnpB
Q0FBZEFCdkFIUUFZUUJzQUNrQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBClV3QjBB
SElBYVFCdUFHY0Fjd0JiQUNJQUtBQmhBRzRBYndCdUFIa0FiUUJ2QUhVQWN3QWdBR1lBZFFCdUFH
TUFkQUJwQUc4QWJnQXAKQUNJQVhRQWdBRDBBSUFBaUFDZ0FZUUJ1QUc4QWJnQjVBRzBBYndCMUFI
TUFJQUJtQUhVQWJnQmpBSFFBYVFCdkFHNEFLUUFpQURzQQpDZ0JzQUc4QVl3QmhBR3dBYVFCNkFH
VUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0FvQUhBQWNnQnZBR2NBY2dCaEFHMEFLUUFpCkFG
MEFJQUE5QUNBQUlnQW9BSEFBY2dCdkFHY0FjZ0JoQUcwQUtRQWlBRHNBQ2dCc0FHOEFZd0JoQUd3
QWFRQjZBR1VBWkFCVEFIUUEKY2dCcEFHNEFad0J6QUZzQUlnQW9BSFFBWlFCNEFIUUFLUUFpQUYw
QUlBQTlBQ0FBSWdBb0FIUUFaUUI0QUhRQUtRQWlBRHNBQ2dCcwpBRzhBWXdCaEFHd0FhUUI2QUdV
QVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQW9BSGNBYUFCcEFIUUFaUUJ6QUhBQVlRQmpBR1VB
CktRQWlBRjBBSUFBOUFDQUFJZ0FvQUhjQWFBQnBBSFFBWlFCekFIQUFZUUJqQUdVQUtRQWlBRHNB
Q2dCc0FHOEFZd0JoQUd3QWFRQjYKQUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQXhBQ0FB
YlFCaEFIUUFZd0JvQUNJQVhRQWdBRDBBSUFBaUFERUFJQUJ0QUdFQQpkQUJqQUdnQUlnQTdBQW9B
YkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBUVFCdUFDQUFa
UUJ5CkFISUFid0J5QUNBQWJ3QmpBR01BZFFCeUFISUFaUUJrQUNBQWRBQnlBSGtBYVFCdUFHY0FJ
QUIwQUc4QVhBQnVBSElBWlFCaEFHUUEKSUFCMEFHZ0FaUUFnQUJ3Z0pRQnpBQjBnSUFCMEFHRUFZ
Z0JzQUdVQUxnQWlBRjBBSUFBOUFDQUFJZ0JCQUc0QUlBQmxBSElBY2dCdgpBSElBSUFCdkFHTUFZ
d0IxQUhJQWNnQmxBR1FBSUFCMEFISUFlUUJwQUc0QVp3QWdBSFFBYndCY0FHNEFjZ0JsQUdFQVpB
QWdBSFFBCmFBQmxBQ0FBSENBbEFITUFIU0FnQUhRQVlRQmlBR3dBWlFBdUFDSUFPd0FLQUd3QWJ3
QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnkKQUdrQWJnQm5BSE1BV3dBaUFFRUFiZ0FnQUhVQWJn
QmxBSGdBY0FCbEFHTUFkQUJsQUdRQUlBQmxBSElBY2dCdkFISUFJQUFsQUhNQQpJQUJ2QUdNQVl3
QjFBSElBWlFCa0FDNEFJZ0JkQUNBQVBRQWdBQ0lBUVFCdUFDQUFkUUJ1QUdVQWVBQndBR1VBWXdC
MEFHVUFaQUFnCkFHVUFjZ0J5QUc4QWNnQWdBQ1VBY3dBZ0FHOEFZd0JqQUhVQWNnQmxBR1FBTGdB
aUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUEKWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdC
QkFIWUFaUUJ5QUdFQVp3QmxBQ0lBWFFBZ0FEMEFJQUFpQUVFQWRnQmxBSElBWVFCbgpBR1VBSWdB
N0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFRZ0J5
QUdVQVlRQnJBSEFBCmJ3QnBBRzRBZEFCekFDSUFYUUFnQUQwQUlBQWlBRUlBY2dCbEFHRUFhd0J3
QUc4QWFRQnVBSFFBY3dBaUFEc0FDZ0JzQUc4QVl3QmgKQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0Jw
QUc0QVp3QnpBRnNBSWdCREFHRUFiQUJzQUNBQVV3QjBBR0VBWXdCckFDSUFYUUFnQUQwQQpJQUFp
QUVNQVlRQnNBR3dBSUFCVEFIUUFZUUJqQUdzQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxB
R1FBVXdCMEFISUFhUUJ1CkFHY0Fjd0JiQUNJQVF3QmhBR3dBYkFCekFDSUFYUUFnQUQwQUlBQWlB
RU1BWVFCc0FHd0Fjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0EKYVFCNkFHVUFaQUJUQUhRQWNnQnBB
RzRBWndCekFGc0FJZ0JEQUd3QVpRQmhBSElBSUFCakFHOEFiZ0J6QUc4QWJBQmxBQ0FBYkFCdgpB
R2NBTGdBaUFGMEFJQUE5QUNBQUlnQkRBR3dBWlFCaEFISUFJQUJqQUc4QWJnQnpBRzhBYkFCbEFD
QUFiQUJ2QUdjQUxnQWlBRHNBCkNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFH
NEFad0J6QUZzQUlnQkRBR3dBYndCekFIVUFjZ0JsQUNJQVhRQWcKQUQwQUlBQWlBRU1BYkFCdkFI
TUFkUUJ5QUdVQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdj
QQpjd0JiQUNJQVF3QnZBRzBBY0FCMUFIUUFaUUJrQUNBQVV3QjBBSGtBYkFCbEFDSUFYUUFnQUQw
QUlBQWlBRU1BYndCdEFIQUFkUUIwCkFHVUFaQUFnQUZNQWRBQjVBR3dBWlFBaUFEc0FDZ0JzQUc4
QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0EKSWdCRUFFRUFWQUJCQUVJ
QVFRQlRBRVVBVXdBaUFGMEFJQUE5QUNBQUlnQkVBRUVBVkFCQkFFSUFRUUJUQUVVQVV3QWlBRHNB
Q2dCcwpBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQkVBRThB
VFFBaUFGMEFJQUE5QUNBQUlnQkVBRThBClRRQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VB
WkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCRUFHRUFkQUJoQUdJQVlRQnoKQUdVQUlBQnVBRzhB
SUFCc0FHOEFiZ0JuQUdVQWNnQWdBR2dBWVFCekFDQUFaUUI0QUhBQVpRQmpBSFFBWlFCa0FDQUFk
Z0JsQUhJQQpjd0JwQUc4QWJnQXVBQ0lBWFFBZ0FEMEFJQUFpQUVRQVlRQjBBR0VBWWdCaEFITUFa
UUFnQUc0QWJ3QWdBR3dBYndCdUFHY0FaUUJ5CkFDQUFhQUJoQUhNQUlBQmxBSGdBY0FCbEFHTUFk
QUJsQUdRQUlBQjJBR1VBY2dCekFHa0Fid0J1QUM0QUlnQTdBQW9BYkFCdkFHTUEKWVFCc0FHa0Fl
Z0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVJBQmhBSFFBWVFCaUFHRUFjd0JsQUhNQUln
QmRBQ0FBUFFBZwpBQ0lBUkFCaEFIUUFZUUJpQUdFQWN3QmxBSE1BSWdBN0FBb0FiQUJ2QUdNQVlR
QnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBCmN3QmJBQ0lBUkFCbEFHSUFkUUJuQUdjQWFR
QnVBR2NBSUFCa0FHa0Fjd0JoQUdJQWJBQmxBR1FBTGdBZ0FFTUFiQUJwQUdNQWF3QWcKQUhRQWJ3
QWdBR1VBYmdCaEFHSUFiQUJsQUM0QUlnQmRBQ0FBUFFBZ0FDSUFSQUJsQUdJQWRRQm5BR2NBYVFC
dUFHY0FJQUJrQUdrQQpjd0JoQUdJQWJBQmxBR1FBTGdBZ0FFTUFiQUJwQUdNQWF3QWdBSFFBYndB
Z0FHVUFiZ0JoQUdJQWJBQmxBQzRBSWdBN0FBb0FiQUJ2CkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdC
MEFISUFhUUJ1QUdjQWN3QmJBQ0lBUkFCbEFHSUFkUUJuQUdjQWFRQnVBR2NBSUFCbEFHNEEKWVFC
aUFHd0FaUUJrQUM0QUlBQkRBR3dBYVFCakFHc0FJQUIwQUc4QUlBQmtBR2tBY3dCaEFHSUFiQUJs
QUM0QUlnQmRBQ0FBUFFBZwpBQ0lBUkFCbEFHSUFkUUJuQUdjQWFRQnVBR2NBSUFCbEFHNEFZUUJp
QUd3QVpRQmtBQzRBSUFCREFHd0FhUUJqQUdzQUlBQjBBRzhBCklBQmtBR2tBY3dCaEFHSUFiQUJs
QUM0QUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmIK
QUNJQVJBQmxBR0lBZFFCbkFHY0FhUUJ1QUdjQUlBQnpBR01BY2dCcEFIQUFkQUJ6QUNBQWNnQmxB
SEVBZFFCcEFISUFaUUJ6QUNBQQplUUJ2QUhVQUlBQjBBRzhBSUFCekFIUUFZUUJ5QUhRQUlBQjBB
R2dBWlFBZ0FHUUFaUUJpQUhVQVp3Qm5BR1VBY2dBdUFDSUFYUUFnCkFEMEFJQUFpQUVRQVpRQmlB
SFVBWndCbkFHa0FiZ0JuQUNBQWN3QmpBSElBYVFCd0FIUUFjd0FnQUhJQVpRQnhBSFVBYVFCeUFH
VUEKY3dBZ0FIa0Fid0IxQUNBQWRBQnZBQ0FBY3dCMEFHRUFjZ0IwQUNBQWRBQm9BR1VBSUFCa0FH
VUFZZ0IxQUdjQVp3QmxBSElBTGdBaQpBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFI
UUFjZ0JwQUc0QVp3QnpBRnNBSWdCRUFHa0FiUUJsQUc0QWN3QnBBRzhBCmJnQnpBQ0lBWFFBZ0FE
MEFJQUFpQUVRQWFRQnRBR1VBYmdCekFHa0Fid0J1QUhNQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdr
QWVnQmwKQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVJBQnZBR01BYXdBZ0FIUUFid0FnQUcw
QVlRQnBBRzRBSUFCM0FHa0FiZ0JrQUc4QQpkd0F1QUNJQVhRQWdBRDBBSUFBaUFFUUFid0JqQUdz
QUlBQjBBRzhBSUFCdEFHRUFhUUJ1QUNBQWR3QnBBRzRBWkFCdkFIY0FMZ0FpCkFEc0FDZ0JzQUc4
QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JFQUc4QVl3QjFBRzBB
WlFCdUFIUUEKY3dBaUFGMEFJQUE5QUNBQUlnQkVBRzhBWXdCMUFHMEFaUUJ1QUhRQWN3QWlBRHNB
Q2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVApBSFFBY2dCcEFHNEFad0J6QUZzQUlnQkVBRzhB
YmdBbkFIUUFJQUJ3QUdFQWRRQnpBR1VBSUFCdkFHNEFJQUJsQUhnQVl3QmxBSEFBCmRBQnBBRzhB
YmdCekFDNEFJZ0JkQUNBQVBRQWdBQ0lBUkFCdkFHNEFHU0IwQUNBQWNBQmhBSFVBY3dCbEFDQUFi
d0J1QUNBQVpRQjQKQUdNQVpRQndBSFFBYVFCdkFHNEFjd0F1QUNJQU93QUtBR3dBYndCakFHRUFi
QUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQQpXd0FpQUVVQWJBQmxBRzBBWlFCdUFIUUFj
d0FpQUYwQUlBQTlBQ0FBSWdCRkFHd0FaUUJ0QUdVQWJnQjBBSE1BSWdBN0FBb0FiQUJ2CkFHTUFZ
UUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBUlFCdUFHRUFZZ0JzQUdVQUlB
QkVBR1VBWWdCMUFHY0EKWndCcEFHNEFad0FpQUYwQUlBQTlBQ0FBSWdCRkFHNEFZUUJpQUd3QVpR
QWdBRVFBWlFCaUFIVUFad0JuQUdrQWJnQm5BQ0lBT3dBSwpBR3dBYndCakFHRUFiQUJwQUhvQVpR
QmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRVVBYmdCaEFHSUFiQUJsQUNBQVVBQnlBRzhBClpn
QnBBR3dBYVFCdUFHY0FJZ0JkQUNBQVBRQWdBQ0lBUlFCdUFHRUFZZ0JzQUdVQUlBQlFBSElBYndC
bUFHa0FiQUJwQUc0QVp3QWkKQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dC
cEFHNEFad0J6QUZzQUlnQkZBRzRBWVFCaUFHd0FhUUJ1QUdjQQpJQUJrQUdVQVlnQjFBR2NBWndC
cEFHNEFad0FnQUhjQWFRQnNBR3dBSUFCdEFHRUFhd0JsQUNBQWN3QmpBSElBYVFCd0FIUUFjd0Fn
CkFISUFkUUJ1QUNBQWN3QnNBRzhBZHdCbEFISUFMZ0FpQUYwQUlBQTlBQ0FBSWdCRkFHNEFZUUJp
QUd3QWFRQnVBR2NBSUFCa0FHVUEKWWdCMUFHY0Fad0JwQUc0QVp3QWdBSGNBYVFCc0FHd0FJQUJ0
QUdFQWF3QmxBQ0FBY3dCakFISUFhUUJ3QUhRQWN3QWdBSElBZFFCdQpBQ0FBY3dCc0FHOEFkd0Js
QUhJQUxnQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpB
RnNBCklnQkZBRzRBWVFCaUFHd0FhUUJ1QUdjQUlBQndBSElBYndCbUFHa0FiQUJwQUc0QVp3QWdB
SGNBYVFCc0FHd0FJQUJ0QUdFQWF3QmwKQUNBQWN3QmpBSElBYVFCd0FIUUFjd0FnQUhJQWRRQnVB
Q0FBY3dCc0FHOEFkd0JsQUhJQUxnQWlBRjBBSUFBOUFDQUFJZ0JGQUc0QQpZUUJpQUd3QWFRQnVB
R2NBSUFCd0FISUFid0JtQUdrQWJBQnBBRzRBWndBZ0FIY0FhUUJzQUd3QUlBQnRBR0VBYXdCbEFD
QUFjd0JqCkFISUFhUUJ3QUhRQWN3QWdBSElBZFFCdUFDQUFjd0JzQUc4QWR3QmxBSElBTGdBaUFE
c0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUEKWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCRkFI
WUFaUUJ1QUhRQUlBQkVBRzhBWXdCMUFHMEFaUUJ1QUhRQUlnQmRBQ0FBUFFBZwpBQ0lBUlFCMkFH
VUFiZ0IwQUNBQVJBQnZBR01BZFFCdEFHVUFiZ0IwQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhv
QVpRQmtBRk1BCmRBQnlBR2tBYmdCbkFITUFXd0FpQUVVQWRnQmxBRzRBZEFBZ0FGUUFZUUJ5QUdj
QVpRQjBBQ0lBWFFBZ0FEMEFJQUFpQUVVQWRnQmwKQUc0QWRBQWdBRlFBWVFCeUFHY0FaUUIwQUNJ
QU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQQpXd0FpQUVV
QWVBQmpBR3dBZFFCa0FHVUFJQUJ6QUdVQWJBQmxBR01BZEFCbEFHUUFJQUJtQUhVQWJnQmpBSFFB
YVFCdkFHNEFMZ0FpCkFGMEFJQUE5QUNBQUlnQkZBSGdBWXdCc0FIVUFaQUJsQUNBQWN3QmxBR3dB
WlFCakFIUUFaUUJrQUNBQVpnQjFBRzRBWXdCMEFHa0EKYndCdUFDNEFJZ0E3QUFvQWJBQnZBR01B
WVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVJnQnBBR3dBWlFBZwpBSE1B
YVFCNkFHVUFJZ0JkQUNBQVBRQWdBQ0lBUmdCcEFHd0FaUUFnQUhNQWFRQjZBR1VBSWdBN0FBb0Fi
QUJ2QUdNQVlRQnNBR2tBCmVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBUmdCdkFHTUFk
UUJ6QUNBQWN3QmxBR3dBWlFCakFIUUFaUUJrQUNBQVpnQjEKQUc0QVl3QjBBR2tBYndCdUFDNEFJ
Z0JkQUNBQVBRQWdBQ0lBUmdCdkFHTUFkUUJ6QUNBQWJ3QnVBQ0FBY3dCbEFHd0FaUUJqQUhRQQpa
UUJrQUNBQVpnQjFBRzRBWXdCMEFHa0Fid0J1QUM0QUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVn
QmxBR1FBVXdCMEFISUFhUUJ1CkFHY0Fjd0JiQUNJQVJnQnZBRzRBZEFCekFDSUFYUUFnQUQwQUlB
QWlBRVlBYndCdUFIUUFjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0EKYVFCNkFHVUFaQUJUQUhRQWNn
QnBBRzRBWndCekFGc0FJZ0JHQUhVQWJnQmpBSFFBYVFCdkFHNEFJZ0JkQUNBQVBRQWdBQ0lBUmdC
MQpBRzRBWXdCMEFHa0Fid0J1QUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFC
eUFHa0FiZ0JuQUhNQVd3QWlBRWNBClVnQkJBRkFBU0FCVEFDSUFYUUFnQUQwQUlBQWlBRWNBVWdC
QkFGQUFTQUJUQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmsKQUZNQWRBQnlBR2tBYmdC
bkFITUFXd0FpQUVjQWJBQnZBR0lBWVFCc0FDSUFYUUFnQUQwQUlBQWlBRWNBYkFCdkFHSUFZUUJz
QUNJQQpPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0Fp
QUVnQVpRQmhBSFlBZVFBZ0FDZ0FRZ0J2CkFIUUFkQUJ2QUcwQUlBQlZBSEFBS1FBaUFGMEFJQUE5
QUNBQUlnQklBR1VBWVFCMkFIa0FJQUFvQUVJQWJ3QjBBSFFBYndCdEFDQUEKVlFCd0FDa0FJZ0E3
QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVNBQnBB
R1FBWlFBZwpBR01BYndCdUFITUFid0JzQUdVQUxnQWlBRjBBSUFBOUFDQUFJZ0JJQUdrQVpBQmxB
Q0FBWXdCdkFHNEFjd0J2QUd3QVpRQXVBQ0lBCk93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtB
Rk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRWtBYlFCaEFHY0FaUUJ6QUNJQVhRQWcKQUQwQUlBQWlB
RWtBYlFCaEFHY0FaUUJ6QUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFH
a0FiZ0JuQUhNQQpXd0FpQUVrQWJnQnNBR2tBYmdCbEFDQUFVd0IwQUhrQWJBQmxBQ0FBUVFCMEFI
UUFjZ0JwQUdJQWRRQjBBR1VBSWdCZEFDQUFQUUFnCkFDSUFTUUJ1QUd3QWFRQnVBR1VBSUFCVEFI
UUFlUUJzQUdVQUlBQkJBSFFBZEFCeUFHa0FZZ0IxQUhRQVpRQWlBRHNBQ2dCc0FHOEEKWXdCaEFH
d0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQk1BRThBUXdCQkFFd0FJQUJUQUZR
QVR3QlNBRUVBUndCRgpBQ0lBWFFBZ0FEMEFJQUFpQUV3QVR3QkRBRUVBVEFBZ0FGTUFWQUJQQUZJ
QVFRQkhBRVVBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBCmVnQmxBR1FBVXdCMEFISUFhUUJ1QUdj
QWN3QmJBQ0lBVEFCdkFHTUFZUUJzQUNJQVhRQWdBRDBBSUFBaUFFd0Fid0JqQUdFQWJBQWkKQURz
QUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQk5BRWtB
VFFCRkFDQUFkQUI1QUhBQQpaUUFpQUYwQUlBQTlBQ0FBSWdCTkFFa0FUUUJGQUNBQWRBQjVBSEFB
WlFBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUCkFIUUFjZ0JwQUc0QVp3QnpBRnNB
SWdCTkFHVUFkQUJ5QUdrQVl3QnpBQ0lBWFFBZ0FEMEFJQUFpQUUwQVpRQjBBSElBYVFCakFITUEK
SWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFU
Z0J2QUNBQVFnQnlBR1VBWVFCcgpBSEFBYndCcEFHNEFkQUJ6QUNJQVhRQWdBRDBBSUFBaUFFNEFi
d0FnQUVJQWNnQmxBR0VBYXdCd0FHOEFhUUJ1QUhRQWN3QWlBRHNBCkNnQnNBRzhBWXdCaEFHd0Fh
UUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQk9BRzhBSUFCUUFISUFid0J3QUdVQWNn
QjAKQUdrQVpRQnpBQ0lBWFFBZ0FEMEFJQUFpQUU0QWJ3QWdBRkFBY2dCdkFIQUFaUUJ5QUhRQWFR
QmxBSE1BSWdBN0FBb0FiQUJ2QUdNQQpZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3
QmJBQ0lBVGdCdkFDQUFWZ0JoQUhJQWFRQmhBR0lBYkFCbEFITUFJZ0JkCkFDQUFQUUFnQUNJQVRn
QnZBQ0FBVmdCaEFISUFhUUJoQUdJQWJBQmxBSE1BSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdC
bEFHUUEKVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBVGdCdkFIUUFJQUJHQUc4QWRRQnVBR1FBSWdC
ZEFDQUFQUUFnQUNJQVRnQnZBSFFBSUFCRwpBRzhBZFFCdUFHUUFJZ0E3QUFvQWJBQnZBR01BWVFC
c0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVRnQnZBSFFBCklBQlFBR0VBZFFC
ekFHVUFaQUFpQUYwQUlBQTlBQ0FBSWdCT0FHOEFkQUFnQUZBQVlRQjFBSE1BWlFCa0FDSUFPd0FL
QUd3QWJ3QmoKQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFFOEFkQUJv
QUdVQWNnQWlBRjBBSUFBOUFDQUFJZ0JQQUhRQQphQUJsQUhJQUlnQTdBQW9BYkFCdkFHTUFZUUJz
QUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBVUFCaEFIVUFjd0JsCkFDQUFid0J1
QUNBQVpRQjRBR01BWlFCd0FIUUFhUUJ2QUc0QWN3QXVBQ0lBWFFBZ0FEMEFJQUFpQUZBQVlRQjFB
SE1BWlFBZ0FHOEEKYmdBZ0FHVUFlQUJqQUdVQWNBQjBBR2tBYndCdUFITUFMZ0FpQURzQUNnQnNB
RzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcApBRzRBWndCekFGc0FJZ0JRQUdFQWRRQnpB
R1VBSUFCekFHTUFjZ0JwQUhBQWRBQWdBR1VBZUFCbEFHTUFkUUIwQUdrQWJ3QnVBQzRBCklnQmRB
Q0FBUFFBZ0FDSUFVQUJoQUhVQWN3QmxBQ0FBY3dCakFISUFhUUJ3QUhRQUlBQmxBSGdBWlFCakFI
VUFkQUJwQUc4QWJnQXUKQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFH
a0FiZ0JuQUhNQVd3QWlBRkFBWVFCMUFITUFaUUJrQUNJQQpYUUFnQUQwQUlBQWlBRkFBWVFCMUFI
TUFaUUJrQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuCkFI
TUFXd0FpQUZBQVlRQjFBSE1BYVFCdUFHY0FJZ0JkQUNBQVBRQWdBQ0lBVUFCaEFIVUFjd0JwQUc0
QVp3QWlBRHNBQ2dCc0FHOEEKWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZz
QUlnQlFBSElBYndCbUFHa0FiQUJsQUNBQUpRQmtBQ0lBWFFBZwpBRDBBSUFBaUFGQUFjZ0J2QUdZ
QWFRQnNBR1VBSUFBbEFHUUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElB
CmFRQnVBR2NBY3dCYkFDSUFVQUJ5QUc4QVpnQnBBR3dBWlFCekFDSUFYUUFnQUQwQUlBQWlBRkFB
Y2dCdkFHWUFhUUJzQUdVQWN3QWkKQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFB
Y2dCcEFHNEFad0J6QUZzQUlnQlFBSElBYndCbUFHa0FiQUJwQUc0QQpad0FnQUdRQWFRQnpBR0VB
WWdCc0FHVUFaQUF1QUNBQVF3QnNBR2tBWXdCckFDQUFkQUJ2QUNBQVpRQnVBR0VBWWdCc0FHVUFM
Z0FpCkFGMEFJQUE5QUNBQUlnQlFBSElBYndCbUFHa0FiQUJwQUc0QVp3QWdBR1FBYVFCekFHRUFZ
Z0JzQUdVQVpBQXVBQ0FBUXdCc0FHa0EKWXdCckFDQUFkQUJ2QUNBQVpRQnVBR0VBWWdCc0FHVUFM
Z0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcApBRzRBWndCekFGc0FJ
Z0JRQUhJQWJ3Qm1BR2tBYkFCcEFHNEFad0FnQUdVQWJnQmhBR0lBYkFCbEFHUUFMZ0FnQUVNQWJB
QnBBR01BCmF3QWdBSFFBYndBZ0FHUUFhUUJ6QUdFQVlnQnNBR1VBTGdBaUFGMEFJQUE5QUNBQUln
QlFBSElBYndCbUFHa0FiQUJwQUc0QVp3QWcKQUdVQWJnQmhBR0lBYkFCbEFHUUFMZ0FnQUVNQWJB
QnBBR01BYXdBZ0FIUUFid0FnQUdRQWFRQnpBR0VBWWdCc0FHVUFMZ0FpQURzQQpDZ0JzQUc4QVl3
QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JRQUhJQWJ3QndBR1VBY2dC
MEFHa0FaUUJ6CkFDSUFYUUFnQUQwQUlBQWlBRkFBY2dCdkFIQUFaUUJ5QUhRQWFRQmxBSE1BSWdB
N0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUEKVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBVUFC
eUFHOEFkQUJ2QUhRQWVRQndBR1VBSWdCZEFDQUFQUUFnQUNJQVVBQnlBRzhBZEFCdgpBSFFBZVFC
d0FHVUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0Ji
QUNJQVVRQjFBR1VBCmNnQjVBQ0lBWFFBZ0FEMEFJQUFpQUZFQWRRQmxBSElBZVFBaUFEc0FDZ0Jz
QUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnAKQUc0QVp3QnpBRnNBSWdCU0FFVUFVd0JQ
QUZVQVVnQkRBRVVBVXdBaUFGMEFJQUE5QUNBQUlnQlNBRVVBVXdCUEFGVUFVZ0JEQUVVQQpVd0Fp
QURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQlNB
R1VBY1FCMUFHVUFjd0IwCkFDQUFTQUJsQUdFQVpBQmxBSElBY3dBaUFGMEFJQUE5QUNBQUlnQlNB
R1VBY1FCMUFHVUFjd0IwQUNBQVNBQmxBR0VBWkFCbEFISUEKY3dBaUFEc0FDZ0JzQUc4QVl3QmhB
R3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JTQUdVQWN3QnZBSFVBY2dCagpB
R1VBSUFCcEFHNEFkQUJsQUhJQWNBQnlBR1VBZEFCbEFHUUFJQUJoQUhNQUlBQWxBSE1BSUFCaUFI
VUFkQUFnQUhRQWNnQmhBRzRBCmN3Qm1BR1VBY2dCeUFHVUFaQUFnQUhjQWFRQjBBR2dBSUFCTkFF
a0FUUUJGQUNBQWRBQjVBSEFBWlFBZ0FDVUFjd0F1QUNJQVhRQWcKQUQwQUlBQWlBRklBWlFCekFH
OEFkUUJ5QUdNQVpRQWdBR2tBYmdCMEFHVUFjZ0J3QUhJQVpRQjBBR1VBWkFBZ0FHRUFjd0FnQUNV
QQpNUUFrQUhNQUlBQmlBSFVBZEFBZ0FIUUFjZ0JoQUc0QWN3Qm1BR1VBY2dCeUFHVUFaQUFnQUhj
QWFRQjBBR2dBSUFCTkFFa0FUUUJGCkFDQUFkQUI1QUhBQVpRQWdBQ1VBTWdBa0FITUFMZ0FpQURz
QUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEEKWndCekFGc0FJZ0JTQUdV
QWN3QnZBSFVBY2dCakFHVUFjd0FpQUYwQUlBQTlBQ0FBSWdCU0FHVUFjd0J2QUhVQWNnQmpBR1VB
Y3dBaQpBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNB
SWdCU0FHVUFjd0J3QUc4QWJnQnpBR1VBCklBQklBR1VBWVFCa0FHVUFjZ0J6QUNJQVhRQWdBRDBB
SUFBaUFGSUFaUUJ6QUhBQWJ3QnVBSE1BWlFBZ0FFZ0FaUUJoQUdRQVpRQnkKQUhNQUlnQTdBQW9B
YkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBVWdCbEFITUFk
QUJ2QUhJQQpaUUFnQUdFQWJBQnNBQ0FBWmdCMUFHNEFZd0IwQUdrQWJ3QnVBSE1BTGdBaUFGMEFJ
QUE5QUNBQUlnQlNBR1VBY3dCMEFHOEFjZ0JsCkFDQUFZUUJzQUd3QUlBQm1BSFVBYmdCakFIUUFh
UUJ2QUc0QWN3QXVBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUEKZEFCeUFHa0Fi
Z0JuQUhNQVd3QWlBRklBZFFCdUFDQUFKUUJrQUNJQVhRQWdBRDBBSUFBaUFGSUFkUUJ1QUNBQUpR
QmtBQ0lBT3dBSwpBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3
QWlBRk1BUlFCVEFGTUFTUUJQQUU0QUlBQlRBRlFBClR3QlNBRUVBUndCRkFDSUFYUUFnQUQwQUlB
QWlBRk1BUlFCVEFGTUFTUUJQQUU0QUlBQlRBRlFBVHdCU0FFRUFSd0JGQUNJQU93QUsKQUd3QWJ3
QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZNQVl3QnZBSEFBWlFB
Z0FGWUFZUUJ5QUdrQQpZUUJpQUd3QVpRQnpBQ0lBWFFBZ0FEMEFJQUFpQUZNQVl3QnZBSEFBWlFB
Z0FGWUFZUUJ5QUdrQVlRQmlBR3dBWlFCekFDSUFPd0FLCkFHd0Fid0JqQUdFQWJBQnBBSG9BWlFC
a0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFGTUFZd0J5QUdrQWNBQjBBSE1BSWdCZEFDQUEKUFFB
Z0FDSUFVd0JqQUhJQWFRQndBSFFBY3dBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJU
QUhRQWNnQnBBRzRBWndCegpBRnNBSWdCVEFHVUFZUUJ5QUdNQWFBQWdBQ1VBY3dBaUFGMEFJQUE5
QUNBQUlnQlRBR1VBWVFCeUFHTUFhQUFnQUNVQWN3QWlBRHNBCkNnQnNBRzhBWXdCaEFHd0FhUUI2
QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQlRBR1VBYkFCbEFHTUFkQUFnQUdFQWJnQWcK
QUdVQWJBQmxBRzBBWlFCdUFIUUFJQUJwQUc0QUlBQjBBR2dBWlFBZ0FIQUFZUUJuQUdVQUlBQjBB
RzhBSUFCcEFHNEFjd0J3QUdVQQpZd0IwQUNBQWFRQjBBQzRBSWdCZEFDQUFQUUFnQUNJQVV3QmxB
R3dBWlFCakFIUUFJQUJoQUc0QUlBQmxBR3dBWlFCdEFHVUFiZ0IwCkFDQUFhUUJ1QUNBQWRBQm9B
R1VBSUFCd0FHRUFad0JsQUNBQWRBQnZBQ0FBYVFCdUFITUFjQUJsQUdNQWRBQWdBR2tBZEFBdUFD
SUEKT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFG
TUFaUUJzQUdZQUlnQmRBQ0FBUFFBZwpBQ0lBVXdCbEFHd0FaZ0FpQURzQUNnQnNBRzhBWXdCaEFH
d0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQlRBR2dBCmJ3QjNBQ0FBWVFCaUFI
TUFid0JzQUhVQWRBQmxBQ0FBZEFCdkFIUUFZUUJzQUNBQVlRQnVBR1FBSUFCekFHVUFiQUJtQUNB
QWRBQnAKQUcwQVpRQnpBQzRBSWdCZEFDQUFQUUFnQUNJQVV3Qm9BRzhBZHdBZ0FHRUFZZ0J6QUc4
QWJBQjFBSFFBWlFBZ0FIUUFid0IwQUdFQQpiQUFnQUdFQWJnQmtBQ0FBY3dCbEFHd0FaZ0FnQUhR
QWFRQnRBR1VBY3dBdUFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrCkFGTUFkQUJ5QUdr
QWJnQm5BSE1BV3dBaUFGTUFhQUJ2QUhjQUlBQmpBRzhBYmdCekFHOEFiQUJsQUM0QUlnQmRBQ0FB
UFFBZ0FDSUEKVXdCb0FHOEFkd0FnQUdNQWJ3QnVBSE1BYndCc0FHVUFMZ0FpQURzQUNnQnNBRzhB
WXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcApBRzRBWndCekFGc0FJZ0JUQUdnQWJ3QjNBQ0FB
YVFCdUFHZ0FaUUJ5QUdrQWRBQmxBR1FBSWdCZEFDQUFQUUFnQUNJQVV3Qm9BRzhBCmR3QWdBR2tB
YmdCb0FHVUFjZ0JwQUhRQVpRQmtBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFk
QUJ5QUdrQWJnQm4KQUhNQVd3QWlBRk1BYUFCdkFIY0FJQUIwQUdnQVpRQWdBRzRBWlFCNEFIUUFJ
QUJ6QUdNQWNnQnBBSEFBZEFBZ0FISUFaUUJ6QUc4QQpkUUJ5QUdNQVpRQXVBQ0lBWFFBZ0FEMEFJ
QUFpQUZNQWFBQnZBSGNBSUFCMEFHZ0FaUUFnQUc0QVpRQjRBSFFBSUFCekFHTUFjZ0JwCkFIQUFk
QUFnQUhJQVpRQnpBRzhBZFFCeUFHTUFaUUF1QUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpR
QmtBRk1BZEFCeUFHa0EKYmdCbkFITUFXd0FpQUZNQWFBQnZBSGNBSUFCMEFHZ0FaUUFnQUhBQWNn
QmxBSFlBYVFCdkFIVUFjd0FnQUhNQVl3QnlBR2tBY0FCMApBQ0FBY2dCbEFITUFid0IxQUhJQVl3
QmxBQzRBSWdCZEFDQUFQUUFnQUNJQVV3Qm9BRzhBZHdBZ0FIUUFhQUJsQUNBQWNBQnlBR1VBCmRn
QnBBRzhBZFFCekFDQUFjd0JqQUhJQWFRQndBSFFBSUFCeUFHVUFjd0J2QUhVQWNnQmpBR1VBTGdB
aUFEc0FDZ0JzQUc4QVl3QmgKQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdC
VEFHZ0Fid0IzQUNBQWRBQnZBSFFBWVFCc0FDQUFZUUJ1QUdRQQpJQUJ6QUdVQWJBQm1BQ0FBZEFC
cEFHMEFaUUJ6QUNBQVlRQnpBQ0FBY0FCbEFISUFZd0JsQUc0QWRBQmhBR2NBWlFCekFDNEFJZ0Jk
CkFDQUFQUUFnQUNJQVV3Qm9BRzhBZHdBZ0FIUUFid0IwQUdFQWJBQWdBR0VBYmdCa0FDQUFjd0Js
QUd3QVpnQWdBSFFBYVFCdEFHVUEKY3dBZ0FHRUFjd0FnQUhBQVpRQnlBR01BWlFCdUFIUUFZUUJu
QUdVQWN3QXVBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCawpBRk1BZEFCeUFHa0FiZ0Ju
QUhNQVd3QWlBRk1BYVFCNkFHVUFJZ0JkQUNBQVBRQWdBQ0lBVXdCcEFIb0FaUUFpQURzQUNnQnNB
RzhBCll3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JUQUc4QWNnQjBB
Q0FBWWdCNUFDQUFSQUIxQUhJQVlRQjAKQUdrQWJ3QnVBQ0lBWFFBZ0FEMEFJQUFpQUZNQWJ3QnlB
SFFBSUFCaUFIa0FJQUJFQUhVQWNnQmhBSFFBYVFCdkFHNEFJZ0E3QUFvQQpiQUJ2QUdNQVlRQnNB
R2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFVd0J2QUhJQWRBQWdBR0lBZVFBZ0FF
VUFiZ0JrCkFDQUFWQUJwQUcwQVpRQWlBRjBBSUFBOUFDQUFJZ0JUQUc4QWNnQjBBQ0FBWWdCNUFD
QUFSUUJ1QUdRQUlBQlVBR2tBYlFCbEFDSUEKT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FG
TUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFGTUFid0J5QUhRQUlBQmlBSGtBSUFCTQpBR0VBZEFCbEFH
NEFZd0I1QUNJQVhRQWdBRDBBSUFBaUFGTUFid0J5QUhRQUlBQmlBSGtBSUFCTUFHRUFkQUJsQUc0
QVl3QjVBQ0lBCk93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhN
QVd3QWlBRk1BYndCeUFIUUFJQUJpQUhrQUlBQlMKQUdVQWN3QndBRzhBYmdCekFHVUFJQUJVQUdr
QWJRQmxBQ0lBWFFBZ0FEMEFJQUFpQUZNQWJ3QnlBSFFBSUFCaUFIa0FJQUJTQUdVQQpjd0J3QUc4
QWJnQnpBR1VBSUFCVUFHa0FiUUJsQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1B
ZEFCeUFHa0FiZ0JuCkFITUFXd0FpQUZNQWJ3QnlBSFFBSUFCaUFIa0FJQUJUQUdrQWVnQmxBQ0lB
WFFBZ0FEMEFJQUFpQUZNQWJ3QnlBSFFBSUFCaUFIa0EKSUFCVEFHa0FlZ0JsQUNJQU93QUtBR3dB
YndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRk1BYndCeQpBSFFB
SUFCaUFIa0FJQUJUQUhRQVlRQnlBSFFBSUFCVUFHa0FiUUJsQUNJQVhRQWdBRDBBSUFBaUFGTUFi
d0J5QUhRQUlBQmlBSGtBCklBQlRBSFFBWVFCeUFIUUFJQUJVQUdrQWJRQmxBQ0lBT3dBS0FHd0Fi
d0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm4KQUhNQVd3QWlBRk1BYndCMUFISUFZ
d0JsQUNJQVhRQWdBRDBBSUFBaUFGTUFid0IxQUhJQVl3QmxBQ0lBT3dBS0FHd0Fid0JqQUdFQQpi
QUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRk1BZEFCaEFISUFkQUFnQUhBQWNn
QnZBR1lBYVFCc0FHa0FiZ0JuCkFDNEFJZ0JkQUNBQVBRQWdBQ0lBVXdCMEFHRUFjZ0IwQUNBQWNB
QnlBRzhBWmdCcEFHd0FhUUJ1QUdjQUxnQWlBRHNBQ2dCc0FHOEEKWXdCaEFHd0FhUUI2QUdVQVpB
QlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQlRBSFFBWlFCd0FDQUFhUUJ1QUhRQWJ3QWdBRzRBWlFC
NApBSFFBSUFCbUFIVUFiZ0JqQUhRQWFRQnZBRzRBSUFCakFHRUFiQUJzQUM0QUlnQmRBQ0FBUFFB
Z0FDSUFVd0IwQUdVQWNBQWdBR2tBCmJnQjBBRzhBSUFCdUFHVUFlQUIwQUNBQVpnQjFBRzRBWXdC
MEFHa0Fid0J1QUNBQVl3QmhBR3dBYkFBdUFDSUFPd0FLQUd3QWJ3QmoKQUdFQWJBQnBBSG9BWlFC
a0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFGTUFkQUJsQUhBQUlBQnZBSFVBZEFBZ0FHOEFaZ0Fn
QUdNQQpkUUJ5QUhJQVpRQnVBSFFBSUFCbUFIVUFiZ0JqQUhRQWFRQnZBRzRBTGdBaUFGMEFJQUE5
QUNBQUlnQlRBSFFBWlFCd0FDQUFid0IxCkFIUUFJQUJ2QUdZQUlBQmpBSFVBY2dCeUFHVUFiZ0Iw
QUNBQVpnQjFBRzRBWXdCMEFHa0Fid0J1QUM0QUlnQTdBQW9BYkFCdkFHTUEKWVFCc0FHa0FlZ0Js
QUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVV3QjBBR1VBY0FBZ0FHOEFkZ0JsQUhJQUlBQnVB
R1VBZUFCMApBQ0FBWmdCMUFHNEFZd0IwQUdrQWJ3QnVBQ0FBWXdCaEFHd0FiQUF1QUNJQVhRQWdB
RDBBSUFBaUFGTUFkQUJsQUhBQUlBQnZBSFlBClpRQnlBQ0FBYmdCbEFIZ0FkQUFnQUdZQWRRQnVB
R01BZEFCcEFHOEFiZ0FnQUdNQVlRQnNBR3dBTGdBaUFEc0FDZ0JzQUc4QVl3QmgKQUd3QWFRQjZB
R1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCVEFIUUFaUUJ3QUhBQWFRQnVBR2NBSWdCZEFD
QUFQUUFnQUNJQQpVd0IwQUdVQWNBQndBR2tBYmdCbkFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFI
b0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpCkFGTUFkQUJ2QUhBQUlBQndBSElBYndCbUFH
a0FiQUJwQUc0QVp3QXVBQ0lBWFFBZ0FEMEFJQUFpQUZNQWRBQnZBSEFBSUFCd0FISUEKYndCbUFH
a0FiQUJwQUc0QVp3QXVBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdr
QWJnQm5BSE1BV3dBaQpBRk1BZEFCNUFHd0FaUUJ6QUNJQVhRQWdBRDBBSUFBaUFGTUFkQUI1QUd3
QVpRQnpBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BClpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhN
QVd3QWlBRk1BZEFCNUFHd0FaUUJ6QUdnQVpRQmxBSFFBY3dBaUFGMEFJQUE5QUNBQUlnQlQKQUhR
QWVRQnNBR1VBY3dCb0FHVUFaUUIwQUhNQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FB
VXdCMEFISUFhUUJ1QUdjQQpjd0JiQUNJQVZBQm9BR1VBSUFBY0lDVUFjd0FkSUZ3QWJnQjBBR0VB
WWdCc0FHVUFJQUJwQUhNQUlBQmxBRzBBY0FCMEFIa0FMZ0FpCkFGMEFJQUE5QUNBQUlnQlVBR2dB
WlFBZ0FCd2dKUUJ6QUIwZ1hBQnVBSFFBWVFCaUFHd0FaUUFnQUdrQWN3QWdBR1VBYlFCd0FIUUEK
ZVFBdUFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFX
d0FpQUZRQWFRQnRBR1VBSWdCZApBQ0FBUFFBZ0FDSUFWQUJwQUcwQVpRQWlBRHNBQ2dCc0FHOEFZ
d0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBCklnQlVBRzhBZEFCaEFHd0FJ
Z0JkQUNBQVBRQWdBQ0lBVkFCdkFIUUFZUUJzQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpR
QmsKQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZRQWNnQmxBR1VBSUFBb0FGUUFid0J3QUNBQVJB
QnZBSGNBYmdBcEFDSUFYUUFnQUQwQQpJQUFpQUZRQWNnQmxBR1VBSUFBb0FGUUFid0J3QUNBQVJB
QnZBSGNBYmdBcEFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrCkFGTUFkQUJ5QUdrQWJn
Qm5BSE1BV3dBaUFGVUFiZ0JrQUc4QVl3QnJBQ0FBYVFCdUFIUUFid0FnQUhNQVpRQndBR0VBY2dC
aEFIUUEKWlFBZ0FIY0FhUUJ1QUdRQWJ3QjNBQzRBSWdCZEFDQUFQUUFnQUNJQVZRQnVBR1FBYndC
akFHc0FJQUJwQUc0QWRBQnZBQ0FBY3dCbApBSEFBWVFCeUFHRUFkQUJsQUNBQWR3QnBBRzRBWkFC
dkFIY0FMZ0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBCmNnQnBBRzRBWndC
ekFGc0FJZ0JWQUhNQVpRQWdBR3dBWVFCeUFHY0FaUUFnQUhJQVpRQnpBRzhBZFFCeUFHTUFaUUFn
QUhJQWJ3QjMKQUhNQUxnQWlBRjBBSUFBOUFDQUFJZ0JWQUhNQVpRQWdBR3dBWVFCeUFHY0FaUUFn
QUhJQVpRQnpBRzhBZFFCeUFHTUFaUUFnQUhJQQpid0IzQUhNQUxnQWlBRHNBQ2dCc0FHOEFZd0Jo
QUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCVkFITUFaUUFnCkFITUFiUUJo
QUd3QWJBQWdBSElBWlFCekFHOEFkUUJ5QUdNQVpRQWdBSElBYndCM0FITUFMZ0FpQUYwQUlBQTlB
Q0FBSWdCVkFITUEKWlFBZ0FITUFiUUJoQUd3QWJBQWdBSElBWlFCekFHOEFkUUJ5QUdNQVpRQWdB
SElBYndCM0FITUFMZ0FpQURzQUNnQnNBRzhBWXdCaApBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBB
RzRBWndCekFGc0FJZ0JYQUdrQWRBQm9BQ0FBUWdCc0FHOEFZd0JyQUNJQVhRQWdBRDBBCklBQWlB
RmNBYVFCMEFHZ0FJQUJDQUd3QWJ3QmpBR3NBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFH
UUFVd0IwQUhJQWFRQnUKQUdjQWN3QmJBQ0lBV0FCSUFGSUFJZ0JkQUNBQVBRQWdBQ0lBV0FCSUFG
SUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQQpVd0IwQUhJQWFRQnVBR2NBY3dCYkFD
SUFXUUJ2QUhVQUlBQmpBRzhBZFFCc0FHUUFJQUJ6QUdFQWRnQmxBQ0FBWWdCaEFHNEFaQUIzCkFH
a0FaQUIwQUdnQUlBQmlBSGtBSUFCb0FHRUFkZ0JwQUc0QVp3QWdBSGtBYndCMUFISUFJQUIzQUdV
QVlnQWdBSE1BWlFCeUFIWUEKWlFCeUFDQUFZd0J2QUcwQWNBQnlBR1VBY3dCekFDQUFkQUJvQUdr
QWN3QWdBSFFBY2dCaEFHNEFjd0JtQUdVQWNnQWdBSGNBYVFCMApBR2dBSUFCbkFIb0FhUUJ3QUNB
QWJ3QnlBQ0FBZWdCc0FHa0FZZ0F1QUNJQVhRQWdBRDBBSUFBaUFGa0Fid0IxQUNBQVl3QnZBSFVB
CmJBQmtBQ0FBY3dCaEFIWUFaUUFnQUdJQVlRQnVBR1FBZHdCcEFHUUFkQUJvQUNBQVlnQjVBQ0FB
YUFCaEFIWUFhUUJ1QUdjQUlBQjUKQUc4QWRRQnlBQ0FBZHdCbEFHSUFJQUJ6QUdVQWNnQjJBR1VB
Y2dBZ0FHTUFid0J0QUhBQWNnQmxBSE1BY3dBZ0FIUUFhQUJwQUhNQQpJQUIwQUhJQVlRQnVBSE1B
WmdCbEFISUFJQUIzQUdrQWRBQm9BQ0FBWndCNkFHa0FjQUFnQUc4QWNnQWdBSG9BYkFCcEFHSUFM
Z0FpCkFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJ
Z0JaQUc4QWRRQWdBRzRBWlFCbEFHUUEKSUFCMEFHOEFJQUJsQUc0QVlRQmlBR3dBWlFBZ0FHUUFa
UUJpQUhVQVp3Qm5BR2tBYmdCbkFDQUFZZ0JsQUdZQWJ3QnlBR1VBSUFCNQpBRzhBZFFBZ0FHTUFZ
UUJ1QUNBQWRRQnpBR1VBSUFCMEFHZ0FaUUFnQUZNQVl3QnlBR2tBY0FCMEFITUFJQUJ3QUdFQWJn
QmxBR3dBCkxnQWlBRjBBSUFBOUFDQUFJZ0JaQUc4QWRRQWdBRzRBWlFCbEFHUUFJQUIwQUc4QUlB
QmxBRzRBWVFCaUFHd0FaUUFnQUdRQVpRQmkKQUhVQVp3Qm5BR2tBYmdCbkFDQUFZZ0JsQUdZQWJ3
QnlBR1VBSUFCNUFHOEFkUUFnQUdNQVlRQnVBQ0FBZFFCekFHVUFJQUIwQUdnQQpaUUFnQUZNQVl3
QnlBR2tBY0FCMEFITUFJQUJ3QUdFQWJnQmxBR3dBTGdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFC
NkFHVUFaQUJUCkFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCWkFHOEFkUUFnQUc0QVpRQmxBR1FBSUFC
MEFHOEFJQUJsQUc0QVlRQmlBR3dBWlFBZ0FIQUEKY2dCdkFHWUFhUUJzQUdrQWJnQm5BQ0FBWWdC
bEFHWUFid0J5QUdVQUlBQjVBRzhBZFFBZ0FHTUFZUUJ1QUNBQWRRQnpBR1VBSUFCMApBR2dBWlFB
Z0FGQUFjZ0J2QUdZQWFRQnNBR1VBY3dBZ0FIQUFZUUJ1QUdVQWJBQXVBQ0lBWFFBZ0FEMEFJQUFp
QUZrQWJ3QjFBQ0FBCmJnQmxBR1VBWkFBZ0FIUUFid0FnQUdVQWJnQmhBR0lBYkFCbEFDQUFjQUJ5
QUc4QVpnQnBBR3dBYVFCdUFHY0FJQUJpQUdVQVpnQnYKQUhJQVpRQWdBSGtBYndCMUFDQUFZd0Jo
QUc0QUlBQjFBSE1BWlFBZ0FIUUFhQUJsQUNBQVVBQnlBRzhBWmdCcEFHd0FaUUJ6QUNBQQpjQUJo
QUc0QVpRQnNBQzRBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVB
R2NBY3dCYkFDSUFZZ0J2CkFISUFaQUJsQUhJQUlnQmRBQ0FBUFFBZ0FDSUFZZ0J2QUhJQVpBQmxB
SElBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUEKVXdCMEFISUFhUUJ1QUdjQWN3QmJB
Q0lBWXdCdkFHNEFkQUJsQUc0QWRBQWlBRjBBSUFBOUFDQUFJZ0JqQUc4QWJnQjBBR1VBYmdCMApB
Q0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFH
UUFid0JqQUhVQWJRQmxBRzRBCmRBQWlBRjBBSUFBOUFDQUFJZ0JrQUc4QVl3QjFBRzBBWlFCdUFI
UUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjAKQUhJQWFRQnVBR2NBY3dCYkFD
SUFaUUJzQUdVQWJRQmxBRzRBZEFBWklITUFJQUFjSUNVQWN3QWRJQ0FBWVFCMEFIUUFjZ0JwQUdJ
QQpkUUIwQUdVQUlnQmRBQ0FBUFFBZ0FDSUFaUUJzQUdVQWJRQmxBRzRBZEFBWklITUFJQUFjSUNV
QWN3QWRJQ0FBWVFCMEFIUUFjZ0JwCkFHSUFkUUIwQUdVQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdr
QWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBWmdCdkFHNEEKZEFBaUFGMEFJQUE5QUNB
QUlnQm1BRzhBYmdCMEFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tB
YmdCbgpBSE1BV3dBaUFHa0FiUUJoQUdjQVpRQWlBRjBBSUFBOUFDQUFJZ0JwQUcwQVlRQm5BR1VB
SWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBCmVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lB
YVFCdUFHd0FhUUJ1QUdVQUlBQnpBSFFBZVFCc0FHVUFjd0JvQUdVQVpRQjAKQUNJQVhRQWdBRDBB
SUFBaUFHa0FiZ0JzQUdrQWJnQmxBQ0FBY3dCMEFIa0FiQUJsQUhNQWFBQmxBR1VBZEFBaUFEc0FD
Z0JzQUc4QQpZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCc0FHa0Fi
Z0JsQUNBQUpRQmtBQ0lBWFFBZ0FEMEFJQUFpCkFHd0FhUUJ1QUdVQUlBQWxBR1FBSWdBN0FBb0Fi
QUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUEKYlFCaEFISUFa
d0JwQUc0QUlnQmRBQ0FBUFFBZ0FDSUFiUUJoQUhJQVp3QnBBRzRBSWdBN0FBb0FiQUJ2QUdNQVlR
QnNBR2tBZWdCbApBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBYndCMEFHZ0FaUUJ5QUNJQVhR
QWdBRDBBSUFBaUFHOEFkQUJvQUdVQWNnQWlBRHNBCkNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpB
QlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQndBR0VBWkFCa0FHa0FiZ0JuQUNJQVhRQWcKQUQwQUlB
QWlBSEFBWVFCa0FHUUFhUUJ1QUdjQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdC
MEFISUFhUUJ1QUdjQQpjd0JiQUNJQWNBQnZBSE1BYVFCMEFHa0Fid0J1QUNJQVhRQWdBRDBBSUFB
aUFIQUFid0J6QUdrQWRBQnBBRzhBYmdBaUFEc0FDZ0JzCkFHOEFZd0JoQUd3QWFRQjZBR1VBWkFC
VEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCekFHTUFjZ0JwQUhBQWRBQWlBRjBBSUFBOUFDQUEKSWdC
ekFHTUFjZ0JwQUhBQWRBQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0Jw
QUc0QVp3QnpBRnNBSWdCegpBSFFBZVFCc0FHVUFjd0JvQUdVQVpRQjBBQ0lBWFFBZ0FEMEFJQUFp
QUhNQWRBQjVBR3dBWlFCekFHZ0FaUUJsQUhRQUlnQTdBQW9BCmJBQnZBR01BWVFCc0FHa0FlZ0Js
QUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQWRRQnpBR1VBY2dBZ0FHRUFad0JsQUc0QWRBQWcK
QUhNQWRBQjVBR3dBWlFCekFHZ0FaUUJsQUhRQUlnQmRBQ0FBUFFBZ0FDSUFkUUJ6QUdVQWNnQWdB
R0VBWndCbEFHNEFkQUFnQUhNQQpkQUI1QUd3QVpRQnpBR2dBWlFCbEFIUUFJZ0E3QUFvQWJBQnZB
R01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiCkFDSUFkUUJ6QUdVQWNnQWdB
SE1BZEFCNUFHd0FaUUJ6QUdnQVpRQmxBSFFBSWdCZEFDQUFQUUFnQUNJQWRRQnpBR1VBY2dBZ0FI
TUEKZEFCNUFHd0FaUUJ6QUdnQVpRQmxBSFFBSWdBN0FBb0EKCg==
</data>
<flag name="review"
          id="14848"
          type_id="1"
          status="-"
          setter="kmccullough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29716</attachid>
            <date>2009-04-23 15:03:04 -0700</date>
            <delta_ts>2009-04-23 19:30:18 -0700</delta_ts>
            <desc>style/comment changes</desc>
            <filename>patch_take_2.patch</filename>
            <type>text/plain</type>
            <size>137039</size>
            <attacher name="Francisco Tolmasky">tolmasky</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyNzc1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMDktMDQtMjMgIEZyYW5jaXNj
byBUb2xtYXNreSAgPGZyYW5jaXNjb0AyODBub3J0aC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQlVHIDI0NjA0OiBXZWJLaXQgcHJvZmlsZXIg
cmVwb3J0cyBpbmNvcnJlY3QgdG90YWwgdGltZXMKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDYwND4KKworICAgICAgICBNYWRlIGl0IHNvIHRoYXQg
bW9zdCBvZiB0aGUgcHJvZmlsZXIgZnVuY3Rpb25zIG5vdyBtYXRjaCB0aGUgYmVoYXZpb3Igb2Yg
U2hhcmsuIE1vc3Qgbm90YWJseSwgaW4gdGhlIAorICAgICAgICBoZWF2eSB2aWV3LCBjaGlsZCBu
b2RlcyBub3cgcmVwcmVzZW50IHRoZSBzdGF0aXN0aWNzIG9mIHRoZSByb290IG5vZGUuIEVhY2gg
cm9vdCBub2RlIG9mIGhlYXZ5IHZpZXcgCisgICAgICAgIGRpc3BsYXlzIGZsYXR0ZW5lZCBzdGF0
aXN0aWNzIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdGhhdCByYW4gZHVyaW5nIHRoZSBwcm9m
aWxlLCBhbmQgZWFjaCBjaGlsZCAKKyAgICAgICAgb2YgdGhlc2Ugcm9vdCBub2RlcyByZXByZXNl
bnRzIGEgY2FsbHBhdGggdGhhdCBsZWFkIHRvIGl0LiBUaHVzLCB0aGUgc3RhdGlzdGljcyBmb3Ig
ZWFjaCBvZiB0aGVzZSBjaGlsZCAKKyAgICAgICAgbm9kZXMgc2hvdWxkIHNob3cgaG93IG11Y2gg
b2YgdGhlIHJvb3Qgbm9kZXMgdmFsdWVzIGNhbWUgZnJvbSBpdC4gRm9yIGV4YW1wbGUsIGlmIHlv
dSBoYWQgdGhlIGZvbGxvd2luZyB0byAKKyAgICAgICAgc3RhY2tzIHRha2UgcGxhY2UgZHVyaW5n
IHRoZSBwcm9maWxlOgorICAgICAgICAKKyAgICAgICAgQSAtPmNhbGxzIDEgdGltZXMtPiBCIC0+
Y2FsbHMgMiB0aW1lcy0+IEMKKyAgICAgICAgRCAtPmNhbGxzIDQgdGltZXMtPiBDCisgICAgICAg
IAorICAgICAgICBUaGUgdHJlZSBmb3IgdGhlIEMgcm9vdCBub2RlIHdvdWxkIGxvb2sgbGlrZSB0
aGlzOgorICAgICAgICAKKyAgICAgICAgQyAtPiBCIC0+IEEKKyAgICAgICAgICAtPiBECisgICAg
ICAgICAgCisgICAgICAgIFRoZSBudW1iZXIgb2YgY2FsbHMgdmFsdWVzIHdvdWxkIGxvb2sgbGlr
ZSB0aGlzOgorICAgICAgICAKKyAgICAgICAgQyAoNikgLT4gQiAoMikgLT4gQSgyKQorICAgICAg
ICAgICAgICAtPiBEICg0KQorICAgICAgICAKKyAgICAgICAgV2hhdCB0aGlzIG1lYW5zIGlzIHRo
YXQgIjIgb2YgdGhlIHRvdGFsIDYgQyBjYWxscyBjYW1lIGZyb20gQiIsICIyIG9mIHRoZSB0b3Rh
bCBDIGNhbGxzIGNhbWUgZnJvbSBBIiwgYW5kIAorICAgICAgICAiNCBvZiB0aGUgdG90YWwgQyBj
YWxscyBjYW1lIGZyb20gRCIuICBOb3RpY2UgdGhhdCB0aGUgIkEgLT5jYWxscyAyIHRpbWUtPiIg
aXMgY29tcGxldGVseSBpZ25vcmVkLiBUaGlzIGJlY29tZXMgCisgICAgICAgIHBhcnRpY3VsYXJs
eSB0cmlja3kgZHVyaW5nIHJlY3Vyc2l2ZSBjYWxscywgYmVjYXVzZSBlYWNoIGNoaWxkIG5vdGUg
Y2FuIHJlcHJlc2VudCBtdWx0aXBsZSBwb3NzaWJsZSBwYXRocy4gVGhpcyAKKyAgICAgICAgaXMg
dGhlIHJlYXNvbiB0aGF0IHdlIHdvdWxkIGdldCB0aGluZ3MgbGlrZSA0MDAwMCUgcHJldmlvdXNs
eSB3aXRoIHJlY3Vyc2lvbi4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHByb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OkNhbGxJZGVudGlmaWVy
OjpIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6Q2FsbElkZW50aWZpZXI6Okhhc2g6OmVxdWFs
KToKKyAgICAgICAgKEpTQzo6Q2FsbElkZW50aWZpZXI6Omhhc2gpOgorICAgICAgICAoV1RGOjop
OgorICAgICAgICAqIHByb2ZpbGVyL0hlYXZ5UHJvZmlsZS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogcHJvZmlsZXIvSGVhdnlQcm9maWxlLmg6IFJlbW92ZWQuCisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZS5jcHA6IE5vIG1vcmUgbmVlZCBmb3IgVHJlZVByb2ZpbGUvSGVhdnlQcm9maWxlCisg
ICAgICAgIChKU0M6OlByb2ZpbGU6OmNyZWF0ZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmls
ZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlTm9kZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1RyZWVQcm9maWxlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwcm9maWxlci9UcmVlUHJvZmlsZS5oOiBSZW1vdmVkLgorCiAy
MDA5LTA0LTIyICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVy
LXN0YW1wZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwCShyZXZpc2lvbiA0Mjc0NikKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBAIF9fWk4zSlNDMTFKU0ltbWVk
aWF0ZTEybm9uSW5saW5lTmFORXYKIF9fWk4zSlNDMTFKU0ltbWVkaWF0ZTh0b09iamVjdEVOU18x
MEpTVmFsdWVQdHJFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzExSlNJbW1lZGlhdGU4dG9TdHJp
bmdFTlNfMTBKU1ZhbHVlUHRyRQogX19aTjNKU0MxMUpTSW1tZWRpYXRlOXByb3RvdHlwZUVOU18x
MEpTVmFsdWVQdHJFUE5TXzlFeGVjU3RhdGVFCi1fX1pOM0pTQzExUHJvZmlsZU5vZGU0c29ydEVQ
RmJSS04zV1RGNlJlZlB0cklTMF9FRVM1X0UKIF9fWk4zSlNDMTFjaGVja1N5bnRheEVQTlNfOUV4
ZWNTdGF0ZUVSS05TXzEwU291cmNlQ29kZUUKIF9fWk4zSlNDMTJEYXRlSW5zdGFuY2U0aW5mb0UK
IF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMENsaWVudERhdGFEMkV2CkBAIC0yMTIsNiArMjExLDcg
QEAgX19aTjNKU0M3UHJvZmlsZTEwcmVzdG9yZUFsbEV2CiBfX1pOM0pTQzdQcm9maWxlNWZvY3Vz
RVBLTlNfMTFQcm9maWxlTm9kZUUKIF9fWk4zSlNDN1Byb2ZpbGU3ZXhjbHVkZUVQS05TXzExUHJv
ZmlsZU5vZGVFCiBfX1pOM0pTQzdQcm9maWxlN2ZvckVhY2hFTU5TXzExUHJvZmlsZU5vZGVFRnZ2
RQorX19aTjNKU0M3VVN0cmluZzNSZXAxMWNvbXB1dGVIYXNoRVBLY2kKIF9fWk4zSlNDN1VTdHJp
bmczUmVwMTFjb21wdXRlSGFzaEVQS3RpCiBfX1pOM0pTQzdVU3RyaW5nM1JlcDE0bnVsbEJhc2VT
dHJpbmdFCiBfX1pOM0pTQzdVU3RyaW5nM1JlcDdkZXN0cm95RXYKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNDI3NDYpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTQgKzE1NCwxMCBA
QAogCQk5NTc0MkY2NTBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTc0MkY2MzBERDExRjVBMDAwOTE3
RkIgLyogUHJvZmlsZS5jcHAgKi87IH07CiAJCTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBQ
cm9maWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NUFCODMyRTBEQTQyQ0FEMDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwICovOyB9OwogCQk5NUFC
ODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBQjgzNTQwREE0M0I0NDAwQkM4M0YzIC8q
IFByb2ZpbGVOb2RlLmNwcCAqLzsgfTsKLQkJOTVDRDQxQjMwRTFCRjY1NjAwODUzNThFIC8qIFRy
ZWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk1Q0Q0MUIxMEUxQkY2NTYwMDg1MzU4RSAvKiBUcmVlUHJvZmlsZS5jcHAgKi87IH07Ci0J
CTk1Q0Q0MUI0MEUxQkY2NTYwMDg1MzU4RSAvKiBUcmVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVDRDQxQjIwRTFCRjY1NjAwODUzNThF
IC8qIFRyZWVQcm9maWxlLmggKi87IH07CiAJCTk1Q0Q0NTc2MEUxQzRGREQwMDg1MzU4RSAvKiBQ
cm9maWxlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1Q0Q0NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNw
cCAqLzsgfTsKIAkJOTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1Q0Q0NTc1
MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJOTVFM0JDMDUwRTFBRTY4MjAwQjJEMUMxIC8qIENhbGxJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NUUzQkMwNDBFMUFFNjgyMDBCMkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NUY2RTY5NTBFNUI1Rjk3
MDA5MUU4NjAgLyogSlNQcm9maWxlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJv
ZmlsZXJQcml2YXRlLmNwcCAqLzsgfTsKLQkJOTVGREZBMTQwRTIyOTk4RjAwMDZGQjAwIC8qIEhl
YXZ5UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NUZERkExMzBFMjI5OThGMDAwNkZCMDAgLyogSGVhdnlQcm9maWxlLmNwcCAqLzsgfTsK
LQkJOTVGREZBMTYwRTIyOTk5ODAwMDZGQjAwIC8qIEhlYXZ5UHJvZmlsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVGREZBMTUwRTIyOTk5ODAwMDZG
QjAwIC8qIEhlYXZ5UHJvZmlsZS5oICovOyB9OwogCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcg
LyogTGFiZWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTYwMDk3QTUwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAqLzsgfTsKIAkJ
OTY4OENCMTUwRUQxMkI0RTAwMUQ2NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTMwRUQxMkI0RTAwMUQ2
NDlGIC8qIEFzc2VtYmxlckJ1ZmZlci5oICovOyB9OwogCQk5Njg4Q0IxNjBFRDEyQjRFMDAxRDY0
OUYgLyogWDg2QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNzZW1ibGVyLmggKi87
IH07CkBAIC02NzIsMTMgKzY2OCw5IEBACiAJCTk1QUI4MzU0MERBNDNCNDQwMEJDODNGMyAvKiBQ
cm9maWxlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQcm9m
aWxlTm9kZS5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlTm9kZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1QUI4MzU1MERBNDNCNDQwMEJDODNGMyAvKiBQcm9maWxlTm9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlTm9kZS5oOyBwYXRo
ID0gcHJvZmlsZXIvUHJvZmlsZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTVDMThEM0UwQzkwRTdFRjAwRTcyRjczIC8qIEpTUmV0YWluUHRyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmV0YWluUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTk1Q0Q0MUIxMEUxQkY2NTYwMDg1MzU4RSAvKiBUcmVlUHJvZmlsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUcmVlUHJvZmlsZS5jcHA7IHBhdGggPSBw
cm9maWxlci9UcmVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1
Q0Q0MUIyMEUxQkY2NTYwMDg1MzU4RSAvKiBUcmVlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBUcmVlUHJvZmlsZS5oOyBwYXRoID0gcHJvZmlsZXIvVHJlZVByb2Zp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVDRDQ1NzQwRTFDNEZERDAwODUz
NThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUHJvZmlsZUdlbmVyYXRvci5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlR2Vu
ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVDRDQ1NzUwRTFDNEZE
RDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUHJvZmlsZUdlbmVyYXRvci5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZUdlbmVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUUzQkMwNDBFMUFFNjgyMDBC
MkQxQzEgLyogQ2FsbElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQ2FsbElkZW50aWZpZXIuaDsgcGF0aCA9IHByb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1RkRGQTEzMEUyMjk5OEYwMDA2RkIwMCAvKiBI
ZWF2eVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGVh
dnlQcm9maWxlLmNwcDsgcGF0aCA9IHByb2ZpbGVyL0hlYXZ5UHJvZmlsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1RkRGQTE1MEUyMjk5OTgwMDA2RkIwMCAvKiBIZWF2eVBy
b2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSGVhdnlQcm9maWxlLmg7
IHBhdGggPSBwcm9maWxlci9IZWF2eVByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTYwMDk3QTUwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFiZWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmxlckJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2
QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFg4NkFzc2VtYmxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4MSw4ICsxNDczLDYgQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTVFM0JDMDQwRTFBRTY4MjAw
QjJEMUMxIC8qIENhbGxJZGVudGlmaWVyLmggKi8sCi0JCQkJOTVGREZBMTMwRTIyOTk4RjAwMDZG
QjAwIC8qIEhlYXZ5UHJvZmlsZS5jcHAgKi8sCi0JCQkJOTVGREZBMTUwRTIyOTk5ODAwMDZGQjAw
IC8qIEhlYXZ5UHJvZmlsZS5oICovLAogCQkJCTk1NzQyRjYzMEREMTFGNUEwMDA5MTdGQiAvKiBQ
cm9maWxlLmNwcCAqLywKIAkJCQk5NTc0MkY2NDBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5o
ICovLAogCQkJCTk1Q0Q0NTc0MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9yLmNw
cCAqLywKQEAgLTE0OTMsOCArMTQ4Myw2IEBACiAJCQkJOTVBQjgzMkYwREE0MkNBRDAwQkM4M0Yz
IC8qIFByb2ZpbGVyLmggKi8sCiAJCQkJMUM2MTUxNkIwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2Zp
bGVyU2VydmVyLmggKi8sCiAJCQkJMUM2MTUxNkEwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVy
U2VydmVyLm1tICovLAotCQkJCTk1Q0Q0MUIxMEUxQkY2NTYwMDg1MzU4RSAvKiBUcmVlUHJvZmls
ZS5jcHAgKi8sCi0JCQkJOTVDRDQxQjIwRTFCRjY1NjAwODUzNThFIC8qIFRyZWVQcm9maWxlLmgg
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IHByb2ZpbGVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE2MzMsNyArMTYyMSw2IEBACiAJCQkJQkMxOEM0MEMwRTE2RjVDRDAwQjM0NDYwIC8q
IEhhc2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBEMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDBFMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBIYXNoVHJhaXRzLmggaW4gSGVhZGVycyAqLywKLQkJCQk5NUZERkExNjBFMjI5OTk4MDAw
NkZCMDAgLyogSGVhdnlQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwRjBFMTZG
NUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTAw
RTE2RjVDRDAwQjM0NDYwIC8qIEluaXRpYWxpemVUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNzY1LDcgKzE3NTIsNiBAQAogCQkJCUJDMThDNDcxMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBUaHJlYWRTcGVjaWZpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzAwRTE2RjVDRDAw
QjM0NDYwIC8qIFRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ1MzcyNkYwRTFDNTQ4
ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAotCQkJCTk1Q0Q0MUI0MEUxQkY2
NTYwMDg1MzU4RSAvKiBUcmVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUwN0QyOUUw
RTg3MUU1RTAwRDdEODk2IC8qIFR5cGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQjREN0U2
MzBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0NzYwRTE2RjVDRDAwQjM0NDYwIC8qIFVTdHJpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMjEw
MSw3ICsyMDg3LDYgQEAKIAkJCQlBN0I0OEY0OTBFRTg5MzZGMDBEQ0JEQjYgLyogRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzgyRjFBNTBFRUM5RkEyMDAzNjI3
M0YgLyogRXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1
REZDOTMzMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJOTVGREZBMTQwRTIyOTk4RjAwMDZGQjAwIC8qIEhlYXZ5UHJvZmlsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTc4NjM2RDBEOUJFRUMzMDBENzRFNzUgLyogSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI5RDdENDBFRDIxMjgyMDBCODk2MTkgLyogSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyOUQ5MkYwRUQyMkQ3MDAwQjg5NjE5
IC8qIEpJVC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIxNDQsNyArMjEyOSw2IEBACiAJCQkJQkND
RjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVENkE1NjZCMEYwNTk5NTUwMDI2NjE0NSAvKiBUaHJlYWRpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFFRTc5M0QwRDZDOUI5MjAwRkVBM0JBIC8qIFRocmVhZGluZ1B0aHJl
YWRzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk1Q0Q0MUIzMEUxQkY2NTYwMDg1MzU4RSAvKiBU
cmVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVGNzlBQTBDRTk3QkE2MDA4OEQ1
MDAgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjkwODMxNTBFNjUxOEQ3MDAwRDM2
RUQgLyogV1JFQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI5REE4MjBFRDI0ODI5MDBCODk2
MTkgLyogV1JFQ0Z1bmN0b3JzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9DYWxsSWRlbnRpZmllci5oCShyZXZpc2lvbiA0Mjc0NikKKysrIEphdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYg
KzUwLDIzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ2FsbElkZW50aWZpZXImIGNpKSBjb25zdCB7IHJldHVybiBjaS5tX2xpbmVOdW1i
ZXIgPT0gbV9saW5lTnVtYmVyICYmIGNpLm1fbmFtZSA9PSBtX25hbWUgJiYgY2kubV91cmwgPT0g
bV91cmw7IH0KICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDYWxsSWRlbnRp
ZmllciYgY2kpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gY2kpOyB9CisgICAgICAKKyAgICAg
ICAgc3RydWN0IEhhc2ggeworICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
Q2FsbElkZW50aWZpZXImIGtleSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNp
Z25lZCBoYXNoQ29kZXNbM10gPSB7CisgICAgICAgICAgICAgICAgICAgIGtleS5tX25hbWUucmVw
KCktPmhhc2goKSwKKyAgICAgICAgICAgICAgICAgICAga2V5Lm1fdXJsLnJlcCgpLT5oYXNoKCks
CisgICAgICAgICAgICAgICAgICAgIGtleS5tX2xpbmVOdW1iZXIKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIHJldHVybiBVU3RyaW5nOjpSZXA6OmNvbXB1dGVIYXNoKHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGhhc2hDb2RlcyksIHNpemVvZihoYXNoQ29kZXMpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgQ2FsbElkZW50aWZpZXImIGEsIGNvbnN0IENhbGxJZGVudGlmaWVyJiBiKSB7IHJldHVybiBh
ID09IGI7IH0KKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBIYXNoOjpoYXNoKCp0aGlzKTsgfQogCiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICBvcGVyYXRvciBjb25zdCBjaGFyKigpIGNvbnN0IHsgcmV0dXJuIGNf
c3RyKCk7IH0KQEAgLTU3LDI2ICs3NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAg
IH07CiAKLSAgICBzdHJ1Y3QgQ2FsbElkZW50aWZpZXJIYXNoIHsKLSAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgQ2FsbElkZW50aWZpZXImIGtleSkKLSAgICAgICAgewotICAgICAg
ICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewotICAgICAgICAgICAgICAgIGtleS5tX25h
bWUucmVwKCktPmhhc2goKSwKLSAgICAgICAgICAgICAgICBrZXkubV91cmwucmVwKCktPmhhc2go
KSwKLSAgICAgICAgICAgICAgICBrZXkubV9saW5lTnVtYmVyCi0gICAgICAgICAgICB9OwotICAg
ICAgICAgICAgcmV0dXJuIFVTdHJpbmc6OlJlcDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oaGFzaENvZGVzKSwgc2l6ZW9mKGhhc2hDb2RlcykpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2FsbElkZW50aWZpZXImIGEsIGNvbnN0IENh
bGxJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotICAgIH07Ci0KIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPEpTQzo6Q2FsbElkZW50aWZpZXI+IHsgdHlwZWRlZiBKU0M6OkNhbGxJ
ZGVudGlmaWVySGFzaCBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PEpTQzo6Q2FsbElkZW50aWZpZXI+IHsgdHlwZWRlZiBKU0M6OkNhbGxJZGVudGlmaWVyOjpIYXNo
IEhhc2g7IH07CiAKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6Q2FsbElk
ZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8SlNDOjpDYWxsSWRlbnRpZmllcj4gewogICAg
ICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoSlNDOjpDYWxsSWRlbnRpZmll
ciYgc2xvdCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0hlYXZ5UHJvZmlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQcm9maWxlLmNwcAko
cmV2aXNpb24gNDI3NDYpCisrKyBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9IZWF2eVByb2ZpbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkhlYXZ5UHJvZmlsZS5oIgotCi0jaW5jbHVkZSAiVHJlZVByb2ZpbGUuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLUhlYXZ5UHJvZmlsZTo6SGVhdnlQcm9maWxlKFRyZWVQcm9maWxlKiB0cmVlUHJv
ZmlsZSkKLSAgICA6IFByb2ZpbGUodHJlZVByb2ZpbGUtPnRpdGxlKCksIHRyZWVQcm9maWxlLT51
aWQoKSkKLXsKLSAgICBtX3RyZWVQcm9maWxlID0gdHJlZVByb2ZpbGU7Ci0gICAgaGVhZCgpLT5z
ZXRUb3RhbFRpbWUobV90cmVlUHJvZmlsZS0+aGVhZCgpLT5hY3R1YWxUb3RhbFRpbWUoKSk7Ci0g
ICAgaGVhZCgpLT5zZXRTZWxmVGltZShtX3RyZWVQcm9maWxlLT5oZWFkKCktPmFjdHVhbFNlbGZU
aW1lKCkpOwotICAgIGdlbmVyYXRlSGVhdnlTdHJ1Y3R1cmUoKTsKLX0KLQotdm9pZCBIZWF2eVBy
b2ZpbGU6OmdlbmVyYXRlSGVhdnlTdHJ1Y3R1cmUoKQotewotICAgIFByb2ZpbGVOb2RlKiB0cmVl
SGVhZCA9IG1fdHJlZVByb2ZpbGUtPmhlYWQoKTsKLSAgICBQcm9maWxlTm9kZSogY3VycmVudE5v
ZGUgPSB0cmVlSGVhZC0+Zmlyc3RDaGlsZCgpOwotICAgIGZvciAoUHJvZmlsZU5vZGUqIG5leHRO
b2RlID0gY3VycmVudE5vZGU7IG5leHROb2RlOyBuZXh0Tm9kZSA9IG5leHROb2RlLT5maXJzdENo
aWxkKCkpCi0gICAgICAgIGN1cnJlbnROb2RlID0gbmV4dE5vZGU7Ci0KLSAgICAvLyBGb3IgZWFj
aCBub2RlCi0gICAgSGFzaE1hcDxDYWxsSWRlbnRpZmllciwgUHJvZmlsZU5vZGUqPiBmb3VuZENo
aWxkcmVuOwotICAgIHdoaWxlIChjdXJyZW50Tm9kZSAmJiBjdXJyZW50Tm9kZSAhPSB0cmVlSGVh
ZCkgewotICAgICAgICBQcm9maWxlTm9kZSogY2hpbGQgPSBmb3VuZENoaWxkcmVuLmdldChjdXJy
ZW50Tm9kZS0+Y2FsbElkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmIChjaGlsZCkgLy8gY3VycmVu
dE5vZGUgaXMgaW4gdGhlIHNldCBhbHJlYWR5Ci0gICAgICAgICAgICBtZXJnZVByb2ZpbGVzKGNo
aWxkLCBjdXJyZW50Tm9kZSk7Ci0gICAgICAgIGVsc2UgeyAvLyBjdXJyZW50Tm9kZSBpcyBub3Qg
aW4gdGhlIHNldAotICAgICAgICAgICAgY2hpbGQgPSBhZGROb2RlKGN1cnJlbnROb2RlKTsKLSAg
ICAgICAgICAgIGZvdW5kQ2hpbGRyZW4uc2V0KGN1cnJlbnROb2RlLT5jYWxsSWRlbnRpZmllcigp
LCBjaGlsZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2Rl
LT50cmF2ZXJzZU5leHROb2RlUG9zdE9yZGVyKCk7Ci0gICAgfQotfQotCi1Qcm9maWxlTm9kZSog
SGVhdnlQcm9maWxlOjphZGROb2RlKFByb2ZpbGVOb2RlKiBjdXJyZW50Tm9kZSkKLXsKLSAgICBS
ZWZQdHI8UHJvZmlsZU5vZGU+IG5vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKGhlYWQoKSwgY3Vy
cmVudE5vZGUpOwotICAgIGhlYWQoKS0+YWRkQ2hpbGQobm9kZSk7Ci0KLSAgICBhZGRBbmNlc3Rv
cnNBc0NoaWxkcmVuKGN1cnJlbnROb2RlLT5wYXJlbnQoKSwgbm9kZS5nZXQoKSk7Ci0gICAgcmV0
dXJuIG5vZGUuZ2V0KCk7Ci19Ci0KLXZvaWQgSGVhdnlQcm9maWxlOjptZXJnZVByb2ZpbGVzKFBy
b2ZpbGVOb2RlKiBoZWF2eVByb2ZpbGVIZWFkLCBQcm9maWxlTm9kZSogdHJlZVByb2ZpbGVIZWFk
KQotewotICAgIEFTU0VSVF9BUkcoaGVhdnlQcm9maWxlSGVhZCwgaGVhdnlQcm9maWxlSGVhZCk7
Ci0gICAgQVNTRVJUX0FSRyh0cmVlUHJvZmlsZUhlYWQsIHRyZWVQcm9maWxlSGVhZCk7Ci0KLSAg
ICBQcm9maWxlTm9kZSogY3VycmVudFRyZWVOb2RlID0gdHJlZVByb2ZpbGVIZWFkOwotICAgIFBy
b2ZpbGVOb2RlKiBjdXJyZW50SGVhdnlOb2RlID0gaGVhdnlQcm9maWxlSGVhZDsKLSAgICBQcm9m
aWxlTm9kZSogcHJldmlvdXNIZWF2eU5vZGUgPSAwOwotICAgIAotICAgIHdoaWxlIChjdXJyZW50
SGVhdnlOb2RlKSB7Ci0gICAgICAgIHByZXZpb3VzSGVhdnlOb2RlID0gY3VycmVudEhlYXZ5Tm9k
ZTsKLQotICAgICAgICBjdXJyZW50SGVhdnlOb2RlLT5zZXRUb3RhbFRpbWUoY3VycmVudEhlYXZ5
Tm9kZS0+YWN0dWFsVG90YWxUaW1lKCkgKyBjdXJyZW50VHJlZU5vZGUtPmFjdHVhbFRvdGFsVGlt
ZSgpKTsKLSAgICAgICAgY3VycmVudEhlYXZ5Tm9kZS0+c2V0U2VsZlRpbWUoY3VycmVudEhlYXZ5
Tm9kZS0+YWN0dWFsU2VsZlRpbWUoKSArIGN1cnJlbnRUcmVlTm9kZS0+YWN0dWFsU2VsZlRpbWUo
KSk7Ci0gICAgICAgIGN1cnJlbnRIZWF2eU5vZGUtPnNldE51bWJlck9mQ2FsbHMoY3VycmVudEhl
YXZ5Tm9kZS0+bnVtYmVyT2ZDYWxscygpICsgY3VycmVudFRyZWVOb2RlLT5udW1iZXJPZkNhbGxz
KCkpOwotCi0gICAgICAgIGN1cnJlbnRUcmVlTm9kZSA9IGN1cnJlbnRUcmVlTm9kZS0+cGFyZW50
KCk7Ci0gICAgICAgIGN1cnJlbnRIZWF2eU5vZGUgPSBjdXJyZW50SGVhdnlOb2RlLT5maW5kQ2hp
bGQoY3VycmVudFRyZWVOb2RlKTsKLSAgICB9Ci0KLSAgICAvLyBJZiBjdXJyZW50VHJlZU5vZGUg
aXMgbnVsbCB0aGVuIHdlIGFscmVhZHkgaGF2ZSB0aGUgd2hvbGUgdHJlZSB3ZSB3YW50ZWQgdG8g
Y29weS4KLSAgICAvLyBJZiBub3Qgd2UgbmVlZCB0byBjb3B5IHRoZSBzdWJzZXQgb2YgdGhlIHRy
ZWUgdGhhdCByZW1haW5zIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSB0d28uCi0gICAgaWYgKGN1cnJl
bnRUcmVlTm9kZSkKLSAgICAgICAgYWRkQW5jZXN0b3JzQXNDaGlsZHJlbihjdXJyZW50VHJlZU5v
ZGUsIHByZXZpb3VzSGVhdnlOb2RlKTsKLX0KLQotdm9pZCBIZWF2eVByb2ZpbGU6OmFkZEFuY2Vz
dG9yc0FzQ2hpbGRyZW4oUHJvZmlsZU5vZGUqIGdldEZyb20sIFByb2ZpbGVOb2RlKiBhZGRUbykK
LXsKLSAgICBBU1NFUlRfQVJHKGdldEZyb20sIGdldEZyb20pOwotICAgIEFTU0VSVF9BUkcoYWRk
VG8sIGFkZFRvKTsKLQotICAgIGlmICghZ2V0RnJvbS0+aGVhZCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBSZWZQdHI8UHJvZmlsZU5vZGU+IGN1cnJlbnROb2RlID0gYWRkVG87Ci0gICAgZm9y
IChQcm9maWxlTm9kZSogdHJlZUFuY2VzdG9yID0gZ2V0RnJvbTsgdHJlZUFuY2VzdG9yICYmIHRy
ZWVBbmNlc3RvciAhPSBnZXRGcm9tLT5oZWFkKCk7IHRyZWVBbmNlc3RvciA9IHRyZWVBbmNlc3Rv
ci0+cGFyZW50KCkpIHsKLSAgICAgICAgUmVmUHRyPFByb2ZpbGVOb2RlPiBuZXdDaGlsZCA9IFBy
b2ZpbGVOb2RlOjpjcmVhdGUoY3VycmVudE5vZGUtPmhlYWQoKSwgdHJlZUFuY2VzdG9yKTsKLSAg
ICAgICAgY3VycmVudE5vZGUtPmFkZENoaWxkKG5ld0NoaWxkKTsKLSAgICAgICAgY3VycmVudE5v
ZGUgPSBuZXdDaGlsZC5yZWxlYXNlKCk7Ci0gICAgfQotfQotCi19ICAgLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQcm9maWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQcm9maWxlLmgJKHJldmlzaW9uIDQy
NzQ2KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvSGVhdnlQcm9maWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0gCi0jaWZuZGVmIEhlYXZ5UHJvZmlsZV9oCi0jZGVmaW5lIEhlYXZ5UHJvZmls
ZV9oCi0KLSNpbmNsdWRlICJQcm9maWxlLmgiCi0jaW5jbHVkZSAiUHJvZmlsZU5vZGUuaCIKLSNp
bmNsdWRlICJUcmVlUHJvZmlsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotICAgIGNsYXNzIFVT
dHJpbmc7Ci0KLSAgICBjbGFzcyBIZWF2eVByb2ZpbGUgOiBwdWJsaWMgUHJvZmlsZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIZWF2eVByb2ZpbGU+IGNyZWF0ZShU
cmVlUHJvZmlsZSogdHJlZVByb2ZpbGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSGVhdnlQcm9maWxlKHRyZWVQcm9maWxlKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2aXJ0dWFsIFByb2ZpbGUqIGhlYXZ5UHJvZmlsZSgpIHsgcmV0dXJuIHRoaXM7IH0KLSAg
ICAgICAgdmlydHVhbCBQcm9maWxlKiB0cmVlUHJvZmlsZSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBtX3RyZWVQcm9maWxlOwotICAgICAgICB9Ci0KLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIEhlYXZ5UHJvZmlsZShUcmVlUHJvZmlsZSopOwotICAgICAgICB2b2lkIGdlbmVyYXRl
SGVhdnlTdHJ1Y3R1cmUoKTsKLSAgICAgICAgUHJvZmlsZU5vZGUqIGFkZE5vZGUoUHJvZmlsZU5v
ZGUqKTsKLSAgICAgICAgdm9pZCBtZXJnZVByb2ZpbGVzKFByb2ZpbGVOb2RlKiBoZWF2eVByb2Zp
bGVIZWFkLCBQcm9maWxlTm9kZSogdHJlZVByb2ZpbGVIZWFkKTsKLSAgICAgICAgdm9pZCBhZGRB
bmNlc3RvcnNBc0NoaWxkcmVuKFByb2ZpbGVOb2RlKiBnZXRGcm9tLCBQcm9maWxlTm9kZSogYWRk
VG8pOwotCi0gICAgICAgIFRyZWVQcm9maWxlKiBtX3RyZWVQcm9maWxlOwotICAgIH07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gSGVhdnlQcm9maWxlX2gKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCShyZXZpc2lvbiA0Mjc0NikKKysrIEphdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNCArMjcsMTMg
QEAKICNpbmNsdWRlICJQcm9maWxlLmgiCiAKICNpbmNsdWRlICJQcm9maWxlTm9kZS5oIgotI2lu
Y2x1ZGUgIlRyZWVQcm9maWxlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKIFBhc3NSZWZQdHI8UHJvZmlsZT4gUHJvZmlsZTo6Y3JlYXRlKGNvbnN0IFVTdHJpbmcm
IHRpdGxlLCB1bnNpZ25lZCB1aWQpCiB7Ci0gICAgcmV0dXJuIFRyZWVQcm9maWxlOjpjcmVhdGUo
dGl0bGUsIHVpZCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9maWxlKHRpdGxlLCB1aWQp
KTsKIH0KIAogUHJvZmlsZTo6UHJvZmlsZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQg
dWlkKQpJbmRleDogSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAkocmV2aXNpb24gNDI3NDYpCisr
KyBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDIyICs0NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgaW50IHVpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdWlkOyB9CiAKICAgICAgICAgdm9pZCBmb3JFYWNoKHZvaWQgKFBy
b2ZpbGVOb2RlOjoqKSgpKTsKLSAgICAgICAgdm9pZCBzb3J0VG90YWxUaW1lRGVzY2VuZGluZygp
IHsgZm9yRWFjaCgmUHJvZmlsZU5vZGU6OnNvcnRUb3RhbFRpbWVEZXNjZW5kaW5nKTsgfQotICAg
ICAgICB2b2lkIHNvcnRUb3RhbFRpbWVBc2NlbmRpbmcoKSB7IGZvckVhY2goJlByb2ZpbGVOb2Rl
Ojpzb3J0VG90YWxUaW1lQXNjZW5kaW5nKTsgfQotICAgICAgICB2b2lkIHNvcnRTZWxmVGltZURl
c2NlbmRpbmcoKSB7IGZvckVhY2goJlByb2ZpbGVOb2RlOjpzb3J0U2VsZlRpbWVEZXNjZW5kaW5n
KTsgfQotICAgICAgICB2b2lkIHNvcnRTZWxmVGltZUFzY2VuZGluZygpIHsgZm9yRWFjaCgmUHJv
ZmlsZU5vZGU6OnNvcnRTZWxmVGltZUFzY2VuZGluZyk7IH0KLSAgICAgICAgdm9pZCBzb3J0Q2Fs
bHNEZXNjZW5kaW5nKCkgeyBmb3JFYWNoKCZQcm9maWxlTm9kZTo6c29ydENhbGxzRGVzY2VuZGlu
Zyk7IH0KLSAgICAgICAgdm9pZCBzb3J0Q2FsbHNBc2NlbmRpbmcoKSB7IGZvckVhY2goJlByb2Zp
bGVOb2RlOjpzb3J0Q2FsbHNBc2NlbmRpbmcpOyB9Ci0gICAgICAgIHZvaWQgc29ydEZ1bmN0aW9u
TmFtZURlc2NlbmRpbmcoKSB7IGZvckVhY2goJlByb2ZpbGVOb2RlOjpzb3J0RnVuY3Rpb25OYW1l
RGVzY2VuZGluZyk7IH0KLSAgICAgICAgdm9pZCBzb3J0RnVuY3Rpb25OYW1lQXNjZW5kaW5nKCkg
eyBmb3JFYWNoKCZQcm9maWxlTm9kZTo6c29ydEZ1bmN0aW9uTmFtZUFzY2VuZGluZyk7IH0KIAog
ICAgICAgICB2b2lkIGZvY3VzKGNvbnN0IFByb2ZpbGVOb2RlKik7CiAgICAgICAgIHZvaWQgZXhj
bHVkZShjb25zdCBQcm9maWxlTm9kZSopOwogICAgICAgICB2b2lkIHJlc3RvcmVBbGwoKTsKIAot
ICAgICAgICB2aXJ0dWFsIFByb2ZpbGUqIGhlYXZ5UHJvZmlsZSgpID0gMDsKLSAgICAgICAgdmly
dHVhbCBQcm9maWxlKiB0cmVlUHJvZmlsZSgpID0gMDsgCi0KICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIHZvaWQgZGVidWdQcmludERhdGEoKSBjb25zdDsKICAgICAgICAgdm9pZCBkZWJ1Z1ByaW50
RGF0YVNhbXBsZVN0eWxlKCkgY29uc3Q7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZU5vZGUuY3BwCShyZXZpc2lvbiA0Mjc0NikKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDEyICsyMDQsNiBAQCBQcm9m
aWxlTm9kZSogUHJvZmlsZU5vZGU6OnRyYXZlcnNlTmV4dE5vCiAgICAgcmV0dXJuIG5leHQ7CiB9
CiAKLXZvaWQgUHJvZmlsZU5vZGU6OnNvcnQoYm9vbCBjb21wYXJhdG9yKGNvbnN0IFJlZlB0cjxQ
cm9maWxlTm9kZT4mICwgY29uc3QgUmVmUHRyPFByb2ZpbGVOb2RlPiYgKSkKLXsKLSAgICBzdGQ6
OnNvcnQoY2hpbGRyZW5CZWdpbigpLCBjaGlsZHJlbkVuZCgpLCBjb21wYXJhdG9yKTsgICAgCi0g
ICAgcmVzZXRDaGlsZHJlbnNTaWJsaW5ncygpOwotfQotCiB2b2lkIFByb2ZpbGVOb2RlOjpzZXRU
cmVlVmlzaWJsZShQcm9maWxlTm9kZSogbm9kZSwgYm9vbCB2aXNpYmxlKQogewogICAgIFByb2Zp
bGVOb2RlKiBub2RlUGFyZW50ID0gbm9kZS0+cGFyZW50KCk7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVOb2RlLmgJKHJldmlzaW9uIDQyNzQ2KQorKysgSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDE2ICsxMTIsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUHJvZmlsZU5vZGUqIHRyYXZlcnNlTmV4dE5vZGVQ
b3N0T3JkZXIoKSBjb25zdDsKICAgICAgICAgUHJvZmlsZU5vZGUqIHRyYXZlcnNlTmV4dE5vZGVQ
cmVPcmRlcihib29sIHByb2Nlc3NDaGlsZHJlbiA9IHRydWUpIGNvbnN0OwogCi0gICAgICAgIHZv
aWQgc29ydChib29sICgqKShjb25zdCBSZWZQdHI8UHJvZmlsZU5vZGU+JiwgY29uc3QgUmVmUHRy
PFByb2ZpbGVOb2RlPiYpKTsKLSAgICAgICAgdm9pZCBzb3J0VG90YWxUaW1lRGVzY2VuZGluZygp
IHsgc29ydCh0b3RhbFRpbWVEZXNjZW5kaW5nQ29tcGFyYXRvcik7IH0KLSAgICAgICAgdm9pZCBz
b3J0VG90YWxUaW1lQXNjZW5kaW5nKCkgeyBzb3J0KHRvdGFsVGltZUFzY2VuZGluZ0NvbXBhcmF0
b3IpOyB9Ci0gICAgICAgIHZvaWQgc29ydFNlbGZUaW1lRGVzY2VuZGluZygpIHsgc29ydChzZWxm
VGltZURlc2NlbmRpbmdDb21wYXJhdG9yKTsgfQotICAgICAgICB2b2lkIHNvcnRTZWxmVGltZUFz
Y2VuZGluZygpIHsgc29ydChzZWxmVGltZUFzY2VuZGluZ0NvbXBhcmF0b3IpOyB9Ci0gICAgICAg
IHZvaWQgc29ydENhbGxzRGVzY2VuZGluZygpIHsgc29ydChjYWxsc0Rlc2NlbmRpbmdDb21wYXJh
dG9yKTsgfQotICAgICAgICB2b2lkIHNvcnRDYWxsc0FzY2VuZGluZygpIHsgc29ydChjYWxsc0Fz
Y2VuZGluZ0NvbXBhcmF0b3IpOyB9Ci0gICAgICAgIHZvaWQgc29ydEZ1bmN0aW9uTmFtZURlc2Nl
bmRpbmcoKSB7IHNvcnQoZnVuY3Rpb25OYW1lRGVzY2VuZGluZ0NvbXBhcmF0b3IpOyB9Ci0gICAg
ICAgIHZvaWQgc29ydEZ1bmN0aW9uTmFtZUFzY2VuZGluZygpIHsgc29ydChmdW5jdGlvbk5hbWVB
c2NlbmRpbmdDb21wYXJhdG9yKTsgfQotCiAgICAgICAgIC8vIFZpZXdzCiAgICAgICAgIHZvaWQg
Y2FsY3VsYXRlVmlzaWJsZVRvdGFsVGltZSgpOwogICAgICAgICBib29sIGZvY3VzKGNvbnN0IENh
bGxJZGVudGlmaWVyJik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9UcmVlUHJvZmls
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvVHJlZVByb2ZpbGUu
Y3BwCShyZXZpc2lvbiA0Mjc0NikKKysrIEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1RyZWVQcm9m
aWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlRyZWVQcm9maWxlLmgiCi0KLSNpbmNsdWRlICJIZWF2eVByb2ZpbGUuaCIKLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLVBhc3NSZWZQdHI8VHJlZVByb2ZpbGU+IFRyZWVQcm9maWxlOjpjcmVhdGUo
Y29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRyZWVQcm9maWxlKHRpdGxlLCB1aWQpKTsKLX0KLQotVHJlZVByb2ZpbGU6OlRyZWVQ
cm9maWxlKGNvbnN0IFVTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCi0gICAgOiBQcm9maWxl
KHRpdGxlLCB1aWQpCi17Ci19Ci0KLVByb2ZpbGUqIFRyZWVQcm9maWxlOjpoZWF2eVByb2ZpbGUo
KQotewotICAgIGlmICghbV9oZWF2eVByb2ZpbGUpCi0gICAgICAgIG1faGVhdnlQcm9maWxlID0g
SGVhdnlQcm9maWxlOjpjcmVhdGUodGhpcyk7Ci0KLSAgICByZXR1cm4gbV9oZWF2eVByb2ZpbGUu
Z2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvVHJlZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9UcmVlUHJvZmlsZS5oCShyZXZpc2lvbiA0Mjc0NikKKysrIEphdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1RyZWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaWZuZGVmIFRyZWVQcm9m
aWxlX2gKLSNkZWZpbmUgVHJlZVByb2ZpbGVfaAotCi0jaW5jbHVkZSAiUHJvZmlsZS5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKLSAgICBjbGFzcyBIZWF2eVBy
b2ZpbGU7Ci0gICAgY2xhc3MgVVN0cmluZzsKLQotICAgIGNsYXNzIFRyZWVQcm9maWxlIDogcHVi
bGljIFByb2ZpbGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VHJl
ZVByb2ZpbGU+IGNyZWF0ZShjb25zdCBVU3RyaW5nJiB0aXRsZSwgdW5zaWduZWQgdWlkKTsKLQot
ICAgICAgICB2aXJ0dWFsIFByb2ZpbGUqIGhlYXZ5UHJvZmlsZSgpOwotICAgICAgICB2aXJ0dWFs
IFByb2ZpbGUqIHRyZWVQcm9maWxlKCkgeyByZXR1cm4gdGhpczsgfQotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgVHJlZVByb2ZpbGUoY29uc3QgVVN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCk7
Ci0gICAgICAgIFJlZlB0cjxIZWF2eVByb2ZpbGU+IG1faGVhdnlQcm9maWxlOwotICAgIH07Ci0K
LX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gVHJlZVByb2ZpbGVyX2gKSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biA0Mjc3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTM4IEBACisyMDA5LTA0LTIzICBGcmFuY2lzY28gVG9sbWFza3kgIDxmcmFuY2lzY29AMjgwbm9y
dGguY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJVRyAyNDYwNDogV2ViS2l0IHByb2ZpbGVyIHJlcG9ydHMgaW5jb3JyZWN0IHRvdGFsIHRpbWVz
CisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2MDQ+
CisKKyAgICAgICAgTWFkZSBpdCBzbyB0aGF0IG1vc3Qgb2YgdGhlIHByb2ZpbGVyIGZ1bmN0aW9u
cyBub3cgbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIFNoYXJrLiBNb3N0IG5vdGFibHksIGluIHRoZSAK
KyAgICAgICAgaGVhdnkgdmlldywgY2hpbGQgbm9kZXMgbm93IHJlcHJlc2VudCB0aGUgc3RhdGlz
dGljcyBvZiB0aGUgcm9vdCBub2RlLiBFYWNoIHJvb3Qgbm9kZSBvZiBoZWF2eSB2aWV3IAorICAg
ICAgICBkaXNwbGF5cyBmbGF0dGVuZWQgc3RhdGlzdGljcyBmb3IgYSBwYXJ0aWN1bGFyIGZ1bmN0
aW9uIHRoYXQgcmFuIGR1cmluZyB0aGUgcHJvZmlsZSwgYW5kIGVhY2ggY2hpbGQgCisgICAgICAg
IG9mIHRoZXNlIHJvb3Qgbm9kZXMgcmVwcmVzZW50cyBhIGNhbGxwYXRoIHRoYXQgbGVhZCB0byBp
dC4gVGh1cywgdGhlIHN0YXRpc3RpY3MgZm9yIGVhY2ggb2YgdGhlc2UgY2hpbGQgCisgICAgICAg
IG5vZGVzIHNob3VsZCBzaG93IGhvdyBtdWNoIG9mIHRoZSByb290IG5vZGVzIHZhbHVlcyBjYW1l
IGZyb20gaXQuIEZvciBleGFtcGxlLCBpZiB5b3UgaGFkIHRoZSBmb2xsb3dpbmcgdG8gCisgICAg
ICAgIHN0YWNrcyB0YWtlIHBsYWNlIGR1cmluZyB0aGUgcHJvZmlsZToKKyAgICAgICAgCisgICAg
ICAgIEEgLT5jYWxscyAxIHRpbWVzLT4gQiAtPmNhbGxzIDIgdGltZXMtPiBDCisgICAgICAgIEQg
LT5jYWxscyA0IHRpbWVzLT4gQworICAgICAgICAKKyAgICAgICAgVGhlIHRyZWUgZm9yIHRoZSBD
IHJvb3Qgbm9kZSB3b3VsZCBsb29rIGxpa2UgdGhpczoKKyAgICAgICAgCisgICAgICAgIEMgLT4g
QiAtPiBBCisgICAgICAgICAgLT4gRAorICAgICAgICAgIAorICAgICAgICBUaGUgbnVtYmVyIG9m
IGNhbGxzIHZhbHVlcyB3b3VsZCBsb29rIGxpa2UgdGhpczoKKyAgICAgICAgCisgICAgICAgIEMg
KDYpIC0+IEIgKDIpIC0+IEEoMikKKyAgICAgICAgICAgICAgLT4gRCAoNCkKKyAgICAgICAgCisg
ICAgICAgIFdoYXQgdGhpcyBtZWFucyBpcyB0aGF0ICIyIG9mIHRoZSB0b3RhbCA2IEMgY2FsbHMg
Y2FtZSBmcm9tIEIiLCAiMiBvZiB0aGUgdG90YWwgQyBjYWxscyBjYW1lIGZyb20gQSIsIGFuZCAK
KyAgICAgICAgIjQgb2YgdGhlIHRvdGFsIEMgY2FsbHMgY2FtZSBmcm9tIEQiLiAgTm90aWNlIHRo
YXQgdGhlICJBIC0+Y2FsbHMgMiB0aW1lLT4iIGlzIGNvbXBsZXRlbHkgaWdub3JlZC4gVGhpcyBi
ZWNvbWVzIAorICAgICAgICBwYXJ0aWN1bGFybHkgdHJpY2t5IGR1cmluZyByZWN1cnNpdmUgY2Fs
bHMsIGJlY2F1c2UgZWFjaCBjaGlsZCBub3RlIGNhbiByZXByZXNlbnQgbXVsdGlwbGUgcG9zc2li
bGUgcGF0aHMuIFRoaXMgCisgICAgICAgIGlzIHRoZSByZWFzb24gdGhhdCB3ZSB3b3VsZCBnZXQg
dGhpbmdzIGxpa2UgNDAwMDAlIHByZXZpb3VzbHkgd2l0aCByZWN1cnNpb24uCisgICAgICAgIAor
ICAgICAgICBUaGlzIGlzIGFsc28gdGhlIHdheSBncHJvZiB3b3JrcywgYW5kIGFzIGNsb3NlIGFz
IHdlIGNhbiBnZXQgdG8gU2hhcmsncyBiZWhhdmlvciAoU2hhcmsgaXMgbm90IGluc3RydW1lbnRl
ZCBzbyBpdCAKKyAgICAgICAgY2FuJ3Qga25vdyBleGFjdGx5IGhvdyBtYW55IGNhbGxzIGNhbWUg
ZnJvbSB3aGVyZSwgZXRjKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qczogQWRkZWQgIkF2ZXJhZ2UiIGZvciBhdmVyYWdlIHRpbWVzIGluIHRoZSBwcm9maWxl
LgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9maWxlQ2xhc3MpOgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJv
ZmlsZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGFyZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OmdldEhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FsbFVJRCk6CisgICAgICAg
IChXZWJDb3JlOjpQcm9maWxlTm9kZUNsYXNzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0JvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5qczogQWRkZWQuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlLmZvY3VzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZE5vZGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3Rha2VQ
cm9wZXJ0aWVzRnJvbVByb2ZpbGVEYXRhR3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2tlZXBPbmx5Q2hpbGQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5
cGUuX2V4Y2x1ZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUuX21lcmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Cb3R0b21V
cFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9wb3B1bGF0ZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlLnNldCBoYXNDaGlsZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5nZXQgaGFzQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZS5hcHBlbmRDaGlsZC5pbnNlcnRDaGlsZC5XZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlLmluc2VydENoaWxkLnJlbW92ZUNoaWxkLldlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQucmVtb3ZlQ2hpbGRyZW4uV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbi5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2
ZS5XZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZl
Ll9yZWNhbGN1bGF0ZVNpYmxpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVEYXRhR3JpZE5vZGUuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhQcm9m
aWxlRGF0YUdyaWROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5YUHJvZmlsZURhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuZ2V0IGRhdGEuZm9ybWF0TWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5YUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IGRhdGEpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlhQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVD
ZWxsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5YUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5
cGUuc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5YUHJvZmlsZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUuZGVzZWxlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhQcm9maWxlRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5leHBhbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlhQcm9maWxl
RGF0YUdyaWROb2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuWFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmZpbmRDaGlsZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuWFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBhdmVyYWdlVGlt
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuWFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBl
LmdldCBhdmVyYWdlUGVyY2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuWFByb2ZpbGVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLmdldCBzZWxmUGVyY2VudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuWFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCB0b3RhbFBlcmNlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qczogQWRkZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IGRhdGEuZm9ybWF0
TWlsbGlzZWNvbmRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5nZXQgZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
ZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5kZXNlbGVjdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuZXhwYW5kKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5pbnNlcnRDaGlsZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVt
b3ZlQ2hpbGQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJv
dG90eXBlLnJlbW92ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5maW5kQ2hpbGQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBhdmVyYWdlVGltZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IGF2ZXJhZ2VQZXJj
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5nZXQgc2VsZlBlcmNlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLmdldCB0b3RhbFBlcmNlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9zYXZlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fcmVzdG9yZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX21lcmdlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5nZXQgZXhwYW5kZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlLmFwcGVuZENoaWxk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlwZS5p
bnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5w
cm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVE
YXRhR3JpZFRyZWUucHJvdG90eXBlLmZpbmRDaGlsZC5XZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUuZmluZENoaWxkLnNvcnQuV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLnNvcnQuX3NhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
b2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9yLmNvbXBhcmF0b3IpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVydHlDb21wYXJhdG9yLmVs
c2UuY29tcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJl
ZS5wcm9wZXJ0eUNvbXBhcmF0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5zZXQgcHJvZmlsZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLmdldCBib3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3Rv
dHlwZS5nZXQgdG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5nZXQgY3VycmVudFRyZWUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5zZXQgY3VycmVudFRyZWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5nZXQgdG9wRG93blRyZWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5nZXQgYm90dG9tVXBU
cmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5cGUucmVmcmVz
aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLnJlZnJlc2hW
aXNpYmxlRGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBl
LnJlZnJlc2hTaG93QXNQZXJjZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZp
ZXcucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gubWF0Y2hlc1F1ZXJ5KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5cGUuX2ZvY3VzQ2xpY2tlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLl9leGNsdWRlQ2xpY2tlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlLl9yZXNldENsaWNr
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydFBy
b2ZpbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5zaG93UHJvZmls
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuc2hvd1Zp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLnNlYXJj
aE1hdGNoRm91bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVG9wRG93blByb2Zp
bGVEYXRhR3JpZFRyZWUuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvcERvd25Q
cm9maWxlRGF0YUdyaWROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmls
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3BvcHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2V4Y2x1ZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGUuZm9jdXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3RvdHlw
ZS5leGNsdWRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKIDIwMDktMDQtMjIgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBT
dGFjaG93aWFrCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlz
aW9uIDQyNzQ2KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTU2NDcsNiArMTU2NDcsMTAgQEAKIAkJCQlOYW1lPSJmcm9udC1lbmQi
DQogCQkJCT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxCb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMiDQorCQkJCQk+DQorCQkJCTwv
RmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxCcmVha3BvaW50LmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMTU3NDMsNiAr
MTU3NDcsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIN
CisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXFByb3BlcnRpZXNTZWN0aW9uLmpzIg0KIAkJCQkJPg0KIAkJ
CQk8L0ZpbGU+DQpAQCAtMTU3OTksNiArMTU4MDcsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+
DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRc
VG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJ
CQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxUZXh0
UHJvbXB0LmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9pbnNwZWN0
b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9y
L0phdmFTY3JpcHRQcm9maWxlLmNwcAkocmV2aXNpb24gNDI3NDYpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDI0ICs3Miw2
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldEhlYWRDYWxsYmFjayhKU0NvbnQKICAgICByZXR1cm4g
dG9SZWYodG9KUyh0b0pTKGN0eCksIHByb2ZpbGUtPmhlYWQoKSkpOwogfQogCi1zdGF0aWMgSlNW
YWx1ZVJlZiBnZXRIZWF2eVByb2ZpbGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCi17Ci0gICAgaWYgKCFK
U1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUq
IHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKLSAgICByZXR1cm4gdG9SZWYodG9KUyh0b0pTKGN0eCksIHByb2ZpbGUtPmhlYXZ5
UHJvZmlsZSgpKSk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIGdldFRyZWVQcm9maWxlQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYs
IEpTVmFsdWVSZWYqKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRo
aXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmls
ZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIHRvUmVmKHRv
SlModG9KUyhjdHgpLCBwcm9maWxlLT50cmVlUHJvZmlsZSgpKSk7Ci19Ci0KIHN0YXRpYyBKU1Zh
bHVlUmVmIGdldFVuaXF1ZUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQogewogICAgIGlmICghSlNWYWx1
ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKQEAgLTE0
Niw5NCArMTI4LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgcmVzdG9yZUFsbChKU0NvbnRleHRSZQog
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwogfQogCi1zdGF0aWMgSlNWYWx1
ZVJlZiBzb3J0VG90YWxUaW1lRGVzY2VuZGluZyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCAvKmFyZ3VtZW50
Q291bnQqLywgY29uc3QgSlNWYWx1ZVJlZltdIC8qYXJndW1lbnRzKi8sIEpTVmFsdWVSZWYqIC8q
ZXhjZXB0aW9uKi8pCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0eCwgdGhp
c09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxl
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBwcm9maWxlLT5zb3J0VG90
YWxUaW1lRGVzY2VuZGluZygpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0
eCk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIHNvcnRUb3RhbFRpbWVBc2NlbmRpbmcoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWZbXSAvKmFyZ3Vt
ZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQotewotICAgIGlmICghSlNWYWx1ZUlz
T2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxl
ID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
Ci0gICAgcHJvZmlsZS0+c29ydFRvdGFsVGltZUFzY2VuZGluZygpOwotCi0gICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlUmVmIHNvcnRTZWxm
VGltZURlc2NlbmRpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiov
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0
IEpTVmFsdWVSZWZbXSAvKmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQot
ewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2Zp
bGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0K
LSAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcHJvZmlsZS0+c29ydFNlbGZUaW1lRGVzY2VuZGlu
ZygpOwotCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci19Ci0KLXN0YXRp
YyBKU1ZhbHVlUmVmIHNvcnRTZWxmVGltZUFzY2VuZGluZyhKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiAvKmZ1bmN0aW9uKi8sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCAvKmFy
Z3VtZW50Q291bnQqLywgY29uc3QgSlNWYWx1ZVJlZltdIC8qYXJndW1lbnRzKi8sIEpTVmFsdWVS
ZWYqIC8qZXhjZXB0aW9uKi8pCi17Ci0gICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGN0
eCwgdGhpc09iamVjdCwgUHJvZmlsZUNsYXNzKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY3R4KTsKLQotICAgIFByb2ZpbGUqIHByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQ
cm9maWxlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBwcm9maWxlLT5z
b3J0U2VsZlRpbWVBc2NlbmRpbmcoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBzb3J0Q2FsbHNEZXNjZW5kaW5nKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IC8qYXJndW1lbnRDb3VudCovLCBjb25zdCBKU1ZhbHVlUmVmW10gLyphcmd1
bWVudHMqLywgSlNWYWx1ZVJlZiogLypleGNlcHRpb24qLykKLXsKLSAgICBpZiAoIUpTVmFsdWVJ
c09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZSogcHJvZmls
ZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OwotICAgIHByb2ZpbGUtPnNvcnRDYWxsc0Rlc2NlbmRpbmcoKTsKLQotICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjdHgpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBzb3J0Q2FsbHNB
c2NlbmRpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgLypmdW5jdGlvbiovLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVudENvdW50Ki8sIGNvbnN0IEpTVmFs
dWVSZWZbXSAvKmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAvKmV4Y2VwdGlvbiovKQotewotICAg
IGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVDbGFz
cygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Ci0KLSAgICBQ
cm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZSo+KEpTT2JqZWN0R2V0UHJpdmF0
ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcHJvZmlsZS0+c29ydENhbGxzQXNjZW5kaW5nKCk7Ci0KLSAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKLX0KLQotc3RhdGljIEpTVmFsdWVS
ZWYgc29ydEZ1bmN0aW9uTmFtZURlc2NlbmRpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RS
ZWYgLypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgLyphcmd1bWVu
dENvdW50Ki8sIGNvbnN0IEpTVmFsdWVSZWZbXSAvKmFyZ3VtZW50cyovLCBKU1ZhbHVlUmVmKiAv
KmV4Y2VwdGlvbiovKQotewotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRo
aXNPYmplY3QsIFByb2ZpbGVDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGN0eCk7Ci0KLSAgICBQcm9maWxlKiBwcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmls
ZSo+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcHJvZmlsZS0+c29ydEZ1
bmN0aW9uTmFtZURlc2NlbmRpbmcoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjdHgpOwotfQotCi1zdGF0aWMgSlNWYWx1ZVJlZiBzb3J0RnVuY3Rpb25OYW1lQXNjZW5kaW5n
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IC8qYXJndW1lbnRDb3VudCovLCBjb25zdCBKU1ZhbHVlUmVmW10g
Lyphcmd1bWVudHMqLywgSlNWYWx1ZVJlZiogLypleGNlcHRpb24qLykKLXsKLSAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlQ2xhc3MoKSkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotCi0gICAgUHJvZmlsZSog
cHJvZmlsZSA9IHN0YXRpY19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwotICAgIHByb2ZpbGUtPnNvcnRGdW5jdGlvbk5hbWVBc2NlbmRpbmcoKTsKLQotICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwotfQotCiBzdGF0aWMgdm9pZCBmaW5h
bGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAgUHJvZmlsZSogcHJvZmlsZSA9IHN0YXRp
Y19jYXN0PFByb2ZpbGUqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7CkBAIC0yNDYsOCAr
MTQwLDYgQEAgSlNDbGFzc1JlZiBQcm9maWxlQ2xhc3MoKQogICAgIHN0YXRpYyBKU1N0YXRpY1Zh
bHVlIHN0YXRpY1ZhbHVlc1tdID0gewogICAgICAgICB7ICJ0aXRsZSIsIGdldFRpdGxlQ2FsbGJh
Y2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJoZWFkIiwgZ2V0
SGVhZENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAi
aGVhdnlQcm9maWxlIiwgZ2V0SGVhdnlQcm9maWxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJ0cmVlUHJvZmlsZSIsIGdldFRyZWVQcm9maWxlQ2Fs
bGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJ1aWQiLCBn
ZXRVbmlxdWVJZENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAg
ICAgeyAwLCAwLCAwLCAwIH0KICAgICB9OwpAQCAtMjU2LDE0ICsxNDgsNiBAQCBKU0NsYXNzUmVm
IFByb2ZpbGVDbGFzcygpCiAgICAgICAgIHsgImZvY3VzIiwgZm9jdXMsIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJleGNsdWRlIiwgZXhjbHVkZSwga0pTUHJvcGVydHlB
dHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgInJlc3RvcmVBbGwiLCByZXN0b3JlQWxsLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAic29ydFRvdGFsVGltZURlc2NlbmRp
bmciLCBzb3J0VG90YWxUaW1lRGVzY2VuZGluZywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0s
Ci0gICAgICAgIHsgInNvcnRUb3RhbFRpbWVBc2NlbmRpbmciLCBzb3J0VG90YWxUaW1lQXNjZW5k
aW5nLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAgICAgICAgeyAic29ydFNlbGZUaW1l
RGVzY2VuZGluZyIsIHNvcnRTZWxmVGltZURlc2NlbmRpbmcsIGtKU1Byb3BlcnR5QXR0cmlidXRl
Tm9uZSB9LAotICAgICAgICB7ICJzb3J0U2VsZlRpbWVBc2NlbmRpbmciLCBzb3J0U2VsZlRpbWVB
c2NlbmRpbmcsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJzb3J0Q2Fs
bHNEZXNjZW5kaW5nIiwgc29ydENhbGxzRGVzY2VuZGluZywga0pTUHJvcGVydHlBdHRyaWJ1dGVO
b25lIH0sCi0gICAgICAgIHsgInNvcnRDYWxsc0FzY2VuZGluZyIsIHNvcnRDYWxsc0FzY2VuZGlu
Zywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCi0gICAgICAgIHsgInNvcnRGdW5jdGlvbk5h
bWVEZXNjZW5kaW5nIiwgc29ydEZ1bmN0aW9uTmFtZURlc2NlbmRpbmcsIGtKU1Byb3BlcnR5QXR0
cmlidXRlTm9uZSB9LAotICAgICAgICB7ICJzb3J0RnVuY3Rpb25OYW1lQXNjZW5kaW5nIiwgc29y
dEZ1bmN0aW9uTmFtZUFzY2VuZGluZywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAg
ICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNj
cmlwdFByb2ZpbGVOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9KYXZh
U2NyaXB0UHJvZmlsZU5vZGUuY3BwCShyZXZpc2lvbiA0Mjc0NikKKysrIFdlYkNvcmUvaW5zcGVj
dG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsx
ODEsMjkgQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0Q2hpbGRyZW4oSlNDb250ZXh0UgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldFBhcmVudChKU0NvbnRleHRS
ZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiop
Cit7CisgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgCisgICAgaWYgKCFKU1ZhbHVl
SXNPYmplY3RPZkNsYXNzKGN0eCwgdGhpc09iamVjdCwgUHJvZmlsZU5vZGVDbGFzcygpKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAgCisgICAgUHJvZmls
ZU5vZGUqIHByb2ZpbGVOb2RlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZU5vZGUqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVybiB0b1JlZih0b0pTKHRvSlMoY3R4KSwg
cHJvZmlsZU5vZGUtPnBhcmVudCgpKQorICAgICk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdl
dEhlYWQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYsIEpTVmFsdWVSZWYqKQoreworICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIAor
ICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjdHgsIHRoaXNPYmplY3QsIFByb2ZpbGVO
b2RlQ2xhc3MoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwor
ICAgIAorICAgIFByb2ZpbGVOb2RlKiBwcm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVO
b2RlKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gdG9SZWYo
dG9KUyh0b0pTKGN0eCksIHByb2ZpbGVOb2RlLT5oZWFkKCkpKTsKK30KKyAgICAKIHN0YXRpYyBK
U1ZhbHVlUmVmIGdldFZpc2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYqKQogewogICAgIEpTQzo6SlNMb2NrIGxvY2so
ZmFsc2UpOwpAQCAtMTkyLDYgKzIxNSwxNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRWaXNpYmxl
KEpTQ29udGV4dFJlCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjdHgsIHByb2ZpbGVO
b2RlLT52aXNpYmxlKCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBnZXRDYWxsVUlEKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVl
UmVmKikKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICAKKyAgICBpZiAoIUpT
VmFsdWVJc09iamVjdE9mQ2xhc3MoY3R4LCB0aGlzT2JqZWN0LCBQcm9maWxlTm9kZUNsYXNzKCkp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKKyAgICAKKyAgICBQ
cm9maWxlTm9kZSogcHJvZmlsZU5vZGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlTm9kZSo+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVy
KGN0eCwgcHJvZmlsZU5vZGUtPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKK30KKwogc3RhdGlj
IHZvaWQgZmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIFByb2ZpbGVOb2RlKiBw
cm9maWxlTm9kZSA9IHN0YXRpY19jYXN0PFByb2ZpbGVOb2RlKj4oSlNPYmplY3RHZXRQcml2YXRl
KG9iamVjdCkpOwpAQCAtMjExLDcgKzI0NSwxMCBAQCBKU0NsYXNzUmVmIFByb2ZpbGVOb2RlQ2xh
c3MoKQogICAgICAgICB7ICJzZWxmUGVyY2VudCIsIGdldFNlbGZQZXJjZW50LCAwLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAibnVtYmVyT2ZDYWxscyIsIGdldE51bWJl
ck9mQ2FsbHMsIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9LAogICAgICAgICB7ICJjaGls
ZHJlbiIsIGdldENoaWxkcmVuLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAgICAg
ICAgeyAicGFyZW50IiwgZ2V0UGFyZW50LCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwK
KyAgICAgICAgeyAiaGVhZCIsIGdldEhlYWQsIDAsIGtKU0NsYXNzQXR0cmlidXRlTm9uZSB9LAog
ICAgICAgICB7ICJ2aXNpYmxlIiwgZ2V0VmlzaWJsZSwgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVO
b25lIH0sCisgICAgICAgIHsgImNhbGxVSUQiLCBnZXRDYWxsVUlELCAwLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAwLCAwLCAwLCAwIH0KICAgICB9OwogCkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2Zp
bGVEYXRhR3JpZFRyZWUuanMJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCAyODAgTm9ydGggSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvLyBCb3R0b20gVXAgUHJvZmlsaW5nIHNob3dzIHRoZSBlbnRpcmUgY2FsbHN0YWNrIGJh
Y2t3YXJkczoKKy8vIFRoZSByb290IG5vZGUgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGlu
ZGl2aWR1YWwgZnVuY3Rpb24gY2FsbGVkLCBhbmQgZWFjaCBjaGlsZCBvZiB0aGF0IG5vZGUgcmVw
cmVzZW50cworLy8gYSByZXZlcnNlLWNhbGxzdGFjayBzaG93aW5nIGhvdyBtYW55IG9mIHRob3Nl
IGNhbGxzIGNhbWUgZnJvbSBpdC4gU28sIHVubGlrZSB0b3AtZG93biwgdGhlIHN0YXRpc3RpY3Mg
aW4gCisvLyBlYWNoIGNoaWxkIHN0aWxsIHJlcHJlc2VudCB0aGUgcm9vdCBub2RlLiBXZSBoYXZl
IHRvIGJlIHBhcnRpY3VsYXJseSBjYXJlZnVsIG9mIHJlY3Vyc2lvbiB3aXRoIHRoaXMgbW9kZSAK
Ky8vIGJlY2F1c2UgYSByb290IG5vZGUgY2FuIHJlcHJlc2VudCBpdHNlbGYgQU5EIGFuIGFuY2Vz
dG9yLgorCitXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlID0gZnVuY3Rp
b24oLypQcm9maWxlVmlldyovIGFQcm9maWxlVmlldywgLypQcm9maWxlTm9kZSovIGFQcm9maWxl
Tm9kZSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5jYWxsKHRoaXMs
IGFQcm9maWxlVmlldywgYVByb2ZpbGVOb2RlKTsKKyAgICAKKyAgICAvLyBJdGVyYXRlIGVhY2gg
bm9kZSBpbiBwcmUtb3JkZXIuCisgICAgdmFyIHByb2ZpbGVOb2RlVUlEcyA9IDA7CisgICAgdmFy
IHByb2ZpbGVOb2RlR3JvdXBzID0gW1tdLCBbYVByb2ZpbGVOb2RlXV07CisgICAgdmFyIHZpc2l0
ZWRQcm9maWxlTm9kZXNGb3JDYWxsVUlEID0ge307CisgICAgCisgICAgdGhpcy5fcmVtYWluaW5n
Tm9kZUluZm9zID0gW107CisgICAgCisgICAgZm9yICh2YXIgcHJvZmlsZU5vZGVHcm91cEluZGV4
ID0gMDsgcHJvZmlsZU5vZGVHcm91cEluZGV4IDwgcHJvZmlsZU5vZGVHcm91cHMubGVuZ3RoOyAr
K3Byb2ZpbGVOb2RlR3JvdXBJbmRleCkKKyAgICB7CisgICAgICAgIHZhciBwYXJlbnRQcm9maWxl
Tm9kZXMgPSBwcm9maWxlTm9kZUdyb3Vwc1twcm9maWxlTm9kZUdyb3VwSW5kZXhdOworICAgICAg
ICB2YXIgcHJvZmlsZU5vZGVzID0gcHJvZmlsZU5vZGVHcm91cHNbKytwcm9maWxlTm9kZUdyb3Vw
SW5kZXhdOworICAgICAgICB2YXIgY291bnQgPSBwcm9maWxlTm9kZXMubGVuZ3RoOworICAgICAg
ICAgICAgCisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRl
eCkgeworICAgICAgICAKKyAgICAgICAgICAgIHZhciBwcm9maWxlTm9kZSA9IHByb2ZpbGVOb2Rl
c1tpbmRleF07CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghcHJv
ZmlsZU5vZGUuVUlEKQorICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLlVJRCA9ICsrcHJvZmls
ZU5vZGVVSURzOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocHJvZmlsZU5vZGUuaGVh
ZCAmJiBwcm9maWxlTm9kZSAhPT0gcHJvZmlsZU5vZGUuaGVhZCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAvLyBUaGUgdG90YWwgdGltZSBvZiB0aGlzIGFuY2VzdG9yIGlzIGFjY291
bnRlZCBmb3IgaWYgd2UncmUgaW4gYW55IGZvcm0gb2YgcmVjdXJzaXZlIGN5Y2xlLgorICAgICAg
ICAgICAgICAgIHZhciB2aXNpdGVkTm9kZXMgPSB2aXNpdGVkUHJvZmlsZU5vZGVzRm9yQ2FsbFVJ
RFtwcm9maWxlTm9kZS5jYWxsVUlEXTsKKyAgICAgICAgICAgICAgICB2YXIgdG90YWxUaW1lQWNj
b3VudGVkRm9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KCF2aXNpdGVkTm9kZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzID0ge30K
KyAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFByb2ZpbGVOb2Rlc0ZvckNhbGxVSURbcHJvZmls
ZU5vZGUuY2FsbFVJRF0gPSB2aXNpdGVkTm9kZXM7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB0b3RhbCB0
aW1lIGZvciB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiBhY2NvdW50ZWQgZm9yIGlmZiBvbmUg
b2YgaXQncyBwYXJlbnRzIGhhcyBhbHJlYWR5IGJlZW4gdmlzaXRlZC4KKyAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgY2FuIGRvIHRoaXMgY2hlY2sgaW4gdGhpcyBzdHlsZSBiZWNhdXNlIHdlIGFy
ZSB0cmF2ZXJzaW5nIHRoZSB0cmVlIGluIHByZS1vcmRlci4KKyAgICAgICAgICAgICAgICAgICAg
dmFyIHBhcmVudENvdW50ID0gcGFyZW50UHJvZmlsZU5vZGVzLmxlbmd0aDsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHBhcmVudEluZGV4ID0gMDsg
cGFyZW50SW5kZXggPCBwYXJlbnRDb3VudDsgKytwYXJlbnRJbmRleCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2aXNpdGVkTm9kZXNbcGFyZW50UHJvZmlsZU5vZGVzW3BhcmVudEluZGV4
XS5VSURdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxUaW1lQWNjb3VudGVk
Rm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzW3Byb2ZpbGVOb2RlLlVJRF0gPSB0cnVlOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuX3JlbWFpbmluZ05vZGVJbmZvcy5w
dXNoKHsgYW5jZXN0b3I6cHJvZmlsZU5vZGUsIGZvY3VzTm9kZTpwcm9maWxlTm9kZSwgdG90YWxU
aW1lQWNjb3VudGVkRm9yOnRvdGFsVGltZUFjY291bnRlZEZvciB9KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gcHJvZmlsZU5vZGUuY2hpbGRyZW47CisgICAg
ICAgIAorICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBwcm9maWxlTm9kZUdyb3Vwcy5wdXNoKHBhcmVudFByb2ZpbGVOb2Rlcy5j
b25jYXQoW3Byb2ZpbGVOb2RlXSkpCisgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGVHcm91cHMu
cHVzaChjaGlsZHJlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBQb3B1bGF0ZSB0aGUgdG9wIGxldmVsIG5vZGVzLgorICAgIFdlYkluc3BlY3Rvci5Cb3R0b21V
cFByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9wb3B1bGF0ZS5jYWxsKHRoaXMpOworICAg
IAorICAgIHJldHVybiB0aGlzOworfQorCitXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0
YUdyaWRUcmVlLnByb3RvdHlwZSA9IHsKKworICAgIC8vIFdoZW4gZm9jdXNpbmcsIHdlIGtlZXAg
dGhlIGVudGlyZSBjYWxsc3RhY2sgdXAgdG8gdGhpcyBhbmNlc3Rvci4KKyAgICBmb2N1czogZnVu
Y3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2RlKi8gcHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7
CisgICAgICAgIGlmICghcHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLl9zYXZlKCk7CisgICAgICAgIAorICAgICAgICB2YXIgY3VycmVudE5v
ZGUgPSBwcm9maWxlRGF0YUdyaWROb2RlOworICAgICAgICB2YXIgZm9jdXNOb2RlID0gcHJvZmls
ZURhdGFHcmlkTm9kZTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZS5wYXJl
bnQgJiYgKGN1cnJlbnROb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3Jp
ZE5vZGUpKQorICAgICAgICB7CisgICAgICAgICAgICBjdXJyZW50Tm9kZS5fdGFrZVByb3BlcnRp
ZXNGcm9tUHJvZmlsZURhdGFHcmlkTm9kZShwcm9maWxlRGF0YUdyaWROb2RlKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgZm9jdXNOb2RlID0gY3VycmVudE5vZGU7CisgICAgICAgICAgICBj
dXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudDsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKGN1cnJlbnROb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3Jp
ZE5vZGUpCisgICAgICAgICAgICAgICAgY3VycmVudE5vZGUuX2tlZXBPbmx5Q2hpbGQoZm9jdXNO
b2RlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtmb2N1
c05vZGVdOworICAgICAgICB0aGlzLnRvdGFsVGltZSA9IHByb2ZpbGVEYXRhR3JpZE5vZGUudG90
YWxUaW1lOworICAgIH0sCisgICAgCisgICAgZXhjbHVkZTogZnVuY3Rpb24oLypQcm9maWxlRGF0
YUdyaWROb2RlKi8gcHJvZmlsZURhdGFHcmlkTm9kZSkKKyAgICB7CisgICAgICAgIGlmICghcHJv
ZmlsZURhdGFHcmlkTm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9z
YXZlKCk7CisgICAgICAgIAorICAgICAgICB2YXIgZXhjbHVkZWRDYWxsVUlEID0gcHJvZmlsZURh
dGFHcmlkTm9kZS5jYWxsVUlEOworICAgICAgICB2YXIgZXhjbHVkZWRUb3BMZXZlbENoaWxkID0g
dGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtleGNsdWRlZENhbGxVSURdOworICAgICAgICAKKyAgICAg
ICAgLy8gSWYgd2UgaGF2ZSBhIHRvcCBsZXZlbCBub2RlIHRoYXQgaXMgZXhjbHVkZWQsIGdldCBy
aWQgb2YgaXQgY29tcGxldGVseSAobm90IGtlZXBpbmcgY2hpbGRyZW4pLAorICAgICAgICAvLyBz
aW5jZSBib3R0b20gdXAgZGF0YSByZWxpZXMgZW50aXJlbHkgb24gdGhlIHJvb3Qgbm9kZS4KKyAg
ICAgICAgaWYgKGV4Y2x1ZGVkVG9wTGV2ZWxDaGlsZCkKKyAgICAgICAgICAgIHRoaXMuY2hpbGRy
ZW4ucmVtb3ZlKGV4Y2x1ZGVkVG9wTGV2ZWxDaGlsZCk7CisgICAgICAgIAorICAgICAgICB2YXIg
Y2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOworICAgICAgICB2YXIgY291bnQgPSBjaGlsZHJlbi5s
ZW5ndGg7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291
bnQ7ICsraW5kZXgpCisgICAgICAgICAgICBjaGlsZHJlbltpbmRleF0uX2V4Y2x1ZGUoZXhjbHVk
ZWRDYWxsVUlEKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLmxhc3RDb21wYXJhdG9yKQor
ICAgICAgICAgICAgdGhpcy5zb3J0KHRoaXMubGFzdENvbXBhcmF0b3IsIHRydWUpOworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLkJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvdG90eXBlOwor
CitXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oLypQ
cm9maWxlVmlldyovIHByb2ZpbGVWaWV3LCAvKlByb2ZpbGVOb2RlKi8gcHJvZmlsZU5vZGUsIC8q
Qm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKi8gb3duaW5nVHJlZSkKK3sKKyAgICAvLyBJbiBi
b3R0b20gdXAgbW9kZSwgb3VyIHBhcmVudHMgYXJlIG91ciBjaGlsZHJlbiBzaW5jZSB3ZSBkaXNw
bGF5IGFuIGludmVydGVkIHRyZWUuCisgICAgLy8gSG93ZXZlciwgd2UgZG9uJ3Qgd2FudCB0byBz
aG93IHRoZSB2ZXJ5IHRvcCBwYXJlbnQgc2luY2UgaXQgaXMgcmVkdW5kYW50LgorICAgIHZhciBo
YXNDaGlsZHJlbiA9ICEhKHByb2ZpbGVOb2RlLnBhcmVudCAmJiBwcm9maWxlTm9kZS5wYXJlbnQu
cGFyZW50KTsKKworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLmNhbGwodGhp
cywgcHJvZmlsZVZpZXcsIHByb2ZpbGVOb2RlLCBvd25pbmdUcmVlLCBoYXNDaGlsZHJlbik7CisK
KyAgICB0aGlzLl9yZW1haW5pbmdOb2RlSW5mb3MgPSBbXTsKK30KKworV2ViSW5zcGVjdG9yLkJv
dHRvbVVwUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CisgICAgCisgICAgX3Rha2VQ
cm9wZXJ0aWVzRnJvbVByb2ZpbGVEYXRhR3JpZE5vZGU6IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFH
cmlkTm9kZSovIHByb2ZpbGVEYXRhR3JpZE5vZGUpCisgICAgeworICAgICAgICB0aGlzLl9zYXZl
KCk7CisKKyAgICAgICAgdGhpcy5zZWxmVGltZSA9IHByb2ZpbGVEYXRhR3JpZE5vZGUuc2VsZlRp
bWU7CisgICAgICAgIHRoaXMudG90YWxUaW1lID0gcHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRp
bWU7CisgICAgICAgIHRoaXMubnVtYmVyT2ZDYWxscyA9IHByb2ZpbGVEYXRhR3JpZE5vZGUubnVt
YmVyT2ZDYWxsczsKKyAgICB9LAorICAgIAorICAgIC8vIFdoZW4gZm9jdXNpbmcsIHdlIGtlZXAg
anVzdCB0aGUgbWVtYmVycyBvZiB0aGUgY2FsbHN0YWNrLgorICAgIF9rZWVwT25seUNoaWxkOiBm
dW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBjaGlsZCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3NhdmUoKTsKKworICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRo
aXMuYXBwZW5kQ2hpbGQoY2hpbGQpOworICAgIH0sCisKKyAgICBfZXhjbHVkZTogZnVuY3Rpb24o
YUNhbGxVSUQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcmVtYWluaW5nTm9kZUluZm9zKQor
ICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGUoKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3Nh
dmUoKTsKKyAgICAgICAgCisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47Cisg
ICAgICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICAKKyAgICAg
ICAgd2hpbGUgKGluZGV4LS0pCisgICAgICAgICAgICBjaGlsZHJlbltpbmRleF0uX2V4Y2x1ZGUo
YUNhbGxVSUQpOworICAgICAgICAKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbkJ5
Q2FsbFVJRFthQ2FsbFVJRF07CisgICAgICAgIAorICAgICAgICBpZiAoY2hpbGQpCisgICAgICAg
ICAgICB0aGlzLl9tZXJnZShjaGlsZCwgdHJ1ZSk7CisgICAgfSwKKyAgICAKKyAgICBfbWVyZ2U6
IGZ1bmN0aW9uKC8qUHJvZmlsZURhdGFHcmlkTm9kZSovIGNoaWxkLCAvKkJvb2xlYW4qLyBzaG91
bGRBYnNvcmIpCisgICAgeworICAgICAgICB0aGlzLnNlbGZUaW1lIC09IGNoaWxkLnNlbGZUaW1l
OworICAgICAgICAKKyAgICAgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJv
dG90eXBlLl9tZXJnZS5jYWxsKHRoaXMsIGNoaWxkLCBzaG91bGRBYnNvcmIpOworICAgIH0sCisg
ICAgCisgICAgX3BvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBy
ZW1haW5pbmdOb2RlSW5mb3MgPSB0aGlzLl9yZW1haW5pbmdOb2RlSW5mb3M7CisgICAgICAgIHZh
ciBjb3VudCA9IHJlbWFpbmluZ05vZGVJbmZvcy5sZW5ndGg7CisgICAgICAgIAorICAgICAgICBm
b3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgCisg
ICAgICAgICAgICB2YXIgbm9kZUluZm8gPSByZW1haW5pbmdOb2RlSW5mb3NbaW5kZXhdOworICAg
ICAgICAgICAgdmFyIGFuY2VzdG9yID0gbm9kZUluZm8uYW5jZXN0b3I7CisgICAgICAgICAgICB2
YXIgZm9jdXNOb2RlID0gbm9kZUluZm8uZm9jdXNOb2RlOworICAgICAgICAgICAgdmFyIGNoaWxk
ID0gdGhpcy5maW5kQ2hpbGQoYW5jZXN0b3IpOworICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBJZiB3ZSBhbHJlYWR5IGhhdmUgdGhpcyBjaGlsZCwgdGhlbiBtZXJnZSB0aGUgZGF0YSB0b2dl
dGhlci4KKyAgICAgICAgICAgIGlmIChjaGlsZCkgeworICAgIAorICAgICAgICAgICAgICAgIHZh
ciB0b3RhbFRpbWVBY2NvdW50ZWRGb3IgPSBub2RlSW5mby50b3RhbFRpbWVBY2NvdW50ZWRGb3I7
CisgICAgCisgICAgICAgICAgICAgICAgY2hpbGQuc2VsZlRpbWUgKz0gZm9jdXNOb2RlLnNlbGZU
aW1lOworICAgICAgICAgICAgICAgIGNoaWxkLm51bWJlck9mQ2FsbHMgKz0gZm9jdXNOb2RlLm51
bWJlck9mQ2FsbHM7CisgICAgCisgICAgICAgICAgICAgICAgaWYgKCF0b3RhbFRpbWVBY2NvdW50
ZWRGb3IpCisgICAgICAgICAgICAgICAgICAgIGNoaWxkLnRvdGFsVGltZSArPSBmb2N1c05vZGUu
dG90YWxUaW1lOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIElmIG5vdCwg
YWRkIGl0IGFzIGEgdHJ1ZSBhbmNlc3Rvci4KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgCisg
ICAgICAgICAgICAgICAgLy8gSW4gaGVhdnkgbW9kZSwgd2UgdGFrZSBvdXIgdmlzdWFsIGlkZW50
aXR5IGZyb20gYW5jZXN0b3Igbm9kZS4uLgorICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IG5l
dyBXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlKHRoaXMucHJvZmlsZVZp
ZXcsIGFuY2VzdG9yLCB0aGlzLnRyZWUpOworCisgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9y
ICE9PSBmb2N1c05vZGUpCisgICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgYWN0dWFsIHN0YXRpc3RpY3MgZnJvbSB0aGUg
InJvb3QiIG5vZGUgKGJvdHRvbSBvZiB0aGUgY2FsbHN0YWNrKS4KKyAgICAgICAgICAgICAgICAg
ICAgY2hpbGQuc2VsZlRpbWUgPSBmb2N1c05vZGUuc2VsZlRpbWU7CisgICAgICAgICAgICAgICAg
ICAgIGNoaWxkLnRvdGFsVGltZSA9IGZvY3VzTm9kZS50b3RhbFRpbWU7CisgICAgICAgICAgICAg
ICAgICAgIGNoaWxkLm51bWJlck9mQ2FsbHMgPSBmb2N1c05vZGUubnVtYmVyT2ZDYWxsczsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxk
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHBhcmVudCA9IGFuY2VzdG9yLnBh
cmVudDsKKworICAgICAgICAgICAgLy8gb25seQorICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBw
YXJlbnQucGFyZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5vZGVJbmZvLmFu
Y2VzdG9yID0gcGFyZW50OworICAgICAgICAgICAgICAgIGNoaWxkLl9yZW1haW5pbmdOb2RlSW5m
b3MucHVzaChub2RlSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9yZW1haW5pbmdOb2RlSW5mb3M7CisgICAgCisgICAgICAgIGlm
ICh0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50
TGlzdGVuZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9wdWxhdGUsIHRoaXMpOworICAgIH0KK30KKwor
CitXZWJJbnNwZWN0b3IuQm90dG9tVXBQcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGU7CkluZGV4
OiBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCShyZXZpc2lvbiA0Mjc0NikK
KysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTY5LDMyICsxNjksMTkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9
IHsKICAgICBpbnNlcnRDaGlsZDogZnVuY3Rpb24oY2hpbGQsIGluZGV4KQogICAgIHsKICAgICAg
ICAgaWYgKCFjaGlsZCkKLSAgICAgICAgICAgIHRocm93KCJOb2RlIGNhbid0IGJlIHVuZGVmaW5l
ZCBvciBudWxsLiIpOworICAgICAgICAgICAgdGhyb3coImluc2VydENoaWxkOiBOb2RlIGNhbid0
IGJlIHVuZGVmaW5lZCBvciBudWxsLiIpOwogICAgICAgICBpZiAoY2hpbGQucGFyZW50ID09PSB0
aGlzKQotICAgICAgICAgICAgdGhyb3coIk5vZGUgaXMgYWxyZWFkeSBhIGNoaWxkIG9mIHRoaXMg
bm9kZS4iKTsKKyAgICAgICAgICAgIHRocm93KCJpbnNlcnRDaGlsZDogTm9kZSBpcyBhbHJlYWR5
IGEgY2hpbGQgb2YgdGhpcyBub2RlLiIpOwogCiAgICAgICAgIGlmIChjaGlsZC5wYXJlbnQpCiAg
ICAgICAgICAgICBjaGlsZC5wYXJlbnQucmVtb3ZlQ2hpbGQoY2hpbGQpOwogCi0gICAgICAgIHZh
ciBwcmV2aW91c0NoaWxkID0gKGluZGV4ID4gMCA/IHRoaXMuY2hpbGRyZW5baW5kZXggLSAxXSA6
IG51bGwpOwotICAgICAgICBpZiAocHJldmlvdXNDaGlsZCkgewotICAgICAgICAgICAgcHJldmlv
dXNDaGlsZC5uZXh0U2libGluZyA9IGNoaWxkOwotICAgICAgICAgICAgY2hpbGQucHJldmlvdXNT
aWJsaW5nID0gcHJldmlvdXNDaGlsZDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjaGls
ZC5wcmV2aW91c1NpYmxpbmcgPSBudWxsOwotCi0gICAgICAgIHZhciBuZXh0Q2hpbGQgPSB0aGlz
LmNoaWxkcmVuW2luZGV4XTsKLSAgICAgICAgaWYgKG5leHRDaGlsZCkgewotICAgICAgICAgICAg
bmV4dENoaWxkLnByZXZpb3VzU2libGluZyA9IGNoaWxkOwotICAgICAgICAgICAgY2hpbGQubmV4
dFNpYmxpbmcgPSBuZXh0Q2hpbGQ7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2hpbGQu
bmV4dFNpYmxpbmcgPSBudWxsOwotCiAgICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGluZGV4
LCAwLCBjaGlsZCk7CiAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlOwogCiAgICAgICAg
IGNoaWxkLnBhcmVudCA9IHRoaXM7CiAgICAgICAgIGNoaWxkLmRhdGFHcmlkID0gdGhpcy5kYXRh
R3JpZDsKKyAgICAgICAgY2hpbGQuX3JlY2FsY3VsYXRlU2libGluZ3MoaW5kZXgpOwogCiAgICAg
ICAgIGRlbGV0ZSBjaGlsZC5fZGVwdGg7CiAgICAgICAgIGRlbGV0ZSBjaGlsZC5fcmV2ZWFsZWQ7
CkBAIC0yMTYsOSArMjAzLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsK
ICAgICByZW1vdmVDaGlsZDogZnVuY3Rpb24oY2hpbGQpCiAgICAgewogICAgICAgICBpZiAoIWNo
aWxkKQotICAgICAgICAgICAgdGhyb3coIk5vZGUgY2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwu
Iik7CisgICAgICAgICAgICB0aHJvdygicmVtb3ZlQ2hpbGQ6IE5vZGUgY2FuJ3QgYmUgdW5kZWZp
bmVkIG9yIG51bGwuIik7CiAgICAgICAgIGlmIChjaGlsZC5wYXJlbnQgIT09IHRoaXMpCi0gICAg
ICAgICAgICB0aHJvdygiTm9kZSBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUuIik7CisgICAg
ICAgICAgICB0aHJvdygicmVtb3ZlQ2hpbGQ6IE5vZGUgaXMgbm90IGEgY2hpbGQgb2YgdGhpcyBu
b2RlLiIpOwogCiAgICAgICAgIGNoaWxkLmRlc2VsZWN0KCk7CiAKQEAgLTIzMyw2ICsyMjAsOSBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBjaGlsZC5wYXJl
bnQgPSBudWxsOwogICAgICAgICBjaGlsZC5uZXh0U2libGluZyA9IG51bGw7CiAgICAgICAgIGNo
aWxkLnByZXZpb3VzU2libGluZyA9IG51bGw7CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5j
aGlsZHJlbi5sZW5ndGggPD0gMCkKKyAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxz
ZTsKICAgICB9LAogCiAgICAgcmVtb3ZlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKQEAgLTI0OSw2ICsy
MzksNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9CiAK
ICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0g
ZmFsc2U7CiAgICAgfSwKIAogICAgIHJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlOiBmdW5jdGlvbigp
CkBAIC01MTksNiArNTEwLDM0IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCisgICAgc2V0IGhhc0NoaWxkcmVu
KHgpCisgICAgeworICAgICAgICBpZiAodGhpcy5faGFzQ2hpbGRyZW4gPT09IHgpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faGFzQ2hpbGRyZW4gPSB4OworCisgICAgICAg
IGlmICghdGhpcy5fZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICBpZiAodGhpcy5faGFzQ2hpbGRyZW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuYWRkU3R5bGVDbGFzcygicGFyZW50Iik7CisgICAgICAgICAgICBpZiAodGhp
cy5leHBhbmRlZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
ImV4cGFuZGVkIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInBhcmVudCIpOworICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJleHBhbmRlZCIpOworICAgICAgICB9
CisgICAgfSwKKworICAgIGdldCBoYXNDaGlsZHJlbigpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5faGFzQ2hpbGRyZW47CisgICAgfSwKKwogICAgIHNldCByZXZlYWxlZCh4KQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX3JldmVhbGVkID09PSB4KQpAQCAtNjI0LDYgKzY0MywyOCBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICByZW1vdmVDaGlsZHJl
bjogV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbiwKICAgICBy
ZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZTogV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5y
ZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSwKIAorICAgIF9yZWNhbGN1bGF0ZVNpYmxpbmdzOiBmdW5j
dGlvbihteUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB2YXIgcHJldmlvdXNDaGlsZCA9IChteUluZGV4ID4gMCA/
IHRoaXMucGFyZW50LmNoaWxkcmVuW215SW5kZXggLSAxXSA6IG51bGwpOworICAgICAgICAKKyAg
ICAgICAgaWYgKHByZXZpb3VzQ2hpbGQpIHsKKyAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQubmV4
dFNpYmxpbmcgPSB0aGlzOworICAgICAgICAgICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBwcmV2
aW91c0NoaWxkOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMucHJldmlvdXNTaWJs
aW5nID0gbnVsbDsKKworICAgICAgICB2YXIgbmV4dENoaWxkID0gdGhpcy5wYXJlbnQuY2hpbGRy
ZW5bbXlJbmRleCArIDFdOworICAgICAgICAKKyAgICAgICAgaWYgKG5leHRDaGlsZCkgeworICAg
ICAgICAgICAgbmV4dENoaWxkLnByZXZpb3VzU2libGluZyA9IHRoaXM7CisgICAgICAgICAgICB0
aGlzLm5leHRTaWJsaW5nID0gbmV4dENoaWxkOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHRoaXMubmV4dFNpYmxpbmcgPSBudWxsOworICAgIH0sCisKICAgICBjb2xsYXBzZTogZnVuY3Rp
b24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCkluZGV4OiBXZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcwkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVl
LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCAyODAgTm9ydGggSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlk
Tm9kZSA9IGZ1bmN0aW9uKGFQcm9maWxlVmlldywgYVByb2ZpbGVOb2RlLCBhVHJlZSwgaGFzQ2hp
bGRyZW4pCit7CisgICAgdGhpcy5wcm9maWxlVmlldyA9IGFQcm9maWxlVmlldzsKKyAgICB0aGlz
LnByb2ZpbGVOb2RlID0gYVByb2ZpbGVOb2RlOworCisgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5jYWxsKHRoaXMsIG51bGwsIGhhc0NoaWxkcmVuKTsKKworICAgIHRoaXMuYWRkRXZlbnRM
aXN0ZW5lcigicG9wdWxhdGUiLCB0aGlzLl9wb3B1bGF0ZSwgdGhpcyk7CisgICAgCisgICAgdGhp
cy50cmVlID0gYVRyZWU7CisgICAgCisgICAgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRCA9IHt9Owor
ICAgIHRoaXMubGFzdENvbXBhcmF0b3IgPSBudWxsOworCisgICAgdGhpcy5jYWxsVUlEID0gYVBy
b2ZpbGVOb2RlLmNhbGxVSUQ7CisgICAgdGhpcy5zZWxmVGltZSA9IGFQcm9maWxlTm9kZS5zZWxm
VGltZTsKKyAgICB0aGlzLnRvdGFsVGltZSA9IGFQcm9maWxlTm9kZS50b3RhbFRpbWU7CisgICAg
dGhpcy5mdW5jdGlvbk5hbWUgPSBhUHJvZmlsZU5vZGUuZnVuY3Rpb25OYW1lOworICAgIHRoaXMu
bnVtYmVyT2ZDYWxscyA9IGFQcm9maWxlTm9kZS5udW1iZXJPZkNhbGxzOworICAgIHRoaXMudXJs
ID0gYVByb2ZpbGVOb2RlLnVybDsKK30KKworV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5v
ZGUucHJvdG90eXBlID0geworICAgIGdldCBkYXRhKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9u
IGZvcm1hdE1pbGxpc2Vjb25kcyh0aW1lKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
TnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aW1lIC8gMTAwMCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
LmJpbmQoV2ViSW5zcGVjdG9yKSwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgZGF0
YSA9IHt9OworICAgICAgICAKKyAgICAgICAgZGF0YVsiZnVuY3Rpb24iXSA9IHRoaXMuZnVuY3Rp
b25OYW1lOworICAgICAgICBkYXRhWyJjYWxscyJdID0gdGhpcy5udW1iZXJPZkNhbGxzOworCisg
ICAgICAgIGlmICh0aGlzLnByb2ZpbGVWaWV3LnNob3dTZWxmVGltZUFzUGVyY2VudCkKKyAgICAg
ICAgICAgIGRhdGFbInNlbGYiXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4yZiUlIiwgdGhp
cy5zZWxmUGVyY2VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGFbInNlbGYiXSA9
IGZvcm1hdE1pbGxpc2Vjb25kcyh0aGlzLnNlbGZUaW1lKTsKKworICAgICAgICBpZiAodGhpcy5w
cm9maWxlVmlldy5zaG93VG90YWxUaW1lQXNQZXJjZW50KQorICAgICAgICAgICAgZGF0YVsidG90
YWwiXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4yZiUlIiwgdGhpcy50b3RhbFBlcmNlbnQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhWyJ0b3RhbCJdID0gZm9ybWF0TWlsbGlz
ZWNvbmRzKHRoaXMudG90YWxUaW1lKTsKKworICAgICAgICBpZiAodGhpcy5wcm9maWxlVmlldy5z
aG93VG90YWxUaW1lQXNQZXJjZW50KQorICAgICAgICAgICAgZGF0YVsiYXZlcmFnZSJdID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIlLjJmJSUiLCB0aGlzLmF2ZXJhZ2VQZXJjZW50KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZGF0YVsiYXZlcmFnZSJdID0gZm9ybWF0TWlsbGlzZWNvbmRz
KHRoaXMuYXZlcmFnZVRpbWUpOworCisgICAgICAgIHJldHVybiBkYXRhOworICAgIH0sCisKKyAg
ICBjcmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
dmFyIGNlbGwgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxs
LmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllcik7CisKKyAgICAgICAgaWYgKGNvbHVtbklkZW50
aWZpZXIgPT09ICJzZWxmIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbikKKyAgICAg
ICAgICAgIGNlbGwuYWRkU3R5bGVDbGFzcygiaGlnaGxpZ2h0Iik7CisgICAgICAgIGVsc2UgaWYg
KGNvbHVtbklkZW50aWZpZXIgPT09ICJ0b3RhbCIgJiYgdGhpcy5fc2VhcmNoTWF0Y2hlZFRvdGFs
Q29sdW1uKQorICAgICAgICAgICAgY2VsbC5hZGRTdHlsZUNsYXNzKCJoaWdobGlnaHQiKTsKKyAg
ICAgICAgZWxzZSBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gImF2ZXJhZ2UiICYmIHRoaXMuX3Nl
YXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uKQorICAgICAgICAgICAgY2VsbC5hZGRTdHlsZUNsYXNz
KCJoaWdobGlnaHQiKTsKKyAgICAgICAgZWxzZSBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gImNh
bGxzIiAmJiB0aGlzLl9zZWFyY2hNYXRjaGVkQ2FsbHNDb2x1bW4pCisgICAgICAgICAgICBjZWxs
LmFkZFN0eWxlQ2xhc3MoImhpZ2hsaWdodCIpOworCisgICAgICAgIGlmIChjb2x1bW5JZGVudGlm
aWVyICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgcmV0dXJuIGNlbGw7CisKKyAgICAgICAg
aWYgKHRoaXMucHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbikKKyAgICAg
ICAgICAgIGNlbGwuYWRkU3R5bGVDbGFzcygiaGlnaGxpZ2h0Iik7CisKKyAgICAgICAgaWYgKHRo
aXMucHJvZmlsZU5vZGUudXJsKSB7CisgICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSBXZWJJbnNw
ZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwodGhpcy5wcm9maWxlTm9kZS51cmwpOworCisgICAgICAg
ICAgICB2YXIgdXJsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKKyAgICAg
ICAgICAgIHVybEVsZW1lbnQuY2xhc3NOYW1lID0gInByb2ZpbGUtbm9kZS1maWxlIHdlYmtpdC1o
dG1sLXJlc291cmNlLWxpbmsiOworICAgICAgICAgICAgdXJsRWxlbWVudC5ocmVmID0gdGhpcy5w
cm9maWxlTm9kZS51cmw7CisgICAgICAgICAgICB1cmxFbGVtZW50LmxpbmVOdW1iZXIgPSB0aGlz
LnByb2ZpbGVOb2RlLmxpbmVOdW1iZXI7CisKKyAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVO
b2RlLmxpbmVOdW1iZXIgPiAwKQorICAgICAgICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRl
bnQgPSBmaWxlTmFtZSArICI6IiArIHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlcjsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB1cmxFbGVtZW50LnRleHRDb250ZW50ID0gZmls
ZU5hbWU7CisKKyAgICAgICAgICAgIGNlbGwuaW5zZXJ0QmVmb3JlKHVybEVsZW1lbnQsIGNlbGwu
Zmlyc3RDaGlsZCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9LAor
CisgICAgc2VsZWN0OiBmdW5jdGlvbihzdXByZXNzU2VsZWN0ZWRFdmVudCkKKyAgICB7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnNlbGVjdC5jYWxsKHRoaXMs
IHN1cHJlc3NTZWxlY3RlZEV2ZW50KTsKKyAgICAgICAgdGhpcy5wcm9maWxlVmlldy5fZGF0YUdy
aWROb2RlU2VsZWN0ZWQodGhpcyk7CisgICAgfSwKKworICAgIGRlc2VsZWN0OiBmdW5jdGlvbihz
dXByZXNzRGVzZWxlY3RlZEV2ZW50KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZS5wcm90b3R5cGUuZGVzZWxlY3QuY2FsbCh0aGlzLCBzdXByZXNzRGVzZWxlY3RlZEV2
ZW50KTsKKyAgICAgICAgdGhpcy5wcm9maWxlVmlldy5fZGF0YUdyaWROb2RlRGVzZWxlY3RlZCh0
aGlzKTsKKyAgICB9LAorCisgICAgZXhwYW5kOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMucGFyZW50KQorICAgICAgICB7ICAgICAgICAKKyAgICAgICAgICAgIHZhciBjdXJy
ZW50Q29tcGFyYXRvciA9IHRoaXMucGFyZW50Lmxhc3RDb21wYXJhdG9yOworICAgIAorICAgICAg
ICAgICAgaWYgKCFjdXJyZW50Q29tcGFyYXRvciB8fCAoY3VycmVudENvbXBhcmF0b3IgPT09IHRo
aXMubGFzdENvbXBhcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAg
ICAgICAgIHRoaXMuc29ydChjdXJyZW50Q29tcGFyYXRvcik7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmV4cGFuZC5jYWxs
KHRoaXMpOworICAgIH0sCisKKyAgICBzb3J0OiBmdW5jdGlvbigvKkZ1bmN0aW9uKi8gY29tcGFy
YXRvciwgLypCb29sZWFuKi8gZm9yY2UpCisgICAgeworICAgICAgICB2YXIgZ3JpZE5vZGVHcm91
cEluZGV4ID0gMDsKKyAgICAgICAgdmFyIGdyaWROb2RlR3JvdXBzID0gW1t0aGlzXV07CisgICAg
ICAgIAorICAgICAgICBmb3IgKDsgZ3JpZE5vZGVHcm91cEluZGV4IDwgZ3JpZE5vZGVHcm91cHMu
bGVuZ3RoOyArK2dyaWROb2RlR3JvdXBJbmRleCkgeworICAgICAgICAKKyAgICAgICAgICAgIHZh
ciBncmlkTm9kZXMgPSBncmlkTm9kZUdyb3Vwc1tncmlkTm9kZUdyb3VwSW5kZXhdOworICAgICAg
ICAgICAgdmFyIGNvdW50ID0gZ3JpZE5vZGVzLmxlbmd0aDsKKyAKKyAgICAgICAgICAgIGZvciAo
dmFyIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgeworICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgdmFyIGdyaWROb2RlID0gZ3JpZE5vZGVzW2luZGV4XTsKKworICAgICAg
ICAgICAgICAgIC8vIElmIHRoZSBncmlkIG5vZGUgaXMgY29sbGFwc2VkLCB0aGVuIGRvbid0IHNv
cnQgY2hpbGRyZW4gKHNhdmUgb3BlcmF0aW9uIGZvciBsYXRlcikuCisgICAgICAgICAgICAgICAg
Ly8gSWYgdGhlIGdyaWQgbm9kZSBoYXMgdGhlIHNhbWUgc29ydGluZyBhcyBwcmV2aW91c2x5LCB0
aGVuIHRoZXJlIGlzIG5vIHBvaW50IGluIHNvcnRpbmcgCisgICAgICAgICAgICAgICAgLy8gaXQg
YWdhaW4uCisgICAgICAgICAgICAgICAgaWYgKCFmb3JjZSAmJiAhZ3JpZE5vZGUuZXhwYW5kZWQg
fHwgZ3JpZE5vZGUubGFzdENvbXBhcmF0b3IgPT09IGNvbXBhcmF0b3IpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgZ3JpZE5vZGUubGFzdENvbXBhcmF0
b3IgPSBjb21wYXJhdG9yOworCisgICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZ3JpZE5v
ZGUuY2hpbGRyZW47CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkQ291bnQgPSBjaGlsZHJlbi5s
ZW5ndGg7CisKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRDb3VudCkgeworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5zb3J0KGNvbXBhcmF0b3IpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgY2hpbGRJbmRl
eCA9IDA7IGNoaWxkSW5kZXggPCBjaGlsZENvdW50OyArK2NoaWxkSW5kZXgpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGlsZHJlbltjaGlsZEluZGV4XS5fcmVjYWxjdWxhdGVTaWJsaW5ncyhj
aGlsZEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGdy
aWROb2RlR3JvdXBzLnB1c2goY2hpbGRyZW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0sCisgICAgCisgICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9u
KC8qUHJvZmlsZURhdGFHcmlkTm9kZSovIGFQcm9maWxlRGF0YUdyaWROb2RlLCBhbkluZGV4KQor
ICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuaW5zZXJ0
Q2hpbGQuY2FsbCh0aGlzLCBhUHJvZmlsZURhdGFHcmlkTm9kZSwgYW5JbmRleCk7CisgICAgICAg
IAorICAgICAgICB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEW2FQcm9maWxlRGF0YUdyaWROb2RlLmNh
bGxVSURdID0gYVByb2ZpbGVEYXRhR3JpZE5vZGU7CisgICAgfSwKKyAgICAKKyAgICByZW1vdmVD
aGlsZDogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2RlKi8gYVByb2ZpbGVEYXRhR3JpZE5v
ZGUpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5y
ZW1vdmVDaGlsZC5jYWxsKHRoaXMsIGFQcm9maWxlRGF0YUdyaWROb2RlKTsKKyAgICAgICAgCisg
ICAgICAgIGRlbGV0ZSB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEW2FQcm9maWxlRGF0YUdyaWROb2Rl
LmNhbGxVSURdOworICAgIH0sCisgICAgCisgICAgcmVtb3ZlQ2hpbGRyZW46IGZ1bmN0aW9uKC8q
UHJvZmlsZURhdGFHcmlkTm9kZSovIGFQcm9maWxlRGF0YUdyaWROb2RlKQorICAgIHsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4uY2Fs
bCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuY2hpbGRyZW5CeUNhbGxVSUQgPSB7IH07
CisgICAgfSwKKyAgICAKKyAgICBmaW5kQ2hpbGQ6IGZ1bmN0aW9uKC8qTm9kZSovIG5vZGUpCisg
ICAgeworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAg
ICAgICByZXR1cm4gdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtub2RlLmNhbGxVSURdOworICAgIH0s
CisgICAgCisgICAgZ2V0IGF2ZXJhZ2VUaW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
LnNlbGZUaW1lIC8gTWF0aC5tYXgoMSwgdGhpcy5udW1iZXJPZkNhbGxzKTsKKyAgICB9LAorCisg
ICAgZ2V0IGF2ZXJhZ2VQZXJjZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmF2ZXJh
Z2VUaW1lIC8gdGhpcy50cmVlLnRvdGFsVGltZSAqIDEwMC4wOworICAgIH0sCisKKyAgICBnZXQg
c2VsZlBlcmNlbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2VsZlRpbWUgLyB0aGlz
LnRyZWUudG90YWxUaW1lICogMTAwLjA7CisgICAgfSwKKworICAgIGdldCB0b3RhbFBlcmNlbnQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudG90YWxUaW1lIC8gdGhpcy50cmVlLnRvdGFs
VGltZSAqIDEwMC4wOworICAgIH0sCisgICAgCisgICAgLy8gV2hlbiBmb2N1c2luZyBhbmQgY29s
bGFwc2luZyB3ZSBtb2RpZnkgbG90cyBvZiBub2RlcyBpbiB0aGUgdHJlZS4KKyAgICAvLyBUaGlz
IGFsbG93cyB1cyB0byByZXN0b3JlIHRoZW0gYWxsIHRvIHRoZWlyIG9yaWdpbmFsIHN0YXRlIHdo
ZW4gd2UgcmV2ZXJ0LgorICAgIF9zYXZlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5fc2F2ZWRDaGlsZHJlbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICB0aGlzLl9zYXZlZFNlbGZUaW1lID0gdGhpcy5zZWxmVGltZTsKKyAgICAgICAgdGhp
cy5fc2F2ZWRUb3RhbFRpbWUgPSB0aGlzLnRvdGFsVGltZTsKKyAgICAgICAgdGhpcy5fc2F2ZWRO
dW1iZXJPZkNhbGxzID0gdGhpcy5udW1iZXJPZkNhbGxzOworICAgICAgICAKKyAgICAgICAgdGhp
cy5fc2F2ZWRDaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW4uc2xpY2UoKTsKKyAgICB9LAorICAgIAor
ICAgIC8vIFdoZW4gZm9jdXNpbmcgYW5kIGNvbGxhcHNpbmcgd2UgbW9kaWZ5IGxvdHMgb2Ygbm9k
ZXMgaW4gdGhlIHRyZWUuCisgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVzdG9yZSB0aGVtIGFs
bCB0byB0aGVpciBvcmlnaW5hbCBzdGF0ZSB3aGVuIHdlIHJldmVydC4KKyAgICBfcmVzdG9yZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zYXZlZENoaWxkcmVuKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgdGhpcy5zZWxmVGltZSA9IHRoaXMu
X3NhdmVkU2VsZlRpbWU7CisgICAgICAgIHRoaXMudG90YWxUaW1lID0gdGhpcy5fc2F2ZWRUb3Rh
bFRpbWU7CisgICAgICAgIHRoaXMubnVtYmVyT2ZDYWxscyA9IHRoaXMuX3NhdmVkTnVtYmVyT2ZD
YWxsczsKKyAgICAgICAgCisgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAg
CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX3NhdmVkQ2hpbGRyZW47CisgICAgICAgIHZh
ciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsKKyAgICAgICAgICAgIAorICAgICAgICBmb3IgKHZh
ciBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGNoaWxk
cmVuW2luZGV4XS5fcmVzdG9yZSgpOworICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjaGls
ZHJlbltpbmRleF0pOworICAgICAgICB9CisgICAgfSwKKyAgICAKKyAgICBfbWVyZ2U6IGZ1bmN0
aW9uKGFDaGlsZCwgc2hvdWxkQWJzb3JiKQorICAgIHsKKyAgICAgICAgdGhpcy5zZWxmVGltZSAr
PSBhQ2hpbGQuc2VsZlRpbWU7CisgICAgICAgIAorICAgICAgICBpZiAoIXNob3VsZEFic29yYikg
eworICAgICAgICAgICAgdGhpcy50b3RhbFRpbWUgKz0gYUNoaWxkLnRvdGFsVGltZTsKKyAgICAg
ICAgICAgIHRoaXMubnVtYmVyT2ZDYWxscyArPSBhQ2hpbGQubnVtYmVyT2ZDYWxsczsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5zbGlj
ZSgpOworICAgICAgICAKKyAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICAK
KyAgICAgICAgdmFyIGNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICAKKyAgICAgICAg
Zm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgICAg
ICBpZiAoIXNob3VsZEFic29yYiB8fCBjaGlsZHJlbltpbmRleF0gIT09IGFDaGlsZCkKKyAgICAg
ICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNoaWxkcmVuW2luZGV4XSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGNoaWxkcmVuID0gYUNoaWxkLmNoaWxkcmVuLnNsaWNlKCk7Cisg
ICAgICAgIGNvdW50ID0gY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICAKKyAgICAgICAgZm9yICh2
YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICB2YXIg
b3JwaGFuZWRDaGlsZCA9IGNoaWxkcmVuW2luZGV4XSwKKyAgICAgICAgICAgICAgICBleGlzdGlu
Z0NoaWxkID0gdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtvcnBoYW5lZENoaWxkLmNhbGxVSURdOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZXhpc3RpbmdDaGlsZCkKKyAgICAgICAgICAg
ICAgICBleGlzdGluZ0NoaWxkLl9tZXJnZShvcnBoYW5lZENoaWxkLCBmYWxzZSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChvcnBoYW5lZENoaWxk
KTsgIAorICAgICAgICB9CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGU7CisKK1dlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlID0gZnVuY3Rpb24oYVBy
b2ZpbGVWaWV3LCBhUHJvZmlsZU5vZGUpCit7CisgICAgdGhpcy50cmVlID0gdGhpczsKKyAgICB0
aGlzLmNoaWxkcmVuID0gW107CisKKyAgICB0aGlzLnByb2ZpbGVWaWV3ID0gYVByb2ZpbGVWaWV3
OworICAgIAorICAgIHRoaXMudG90YWxUaW1lID0gYVByb2ZpbGVOb2RlLnRvdGFsVGltZTsKKyAg
ICB0aGlzLmxhc3RDb21wYXJhdG9yID0gbnVsbDsKKyAgICAKKyAgICB0aGlzLmNoaWxkcmVuQnlD
YWxsVUlEID0geyB9OworfQorCitXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkVHJlZS5wcm90
b3R5cGUgPSB7CisgICAgCisgICAgZ2V0IGV4cGFuZGVkKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0sCisgICAgCisgICAgYXBwZW5kQ2hpbGQ6IGZ1bmN0aW9uKGFDaGlsZCkK
KyAgICB7CisgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoYUNoaWxkLCB0aGlzLmNoaWxkcmVuLmxl
bmd0aCk7CisgICAgfSwKKyAgICAKKyAgICBpbnNlcnRDaGlsZDogZnVuY3Rpb24oYUNoaWxkLCBh
bkluZGV4KQorICAgIHsKKyAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoYW5JbmRleCwgMCwg
YUNoaWxkKTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFthQ2hpbGQuY2FsbFVJRF0g
PSBhQ2hpbGQ7CisgICAgfSwKKyAgICAKKyAgICByZW1vdmVDaGlsZHJlbjogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgICAgICB0aGlzLmNoaWxkcmVu
QnlDYWxsVUlEID0geyB9OworICAgIH0sCisKKyAgICBmaW5kQ2hpbGQ6IFdlYkluc3BlY3Rvci5Q
cm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5maW5kQ2hpbGQsCisgICAgc29ydDogV2ViSW5z
cGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnNvcnQsCisgICAgCisgICAgX3Nh
dmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zYXZlZENoaWxkcmVuKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgdGhpcy5fc2F2ZWRUb3RhbFRp
bWUgPSB0aGlzLnRvdGFsVGltZTsKKyAgICAgICAgdGhpcy5fc2F2ZWRDaGlsZHJlbiA9IHRoaXMu
Y2hpbGRyZW4uc2xpY2UoKTsKKyAgICB9LAorICAgICAgICAKKyAgICByZXN0b3JlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NhdmVkQ2hpbGRyZW4pCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuX3NhdmVkQ2hpbGRyZW47
CisgICAgICAgIHRoaXMudG90YWxUaW1lID0gdGhpcy5fc2F2ZWRUb3RhbFRpbWU7CisgICAgICAg
IAorICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOworICAgICAgICB2YXIgY291
bnQgPSBjaGlsZHJlbi5sZW5ndGg7CisKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRl
eCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICAgICAgY2hpbGRyZW5baW5kZXhdLl9yZXN0b3Jl
KCk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9zYXZlZENoaWxkcmVuID0gbnVsbDsKKyAgICB9
Cit9CisKK1dlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFyYXRv
cnMgPSBbe30sIHt9XTsKKworV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZFRyZWUucHJvcGVy
dHlDb21wYXJhdG9yID0gZnVuY3Rpb24oLypTdHJpbmcqLyBwcm9wZXJ0eSwgLypCb29sZWFuKi8g
aXNBc2NlbmRpbmcpCit7CisgICAgdmFyIGNvbXBhcmF0b3IgPSB0aGlzLnByb3BlcnR5Q29tcGFy
YXRvcnNbISFpc0FzY2VuZGluZyA/IDEgOiAwXVtwcm9wZXJ0eV07CisgICAgCisgICAgaWYgKCFj
b21wYXJhdG9yKQorICAgIHsKKyAgICAgICAgaWYgKGlzQXNjZW5kaW5nKQorICAgICAgICAgICAg
Y29tcGFyYXRvciA9IGZ1bmN0aW9uKGxocywgcmhzKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAobGhzW3Byb3BlcnR5XSA8IHJoc1twcm9wZXJ0eV0pCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
bGhzW3Byb3BlcnR5XSA+IHJoc1twcm9wZXJ0eV0pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAxOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBhcmF0
b3IgPSBmdW5jdGlvbihsaHMsIHJocykgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKGxoc1twcm9wZXJ0eV0gPiByaHNbcHJvcGVydHldKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGxoc1twcm9w
ZXJ0eV0gPCByaHNbcHJvcGVydHldKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5wcm9wZXJ0eUNvbXBhcmF0b3JzWyEhaXNBc2NlbmRpbmcgPyAx
IDogMF1bcHJvcGVydHldID0gY29tcGFyYXRvcjsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNv
bXBhcmF0b3I7Cit9CisKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxl
Vmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZVZpZXcuanMJKHJldmlzaW9uIDQyNzQ2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2ZpbGVWaWV3LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSwxMSBAQCBXZWJJbnNw
ZWN0b3IuUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9mCiAKICAgICB0aGlzLnNob3dTZWxmVGlt
ZUFzUGVyY2VudCA9IHRydWU7CiAgICAgdGhpcy5zaG93VG90YWxUaW1lQXNQZXJjZW50ID0gdHJ1
ZTsKKyAgICB0aGlzLnNob3dBdmVyYWdlVGltZUFzUGVyY2VudCA9IHRydWU7CiAKICAgICB2YXIg
Y29sdW1ucyA9IHsgInNlbGYiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYi
KSwgd2lkdGg6ICI3MnB4Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1ZSB9LAog
ICAgICAgICAgICAgICAgICAgICAidG90YWwiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlRvdGFsIiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAg
ICAgICAgICAgICJhdmVyYWdlIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdmVy
YWdlIiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxlOiB0cnVlIH0sCiAgICAgICAgICAgICAgICAg
ICAgICJjYWxscyI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FsbHMiKSwgd2lk
dGg6ICI1NHB4Iiwgc29ydGFibGU6IHRydWUgfSwKICAgICAgICAgICAgICAgICAgICAgImZ1bmN0
aW9uIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGdW5jdGlvbiIpLCBkaXNjbG9z
dXJlOiB0cnVlLCBzb3J0YWJsZTogdHJ1ZSB9IH07CiAKQEAgLTc1LDE2ICs3NywxNCBAQCBXZWJJ
bnNwZWN0b3IuUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9mCiAgICAgdGhpcy5yZXNldEJ1dHRv
bi5jbGFzc05hbWUgPSAicmVzZXQtcHJvZmlsZS1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1p
dGVtIGhpZGRlbiI7CiAgICAgdGhpcy5yZXNldEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX3Jlc2V0Q2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKLSAgICAvLyBEZWZh
dWx0IHRvIHRoZSBoZWF2eSBwcm9maWxlLgotICAgIHByb2ZpbGUgPSBwcm9maWxlLmhlYXZ5UHJv
ZmlsZTsKKyAgICB0aGlzLnByb2ZpbGUgPSBwcm9maWxlOwogCi0gICAgLy8gQnkgZGVmYXVsdCB0
aGUgcHJvZmlsZSBpc24ndCBzb3J0ZWQsIHNvIHNvcnQgYmFzZWQgb24gb3VyIGRlZmF1bHQgc29y
dAotICAgIC8vIGNvbHVtbiBhbmQgZGlyZWN0aW9uIGFkZGVkIHRvIHRoZSBEYXRhR3JpZCBjb2x1
bW5zIGFib3ZlLgotICAgIHByb2ZpbGUuc29ydFNlbGZUaW1lRGVzY2VuZGluZygpOworICAgIHRo
aXMucHJvZmlsZURhdGFHcmlkVHJlZSA9IHRoaXMuYm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVl
OworICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5zb3J0KFdlYkluc3BlY3Rvci5Qcm9maWxl
RGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFyYXRvcigic2VsZlRpbWUiLCBmYWxzZSkpOwogCisg
ICAgdGhpcy5yZWZyZXNoKCk7CisgICAgCiAgICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigp
OwotCi0gICAgdGhpcy5wcm9maWxlID0gcHJvZmlsZTsKIH0KIAogV2ViSW5zcGVjdG9yLlByb2Zp
bGVWaWV3LnByb3RvdHlwZSA9IHsKQEAgLTEwMSw5ICsxMDEsNTcgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICBzZXQgcHJvZmlsZShwcm9maWxlKQogICAgIHsK
ICAgICAgICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGU7CisgICAgfSwKKyAgICAKKyAgICBnZXQg
Ym90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5f
Ym90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlKQorICAgICAgICAgICAgdGhpcy5fYm90dG9tVXBQ
cm9maWxlRGF0YUdyaWRUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5Cb3R0b21VcFByb2ZpbGVEYXRh
R3JpZFRyZWUodGhpcywgdGhpcy5wcm9maWxlLmhlYWQpOworCisgICAgICAgIHJldHVybiB0aGlz
Ll9ib3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWU7CisgICAgfSwKKworICAgIGdldCB0b3BEb3du
UHJvZmlsZURhdGFHcmlkVHJlZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RvcERvd25Q
cm9maWxlRGF0YUdyaWRUcmVlKQorICAgICAgICAgICAgdGhpcy5fdG9wRG93blByb2ZpbGVEYXRh
R3JpZFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKHRo
aXMsIHRoaXMucHJvZmlsZS5oZWFkKTsKKworICAgICAgICByZXR1cm4gdGhpcy5fdG9wRG93blBy
b2ZpbGVEYXRhR3JpZFRyZWU7CisgICAgfSwKKyAgICAKKyAgICBnZXQgY3VycmVudFRyZWUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUcmVlOworICAgIH0sCisgICAgCisg
ICAgc2V0IGN1cnJlbnRUcmVlKGFUcmVlTm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJl
bnRUcmVlID0gYVRyZWVOb2RlOwogICAgICAgICB0aGlzLnJlZnJlc2goKTsKICAgICB9LAorICAg
IAorICAgIGdldCB0b3BEb3duVHJlZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RvcERv
d25UcmVlKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl90b3BEb3duVHJlZSA9IFdlYklu
c3BlY3Rvci5Ub3BEb3duVHJlZUZhY3RvcnkuY3JlYXRlKHRoaXMucHJvZmlsZS5oZWFkKTsKKyAg
ICAgICAgICAgIHRoaXMuX3NvcnRQcm9maWxlKHRoaXMuX3RvcERvd25UcmVlKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RvcERvd25UcmVlOworICAgIH0sCiAK
KyAgICBnZXQgYm90dG9tVXBUcmVlKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fYm90dG9t
VXBUcmVlKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9ib3R0b21VcFRyZWUgPSBXZWJJ
bnNwZWN0b3IuQm90dG9tVXBUcmVlRmFjdG9yeS5jcmVhdGUodGhpcy5wcm9maWxlLmhlYWQpOwor
ICAgICAgICAgICAgdGhpcy5fc29ydFByb2ZpbGUodGhpcy5fYm90dG9tVXBUcmVlKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX2JvdHRvbVVwVHJlZTsKKyAgICB9
LAorICAgIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5WaWV3LnByb3RvdHlwZS5oaWRlLmNhbGwodGhpcyk7CkBAIC0xMTUsMjggKzE2MywzMyBAQCBX
ZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc2VsZWN0
ZWRQcm9maWxlTm9kZSA9IHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlID8gdGhpcy5kYXRhR3Jp
ZC5zZWxlY3RlZE5vZGUucHJvZmlsZU5vZGUgOiBudWxsOwogCiAgICAgICAgIHRoaXMuZGF0YUdy
aWQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgCisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRo
aXMucHJvZmlsZURhdGFHcmlkVHJlZS5jaGlsZHJlbjsKKyAgICAgICAgdmFyIGNvdW50ID0gY2hp
bGRyZW4ubGVuZ3RoOwogCi0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvZmlsZS5oZWFk
LmNoaWxkcmVuOwotICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgIGlmIChjaGlsZHJlbltpXS52aXNpYmxlKQotICAgICAgICAgICAgICAgIHRoaXMuZGF0
YUdyaWQuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlKHRo
aXMsIGNoaWxkcmVuW2ldKSk7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBj
b3VudDsgKytpbmRleCkKKyAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuYXBwZW5kQ2hpbGQoY2hp
bGRyZW5baW5kZXhdKTsKIAogICAgICAgICBpZiAoc2VsZWN0ZWRQcm9maWxlTm9kZSAmJiBzZWxl
Y3RlZFByb2ZpbGVOb2RlLl9kYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICBzZWxlY3RlZFByb2Zp
bGVOb2RlLl9kYXRhR3JpZE5vZGUuc2VsZWN0ZWQgPSB0cnVlOwogICAgIH0sCiAKLSAgICByZWZy
ZXNoU2hvd0FzUGVyY2VudHM6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoVmlzaWJsZURhdGE6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVBlcmNlbnRCdXR0b24oKTsKLQog
ICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVuWzBdOworICAgICAgICAK
ICAgICAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7CiAg
ICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51bGwsIHRy
dWUpOwogICAgICAgICB9CiAgICAgfSwKIAorICAgIHJlZnJlc2hTaG93QXNQZXJjZW50czogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fdXBkYXRlUGVyY2VudEJ1dHRvbigpOworICAg
ICAgICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgpOworICAgIH0sCisKICAgICBzZWFyY2hDYW5j
ZWxlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlYXJjaFJlc3VsdHMp
IHsKQEAgLTE5MSw3MSArMjQ0LDkwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICghaXNOYU4ocXVlcnlOdW1iZXIpICYmICEoZ3JlYXRlclRoYW4g
fHwgbGVzc1RoYW4pKQogICAgICAgICAgICAgZXF1YWxUbyA9IHRydWU7CiAKLSAgICAgICAgZnVu
Y3Rpb24gbWF0Y2hlc1F1ZXJ5KHByb2ZpbGVOb2RlKQorICAgICAgICBmdW5jdGlvbiBtYXRjaGVz
UXVlcnkoLypQcm9maWxlRGF0YUdyaWROb2RlKi8gcHJvZmlsZURhdGFHcmlkTm9kZSkKICAgICAg
ICAgewotICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNv
bHVtbjsKLSAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFs
Q29sdW1uOwotICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkQ2Fs
bHNDb2x1bW47Ci0gICAgICAgICAgICBkZWxldGUgcHJvZmlsZU5vZGUuX3NlYXJjaE1hdGNoZWRG
dW5jdGlvbkNvbHVtbjsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdyaWROb2RlLl9z
ZWFyY2hNYXRjaGVkU2VsZkNvbHVtbjsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9maWxlRGF0YUdy
aWROb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW47CisgICAgICAgICAgICBkZWxldGUgcHJv
ZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZEF2ZXJhZ2VDb2x1bW47CisgICAgICAgICAg
ICBkZWxldGUgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uOwor
ICAgICAgICAgICAgZGVsZXRlIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRGdW5j
dGlvbkNvbHVtbjsKIAogICAgICAgICAgICAgaWYgKHBlcmNlbnRVbml0cykgewogICAgICAgICAg
ICAgICAgIGlmIChsZXNzVGhhbikgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZU5v
ZGUuc2VsZlBlcmNlbnQgPCBxdWVyeU51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChwcm9maWxlTm9kZS50b3RhbFBlcmNlbnQgPCBxdWVyeU51bWJlcikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxm
UGVyY2VudCA8IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURh
dGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPCBxdWVyeU51bWJl
cikKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1h
dGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxl
RGF0YUdyaWROb2RlLmF2ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVk
QXZlcmFnZUNvbHVtbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChncmVhdGVy
VGhhbikgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZU5vZGUuc2VsZlBlcmNlbnQg
PiBxdWVyeU51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLl9zZWFy
Y2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9m
aWxlTm9kZS50b3RhbFBlcmNlbnQgPiBxdWVyeU51bWJlcikKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVyY2VudCA+IHF1ZXJ5
TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2Vh
cmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJv
ZmlsZURhdGFHcmlkTm9kZS50b3RhbFBlcmNlbnQgPiBxdWVyeU51bWJlcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVt
biA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmF2
ZXJhZ2VQZXJjZW50IDwgcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbiA9
IHRydWU7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGVxdWFsVG8p
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVOb2RlLnNlbGZQZXJjZW50ID09IHF1
ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1h
dGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVO
b2RlLnRvdGFsUGVyY2VudCA9PSBxdWVyeU51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgICAg
IHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmUGVyY2VudCA9PSBxdWVyeU51
bWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJj
aE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Zp
bGVEYXRhR3JpZE5vZGUudG90YWxQZXJjZW50ID09IHF1ZXJ5TnVtYmVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1u
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuYXZl
cmFnZVBlcmNlbnQgPCBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1pbGxpc2Vj
b25kc1VuaXRzIHx8IHNlY29uZHNVbml0cykgewogICAgICAgICAgICAgICAgIGlmIChsZXNzVGhh
bikgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZU5vZGUuc2VsZlRpbWUgPCBxdWVy
eU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVOb2Rl
Ll9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChwcm9maWxlTm9kZS50b3RhbFRpbWUgPCBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4g
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxm
VGltZSA8IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAg
cHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS50b3RhbFRpbWUgPCBxdWVy
eU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRh
R3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmF2ZXJhZ2VUaW1lIDwgcXVlcnlOdW1iZXJN
aWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2Rl
Ll9zZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChncmVhdGVyVGhhbikgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZU5v
ZGUuc2VsZlRpbWUgPiBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkU2VsZkNvbHVtbiA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChwcm9maWxlTm9kZS50b3RhbFRpbWUgPiBxdWVyeU51bWJlck1p
bGxpc2Vjb25kcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hN
YXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmls
ZURhdGFHcmlkTm9kZS5zZWxmVGltZSA+IHF1ZXJ5TnVtYmVyTWlsbGlzZWNvbmRzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZD
b2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9k
ZS50b3RhbFRpbWUgPiBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRUb3RhbENvbHVtbiA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmF2ZXJhZ2VU
aW1lID4gcXVlcnlOdW1iZXJNaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBw
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQXZlcmFnZUNvbHVtbiA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGVxdWFsVG8pIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVOb2RlLnNlbGZUaW1lID09IHF1ZXJ5TnVtYmVyTWls
bGlzZWNvbmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZU5vZGUuX3NlYXJjaE1h
dGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2ZpbGVO
b2RlLnRvdGFsVGltZSA9PSBxdWVyeU51bWJlck1pbGxpc2Vjb25kcykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkVG90YWxDb2x1bW4gPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5zZWxmVGltZSA9PSBx
dWVyeU51bWJlck1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVE
YXRhR3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRTZWxmQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUudG90YWxUaW1lID09IHF1ZXJ5TnVtYmVy
TWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9k
ZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByb2ZpbGVEYXRhR3JpZE5vZGUuYXZlcmFnZVRpbWUgPT0gcXVlcnlOdW1iZXJNaWxsaXNl
Y29uZHMpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFy
Y2hNYXRjaGVkQXZlcmFnZUNvbHVtbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoZXF1YWxUbyAmJiBwcm9maWxlTm9k
ZS5udW1iZXJPZkNhbGxzID09IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBpZiAoZ3JlYXRlclRoYW4gJiYgcHJvZmlsZU5vZGUubnVtYmVyT2ZDYWxscyA+IHF1ZXJ5TnVt
YmVyKQotICAgICAgICAgICAgICAgICAgICBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxz
Q29sdW1uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAobGVzc1RoYW4gJiYgcHJvZmlsZU5v
ZGUubnVtYmVyT2ZDYWxscyA8IHF1ZXJ5TnVtYmVyKQotICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBpZiAoZXF1YWxUbyAmJiBwcm9maWxlRGF0YUdyaWROb2RlLm51bWJlck9mQ2FsbHMgPT0gcXVl
cnlOdW1iZXIpCisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3NlYXJj
aE1hdGNoZWRDYWxsc0NvbHVtbiA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGdyZWF0ZXJU
aGFuICYmIHByb2ZpbGVEYXRhR3JpZE5vZGUubnVtYmVyT2ZDYWxscyA+IHF1ZXJ5TnVtYmVyKQor
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkQ2Fs
bHNDb2x1bW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChsZXNzVGhhbiAmJiBwcm9maWxl
RGF0YUdyaWROb2RlLm51bWJlck9mQ2FsbHMgPCBxdWVyeU51bWJlcikKKyAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxzQ29sdW1uID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHByb2ZpbGVOb2RlLmZ1bmN0aW9u
TmFtZS5oYXNTdWJzdHJpbmcocXVlcnksIHRydWUpIHx8IHByb2ZpbGVOb2RlLnVybC5oYXNTdWJz
dHJpbmcocXVlcnksIHRydWUpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVOb2RlLl9zZWFyY2hN
YXRjaGVkRnVuY3Rpb25Db2x1bW4gPSB0cnVlOwotCi0gICAgICAgICAgICB2YXIgbWF0Y2hlZCA9
IChwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1bW4gfHwgcHJvZmlsZU5vZGUuX3Nl
YXJjaE1hdGNoZWRUb3RhbENvbHVtbiB8fCBwcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZENhbGxz
Q29sdW1uIHx8IHByb2ZpbGVOb2RlLl9zZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW4pOwotICAg
ICAgICAgICAgaWYgKG1hdGNoZWQgJiYgcHJvZmlsZU5vZGUuX2RhdGFHcmlkTm9kZSkKLSAgICAg
ICAgICAgICAgICBwcm9maWxlTm9kZS5fZGF0YUdyaWROb2RlLnJlZnJlc2goKTsKKyAgICAgICAg
ICAgIGlmIChwcm9maWxlRGF0YUdyaWROb2RlLmZ1bmN0aW9uTmFtZS5oYXNTdWJzdHJpbmcocXVl
cnksIHRydWUpIHx8IHByb2ZpbGVEYXRhR3JpZE5vZGUudXJsLmhhc1N1YnN0cmluZyhxdWVyeSwg
dHJ1ZSkpCisgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZEZ1bmN0aW9uQ29sdW1uID0gdHJ1ZTsKIAotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWQ7Cisg
ICAgICAgICAgICBpZiAocHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hlZFNlbGZDb2x1
bW4gfHwgCisgICAgICAgICAgICAgICAgcHJvZmlsZURhdGFHcmlkTm9kZS5fc2VhcmNoTWF0Y2hl
ZFRvdGFsQ29sdW1uIHx8IAorICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUuX3Nl
YXJjaE1hdGNoZWRBdmVyYWdlQ29sdW1uIHx8IAorICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRh
R3JpZE5vZGUuX3NlYXJjaE1hdGNoZWRDYWxsc0NvbHVtbiB8fCAKKyAgICAgICAgICAgICAgICBw
cm9maWxlRGF0YUdyaWROb2RlLl9zZWFyY2hNYXRjaGVkRnVuY3Rpb25Db2x1bW4pOworICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHByb2ZpbGVEYXRhR3JpZE5vZGUucmVmcmVzaCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLQotICAgICAgICB2YXIgY3Vy
cmVudCA9IHRoaXMucHJvZmlsZS5oZWFkOworICAgICAgICAKKyAgICAgICAgdmFyIGN1cnJlbnQg
PSB0aGlzLmRhdGFHcmlkOwogICAgICAgICB2YXIgYW5jZXN0b3JzID0gW107CiAgICAgICAgIHZh
ciBuZXh0SW5kZXhlcyA9IFtdOwogICAgICAgICB2YXIgc3RhcnRJbmRleCA9IDA7CkBAIC0zODAs
MTIgKzQ1MiwxMiBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChldmVudC50YXJnZXQuc2VsZWN0ZWRJbmRl
eCA9PSAxICYmIHRoaXMudmlldyA9PSAiSGVhdnkiKSB7Ci0gICAgICAgICAgICB0aGlzLl9zb3J0
UHJvZmlsZSh0aGlzLnByb2ZpbGUudHJlZVByb2ZpbGUpOwotICAgICAgICAgICAgdGhpcy5wcm9m
aWxlID0gdGhpcy5wcm9maWxlLnRyZWVQcm9maWxlOworICAgICAgICAgICAgdGhpcy5wcm9maWxl
RGF0YUdyaWRUcmVlID0gdGhpcy50b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZTsKKyAgICAgICAg
ICAgIHRoaXMuX3NvcnRQcm9maWxlKCk7CiAgICAgICAgICAgICB0aGlzLnZpZXcgPSAiVHJlZSI7
CiAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0LnNlbGVjdGVkSW5kZXggPT0gMCAmJiB0
aGlzLnZpZXcgPT0gIlRyZWUiKSB7Ci0gICAgICAgICAgICB0aGlzLl9zb3J0UHJvZmlsZSh0aGlz
LnByb2ZpbGUuaGVhdnlQcm9maWxlKTsKLSAgICAgICAgICAgIHRoaXMucHJvZmlsZSA9IHRoaXMu
cHJvZmlsZS5oZWF2eVByb2ZpbGU7CisgICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRy
ZWUgPSB0aGlzLmJvdHRvbVVwUHJvZmlsZURhdGFHcmlkVHJlZTsKKyAgICAgICAgICAgIHRoaXMu
X3NvcnRQcm9maWxlKCk7CiAgICAgICAgICAgICB0aGlzLnZpZXcgPSAiSGVhdnkiOwogICAgICAg
ICB9CiAKQEAgLTQyMCwyOCArNDkyLDM2IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlVmlldy5wcm90
b3R5cGUgPSB7CiAKICAgICBfZm9jdXNDbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUgfHwgIXRoaXMuZGF0YUdyaWQu
c2VsZWN0ZWROb2RlLnByb2ZpbGVOb2RlKQorICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQuc2Vs
ZWN0ZWROb2RlKQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIHRoaXMucmVzZXRCdXR0
b24ucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgIHRoaXMucHJvZmlsZS5mb2N1
cyh0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZS5wcm9maWxlTm9kZSk7CisgICAgICAgIHRoaXMu
cHJvZmlsZURhdGFHcmlkVHJlZS5mb2N1cyh0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZSk7CiAg
ICAgICAgIHRoaXMucmVmcmVzaCgpOworICAgICAgICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgp
OwogICAgIH0sCiAKICAgICBfZXhjbHVkZUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZSB8fCAhdGhpcy5kYXRhR3Jp
ZC5zZWxlY3RlZE5vZGUucHJvZmlsZU5vZGUpCisgICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSB0
aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZQorICAgIAorICAgICAgICBpZiAoIXNlbGVjdGVkTm9k
ZSkKICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzZWxlY3RlZE5vZGUuZGVzZWxlY3Qo
KTsKKwogICAgICAgICB0aGlzLnJlc2V0QnV0dG9uLnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIp
OwotICAgICAgICB0aGlzLnByb2ZpbGUuZXhjbHVkZSh0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9k
ZS5wcm9maWxlTm9kZSk7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlLmRlc2Vs
ZWN0KCk7CisgICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5leGNsdWRlKHNlbGVjdGVk
Tm9kZSk7CiAgICAgICAgIHRoaXMucmVmcmVzaCgpOworICAgICAgICB0aGlzLnJlZnJlc2hWaXNp
YmxlRGF0YSgpOwogICAgIH0sCiAKICAgICBfcmVzZXRDbGlja2VkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMucmVzZXRCdXR0b24uYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7
Ci0gICAgICAgIHRoaXMucHJvZmlsZS5yZXN0b3JlQWxsKCk7CisgICAgICAgIHRoaXMucHJvZmls
ZURhdGFHcmlkVHJlZS5yZXN0b3JlKCk7CiAgICAgICAgIHRoaXMucmVmcmVzaCgpOworICAgICAg
ICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgpOwogICAgIH0sCiAKICAgICBfZGF0YUdyaWROb2Rl
U2VsZWN0ZWQ6IGZ1bmN0aW9uKG5vZGUpCkBAIC00NjEsMzcgKzU0MSwyMSBAQCBXZWJJbnNwZWN0
b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zb3J0UHJvZmlsZSh0
aGlzLnByb2ZpbGUpOwogICAgIH0sCiAKLSAgICBfc29ydFByb2ZpbGU6IGZ1bmN0aW9uKHByb2Zp
bGUpCisgICAgX3NvcnRQcm9maWxlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXBy
b2ZpbGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNvcnRPcmRlciA9IHRo
aXMuZGF0YUdyaWQuc29ydE9yZGVyOworICAgICAgICB2YXIgc29ydEFzY2VuZGluZyA9IHRoaXMu
ZGF0YUdyaWQuc29ydE9yZGVyID09PSAiYXNjZW5kaW5nIjsKICAgICAgICAgdmFyIHNvcnRDb2x1
bW5JZGVudGlmaWVyID0gdGhpcy5kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsKKyAgICAg
ICAgdmFyIHNvcnRQcm9wZXJ0eSA9IHsgCisgICAgICAgICAgICAgICAgImF2ZXJhZ2UiOiAiYXZl
cmFnZVRpbWUiLCAKKyAgICAgICAgICAgICAgICAic2VsZiI6ICJzZWxmVGltZSIsIAorICAgICAg
ICAgICAgICAgICJ0b3RhbCI6ICJ0b3RhbFRpbWUiLCAKKyAgICAgICAgICAgICAgICAiY2FsbHMi
OiAibnVtYmVyT2ZDYWxscyIsIAorICAgICAgICAgICAgICAgICJmdW5jdGlvbiI6ICJmdW5jdGlv
bk5hbWUiCisgICAgICAgICAgICB9W3NvcnRDb2x1bW5JZGVudGlmaWVyXTsKKyAgICAgICAgCisg
ICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5zb3J0KFdlYkluc3BlY3Rvci5Qcm9maWxl
RGF0YUdyaWRUcmVlLnByb3BlcnR5Q29tcGFyYXRvcihzb3J0UHJvcGVydHksIHNvcnRBc2NlbmRp
bmcpKTsKIAotICAgICAgICB2YXIgc29ydGluZ0Z1bmN0aW9uTmFtZSA9ICJzb3J0IjsKLQotICAg
ICAgICBpZiAoc29ydENvbHVtbklkZW50aWZpZXIgPT09ICJzZWxmIikKLSAgICAgICAgICAgIHNv
cnRpbmdGdW5jdGlvbk5hbWUgKz0gIlNlbGZUaW1lIjsKLSAgICAgICAgZWxzZSBpZiAoc29ydENv
bHVtbklkZW50aWZpZXIgPT09ICJ0b3RhbCIpCi0gICAgICAgICAgICBzb3J0aW5nRnVuY3Rpb25O
YW1lICs9ICJUb3RhbFRpbWUiOwotICAgICAgICBlbHNlIGlmIChzb3J0Q29sdW1uSWRlbnRpZmll
ciA9PT0gImNhbGxzIikKLSAgICAgICAgICAgIHNvcnRpbmdGdW5jdGlvbk5hbWUgKz0gIkNhbGxz
IjsKLSAgICAgICAgZWxzZSBpZiAoc29ydENvbHVtbklkZW50aWZpZXIgPT09ICJmdW5jdGlvbiIp
Ci0gICAgICAgICAgICBzb3J0aW5nRnVuY3Rpb25OYW1lICs9ICJGdW5jdGlvbk5hbWUiOwotCi0g
ICAgICAgIGlmIChzb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciKQotICAgICAgICAgICAgc29ydGlu
Z0Z1bmN0aW9uTmFtZSArPSAiQXNjZW5kaW5nIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c29ydGluZ0Z1bmN0aW9uTmFtZSArPSAiRGVzY2VuZGluZyI7Ci0KLSAgICAgICAgaWYgKCEoc29y
dGluZ0Z1bmN0aW9uTmFtZSBpbiB0aGlzLnByb2ZpbGUpKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIHByb2ZpbGVbc29ydGluZ0Z1bmN0aW9uTmFtZV0oKTsKLQotICAgICAgICBpZiAo
cHJvZmlsZSA9PT0gdGhpcy5wcm9maWxlKQotICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7Cisg
ICAgICAgIHRoaXMucmVmcmVzaCgpOwogICAgIH0sCiAKICAgICBfbW91c2VEb3duSW5EYXRhR3Jp
ZDogZnVuY3Rpb24oZXZlbnQpCkBAIC01MTYsMTI3ICs1ODAsMyBAQCBXZWJJbnNwZWN0b3IuUHJv
ZmlsZVZpZXcucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKLQotV2ViSW5z
cGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihwcm9maWxlVmlldywgcHJvZmls
ZU5vZGUpCi17Ci0gICAgdGhpcy5wcm9maWxlVmlldyA9IHByb2ZpbGVWaWV3OwotCi0gICAgdGhp
cy5wcm9maWxlTm9kZSA9IHByb2ZpbGVOb2RlOwotICAgIHByb2ZpbGVOb2RlLl9kYXRhR3JpZE5v
ZGUgPSB0aGlzOwotCi0gICAgLy8gRmluZCB0aGUgZmlyc3QgY2hpbGQgdGhhdCBpcyB2aXNpYmxl
LiBTaW5jZSB3ZSBkb24ndCB3YW50IHRvIGNsYWltCi0gICAgLy8gd2UgaGF2ZSBjaGlsZHJlbiBp
ZiBhbGwgdGhlIGNoaWxkcmVuIGFyZSBpbnZpc2libGUuCi0gICAgdmFyIGhhc0NoaWxkcmVuID0g
ZmFsc2U7Ci0gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9maWxlTm9kZS5jaGlsZHJlbjsKLSAg
ICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChjaGlsZHJlbltpXS52
aXNpYmxlKSB7Ci0gICAgICAgICAgICBoYXNDaGlsZHJlbiA9IHRydWU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUu
Y2FsbCh0aGlzLCBudWxsLCBoYXNDaGlsZHJlbik7Ci0KLSAgICB0aGlzLmFkZEV2ZW50TGlzdGVu
ZXIoInBvcHVsYXRlIiwgdGhpcy5fcG9wdWxhdGUsIHRoaXMpOwotCi0gICAgdGhpcy5leHBhbmRl
ZCA9IHByb2ZpbGVOb2RlLl9leHBhbmRlZDsKLX0KLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGdldCBkYXRhKCkKLSAgICB7Ci0gICAgICAgIGZ1
bmN0aW9uIGZvcm1hdE1pbGxpc2Vjb25kcyh0aW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh0aW1lIC8gMTAwMCwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nLmJpbmQoV2ViSW5zcGVjdG9yKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgZGF0YSA9IHt9OwotICAgICAgICBkYXRhWyJmdW5jdGlvbiJdID0gdGhpcy5wcm9maWxlTm9k
ZS5mdW5jdGlvbk5hbWU7Ci0gICAgICAgIGRhdGFbImNhbGxzIl0gPSB0aGlzLnByb2ZpbGVOb2Rl
Lm51bWJlck9mQ2FsbHM7Ci0KLSAgICAgICAgaWYgKHRoaXMucHJvZmlsZVZpZXcuc2hvd1NlbGZU
aW1lQXNQZXJjZW50KQotICAgICAgICAgICAgZGF0YVsic2VsZiJdID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCIlLjJmJSUiLCB0aGlzLnByb2ZpbGVOb2RlLnNlbGZQZXJjZW50KTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZGF0YVsic2VsZiJdID0gZm9ybWF0TWlsbGlzZWNvbmRzKHRoaXMu
cHJvZmlsZU5vZGUuc2VsZlRpbWUpOwotCi0gICAgICAgIGlmICh0aGlzLnByb2ZpbGVWaWV3LnNo
b3dUb3RhbFRpbWVBc1BlcmNlbnQpCi0gICAgICAgICAgICBkYXRhWyJ0b3RhbCJdID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCIlLjJmJSUiLCB0aGlzLnByb2ZpbGVOb2RlLnRvdGFsUGVyY2VudCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFbInRvdGFsIl0gPSBmb3JtYXRNaWxsaXNl
Y29uZHModGhpcy5wcm9maWxlTm9kZS50b3RhbFRpbWUpOwotCi0gICAgICAgIHJldHVybiBkYXRh
OwotICAgIH0sCi0KLSAgICBjcmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQot
ICAgIHsKLSAgICAgICAgdmFyIGNlbGwgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5jcmVhdGVDZWxsLmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllcik7Ci0KLSAgICAgICAg
aWYgKGNvbHVtbklkZW50aWZpZXIgPT09ICJzZWxmIiAmJiB0aGlzLnByb2ZpbGVOb2RlLl9zZWFy
Y2hNYXRjaGVkU2VsZkNvbHVtbikKLSAgICAgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFzcygiaGln
aGxpZ2h0Iik7Ci0gICAgICAgIGVsc2UgaWYgKGNvbHVtbklkZW50aWZpZXIgPT09ICJ0b3RhbCIg
JiYgdGhpcy5wcm9maWxlTm9kZS5fc2VhcmNoTWF0Y2hlZFRvdGFsQ29sdW1uKQotICAgICAgICAg
ICAgY2VsbC5hZGRTdHlsZUNsYXNzKCJoaWdobGlnaHQiKTsKLSAgICAgICAgZWxzZSBpZiAoY29s
dW1uSWRlbnRpZmllciA9PT0gImNhbGxzIiAmJiB0aGlzLnByb2ZpbGVOb2RlLl9zZWFyY2hNYXRj
aGVkQ2FsbHNDb2x1bW4pCi0gICAgICAgICAgICBjZWxsLmFkZFN0eWxlQ2xhc3MoImhpZ2hsaWdo
dCIpOwotCi0gICAgICAgIGlmIChjb2x1bW5JZGVudGlmaWVyICE9PSAiZnVuY3Rpb24iKQotICAg
ICAgICAgICAgcmV0dXJuIGNlbGw7Ci0KLSAgICAgICAgaWYgKHRoaXMucHJvZmlsZU5vZGUuX3Nl
YXJjaE1hdGNoZWRGdW5jdGlvbkNvbHVtbikKLSAgICAgICAgICAgIGNlbGwuYWRkU3R5bGVDbGFz
cygiaGlnaGxpZ2h0Iik7Ci0KLSAgICAgICAgaWYgKHRoaXMucHJvZmlsZU5vZGUudXJsKSB7Ci0g
ICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwo
dGhpcy5wcm9maWxlTm9kZS51cmwpOwotCi0gICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgICAgIHVybEVsZW1lbnQuY2xhc3NO
YW1lID0gInByb2ZpbGUtbm9kZS1maWxlIHdlYmtpdC1odG1sLXJlc291cmNlLWxpbmsiOwotICAg
ICAgICAgICAgdXJsRWxlbWVudC5ocmVmID0gdGhpcy5wcm9maWxlTm9kZS51cmw7Ci0gICAgICAg
ICAgICB1cmxFbGVtZW50LmxpbmVOdW1iZXIgPSB0aGlzLnByb2ZpbGVOb2RlLmxpbmVOdW1iZXI7
Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVOb2RlLmxpbmVOdW1iZXIgPiAwKQotICAg
ICAgICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRlbnQgPSBmaWxlTmFtZSArICI6IiArIHRo
aXMucHJvZmlsZU5vZGUubGluZU51bWJlcjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB1cmxFbGVtZW50LnRleHRDb250ZW50ID0gZmlsZU5hbWU7Ci0KLSAgICAgICAgICAgIGNl
bGwuaW5zZXJ0QmVmb3JlKHVybEVsZW1lbnQsIGNlbGwuZmlyc3RDaGlsZCk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAotCi0gICAgc2VsZWN0OiBmdW5jdGlvbihz
dXByZXNzU2VsZWN0ZWRFdmVudCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLnNlbGVjdC5jYWxsKHRoaXMsIHN1cHJlc3NTZWxlY3RlZEV2ZW50KTsK
LSAgICAgICAgdGhpcy5wcm9maWxlVmlldy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQodGhpcyk7Ci0g
ICAgfSwKLQotICAgIGRlc2VsZWN0OiBmdW5jdGlvbihzdXByZXNzRGVzZWxlY3RlZEV2ZW50KQot
ICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZGVzZWxl
Y3QuY2FsbCh0aGlzLCBzdXByZXNzRGVzZWxlY3RlZEV2ZW50KTsKLSAgICAgICAgdGhpcy5wcm9m
aWxlVmlldy5fZGF0YUdyaWROb2RlRGVzZWxlY3RlZCh0aGlzKTsKLSAgICB9LAotCi0gICAgZXhw
YW5kOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5leHBhbmQuY2FsbCh0aGlzKTsKLSAgICAgICAgdGhpcy5wcm9maWxlTm9kZS5f
ZXhwYW5kZWQgPSB0cnVlOwotICAgIH0sCi0KLSAgICBjb2xsYXBzZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY29sbGFwc2Uu
Y2FsbCh0aGlzKTsKLSAgICAgICAgdGhpcy5wcm9maWxlTm9kZS5fZXhwYW5kZWQgPSBmYWxzZTsK
LSAgICB9LAotCi0gICAgX3BvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAg
IHZhciBjaGlsZHJlbiA9IHRoaXMucHJvZmlsZU5vZGUuY2hpbGRyZW47Ci0gICAgICAgIHZhciBj
aGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaGlsZHJlbkxlbmd0aDsgKytpKQotICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLnZp
c2libGUpCi0gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9y
LlByb2ZpbGVEYXRhR3JpZE5vZGUodGhpcy5wcm9maWxlVmlldywgY2hpbGRyZW5baV0pKTsKLSAg
ICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3B1bGF0ZSIsIHRoaXMuX3BvcHVsYXRl
LCB0aGlzKTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZTsK
SW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCShy
ZXZpc2lvbiA0Mjc0NikKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1Bh
bmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNyArMjE4LDcgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2aWV3LnNob3codGhpcy5wcm9maWxl
Vmlld3MpOwogCiAgICAgICAgIHByb2ZpbGUuX3Byb2ZpbGVzVHJlZUVsZW1lbnQuc2VsZWN0KHRy
dWUpOwotICAgICAgICBwcm9maWxlLl9wcm9maWxlc1RyZWVFbGVtZW50LnJldmVhbCgpCisgICAg
ICAgIHByb2ZpbGUuX3Byb2ZpbGVzVHJlZUVsZW1lbnQucmV2ZWFsKCk7CiAKICAgICAgICAgdGhp
cy52aXNpYmxlVmlldyA9IHZpZXc7CiAKQEAgLTIzMSw4ICsyMzEsNyBAQCBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBzaG93VmlldzogZnVuY3Rpb24odmll
dykKICAgICB7Ci0gICAgICAgIC8vIEFsd2F5cyB1c2UgdGhlIHRyZWVQcm9maWxlLCBzaW5jZSB0
aGUgaGVhdnkgcHJvZmlsZSBtaWdodCBiZSBzaG93aW5nLgotICAgICAgICB0aGlzLnNob3dQcm9m
aWxlKHZpZXcucHJvZmlsZS50cmVlUHJvZmlsZSk7CisgICAgICAgIHRoaXMuc2hvd1Byb2ZpbGUo
dmlldy5wcm9maWxlKTsKICAgICB9LAogCiAgICAgcHJvZmlsZVZpZXdGb3JQcm9maWxlOiBmdW5j
dGlvbihwcm9maWxlKQpAQCAtMjk1LDggKzI5NCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHNlYXJjaE1hdGNoRm91bmQ6IGZ1bmN0aW9uKHZpZXcs
IG1hdGNoZXMpCiAgICAgewotICAgICAgICAvLyBBbHdheXMgdXNlIHRoZSB0cmVlUHJvZmlsZSwg
c2luY2UgdGhlIGhlYXZ5IHByb2ZpbGUgbWlnaHQgYmUgc2hvd2luZy4KLSAgICAgICAgdmlldy5w
cm9maWxlLnRyZWVQcm9maWxlLl9wcm9maWxlc1RyZWVFbGVtZW50LnNlYXJjaE1hdGNoZXMgPSBt
YXRjaGVzOworICAgICAgICB2aWV3LnByb2ZpbGUuX3Byb2ZpbGVzVHJlZUVsZW1lbnQuc2VhcmNo
TWF0Y2hlcyA9IG1hdGNoZXM7CiAgICAgfSwKIAogICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlv
bihzdGFydGluZ05ld1NlYXJjaCkKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUuanMJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9wRG93blByb2ZpbGVEYXRhR3JpZFRy
ZWUuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA4IDI4MCBOb3J0aCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmls
ZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKC8qUHJvZmlsZVZpZXcqLyBwcm9maWxlVmlldywgLypQ
cm9maWxlTm9kZSovIHByb2ZpbGVOb2RlLCAvKlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlKi8g
b3duaW5nVHJlZSkKK3sKKyAgICB2YXIgaGFzQ2hpbGRyZW4gPSAhIShwcm9maWxlTm9kZS5jaGls
ZHJlbiAmJiBwcm9maWxlTm9kZS5jaGlsZHJlbi5sZW5ndGgpOworCisgICAgV2ViSW5zcGVjdG9y
LlByb2ZpbGVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBwcm9maWxlVmlldywgcHJvZmlsZU5vZGUs
IG93bmluZ1RyZWUsIGhhc0NoaWxkcmVuKTsKKworICAgIHRoaXMuX3JlbWFpbmluZ0NoaWxkcmVu
ID0gcHJvZmlsZU5vZGUuY2hpbGRyZW47Cit9CisKK1dlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmls
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CisgICAgCisgICAgX3BvcHVsYXRlOiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX3JlbWFpbmluZ0No
aWxkcmVuOworICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7Cisg
ICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyArK2kp
CisgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVG9wRG93blBy
b2ZpbGVEYXRhR3JpZE5vZGUodGhpcy5wcm9maWxlVmlldywgY2hpbGRyZW5baV0sIHRoaXMudHJl
ZSkpOworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcikKKyAg
ICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wdWxhdGUiLCB0aGlzLl9wb3B1
bGF0ZSwgdGhpcyk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9yZW1haW5pbmdDaGlsZHJlbiA9
IG51bGw7CisgICAgfSwKKworICAgIF9leGNsdWRlOiBmdW5jdGlvbihhQ2FsbFVJRCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9yZW1haW5pbmdDaGlsZHJlbikKKyAgICAgICAgICAgIHRoaXMu
X3BvcHVsYXRlKCk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9zYXZlKCk7CisgICAgICAgIAor
ICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuOworICAgICAgICB2YXIgaW5kZXgg
PSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChpbmRleC0t
KQorICAgICAgICAgICAgY2hpbGRyZW5baW5kZXhdLl9leGNsdWRlKGFDYWxsVUlEKTsKKyAgICAg
ICAgCisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5CeUNhbGxVSURbYUNhbGxVSURd
OworICAgICAgICAKKyAgICAgICAgaWYgKGNoaWxkKQorICAgICAgICAgICAgdGhpcy5fbWVyZ2Uo
Y2hpbGQsIHRydWUpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlRvcERvd25Qcm9maWxlRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFH
cmlkTm9kZS5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlk
VHJlZSA9IGZ1bmN0aW9uKC8qUHJvZmlsZVZpZXcqLyBwcm9maWxlVmlldywgLypQcm9maWxlTm9k
ZSovIHByb2ZpbGVOb2RlKQoreworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVl
LmNhbGwodGhpcywgcHJvZmlsZVZpZXcsIHByb2ZpbGVOb2RlKTsKKyAgICAKKyAgICB0aGlzLl9y
ZW1haW5pbmdDaGlsZHJlbiA9IHByb2ZpbGVOb2RlLmNoaWxkcmVuOworICAgIAorICAgIFdlYklu
c3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX3BvcHVsYXRlLmNh
bGwodGhpcyk7Cit9CisKK1dlYkluc3BlY3Rvci5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5w
cm90b3R5cGUgPSB7CisKKyAgICBmb2N1czogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2Rl
Ki8gcHJvZmlsZURhdGFHcmlkZU5vZGUpCisgICAgeworICAgICAgICBpZiAoIXByb2ZpbGVEYXRh
R3JpZGVOb2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NhdmUoKTsK
KworICAgICAgICB0aGlzLmNoaWxkcmVuID0gW3Byb2ZpbGVEYXRhR3JpZGVOb2RlXTsKKyAgICAg
ICAgdGhpcy50b3RhbFRpbWUgPSBwcm9maWxlRGF0YUdyaWRlTm9kZS50b3RhbFRpbWU7CisgICAg
fSwKKyAgICAKKyAgICBleGNsdWRlOiBmdW5jdGlvbigvKlByb2ZpbGVEYXRhR3JpZE5vZGUqLyBw
cm9maWxlRGF0YUdyaWRlTm9kZSkKKyAgICB7CisgICAgICAgIGlmICghcHJvZmlsZURhdGFHcmlk
ZU5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc2F2ZSgpOworICAg
ICAgICAKKyAgICAgICAgdmFyIGV4Y2x1ZGVkQ2FsbFVJRCA9IHByb2ZpbGVEYXRhR3JpZGVOb2Rl
LmNhbGxVSUQ7CisgICAgICAgIAorICAgICAgICBXZWJJbnNwZWN0b3IuVG9wRG93blByb2ZpbGVE
YXRhR3JpZE5vZGUucHJvdG90eXBlLl9leGNsdWRlLmNhbGwodGhpcywgZXhjbHVkZWRDYWxsVUlE
KTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLmxhc3RDb21wYXJhdG9yKQorICAgICAgICAg
ICAgdGhpcy5zb3J0KHRoaXMubGFzdENvbXBhcmF0b3IsIHRydWUpOworICAgIH0sCisgICAgCisg
ICAgX21lcmdlOiBXZWJJbnNwZWN0b3IuVG9wRG93blByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90
eXBlLl9tZXJnZQorfQorCitXZWJJbnNwZWN0b3IuVG9wRG93blByb2ZpbGVEYXRhR3JpZFRyZWUu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWRUcmVlLnBy
b3RvdHlwZTsKKwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMJKHJl
dmlzaW9uIDQyNzQ2KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMJ
KHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgICAgPGZpbGU+aW5zcGVjdG9yLmh0bWw8
L2ZpbGU+CiAgICAgPGZpbGU+QnJlYWtwb2ludC5qczwvZmlsZT4KICAgICA8ZmlsZT5CcmVha3Bv
aW50c1NpZGViYXJQYW5lLmpzPC9maWxlPgorICAgIDxmaWxlPkJvdHRvbVVwUHJvZmlsZURhdGFH
cmlkVHJlZS5qczwvZmlsZT4KICAgICA8ZmlsZT5DYWxsU3RhY2tTaWRlYmFyUGFuZS5qczwvZmls
ZT4KICAgICA8ZmlsZT5Db25zb2xlLmpzPC9maWxlPgogICAgIDxmaWxlPkRhdGFiYXNlLmpzPC9m
aWxlPgpAQCAtMjUsNiArMjYsNyBAQAogICAgIDxmaWxlPlBhbmVsRW5hYmxlclZpZXcuanM8L2Zp
bGU+CiAgICAgPGZpbGU+UGxhY2FyZC5qczwvZmlsZT4KICAgICA8ZmlsZT5Qcm9maWxlc1BhbmVs
LmpzPC9maWxlPgorICAgIDxmaWxlPlByb2ZpbGVEYXRhR3JpZFRyZWUuanM8L2ZpbGU+CiAgICAg
PGZpbGU+UHJvZmlsZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+UHJvcGVydGllc1NlY3Rpb24u
anM8L2ZpbGU+CiAgICAgPGZpbGU+UHJvcGVydGllc1NpZGViYXJQYW5lLmpzPC9maWxlPgpAQCAt
NDIsNiArNDQsNyBAQAogICAgIDxmaWxlPlNvdXJjZVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+
U3R5bGVzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+VGV4dFByb21wdC5qczwvZmls
ZT4KKyAgICA8ZmlsZT5Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qczwvZmlsZT4KICAgICA8
ZmlsZT50cmVlb3V0bGluZS5qczwvZmlsZT4KICAgICA8ZmlsZT51dGlsaXRpZXMuanM8L2ZpbGU+
CiAgICAgPGZpbGU+Vmlldy5qczwvZmlsZT4KSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzCShyZXZpc2lvbiA0Mjc0NikKKysrIFdlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMwLDYgKzI5MzAs
MTQgQEAgYm9keS5pbmFjdGl2ZSAuc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZQogICAgIGhlaWdo
dDogMTAwJTsKIH0KIAorLnByb2ZpbGUtdmlldyAuZGF0YS1ncmlkIHRoLmF2ZXJhZ2UtY29sdW1u
IHsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy5wcm9maWxlLXZpZXcgLmRhdGEtZ3Jp
ZCB0ZC5hdmVyYWdlLWNvbHVtbiB7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKIC5wcm9m
aWxlLXZpZXcgLmRhdGEtZ3JpZCB0aC5zZWxmLWNvbHVtbiB7CiAgICAgdGV4dC1hbGlnbjogY2Vu
dGVyOwogfQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bAkocmV2aXNpb24gNDI3NDYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDkgQEAgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQTwogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkRhdGFiYXNlVGFibGVWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEYXRhYmFzZVF1ZXJ5Vmlldy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0Vmlldy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmls
ZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFH
cmlkVHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgY2xhc3M9ImRl
dGFjaGVkIj4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQyNzc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDQtMjMgIEZyYW5jaXNj
byBUb2xtYXNreSAgPGZyYW5jaXNjb0AyODBub3J0aC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQlVHIDI0NjA0OiBXZWJLaXQgcHJvZmlsZXIg
cmVwb3J0cyBpbmNvcnJlY3QgdG90YWwgdGltZXMKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDYwND4KKworICAgICAgICBDaGFuZ2VkIHByb2ZpbGUu
dHJlZVByb2ZpbGUgdG8ganVzdCBwcm9maWxlLCBzaW5jZSB0aGVzZSBhcmVuJ3QgZ2VuZXJhdGVk
IGluIEMrKyBhbnltb3JlLgorICAgICAgICBSZW1vdmVkIGhlYXZ5LXZpZXcgdGVzdCBzaW5jZSBo
ZWF2eS12aWV3IGlzbid0IGFuIGFjdHVhbCB0cmVlIHRoYXQgaXMgZ2VuZXJhdGVkIGluIEMrKyBs
YW5kIGFueW1vcmUsCisgICAgICAgIGJ1dCByYXRoZXIganVzdCBhIGRpZmZlcmVudCBkaXNwbGF5
IG9mIHRoZSBub3JtYWwgdHJlZVByb2ZpbGUgaW4gdGhlIEpTIGRhdGEgZ3JpZC4KKworICAgICAg
ICAqIGZhc3QvcHJvZmlsZXIvaGVhdnktdmlldy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogZmFzdC9wcm9maWxlci9oZWF2eS12aWV3Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
ZmFzdC9wcm9maWxlci9yZXNvdXJjZXMvcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanM6IHBy
b2ZpbGVzW2ldLnRyZWVQcm9maWxlIC0+IHByb2ZpbGVzW2ldLnRyZWVQcm9maWxlCisgICAgICAg
IChwcmludFByb2ZpbGVzRGF0YVdpdGhvdXRUaW1lKToKKwogMjAwOS0wNC0yMyAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIG15IGp1c3QtbGFuZGVk
IGxheW91dCB0ZXN0IHRvIGFncmVlIHdpdGggVGlnZXIncyBDRk5ldHdvcmsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaGVhdnktdmlldy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9oZWF2eS12aWV3LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNDI3NDYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2hlYXZ5LXZpZXctZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLVRoaXMgcGFnZSBoYXMg
c2V2ZXJhbCBmdW5jdGlvbnMgY2FsbGluZyBlYWNoIG90aGVyIGluIGEgd2F5IHRoYXQgZXhwb3Nl
cyBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIHJlbGF0ZWQgdG8gdGhlIEhlYXZ5IHZpZXcgaW4gdGhl
IHByb2ZpbGVyLiAKLQotVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aGUg
YnJvd3NlciB0aGVuIGxvYWQgdGhlIFdlYkluc3BlY3RvciBhbmQgbG9vayBhdCB0aGUgcHJvZmls
ZSBpbiBIZWF2eSB2aWV3LgotCi1Qcm9maWxlIHRpdGxlOiBIZWF2eSBWaWV3IFRlc3QKLVRocmVh
ZF8xIChubyBmaWxlKSAobGluZSAwKQotICAgZm9vIGhlYXZ5LXZpZXcuaHRtbCAobGluZSA1NykK
LSAgICAgIGMgaGVhdnktdmlldy5odG1sIChsaW5lIDM2KQotICAgICAgICAgZm9vIGhlYXZ5LXZp
ZXcuaHRtbCAobGluZSA1NykKLSAgICAgICAgICAgIGIgaGVhdnktdmlldy5odG1sIChsaW5lIDMw
KQotICAgICAgICAgICAgICAgYSBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMjEpCi0gICAgICAgICAg
ICAgICAgICBzdGFydFRlc3QgaGVhdnktdmlldy5odG1sIChsaW5lIDExKQotICAgICAgYiBoZWF2
eS12aWV3Lmh0bWwgKGxpbmUgMzApCi0gICAgICAgICBhIGhlYXZ5LXZpZXcuaHRtbCAobGluZSAy
MSkKLSAgICAgICAgICAgIHN0YXJ0VGVzdCBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMTEpCi0gICAg
ICAgICBnIGhlYXZ5LXZpZXcuaHRtbCAobGluZSA1MSkKLSAgICAgICAgICAgIGEgaGVhdnktdmll
dy5odG1sIChsaW5lIDIxKQotICAgICAgICAgICAgICAgc3RhcnRUZXN0IGhlYXZ5LXZpZXcuaHRt
bCAobGluZSAxMSkKLSAgICAgIGEgaGVhdnktdmlldy5odG1sIChsaW5lIDIxKQotICAgICAgICAg
c3RhcnRUZXN0IGhlYXZ5LXZpZXcuaHRtbCAobGluZSAxMSkKLSAgICAgIGUgaGVhdnktdmlldy5o
dG1sIChsaW5lIDQ2KQotICAgICAgICAgZCBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgNDEpCi0gICAg
ICAgICAgICBhIGhlYXZ5LXZpZXcuaHRtbCAobGluZSAyMSkKLSAgICAgICAgICAgICAgIHN0YXJ0
VGVzdCBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMTEpCi0gICBjIGhlYXZ5LXZpZXcuaHRtbCAobGlu
ZSAzNikKLSAgICAgIGZvbyBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgNTcpCi0gICAgICAgICBiIGhl
YXZ5LXZpZXcuaHRtbCAobGluZSAzMCkKLSAgICAgICAgICAgIGEgaGVhdnktdmlldy5odG1sIChs
aW5lIDIxKQotICAgICAgICAgICAgICAgc3RhcnRUZXN0IGhlYXZ5LXZpZXcuaHRtbCAobGluZSAx
MSkKLSAgIGIgaGVhdnktdmlldy5odG1sIChsaW5lIDMwKQotICAgICAgYSBoZWF2eS12aWV3Lmh0
bWwgKGxpbmUgMjEpCi0gICAgICAgICBzdGFydFRlc3QgaGVhdnktdmlldy5odG1sIChsaW5lIDEx
KQotICAgICAgZyBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgNTEpCi0gICAgICAgICBhIGhlYXZ5LXZp
ZXcuaHRtbCAobGluZSAyMSkKLSAgICAgICAgICAgIHN0YXJ0VGVzdCBoZWF2eS12aWV3Lmh0bWwg
KGxpbmUgMTEpCi0gICBlIGhlYXZ5LXZpZXcuaHRtbCAobGluZSA0NikKLSAgICAgIGQgaGVhdnkt
dmlldy5odG1sIChsaW5lIDQxKQotICAgICAgICAgYSBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMjEp
Ci0gICAgICAgICAgICBzdGFydFRlc3QgaGVhdnktdmlldy5odG1sIChsaW5lIDExKQotICAgZCBo
ZWF2eS12aWV3Lmh0bWwgKGxpbmUgNDEpCi0gICAgICBhIGhlYXZ5LXZpZXcuaHRtbCAobGluZSAy
MSkKLSAgICAgICAgIHN0YXJ0VGVzdCBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMTEpCi0gICBnIGhl
YXZ5LXZpZXcuaHRtbCAobGluZSA1MSkKLSAgICAgIGEgaGVhdnktdmlldy5odG1sIChsaW5lIDIx
KQotICAgICAgICAgc3RhcnRUZXN0IGhlYXZ5LXZpZXcuaHRtbCAobGluZSAxMSkKLSAgIGEgaGVh
dnktdmlldy5odG1sIChsaW5lIDIxKQotICAgICAgc3RhcnRUZXN0IGhlYXZ5LXZpZXcuaHRtbCAo
bGluZSAxMSkKLSAgIHN0YXJ0VGVzdCBoZWF2eS12aWV3Lmh0bWwgKGxpbmUgMTEpCi0KLQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9oZWF2eS12aWV3Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9oZWF2eS12aWV3Lmh0bWwJKHJldmlzaW9uIDQy
NzQ2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9oZWF2eS12aWV3Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNzYgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SmF2YVNj
cmlwdFByb2ZpbGluZ0VuYWJsZWQodHJ1ZSk7Ci19Ci0KLWZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi17
Ci0gICAgY29uc29sZS5wcm9maWxlKCJIZWF2eSBWaWV3IFRlc3QiKTsKLQotICAgIGEoKTsKLQot
ICAgIGNvbnNvbGUucHJvZmlsZUVuZCgpOwotICAgIHByaW50SGVhdnlQcm9maWxlc0RhdGFXaXRo
b3V0VGltZSgpOwotfQotCi1mdW5jdGlvbiBhKCkKLXsKLSAgICBiKCk7Ci0gICAgZm9vKCk7Ci0g
ICAgZCgpOwotICAgIGQoKTsKLSAgICBnKCk7Ci19Ci0KLWZ1bmN0aW9uIGIoKQotewotICAgIGZv
bygpOwotICAgIGZvbygpOwotfQotCi1mdW5jdGlvbiBjKCkKLXsKLSAgICBmb28oKTsKLX0KLQot
ZnVuY3Rpb24gZCgpCi17Ci0gICAgZSgpOwotfQotCi1mdW5jdGlvbiBlKCkKLXsKLSAgICBmb28o
KTsKLX0KLQotZnVuY3Rpb24gZygpCi17Ci0gICAgYigpOwotfQotCi12YXIgZmlyc3RUaW1lID0g
dHJ1ZTsKLWZ1bmN0aW9uIGZvbygpCi17Ci0gICAgaWYgKGZpcnN0VGltZSkgewotICAgICAgICBm
aXJzdFRpbWUgPSBmYWxzZTsKLSAgICAgICAgYygpOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgotVGhpcyBwYWdlIGhhcyBzZXZl
cmFsIGZ1bmN0aW9ucyBjYWxsaW5nIGVhY2ggb3RoZXIgaW4gYSB3YXkgdGhhdCBleHBvc2VzIGlu
dGVyZXN0aW5nCi1lZGdlIGNhc2VzIHJlbGF0ZWQgdG8gdGhlIEhlYXZ5IHZpZXcgaW4gdGhlIHBy
b2ZpbGVyLgotPGJyPgotPGJyPgotVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBp
biB0aGUgYnJvd3NlciB0aGVuIGxvYWQgdGhlIFdlYkluc3BlY3RvciBhbmQgbG9vayBhdAotdGhl
IHByb2ZpbGUgaW4gSGVhdnkgdmlldy4KLTxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9m
aWxlci10ZXN0LUpTLXJlc291cmNlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcwkocmV2aXNp
b24gNDI3NDYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBm
dW5jdGlvbiBwcmludFByb2ZpbGVzRGF0YVdpdGhvdXRUaW1lKCkKICAgICB2YXIgcHJvZmlsZXMg
PSBjb25zb2xlLnByb2ZpbGVzOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvZmlsZXMubGVu
Z3RoOyArK2kpIHsKICAgICAgICAgcHJlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiUHJvZmlsZSB0aXRsZTogIiArIHByb2ZpbGVzW2ldLnRpdGxlICsgIlxuIikp
OwotICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUocHJlRWxlbWVudCwgcHJvZmls
ZXNbaV0udHJlZVByb2ZpbGUuaGVhZCwgMCk7CisgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRo
b3V0VGltZShwcmVFbGVtZW50LCBwcm9maWxlc1tpXS5oZWFkLCAwKTsKICAgICAgICAgcHJlRWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiXG4iKSk7CiAgICAgfQog
CkluZGV4OiBXZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWlt
ZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgovLzUyQUdFQWNnQWdBR3dBYndCakFH
RUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQUlBQTlBQ0FBYmdCbEFIY0FJQUJQCkFH
SUFhZ0JsQUdNQWRBQTdBQW9BQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0
QVp3QnpBRnNBSWdBZ0FDZ0EKSlFCa0FDa0FJZ0JkQUNBQVBRQWdBQ0lBSUFBb0FDVUFaQUFwQUNJ
QU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeQpBR2tBYmdCbkFITUFXd0FpQUNB
QUtBQnlBR1VBY0FCbEFHRUFkQUJsQUdRQUlBQWxBR1FBSUFCMEFHa0FiUUJsQUhNQUtRQWlBRjBB
CklBQTlBQ0FBSWdBZ0FDZ0FjZ0JsQUhBQVpRQmhBSFFBWlFCa0FDQUFKUUJrQUNBQWRBQnBBRzBB
WlFCekFDa0FJZ0E3QUFvQWJBQnYKQUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NB
Y3dCYkFDSUFKUUF1QURBQVpnQkNBQ0lBWFFBZ0FEMEFJQUFpQUNVQQpMZ0F3QUdZQVFnQWlBRHNB
Q2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdBbEFDNEFN
QUJtCkFHMEFjd0FpQUYwQUlBQTlBQ0FBSWdBbEFDNEFNQUJtQUcwQWN3QWlBRHNBQ2dCc0FHOEFZ
d0JoQUd3QWFRQjZBR1VBWkFCVEFIUUEKY2dCcEFHNEFad0J6QUZzQUlnQWxBQzRBTVFCbUFDQUFa
QUJoQUhrQWN3QWlBRjBBSUFBOUFDQUFJZ0FsQUM0QU1RQm1BQ0FBWkFCaApBSGtBY3dBaUFEc0FD
Z0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0FsQUM0QU1R
Qm1BR2dBCmNnQnpBQ0lBWFFBZ0FEMEFJQUFpQUNVQUxnQXhBR1lBYUFCeUFITUFJZ0E3QUFvQWJB
QnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjAKQUhJQWFRQnVBR2NBY3dCYkFDSUFKUUF1QURFQVpn
QnRBR2tBYmdBaUFGMEFJQUE5QUNBQUlnQWxBQzRBTVFCbUFHMEFhUUJ1QUNJQQpPd0FLQUd3QWJ3
QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUNVQUxnQXlBR1lBSlFB
bEFDSUFYUUFnCkFEMEFJQUFpQUNVQUxnQXlBR1lBSlFBbEFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFC
cEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUEKV3dBaUFDVUFMZ0F5QUdZQVN3QkNBQ0lBWFFB
Z0FEMEFJQUFpQUNVQUxnQXlBR1lBU3dCQ0FDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcApBSG9BWlFC
a0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFDVUFMZ0F5QUdZQWN3QWlBRjBBSUFBOUFDQUFJZ0Fs
QUM0QU1nQm1BSE1BCklnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1
QUdjQWN3QmJBQ0lBSlFBdUFETUFaZ0JOQUVJQUlnQmQKQUNBQVBRQWdBQ0lBSlFBdUFETUFaZ0JO
QUVJQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQQpjd0Ji
QUNJQUpRQXVBRE1BWmdCdEFITUFJZ0JkQUNBQVBRQWdBQ0lBSlFBdUFETUFaZ0J0QUhNQUlnQTdB
QW9BYkFCdkFHTUFZUUJzCkFHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQUpRQmtB
Q0FBWlFCeUFISUFid0J5QUNJQVhRQWdBRDBBSUFBaUFDVUEKWkFBZ0FHVUFjZ0J5QUc4QWNnQWlB
RHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdBbApB
R1FBSUFCbEFISUFjZ0J2QUhJQUxBQWdBQ1VBWkFBZ0FIY0FZUUJ5QUc0QWFRQnVBR2NBSWdCZEFD
QUFQUUFnQUNJQUpRQXhBQ1FBClpBQWdBR1VBY2dCeUFHOEFjZ0FzQUNBQUpRQXlBQ1FBWkFBZ0FI
Y0FZUUJ5QUc0QWFRQnVBR2NBSWdBN0FBb0FiQUJ2QUdNQVlRQnMKQUdrQWVnQmxBR1FBVXdCMEFI
SUFhUUJ1QUdjQWN3QmJBQ0lBSlFCa0FDQUFaUUJ5QUhJQWJ3QnlBQ3dBSUFBbEFHUUFJQUIzQUdF
QQpjZ0J1QUdrQWJnQm5BSE1BSWdCZEFDQUFQUUFnQUNJQUpRQXhBQ1FBWkFBZ0FHVUFjZ0J5QUc4
QWNnQXNBQ0FBSlFBeUFDUUFaQUFnCkFIY0FZUUJ5QUc0QWFRQnVBR2NBY3dBaUFEc0FDZ0JzQUc4
QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0EKSWdBbEFHUUFJQUJsQUhJ
QWNnQnZBSElBY3dBaUFGMEFJQUE5QUNBQUlnQWxBR1FBSUFCbEFISUFjZ0J2QUhJQWN3QWlBRHNB
Q2dCcwpBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQWxBR1FB
SUFCbEFISUFjZ0J2QUhJQWN3QXNBQ0FBCkpRQmtBQ0FBZHdCaEFISUFiZ0JwQUc0QVp3QWlBRjBB
SUFBOUFDQUFJZ0FsQURFQUpBQmtBQ0FBWlFCeUFISUFid0J5QUhNQUxBQWcKQUNVQU1nQWtBR1FB
SUFCM0FHRUFjZ0J1QUdrQWJnQm5BQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFk
QUJ5QUdrQQpiZ0JuQUhNQVd3QWlBQ1VBWkFBZ0FHVUFjZ0J5QUc4QWNnQnpBQ3dBSUFBbEFHUUFJ
QUIzQUdFQWNnQnVBR2tBYmdCbkFITUFJZ0JkCkFDQUFQUUFnQUNJQUpRQXhBQ1FBWkFBZ0FHVUFj
Z0J5QUc4QWNnQnpBQ3dBSUFBbEFESUFKQUJrQUNBQWR3QmhBSElBYmdCcEFHNEEKWndCekFDSUFP
d0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUNVQVpB
QWdBRzBBWVFCMApBR01BYUFCbEFITUFJZ0JkQUNBQVBRQWdBQ0lBSlFCa0FDQUFiUUJoQUhRQVl3
Qm9BR1VBY3dBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBCmFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3
QnpBRnNBSWdBbEFHUUFJQUIzQUdFQWNnQnVBR2tBYmdCbkFDSUFYUUFnQUQwQUlBQWkKQUNVQVpB
QWdBSGNBWVFCeUFHNEFhUUJ1QUdjQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdC
MEFISUFhUUJ1QUdjQQpjd0JiQUNJQUpRQmtBQ0FBZHdCaEFISUFiZ0JwQUc0QVp3QnpBQ0lBWFFB
Z0FEMEFJQUFpQUNVQVpBQWdBSGNBWVFCeUFHNEFhUUJ1CkFHY0Fjd0FpQURzQUNnQnNBRzhBWXdC
aEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQWxBR1FBSUFEWEFDQUEKSlFC
a0FDSUFYUUFnQUQwQUlBQWlBQ1VBTVFBa0FHUUFJQURYQUNBQUpRQXlBQ1FBWkFBaUFEc0FDZ0Jz
QUc4QVl3QmhBR3dBYVFCNgpBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdBbEFITUFJQUFv
QUdZQWNnQnZBRzBBSUFCakFHRUFZd0JvQUdVQUtRQWlBRjBBCklBQTlBQ0FBSWdBbEFITUFJQUFv
QUdZQWNnQnZBRzBBSUFCakFHRUFZd0JvQUdVQUtRQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjYK
QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQWxBSE1BSUFCa0FHOEFkd0J1QUd3QWJ3QmhB
R1FBSWdCZEFDQUFQUUFnQUNJQQpKUUJ6QUNBQVpBQnZBSGNBYmdCc0FHOEFZUUJrQUNJQU93QUtB
R3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuCkFITUFXd0FpQUNVQWN3QWdB
R3dBWVFCMEFHVUFiZ0JqQUhrQUlnQmRBQ0FBUFFBZ0FDSUFKUUJ6QUNBQWJBQmhBSFFBWlFCdUFH
TUEKZVFBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFG
c0FJZ0FsQUhNQUlBQnNBR0VBZEFCbApBRzRBWXdCNUFDd0FJQUFsQUhNQUlBQmtBRzhBZHdCdUFH
d0Fid0JoQUdRQUlBQW9BQ1VBY3dBZ0FIUUFid0IwQUdFQWJBQXBBQ0lBClhRQWdBRDBBSUFBaUFD
VUFNUUFrQUhNQUlBQnNBR0VBZEFCbEFHNEFZd0I1QUN3QUlBQWxBRElBSkFCekFDQUFaQUJ2QUhj
QWJnQnMKQUc4QVlRQmtBQ0FBS0FBbEFETUFKQUJ6QUNBQWRBQnZBSFFBWVFCc0FDa0FJZ0E3QUFv
QWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQQpVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFLQUJoQUc0
QWJ3QnVBSGtBYlFCdkFIVUFjd0FnQUdZQWRRQnVBR01BZEFCcEFHOEFiZ0FwCkFDSUFYUUFnQUQw
QUlBQWlBQ2dBWVFCdUFHOEFiZ0I1QUcwQWJ3QjFBSE1BSUFCbUFIVUFiZ0JqQUhRQWFRQnZBRzRB
S1FBaUFEc0EKQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNB
SWdBb0FIQUFjZ0J2QUdjQWNnQmhBRzBBS1FBaQpBRjBBSUFBOUFDQUFJZ0FvQUhBQWNnQnZBR2NB
Y2dCaEFHMEFLUUFpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBCmNnQnBBRzRB
WndCekFGc0FJZ0FvQUhRQVpRQjRBSFFBS1FBaUFGMEFJQUE5QUNBQUlnQW9BSFFBWlFCNEFIUUFL
UUFpQURzQUNnQnMKQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJ
Z0FvQUhjQWFBQnBBSFFBWlFCekFIQUFZUUJqQUdVQQpLUUFpQUYwQUlBQTlBQ0FBSWdBb0FIY0Fh
QUJwQUhRQVpRQnpBSEFBWVFCakFHVUFLUUFpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2CkFHVUFa
QUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0F4QUNBQWJRQmhBSFFBWXdCb0FDSUFYUUFnQUQwQUlB
QWlBREVBSUFCdEFHRUEKZEFCakFHZ0FJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3
QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVFRQnVBQ0FBWlFCeQpBSElBYndCeUFDQUFid0JqQUdNQWRR
QnlBSElBWlFCa0FDQUFkQUJ5QUhrQWFRQnVBR2NBSUFCMEFHOEFYQUJ1QUhJQVpRQmhBR1FBCklB
QjBBR2dBWlFBZ0FCd2dKUUJ6QUIwZ0lBQjBBR0VBWWdCc0FHVUFMZ0FpQUYwQUlBQTlBQ0FBSWdC
QkFHNEFJQUJsQUhJQWNnQnYKQUhJQUlBQnZBR01BWXdCMUFISUFjZ0JsQUdRQUlBQjBBSElBZVFC
cEFHNEFad0FnQUhRQWJ3QmNBRzRBY2dCbEFHRUFaQUFnQUhRQQphQUJsQUNBQUhDQWxBSE1BSFNB
Z0FIUUFZUUJpQUd3QVpRQXVBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5
CkFHa0FiZ0JuQUhNQVd3QWlBRUVBYmdBZ0FIVUFiZ0JsQUhnQWNBQmxBR01BZEFCbEFHUUFJQUJs
QUhJQWNnQnZBSElBSUFBbEFITUEKSUFCdkFHTUFZd0IxQUhJQVpRQmtBQzRBSWdCZEFDQUFQUUFn
QUNJQVFRQnVBQ0FBZFFCdUFHVUFlQUJ3QUdVQVl3QjBBR1VBWkFBZwpBR1VBY2dCeUFHOEFjZ0Fn
QUNVQWN3QWdBRzhBWXdCakFIVUFjZ0JsQUdRQUxnQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZB
R1VBClpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQkJBSFlBWlFCeUFHRUFad0JsQUNJQVhRQWdB
RDBBSUFBaUFFRUFkZ0JsQUhJQVlRQm4KQUdVQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxB
R1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBUWdCeUFHVUFZUUJyQUhBQQpid0JwQUc0QWRBQnpB
Q0lBWFFBZ0FEMEFJQUFpQUVJQWNnQmxBR0VBYXdCd0FHOEFhUUJ1QUhRQWN3QWlBRHNBQ2dCc0FH
OEFZd0JoCkFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQkRBR0VBYkFCc0FD
QUFVd0IwQUdFQVl3QnJBQ0lBWFFBZ0FEMEEKSUFBaUFFTUFZUUJzQUd3QUlBQlRBSFFBWVFCakFH
c0FJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdQpBR2NBY3dCYkFD
SUFRd0JoQUd3QWJBQnpBQ0lBWFFBZ0FEMEFJQUFpQUVNQVlRQnNBR3dBY3dBaUFEc0FDZ0JzQUc4
QVl3QmhBR3dBCmFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCREFHd0FaUUJoQUhJ
QUlBQmpBRzhBYmdCekFHOEFiQUJsQUNBQWJBQnYKQUdjQUxnQWlBRjBBSUFBOUFDQUFJZ0JEQUd3
QVpRQmhBSElBSUFCakFHOEFiZ0J6QUc4QWJBQmxBQ0FBYkFCdkFHY0FMZ0FpQURzQQpDZ0JzQUc4
QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JEQUd3QWJ3QnpBSFVB
Y2dCbEFDSUFYUUFnCkFEMEFJQUFpQUVNQWJBQnZBSE1BZFFCeUFHVUFJZ0E3QUFvQWJBQnZBR01B
WVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0EKY3dCYkFDSUFRd0J2QUcwQWNBQjFBSFFB
WlFCa0FDQUFVd0IwQUhrQWJBQmxBQ0lBWFFBZ0FEMEFJQUFpQUVNQWJ3QnRBSEFBZFFCMApBR1VB
WkFBZ0FGTUFkQUI1QUd3QVpRQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFj
Z0JwQUc0QVp3QnpBRnNBCklnQkVBRUVBVkFCQkFFSUFRUUJUQUVVQVV3QWlBRjBBSUFBOUFDQUFJ
Z0JFQUVFQVZBQkJBRUlBUVFCVEFFVUFVd0FpQURzQUNnQnMKQUc4QVl3QmhBR3dBYVFCNkFHVUFa
QUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JFQUU4QVRRQWlBRjBBSUFBOUFDQUFJZ0JFQUU4QQpU
UUFpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUln
QkVBR0VBZEFCaEFHSUFZUUJ6CkFHVUFJQUJ1QUc4QUlBQnNBRzhBYmdCbkFHVUFjZ0FnQUdnQVlR
QnpBQ0FBWlFCNEFIQUFaUUJqQUhRQVpRQmtBQ0FBZGdCbEFISUEKY3dCcEFHOEFiZ0F1QUNJQVhR
QWdBRDBBSUFBaUFFUUFZUUIwQUdFQVlnQmhBSE1BWlFBZ0FHNEFid0FnQUd3QWJ3QnVBR2NBWlFC
eQpBQ0FBYUFCaEFITUFJQUJsQUhnQWNBQmxBR01BZEFCbEFHUUFJQUIyQUdVQWNnQnpBR2tBYndC
dUFDNEFJZ0E3QUFvQWJBQnZBR01BCllRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dC
YkFDSUFSQUJoQUhRQVlRQmlBR0VBY3dCbEFITUFJZ0JkQUNBQVBRQWcKQUNJQVJBQmhBSFFBWVFC
aUFHRUFjd0JsQUhNQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1
QUdjQQpjd0JiQUNJQVJBQmxBR0lBZFFCbkFHY0FhUUJ1QUdjQUlBQmtBR2tBY3dCaEFHSUFiQUJs
QUdRQUxnQWdBRU1BYkFCcEFHTUFhd0FnCkFIUUFid0FnQUdVQWJnQmhBR0lBYkFCbEFDNEFJZ0Jk
QUNBQVBRQWdBQ0lBUkFCbEFHSUFkUUJuQUdjQWFRQnVBR2NBSUFCa0FHa0EKY3dCaEFHSUFiQUJs
QUdRQUxnQWdBRU1BYkFCcEFHTUFhd0FnQUhRQWJ3QWdBR1VBYmdCaEFHSUFiQUJsQUM0QUlnQTdB
QW9BYkFCdgpBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVJBQmxB
R0lBZFFCbkFHY0FhUUJ1QUdjQUlBQmxBRzRBCllRQmlBR3dBWlFCa0FDNEFJQUJEQUd3QWFRQmpB
R3NBSUFCMEFHOEFJQUJrQUdrQWN3QmhBR0lBYkFCbEFDNEFJZ0JkQUNBQVBRQWcKQUNJQVJBQmxB
R0lBZFFCbkFHY0FhUUJ1QUdjQUlBQmxBRzRBWVFCaUFHd0FaUUJrQUM0QUlBQkRBR3dBYVFCakFH
c0FJQUIwQUc4QQpJQUJrQUdrQWN3QmhBR0lBYkFCbEFDNEFJZ0E3QUFvQWJBQnZBR01BWVFCc0FH
a0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiCkFDSUFSQUJsQUdJQWRRQm5BR2NBYVFCdUFH
Y0FJQUJ6QUdNQWNnQnBBSEFBZEFCekFDQUFjZ0JsQUhFQWRRQnBBSElBWlFCekFDQUEKZVFCdkFI
VUFJQUIwQUc4QUlBQnpBSFFBWVFCeUFIUUFJQUIwQUdnQVpRQWdBR1FBWlFCaUFIVUFad0JuQUdV
QWNnQXVBQ0lBWFFBZwpBRDBBSUFBaUFFUUFaUUJpQUhVQVp3Qm5BR2tBYmdCbkFDQUFjd0JqQUhJ
QWFRQndBSFFBY3dBZ0FISUFaUUJ4QUhVQWFRQnlBR1VBCmN3QWdBSGtBYndCMUFDQUFkQUJ2QUNB
QWN3QjBBR0VBY2dCMEFDQUFkQUJvQUdVQUlBQmtBR1VBWWdCMUFHY0Fad0JsQUhJQUxnQWkKQURz
QUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQkVBR2tB
YlFCbEFHNEFjd0JwQUc4QQpiZ0J6QUNJQVhRQWdBRDBBSUFBaUFFUUFhUUJ0QUdVQWJnQnpBR2tB
YndCdUFITUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsCkFHUUFVd0IwQUhJQWFRQnVBR2NB
Y3dCYkFDSUFSQUJ2QUdNQWF3QWdBSFFBYndBZ0FHMEFZUUJwQUc0QUlBQjNBR2tBYmdCa0FHOEEK
ZHdBdUFDSUFYUUFnQUQwQUlBQWlBRVFBYndCakFHc0FJQUIwQUc4QUlBQnRBR0VBYVFCdUFDQUFk
d0JwQUc0QVpBQnZBSGNBTGdBaQpBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFj
Z0JwQUc0QVp3QnpBRnNBSWdCRUFHOEFZd0IxQUcwQVpRQnVBSFFBCmN3QWlBRjBBSUFBOUFDQUFJ
Z0JFQUc4QVl3QjFBRzBBWlFCdUFIUUFjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpB
QlQKQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JFQUc4QWJnQW5BSFFBSUFCd0FHRUFkUUJ6QUdVQUlB
QnZBRzRBSUFCbEFIZ0FZd0JsQUhBQQpkQUJwQUc4QWJnQnpBQzRBSWdCZEFDQUFQUUFnQUNJQVJB
QnZBRzRBR1NCMEFDQUFjQUJoQUhVQWN3QmxBQ0FBYndCdUFDQUFaUUI0CkFHTUFaUUJ3QUhRQWFR
QnZBRzRBY3dBdUFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdC
bkFITUEKV3dBaUFFVUFiQUJsQUcwQVpRQnVBSFFBY3dBaUFGMEFJQUE5QUNBQUlnQkZBR3dBWlFC
dEFHVUFiZ0IwQUhNQUlnQTdBQW9BYkFCdgpBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFC
dUFHY0Fjd0JiQUNJQVJRQnVBR0VBWWdCc0FHVUFJQUJFQUdVQVlnQjFBR2NBClp3QnBBRzRBWndB
aUFGMEFJQUE5QUNBQUlnQkZBRzRBWVFCaUFHd0FaUUFnQUVRQVpRQmlBSFVBWndCbkFHa0FiZ0Ju
QUNJQU93QUsKQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0Fp
QUVVQWJnQmhBR0lBYkFCbEFDQUFVQUJ5QUc4QQpaZ0JwQUd3QWFRQnVBR2NBSWdCZEFDQUFQUUFn
QUNJQVJRQnVBR0VBWWdCc0FHVUFJQUJRQUhJQWJ3Qm1BR2tBYkFCcEFHNEFad0FpCkFEc0FDZ0Jz
QUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JGQUc0QVlRQmlB
R3dBYVFCdUFHY0EKSUFCa0FHVUFZZ0IxQUdjQVp3QnBBRzRBWndBZ0FIY0FhUUJzQUd3QUlBQnRB
R0VBYXdCbEFDQUFjd0JqQUhJQWFRQndBSFFBY3dBZwpBSElBZFFCdUFDQUFjd0JzQUc4QWR3QmxB
SElBTGdBaUFGMEFJQUE5QUNBQUlnQkZBRzRBWVFCaUFHd0FhUUJ1QUdjQUlBQmtBR1VBCllnQjFB
R2NBWndCcEFHNEFad0FnQUhjQWFRQnNBR3dBSUFCdEFHRUFhd0JsQUNBQWN3QmpBSElBYVFCd0FI
UUFjd0FnQUhJQWRRQnUKQUNBQWN3QnNBRzhBZHdCbEFISUFMZ0FpQURzQUNnQnNBRzhBWXdCaEFH
d0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQQpJZ0JGQUc0QVlRQmlBR3dBYVFCdUFH
Y0FJQUJ3QUhJQWJ3Qm1BR2tBYkFCcEFHNEFad0FnQUhjQWFRQnNBR3dBSUFCdEFHRUFhd0JsCkFD
QUFjd0JqQUhJQWFRQndBSFFBY3dBZ0FISUFkUUJ1QUNBQWN3QnNBRzhBZHdCbEFISUFMZ0FpQUYw
QUlBQTlBQ0FBSWdCRkFHNEEKWVFCaUFHd0FhUUJ1QUdjQUlBQndBSElBYndCbUFHa0FiQUJwQUc0
QVp3QWdBSGNBYVFCc0FHd0FJQUJ0QUdFQWF3QmxBQ0FBY3dCagpBSElBYVFCd0FIUUFjd0FnQUhJ
QWRRQnVBQ0FBY3dCc0FHOEFkd0JsQUhJQUxnQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VB
ClpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQkZBSFlBWlFCdUFIUUFJQUJFQUc4QVl3QjFBRzBB
WlFCdUFIUUFJZ0JkQUNBQVBRQWcKQUNJQVJRQjJBR1VBYmdCMEFDQUFSQUJ2QUdNQWRRQnRBR1VB
YmdCMEFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQQpkQUJ5QUdrQWJnQm5BSE1B
V3dBaUFFVUFkZ0JsQUc0QWRBQWdBRlFBWVFCeUFHY0FaUUIwQUNJQVhRQWdBRDBBSUFBaUFFVUFk
Z0JsCkFHNEFkQUFnQUZRQVlRQnlBR2NBWlFCMEFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0Fa
UUJrQUZNQWRBQnlBR2tBYmdCbkFITUEKV3dBaUFFVUFlQUJqQUd3QWRRQmtBR1VBSUFCekFHVUFi
QUJsQUdNQWRBQmxBR1FBSUFCbUFIVUFiZ0JqQUhRQWFRQnZBRzRBTGdBaQpBRjBBSUFBOUFDQUFJ
Z0JGQUhnQVl3QnNBSFVBWkFCbEFDQUFjd0JsQUd3QVpRQmpBSFFBWlFCa0FDQUFaZ0IxQUc0QVl3
QjBBR2tBCmJ3QnVBQzRBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFR
QnVBR2NBY3dCYkFDSUFSZ0JwQUd3QVpRQWcKQUhNQWFRQjZBR1VBSWdCZEFDQUFQUUFnQUNJQVJn
QnBBR3dBWlFBZ0FITUFhUUI2QUdVQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQQplZ0JsQUdRQVV3
QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVJnQnZBR01BZFFCekFDQUFjd0JsQUd3QVpRQmpBSFFBWlFC
a0FDQUFaZ0IxCkFHNEFZd0IwQUdrQWJ3QnVBQzRBSWdCZEFDQUFQUUFnQUNJQVJnQnZBR01BZFFC
ekFDQUFid0J1QUNBQWN3QmxBR3dBWlFCakFIUUEKWlFCa0FDQUFaZ0IxQUc0QVl3QjBBR2tBYndC
dUFDNEFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdQpBR2NBY3dC
YkFDSUFSZ0J2QUc0QWRBQnpBQ0lBWFFBZ0FEMEFJQUFpQUVZQWJ3QnVBSFFBY3dBaUFEc0FDZ0Jz
QUc4QVl3QmhBR3dBCmFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCR0FIVUFiZ0Jq
QUhRQWFRQnZBRzRBSWdCZEFDQUFQUUFnQUNJQVJnQjEKQUc0QVl3QjBBR2tBYndCdUFDSUFPd0FL
QUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUVjQQpVZ0JC
QUZBQVNBQlRBQ0lBWFFBZ0FEMEFJQUFpQUVjQVVnQkJBRkFBU0FCVEFDSUFPd0FLQUd3QWJ3QmpB
R0VBYkFCcEFIb0FaUUJrCkFGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFFY0FiQUJ2QUdJQVlRQnNB
Q0lBWFFBZ0FEMEFJQUFpQUVjQWJBQnZBR0lBWVFCc0FDSUEKT3dBS0FHd0Fid0JqQUdFQWJBQnBB
SG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFFZ0FaUUJoQUhZQWVRQWdBQ2dBUWdCdgpB
SFFBZEFCdkFHMEFJQUJWQUhBQUtRQWlBRjBBSUFBOUFDQUFJZ0JJQUdVQVlRQjJBSGtBSUFBb0FF
SUFid0IwQUhRQWJ3QnRBQ0FBClZRQndBQ2tBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFH
UUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFTQUJwQUdRQVpRQWcKQUdNQWJ3QnVBSE1BYndCc0FH
VUFMZ0FpQUYwQUlBQTlBQ0FBSWdCSUFHa0FaQUJsQUNBQVl3QnZBRzRBY3dCdkFHd0FaUUF1QUNJ
QQpPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUVr
QWJRQmhBR2NBWlFCekFDSUFYUUFnCkFEMEFJQUFpQUVrQWJRQmhBR2NBWlFCekFDSUFPd0FLQUd3
QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUEKV3dBaUFFa0FiZ0JzQUdr
QWJnQmxBQ0FBVXdCMEFIa0FiQUJsQUNBQVFRQjBBSFFBY2dCcEFHSUFkUUIwQUdVQUlnQmRBQ0FB
UFFBZwpBQ0lBU1FCdUFHd0FhUUJ1QUdVQUlBQlRBSFFBZVFCc0FHVUFJQUJCQUhRQWRBQnlBR2tB
WWdCMUFIUUFaUUFpQURzQUNnQnNBRzhBCll3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRB
WndCekFGc0FJZ0JNQUU4QVF3QkJBRXdBSUFCVEFGUUFUd0JTQUVFQVJ3QkYKQUNJQVhRQWdBRDBB
SUFBaUFFd0FUd0JEQUVFQVRBQWdBRk1BVkFCUEFGSUFRUUJIQUVVQUlnQTdBQW9BYkFCdkFHTUFZ
UUJzQUdrQQplZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVRBQnZBR01BWVFCc0FDSUFY
UUFnQUQwQUlBQWlBRXdBYndCakFHRUFiQUFpCkFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFa
QUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JOQUVrQVRRQkZBQ0FBZEFCNUFIQUEKWlFBaUFGMEFJ
QUE5QUNBQUlnQk5BRWtBVFFCRkFDQUFkQUI1QUhBQVpRQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFR
QjZBR1VBWkFCVApBSFFBY2dCcEFHNEFad0J6QUZzQUlnQk5BR1VBZEFCeUFHa0FZd0J6QUNJQVhR
QWdBRDBBSUFBaUFFMEFaUUIwQUhJQWFRQmpBSE1BCklnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVn
QmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBVGdCdkFDQUFRZ0J5QUdVQVlRQnIKQUhBQWJ3
QnBBRzRBZEFCekFDSUFYUUFnQUQwQUlBQWlBRTRBYndBZ0FFSUFjZ0JsQUdFQWF3QndBRzhBYVFC
dUFIUUFjd0FpQURzQQpDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndC
ekFGc0FJZ0JPQUc4QUlBQlFBSElBYndCd0FHVUFjZ0IwCkFHa0FaUUJ6QUNJQVhRQWdBRDBBSUFB
aUFFNEFid0FnQUZBQWNnQnZBSEFBWlFCeUFIUUFhUUJsQUhNQUlnQTdBQW9BYkFCdkFHTUEKWVFC
c0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVRnQnZBQ0FBVmdCaEFISUFhUUJo
QUdJQWJBQmxBSE1BSWdCZApBQ0FBUFFBZ0FDSUFUZ0J2QUNBQVZnQmhBSElBYVFCaEFHSUFiQUJs
QUhNQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBClV3QjBBSElBYVFCdUFHY0Fjd0Ji
QUNJQVRnQnZBSFFBSUFCR0FHOEFkUUJ1QUdRQUlnQmRBQ0FBUFFBZ0FDSUFUZ0J2QUhRQUlBQkcK
QUc4QWRRQnVBR1FBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVB
R2NBY3dCYkFDSUFUZ0J2QUhRQQpJQUJRQUdFQWRRQnpBR1VBWkFBaUFGMEFJQUE5QUNBQUlnQk9B
RzhBZEFBZ0FGQUFZUUIxQUhNQVpRQmtBQ0lBT3dBS0FHd0Fid0JqCkFHRUFiQUJwQUhvQVpRQmtB
Rk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRThBZEFCb0FHVUFjZ0FpQUYwQUlBQTlBQ0FBSWdCUEFI
UUEKYUFCbEFISUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFH
Y0Fjd0JiQUNJQVVBQmhBSFVBY3dCbApBQ0FBYndCdUFDQUFaUUI0QUdNQVpRQndBSFFBYVFCdkFH
NEFjd0F1QUNJQVhRQWdBRDBBSUFBaUFGQUFZUUIxQUhNQVpRQWdBRzhBCmJnQWdBR1VBZUFCakFH
VUFjQUIwQUdrQWJ3QnVBSE1BTGdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhR
QWNnQnAKQUc0QVp3QnpBRnNBSWdCUUFHRUFkUUJ6QUdVQUlBQnpBR01BY2dCcEFIQUFkQUFnQUdV
QWVBQmxBR01BZFFCMEFHa0Fid0J1QUM0QQpJZ0JkQUNBQVBRQWdBQ0lBVUFCaEFIVUFjd0JsQUNB
QWN3QmpBSElBYVFCd0FIUUFJQUJsQUhnQVpRQmpBSFVBZEFCcEFHOEFiZ0F1CkFDSUFPd0FLQUd3
QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZBQVlRQjFBSE1B
WlFCa0FDSUEKWFFBZ0FEMEFJQUFpQUZBQVlRQjFBSE1BWlFCa0FDSUFPd0FLQUd3QWJ3QmpBR0VB
YkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbgpBSE1BV3dBaUFGQUFZUUIxQUhNQWFRQnVBR2NB
SWdCZEFDQUFQUUFnQUNJQVVBQmhBSFVBY3dCcEFHNEFad0FpQURzQUNnQnNBRzhBCll3QmhBR3dB
YVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JRQUhJQWJ3Qm1BR2tBYkFCbEFDQUFK
UUJrQUNJQVhRQWcKQUQwQUlBQWlBRkFBY2dCdkFHWUFhUUJzQUdVQUlBQWxBR1FBSWdBN0FBb0Fi
QUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQQphUUJ1QUdjQWN3QmJBQ0lBVUFCeUFHOEFa
Z0JwQUd3QVpRQnpBQ0lBWFFBZ0FEMEFJQUFpQUZBQWNnQnZBR1lBYVFCc0FHVUFjd0FpCkFEc0FD
Z0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JRQUhJQWJ3
Qm1BR2tBYkFCcEFHNEEKWndBZ0FHUUFhUUJ6QUdFQVlnQnNBR1VBWkFBdUFDQUFRd0JzQUdrQVl3
QnJBQ0FBZEFCdkFDQUFaUUJ1QUdFQVlnQnNBR1VBTGdBaQpBRjBBSUFBOUFDQUFJZ0JRQUhJQWJ3
Qm1BR2tBYkFCcEFHNEFad0FnQUdRQWFRQnpBR0VBWWdCc0FHVUFaQUF1QUNBQVF3QnNBR2tBCll3
QnJBQ0FBZEFCdkFDQUFaUUJ1QUdFQVlnQnNBR1VBTGdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFC
NkFHVUFaQUJUQUhRQWNnQnAKQUc0QVp3QnpBRnNBSWdCUUFISUFid0JtQUdrQWJBQnBBRzRBWndB
Z0FHVUFiZ0JoQUdJQWJBQmxBR1FBTGdBZ0FFTUFiQUJwQUdNQQphd0FnQUhRQWJ3QWdBR1FBYVFC
ekFHRUFZZ0JzQUdVQUxnQWlBRjBBSUFBOUFDQUFJZ0JRQUhJQWJ3Qm1BR2tBYkFCcEFHNEFad0Fn
CkFHVUFiZ0JoQUdJQWJBQmxBR1FBTGdBZ0FFTUFiQUJwQUdNQWF3QWdBSFFBYndBZ0FHUUFhUUJ6
QUdFQVlnQnNBR1VBTGdBaUFEc0EKQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0Jw
QUc0QVp3QnpBRnNBSWdCUUFISUFid0J3QUdVQWNnQjBBR2tBWlFCegpBQ0lBWFFBZ0FEMEFJQUFp
QUZBQWNnQnZBSEFBWlFCeUFIUUFhUUJsQUhNQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxB
R1FBClV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVVBQnlBRzhBZEFCdkFIUUFlUUJ3QUdVQUlnQmRB
Q0FBUFFBZ0FDSUFVQUJ5QUc4QWRBQnYKQUhRQWVRQndBR1VBSWdBN0FBb0FiQUJ2QUdNQVlRQnNB
R2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFVUUIxQUdVQQpjZ0I1QUNJQVhRQWdB
RDBBSUFBaUFGRUFkUUJsQUhJQWVRQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFI
UUFjZ0JwCkFHNEFad0J6QUZzQUlnQlNBRVVBVXdCUEFGVUFVZ0JEQUVVQVV3QWlBRjBBSUFBOUFD
QUFJZ0JTQUVVQVV3QlBBRlVBVWdCREFFVUEKVXdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFH
VUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JTQUdVQWNRQjFBR1VBY3dCMApBQ0FBU0FCbEFH
RUFaQUJsQUhJQWN3QWlBRjBBSUFBOUFDQUFJZ0JTQUdVQWNRQjFBR1VBY3dCMEFDQUFTQUJsQUdF
QVpBQmxBSElBCmN3QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0
QVp3QnpBRnNBSWdCU0FHVUFjd0J2QUhVQWNnQmoKQUdVQUlBQnBBRzRBZEFCbEFISUFjQUJ5QUdV
QWRBQmxBR1FBSUFCaEFITUFJQUFsQUhNQUlBQmlBSFVBZEFBZ0FIUUFjZ0JoQUc0QQpjd0JtQUdV
QWNnQnlBR1VBWkFBZ0FIY0FhUUIwQUdnQUlBQk5BRWtBVFFCRkFDQUFkQUI1QUhBQVpRQWdBQ1VB
Y3dBdUFDSUFYUUFnCkFEMEFJQUFpQUZJQVpRQnpBRzhBZFFCeUFHTUFaUUFnQUdrQWJnQjBBR1VB
Y2dCd0FISUFaUUIwQUdVQVpBQWdBR0VBY3dBZ0FDVUEKTVFBa0FITUFJQUJpQUhVQWRBQWdBSFFB
Y2dCaEFHNEFjd0JtQUdVQWNnQnlBR1VBWkFBZ0FIY0FhUUIwQUdnQUlBQk5BRWtBVFFCRgpBQ0FB
ZEFCNUFIQUFaUUFnQUNVQU1nQWtBSE1BTGdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFa
QUJUQUhRQWNnQnBBRzRBClp3QnpBRnNBSWdCU0FHVUFjd0J2QUhVQWNnQmpBR1VBY3dBaUFGMEFJ
QUE5QUNBQUlnQlNBR1VBY3dCdkFIVUFjZ0JqQUdVQWN3QWkKQURzQUNnQnNBRzhBWXdCaEFHd0Fh
UUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQlNBR1VBY3dCd0FHOEFiZ0J6QUdVQQpJ
QUJJQUdVQVlRQmtBR1VBY2dCekFDSUFYUUFnQUQwQUlBQWlBRklBWlFCekFIQUFid0J1QUhNQVpR
QWdBRWdBWlFCaEFHUUFaUUJ5CkFITUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3
QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVVnQmxBSE1BZEFCdkFISUEKWlFBZ0FHRUFiQUJzQUNBQVpn
QjFBRzRBWXdCMEFHa0Fid0J1QUhNQUxnQWlBRjBBSUFBOUFDQUFJZ0JTQUdVQWN3QjBBRzhBY2dC
bApBQ0FBWVFCc0FHd0FJQUJtQUhVQWJnQmpBSFFBYVFCdkFHNEFjd0F1QUNJQU93QUtBR3dBYndC
akFHRUFiQUJwQUhvQVpRQmtBRk1BCmRBQnlBR2tBYmdCbkFITUFXd0FpQUZJQWRRQnVBQ0FBSlFC
a0FDSUFYUUFnQUQwQUlBQWlBRklBZFFCdUFDQUFKUUJrQUNJQU93QUsKQUd3QWJ3QmpBR0VBYkFC
cEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZNQVJRQlRBRk1BU1FCUEFFNEFJQUJU
QUZRQQpUd0JTQUVFQVJ3QkZBQ0lBWFFBZ0FEMEFJQUFpQUZNQVJRQlRBRk1BU1FCUEFFNEFJQUJU
QUZRQVR3QlNBRUVBUndCRkFDSUFPd0FLCkFHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5
QUdrQWJnQm5BSE1BV3dBaUFGTUFZd0J2QUhBQVpRQWdBRllBWVFCeUFHa0EKWVFCaUFHd0FaUUJ6
QUNJQVhRQWdBRDBBSUFBaUFGTUFZd0J2QUhBQVpRQWdBRllBWVFCeUFHa0FZUUJpQUd3QVpRQnpB
Q0lBT3dBSwpBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlB
Rk1BWXdCeUFHa0FjQUIwQUhNQUlnQmRBQ0FBClBRQWdBQ0lBVXdCakFISUFhUUJ3QUhRQWN3QWlB
RHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnoKQUZzQUlnQlRB
R1VBWVFCeUFHTUFhQUFnQUNVQWN3QWlBRjBBSUFBOUFDQUFJZ0JUQUdVQVlRQnlBR01BYUFBZ0FD
VUFjd0FpQURzQQpDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFG
c0FJZ0JUQUdVQWJBQmxBR01BZEFBZ0FHRUFiZ0FnCkFHVUFiQUJsQUcwQVpRQnVBSFFBSUFCcEFH
NEFJQUIwQUdnQVpRQWdBSEFBWVFCbkFHVUFJQUIwQUc4QUlBQnBBRzRBY3dCd0FHVUEKWXdCMEFD
QUFhUUIwQUM0QUlnQmRBQ0FBUFFBZ0FDSUFVd0JsQUd3QVpRQmpBSFFBSUFCaEFHNEFJQUJsQUd3
QVpRQnRBR1VBYmdCMApBQ0FBYVFCdUFDQUFkQUJvQUdVQUlBQndBR0VBWndCbEFDQUFkQUJ2QUNB
QWFRQnVBSE1BY0FCbEFHTUFkQUFnQUdrQWRBQXVBQ0lBCk93QUtBR3dBYndCakFHRUFiQUJwQUhv
QVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRk1BWlFCc0FHWUFJZ0JkQUNBQVBRQWcKQUNJ
QVV3QmxBR3dBWmdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRB
WndCekFGc0FJZ0JUQUdnQQpid0IzQUNBQVlRQmlBSE1BYndCc0FIVUFkQUJsQUNBQWRBQnZBSFFB
WVFCc0FDQUFZUUJ1QUdRQUlBQnpBR1VBYkFCbUFDQUFkQUJwCkFHMEFaUUJ6QUM0QUlnQmRBQ0FB
UFFBZ0FDSUFVd0JvQUc4QWR3QWdBR0VBWWdCekFHOEFiQUIxQUhRQVpRQWdBSFFBYndCMEFHRUEK
YkFBZ0FHRUFiZ0JrQUNBQWN3QmxBR3dBWmdBZ0FIUUFhUUJ0QUdVQWN3QXVBQ0lBT3dBS0FHd0Fi
d0JqQUdFQWJBQnBBSG9BWlFCawpBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRk1BYUFCdkFIY0FJ
QUJqQUc4QWJnQnpBRzhBYkFCbEFDNEFJZ0JkQUNBQVBRQWdBQ0lBClV3Qm9BRzhBZHdBZ0FHTUFi
d0J1QUhNQWJ3QnNBR1VBTGdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNn
QnAKQUc0QVp3QnpBRnNBSWdCVEFHZ0Fid0IzQUNBQWFRQnVBR2dBWlFCeUFHa0FkQUJsQUdRQUln
QmRBQ0FBUFFBZ0FDSUFVd0JvQUc4QQpkd0FnQUdrQWJnQm9BR1VBY2dCcEFIUUFaUUJrQUNJQU93
QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuCkFITUFXd0FpQUZNQWFB
QnZBSGNBSUFCMEFHZ0FaUUFnQUc0QVpRQjRBSFFBSUFCekFHTUFjZ0JwQUhBQWRBQWdBSElBWlFC
ekFHOEEKZFFCeUFHTUFaUUF1QUNJQVhRQWdBRDBBSUFBaUFGTUFhQUJ2QUhjQUlBQjBBR2dBWlFB
Z0FHNEFaUUI0QUhRQUlBQnpBR01BY2dCcApBSEFBZEFBZ0FISUFaUUJ6QUc4QWRRQnlBR01BWlFB
dUFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBCmJnQm5BSE1BV3dB
aUFGTUFhQUJ2QUhjQUlBQjBBR2dBWlFBZ0FIQUFjZ0JsQUhZQWFRQnZBSFVBY3dBZ0FITUFZd0J5
QUdrQWNBQjAKQUNBQWNnQmxBSE1BYndCMUFISUFZd0JsQUM0QUlnQmRBQ0FBUFFBZ0FDSUFVd0Jv
QUc4QWR3QWdBSFFBYUFCbEFDQUFjQUJ5QUdVQQpkZ0JwQUc4QWRRQnpBQ0FBY3dCakFISUFhUUJ3
QUhRQUlBQnlBR1VBY3dCdkFIVUFjZ0JqQUdVQUxnQWlBRHNBQ2dCc0FHOEFZd0JoCkFHd0FhUUI2
QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQlRBR2dBYndCM0FDQUFkQUJ2QUhRQVlRQnNB
Q0FBWVFCdUFHUUEKSUFCekFHVUFiQUJtQUNBQWRBQnBBRzBBWlFCekFDQUFZUUJ6QUNBQWNBQmxB
SElBWXdCbEFHNEFkQUJoQUdjQVpRQnpBQzRBSWdCZApBQ0FBUFFBZ0FDSUFVd0JvQUc4QWR3QWdB
SFFBYndCMEFHRUFiQUFnQUdFQWJnQmtBQ0FBY3dCbEFHd0FaZ0FnQUhRQWFRQnRBR1VBCmN3QWdB
R0VBY3dBZ0FIQUFaUUJ5QUdNQVpRQnVBSFFBWVFCbkFHVUFjd0F1QUNJQU93QUtBR3dBYndCakFH
RUFiQUJwQUhvQVpRQmsKQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZNQWFRQjZBR1VBSWdCZEFD
QUFQUUFnQUNJQVV3QnBBSG9BWlFBaUFEc0FDZ0JzQUc4QQpZd0JoQUd3QWFRQjZBR1VBWkFCVEFI
UUFjZ0JwQUc0QVp3QnpBRnNBSWdCVEFHOEFjZ0IwQUNBQVlnQjVBQ0FBUkFCMUFISUFZUUIwCkFH
a0Fid0J1QUNJQVhRQWdBRDBBSUFBaUFGTUFid0J5QUhRQUlBQmlBSGtBSUFCRUFIVUFjZ0JoQUhR
QWFRQnZBRzRBSWdBN0FBb0EKYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdj
QWN3QmJBQ0lBVXdCdkFISUFkQUFnQUdJQWVRQWdBRVVBYmdCawpBQ0FBVkFCcEFHMEFaUUFpQUYw
QUlBQTlBQ0FBSWdCVEFHOEFjZ0IwQUNBQVlnQjVBQ0FBUlFCdUFHUUFJQUJVQUdrQWJRQmxBQ0lB
Ck93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRk1B
YndCeUFIUUFJQUJpQUhrQUlBQk0KQUdFQWRBQmxBRzRBWXdCNUFDSUFYUUFnQUQwQUlBQWlBRk1B
YndCeUFIUUFJQUJpQUhrQUlBQk1BR0VBZEFCbEFHNEFZd0I1QUNJQQpPd0FLQUd3QWJ3QmpBR0VB
YkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZNQWJ3QnlBSFFBSUFCaUFIa0FJ
QUJTCkFHVUFjd0J3QUc4QWJnQnpBR1VBSUFCVUFHa0FiUUJsQUNJQVhRQWdBRDBBSUFBaUFGTUFi
d0J5QUhRQUlBQmlBSGtBSUFCU0FHVUEKY3dCd0FHOEFiZ0J6QUdVQUlBQlVBR2tBYlFCbEFDSUFP
d0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbgpBSE1BV3dBaUFGTUFi
d0J5QUhRQUlBQmlBSGtBSUFCVEFHa0FlZ0JsQUNJQVhRQWdBRDBBSUFBaUFGTUFid0J5QUhRQUlB
QmlBSGtBCklBQlRBR2tBZWdCbEFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRB
QnlBR2tBYmdCbkFITUFXd0FpQUZNQWJ3QnkKQUhRQUlBQmlBSGtBSUFCVEFIUUFZUUJ5QUhRQUlB
QlVBR2tBYlFCbEFDSUFYUUFnQUQwQUlBQWlBRk1BYndCeUFIUUFJQUJpQUhrQQpJQUJUQUhRQVlR
QnlBSFFBSUFCVUFHa0FiUUJsQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFC
eUFHa0FiZ0JuCkFITUFXd0FpQUZNQWJ3QjFBSElBWXdCbEFDSUFYUUFnQUQwQUlBQWlBRk1BYndC
MUFISUFZd0JsQUNJQU93QUtBR3dBYndCakFHRUEKYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdC
bkFITUFXd0FpQUZNQWRBQmhBSElBZEFBZ0FIQUFjZ0J2QUdZQWFRQnNBR2tBYmdCbgpBQzRBSWdC
ZEFDQUFQUUFnQUNJQVV3QjBBR0VBY2dCMEFDQUFjQUJ5QUc4QVpnQnBBR3dBYVFCdUFHY0FMZ0Fp
QURzQUNnQnNBRzhBCll3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JU
QUhRQVpRQndBQ0FBYVFCdUFIUUFid0FnQUc0QVpRQjQKQUhRQUlBQm1BSFVBYmdCakFIUUFhUUJ2
QUc0QUlBQmpBR0VBYkFCc0FDNEFJZ0JkQUNBQVBRQWdBQ0lBVXdCMEFHVUFjQUFnQUdrQQpiZ0Iw
QUc4QUlBQnVBR1VBZUFCMEFDQUFaZ0IxQUc0QVl3QjBBR2tBYndCdUFDQUFZd0JoQUd3QWJBQXVB
Q0lBT3dBS0FHd0Fid0JqCkFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlB
Rk1BZEFCbEFIQUFJQUJ2QUhVQWRBQWdBRzhBWmdBZ0FHTUEKZFFCeUFISUFaUUJ1QUhRQUlBQm1B
SFVBYmdCakFIUUFhUUJ2QUc0QUxnQWlBRjBBSUFBOUFDQUFJZ0JUQUhRQVpRQndBQ0FBYndCMQpB
SFFBSUFCdkFHWUFJQUJqQUhVQWNnQnlBR1VBYmdCMEFDQUFaZ0IxQUc0QVl3QjBBR2tBYndCdUFD
NEFJZ0E3QUFvQWJBQnZBR01BCllRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFD
SUFVd0IwQUdVQWNBQWdBRzhBZGdCbEFISUFJQUJ1QUdVQWVBQjAKQUNBQVpnQjFBRzRBWXdCMEFH
a0Fid0J1QUNBQVl3QmhBR3dBYkFBdUFDSUFYUUFnQUQwQUlBQWlBRk1BZEFCbEFIQUFJQUJ2QUhZ
QQpaUUJ5QUNBQWJnQmxBSGdBZEFBZ0FHWUFkUUJ1QUdNQWRBQnBBRzhBYmdBZ0FHTUFZUUJzQUd3
QUxnQWlBRHNBQ2dCc0FHOEFZd0JoCkFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZz
QUlnQlRBSFFBWlFCd0FIQUFhUUJ1QUdjQUlnQmRBQ0FBUFFBZ0FDSUEKVXdCMEFHVUFjQUJ3QUdr
QWJnQm5BQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1B
V3dBaQpBRk1BZEFCdkFIQUFJQUJ3QUhJQWJ3Qm1BR2tBYkFCcEFHNEFad0F1QUNJQVhRQWdBRDBB
SUFBaUFGTUFkQUJ2QUhBQUlBQndBSElBCmJ3Qm1BR2tBYkFCcEFHNEFad0F1QUNJQU93QUtBR3dB
YndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWkKQUZNQWRBQjVBR3dB
WlFCekFDSUFYUUFnQUQwQUlBQWlBRk1BZEFCNUFHd0FaUUJ6QUNJQU93QUtBR3dBYndCakFHRUFi
QUJwQUhvQQpaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZNQWRBQjVBR3dBWlFCekFHZ0Fa
UUJsQUhRQWN3QWlBRjBBSUFBOUFDQUFJZ0JUCkFIUUFlUUJzQUdVQWN3Qm9BR1VBWlFCMEFITUFJ
Z0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0EKY3dCYkFDSUFW
QUJvQUdVQUlBQWNJQ1VBY3dBZElGd0FiZ0IwQUdFQVlnQnNBR1VBSUFCcEFITUFJQUJsQUcwQWNB
QjBBSGtBTGdBaQpBRjBBSUFBOUFDQUFJZ0JVQUdnQVpRQWdBQndnSlFCekFCMGdYQUJ1QUhRQVlR
QmlBR3dBWlFBZ0FHa0Fjd0FnQUdVQWJRQndBSFFBCmVRQXVBQ0lBT3dBS0FHd0Fid0JqQUdFQWJB
QnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFGUUFhUUJ0QUdVQUlnQmQKQUNBQVBR
QWdBQ0lBVkFCcEFHMEFaUUFpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dC
cEFHNEFad0J6QUZzQQpJZ0JVQUc4QWRBQmhBR3dBSWdCZEFDQUFQUUFnQUNJQVZBQnZBSFFBWVFC
c0FDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrCkFGTUFkQUJ5QUdrQWJnQm5BSE1BV3dB
aUFGUUFjZ0JsQUdVQUlBQW9BRlFBYndCd0FDQUFSQUJ2QUhjQWJnQXBBQ0lBWFFBZ0FEMEEKSUFB
aUFGUUFjZ0JsQUdVQUlBQW9BRlFBYndCd0FDQUFSQUJ2QUhjQWJnQXBBQ0lBT3dBS0FHd0Fid0Jq
QUdFQWJBQnBBSG9BWlFCawpBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRlVBYmdCa0FHOEFZd0Jy
QUNBQWFRQnVBSFFBYndBZ0FITUFaUUJ3QUdFQWNnQmhBSFFBClpRQWdBSGNBYVFCdUFHUUFid0Iz
QUM0QUlnQmRBQ0FBUFFBZ0FDSUFWUUJ1QUdRQWJ3QmpBR3NBSUFCcEFHNEFkQUJ2QUNBQWN3QmwK
QUhBQVlRQnlBR0VBZEFCbEFDQUFkd0JwQUc0QVpBQnZBSGNBTGdBaUFEc0FDZ0JzQUc4QVl3QmhB
R3dBYVFCNkFHVUFaQUJUQUhRQQpjZ0JwQUc0QVp3QnpBRnNBSWdCVkFITUFaUUFnQUd3QVlRQnlB
R2NBWlFBZ0FISUFaUUJ6QUc4QWRRQnlBR01BWlFBZ0FISUFid0IzCkFITUFMZ0FpQUYwQUlBQTlB
Q0FBSWdCVkFITUFaUUFnQUd3QVlRQnlBR2NBWlFBZ0FISUFaUUJ6QUc4QWRRQnlBR01BWlFBZ0FI
SUEKYndCM0FITUFMZ0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFH
NEFad0J6QUZzQUlnQlZBSE1BWlFBZwpBSE1BYlFCaEFHd0FiQUFnQUhJQVpRQnpBRzhBZFFCeUFH
TUFaUUFnQUhJQWJ3QjNBSE1BTGdBaUFGMEFJQUE5QUNBQUlnQlZBSE1BClpRQWdBSE1BYlFCaEFH
d0FiQUFnQUhJQVpRQnpBRzhBZFFCeUFHTUFaUUFnQUhJQWJ3QjNBSE1BTGdBaUFEc0FDZ0JzQUc4
QVl3QmgKQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCWEFHa0FkQUJvQUNB
QVFnQnNBRzhBWXdCckFDSUFYUUFnQUQwQQpJQUFpQUZjQWFRQjBBR2dBSUFCQ0FHd0Fid0JqQUdz
QUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1CkFHY0Fjd0JiQUNJ
QVdBQklBRklBSWdCZEFDQUFQUUFnQUNJQVdBQklBRklBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tB
ZWdCbEFHUUEKVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBV1FCdkFIVUFJQUJqQUc4QWRRQnNBR1FB
SUFCekFHRUFkZ0JsQUNBQVlnQmhBRzRBWkFCMwpBR2tBWkFCMEFHZ0FJQUJpQUhrQUlBQm9BR0VB
ZGdCcEFHNEFad0FnQUhrQWJ3QjFBSElBSUFCM0FHVUFZZ0FnQUhNQVpRQnlBSFlBClpRQnlBQ0FB
WXdCdkFHMEFjQUJ5QUdVQWN3QnpBQ0FBZEFCb0FHa0Fjd0FnQUhRQWNnQmhBRzRBY3dCbUFHVUFj
Z0FnQUhjQWFRQjAKQUdnQUlBQm5BSG9BYVFCd0FDQUFid0J5QUNBQWVnQnNBR2tBWWdBdUFDSUFY
UUFnQUQwQUlBQWlBRmtBYndCMUFDQUFZd0J2QUhVQQpiQUJrQUNBQWN3QmhBSFlBWlFBZ0FHSUFZ
UUJ1QUdRQWR3QnBBR1FBZEFCb0FDQUFZZ0I1QUNBQWFBQmhBSFlBYVFCdUFHY0FJQUI1CkFHOEFk
UUJ5QUNBQWR3QmxBR0lBSUFCekFHVUFjZ0IyQUdVQWNnQWdBR01BYndCdEFIQUFjZ0JsQUhNQWN3
QWdBSFFBYUFCcEFITUEKSUFCMEFISUFZUUJ1QUhNQVpnQmxBSElBSUFCM0FHa0FkQUJvQUNBQVp3
QjZBR2tBY0FBZ0FHOEFjZ0FnQUhvQWJBQnBBR0lBTGdBaQpBRHNBQ2dCc0FHOEFZd0JoQUd3QWFR
QjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCWkFHOEFkUUFnQUc0QVpRQmxBR1FBCklB
QjBBRzhBSUFCbEFHNEFZUUJpQUd3QVpRQWdBR1FBWlFCaUFIVUFad0JuQUdrQWJnQm5BQ0FBWWdC
bEFHWUFid0J5QUdVQUlBQjUKQUc4QWRRQWdBR01BWVFCdUFDQUFkUUJ6QUdVQUlBQjBBR2dBWlFB
Z0FGTUFZd0J5QUdrQWNBQjBBSE1BSUFCd0FHRUFiZ0JsQUd3QQpMZ0FpQUYwQUlBQTlBQ0FBSWdC
WkFHOEFkUUFnQUc0QVpRQmxBR1FBSUFCMEFHOEFJQUJsQUc0QVlRQmlBR3dBWlFBZ0FHUUFaUUJp
CkFIVUFad0JuQUdrQWJnQm5BQ0FBWWdCbEFHWUFid0J5QUdVQUlBQjVBRzhBZFFBZ0FHTUFZUUJ1
QUNBQWRRQnpBR1VBSUFCMEFHZ0EKWlFBZ0FGTUFZd0J5QUdrQWNBQjBBSE1BSUFCd0FHRUFiZ0Js
QUd3QUxnQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVApBSFFBY2dCcEFHNEFad0J6
QUZzQUlnQlpBRzhBZFFBZ0FHNEFaUUJsQUdRQUlBQjBBRzhBSUFCbEFHNEFZUUJpQUd3QVpRQWdB
SEFBCmNnQnZBR1lBYVFCc0FHa0FiZ0JuQUNBQVlnQmxBR1lBYndCeUFHVUFJQUI1QUc4QWRRQWdB
R01BWVFCdUFDQUFkUUJ6QUdVQUlBQjAKQUdnQVpRQWdBRkFBY2dCdkFHWUFhUUJzQUdVQWN3QWdB
SEFBWVFCdUFHVUFiQUF1QUNJQVhRQWdBRDBBSUFBaUFGa0Fid0IxQUNBQQpiZ0JsQUdVQVpBQWdB
SFFBYndBZ0FHVUFiZ0JoQUdJQWJBQmxBQ0FBY0FCeUFHOEFaZ0JwQUd3QWFRQnVBR2NBSUFCaUFH
VUFaZ0J2CkFISUFaUUFnQUhrQWJ3QjFBQ0FBWXdCaEFHNEFJQUIxQUhNQVpRQWdBSFFBYUFCbEFD
QUFVQUJ5QUc4QVpnQnBBR3dBWlFCekFDQUEKY0FCaEFHNEFaUUJzQUM0QUlnQTdBQW9BYkFCdkFH
TUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBWWdCdgpBSElBWkFCbEFI
SUFJZ0JkQUNBQVBRQWdBQ0lBWWdCdkFISUFaQUJsQUhJQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdr
QWVnQmxBR1FBClV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVl3QnZBRzRBZEFCbEFHNEFkQUFpQUYw
QUlBQTlBQ0FBSWdCakFHOEFiZ0IwQUdVQWJnQjAKQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhv
QVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBR1FBYndCakFIVUFiUUJsQUc0QQpkQUFpQUYw
QUlBQTlBQ0FBSWdCa0FHOEFZd0IxQUcwQVpRQnVBSFFBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tB
ZWdCbEFHUUFVd0IwCkFISUFhUUJ1QUdjQWN3QmJBQ0lBWlFCc0FHVUFiUUJsQUc0QWRBQVpJSE1B
SUFBY0lDVUFjd0FkSUNBQVlRQjBBSFFBY2dCcEFHSUEKZFFCMEFHVUFJZ0JkQUNBQVBRQWdBQ0lB
WlFCc0FHVUFiUUJsQUc0QWRBQVpJSE1BSUFBY0lDVUFjd0FkSUNBQVlRQjBBSFFBY2dCcApBR0lB
ZFFCMEFHVUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fj
d0JiQUNJQVpnQnZBRzRBCmRBQWlBRjBBSUFBOUFDQUFJZ0JtQUc4QWJnQjBBQ0lBT3dBS0FHd0Fi
d0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm4KQUhNQVd3QWlBR2tBYlFCaEFHY0Fa
UUFpQUYwQUlBQTlBQ0FBSWdCcEFHMEFZUUJuQUdVQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQQpl
Z0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQWFRQnVBR3dBYVFCdUFHVUFJQUJ6QUhRQWVR
QnNBR1VBY3dCb0FHVUFaUUIwCkFDSUFYUUFnQUQwQUlBQWlBR2tBYmdCc0FHa0FiZ0JsQUNBQWN3
QjBBSGtBYkFCbEFITUFhQUJsQUdVQWRBQWlBRHNBQ2dCc0FHOEEKWXdCaEFHd0FhUUI2QUdVQVpB
QlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQnNBR2tBYmdCbEFDQUFKUUJrQUNJQVhRQWdBRDBBSUFB
aQpBR3dBYVFCdUFHVUFJQUFsQUdRQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdC
MEFISUFhUUJ1QUdjQWN3QmJBQ0lBCmJRQmhBSElBWndCcEFHNEFJZ0JkQUNBQVBRQWdBQ0lBYlFC
aEFISUFad0JwQUc0QUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmwKQUdRQVV3QjBBSElBYVFC
dUFHY0Fjd0JiQUNJQWJ3QjBBR2dBWlFCeUFDSUFYUUFnQUQwQUlBQWlBRzhBZEFCb0FHVUFjZ0Fp
QURzQQpDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0J3
QUdFQVpBQmtBR2tBYmdCbkFDSUFYUUFnCkFEMEFJQUFpQUhBQVlRQmtBR1FBYVFCdUFHY0FJZ0E3
QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0EKY3dCYkFDSUFjQUJ2
QUhNQWFRQjBBR2tBYndCdUFDSUFYUUFnQUQwQUlBQWlBSEFBYndCekFHa0FkQUJwQUc4QWJnQWlB
RHNBQ2dCcwpBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQnpB
R01BY2dCcEFIQUFkQUFpQUYwQUlBQTlBQ0FBCklnQnpBR01BY2dCcEFIQUFkQUFpQURzQUNnQnNB
RzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQnoKQUhRQWVRQnNB
R1VBY3dCb0FHVUFaUUIwQUNJQVhRQWdBRDBBSUFBaUFITUFkQUI1QUd3QVpRQnpBR2dBWlFCbEFI
UUFJZ0E3QUFvQQpiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFD
SUFkUUJ6QUdVQWNnQWdBR0VBWndCbEFHNEFkQUFnCkFITUFkQUI1QUd3QVpRQnpBR2dBWlFCbEFI
UUFJZ0JkQUNBQVBRQWdBQ0lBZFFCekFHVUFjZ0FnQUdFQVp3QmxBRzRBZEFBZ0FITUEKZEFCNUFH
d0FaUUJ6QUdnQVpRQmxBSFFBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJ
QWFRQnVBR2NBY3dCYgpBQ0lBZFFCekFHVUFjZ0FnQUhNQWRBQjVBR3dBWlFCekFHZ0FaUUJsQUhR
QUlnQmRBQ0FBUFFBZ0FDSUFkUUJ6QUdVQWNnQWdBSE1BCmRBQjVBR3dBWlFCekFHZ0FaUUJsQUhR
QUlnQTdBQW9BCgo=
</data>
<flag name="review"
          id="14857"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>